Commit 6815c8e4 authored by Francois-Rene Rideau's avatar Francois-Rene Rideau

1.671: fix :feature dependencies. Be nicer to non-unix, non-windows.

The old website is dead. Long live the new website!
parent 484f72b6
......@@ -60,7 +60,7 @@
(eval-when (:load-toplevel :compile-toplevel :execute)
(let* ((asdf-version
;; the 1+ hair is to ensure that we don't do an inadvertent find and replace
(subseq "VERSION:1.670" (1+ (length "VERSION"))))
(subseq "VERSION:1.671" (1+ (length "VERSION"))))
#+allegro (excl::*autoload-package-name-alist* nil)
(existing-asdf (find-package :asdf))
(versym '#:*asdf-version*)
......@@ -1370,12 +1370,14 @@ recursive calls to traverse.")
(cond ((string-equal
(symbol-name (first d))
"VERSION")
;; https://bugs.launchpad.net/asdf/+bug/527788
(appendf
forced
(do-one-dep op (second d) (third d))))
;; this particular subform is not documented, indeed
;; clashes with the documentation, since it assumes a
;; third component
;; third component.
;; See https://bugs.launchpad.net/asdf/+bug/518467
((and (string-equal
(symbol-name (first d))
"FEATURE")
......@@ -1383,7 +1385,7 @@ recursive calls to traverse.")
:test 'string-equal))
(appendf
forced
(do-one-dep op (second d) (third d))))
(do-one-dep op (third d) nil)))
(t
(error "Bad dependency ~a. Dependencies must be (:version <version>), (:feature <feature> [version]), or a name" d))))
(t
......@@ -2938,7 +2940,7 @@ with a different configuration, so the configuration would be re-read then."
#+sbcl (:directory ,(merge-pathnames* ".sbcl/systems/" (user-homedir)))
(:directory ,(truenamize (directory-namestring *default-pathname-defaults*)))
,@(let*
#+(or (not windows) cygwin)
#+(or unix cygwin)
((datahome
(or (getenv "XDG_DATA_HOME")
(try (user-homedir) ".local/share/")))
......@@ -2955,6 +2957,8 @@ with a different configuration, so the configuration would be re-read then."
#-lispworks (try (getenv "ALLUSERSPROFILE")
"Application Data"))
(dirs (list datahome datadir)))
#+(and (not unix) (not windows) (not cygwin))
((dirs ()))
(loop :for dir :in dirs
:collect `(:directory ,(try dir "common-lisp/systems/"))
:collect `(:tree ,(try dir "common-lisp/source/"))))
......
user=frideau
website:=${user}@common-lisp.net:/project/asdf/public_html/
output = asdf.html asdf asdf.pdf asdf.info
webfiles = index.html style.css cclan.png lisp-logo120x80.png favicon.ico ${output}
intermediate = asdf.cps asdf.log asdf.vr asdf.aux asdf.fn asdf.toc asdf.vrs \
asdf.cp asdf.fns asdf.ky asdf.pg asdf.tp
all: asdf.html asdf.info asdf.pdf
manual-html: asdf.texinfo
......@@ -12,7 +19,12 @@ asdf.info: asdf.texinfo
asdf.pdf: asdf.texinfo
texi2pdf asdf.texinfo
.PHONY: clean
website:
rsync -av ${webfiles} ${website}
.PHONY: clean veryclean manual-html
clean:
-rm -r asdf
-rm asdf.info asdf.html asdf.pdf
rm -f ${intermediate}
veryclean:
rm -f asdf.html asdf.pdf asdf.info
rm -rf asdf/
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
<head>
<title>ASDF - Another System Definition Facility</title>
<link type='text/css' href='style.css' rel='stylesheet' />
<meta name="author" content="the ASDF group"/>
</head>
<body>
<div class="header">
<span class="logo">
<a href="http://common-lisp.net/project/asdf/" title="ASDF Homepage">
<img src="lisp-logo120x80.png" title="ASDF homepage" width="100" alt="Lisp Lizzard" />
</a>
</span>
<h2>ASDF</h2><h4>Another System Definition Facility</h4>
</div>
<div class="contents">
<div class="system-links">
<ul>
<li><a href="#what_it_is">What it is</a></li>
<li><a href="#documentation">Documentation</a></li>
<li><a href="#downloads">Getting it</a></li>
<li><a href="#bugs">Reporting Bugs</a></li>
<li><a href="#mailing-list">Mailing List</a></li>
<li><a href="http://common-lisp.net/gitweb?p=projects/asdf/asdf.git;a=log"
>Changelog</a></li>
</ul>
</div>
<div class="system-description">
<a id="what_it_is"></a>
<h3>What it is</h3>
<p>ASDF is a tool for describing how source files are organized:
what depends on which and when.
</p>
<p>It is roughly what Common-Lisp hackers use to build software
where C hackers would use say GNU Make.
</p>
<p>ASDF stands for <em>A</em>nother <em>S</em>ystem <em>D</em>efinition <em>F</em>acility,
in the continuity of the Lisp DEFSYSTEM of yore.
</p>
<a id="documentation"></a>
<h3>Documentation</h3>
<p>You can read our manual:</p>
<ul>
<li><a href="asdf.html">as one HTML file</a></li>
<li><a href="asdf/">split into one HTML file per section</a></li>
<li><a href="asdf.pdf">as a PDF document</a></li>
<li><a href="http://common-lisp.net/gitweb?p=projects/asdf/asdf.git;a=blob;f=asdf.texinfo">as texinfo source</a></li>
</ul>
<a href="downloads"></a>
<h3>Getting it</h3>
<p>Though they may lag behind the version here, ASDF comes bundled with most Lisps.
To get the greatest and latest, you can:
</p>
<ul>
<li>download just the source for
<!--<a href="http://common-lisp.net/gitweb?p=projects/asdf/asdf.git;a=blob_plain;tag=RELEASE;f=asdf.lisp">asdf.lisp</a>,-->
<a href="http://common-lisp.net/project/asdf/asdf.lisp">asdf.lisp</a>,
</li>
<li>download the
<!--<a href="http://common-lisp.net/gitweb?p=projects/asdf/asdf.git;tag=RELEASE;a=snapshot;sf=tgz">tarball</a>,-->
<a href="http://common-lisp.net/project/asdf/asdf.tar.gz">tarball</a>
to get all bells and whistles,
</li>
<li>pull the latest from our git repository
(<a href="http://common-lisp.net/gitweb?p=projects/asdf/asdf.git">browse</a>)
<pre>git clone http://common-lisp.net/project/asdf/asdf.git</pre>
</li></ul>
<a id="bugs">
<h3>Reporting Bugs</h3>
<p>To report bugs, you can use our
<a href="https://launchpad.net/asdf/">launchpad project</a>.
If you're unsure about the bug or want to discuss how to fix it,
you can send email to the project mailing-list below.
</p>
<a id="mailing-list"></a>
<h3>Mailing List</h3>
<ul>
<li><a href="http://common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel">asdf-devel</a>:
A list for questions, patches, bug reports, and so on; It's for everything.
</li></ul>
<h3>Contributing</h3>
<p>Join our mailing list, check the code out from git,
send questions, ideas and patches!
</p>
<a id="news"></a>
<h3>What is happening</h3>
<dl>
<dt>December 2009 to April 2010</dt>
<dd>Fran&ccedil;ois-Ren&eacute; Rideau is de facto maintainer,
with notable contributions from Robert P. Goldman.
Push towards an ASDF 2 release
which many clean-ups, simplified configuration
and updated documentation.
</dd>
<dt>May 2006 to November 2009</dt>
<dd>Gary King is de facto maintainer,
with notable contributions from
Robert P. Goldman, Nikodemus Siivola, Christophe Rhodes, D Herring.
Many small features and fixing bugs,
trying to make the project more usable,
moving to using git and common-lisp.net.
</dd>
<dt>May 2004 to April 2006</dt>
<dd>Christophe Rhodes is de facto maintainer,
with notable contributions from
Nikodemus Siivola, Peter Van Eynde, Edi Weitz, Kevin Rosenberg.
Make the system more robust, a few more features.
<dt>August 2001 to May 2004</dt>
<dd>Maintained by Daniel Barlow, with notable contributions from
Christophe Rhodes, Kevin Rosenberg, Edi Weitz, Rahul Jain.
<dt>August 2001</dt>
<dd>Created by Daniel Barlow</dd>
</dl></div>
<div id="footer">
<a class="nav" href="http://validator.w3.org/check/referer" title="xhtml1.1"><img src="http://common-lisp.net/project/cl-containers/shared/buttons/xhtml.gif" width="80" height="15" title="valid xhtml button" alt="valid xhtml" /></a>
<a class="nav" href="http://www.catb.org/hacker-emblem/" title="hacker"> <img src="http://common-lisp.net/project/cl-containers/shared/buttons/hacker.png" width="80" height="15" title="hacker emblem" alt="hacker button" /></a>
<a class="nav" href="http://www.lisp.org/" title="Association of Lisp Users"> <img src="http://common-lisp.net/project/cl-containers/shared/buttons/lambda-lisp.png" width="80" height="15" title="ALU emblem" alt="ALU button" /></a>
<a class="nav" href="http://common-lisp.net/" title="Common-Lisp.net"> <img src="http://common-lisp.net/project/cl-containers/shared/buttons/lisp-lizard.png" width="80" height="15" title="Common-Lisp.net" alt="Common-Lisp.net button" /></a>
<p><span class="copyright"Copyright &copy; 2001-2010 Daniel Barlow and contributors</span></p>
<p>ASDF has an <a href="http://www.opensource.org/licenses/mit-license.php">MIT style</a> license</p>
<div id="timestamp">Last updated 2010-04-08</div>
</div></div>
</body>
</html>
{include "resources/header.md"}
<div class="contents">
### Contributors
* crhodes - Christophe Rhodes <csr21@cantab.net>
* dan_b - Daniel Barlow
* demoss - Nikodemus Siivola <nikodemus@random-state.net>
* gwking - Gary King <gwking@metabang.com>
* kevinrosenberg - Kevin Rosenberg
* nhabedi - Edi Weitz
* pvaneynd - Peter Van Eynde
* rjain - Rahul Jain
* rpg - Robert P. Goldman <rpgoldman@sift.info>
* fare - Francois-Rene Rideau <fare@tunes.org>
(If I've left off your name, please accept my apologies and
[let me know](mailto:fare@tunes.org))
</div>
</div>
{include "resources/footer.md"}
</div>
{include "resources/header.md"}
<div class="contents">
### Copyright
ASDF Copyright (C) 2001-2009 Daniel Barlow and contributors
This website Copyright (C) 2001-2009 Daniel Barlow and
contributors
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated
documentation files (the "Software"), to deal in the Software
without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to
whom the Software is furnished to do so, subject to the
following conditions:
The above copyright notice and this permission notice shall
be included in all copies or substantial portions of the
Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
</div>
</div>
{include "resources/footer.md"}
</div>
{include resources/header.md}
{set-property title "Getting Started | ASDF"}
{set-property docs-package asdf}
See the first three sections of the
[manual][]
{docs-index all}
{include resources/footer.md}
## git recipes
### sychronize with the central repository
# downloads the latest commits from CL.net
git fetch origin
# removes any local changes and synchronizes with
# what we just downloaded from the remote repo
git reset --hard origin/master
## git resources
Here are a few links that might be helpful to people learning
git. Its culturally different than CVS; but once you learn
it, there's no turning back. The ability to experiment with
local branches, back up, rewrite history, and only publish
the sanitized history is quite liberating.
* http://progit.org/book/ (recommended)
* http://tomayko.com/writings/the-thing-about-git
* http://git-scm.com/documentation
* http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html
* http://www.kernel.org/pub/software/scm/git/docs/everyday.html
* http://www.kernel.org/pub/software/scm/git/docs/user-manual.html
My suggestions
* always have `gitk --all` loaded for the repo you're working on
* update (not reload) `gitk` after modifying any branches or
tags; this leaves the old objects displayed
* `git reset --hard $OLDSHA1` can clean many messes, letting
you try again.
* reload gitk to hide deleted branches you're comfortable
with losing
* learn by playing around with local clones of a larger
repository
* install some of the git contribs, especially
git-completion.bash and git-new-workdir
{include "resources/header.md"}
## Glossary
{glossary}
[fixture]> glossary The fixture is the environment in which a testcase runs. The
fixture is the code that prepares the environment for the test and that resets
the environment after the test. Fixtures can be shared by many test-cases.
{include "resources/footer.md"}
{include resources/header.md}
<div class="contents">
<div class="system-links">
* [Mailing Lists][]
* [Getting it][]
* [Changelog][]
* [System Tests][tests]
</div>
<div class="system-description">
### What it is
ASDF is a tool for describing how source files are organized:
what depends on which and when.
I.e., it is *A*nother *S*ystem *D*efinition *F*acility.
If you want to use ASDF with other people's systems,
see the [getting started][getting-started] guide.
For details on defining your own systems,
you should browse the [manual][].
<a id="mailing-lists"></a>
### Mailing Lists
* [asdf-devel][]: A list for questions, patches,
bug reports, and so on; It's for everything.
<a href="downloads"></a>
### Where is it
Though they may lag behind the version here,
ASDF comes bundled with most Lisps.
To get the greatest and latest, you can:
* download just the source for [asdf.lisp][],
* download the [tarball][] to get all bells and whistles,
* pull the latest from our git repository ([browse][git-browse])
git clone http://common-lisp.net/project/asdf/asdf.git
{remark * use [ASDF-install][] to update yourself }
### Contributing
We're still working out the details but you should take a look at our
[git resources][git-resources].
For now, send email to
fare@tunes.org or the project [mailing-list][asdf-devel]
with questions or patches.
<a id="news"></a>
### What is happening
February 2010
: ASDF 1.600 series, with easy-configurable output-translations, tests passing on all platforms.
January 2010
: ASDF 1.500 series, with easy-configurable source-registry, ECL support.
December 2009
: Francois-Rene Rideau takes over active maintainership from Gary King.
Sunday; September 13, 2009
: Added documentation for ASDF-Binary-Locations
Saturday; June 6, 2009
: updated website and added [oos][] shortcuts like [load-system][].
Sunday; May 3, 2009
: moving towards git and Common-Lisp.net
</div>
{include resources/footer.md}
</div>
{include resources/header.md}
{set-property docs-package asdf}
The ASDF Manual is available in texinfo format.
See the latest version
[http://common-lisp.net/gitweb?p=projects/asdf/asdf.git;a=blob;f=asdf.texinfo][the manual source in our git repository]
TODO: have an HTML version automatically generated, and included here.
</div>
{include resources/footer.md}
</div>
# Proposal Summary
These are independent but make the most sense if taken as a
whole.
* Specify new defaults for `*central-registry*`,
* use an environment variable named `CL_SYSTEMS_PATH` to
override ASDF's defaults,
* use `*central-registry*` to find and load an ASDF
configuration file (if present) and
* modify the default behavior of
`sysdef-central-registry-search` to search deeply.
## default value for *central-registry*
CL_SYSTEMS_PATH environment variable with syntax like
path[:path]* (on *nix)
or
path[;path]* (on Windows)
I.e., path designators separated by an OS dependent marker
(colons or semi-colons). This is used by ASDF to help build
the default value for `*central-registry*`. Each `path` will
be interpreted as follows:
* a `!` will be replaced by the default value (see below) so
that it is easy to extend the path rather than just
replacing it.
* empty ones will be removed from the list,
* since these represent _directories_, trailing slashes will
be added if necessary,
* if the last component is a `*` or `**` then sub-directories
of this path will be searched recursively either one level
deep (if `*`) or all the way down (if `**`).
If not specified, `*central-registry*` defaults to (on
*nix-like systems):
(list
*default-pathname-defaults*
(merge-pathnames
(make-pathname :directory '(:relative ".common-lisp"))
(user-homedir-pathname)))
(merge-pathnames
(make-pathname :directory '(:relative ".local" "share"
"common-lisp"))
(user-homedir-pathname)))
(make-pathname :directory '(:absolute "usr" "local" "share"
"common-lisp"))
(make-pathname :directory '(:absolute "usr" "share" "common-
lisp"))
)
(On a windows system, the last two would be replaced by
c:\common-lisp and c:\windows\common-lisp).
Note that this list would be automatically filtered for any
entries for which the moral equivalent of `(ignore-errors
(truename x))` fails.
## modification for `sysdef-central-registry-search`
Currently `sysdef-central-registry-search` searches in the
top-level of each directory in `*central-registry*` to find
systems. If we use the above, then a more useful approach
would be to search in the top-level and in a sub-directory
named `systems`. An even more useful approach would to search
in all sub-directories of each entry.
## configuration file
When ASDF starts, it will:
1. setup `*central-registry*` using its own defaults and the
`CL_SYSTEMS_PATH` environment variable.
2. look for and load the *first* file named
`asdf-config.lisp` in each of these paths traversed in order
(so that user settings take precedence over system ones).
Note that the ASDF package will exist when this file is read.
I.e., I'm suggesting "if there are any user settings, then
ignore the system settings" one rather than the "user
settings overwrite system settings".
<div id="footer">
<a class="nav" href="http://validator.w3.org/check/referer" title="xhtml1.1"><img src="http://common-lisp.net/project/cl-containers/shared/buttons/xhtml.gif" width="80" height="15" title="valid xhtml button" alt="valid xhtml" /></a>
<a class="nav" href="http://common-lisp.net/project/cl-markdown/" title="Mark with CL-Markdown"><img src="http://common-lisp.net/project/cl-containers/shared/buttons/cl-markdown.png" width="80" height="15" title="Made with CL-Markdown" alt="CL-Markdown" /></a>
<a class="nav" href="http://www.catb.org/hacker-emblem/" title="hacker"><img src="http://common-lisp.net/project/cl-containers/shared/buttons/hacker.png" width="80" height="15" title="hacker emblem" alt="hacker button" /></a>
<a class="nav" href="http://www.lisp.org/" title="Association of Lisp Users"><img src="http://common-lisp.net/project/cl-containers/shared/buttons/lambda-lisp.png" width="80" height="15" title="ALU emblem" alt="ALU button" /></a>
<a class="nav" href="http://common-lisp.net/" title="Common-Lisp.net"><img src="http://common-lisp.net/project/cl-containers/shared/buttons/lisp-lizard.png" width="80" height="15" title="Common-Lisp.net" alt="Common-Lisp.net button" /></a>
<span class="copyright">[Copyright][] (c) 2001-2009 Daniel Barlow and [contributors][]</span>
ASDF has an [MIT style][mit-license] license
<div id="timestamp">Last updated {today} at {now}</div>
</div>
{include "shared-header.md"}
<div class="header">
<span class="logo">
<a href="http://common-lisp.net/project/asdf/" title="ASDF Homepage">
<img src="lisp-logo120x80.png" title="ASDF homepage" width="100" alt="Lisp Lizzard" />
</a>
</span>
## ASDF
#### Definitely Definitive Definitions
</div>
{include "shared-links.md"}
{set-property html yes}
{set-property author "the ASDF group"}
{set-property title "ASDF - Another System Definition Facility"}
{set-property style-sheet "style.css"}
[user-guide]: user-guide.html
[tutorial]: user-guide.html
[manual]: manual.html
[Overview]: overview.html
[copyright]: copyright.html
[contributors]: contributors.html
[sys-guide]: manual.html
[getting-started]: getting-started.html
[FAQ]: faq.html
[tests]: test-results.html
[git-browse]: http://common-lisp.net/gitweb?p=projects/asdf/asdf.git;a=summary
[git-resources]: git.html
[asdf-devel]: http://common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel
[asdf-announce]: http://common-lisp.net/cgi-bin/mailman/listinfo/asdf-announce
[asdf-home]: http://common-lisp.net/project/asdf/
[asdf.lisp]: http://common-lisp.net/project/asdf/asdf.lisp
[tarball]: http://common-lisp.net/project/asdf/asdf.tar.gz
[kmp-large]: http://www.nhplace.com/kent/Papers/Large-Systems.html
[hs-require]: http://www.lispworks.com/documentation/HyperSpec/Body/f_provid.htm#require
[hs-standard-output]: http://www.lispworks.com/documentation/HyperSpec/Body/v_debug_.htm#STstandard-outputST
[tinaa-project]: http://common-lisp.net/project/tinaa/
[albert-project]: http://www.cliki.net/Albert/
\ No newline at end of file
<div id="footer">
<div id="buttons">
<a class="nav" href="http://validator.w3.org/check/referer" title="xhtml1.1"><img src="http://common-lisp.net/project/cl-containers/shared/buttons/xhtml.gif" width="80" height="15" title="valid xhtml button" alt="valid xhtml" /></a>
<a class="nav" href="http://common-lisp.net/project/cl-markdown/" title="Mark with CL-Markdown"><img src="http://common-lisp.net/project/cl-containers/shared/buttons/cl-markdown.png" width="80" height="15" title="Made with CL-Markdown" alt="CL-Markdown" /></a>
<a class="nav" href="http://www.catb.org/hacker-emblem/" title="hacker"><img src="http://common-lisp.net/project/cl-containers/shared/buttons/hacker.png" width="80" height="15" title="hacker emblem" alt="hacker button" /></a>
<a class="nav" href="http://www.lisp.org/" title="Association of Lisp Users"><img src="http://common-lisp.net/project/cl-containers/shared/buttons/lambda-lisp.png" width="80" height="15" title="ALU emblem" alt="ALU button" /></a>
<a class="nav" href="http://common-lisp.net/" title="Common-Lisp.net"><img src="http://common-lisp.net/project/cl-containers/shared/buttons/lisp-lizard.png" width="80" height="15" title="Common-Lisp.net" alt="Common-Lisp.net button" /></a>
</div>
<span id="copyright"> Copyright (c) 2001 - 2009 Gary Warren King (gwking@metabang.com)</span>
<span id="copyright"> Copyright (c) 2010 Francois-Rene Rideau (fare@tunes.org)</span>
<span id="license-note">LIFT has an MIT style license</span>
<span id="timestamp">Last updated {today} at {now}</span>
</div>
{include "shared-header.md"}
{set-property style-sheets
"user-guide.css"
"http://common-lisp.net/project/cl-containers/shared/style-200.css"}
<div id="header">
<span class="logo"><a href="http://www.metabang.com/" title="metabang.com"><img src="http://common-lisp.net/project/cl-containers/shared/metabang-2.png" title="metabang.com" width="100" alt="Metabang Logo" /></a></span>
## LIFT
#### Fighting like cats with AK-47s
</div>
/* @group toc */
.table-of-contents {
font-size: 90%;
margin-bottom: 1em;
padding-bottom: 1em;
}
.table-of-contents h2, h3, h4 {
padding-top: 0;
padding-bottom: 0;
margin-top: 0;
margin-bottom: 1px;
}
.table-of-contents h2 {
font-size: inherit;
font-style: inherit;
position: relative;
left: 2em;
}
.table-of-contents h3 {
font-size: inherit;
font-style: inherit;
position: relative;
left: 4em;
}
.table-of-contents h4 {
font-size: inherit;
font-style: inherit;
position: relative;
left: 6em;
}
.table-of-contents h5 {
font-size: inherit;
font-style: inherit;
position: relative;
left: 8px;
}
/* @end */
/* @group anchors */
a.none {
text-decoration: none;
color:black }
a.none:visited { text-decoration: none; color:black }
a.none:active { text-decoration: none; color:black }
a.none:hover { text-decoration: none; color:black }
a {
text-decoration: none;
}
a:visited {
text-decoration: none;
}
a:active {
text-decoration: underline;
}
a:hover {
text-decoration: underline;
}
/* @end */
/* @group Reference */
.reference {
padding-bottom: 1em;
}
.reference h3 {
margin-top: 2em;
font-size: 110%;
border-bottom: 1px solid silver;
border-top: 4px solid gray;
padding-top: 3px;
padding-bottom: 3px;
}
/* @end */
body {
font-family: Georgia, "Times New Roman", Times, serif;
margin-right: 0.5in;
margin-left: 0.5in;
margin-bottom: 0.25px;