home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ARM Club 3
/
TheARMClub_PDCD3.iso
/
hensa
/
textprocess
/
armatures
/
bibtex
/
files
/
!BiBTeX
/
!Help
< prev
next >
Wrap
Text File
|
1990-05-19
|
13KB
|
396 lines
BIBTEX(1) UNIX Programmer's Manual BIBTEX(1)
NAME
bibtex - make a LaTeX bibliography
SYNOPSIS
bibtex auxname
DESCRIPTION
Bibtex reads the top-level auxilliary (.aux) file output
during the running of latex (1) and creates a bibliography
(.bbl) file that can be included in the LaTeX source file.
The auxname on the command line should be given without an
extension. Each \cite in the source file is looked up in
bibliography files to gather together those used in the
document. Then a bibliography style file is executed to
write a \thebibliography environment.
The source file should have defined the bibliography (.bib)
files to search with the \bibliography command, and the
bibliography style (.bst) file to execute with the
\bibliographystyle command. Bibtex incorporates the path
searching mechanism described in the manual page for tex
(1). It searches the TEXINPUTS path for .aux, .bbl, and .bst
files.
Eventually there will be a section in the LaTeX manual
describing the bibliography and bibliography style formats.
For now, here are brief descriptions.
Bibliography File
The bibliography file (.bib) format is just about a subset
of that allowed in Scribe bibliographies. Only the delim-
iter pairs {...} and "..." are allowed inside entries.
Entries themselves can be delimited by (...) also. The =
sign between field names and field values is not optional.
There are a number of conventions that should be followed
when writing .bib files. These are not requirements of bib-
tex, but standard bibliography style files will typically
expect these conventions to be followed.
References should be categorized as in Scribe into one of
the categories: article, book, booklet, inbook, incollec-
tion, inproceedings, manual, mastersthesis, misc, phdthesis,
proceedings, techreport, and unpublished. See the Scribe
manual for the fields that must/can appear in each type of
reference.
The title field should be entered in uppers-and-lowers for-
mat, where everything is capitilized except articles and
unstressed conjunctions and prepositions, and even those are
capitilized if they are the first word or the first word
Printed 10/11/89 1
BIBTEX(1) UNIX Programmer's Manual BIBTEX(1)
after a colon. Some style files will convert all words
except the first to all lowercase. This is a mistake for
things like proper nouns, so you have to tell bibtex not to
touch such capital letters by enclosing them in braces, as
in "Dogs of {A}merica". It is unlikely that any style file
would attempt to convert book titles to lowercase, so
perhaps you can omit braces in such titles.
The author and editor fields should conform to a particular
format, so that the style file can parse them into parts. A
name can have four parts: first, von, last, junior, each of
which can consist of more than one word. For example, "John
Paul von Braun, Jr." has "John Paul" as the first part,
"von" as the von part, "Braun" as the last part, and "Jr."
as the junior part. Use one of these formats for a name:
First von Last
von Last, First
von Last, Junior, First
The last part is assumed to be one word, or all the words
after the von part. Bibtex will treat anything in braces as
one word, so use braces to surround last names that contain
more than one word. The von part is recognized by looking
for words that begin with lowercase letters. When possible,
enter the full first name(s); style files may abbreviate by
taking the first letter. Actually, the rules for isolating
the name parts are a bit more complicated, so they do the
right thing for names like "de la Grand Round, Chuck".
There is no need for a field like Scribe's fullauthor field.
If there are multiple authors or editors, they should all be
separated by the word and. Scribe's editors field should
not be used, since bibtex style files can count how many
names are in an editor field.
Bibliography Style File
Style (.bst) files are written in a postfix stack language.
A dedicated hacker can probably figure out how to program in
it by looking at an existing style file. The following
descriptions of builtin functions may help. in the descrip-
tions, "first", "second", etc., refer to the order popped.
+ Pop the top two (integer) literals and push their sum.
- Pop the top two (integer) literals and push their
difference (the first subtracted from the second).
> Pop the top two (integer) literals, compare them, and
push the integer 1 if the second is greater than the
first, 0 otherwise.
< Pop the top two (integer) literals, compare them, and
Printed 10/11/89 2
BIBTEX(1) UNIX Programmer's Manual BIBTEX(1)
push the integer 1 if the second is less than the
first, 0 otherwise.
= Pop the top two (integer or string) literals, compare
them, and push the integer 1 if they're equal, 0 other-
wise.
* Pop the top two (string) literals, concatenate them (in
reverse order, that is, the order in which pushed), and
push the resulting string back onto the stack.
:= Pop the top two literals and assign to the second the
value of the first. Integer and string variables can
be declared with "INTEGERS {i1 i2 ...}" and "STRINGS
{s1 s2 ...}", respectively.
add.period$
Pop the top (string) literal, add a period to it if the
last non-right-brace character isn't a period, question
mark, or exclamation-mark, and push this resulting
string back onto the stack.
call.type$
Execute the function corresponding to the reference
classification of the current entry. For example, when
processing an @INBOOK entry, call the "inbook" function
if it is defined, otherwise call the "default.type"
function. Functions are declared with the FUNCTION
command: the first argument is the function name and
the second is the body. An ENTRY command declares the
variables that may be used in the style file when pro-
cessing an entry. It has three brace-surrounded argu-
ments: a list of field names that may occur in the
entry (these are read-only variables returning the
value assigned to the fields in the current entry), a
list of local integer variables, and a list of local
string variables.
change.case$
Pop the top two (string) literals; change the case of
the second according to the specifications of the
first, as follows. (Note: The word `letters' in the
next sentence refers only to those at brace-level 0,
the top-most brace level; no other characters are
changed.) If the first literal is the string ul, con-
vert all letters to lower case except the very first
character in the string, which should be converted to
upper case; if it's the string uu, convert all letters
to upper case; if it's the string ll, convert all
letters to lower case; if it's the string lu, convert
all letters to upper case except the very first charac-
ter in the string, which it converts to lower case.
Printed 10/11/89 3
BIBTEX(1) UNIX Programmer's Manual BIBTEX(1)
Then push this resulting string.
chr.to.int$
Pop the top (string) literal, make sure it's a single
character, convert it to the corresponding ASCII-code
integer, and push that integer.
cite$
Push the string used in a cite of the current entry
(i.e., the codeword that appears at the beginning of
the entry).
duplicate$
Push a duplicate of the stack top onto the stack.
format.name$
Pop the top three literals (they are a string, an
integer, and a string literal, in that order). The
last string literal represents a name list (each name
corresponding to a person), the integer literal speci-
fies which name to pick from this list, and the first
string literal specifies how to format this name. Push
the formatted name. The first string literal should be
something like "{ff }{vv }{ll}{, jj}", or "{vv }{ll}{,
jj}{, f}". In such a string, an f stands for the first
name part, a v stands for the von part, etc. The dou-
bled letters mean "put the whole part here" and the
single letters mean "put an abbreviation (first
letter(s)) here". These formatting letters should
occur at brace level 1. If any of the corresponding
parts of the name is missing, everything in the brace
group corresponding to that part is omitted.
if$ Pop the top three literals (they are two function
literals and an integer literal, in that order); if the
integer is greater than 0, execute the second literal,
else execute the first.
int.to.chr$
Pop the top (integer) literal interpreted as the ASCII
code of a single character, convert it to the
corresponding single-character string, and push that
string.
int.to.str$
Pop the top (integer) literal, convert it to its
(unique) string equivalent, and push that string.
missing$
Pop the top literal and push the integer 1 if it's a
missing field (the current entry didn't have an assign-
ment for it), 0 otherwise.
Printed 10/11/89 4
BIBTEX(1) UNIX Programmer's Manual BIBTEX(1)
newline$
Write whatever has accumulated in the output buffer
onto the .bbl file, followed by a newline character.
num.names$
Pop the top (string) literal; push the number of names
the string represents: one plus the number of
occurrences of the substring "and" surrounded by non-
null white-space (ignoring case differences) at the top
brace level.
purify$
Pop the top (string) literal, convert upper-case
letters to lower case, remove nonalphanumeric charac-
ters except for white-space characters (one or more
consecutive ones get compressed to a single space), and
push the resulting string.
quote$
Push the string consisting of the double-quote charac-
ter.
skip$
Do nothing.
stack$
Pop and print the whole stack on the terminal and log
file.
substring$
Pop the top three literals (they are the two integers
literals len and start and a string literal, in that
order). Push the substring of the (at most) len con-
secutive characters starting at the startth character
(assuming 1-based indexing) if len is positive, and
ending at the -startth character from the end if start
is negative (where the first character from the end is
the last character).
swap$
Swap the top two elements of the stack.
top$ Pop and print the top of the stack on the terminal and
log file.
type$
Push the reference classification type (book, article,
etc.), of the current entry onto the stack (unless
either it's empty or undefined, in which case push the
null string).
while$
Printed 10/11/89 5
BIBTEX(1) UNIX Programmer's Manual BIBTEX(1)
Pop the top two (function) literals, and keep executing
the second as long as the (integer) value left on the
stack by executing the first is greater than 0.
width$
Pop the top (string) literal and push the integer that
represents its width. The width is currently calcu-
lated in hundredths of a point, using the character
widths of the amr10 font. The only white-space charac-
ter with non-zero width is the space. However, the
width returned should only be used in comparisons with
other such widths.
write$
Pop the top (string) literal and write it on the .bbl
file.
SEE ALSO
latex(1), tex(1).
BUGS
The cacm style file is really just a skeleton so far.
HISTORY
Written by Oren Patashnik under the direction of Leslie Lam-
port. Ported to UNIX by Howard Trickey, June 1984.
Printed 10/11/89 6