@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.5vx }
@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. For this reason, 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