@Section
    @Title { Constructing database entries }
    @Tag { entries }
@Begin
@PP
Here is the complete, fixed list of options that you may give to the
@Code "@Reference" symbol:
@ID @Tab
   vmargin { 0.47vx }
   @Fmta { @Col @Code A ! @Col B }
{
@Rowa
    A { "{ @Reference" }
@Rowa
    A { "    @Tag  {}" }
    B { Used to cite this reference }
@Rowa
    A { "    @Type  {}" }
    B { The type of reference, for example {@Code Book}, {@Code Article} }
@Rowa
    A { "    @Abstract  {}" }
    B { Not used, intended to hold an abstract }
@Rowa
    A { "    @Address  {}" }
    B { The address of a publisher, organization, or institution }
@Rowa
    A { "    @Annote  {}" }
    B { Not used, intended for annotations }
@Rowa
    A { "    @Author  {}" }
    B { The author(s) or editor(s) }
@Rowa
    A { "    @Day  {}" }
    B { The day of the month, for newspaper articles }
@Rowa
    A { "    @Edition  {}" }
    B { The edition, for example @Code "Second Edition" }
@Rowa
    A { "    @HowPublished  {}" }
    B { How something strange has been published }
@Rowa
    A { "    @InAuthor  {}" }
    B { The author of the work that the cited work appears within }
@Rowa
    A { "    @InTitle  {}" }
    B { The title of the work that the cited work appears within }
@Rowa
    A { "    @Institution  {}" }
    B { The institution or school }
@Rowa
    A { "    @Journal  {}" }
    B { The journal name }
@Rowa
    A { "    @Keywords  {}" }
    B { Not used, intended to hold keywords }
@Rowa
    A { "    @Label  {}" }
    B { The label of a labelled reference }
@Rowa
    A { "    @Month  {}" }
    B { The month of publication or writing  }
@Rowa
    A { "    @Note  {}" }
    B { Any additional helpful information }
@Rowa
    A { "    @Number  {}" }
    B { The number of a technical report }
@Rowa
    A { "    @Organization  {}" }
    B { The organization sponsoring the work }
@Rowa
    A { "    @Page  {}" }
    B { Page number if only one, for example @Code "23" }
@Rowa
    A { "    @Pages  {}" }
    B { Page numbers if more than one, for example @Code "23--47" }
@Rowa
    A { "    @Pinpoint  {}" }
    B { A point or part of the work, for example @Code "Chapter VI" }
@Rowa
    A { "    @Publisher  {}" }
    B { The publisher of the work }
@Rowa
    A { "    @Title  {}" }
    B { The title of the work }
@Rowa
    A { "    @TitleNote  {}" }
    B { Additional title information (series, editor, etc.) }
@Rowa
    A { "    @TRType  {}" }
    B { The type of a technical report, for example @Code "Research Note" }
@Rowa
    A { "    @URL  {}" }
    B { The URL of the reference }
@Rowa
    A { "    @Volume  {}" }
    B { The volume of a journal }
@Rowa
    A { "    @Year  {}" }
    B { The year of publication or writing }
@Rowa
    A { "}" }
}
Every reference may contain any of these options, although, depending
on the {@Code "@Type"} option, only some will be printed.  You can't give
an option twice; in particular, multiple authors must be placed
within one @Code "@Author" option, arranged as you want them to appear.  Here
is the complete set of values that you may give to the @Code "@Type" option:
@ID @Tab
    vmargin { 0.5vx }
    @Fmta { @Col @Code A ! @Col @Code B ! @Col @Code C ! @Col @Code D }
{
 @Rowa
    A { Book }
    B { TechReport }
    C { Article }
    D { InBook }
 @Rowa
    A { Proceedings }
    B { MastersThesis }
    C {}
    D { InProceedings }
 @Rowa
    A { PhDThesis }
    B { Misc }
    C {}
    D {}
}
Each column represents one broad category of reference type:  the first
contains large works; the second contains small works not appearing
within anything else (although possibly part of a series); the third
contains small works appearing within an ongoing forum for such works;
and the fourth contains small works appearing within large works.  In each
case, the reference may be to the work as a whole, or to one point or part
of it (known as pinpointing).
@PP
Some care is needed when choosing the @Code "@Tag" option, since references
are both cited and sorted by tag.  It is best to choose a three-part
tag consisting of the first author's surname and possibly initial, the
year of publication, and a brief reminder of the contents:
@ID @Code "@Tag { kingston1995lout.expert }"
Keep to lower-case letters, since mixed cases confuse the sorting, and
give the full four digits of the year to avoid trouble in the year
2000.  Multi-word tags are possible but not recommended.
@PP
Unusually for Lout, you can have unquoted @Code "/" and @Code "~"
references. @RawIndex { references }
references.url @SubIndex { @Code "@URL" }
url.references @Index { @Code "@URL" (references) }
characters inside the @Code "@URL" option:
@ID @Code "@URL { ftp://ftp.cs.su.oz.au/jeff/lout }"
In fact it is better not to use quotes because then Lout will
be able to break lines at @Code "/" characters, which is very useful
since URLs tend to be long and prone to causing bad line breaks.
@PP
Since the types within each broad category are similar, our plan is to
give one example of each and briefly note how the others differ.  Here
is a @Code Book entry showing all its options:
references. @RawIndex { references }
references.book @SubIndex { @Code Book reference type }
book.references @Index { @Code "Book" reference type }
@ID @OneRow @Code @Verbatim {
{ @Reference
     @Tag { homer.odyssey }
     @Type { Book }
     @Author { Homer }
     @Title { The Odyssey }
     @TitleNote { Translated by E. V. Rieu }
     @Pinpoint { Chapter VI }
     @Pages { 102--111 }
     @Page { 102 }
     @Publisher { Penguin Books }
     @Address { Harmondsworth, Middlesex }
     @Edition { Penguin Classics Edition }
     @Month { August }
     @Year { 1942 }
     @Note { The date of composition is unknown,
but is thought to be about the tenth century BC. }
}
}
And here is what it produces:
@ID @RefPrint homer.odyssey
The only compulsory options are {@Code "@Tag"}, {@Code "@Type"}, and
{@Code "@Title"}, and Lout will carefully adjust the formatting to the
right thing when you omit others.  A basic book would have just
{@Code "@Tag"}, {@Code "@Type"}, {@Code "@Author"}, {@Code "@Title"},
{@Code "@Publisher"}, and {@Code "@Year"} options.
@PP
@Code Proceedings is similar, except you
references. @RawIndex { references }
references.proceedings @SubIndex { @Code Proceedings reference type }
proceedings.references @Index { @Code "Proceedings" reference type }
may have an @Code "@Organization" or @Code "@Institution" option for
the sponsoring organization if you wish, and the author will either be
absent or an editor:
@ID @Code "@Author { P. W. Lamb, editor }"
There is no option specifically for editors, translators, and so forth.
@PP
@Code PhDThesis is very similar again, with @Code "@Institution"
references. @RawIndex { references }
references.phdthesis @SubIndex { @Code PhDThesis reference type }
phdthesis.references @Index { @Code "PhDThesis" reference type }
instead of {@Code "@Publisher"}, and the phrase `Ph.D. thesis'
appearing by magic in the right spot.  Like all words and phrases
introduced automatically by Lout, it will be translated into the current
language if this is not English.
@PP
Moving now to the second broad category, here is a typical {@Code TechReport}:
references. @RawIndex { references }
references.techreport @SubIndex { @Code TechReport reference type }
techreport.references @Index { @Code "TechReport" reference type }
@ID @OneRow @Code @Verbatim {
{ @Reference
     @Tag { christofides1976tsp }
     @Type { TechReport }
     @Author { Christofides, N. }
     @Title { Worst-case analysis of a new heuristic
for the travelling salesman problem }
     @Number { 388 }
     @Institution { Graduate School of Industrial
Administration, Carnegie-Mellon University }
     @Address { Pittsburgh, PA }
     @Year { 1976 }
}
}
Here is the result:
@ID @RefPrint christofides1976tsp
The two novelties here are the @Code "@Number" option, which is the
number of the report, and the `Tech. Rep.' phrase.  If you
need some other phrase instead, use the @Code "@TRType" option:
@ID @Code "@TRType { Programmer's Manual }"
or whatever.  The phrase will be `Master's Thesis' in the
current language for type {@Code MastersThesis}, and absent in type
references. @RawIndex { references }
references.mastersthesis @SubIndex { @Code MastersThesis reference type }
mastersthesis.references @Index { @Code "MastersThesis" reference type }
references. @RawIndex { references }
references.misc @SubIndex { @Code Misc reference type }
misc.references @Index { @Code "Misc" reference type }
{@Code Misc}.  You may use the pinpointing options ({@Code "@Pinpoint"},
{@Code "@Page"}, and {@Code "@Pages"}) and {@Code "@TitleNote"},
{@Code "@Month"}, and {@Code "@Note"} in the same way as for books.
@PP
Journal articles are referenced by journal name, volume, number, and
page(s):
references. @RawIndex { references }
references.article @SubIndex { @Code Article reference type }
article.references @Index { @Code "Article" reference type }
@ID @OneRow @Code @Verbatim {
{ @Reference
     @Tag { kingston1993lout.design }
     @Type { Article }
     @Author { Jeffrey H. Kingston }
     @Title { The design and implementation of the
Lout document formatting language }
     @Journal { Software---Practice and Experience }
     @Volume { 23 }
     @Pages { 1001--1041 }
     @Year { 1993 }
}
}
The result of this is
@ID @RefPrint kingston1993lout.design
All are optional, as usual.  Notice that @Code "@Pages" and @Code "@Page"
refer to the whole article so are not available for pinpointing here,
but you may still use {@Code "@Pinpoint"}.
@PP
Finally, small works that appear within large works have @Code "@Author"
references. @RawIndex { references }
references.inbook @SubIndex { @Code InBook reference type }
inbook.references @Index { @Code "InBook" reference type }
and @Code "@Title" options for the work itself, and @Code "@InAuthor" and
@Code "@InTitle" for the work that it appears within:
@ID @OneRow @Code @Verbatim {
{ @Reference
     @Tag { rieu1942intro }
     @Type { InBook }
     @Author { E. V. Rieu }
     @Title { Introduction to @I { The Odyssey } }
     @InAuthor { Homer }
     @InTitle { The Odyssey }
     @Publisher { Penguin }
     @Year { 1942 }
}
}
@Code "@InAuthor" would often be absent or an editor.  The result is
@ID @RefPrint rieu1942intro
The other options are as for large works.  Type @Code InProceedings is
references. @RawIndex { references }
references.inproceedings @SubIndex { @Code InProceedings reference type }
inproceedings.references @Index { @Code "InProceedings" reference type }
similar to {@Code InBook}.
@PP
A database usually has a long life, and some day it might find itself
used in a document whose language is not the one its original compiler
had in mind.  So a truly meticulous compiler of database entries would
enclose @I all language-specific options in
@Code "@Language" symbols:
@ID @OneRow @Code @Verbatim {
{ @Reference
    @Tag { zimand1986size.sets.strings }
    @Type { Article }
    @Author { French @Language { M. Zimand } }
    @Title { English @Language { On the topological size of sets of random strings } }
    @Journal { German @Language { Zeitschr. f. math. Logik und Grundlagen d. Math. } }
    @Volume { 32 }
    @Pages { 81--88 }
    @Year { 1986 }
}
}
(My apologies to M. Zimand if he or she is not French.)  This ensures
correct hyphenation whatever the language of the document in which the
reference appears.
@End @Section
