ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/tags/start/mattDisertation/ndthesis/merlin.mbs
Revision: 728
Committed: Wed Aug 27 16:18:05 2003 UTC (21 years ago) by mmeineke
Original Path: branches/mmeineke/mattDisertation/ndthesis/merlin.mbs
File size: 188060 byte(s)
Log Message:
Matt Meineke's dissertation Files

File Contents

# User Rev Content
1 mmeineke 728 %\iffalse THIS IS A META COMMENT
2     %====================================================================
3     % Master Bibliography Style
4     % for customizing bibliographic style files (.bst)
5     % with the help of docstrip.tex
6     % and the auxiliary program makebst.tex
7     %--------------------------------------------------------------------
8     % (See version and date in the \ProvidesFile command below)
9     %--------------------------------------------------------------------
10     % This file supports numerical and author-year citation styles
11     % for natbib, harvard, astronom, authordate, apalike
12     % It also supports languages other than English
13     %--------------------------------------------------------------------
14     % This file is self-documenting: simply LaTeX it!
15     % (Alternatively, extract documentation driver with option `driver')
16     %====================================================================
17     %
18     %<*!tail>
19     %-------------------------------------------------------------------
20     % The original source file contains the following version information:
21     %\fi
22     % \ProvidesFile{merlin.mbs}[1996/12/16 3.82 (PWD)]
23     %\iffalse
24     %
25     % NOTICE:
26     % This file may be used for non-profit purposes.
27     % It may not be distributed in exchange for money,
28     % other than distribution costs.
29     %
30     % The author provides it `as is' and does not guarantee it in any way.
31     %
32     % Copyright (C) 1994, 1995, 1996 Patrick W. Daly
33     % Max-Planck-Institut f\"ur Aeronomie
34     % Postfach 20
35     % D-37189 Katlenburg-Lindau
36     % Germany
37     %
38     % E-mail: daly@linmpi.mpae.gwdg.de
39     %-------------------------------------------------------------------
40     %</!tail>
41     %<*a&!a>
42     % The following ensures that the driver part is not seen by makebst
43     % The driver part must not contain any \end other than \end{document} !
44     \ifx\endoptions\undefined\let\tempx=\relax\else
45     \long\def\tempx#1\end#2{}\fi\tempx
46     %</a&!a>
47     %<*driver>
48     \NeedsTeXFormat{LaTeX2e}%
49     \documentclass[a4paper,10pt,twoside]{article}%
50     \usepackage{doc}%
51     \raggedbottom
52     \CodelineNumbered
53     \RecordChanges
54     % Comment out next line to print coding
55     \OnlyDescription
56     \setlength{\oddsidemargin}{0.5\paperwidth}
57     \addtolength{\oddsidemargin}{-0.5\textwidth}
58     \addtolength{\oddsidemargin}{-1in}
59     \setlength{\evensidemargin}{\oddsidemargin}
60    
61     \begin{document}
62     \DocInput{merlin.mbs}
63     \end{document}
64     %</driver>
65     % END OF META COMMENT \fi
66     % \CharacterTable
67     % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
68     % Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
69     % Digits \0\1\2\3\4\5\6\7\8\9
70     % Exclamation \! Double quote \" Hash (number) \#
71     % Dollar \$ Percent \% Ampersand \&
72     % Acute accent \' Left paren \( Right paren \)
73     % Asterisk \* Plus \+ Comma \,
74     % Minus \- Point \. Solidus \/
75     % Colon \: Semicolon \; Less than \<
76     % Equals \= Greater than \> Question mark \?
77     % Commercial at \@ Left bracket \[ Backslash \\
78     % Right bracket \] Circumflex \^ Underscore \_
79     % Grave accent \` Left brace \{ Vertical bar \|
80     % Right brace \} Tilde \~}
81     %
82     % \CheckSum{277}
83     % \setcounter{StandardModuleDepth}{1}
84     % \setcounter{IndexColumns}{2}
85     % \setlength{\IndexMin}{10cm}
86     %
87     % \changes{1.0}{1993 Aug 16}{Initial version}
88     % \changes{2.0}{1994 Jan 31}{Add multilingual capabilities}
89     % \changes{2.1--2.5}{1995 May 2}{Changes to \texttt{babel.mbs} parallel 1.3--1.7
90     % in \texttt{genbst.mbs}}
91     % \changes{1.3(2.1)}{1994 Jul 1}{Change documentation to \LaTeXe}
92     % \changes{1.3(2.1)a}{1994 Sep 1}{Alter wording of article title capitalization
93     % choice}
94     % \changes{1.4(2.2)}{1994 Sep 5}{Add full author name possibilities}
95     % \changes{1.4(2.2)}{1994 Sep 5}{Fix up some punctuations}
96     % \changes{1.4(2.2)a}{1994 Sep 7}{Add possibility to put titles in quotes}
97     % \changes{1.5(2.3)}{1994 Sep 15}{Accommodate new \texttt{harvard.sty}}
98     % \changes{1.5(2.3)}{1994 Sep 15}{Add full names for \texttt{natbib} v5.3}
99     % \changes{1.5(2.3)a}{1994 Oct 11}{Add option so year can contain any text}
100     % \changes{1.5(2.3)b}{1995 Jan 18}{Allow edited by to be in parentheses}
101     % \changes{1.5(2.3)b}{1995 Jan 18}{Allow (year) to have no punctuation
102     % following}
103     % \changes{1.5(2.3)c}{1995 Jan 20}{Journal volume numbers with more choice}
104     % \changes{1.6(2.4)}{1995 Feb 2}{Date with no punctuation preceding it}
105     % \changes{1.6(2.4)}{1995 Feb 2}{Editor names can be reversed like authors'}
106     % \changes{1.6(2.4)}{1995 Feb 2}{Can abbreviate `edited by' to `ed(s).'}
107     % \changes{1.6(2.4)}{1995 Feb 2}{Released version}
108     % \changes{1.7(2.5)}{1995 Feb 9}{Add \texttt{seq-key} option}
109     % \changes{3.0}{1995 Mar 15}{Becomes \texttt{merlin.mbs}, with language
110     % support in additional files}
111     % \changes{3.0}{1995 Feb 27}{Allow full author names to be reversed}
112     % \changes{3.0}{1995 Mar 1}{Add \texttt{isbn} field option}
113     % \changes{3.0}{1995 Mar 3}{Citation names can be bold or small caps}
114     % \changes{3.0}{1995 Mar 8}{Colon and space may follow year}
115     % \changes{3.0}{1995 Mar 15}{Names can be reversed, dotless intials}
116     % \changes{3.0}{1995 Mar 17}{Volume, number can be followed by semi-colon}
117     % \changes{3.0}{1995 Mar 20}{Allow word editor or ed to be in parentheses}
118     % \changes{3.0}{1995 Mar 20}{Abbreviated journal names can have dots removed}
119     % \changes{3.1}{1995 May 4}{Fix `edited by' so it is not abbreviated
120     % automatically with `editor'}
121     % \changes{3.1}{1995 May 6}{Re-do head/tail options to allow easy update of
122     % older \texttt{.dbj} files}
123     % \changes{3.2}{1995 May 19}{Minimum number of authors can be up to 6, not 5}
124     % \changes{3.2}{1995 May 19}{Allow date as part of journal spec., for medical
125     % journals}
126     % \changes{3.2}{1995 May 19}{Suppress `pages' and `pp'}
127     % \changes{3.2}{1995 May 19}{Allow date to be `1994 Jul', with or without dot}
128     % \changes{3.2}{1995 Jun 7}{Authors as Jones C.T.}
129     % \changes{3.2}{1995 Jun 16}{Sort without \emph{von} part}
130     % \changes{3.2}{1995 Jul 31}{Release as version 3.2}
131     % \changes{3.3}{1995 Aug 7}{Extra labels put in braces so they are treated
132     % as one unit by natbib}
133     % \changes{3.3}{1995 Aug 7}{Publisher's address can precede name}
134     % \changes{3.3}{1995 Sep 4}{Add full authors only if different from short list}
135     % \changes{3.4}{1995 Sep 5}{Add number of references as argument to
136     % \texttt{thebibliography} environment}
137     % \changes{3.4}{1995 Sep 28}{Fix placement of \texttt{bolden} in
138     % \texttt{format.vol.num.pages}}
139     % \changes{3.4}{1995 Sep 28}{Add possibility of date between volume and pages}
140     % \changes{3.4}{1995 Sep 28}{Word `and' can be in normal font in citations}
141     % \changes{3.5}{1995 Oct 4}{Tech Reports to have titles like books}
142     % \changes{3.5}{1995 Oct 9}{Delimit \texttt{\char`\\harvardyearright} properly}
143     % \changes{3.5}{1995 Oct 9}{Add option to sort by year (numerical only)}
144     % \changes{3.5}{1995 Oct 12}{Allow multiple journal-name files}
145     % \changes{3.5}{1995 Oct 16}{Allow months in dates even for author-year}
146     % \changes{3.5}{1995 Oct 24}{Fix sorting bug for limited number of authors}
147     % \changes{3.5}{1995 Oct 30}{Add \texttt{named} format for author--year cites}
148     % \changes{3.6}{1995 Nov 2}{Blocks can be separated by semi-colons}
149     % \changes{3.6}{1995 Nov 23}{Journal titles in normal font}
150     % \changes{3.6}{1995 Nov 23}{Volume subnumber added to pages}
151     % \changes{3.6}{1995 Nov 24}{Book pages in parentheses}
152     % \changes{3.6}{1995 Dec 7}{Put Jr at end for AGU author style}
153     % \changes{3.6}{1995 Dec 7}{Put `and' in same font in list and citation}
154     % \changes{3.6}{1996 Jan 30}{Allow `et al' to be in normal font}
155     % \changes{3.6a}{1996 Feb 1}{Fix bugs with \texttt{xand} option}
156     % \changes{3.7}{1996 Feb 2}{Fix small caps with NFSS}
157     % \changes{3.7}{1996 Feb 5}{Fix clash of \texttt{emphasize} and
158     % \texttt{purify\$}}
159     % \changes{3.8}{1996 Feb 29}{Add \texttt{alpha}-type style}
160     % \changes{3.8}{1996 Mar 1}{Style alpha is never unsorted}
161     % \changes{3.8}{1996 Mar 12}{Allow blanks between blocks}
162     % \changes{3.8}{1996 Mar 12}{Publisher in parentheses}
163     % \changes{3.8}{1996 Mar 15}{Allow author-year to be sorted by year}
164     % \changes{3.8}{1996 Mar 16}{Cited `and' resets only one attribute}
165     % \changes{3.8}{1996 Mar 19}{Allow date to be between volume and number}
166     % \changes{3.81}{1996 Jun 17}{Add \texttt{\char`\\natexlab} for \texttt{natbib} 6.3}
167     % \changes{3.81}{1996 Jun 19}{Fix coding for adding `page' to journals}
168     % \changes{3.81}{1996 Jun 19}{Add `volume' to journals}
169     % \changes{3.81}{1996 Jun 19}{Remove word `in'}
170     % \changes{3.81}{1996 Jun 19}{Place publisher before chapter/pages}
171     % \changes{3.81}{1996 Jun 25}{Allow period after date}
172     % \changes{3.81}{1996 Jun 26}{Commas between blocks, except for article titles
173     % where period comes}
174     % \changes{3.81}{1996 Sep 12}{Allow comma before date}
175     % \changes{3.81}{1996 Sep 13}{Reorganize incollection organization and
176     % publisher}
177     % \changes{3.81}{1996 Sep 13}{Allow edition to come before publisher}
178     % \changes{3.81}{1996 Sep 16}{Allow author--year to be in citation order}
179     % \changes{3.81}{1996 Sep 16}{Publisher, address, date can all be in
180     % parentheses}
181     % \changes{3.81}{1996 Sep 18}{Remove extraneous hyphen before
182     % \texttt{\char`\\getans}}
183     % \changes{3.82}{1996 Nov 15}{Allow pages at end before notes}
184     % \changes{3.82}{1996 Nov 15}{Fix bug with quoted titles when title missing}
185     % \changes{3.82}{1996 Dec 16}{Fix bug that put comma before publisher in
186     % parentheses}
187     % \changes{3.82}{1996 Dec 16}{Allow AGU author style with full names}
188     %
189     % \pagestyle{myheadings}
190     % \markboth{P. W. Daly}{A General Master Bibliography Style}
191     %
192     % \title{{\bfseries A Master Bibliographic Style File}\\
193     % for numerical, author--year, multilingual applications}
194     %
195     % \author{Patrick W. Daly}
196     %
197     % \GetFileInfo{merlin.mbs}
198     % \date{This paper describes file \texttt{\filename},\\
199     % version \fileversion{} from \filedate}
200     %
201     % \maketitle
202     %
203     % \MakeShortVerb{\|}
204     %
205     % \parskip=1ex \parindent=0pt
206     %
207     % \newcommand{\btx}{{\sc Bib}\TeX}
208     % \newcommand{\dtx}{\textsf{docstrip}}
209     %
210     % \section{Introduction}
211     % A problem facing users of \btx{} is that there is no standard for
212     % formatting lists of references. Publishers and journals insist
213     % on completely arbitrary placement of commas, colons, and ordering of
214     % entries. Furthermore, author--year styles of citations are supported by
215     % certain special \LaTeX{} packages, but each for only a very limited
216     % number of bibliographic styles. Finally, most such style files are for
217     % English only, and any adaptations to other languages must duplicate the
218     % entire spectrum of such files.
219     %
220     % All of these obstacles are in principle easily overcome by simply
221     % reprogramming \btx{} by means of an appropriate \emph{bibliographic style
222     % file} (extension \texttt{.bst}). \btx{} is in fact extremely flexible;
223     % unfortunately its programming language is very low-level, permitting only
224     % the most basic of hacks for the normal user.
225     %
226     % The solution to this is a \emph{generic} or \emph{master bibliographic
227     % style file} (extension \texttt{.mbs}) containing \dtx{} options for
228     % alternative coding. By selecting the desired options, one can customize a
229     % \texttt{.bst} file to one's needs.
230     %
231     % This file, \texttt{\filename}, is my latest version of a general-purpose
232     % \texttt{.mbs} file to meet as many bibliographic needs as possible.
233     % It was originally assembled from Oren Patashnik's standard files {\tt
234     % plain.bst} and \texttt{unsrt.bst}, plus his non-standard file {\tt
235     % apalike.bst}, a very basic author--year citation style.
236     % It has since evolved extensively as I have added features found in
237     % available \texttt{.bst} files, and those demanded by publishers or
238     % suggested to me by many user/contributors.
239     %
240     % To produce a customized bibliographic style (\texttt{.bst}) file from this
241     % master file, simply \TeX{} or \LaTeX{} the `program' \texttt{makebst.tex}.
242     % When asked for the name of the master file, answer with
243     % \begin{quote}\tt\filename\end{quote}
244     % and then reply to the questions in the following menus. The last question
245     % is whether you want to generate the \texttt{.bst} file right away.
246     %
247     % More details on this process and on the options available are to be found
248     % in the rest of this article.
249     %
250     % \section{History of this File}
251     %
252     % Since the first release of this generic file, in November 1993, under the
253     % name \texttt{genbst.mbs}, I have received innumerable
254     % suggestions for additions, most of which I have tried to include. Often
255     % this has resulted in reorganizing the coding, and adding new functions.
256     % The resulting \texttt{.bst} files are now quite different from those of
257     % Patashnik, although the underlying ideas are the same.
258     %
259     % A second version was released shortly afterwards that paralleled the first
260     % one except that it included support for languages other than English.
261     % That file was named \texttt{babel.mbs}, following the \texttt{babel}
262     % system of Johannes Braams. Although I always viewed it as version 2 of
263     % \texttt{genbst.mbs}, all additions to the one were also included in the
264     % other. This of course was tedious and prone to error. I looked forward to
265     % the day when \texttt{babel.mbs} would become the only supported version.
266     % The reason I was reluctant to do that before was that the overhead per
267     % language was fairly high, and I dreaded to think how large the file would
268     % become when 20 or 30 languages were added.
269     %
270     % I have now found a way to put the language definitions into separate files,
271     % one per language. This means that new languages do not burden the basic
272     % file, and that users need only keep those support files that might
273     % interest him or her. New ones may also be made up locally by hacking an
274     % existing language definition file. (The file \texttt{english.mbs} is
275     % supplied only for this purpose.)
276     %
277     % For this reason, \texttt{\filename} is released as version~3 of
278     % \texttt{genbst.mbs} and \texttt{babel.mbs}. In spite of the new name, it
279     % should be regarded as their direct successor. Needless to say, this means
280     % that the earlier two \texttt{.mbs} files will no longer be maintained.
281     %
282     % To include language support, all explicit English words like
283     % \textsl{editor} and \textsl{chapter} have been replaced by functions
284     % whose definitions may be altered in the resulting \texttt{.bst} file
285     % (less desirable method) or which may be redefined by an external
286     % language definition file (preferred method). Alternatively, one can select
287     % the pseudo-language named \texttt{babel} which inserts \LaTeX{} commands
288     % for the explicit words, the definitions of which must be
289     % contained in a file called {\tt babelbst.tex}. Only the languages English
290     % and \texttt{babel} are included internally to \texttt{\filename}; all
291     % others are contained in external language definition files.
292     %
293     % Another new feature is the possibility of including a file containing
294     % prestored shorthand designations for certain journal names. Such a file
295     % is provided for physics journals, but others could be made up using this
296     % one as a model. See Section~\ref{sec:jnames}.
297     %
298     % To take advantage of these external files, one must use
299     % \texttt{makebst} version~3; \texttt{\filename} may still be used with
300     % earlier versions, but without the external files.
301     %
302     % \def\temp{merlin.mbs}\ifx\temp\filename
303     % This file is now named after the legendary magician in the hope that it
304     % can produce wonders by incanting the right magic formulas. However, one
305     % should bear in mind that even Merlin was not omnipotent. It would be too
306     % much to hope that all bibliographic wishes will be fulfilled quickly and
307     % easily, but we shall try as best we can. Watch the wizardry at work!
308     % \fi
309     %
310     % \section{About Master Bibliographic Style Files}
311     %
312     % For details about how master bibliography style files are to be
313     % constructed, see the documentation on \texttt{makebst}. Here only a
314     % rough overview is given.
315     %
316     % \subsection{The \dtx{} Program}
317     % The \dtx{} program, written by Frank Mittelbach, is now a fundamental
318     % part of the \LaTeXe{} installation. Its original purpose is to remove
319     % comment lines from documented files, but has the secondary function of
320     % selecting alternative lines of coding.
321     %
322     % A master \btx{} bibliographic style file is one that, when processed by
323     % \dtx{} with selected options, produces a regular \btx{} \texttt{.bst}
324     % file with the desired features.
325     %
326     % In this sense, \dtx{} functions something like a C preprocessor. In fact,
327     % Oren Patashnik's original \texttt{.bst} files were all produced from a single
328     % source file by means of the preprocessor. The advantage of \dtx{} is that
329     % it is portable to all installations with \TeX.
330     %
331     % \subsection{The \dtx{} Batch Job}
332     %
333     % The \dtx{} program can be run either interactively, where the user must
334     % answer questions via the keyboard, or by means of a batch job where all
335     % the inputs are prepared in a file beforehand. For producing a \btx{}
336     % style file from a master file, the batch job method is the only feasible
337     % one, simply because of the large number of options available. (There is
338     % another reason for employing a batch job: the interactive method adds an
339     % |\endinput| command at the end, something that \btx{} will protest
340     % about.)
341     %
342     % The batch job files in general do not have any particular extension but I
343     % use \texttt{.dbj} for \emph{\dtx{} batch job}. These files are useful
344     % because they document the options used to produce the \texttt{.bst} file,
345     % and they may be edited to experiment with alternative options.
346     %
347     % \subsection{The \texttt{makebst} Program}
348     %
349     % It is possible to make up a batch job file by hand using the option
350     % information listed in Section~\ref{sec:options}, but my accompanying
351     % program \texttt{makebst} simplifies the task considerably. It reads menu
352     % information in the master file itself in order to present the user with
353     % an interactive list of choices, translating the answers into appropriate
354     % options that are then written to a batch job file.
355     %
356     % To run it, simply process \texttt{makebst.tex} with \TeX\ or \LaTeX, and
357     % answer the questions. The first of these is whether you want some
358     % instructions or not, and the second is the name of the \texttt{.mbs} that
359     % you want to use. The next query is about the name of the desired
360     % \texttt{.bst} file (which will also be the root name of the batch job).
361     % After that, all further questions come from menu information in the
362     % master file.
363     %
364     % At the very end, \texttt{makebst} asks if it should run the batch job for
365     % you. Isn't that a fine service?
366     %
367     % \section{Multilingual Adaptation}
368     % The original \texttt{.bst} files from Oren Patashnik contain explicit
369     % English words that are output into the final text. Since \LaTeX{} is
370     % increasingly being used for other languages, and since the official
371     % version since December 1991 also uses macros in place of explicit words,
372     % it seems appropriate for \btx{} to follow suit.
373     %
374     % In this master bibliographic style file {\tt\filename}, all explicit
375     % words have been replaced by functions: e.g., the word \textsl{editor} has
376     % become the function \texttt{bbl.editor}. Depending on the language option
377     % chosen, this function is defined to be the text {\tt"editor"},
378     % {\tt"Redakteur"}, or {\tt"redacteur"}, for English, German, and French,
379     % respectively.
380     %
381     % There is another special `language' called \texttt{babel} that instead inserts
382     % the text |"\bbleditor{}"|; the definitions of these \LaTeX{} commands
383     % must be in a separate file named \texttt{babelbst.tex} that is read in at
384     % the start of the bibliography.
385     %
386     % Only English and \texttt{babel} are supported directly in
387     % \texttt{\filename}; all other language definitions are contained in
388     % separate definition files, e.g., \texttt{french.mbs}, \texttt{german.mbs}.
389     %
390     % The language selection is made during the \texttt{makebst} run, which
391     % asks for the name of the language definition file as the first menu item. If
392     % either English or \texttt{babel} is wanted, reply with the default, which
393     % is \texttt{\filename} itself; otherwise give the name of the desired
394     % language file.
395     %
396     % \begin{quote}\slshape
397     % \textbf{Note:} the language definition files can only be used with
398     % \texttt{makebst} version~3 or later, and
399     %
400     % with an external definition file, the \dtx{} run requires two passes
401     % through \texttt{\filename}, doubling the processing time.
402     % \end{quote}
403     %
404     % \subsection{Adding a New Language Definition File}
405     %
406     % To create a new language definition file, simply take one of the existing
407     % ones, like \texttt{english.mbs}, and replace the explicit English words
408     % with their translations. There are, however, a number of points that can
409     % complicate this procedure.
410     %
411     % \begin{enumerate}
412     % \item
413     % Do not forget to change the documentation in the file, especially
414     % version number, date, author.
415     %
416     % \item
417     % There are option menus that need to be translated too. It might also be
418     % desirable to add or remove options. In most cases, the options in the
419     % language files involve possible abbreviations, like
420     % \begin{quote}
421     % \verb!\mes{^^JABBREVIATE WORD `PAGES':}!\\
422     % \verb!\optdef{*}{}{`Page(s)'}{(no abbreviation)}!\\
423     % \verb!\optdef{a}{pp}{`Page' abbreviated}{as p. or pp.}!\\
424     % \verb!\getans!
425     % \end{quote}
426     %
427     % In this example, the option \texttt{pp} appears later in the definition
428     % \begin{quote}
429     % \verb!FUNCTION {bbl.pages}!\\
430     % \verb+%<!pp>{ "pages" }+\\
431     % \verb!%<pp>{ "pp." }!
432     % \end{quote}
433     % This a \emph{local} option, that only affects the coding in the definition
434     % file. It is possible to add more local options.
435     %
436     % \item
437     % However, all options, whether activated by the main file or by the
438     % definition file, apply to both. In other words, there really is no such
439     % thing as a local option. In the above example, \texttt{pp} is only
440     % local because it is never used in \texttt{\filename}.
441     %
442     % \item
443     % Add the name of the language as an option, with
444     % \begin{quote}
445     % \verb!\mes{^^JOptions for ENGLISH}!\\
446     % \verb!\wr{\spsp\spsp\sep english\pc: English language}!
447     % \end{quote}
448     % (This is how options are added without |\optdef| and |\getans|.) The
449     % main file just might recognize it in order to take some
450     % language-specific action. The least it should do is add a comment at
451     % the start of the \texttt{.bst} file stating for which language it is to
452     % be used.
453     %
454     % \item
455     % There could be some problems with edition numbers due to language
456     % dependent ways of treating ordinal numbers (1st, 2nd, 3rd in English;
457     % 1$^{\mbox{\scriptsize re}}$, 2$^{\mbox{\scriptsize e}}$,
458     % 3$^{\mbox{\scriptsize e}}$ in French; 1., 2., 3., in German). Some
459     % accommodation already exists for the oddball language English, and
460     % further hacking may be needed for others.
461     %
462     % \item
463     % If there should be any need for a double-quote character in
464     % the translations (German needs it for umlauts) then there is trouble
465     % because the \btx{} strings do not allow it. Instead, use the command
466     % |\qq|, as in the German word |F\qq{u}nfte| for {\sl F\"unfte} (fifth).
467     % It is then vital to add the option \texttt{umlaut} with
468     % \begin{quote}
469     % \verb!\wr{\spsp\spsp\sep umlaut\pc: Activate umlaut command}!
470     % \end{quote}
471     %
472     % Bernd Raichle points out that |\^^b| can be used in place of |\"|
473     % within \btx{} code. One can thus replace |F\qq{u}nfte| with |F\^^b unfte|
474     % and do away with the \texttt{umlaut} option.
475     %
476     % \end{enumerate}
477     %
478     % \subsection{Changing \texttt{babelbst.tex} for a New Language}
479     %
480     % Alternatively, a new language can be added by
481     % modifying the file \texttt{babelbst.tex} and selecting the language {\tt
482     % babel} for the \texttt{.bst} file. If this is the only language to be used,
483     % then just change the English words in the definitions.
484     %
485     % However, some form of switching would be more desirable. With \TeX\
486     % version 3, there is a |\language| parameter to control the hyphenation
487     % patterns, and this could be used to select the correct language. For
488     % example, if language 0 is English and language 1 German, then put the
489     % English version of \texttt{babelbst.tex} into \texttt{englbst.tex} and the
490     % German
491     % version in \texttt{germbst.tex}. Then \texttt{babelbst.tex} could contain:
492     % \begin{quote}\begin{verbatim}
493     % \ifcase\language \input{englbst} \or \input{germbst}
494     % \else \input{englbst} \fi
495     % \end{verbatim}
496     % \end{quote}
497     %
498     % This is of course installation dependent.
499     %
500     % \subsection{Extracting the Sample \texttt{babelbst.tex} File}
501     %
502     % A sample \texttt{babelbst.tex} (for English) is contained in this master
503     % file. Extract it with \dtx{} and the option \texttt{bblbst}. It may be
504     % edited (and possibly renamed) for other languages as needed.
505     %
506     % \subsection{Problem with Edition Numbers}
507     % Something to note here is the ordinal numbers for editions. \btx{}
508     % demands that the field \texttt{edition} be given in the database as a word
509     % \textsl{First}, \textsl{Second}, etc., or as \textsl{1st}, \textsl{2nd},
510     % etc. This is bad policy
511     % because it is language dependent. So what I do is to test for the words
512     % \textsl{first} through \textsl{fifth} (case independently) and replace them
513     % with language-dependent equivalents. If the {\tt<ord>} option is selected,
514     % these equivalents are ordinal numbers for that language. Any other words
515     % cannot be interpreted and must be printed as is.
516     %
517     % However, if the \texttt{edition} is given as a number, with or without
518     % following letters, then the numbers 1 through 5 are replaced by their
519     % words; any higher numbers just have the ordinal ending (\textsl{th}
520     % in English) added to them.
521     %
522     % These numbers are only used with the word \textsl{edition} or
523     % its equivalent in other languages, so the translators need
524     % to provide only the one gender, e.g., feminine for both German and
525     % French.
526     %
527     % \section{Prestoring Names of Journals}\label{sec:jnames}
528     %
529     % The standard \texttt{.bst} files contain the names of some 20 journals
530     % in the field of computing, stored as macros for easy reference within the
531     % database \texttt{.bib} files. For example, the \textsl{Journal of
532     % Computer and System Sciences} can be referred to as \texttt{jcss}.
533     % With the option \texttt{jabr} (for journal abbreviation) this same
534     % shorthand produces \textsl{J.~Comput. Syst. Sci.}.
535     %
536     % Some \texttt{.bst} files for physics journals include additional journal
537     % names, and it is conceivable that other faculties might wish to prepare
538     % their own such lists, with each name present in a full or abbreviated
539     % form. Such an external file can now be added with \texttt{\filename} and
540     % \texttt{makebst} version~3.
541     %
542     % As a model, I supply a file \texttt{physjour.mbs} with the names of
543     % physics journals which I have taken from other \texttt{.bst} files.
544     % I also have a contributed file \texttt{photjour.mbs} containing names of
545     % optics journals.
546     %
547     % In fact, version~3.5 can even include multiple journal-name files.
548     % Thus one can decide whether to include both, one, or none of the above
549     % files.
550     %
551     % \section{Updating Older \texttt{.dbj} Files}\label{sec:update}
552     % If you have existing \texttt{.dbj} files for generating \texttt{.bst}
553     % files from the older version \texttt{genbst.mbs}, these may be run with
554     % \texttt{\filename} by simply changing the name of the source
555     % \texttt{.mbs} file. For example, where the older \texttt{.dbj} file contains
556     % the line
557     % \begin{quote}
558     % |\generateFile{mystyle.bst}{f}{\from{genbst.mbs}{%|
559     % \end{quote}
560     % edit the file so that \texttt{genbst.mbs} is replaced by
561     % \texttt{\filename}. The resulting \texttt{mystyle.bst} file will then be
562     % an updated version of the older one, containing all the same features.
563     %
564     % \section{Acknowledgements}
565     % I wish to thank all the people who have taken the trouble to send me
566     % suggestions or special requests. Admittedly, it has been out of
567     % self-interest on their part, since they had bibliographic needs to be
568     % met. And I have often questioned the need for many of their demands. Yet,
569     % that is part of the bibliographic jungle that I am trying to eliminate.
570     % If I thought that bibliographies were arbitrarily formatted before I
571     % started this project, I have more than sufficient confirmation since
572     % then. The fault lies not with the poor contributors, but with the
573     % publishers who cannot agree on a decent standard.
574     %
575     % I especially want to thank Frank Mittelbach, not only for creating \dtx{}
576     % in the first place, but also for sending me his bibliographic requirements,
577     % and for suggesting an improvement to \texttt{makebst}.
578     %
579     % And finally, all of us must thank Oren Patashnik for providing \btx;
580     % without its flexibility and programmability (in spite of the complexity
581     % of the language) the master bibliographic styles would not be possible at
582     % all.
583     %
584     % \section{The Options}\label{sec:options}
585     % Here I present a list of all the \dtx{} options that are
586     % available in this file {\tt\filename}.
587     % The normal user can skip this section since he will probably make use
588     % of the menus via \texttt{makebst}. These are described in
589     % Section~\ref{sec:menu}. The menus provide much more informative prompts
590     % than the heavily abbreviated option names listed here. In other words,
591     % the options described in this section are meant for internal (programmer)
592     % usage, while the normal interface for the user is the menus.
593     %
594     % I have tried to avoid
595     % conflicts with mutually exclusive options by always letting one dominate if
596     % more than one has been specified. Such options have the same prefix, such
597     % as \texttt{nm-rev} and \texttt{nm-init}.
598     % If one uses \texttt{makebst} to produce the
599     % \dtx{} batch job, then it is impossible to give mutually
600     % exclusive options unless one edits the batch file oneself afterwards.
601     % (Anything is possible with computer freaks!)
602     %
603     % Most mutually exclusive options have the same prefix before the hyphen.
604     %
605     % \newenvironment{opt}{%
606     % \begin{list}{}{\labelwidth2cm \leftmargin2.5cm \labelsep1em \rightmargin0pt
607     % \def\makelabel##1{\ttfamily##1 \hfill}}}{\end{list}}
608     % \textbf{Citation style:} whether or not a numerical or author--year system
609     % is to be used.
610     % \begin{opt}
611     % \item[--] default is numerical, standard \LaTeX, as for {\tt
612     % plain.bst}.\\
613     % |\bibitem{key}...|
614     % \item[cite] special for listing entire databases; the cite key is used
615     % as the label so it may be listed.\\
616     % |\bibitem[key]{key}...|
617     % \item[ay] for author--year style of citations. Various forms of |\bibitem|
618     % are provided under this option, to support different types
619     % of \LaTeX{} styles for interfacing with the author--year system.
620     % \item[alph] for \texttt{alpha.bst} style of citations; essentially numerical
621     % but an abbreviation of the author names plus year is used as
622     % the label.
623     % \end{opt}
624     %
625     % If \texttt{ay} has been selected, then the type of author--year interface
626     % is selectable. Some of these, like \texttt{natbib} and \texttt{harvard}
627     % exist in two versions because of updates in these systems.
628     % \begin{opt}
629     % \item[--] default is the system I invented for my \texttt{natbib.sty}.\\
630     % |\bibitem[author(year)]{key}...|
631     % \item[nat] for extended format of \texttt{natbib.sty} version 5.3\\
632     % |\bibitem[author(year)full author]{key}...|
633     % \item[alk] for the \texttt{apalike.sty} of Oren Patashnik and related
634     % systems\\
635     % |\bibitem[author, year]{key}...|
636     % \item[har] for the Harvard family of styles (with \texttt{harvard.sty}).\\
637     % |\harvarditem[short]{long}{year}{key}...|
638     % \item[harnm] for the extended Harvard family, containing some extra commands
639     % used by \LaTeXe\ version 2.0.3 of \texttt{harvard.sty}
640     % \item[ast] for astronomy family of styles (with \texttt{astron.sty}).\\
641     % |\bibitem[\protect\astroncite{author}{year}]{key}...|
642     % \item[cay] for the Chicago family of styles (with \texttt{chicago.sty}).\\
643     % |\bibitem[\protect\citeauthoryear{long}{short}{year}]{key}...|
644     % \item[nmd] for the `named' variant of Chicago (with \texttt{named.sty}).\\
645     % |\bibitem[\protect\citeauthoryear{author}{year}]{key}...|
646     % \item[cn] for the ``author--date'' group of styles (with {\tt
647     % authordate1-4.sty})\\
648     % |\bibitem[\protect\citename{author, }year]{key}...|
649     % \end{opt}
650     %
651     % \textbf{Sequence:} the order in which the references are listed.
652     % \begin{opt}
653     % \item[--] default is alphabetical by all authors, date, title
654     % \item[seq-yr] order by year, authors, title
655     % \item[seq-no] sequence by citation order
656     % \item[seq-lab] (author--year) by label, date, title (means that Daly
657     % precedes Daly and Williams, precedes Daly et al.)
658     % \item[seq-key] (author--year) like \texttt{seq-lab} except that for
659     % identical authors and year, the cite keyword is used
660     % instead of the title
661     % \item[vonx] ignore \emph{von} part of name when ordering (default is
662     % to consider \emph{von} as part of the whole surname)
663     % \end{opt}
664     %
665     % \textbf{Language selection:} the translations of certain explicit words.
666     % \begin{opt}
667     % \item[--] default is English, for \textsl{and}, \textsl{chapter},
668     % \textsl{editor}, etc.;
669     % \item[babel] replace words with \LaTeX{} commands that are defined
670     % in the file \texttt{babelbst.tex};
671     % \end{opt}
672     %
673     % If one of the external language definition files is used, then the name of
674     % its language should be in the list of active options. Many other language
675     % names are already included as options in this main file simply for the
676     % purpose of adding a comment at the start of the \texttt{.bst} file.
677     %
678     % \textbf{Names formatting:} how initials and surnames are to be combined.
679     % \begin{opt}
680     % \item[--] default is full names, given names first
681     % \item[nm-revf] full names, surname first
682     % \item[nm-init] initials plus surname
683     % \item[nm-rev] surname plus initials
684     % \item[nm-rev1] surname plus initials (1st name only) then initials
685     % plus surname
686     % \item[nm-revv1] same as \texttt{nm-rev1} but with full names
687     % \item[nm-rv] as \texttt{nm-rev}, but initials without dots
688     % \item[nm-rvv] as \texttt{nm-rev}, but initials without spaces
689     % \item[nm-rvx] as \texttt{nm-rev}, but initials without dots or spaces
690     % \item[ed-rev] editors' names are reversed the same as authors'
691     % \item[aunm-semi] a semi-colon is placed between author names instead of
692     % a comma
693     % \end{opt}
694     %
695     % \textbf{Number of names:} normally all names listed (in reference list)
696     % \begin{opt}
697     % \item[nmlm] limit number of names
698     % \item[x1...x9] (with \texttt{nmlm}) maximum number of names to appear
699     % \item[m1...m6] (with \texttt{nmlm}) minimum number before \textsl{et al.}
700     % written;
701     % no check for consistency is taken; one \texttt{x} and
702     % one \texttt{m} number must be given, and {\tt x}$\le${\tt m}
703     % \end{opt}
704     %
705     % \textbf{Names font:} in the reference list
706     % \begin{opt}
707     % \item[--] default is names in normal typeface
708     % \item[nmft-sc] names in small caps
709     % \item[nmft-it] names in italics
710     % \item[nmft-bf] names in bold
711     % \item[nmand-rm] `and' in normal font, not same as authors'.
712     % \end{opt}
713     %
714     % \textbf{Block punctuation:} between logical sections (not mutually
715     % exclusive)
716     % \begin{opt}
717     % \item[--] default is period after each logical section, including end
718     % \item[blk-com] use commas, except at very end (changes \textsl{In} to
719     % \textsl{in})
720     % \item[blk-tit] like \texttt{blk-com} except period follows titles of
721     % articles and books
722     % \item[blk-tita] like \texttt{blk-com} except period follows article title
723     % \item[com-semi] with \texttt{blk-com}, uses semi-colon instead of comma
724     % \item[com-blank] with \texttt{blk-com}, uses blanks instead of comma
725     % \item[in-col] puts a colon after \textsl{In} or \textsl{in} for edited works
726     % \item[in-x] suppresses the word \textsl{in} for edited works
727     % \item[fin-bare] no punctuation at the very end
728     % \item[au-col] puts a colon after the author/editor block
729     % \end{opt}
730     %
731     % \textbf{Date:} position and enclosure
732     % \begin{opt}
733     % \item[--] default is date at end, before notes; for author--year,
734     % date consists only of year, no month
735     % \item[dt-jnl] date at end as for default, except for journal articles
736     % where it follows the journal name as part of specification
737     % \item[dt-end] date goes after any notes
738     % \item[dt-beg] date goes after authors' names
739     % \item[yr-par] date in parentheses ()
740     % \item[yr-brk] date in brackets []
741     % \item[yr-com] date preceded by comma and space
742     % \item[yr-col] date preceded by colon and space
743     % \item[yr-per] date preceded by period and space
744     % \item[yr-blk] date preceded by space
745     % \item[dtrev] date as year month instead of month year
746     % \item[dtbf] date bold face
747     % \item[aymth] include month even for author-year
748     % \item[yrp-x] suppresses punctuation following month, year when date
749     % is just after authors
750     % \item[yrp-col] adds colon and space after date when just after authors
751     % \item[yrp-semi] adds semi-colon and space after date when just after authors
752     % \item[yrp-per] adds period and space after date
753     % \item[yrpp-xsp] removes blank following year punctuation
754     % \item[note-yr] permits text (like ``in press'') in the \texttt{year} field
755     % \end{opt}
756     %
757     % \textbf{Article in journal:} style of title, volume, pages
758     % \begin{opt}
759     % \item[--] default is: Title. \textit{Journal}, vol(num):p1--p2
760     % \item[volp-sp] as above, but with a space, vol(num):~p1--p2
761     % \item[volp-semi] semi-colon instead of colon: vol(num);~p1--p2
762     % \item[volp-com] comma and space instead of colon: vol(num),~p1--p2
763     % \item[volp-blk] only space instead of colon: vol(num)~p1--p2
764     % \item[volp-dt] date between volume and pages: vol(num), (1994) p1--p2
765     % \item[vol-bf] volume in bold
766     % \item[vol-it] volume in italics
767     % \item[vol-2bf] volume and number bold
768     % \item[vnum-x] no number for journals, only volume
769     % \item[vnum-sp] space between, as vol (num)
770     % \item[vnum-cm] replace vol(num) with vol, num
771     % \item[vnum-nr] replace vol(num) with vol, no. num
772     % \item[vnum-h] replace vol(num) with vol, \#num
773     % \item[vnum-dt] as vol (year) num
774     % \item[vnum-pg] as vol, (num)p1--(num)p2
775     % \item[jpg-1] only starting page given
776     % \item[jwdpg] include `page' or `pp' for articles
777     % \item[jwdvol] include `volume' or `vol' for articles
778     % \item[jnm-x] no punctuation after journal name
779     % \item[tit-it] article title in italics
780     % \item[tit-q] article title in single quotes
781     % \item[tit-qq] article title in double quotes
782     % \item[jtit-x] no article title (applies only to journals and
783     % collections)
784     % \item[atit-u] article title capitalized as in entry, default is
785     % sentence capitalization (first word and words following
786     % colons)
787     % \item[jxper] abbreviated journal names have periods removed, as
788     % `Phys Rev'
789     % \item[jttl-rm] name of journal not in italics
790     % \item[pp-last] pages appear at end, before any notes
791     % \end{opt}
792     %
793     % \textbf{Thesis title:} formatted like a book or article
794     % \begin{opt}
795     % \item[--] default is like a book title
796     % \item[thtit-a] titles of PhD and Master theses formatted like articles
797     % \end{opt}
798     %
799     % \textbf{Technical Report title:} formatted like book or article
800     % \begin{opt}
801     % \item[--] default is like an article title
802     % \item[trtit-b] titles of technical reports formatted like books
803     % \end{opt}
804     %
805     % \textbf{Books:} title font style, pages, and address location
806     % \begin{opt}
807     % \item[--] default is italicized
808     % \item[btit-rm] book title plain
809     % \item[bkpg-par] pages in books place in parentheses
810     % \item[add-pub] publisher's address before name, colon separated
811     % \item[pub-par] publisher and address in parentheses
812     % \item[pub-date] publisher with address and date in parentheses
813     % \item[pre-pub] publisher placed before chapter and page information
814     % \item[pre-edn] edition before publisher
815     % \end{opt}
816     %
817     % \textbf{ISBN number:} include or not
818     % \begin{opt}
819     % \item[--] default is no ISBN number
820     % \item[isbn] include an ISBN number as optional entry for books, booklets,
821     % incollections, inproceedings
822     % \end{opt}
823     %
824     % \textbf{Abbreviations:} of various words, default is no abbreviations
825     % \begin{opt}
826     % \item[pp] abbreviate \textsl{page(s)} as \textsl{p.} and \textsl{pp.}
827     % \item[ppx] no word \textsl{page(s)} or abbreviation
828     % \item[ed] abbreviate \textsl{editor(s)} as \textsl{ed.} and
829     % \textsl{eds.}
830     % \item[abr] abbreviate \textsl{volume}, \textsl{edition},
831     % \textsl{technical report}, etc.
832     % \item[mth-bare] months abbreviated without dots
833     % \item[jabr] abbreviate names of prestored journals
834     % \item[ord] write edition numbers as 1st, 2nd, instead as words.
835     % \end{opt}
836     %
837     % \textbf{Editor:} alternative for \emph{in edited} work
838     % \begin{opt}
839     % \item[--] ``in \emph{names}, editors, \emph{title}''
840     % \item[edpar] ``in \emph{names} (editors), \emph{title}''
841     % \item[edby] ``in \emph{title}, edited by \emph{names}''
842     % \item[edby-par] ``in \emph{title} (edited by \emph{names})''
843     % \item[edcap] (with \texttt{edby-par}) capitalizes ``Edited by'' or
844     % ``Editor''
845     % \item[edbyx] (with \texttt{edby} or \texttt{edby-par}) replaces text
846     % \textsl{edited by} by \textsl{editor(s)} before the names,
847     % \item[edbyy] (with \texttt{edby} or \texttt{edby-par}) replaces text
848     % \textsl{edited by} by \textsl{editor(s)} after the names,
849     % as ``in \emph{title}, \emph{names}, editors''.
850     % \end{opt}
851     %
852     % \textbf{Citation label:} what is written by the |\cite| command
853     % \begin{opt}
854     % \item[--] default is no special font
855     % \item[lab-it] label (names printed by |\cite|) in italics
856     % \item[lab-sc] label in small caps
857     % \item[lab-bf] label in bold face
858     % \item[and-rm] word `and' in labels in normal font
859     % \item[xlab-it] extra label (letter after year) in italics
860     % \end{opt}
861     %
862     % \textbf{Emphasis:} defines what `italicized' really means
863     % \begin{opt}
864     % \item[--] default is |\em| (can switch between |\it|
865     % and |\rm|
866     % \item[em-it] use |\it| instead (always italic)
867     % \item[em-x] no emphasis
868     % \end{opt}
869     %
870     % \textbf{Special punctuation:}
871     % \begin{opt}
872     % \item[amper] use \& in place of \textsl{and}
873     % \item[varand] use command |\BIBand| in place of \textsl{and}
874     % \item[and-xcom] no comma before last \textsl{and} of an author list
875     % (citations and references)
876     % \item[and-com] add comma before \textsl{and} even for two authors (in list of
877     % references)
878     % \item[xand] no \textsl{and} in an author list (references)
879     % \item[etal-it] \textsl{et al.} in italics
880     % \item[etal-rm] \textsl{et al.} in roman
881     % \end{opt}
882     %
883     % \textbf{Font commands:}
884     % \begin{opt}
885     % \item[--] use \LaTeX~2.09 font commands
886     % \item[nfss] use |\textbf|, |\textit|, |\emph| in place of |\bf|, |\it|,
887     % and |\em|; only works then with \LaTeXe
888     % \end{opt}
889     %
890     % \section{The Menu Information}\label{sec:menu}
891     % Here I describe the options and menu information for this particular
892     % master file \texttt{\filename}. To construct a \dtx{} driver file
893     % to generate a desired \texttt{.bst} file, simply process \texttt{makebst.tex}
894     % with \TeX\ or \LaTeX, and give
895     % \begin{quote}\tt\filename\end{quote}
896     % when prompted for the name of the master file. Then answer the questions
897     % in the menus that follow. The menu information is extracted from here.
898     %
899     % All the menu information is nested between \dtx{} guard options
900     % |%<*options>| \dots\ |%</options>|, and the last command is
901     % |\endoptions|. The rest of the file is nested between
902     % \begin{quote}
903     % |%<*!options&!driver&!bblbst>| \dots\ |</!options&!driver&!bblbst>|
904     % \end{quote}
905     % in order to exclude it if \dtx{} is used to
906     % extract the menu information, the documentation driver, or the
907     % \texttt{babelbst.tex} file.
908     %
909     % The main coding is divided into two sections, the \emph{head} and
910     % \emph{tail}; in between come any external language or journal name
911     % support files. The head part is marked with the \dtx{} guard option
912     % |<!tail>| and the tail with |<!head>|. This roundabout means of doing
913     % things makes it possible to process \texttt{\filename} with \texttt{.dbj}
914     % files that were generated for the older \texttt{genbst.mbs} file by
915     % simply changing the name of the source file as shown in
916     % Section~\ref{sec:update}. If both \texttt{head} and \texttt{tail} (and
917     % \texttt{exlang}) options are omitted, as they are in the older
918     % \texttt{.dbj} files, \texttt{\filename} is processed completely in one
919     % pass. To include external files, two passes are needed, one for each
920     % part, with the external file(s) coming in between.
921     %
922     % Note too that if the internal language commands are taken (i.e., if
923     % \texttt{exlang} option is not given) then the default language is
924     % English, which is tested for as |<!babel>|. This too permits the simple
925     % update of older \texttt{.dbj}, at least for English.
926     %
927     % \subsection*{Selecting Language}
928     % Explicit words in the bibliography style, such as \textsl{and},
929     % \textsl{editor}, etc.,
930     % are represented by functions \texttt{bbl.and}, \texttt{bbl.editor}, and so on.
931     % By default these functions translate to the normal English text, but
932     % other languages are also possible.
933     %
934     % The definitions of these functions for other languages are contained in
935     % external files. At this point, we can make use of features in
936     % \texttt{makebst} (version~3.0 or later) to ask for the name of such a
937     % definition file, and store it in |\cfile|. If no external file is
938     % specified, then the internal definitions are taken, for which there are
939     % two possibilities: English or \LaTeX{} commands (Babel).
940     %
941     % The commands |\MBswitch|, |\mes|, |\MBaskfile|, |\wr|, |\pc|, |\spsp| are
942     % defined in \texttt{makebst.tex}.
943     %
944     % If |\MBswitch| does not exist, then the version of \texttt{makebst}
945     % cannot support external files.
946     %
947     % \begin{macrocode}
948     %<*options>
949     \mes{<<< For more information about the meanings of^^J%
950     <<< the various options, see the section on ^^J%
951     <<< Menu Information in the .mbs file documentation.}
952    
953     \mes{^^JEXTERNAL FILES:}
954     \expandafter\ifx\csname MBswitch\endcsname\relax
955     \mes{^^J**************^^J%
956     Makebst version is less than 3.0^^J%
957     Cannot add external file for language definition^^J%
958     **************}
959     \def\cfile{}\def\jfile{}\else
960     \MBaskfile{^^JName of language definition file}(\mroot.\mext)i\cfile
961     \edef\ctemp{\mroot.\mext}
962     \ifx\ctemp\cfile\def\cfile{}\fi
963     % \end{macrocode}
964     %
965     % A second type of external file that can be added is one containing names
966     % of journals that are to be prestored into the \texttt{.bst} file.
967     % Several file names are allowed here, with the root names separated by
968     % commas, and with the common extension added at the end. To assist later
969     % parsing of the names, an additional comma is added before the extension.
970     %
971     % Note that in this case |\MBaskfile| treats the file(s) as output, i.e.,
972     % it does not check if the file(s) actually exist.
973     %
974     % The macro |\Mgetnext| allows the root names to be extracted from the
975     % list of file names.
976     % \begin{macrocode}
977     \def\jfile{}
978     \ask{\yn}{^^JInclude file(s) for extra journal names? (NO)}
979     \if!\yn!\else\if\yn n\else\if\yn N\else
980     \MBaskfile{^^JFile to include}(physjour,photjour.mbs)o\jfile
981     \edef\jfile{\froot,.\fext}
982     \fi\fi\fi
983     \fi
984     \def\Mgetnext#1,#2.#3??{\def\froot{#1}\def\Mrest{#2}\def\fext{#3}}
985     % \end{macrocode}
986     %
987     % If no external files are specified, then both |\cfile| and |\jfile| are
988     % empty. In this case, do \emph{not} set the options \texttt{head} and
989     % \texttt{tail}, which control the \dtx{} passes through
990     % \texttt{filename}. Now only one pass is made.
991     %
992     % If there is an external definition file, or if an external list of
993     % journal names, then some extra text must be
994     % written to fit in with that already written by \texttt{makebst}. This is
995     % explained in that documentation. The |\MBswitch| command turns the curly
996     % braces |{..}| into normal characters, and the parentheses |(..)| take on
997     % their grouping functionality. This permits unbalances braces to be
998     % written to the output file.
999     %
1000     % \begin{macrocode}
1001     \if!\cfile\jfile!\else
1002     \begingroup\MBswitch
1003     \wr(\spsp head,\string\MBopta})
1004     \if!\cfile!\else
1005     \wr(\string\from{\cfile}{\string\MBopta})
1006     \fi
1007     \if!\jfile!\else
1008     \let\jxfile\jfile
1009     \loop
1010     % \end{macrocode}
1011     %
1012     % Parse the list of journal name files, adding a new |\from| for each one.
1013     %
1014     % \begin{macrocode}
1015     \expandafter\Mgetnext\jxfile??
1016     \wr(\string\from{\froot.\fext}{\string\MBopta})
1017     \edef\jxfile(\Mrest.\fext)
1018     \if!\Mrest!\def\Mtst(1)\else\def\Mtst()\fi
1019     \if!\Mtst!
1020     \repeat
1021     \fi
1022     \wr(\string\from{\mroot.\mext}{tail,\string\MBopta}})
1023     \wr(\string\def\string\MBopta{\pc)
1024     \endgroup
1025     \fi
1026     % \end{macrocode}
1027     %
1028     % Ask whether
1029     % explicit English words wanted or \LaTeX{} commands whose definitions are
1030     % to be found in the file \texttt{babelbst.tex}.
1031     %
1032     % \begin{macrocode}
1033     \if!\cfile!
1034     \mes{^^JINTERNAL LANGUAGE SUPPORT:}
1035     \optdef{*}{}{English}{words used explicitly}
1036     \optdef{b}{babel}{Babel}{(words replaced by commands defined in babelbst.tex)}
1037     \getans
1038     \else
1039     \wr{\spsp\spsp\sep exlang\pc: External language file}
1040     \def\sep{,}
1041     \fi
1042     % \end{macrocode}
1043     %
1044     % \subsection*{Author--year or numerical}
1045     % The first question is whether a numerical or author--year citation style
1046     % is to be used. If the latter, the supporting system is my {\tt
1047     % natbib.sty}, which expects |\bibitem| to have an optional argument
1048     % containing the short form of the authors, plus year in parentheses.
1049     % E.g.,
1050     % \begin{quote}
1051     % |\bibitem[Daly et al.(1990)]{key}...|
1052     % \end{quote}
1053     % There is now a newer version of \texttt{natbib.sty} (v5.3) that
1054     % supports an optional full author list too, as
1055     % \begin{quote}
1056     % |\bibitem[Daly et al.(1990)Daly, Keppler, and Williams]{key}...|
1057     % \end{quote}
1058     % Other systems are also supported, such as the Harvard family of
1059     % bibliography styles (with \texttt{harvard.sty}), which have entries in the
1060     % form
1061     % \begin{quote}
1062     % |\harvarditem[Daly et al.]{Daly, Keppler,|\\
1063     % | and Williams}{1990}{key}...|
1064     % \end{quote}
1065     % or the astronomy family (with \texttt{astron.sty}) with entries like
1066     % \begin{quote}
1067     % |\bibitem[\protect\astroncite{Daly et al.}{1990}]{key}...|
1068     % \end{quote}
1069     % or the Chicago family (with \texttt{chicago.sty}) with entries like
1070     % \begin{quote}
1071     % |\bibitem[\protect\citeautheryear{Daly, Keppler, and|\\
1072     % | Williams}{Daly et al.}{1990}]{key}...|
1073     % \end{quote}
1074     % or the `named' variant of Chicago (with \texttt{named.sty}) with entries like
1075     % \begin{quote}
1076     % |\bibitem[\protect\citeauthoryear{Daly et al.}{1990}]{key}...|
1077     % \end{quote}
1078     % or the so-called ``author--date'' group (with \texttt{authordate1-4.sty})
1079     % with entries of the form
1080     % \begin{quote}
1081     % |\bibitem[\protect\citename{Daly et al.}1990]{key}...|
1082     % \end{quote}
1083     % Finally, there is the \texttt{apalike} format of Oren Patashnik, for use
1084     % with \texttt{apalike.sty} that has entries of the form
1085     % \begin{quote}
1086     % |\bibitem[Daly et al., 1990]{key}...|
1087     % \end{quote}
1088     %
1089     % In addition to numerical or author--year citation styles, there is also a
1090     % \texttt{cite} style available in which the label is the same as the cite
1091     % key. This is for listing entire contents of databases with the cite key
1092     % visible.
1093     %
1094     % A flag |\ifnumerical| is established because some of the following menu
1095     % features depend on which system is to be used.
1096     %
1097     % \begin{macrocode}
1098     \newif\ifnumerical \numericalfalse
1099     \newif\ifmytemp\mytempfalse
1100     \mes{^^JSTYLE OF CITATIONS:}
1101     \optdef{*}{}{Numerical}{as in standard LaTeX}
1102     \optdef{a}{ay}{Author-year}{with some non-standard interface}
1103     \optdef{b}{alph}{Alpha style}{(labels like DAL90)}
1104     \optdef{c}{cite}{Cite key}{(special for listing contents of bib file)}
1105     \getans
1106     \numericaltrue
1107     \if\ans a\numericalfalse\fi
1108     \mytemptrue
1109     \if\ans b\mytempfalse\fi
1110    
1111     \ifnumerical\else
1112     \mes{^^JAUTHOR--YEAR SUPPORT SYSTEM:}
1113     \optdef{*}{nat}{Natbib}{for use with natbib.sty v5.3}
1114     \optdef{o}{}{Older Natbib}{without full authors citations}
1115     \optdef{l}{alk}{Apalike}{for use with apalike.sty}
1116     \optdef{h}{har}{Harvard}{system with harvard.sty}
1117     \optdef{a}{ast}{Astronomy}{system with astron.sty}
1118     \optdef{c}{cay}{Chicago}{system with chicago.sty}
1119     \optdef{n}{nmd}{Named}{system with named.sty}
1120     \optdef{d}{cn}{Author-date}{system with authordate1-4.sty}
1121     \getans
1122    
1123     % \end{macrocode}
1124     % The \texttt{harvard} family has been extended for \LaTeXe, and the new
1125     % \texttt{.bst} files allow the word \textsl{and} and the brackets around years
1126     % to be variable with commands. A URL entry is added, for the on-line
1127     % network reference. These features may be added too.
1128     % \begin{macrocode}
1129     \if\ans h%
1130     \mes{^^JHARVARD EXTENSIONS INCLUDED:}
1131     \optdef{*}{harnm}{With Harvard extensions}{for LaTeX2e version of harvard.sty}
1132     \optdef{n}{}{Older Harvard}{style, for LaTeX 2.09}
1133     \getans\fi
1134     \fi
1135    
1136     % \end{macrocode}
1137     %
1138     % \subsection*{Ordering of the listed references}
1139     % Choices here depend on citation style. The default in both cases is
1140     % alphabetical order of all authors. For numerical style, one may also
1141     % choose an unsorted order, which means the order is the same as the original
1142     % citations. This corresponds to \texttt{unsrt.bst}. Order of citation is
1143     % also offered for author--year for \texttt{natbib}-type styles that can
1144     % also be used for numerical listings.
1145     %
1146     % Another possibility is to order first by year, then authors. This too only
1147     % makes sense for numerical citations. However, it is offered for author--year
1148     % in the event that a \texttt{natbib}-type style is used for numerical
1149     % listings.
1150     %
1151     % For the alpha style, the ordering is by label only, so no option is
1152     % offered here (|\ifnumerical| is \meta{true} and |\ifmytemp| is \meta{false}).
1153     %
1154     % For author--year, the second choice is by label. (The label is the
1155     % optional |\bibitem| argument, and is what is printed in place of the
1156     % |\cite| command.) With this option, all the papers with the same first
1157     % author are ordered so that the one-author papers come first, followed by
1158     % the two-author papers, followed by the multiple-author papers. This is a
1159     % more sensible system for author--year citations, and is demanded by some
1160     % journals (like JGR).
1161     %
1162     % One problem that can arise here is when two or more references have the
1163     % same set of authors and year; normally they are then ordered by the
1164     % title, ignoring initial words like \textsl{the} and \textsl{a}, with the
1165     % letters a, b,
1166     % c, \dots, added to the year. This can mean that a set of references with
1167     % a natural sequence will be put into a different order. An alternative is
1168     % to order them by the citation keyword instead of by title. This of course
1169     % assumes that the keywords in this case reflect that natural sequence.
1170     % \begin{macrocode}
1171     \ifnumerical
1172     \ifmytemp
1173     \mes{^^JORDERING OF REFERENCES:}
1174     \optdef{*}{}{Alphabetical}{by all authors}
1175     \optdef{c}{seq-no}{Citation order}{(unsorted, like unsrt.bst)}
1176     \optdef{d}{seq-yr}{Year ordered}{and then by authors}
1177     \getans
1178     \fi
1179     \else
1180     \mes{^^JORDERING OF REFERENCES:}
1181     \optdef{*}{}{Alphabetical}{by all authors}
1182     \optdef{l}{seq-lab}{By label}%
1183     {(Jones before Jones and James before Jones et al)}
1184     \optdef{k}{seq-key}{By label and cite key}{instead of label and title, as above}
1185     \optdef{d}{seq-yr}{Year ordered}{and then by authors (for publication lists)}
1186     \optdef{c}{seq-no}{Citation order}{(unsorted, only meaningful for numericals)}
1187     \getans
1188     \fi
1189    
1190     % \end{macrocode}
1191     % The standard \btx\ styles consider the \emph{von} part of the name to be a
1192     % fixed part of the surname. European usage tends to alphabetize ignoring these
1193     % honorifics.
1194     % \begin{macrocode}
1195     \if\ans c\else
1196     \mes{^^JORDER ON VON PART:}
1197     \optdef{*}{}{Sort on von part}{(de la Maire before Defoe)}
1198     \optdef{x}{vonx}{Sort without von part}{(de la Maire after Mahone)}
1199     \getans
1200     \fi
1201    
1202     % \end{macrocode}
1203     %
1204     % \subsection*{Formatting author names}
1205     % The default is that the full names of the authors are listed, given names
1206     % first, unabbreviated. Of course, if only the initials have been given in
1207     % the \texttt{.bib} file, then that is all that can appear in the list. Other
1208     % possibilities are to use initials (even if full names in the \texttt{.bib}
1209     % file) either before or after the surnames. A specialty of the journals of
1210     % the American Geophysical Union is to have only the first name with
1211     % reversed initials.
1212     %
1213     % If the reference is part of a larger work with editors, then the editor
1214     % names appear later in the reference text, usually as ``edited by \dots''
1215     % or as ``\emph{names} (editors)''. In these cases, the editor names are
1216     % not usually reversed (surname first) even if the authors' names are.
1217     % An option is provided to format such editor names exactly as the authors'.
1218     % \begin{macrocode}
1219     \mes{^^JAUTHOR NAMES:}
1220     \optdef{*}{}{Full, surname last}{(John Frederick Smith)}
1221     \optdef{f}{nm-revf}{Full, surname first}{(Smith, John Frederick)}
1222     \optdef{i}{nm-init}{Initials + surname}{(J. F. Smith)}
1223     \optdef{r}{nm-rev}{Surname + initials}{(Smith, J. F.)}
1224     \optdef{s}{nm-rv}{Surname + dotless initials}{(Smith J F)}
1225     \optdef{x}{nm-rvx}{Surname + pure initials}{(Smith JF)}
1226     \optdef{y}{nm-rvv}{Surname + spaceless initials}{(Smith J.F.)}
1227     \optdef{a}{nm-rev1}{Only first name reversed, initials}%
1228     {(AGU style: Smith, J. F., H. K. Jones)}
1229     \optdef{b}{nm-revv1}{First name reversed, with full names}%
1230     {(Smith, John Fred, Harry Kab Jones)}
1231     \getans
1232    
1233     \mytempfalse
1234     \if\ans r\mytemptrue\fi
1235     \if\ans s\mytemptrue\fi
1236     \if\ans a\mytemptrue\fi
1237     \if\ans f\mytemptrue\fi
1238     \if\ans x\mytemptrue\fi
1239     \if\ans y\mytemptrue\fi
1240     \ifmytemp
1241     \mes{^^JEDITOR NAMES IN COLLECTIONS:}
1242     \if\ans r
1243     \optdef{*}{}{Editor names NOT reversed}{as edited by J. J. Smith}
1244     \fi
1245     \if\ans s
1246     \optdef{*}{}{Editor names NOT reversed}{as edited by J J Smith}
1247     \fi
1248     \if\ans a
1249     \optdef{*}{}{Editor names NOT reversed}{as edited by J. J. Smith}
1250     \fi
1251     \if\ans x
1252     \optdef{*}{}{Editor names NOT reversed}{as edited by JJ Smith}
1253     \fi
1254     \if\ans f
1255     \optdef{*}{}{Editor names NOT reversed}{as edited by John James Smith}
1256     \fi
1257     \if\ans y
1258     \optdef{*}{}{Editor names NOT reversed}{as edited by J.J. Smith}
1259     \fi
1260     \optdef{r}{ed-rev}{Editor names reversed}{just like authors'}
1261     \getans
1262     \fi
1263    
1264     \mes{^^JPUNCTUATION BETWEEN AUTHOR NAMES:}
1265     \optdef{*}{}{Author names separated by commas}{}
1266     \optdef{s}{aunm-semi}{Names separated by semi-colon}{}
1267     \getans
1268    
1269     % \end{macrocode}
1270     %
1271     % \subsection*{Number of authors}
1272     % Normally the complete list of authors as given in the \texttt{.bib} file is
1273     % presented in the reference list. However, some journals prefer to limit
1274     % them to a maximum. If there are more than this maximum number of author
1275     % names, then a minimum number plus \textsl{et al.} are listed.
1276     %
1277     % Because no test for consistency of the numbers is carried out in the
1278     % \texttt{.bst} file itself (it might be possible, but I found it too complex),
1279     % this is done here.
1280     % \begin{macrocode}
1281     \mes{^^JNUMBER OF AUTHORS:}
1282     \optdef{*}{}{All authors}{included in listing}
1283     \optdef{l}{nmlm}{Limited authors}{(et al replaces missing names)}
1284     \getans
1285     \if\ans l
1286     \loop
1287     \ask{\num}{Maximum number of authors (1-9)}
1288     \ifnum\num>9\relax
1289     \mes{*** Must be between 1 and 9}
1290     \repeat
1291     \wr{\spsp\spsp\sep x\num\pc: Maximum of \num\space authors}
1292     \mes{\spsp You have selected maximum \num\space authors}
1293     \ifnum\num>6\def\numx{6}\else\edef\numx{\num}\fi
1294     \loop
1295     \ask{\num}{Minimum number (before et al given) (1-\numx)}
1296     \ifnum\num>\numx
1297     \mes{*** Must be between 1 and \numx}
1298     \repeat
1299     \wr{\spsp\spsp\sep m\num\pc: Minimum of \num\space authors}
1300     \mes{\spsp You have selected minimum \num\space authors}
1301     \fi
1302    
1303     % \end{macrocode}
1304     %
1305     % \subsection*{Typeface of names}
1306     % The author names in the list of references normally appear in the current
1307     % typeface. This may be changed to small caps, bold, or italics.
1308     % \begin{macrocode}
1309     \mes{^^JTYPEFACE FOR AUTHORS IN LIST OF REFERENCES:}
1310     \optdef{*}{}{Normal font for authors}{}
1311     \optdef{s}{nmft-sc}{Small caps authors}{(\string\sc)}
1312     \optdef{i}{nmft-it}{Italic authors}{(\string\it\space or \string\em)}
1313     \optdef{b}{nmft-bf}{Bold authors}{(\string\bf)}
1314     \getans
1315    
1316     \mytempfalse
1317     \if\ans i\mytemptrue\fi
1318     \if\ans s\mytemptrue\fi
1319     \if\ans b\mytemptrue\fi
1320     \ifmytemp
1321     \mes{^^JFONT FOR `AND' THE IN LIST:}
1322     \optdef{*}{}{`And' in author font}{(JONES AND JAMES)}
1323     \optdef{r}{nmand-rm}{`And' in normal font}{(JONES and JAMES)}
1324     \getans
1325     \fi
1326    
1327     % \end{macrocode}
1328     %
1329     % \subsection*{Position of date}
1330     % This applies to author--year style only. It makes sense to put the date
1331     % immediately after the author list, since the two items (author and year)
1332     % are the identifiers of the reference. Default position is at the
1333     % end of the references, before any notes. It is also possible to place
1334     % it even after the notes.
1335     %
1336     % Medical journals have a system where the date is part of the journal
1337     % specification, as Lancet 1994;45(2):34--40. Otherwise the date appears at
1338     % the end.
1339     % \begin{macrocode}
1340     \mes{^^JDATE POSITION:}
1341     \optdef{*}{}{Date at end}{}
1342     \optdef{b}{dt-beg}{Date after authors}{}
1343     \optdef{j}{dt-jnl}{Date part of journal spec.}{(as 1994;45:34-40) else at end}
1344     \optdef{e}{dt-end}{Date at very end}{after any notes}
1345     \getans
1346    
1347     \if\ans b\mytemptrue\else\if\ans j\mytemptrue\else\mytempfalse\fi\fi
1348     % \end{macrocode}
1349     %
1350     % \subsection*{Format of date}
1351     % The year may be enclosed in parentheses, brackets, or preceded by a
1352     % colon. If none of these are selected, the date (month plus year) appears.
1353     % For author--year, the date normally consists only of the year, no month,
1354     % but this may be overridden.
1355     %
1356     % If the date comes just after the authors, then one might want special
1357     % punctuation following it, like a colon, or space only. The latter is
1358     % probably desirable if the date is brackets or parentheses.
1359     %
1360     % The date can even be put into bold face.
1361     % \begin{macrocode}
1362     \ifnumerical
1363     \mes{^^JDATE FORMAT:}
1364     \optdef{*}{}{Plain month and year}{without any brackets}
1365     \optdef{p}{yr-par}{Date in parentheses}{as (May 1993)}
1366     \optdef{b}{yr-brk}{Date in brackets}{as [May 1993]}
1367     \optdef{c}{yr-col}{Date preceded by colon}{as `: May 1993'}
1368     \optdef{d}{yr-per}{Date preceded by period}{as `. May 1993'}
1369     \optdef{m}{yr-com}{Date preceded by comma}{as `, May 1993'}
1370     \optdef{s}{yr-blk}{Date preceded by space}{only, as ` May 1993'}
1371     \getans
1372    
1373     \mes{^^JREVERSED DATE:}
1374     \optdef{*}{}{Date as month year}{}
1375     \optdef{r}{dtrev}{Date as year month}{}
1376     \getans
1377     \else
1378     \mes{^^JDATE FORMAT: (no months for author-year)}
1379     \optdef{*}{}{Year plain}{without any brackets}
1380     \optdef{p}{yr-par}{Year in parentheses}{as (1993)}
1381     \optdef{b}{yr-brk}{Year in brackets}{as [1993]}
1382     \optdef{c}{yr-col}{Year preceded by colon}{as `: 1993'}
1383     \optdef{d}{yr-per}{Year preceded by period}{as `. 1993'}
1384     \optdef{m}{yr-com}{Date preceded by comma}{as `, 1993'}
1385     \optdef{s}{yr-blk}{Year preceded by space}{only, as ` 1993'}
1386     \getans
1387    
1388     \mes{^^JINCLUDE MONTHS:}
1389     \optdef{*}{}{Date is year only}{without the month}
1390     \optdef{m}{aymth}{Include month in date}{}
1391     \getans
1392    
1393     \if\ans m
1394     \mes{^^JREVERSED DATE:}
1395     \optdef{*}{}{Date as month year}{}
1396     \optdef{r}{dtrev}{Date as year month}{}
1397     \getans
1398     \fi
1399     \fi
1400    
1401     \ifmytemp
1402     \mes{^^JDATE PUNCTUATION:}
1403     \optdef{*}{}{Date with standard block punctuation}{(comma or period)}
1404     \optdef{c}{yrp-col}{Colon after date}{as 1994:}
1405     \optdef{s}{yrp-semi}{Semi-colon after date}{as 1994;}
1406     \optdef{p}{yrp-per}{Period after date}{even when blocks use commas}
1407     \optdef{x}{yrp-x}{No punct. after date}{}
1408     \getans
1409    
1410     \mes{^^JBLANK AFTER DATE:}
1411     \optdef{*}{}{Space after date}{and punctuation}
1412     \optdef{x}{yrpp-xsp}{No space after date}{as 1994:45}
1413     \getans
1414    
1415     \fi
1416    
1417     \mes{^^JDATE FONT:}
1418     \optdef{*}{}{Date in normal font}{}
1419     \optdef{b}{dtbf}{Date in bold face}{}
1420     \getans
1421    
1422     % \end{macrocode}
1423     %
1424     % Normally in author--year citations, the \texttt{year} entry is truncated
1425     % to the last 4 characters, which should be the 4 digits of the year. Some
1426     % users have requested the possibility of suppressing this truncation so
1427     % that they may put text in the \texttt{year} field, such as ``in press.''
1428     % Another use for it is when years are given as ``1968--72''. Actually,
1429     % I have no idea why the year should be truncated at all.
1430     % \begin{macrocode}
1431     \ifnumerical\else
1432     \mes{^^JTRUNCATE YEAR:}
1433     \optdef{*}{note-yr}{Year text full}{as 1990--1993 or `in press'}
1434     \optdef{t}{}{Year truncated}{to last 4 digits}
1435     \getans
1436     \fi
1437    
1438     % \end{macrocode}
1439     %
1440     % \subsection*{Article title in journal}
1441     % The title of an article in a journal or in a collection (a book, or
1442     % conference proceedings) may appear plain, in italics, within single
1443     % or double quotes.
1444     %
1445     % Furthermore, it may have sentence capitalization (first
1446     % word and word following colon) or be capitalized as in the \texttt{.bib} file
1447     % entry. That is why it is recommended to capitalize the entry text as it
1448     % should appear when fully capitalized, putting words that are always
1449     % capitalized in braces. Example:
1450     % \begin{quote}
1451     % |TITLE="The Results of the {Giotto} Mission"|
1452     % \end{quote}
1453     % which produces either ``The results of the Giotto mission'' or ``The
1454     % Results of the Giotto Mission'', depending on option.
1455     %
1456     % Additionally, the article titles may be fully suppressed.
1457     % \begin{macrocode}
1458     \mes{^^JTITLE OF ARTICLE:}
1459     \optdef{*}{}{Title plain}{with no special font}
1460     \optdef{i}{tit-it}{Title italic}{(\string\em)}
1461     \optdef{q}{tit-q}{Title in single quotes}{(`Title')}
1462     \optdef{d}{tit-qq}{Title in double quotes}{(``Title'')}
1463     \getans
1464    
1465     \mes{^^JCAPITALIZATION OF ARTICLE TITLE:}
1466     \optdef{*}{}{Sentence style}{(first word and those in braces)}
1467     \optdef{t}{atit-u}{Title style}{(just as in bib entry)}
1468     \getans
1469    
1470     \mes{^^JARTICLE TITLE PRESENT:}
1471     \optdef{*}{}{Article title present}{in journals and proceedings}
1472     \optdef{x}{jtit-x}{No article title}{}
1473     \getans
1474    
1475     % \end{macrocode}
1476     %
1477     % \subsection*{Journal names}
1478     % Abbreviated journal names normally contain periods; the periods may be
1479     % removed with this option. In fact, only letters, numbers, and spacing are
1480     % retained.
1481     % \begin{macrocode}
1482     \mes{^^JJOURNAL NAMES:}
1483     \optdef{*}{}{Periods in journal names}{are retained, as `Phys. Rev.'}
1484     \optdef{x}{jxper}{Dotless journal names}{as `Phys Rev'}
1485     \getans
1486    
1487     % \end{macrocode}
1488     % Journal title is normally printed in italics; can be left in normal font.
1489     % \begin{macrocode}
1490     \mes{^^JJOURNAL TITLE FONT:}
1491     \optdef{*}{}{Journal title italics}{}
1492     \optdef{r}{jttl-rm}{Journal title normal}{font}
1493     \getans
1494    
1495     % \end{macrocode}
1496     %
1497     % \subsection*{Title of Theses and Technical Reports}
1498     % The title of a these (PhD or Master's) is normally treated the same
1499     % as that of a book. Optionally, it may be formatted like that of
1500     % an article.
1501     %
1502     % The title of a technical report is normally treated the same as that
1503     % of an article. Optionally, it may be formatted like that of a book.
1504     %
1505     % \begin{macrocode}
1506     \mes{^^JTHESIS TITLE:}
1507     \optdef{*}{}{Thesis titles like books}{}
1508     \optdef{a}{thtit-a}{Thesis title like article}{}
1509     \getans
1510    
1511     \mes{^^JTECHNICAL REPORT TITLE:}
1512     \optdef{*}{}{Tech. report title like articles}{}
1513     \optdef{b}{trtit-b}{Tech. report title like books}{}
1514     \getans
1515    
1516     % \end{macrocode}
1517     %
1518     % \subsection*{Journal reference}
1519     % Great diversity of opinion exists as to how a journal reference is to be
1520     % formatted. It consists of a volume, possibly a number, and page limits.
1521     % The number is really only necessary if the page numbers within one volume
1522     % start at 1 for each physical `number'. Since journals are often bound
1523     % together in one volume later, it makes more sense to number the pages
1524     % continuously through the whole volume. However, this is not always so,
1525     % and then the `number' is necessary for the full specification.
1526     %
1527     % A number of styles for journal specifications are
1528     % \begin{quote}
1529     % \begin{tabular}{l@{\qquad}l}
1530     % 21(2):33--55 & 21, no.\ 2: 33--55\\
1531     % \textbf{21}(2):33--55 & \textbf{21}, \#2, 33--55\\
1532     % \textit{21}(2), 33--55 & \textit{21} (2); 33--55 \\
1533     % 21(2) (1995) 33--55 & 21, (2)33--(2)55\\
1534     % 21(2) 33--55 & vol.~21 (2), pp.~33--55
1535     % \end{tabular}
1536     % \end{quote}
1537     %
1538     % Here both start and stop page numbers have been given; often only the
1539     % start page is wanted.
1540     %
1541     % \begin{macrocode}
1542     \mes{^^JJOURNAL VOLUME NUMBER:}
1543     \optdef{*}{}{Volume plain}{as vol(num)}
1544     \optdef{i}{vol-it}{Volume italic}{as {\string\em\space vol}(num)}
1545     \optdef{b}{vol-bf}{Volume bold}{as {\string\bf\space vol}(num)}
1546     \optdef{d}{vol-2bf}{Volume and number bold}{as {\string\bf\space vol(num)}}
1547     \getans
1548    
1549     % \end{macrocode}
1550     %
1551     % The form of the `number' is also given: in parentheses, with `no.',
1552     % with \#, or omitted.
1553     % \begin{macrocode}
1554     \mes{^^JJOURNAL VOL AND NUMBER:}
1555     \optdef{*}{}{Journal vol(num)}{as 34(2)}
1556     \optdef{s}{vnum-sp}{Journal vol (num)}{as 34 (2)}
1557     \optdef{c}{vnum-cm}{Journal vol, num}{as 34, 2}
1558     \optdef{n}{vnum-nr}{Journal vol, no. num}{as 34, no. 2}
1559     \optdef{h}{vnum-h}{Journal vol, \string\# number}{as 34, \string\#2}
1560     \optdef{p}{vnum-pg}{Journal vol, number(page)}{as 34, (2)33}
1561     \optdef{d}{vnum-dt}{Journal vol (year) num}{as 34 (1994) 2}
1562     \optdef{x}{vnum-x}{Journal vol, no number}{as 34}
1563     \getans
1564    
1565     \mes{^^JVOLUME PUNCTUATION:}
1566     \optdef{*}{}{Volume with colon}{as vol(num):ppp}
1567     \optdef{s}{volp-sp}{Volume with colon and space}{as vol(num): ppp}
1568     \optdef{h}{volp-semi}{Volume with semi-colon}{as vol(num); ppp}
1569     \optdef{c}{volp-com}{Volume with comma}{as vol(num), ppp}
1570     \optdef{b}{volp-blk}{Volume with blank}{as vol(num) ppp}
1571     \optdef{d}{volp-dt}{Volume with date}{as vol(num), date ppp}
1572     \getans
1573    
1574     \mes{^^JPAGE NUMBERS:}
1575     \optdef{*}{}{Start and stop page numbers}{given}
1576     \optdef{f}{jpg-1}{Only start page number}{}
1577     \getans
1578    
1579     \mes{^^JWORD `PAGE' IN ARTICLES:}
1580     \optdef{*}{}{Article pages numbers only}{as 234-256}
1581     \optdef{p}{jwdpg}{Include `page' in articles}{as pp. 234--256}
1582     \getans
1583    
1584     % \end{macrocode}
1585     %
1586     % Some journals want page numbers at the end, even for books, proceedings, as
1587     % well as for journals.
1588     % \begin{macrocode}
1589     \mes{^^JPOSITION OF PAGES:}
1590     \optdef{*}{}{Pages given mid text}{as is normal}
1591     \optdef{e}{pp-last}{Pages at end}{but before any notes}
1592     \getans
1593    
1594     \mes{^^JWORD `VOLUME' IN ARTICLES:}
1595     \optdef{*}{}{Article volume as number only}{as 21}
1596     \optdef{p}{jwdvol}{Include `volume' in articles}{as vol. 21}
1597     \getans
1598    
1599     % \end{macrocode}
1600     %
1601     % It is possible to decide whether the journal name should be
1602     % separated from the following specifications with a blank or comma.
1603     % \begin{macrocode}
1604     \mes{^^JJOURNAL NAME PUNCTUATION:}
1605     \optdef{*}{}{Comma after journal}{name}
1606     \optdef{x}{jnm-x}{Space after journal}{name}
1607     \getans
1608    
1609     % \end{macrocode}
1610     %
1611     % \subsection*{Books}
1612     % The title of a book (as opposed to an article in a book or journal) is
1613     % normally italicized. This may be set to the regular font.
1614     %
1615     % The page numbers in books may be set in parentheses, as (pp.\ 345--350).
1616     % \begin{macrocode}
1617     \mes{^^JBOOK TITLE:}
1618     \optdef{*}{}{Book title italic}{(\string\em)}
1619     \optdef{p}{btit-rm}{Book title plain}{(no font command)}
1620     \getans
1621    
1622     \mes{^^JPAGES IN BOOKS:}
1623     \optdef{*}{}{Book pages normal}{as pp. 50-55}
1624     \optdef{p}{bkpg-par}{Book pages in parentheses}{as (pp. 50-55)}
1625     \getans
1626    
1627     % \end{macrocode}
1628     % Some psychology journals wish to have the publisher's address preceding
1629     % the name, separated by colon, as
1630     % \begin{quote}New York: Wiley and Sons\end{quote}
1631     %
1632     % Some journals (e.g.\ Nature) put publisher in parentheses with date,
1633     % as (Wiley and Sons, New York, 1983). These normally put the date in
1634     % parentheses at the end anyway, so this is a merging of the two sets of
1635     % parentheses.
1636     % \begin{macrocode}
1637     \mes{^^JPUBLISHER ADDRESS:}
1638     \optdef{*}{}{Publisher, address}{as Harcourt, New York}
1639     \optdef{a}{add-pub}{Address: Publisher}{as New York: Harcourt}
1640     \getans
1641    
1642     \mes{^^JPUBLISHER IN PARENTHESES:}
1643     \optdef{*}{}{Publisher as normal block}{without parentheses}
1644     \optdef{p}{pub-par}{Publisher in parentheses}{}
1645     \optdef{d}{pub-date}{Publisher and date in parentheses}{(Oxford, 1994)}
1646     \getans
1647    
1648     \mes{^^JPUBLISHER POSITION:}
1649     \optdef{*}{}{Publisher after chapter, pages}{}
1650     \optdef{p}{pre-pub}{Publisher before chapter, pages}{}
1651     \optdef{e}{pre-edn}{Publisher after edition}{}
1652     \getans
1653    
1654     % \end{macrocode}
1655     % \subsection*{ISBN number}
1656     % Books normally possess an ISBN number. This may be included as an
1657     % optional entry for \texttt{book}, \texttt{inbook}, \texttt{booklet},
1658     % \texttt{incollection}, \texttt{proceedings}, \texttt{inproceedings}.
1659     % \begin{macrocode}
1660     \mes{^^JISBN NUMBER:}
1661     \optdef{*}{isbn}{Include ISBN}{for books, booklets, etc.}
1662     \optdef{x}{}{No ISBN}{}
1663     \getans
1664    
1665     % \end{macrocode}
1666     %
1667     % \subsection*{Edited by}
1668     % For an article within an edited collection, the normal form is
1669     % \begin{quote}
1670     % In J. K. James, editor, \emph{Title of Collection} \dots
1671     % \end{quote}
1672     % Alternative forms are
1673     % \begin{quote}
1674     % In J. K. James (editor), \emph{Title} \dots\\
1675     % In \emph{Title}, edited by J. K. James \dots\\
1676     % In \emph{Title} (Edited by J. K. James) \dots
1677     % \end{quote}
1678     % \begin{macrocode}
1679     \mes{^^JEDITOR IN WHOLE BOOK:}
1680     \optdef{*}{}{Word `editor' after name}{of book editor without author}
1681     \optdef{a}{edpar}{`(editor)'}{in parentheses, after name}
1682     \getans
1683    
1684     \mes{^^JEDITOR IN COLLECTIONS:}
1685     \optdef{*}{}{.., editor, booktitle}{of collection}
1686     \optdef{b}{edby}{Booktitle, edited by .. }{}
1687     \optdef{p}{edby-par}{Booktitle (edited by ..)}{}
1688     \optdef{e}{edby}{Booktitle, editor ..}{}
1689     \optdef{k}{edby-par}{Booktitle (editor..)}{}
1690     \optdef{j}{edby}{Booktitle, .., editor}{}
1691     \optdef{m}{edby-par}{Booktitle (.., editor)}{}
1692     \getans
1693    
1694     \mytempfalse
1695     \if\ans e\mytemptrue\fi
1696     \if\ans k\mytemptrue\fi
1697     \ifmytemp
1698     \wr{\spsp\sep edbyx\pc: Replace `edited by' by `editor(s)'}
1699     \fi
1700    
1701     \mytempfalse
1702     \if\ans j\mytemptrue\fi
1703     \if\ans m\mytemptrue\fi
1704     \ifmytemp
1705     \wr{\spsp\sep edbyy\pc: Replace `edited by..' by `.., editor(s)'}
1706     \fi
1707    
1708     \mytempfalse
1709     \if\ans p\mytemptrue\fi
1710     \if\ans k\mytemptrue\fi
1711     \ifmytemp
1712     \mes{^^JCAPITALIZE `EDITOR' OR `EDITED BY':}
1713     \optdef{*}{}{`(editor,..)' or `(edited by..)'}{in lowercase}
1714     \optdef{c}{edcap}{`(Editor,..)' or `(Edited by..)'}{in uppercase}
1715     \getans
1716     \fi
1717    
1718     % \end{macrocode}
1719     %
1720     % \subsection*{Block punctuation}
1721     % Blocks are logical sections of the reference specification, such as the
1722     % author block, the journal block, editor block, etc. These are normally
1723     % separated by periods, but alternatively a comma may be used. Another
1724     % choice is to use commas except after titles where a period is given.
1725     %
1726     % \LaTeX\ offers an \texttt{openbib} option, which means that the blocks
1727     % are not only new sentences, but new lines as well. This can only
1728     % function when the default option here is taken, for then the command
1729     % |\newblock| is placed between the blocks. This command is normally
1730     % defined to do nothing, but \LaTeX\ redefines it to issue a new line
1731     % when open bibliographies are wanted.
1732     % \begin{macrocode}
1733     \mes{^^JPUNCTUATION BETWEEN SECTIONS (BLOCKS):}
1734     \optdef{*}{}{\string\newblock\space after blocks}
1735     {(periods or new lines with openbib option)}
1736     \optdef{c}{blk-com}{Comma between blocks}{}
1737     \optdef{s}{blk-com}{Semi-colon between blocks}{}
1738     \optdef{b}{blk-com}{Blanks between blocks}{}
1739     \optdef{t}{blk-tit}{Period after titles of articles, books, etc}{else commas}
1740     \optdef{a}{blk-tita}{Period after titles of articles}{else commas}
1741     \getans
1742    
1743     \if\ans s
1744     \wr{\spsp\spsp\sep com-semi\pc: Semi-colon replaces comma between blocks}
1745     \fi
1746     \if\ans b
1747     \wr{\spsp\spsp\sep com-blank\pc: Blank replaces comma between blocks}
1748     \fi
1749    
1750     \mes{^^JPUNCTUATION AFTER AUTHORS:}
1751     \optdef{*}{}{Author block normal}{with regular block punctuation}
1752     \optdef{c}{au-col}{Author block with colon}{}
1753     \getans
1754    
1755     % \end{macrocode}
1756     %
1757     % \subsection*{\textsl{In} with colon}
1758     % When referring to works in a collection, one begins the block describing
1759     % that collection with \textsl{In}. Optionally, one may add a colon.
1760     % \begin{macrocode}
1761     \mes{^^JPUNCTUATION AFTER `IN':}
1762     \optdef{*}{}{Space after `in'}{for edited works or proceedings}
1763     \optdef{c}{in-col}{Colon after `in'}{(as `In: ...')}
1764     \optdef{x}{in-x}{No word `in'}{for edited works}
1765     \getans
1766    
1767     % \end{macrocode}
1768     %
1769     % \subsection*{Final punctuation}
1770     % The punctuation at the end of the reference is normally a period. This
1771     % may be suppressed.
1772     % \begin{macrocode}
1773     \mes{^^JFINAL PUNCTUATION:}
1774     \optdef{*}{}{Period at very end}{of the listed reference}
1775     \optdef{x}{fin-bare}{No period at end}{}
1776     \getans
1777    
1778     % \end{macrocode}
1779     %
1780     % \subsection*{Abbreviations}
1781     % A number of words may be abbreviated: pages, editors, volume, chapter,
1782     % and so on. The first two may be independently set to abbreviation, the
1783     % rest with a single option.
1784     %
1785     % Additionally, the edition numbers may be
1786     % output as words (first, second, etc.) or as numbers (1st, 2nd, etc.).
1787     % (Recall that the input in the \texttt{.bib} file is always as English
1788     % words.)
1789     % \begin{macrocode}
1790    
1791     \if!\cfile!
1792     \mes{^^JABBREVIATE WORD `PAGES':}
1793     \optdef{*}{}{`Page(s)'}{(no abbreviation)}
1794     \optdef{a}{pp}{`Page' abbreviated}{as p. or pp.}
1795     \optdef{x}{ppx}{`Page' omitted}{}
1796     \getans
1797    
1798     \mes{^^JABBREVIATE WORD `EDITORS':}
1799     \optdef{*}{}{`Editor(s)'}{(no abbreviation)}
1800     \optdef{a}{ed}{`Editor' abbreviated}{as ed. or eds.}
1801     \getans
1802    
1803     \mes{^^JOTHER ABBREVIATIONS:}
1804     \optdef{*}{}{No abbreviations}{of volume, edition, chapter, etc}
1805     \optdef{a}{abr}{Abbreviations}{of such words}
1806     \getans
1807    
1808     \if\ans a
1809     \mes{^^JMONTHS WITH DOTS:}
1810     \optdef{*}{}{Months with dots}{as Jan.}
1811     \optdef{x}{mth-bare}{Months without dots}{as Feb Mar}
1812     \getans
1813     \fi
1814    
1815     \mes{^^JEDITION NUMBERS:}
1816     \optdef{*}{}{Write out editions}{as first, second, third, etc}
1817     \optdef{n}{ord}{Numerical editions}{as 1st, 2nd, 3rd, etc}
1818     \getans
1819     % \end{macrocode}
1820     %
1821     % The above choices about abbreviations are made only if the internal
1822     % languages are taken (English or \texttt{babel}). For an external language
1823     % definition file, these choices, along with possible other ones, are made
1824     % in the external file, which is read in at this point.
1825     % \begin{macrocode}
1826     \else
1827     \input\cfile
1828     \fi
1829    
1830     % \end{macrocode}
1831     %
1832     % This file contains the standard set of stored journal names present in
1833     % the basic bibliography style files. If other files containing journal
1834     % names are to be included, they may only contain the option \texttt{jabr}
1835     % since that option is selected here. No option menus from the journal-name
1836     % files will be read in.
1837     % \begin{macrocode}
1838     \mes{^^JSTORED JOURNAL NAMES:}
1839     \optdef{*}{}{Full journal names}{for prestored journals}
1840     \optdef{a}{jabr}{Abbreviated journal names}{}
1841     \getans
1842    
1843     % \end{macrocode}
1844     % \subsection*{Citation label}
1845     % This applies to author--year style only. The label is the text written
1846     % by the |\cite| command, and for author--year style, this is something like
1847     % `Daly et al.\ (1990b)'. One may select italics for the authors and for the
1848     % extra label attached to the year. The year always remains plain.
1849     %
1850     % If a font is selected for the cited authors, then the word `and' may be
1851     % optionally put in the normal font.
1852     %
1853     % It is not possible to select the type of brackets for the year, since
1854     % this is determined by the \LaTeX{} style option that manages the
1855     % author--year citations. This is not standard \LaTeX, so that there are a
1856     % number of private style files for achieving this.
1857     % \begin{macrocode}
1858     \ifnumerical\else
1859     \mes{^^JFONT OF CITATION LABELS IN TEXT:}
1860     \optdef{*}{}{Cited authors plain}{as result of \string\cite\space command}
1861     \optdef{i}{lab-it}{Cited authors italic}{}
1862     \optdef{s}{lab-sc}{Cited authors small caps}{}
1863     \optdef{b}{lab-bf}{Cited authors bold}{}
1864     \getans
1865    
1866     \mytempfalse
1867     \if\ans i\mytemptrue\fi
1868     \if\ans s\mytemptrue\fi
1869     \if\ans b\mytemptrue\fi
1870     \ifmytemp
1871     \mes{^^JFONT FOR `AND' IN CITATIONS:}
1872     \optdef{*}{}{Cited `and' in author font}{}
1873     \optdef{r}{and-rm}{Cited `and' in normal font}{}
1874     \getans
1875     \fi
1876    
1877     \mes{^^JFONT OF EXTRA LABEL:^^J(The extra letter on the year)}
1878     \optdef{*}{}{Extra label plain}{}
1879     \optdef{i}{xlab-it}{Extra label italic}{}
1880     \getans
1881     \fi
1882    
1883     % \end{macrocode}
1884     %
1885     % \subsection*{Variations on \textsl{and}}
1886     % It is possible to replace the word \textsl{and} with an ampersand \&, and to
1887     % specify whether a comma is to precede \textsl{and} in a list of more than two
1888     % names.
1889     %
1890     % A variable \textsl{and} may be provided for with the command |\BIBand|
1891     % in place of the word. In this case, the command must be defined in the
1892     % document file or some other package called. (This is intended for situations
1893     % where an ampersand is wanted in parenthetical citations, but the word in
1894     % textual ones.)
1895     %
1896     % \begin{macrocode}
1897     \mes{^^JAMPERSAND:}
1898     \optdef{*}{}{Use word `and'}{in author lists}
1899     \optdef{a}{amper}{Use ampersand}{in place of `and'}
1900     \optdef{v}{varand}{Use \string\BIBand}{in place of `and'}
1901     \getans
1902    
1903     \mes{^^JCOMMA BEFORE `AND':}
1904     \optdef{*}{}{Comma before `and'}{as `Tom, Dick, and Harry'}
1905     \optdef{n}{and-xcom}{No comma before `and'}{as `Tom, Dick and Harry'}
1906     \optdef{c}{and-com}{Comma with 2 authors}{as `Tom, and Harry'}
1907     \getans
1908    
1909     \mes{^^JNO `AND' IN REFERENCE LIST:}
1910     \optdef{*}{}{With `and'}{before last author in reference list}
1911     \optdef{x}{xand}{No `and'}{as `Tom, Dick, Harry'}
1912     \getans
1913    
1914     % \end{macrocode}
1915     %
1916     % \subsection*{Font of \textsl{et al}}
1917     % One can chose that \textsl{et~al.}\ be put into italics.
1918     % Or, if the authors are in a different font from the regular one, the
1919     % \textsl{et~al.}\ can still be Roman.
1920     % \begin{macrocode}
1921     \mes{^^JFONT OF `ET AL':}
1922     \optdef{*}{}{Plain et al}{}
1923     \optdef{i}{etal-it}{Italic et al}{}
1924     \optdef{r}{etal-rm}{Roman et al}{even when authors something else}
1925     \getans
1926    
1927     % \end{macrocode}
1928     %
1929     % \subsection*{Define emphasis}
1930     % In everything that been mentioned so far, italicization should be
1931     % understood to mean `emphasize' in the \LaTeX{} sense. This means that the
1932     % command |\em| is used. This is not the same as |\it|, which is always
1933     % italics. Rather, with |\em|, the font style switches between |\rm| and
1934     % |\it| depending on the context. Here one may choose to true italics, or
1935     % to switch off italics altogether.
1936     % \begin{macrocode}
1937     \mes{^^JEMPHASIS:^^J(affects all so-called italics)}
1938     \optdef{*}{}{Use emphasis}{ie, \string\em, allows font switching}
1939     \optdef{i}{em-it}{Use true italics}{ie, \string\it, absolute italics}
1940     \optdef{x}{em-x}{No italics}{at all}
1941     \getans
1942    
1943     % \end{macrocode}
1944     % \subsection*{New Font Selection Scheme}
1945     % Bold face, italics, and emphasis are made with the \LaTeX~2.09 commands.
1946     % This makes them compatible with \LaTeXe{} as well, but it is possible that
1947     % in future they might die out. Also, they might not be provided with
1948     % future classes. Allow an option to use the New Font Selection Scheme (NFSS)
1949     % font commands in \LaTeXe. If this option is taken, then the \texttt{.bst}
1950     % file may only be used with \LaTeXe.
1951     % \begin{macrocode}
1952     \mes{^^JNEW FONT SELECTION SCHEME:}
1953     \optdef{*}{}{No NFSS}{use 2.09 font commands}
1954     \optdef{n}{nfss}{NFSS}{use \string\textbf, \string\emph, not \string\bf,
1955     \string\em}
1956     \getans
1957    
1958     % \end{macrocode}
1959     %
1960     % Terminate the options list. If a language definition file has been called,
1961     % then we have a closing brace too many, so add another dummy opening brace.
1962     % \begin{macrocode}
1963     \if!\cfile\jfile!\else
1964     \begingroup\MBswitch
1965     \wr(,{\pc)
1966     \endgroup
1967     \fi
1968    
1969     \endoptions
1970     %</options>
1971     % \end{macrocode}
1972     % \StopEventually{\PrintChanges}
1973     %
1974     % \section{The Bibliographic Coding}
1975     %
1976     % \begin{macrocode}
1977     %<*!options&!driver&!bblbst>
1978     %<*!tail>
1979     % For use with BibTeX version 0.99a or later
1980     %-------------------------------------------------------------------
1981     %<*!exlang>
1982     %<!babel> % This bibliography style file is intended for texts in ENGLISH
1983     %<*babel>
1984     % This bibliography style file requires a file named babelbst.tex
1985     % containing the definitions of word commands like \bbleditor, etc.
1986     %</babel>
1987     %</!exlang>
1988     %<*exlang>
1989     % This bibliography style file is intended for texts in
1990     %<bahasa> % BAHASA
1991     %<brazilian> % BRAZILIAN
1992     %<catalan> % CATALAN
1993     %<croatian> % CROATIAN
1994     %<czech> % CZECH
1995     %<danish> % DANISH
1996     %<dutch> % DUTCH
1997     %<english> % ENGLISH
1998     %<esperanto> % ESPERANTO
1999     %<finnish> % FINNISH
2000     %<french> % FRENCH
2001     %<galacian> % GALACIAN
2002     %<german> % GERMAN
2003     %<hungarian> % HUNGARIAN
2004     %<italian> % ITALIAN
2005     %<norwegian> % NORWEGIAN
2006     %<norsk> % NORWEGIAN
2007     %<polish> % POLISH
2008     %<portuguese> % PORTUGUESE
2009     %<romanian> % ROMANIAN
2010     %<russian> % RUSSIAN
2011     %<slovak> % SLOVAK
2012     %<slovenian> % SLOVENIAN
2013     %<spanish> % SPANISH
2014     %<swedish> % SWEDISH
2015     %<turkish> % TURKISH
2016     %</exlang>
2017     %<*ay>
2018     % This is an author-year citation style bibliography. As such, it is
2019     % non-standard LaTeX, and requires a special package file to function properly.
2020     % Such a package is natbib.sty by Patrick W. Daly
2021     %<*alk>
2022     % or: apalike.sty by Oren Patashnik
2023     % The form of the \bibitem entries is
2024     % \bibitem[Jones et al., 1990]{key}...
2025     %</alk>
2026     %<*!(har|ast|alk|cay|nmd|cn)>
2027     % The form of the \bibitem entries is
2028     % \bibitem[Jones et al.(1990)]{key}...
2029     %<nat> % \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}...
2030     % The essential feature is that the label (the part in brackets) consists
2031     % of the author names, as they should appear in the citation, with the year
2032     % in parentheses following. There must be no space before the opening
2033     % parenthesis!
2034     %<nat> % With natbib v5.3, a full list of authors may also follow the year.
2035     % In natbib.sty, it is possible to define the type of enclosures that is
2036     % really wanted (brackets or parentheses), but in either case, there must
2037     % be parentheses in the label.
2038     % The \cite command functions as follows:
2039     % \cite{key} ==>> Jones et al. (1990)
2040     % \cite[]{key} ==>> (Jones et al., 1990)
2041     % \cite[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2)
2042     % \cite[e.g.][]{key} ==>> (e.g. Jones et al., 1990)
2043     % \cite[e.g.][p. 32]{key} ==>> (e.g. Jones et al., p. 32)
2044     % \citeauthor{key} Jones et al.
2045     %<nat> % \citefullauthor{key} Jones, Baker, and Smith
2046     % \citeyear{key} 1990
2047     %</!(har|ast|alk|cay|nmd|cn)>
2048     %<*har>
2049     % or: harvard.sty by Peter Williams and Thorsten Schnier
2050     %<harnm> % (needs natbib v5.3 or harvard v2.0.3)
2051     % The form of the bibitem entries is
2052     % \harvarditem[Jones et al.]{Jones, Baker, and Smith}{1990}{key}...
2053     %</har>
2054     %<*cay>
2055     % or: chicago.sty
2056     % The form of the bibitem entries is
2057     % \bibitem[\protect\citeauthoryear{Jones, Baker, and Smith}
2058     % {Jones et al.}{1990}{key}...
2059     %</cay>
2060     %<*nmd>
2061     % or: named.sty
2062     % The form of the bibitem entries is
2063     % \bibitem[\protect\citeauthoryear{Jones et al.}{1990}]{key}...
2064     %</nmd>
2065     %<*ast>
2066     % or: astron.sty
2067     % The form of the bibitem entries is
2068     % \bibitem[\protect\astroncite{Jones et al.}{1990}]{key}...
2069     %</ast>
2070     %<*cn>
2071     % or: authordate1-4.sty
2072     % The form of the bibitem entries is
2073     % \bibitem[\protect\citename{Jones et al.}1990]{key}...
2074     %</cn>
2075     %</ay>
2076     %<*!ay>
2077     %<*!alph&!cite>
2078     % This is a numerical citation style, and as such is standard LaTeX.
2079     %</!alph&!cite>
2080     %<*alph>
2081     % This is a labelled citation style similar to the standard alpha.bst,
2082     % where labels are of the form Dal90 or DBK89.
2083     %</alph>
2084     %<*cite&!alph>
2085     % This is a special pseudo-numerical bibliography style, intended to be
2086     % used to list all the entries in a bib database
2087     %</cite&!alph>
2088     % It requires no extra package to interface to the main text.
2089     % The form of the \bibitem entries is
2090     %<!alph&!cite> % \bibitem{key}...
2091     %<alph> % \bibitem[label]{key}...
2092     %<!alph&cite> % \bibitem[key]{key}...
2093     %<*!cite|alph>
2094     % Usage of \cite is as follows:
2095     %<*!alph&!cite>
2096     % \cite{key} ==>> [#]
2097     % \cite[chap. 2]{key} ==>> [#, chap. 2]
2098     % where # is a number determined by the ordering in the reference list.
2099     %</!alph&!cite>
2100     %<*alph>
2101     % \cite{key} ==>> [label]
2102     % \cite[chap. 2]{key} ==>> [label, chap. 2]
2103     % The order in the reference list is by label.
2104     %</alph>
2105     %<*seq-no&!alph>
2106     % The order in the reference list is that by which the works were originally
2107     % cited in the text, or that in the database.
2108     %</seq-no&!alph>
2109     %<*!seq-no&!alph>
2110     % The order in the reference list is alphabetical by authors.
2111     %</!seq-no&!alph>
2112     %</!cite|alph>
2113     %</!ay>
2114     %---------------------------------------------------------------------
2115    
2116     % \end{macrocode}
2117     % \changes{1.5(2.3)}{1994 Sep 16}{Add URL entry type for \texttt{harnm} option}
2118     % The new \texttt{harvard.sty} of \LaTeXe{} includes an entry URL, or
2119     % rather it is included in the new \texttt{.bst} files for it. Add it
2120     % here too, but only for option \texttt{harnm}.
2121     %
2122     % \changes{3.0}{1995 Mar 1}{Add optional entries \texttt{isbn}}
2123     % Books normally have an ISBN number.
2124     % This entry is (optionally) included, modelled after that in
2125     % \texttt{xbtxbst.doc}.
2126     % \begin{macrocode}
2127     ENTRY
2128     { address
2129     author
2130     booktitle
2131     chapter
2132     edition
2133     editor
2134     howpublished
2135     institution
2136     %<isbn> isbn
2137     journal
2138     key
2139     month
2140     note
2141     number
2142     organization
2143     pages
2144     publisher
2145     school
2146     series
2147     title
2148     type
2149     %<harnm> URL
2150     volume
2151     year
2152     }
2153     {}
2154     %<!ay&!alph> { label }
2155     %<!ay&alph> { label extra.label sort.label }
2156     %<ay> { label extra.label sort.label short.list }
2157    
2158     INTEGERS { output.state before.all mid.sentence after.sentence after.block }
2159    
2160     FUNCTION {init.state.consts}
2161     { #0 'before.all :=
2162     #1 'mid.sentence :=
2163     #2 'after.sentence :=
2164     #3 'after.block :=
2165     }
2166    
2167     STRINGS { s t }
2168    
2169     FUNCTION {output.nonnull}
2170     { 's :=
2171     output.state mid.sentence =
2172     %<!blk-com|(!com-semi&!com-blank)> { ", " * write$ }
2173     %<blk-com&com-semi> { "; " * write$ }
2174     %<blk-com&!com-semi&com-blank> { " " * write$ }
2175     { output.state after.block =
2176     { add.period$ write$
2177     newline$
2178     "\newblock " write$
2179     }
2180     { output.state before.all =
2181     'write$
2182     { add.period$ " " * write$ }
2183     if$
2184     }
2185     if$
2186     mid.sentence 'output.state :=
2187     }
2188     if$
2189     s
2190     }
2191    
2192     FUNCTION {output}
2193     { duplicate$ empty$
2194     'pop$
2195     'output.nonnull
2196     if$
2197     }
2198    
2199     FUNCTION {output.check}
2200     { 't :=
2201     duplicate$ empty$
2202     { pop$ "empty " t * " in " * cite$ * warning$ }
2203     'output.nonnull
2204     if$
2205     }
2206    
2207     FUNCTION {fin.entry}
2208     %<*!fin-bare>
2209     { add.period$
2210     write$
2211     %</!fin-bare>
2212     %<*fin-bare>
2213     { duplicate$ empty$
2214     'pop$
2215     'write$
2216     if$
2217     %</fin-bare>
2218     newline$
2219     }
2220    
2221     FUNCTION {new.block}
2222     { output.state before.all =
2223     'skip$
2224     { after.block 'output.state := }
2225     if$
2226     }
2227    
2228     FUNCTION {new.sentence}
2229     { output.state after.block =
2230     'skip$
2231     { output.state before.all =
2232     'skip$
2233     { after.sentence 'output.state := }
2234     if$
2235     }
2236     if$
2237     }
2238    
2239     % \end{macrocode}
2240     %
2241     % \begin{macro}{`add.blank'}
2242     % \changes{1.5(2.3)b}{1995 Jan 10}{Add function}
2243     % When text is printed with \texttt{output} or
2244     % \texttt{output.check}, the \texttt{output.state} is set such that
2245     % a comma will precede the next output text. For special effects, we want to
2246     % suppress this comma, inserting a blank instead. Hence the
2247     % \texttt{output.state} is changed to \texttt{before.all}, meaning no
2248     % punctuation is to be inserted.
2249     % \begin{macrocode}
2250     FUNCTION {add.blank}
2251     { " " * before.all 'output.state :=
2252     }
2253    
2254     % \end{macrocode}
2255     % \end{macro}
2256     % \begin{macro}{`add.colon'}
2257     % \changes{3.4}{1995 Sep 28}{Add macro}
2258     % \begin{macrocode}
2259     %<*au-col>
2260     FUNCTION {add.colon}
2261     { empty$
2262     'skip$
2263     { before.all 'output.state := ":" output add.blank }
2264     if$
2265     }
2266    
2267     %</au-col>
2268     % \end{macrocode}
2269     % \end{macro}
2270     %
2271     % \begin{macro}{`no.blank.or.punct'}
2272     % \changes{3.2}{1995 May 19}{Add function}
2273     % \changes{3.2}{1995 May 30}{Present only for option \texttt{yrpp-xsp}}
2274     % Another frill is to suppresss both blanks and punctuation. The |\hspace|
2275     % permits a line break at this point.
2276     % \begin{macrocode}
2277     %<*yrpp-xsp>
2278     FUNCTION {no.blank.or.punct}
2279     { "\hspace{0pt}" * before.all 'output.state :=
2280     }
2281    
2282     %</yrpp-xsp>
2283     % \end{macrocode}
2284     % \end{macro}
2285     %
2286     % \begin{macro}{`date.block'}
2287     % \changes{3.0}{1995 Mar 9}{Add function}
2288     % \changes{3.81}{1996 Jun 25}{Add option \texttt{yrp-per}}
2289     % The \texttt{date.block} function is used for special punctuating effects
2290     % after the date.
2291     % \begin{macrocode}
2292     FUNCTION {date.block}
2293     {
2294     %<*!yrp-x>
2295     %<yrp-col> ":" *
2296     %<*!yrp-col>
2297     %<yrp-semi> ";" *
2298     %<*!yrp-semi>
2299     %<!blk-com&!blk-tit&!blk-tita> new.block
2300     %<(blk-com|blk-tit|blk-tita)&!yrp-per> skip$
2301     %<(blk-com|blk-tit|blk-tita)&yrp-per> new.sentence
2302     %</!yrp-semi>
2303     %</!yrp-col>
2304     %</!yrp-x>
2305     %<*yrp-x|yrp-col|yrp-semi>
2306     %<!yrpp-xsp> add.blank
2307     %<yrpp-xsp> no.blank.or.punct
2308     %</yrp-x|yrp-col|yrp-semi>
2309     }
2310    
2311     % \end{macrocode}
2312     % \end{macro}
2313     %
2314     % \begin{macrocode}
2315     FUNCTION {not}
2316     { { #0 }
2317     { #1 }
2318     if$
2319     }
2320    
2321     FUNCTION {and}
2322     { 'skip$
2323     { pop$ #0 }
2324     if$
2325     }
2326    
2327     FUNCTION {or}
2328     { { pop$ #1 }
2329     'skip$
2330     if$
2331     }
2332    
2333     % \end{macrocode}
2334     % \begin{macro}{`non.stop'}
2335     % \changes{1.4(2.2)a}{1994 Sep 8}{Add to test if last character
2336     % is punctuation: . ! ?}
2337     % This function (my invention) tests if the last character in the string
2338     % on the stack is \texttt{. ! ?} by using \texttt{add.period\$}. It is to
2339     % be used for conditional italic correction or adding commas.
2340     % \begin{macrocode}
2341     FUNCTION {non.stop}
2342     { duplicate$
2343     "}" * add.period$
2344     #-1 #1 substring$ "." =
2345     }
2346    
2347     % \end{macrocode}
2348     % \end{macro}
2349     % \begin{macrocode}
2350     %<*!ay>
2351     FUNCTION {new.block.checka}
2352     { empty$
2353     'skip$
2354     'new.block
2355     if$
2356     }
2357    
2358     %</!ay>
2359     FUNCTION {new.block.checkb}
2360     { empty$
2361     swap$ empty$
2362     and
2363     'skip$
2364     'new.block
2365     if$
2366     }
2367    
2368     %<*!ay>
2369     FUNCTION {new.sentence.checka}
2370     { empty$
2371     'skip$
2372     'new.sentence
2373     if$
2374     }
2375    
2376     FUNCTION {new.sentence.checkb}
2377     { empty$
2378     swap$ empty$
2379     and
2380     'skip$
2381     'new.sentence
2382     if$
2383     }
2384    
2385     %</!ay>
2386     FUNCTION {field.or.null}
2387     { duplicate$ empty$
2388     { pop$ "" }
2389     'skip$
2390     if$
2391     }
2392    
2393     % \end{macrocode}
2394     % \begin{macro}{`emphasize'}
2395     % Emphasis can be either italic or the alternating font. The font command
2396     % may be NFSS or regular \LaTeX~2.09 declarations.
2397     %\changes{1.3(2.1)}{1994 Jul 1}{Add \texttt{nfss} option}
2398     % \begin{macrocode}
2399     FUNCTION {emphasize}
2400     %<*!em-x>
2401     { duplicate$ empty$
2402     { pop$ "" }
2403     %<*!nfss>
2404     %<!em-it> { "{\em " swap$ * "\/}" * }
2405     %<em-it> { "{\it " swap$ * "\/}" * }
2406     %</!nfss>
2407     %<*nfss>
2408     %<!em-it> { "\emph{" swap$ * "}" * }
2409     %<em-it> { "\textit{" swap$ * "}" * }
2410     %</nfss>
2411     if$
2412     }
2413     %</!em-x>
2414     %<em-x>{ skip$ }
2415    
2416     %<*nmft-bf|vol-bf|vol-2bf|lab-bf|dtbf>
2417     % \end{macrocode}
2418     % \end{macro}
2419     % \begin{macro}{`bolden'}
2420     % The bold font command may be NFSS or the regular \LaTeX~2.09 declaration.
2421     %\changes{1.3(2.1)}{1994 Jul 1}{Add \texttt{nfss} option}
2422     % \begin{macrocode}
2423     FUNCTION {bolden}
2424     { duplicate$ empty$
2425     { pop$ "" }
2426     %<!nfss> { "{\bf " swap$ * "}" * }
2427     %<nfss> { "\textbf{" swap$ * "}" * }
2428     if$
2429     }
2430    
2431     %</nmft-bf|vol-bf|vol-2bf|lab-bf|dtbf>
2432     %<*lab-sc|nmft-sc>
2433     % \end{macrocode}
2434     % \end{macro}
2435     % \begin{macro}{`scaps'}
2436     % To put text into small caps.
2437     %\changes{3.0}{1995 Mar 3}{Add function}
2438     % \begin{macrocode}
2439     FUNCTION {scaps}
2440     { duplicate$ empty$
2441     { pop$ "" }
2442     %<!nfss> { "{\sc " swap$ * "}" * }
2443     %<nfss> { "\textsc{" swap$ * "}" * }
2444     if$
2445     }
2446    
2447     %</lab-sc|nmft-sc>
2448     %<*and-rm|nmand-rm|etal-rm>
2449     % \end{macrocode}
2450     % \end{macro}
2451     % \begin{macro}{`roman.list'}
2452     % \changes{3.4}{1995 Sep 28}{Add function}
2453     % \begin{macro}{`roman.cite'}
2454     % \changes{3.8}{1996 Mar 16}{Add function}
2455     % These functions are use to print the words `and' and `et al.' in the
2456     % authors' names in the regular font. Since the list of references and the
2457     % citations can in principle have different author fonts, we need two such
2458     % commands. For non-NFSS, these just select |\rm|, but for NFSS, the one
2459     % attribute specifying the authors' fonts is reset.
2460     %
2461     % \begin{macrocode}
2462     FUNCTION {roman.list}
2463     { duplicate$ empty$
2464     { pop$ "" }
2465     %<!nfss> { "{\rm " swap$ * "}" * }
2466     %<*nfss>
2467     %<nmft-bf> { "{\mdseries " swap$ * "}" * }
2468     %<(nmft-it|nmft-sc)&!nmft-bf> { "{\upshape " swap$ * "}" * }
2469     %<!nmft-it&!nmft-sc&!nmft-bf> { "{\normalfont " swap$ * "}" * }
2470     %</nfss>
2471     if$
2472     }
2473    
2474     FUNCTION {roman.cite}
2475     %<!nfss>{ roman.list }
2476     %<*nfss>
2477     { duplicate$ empty$
2478     { pop$ "" }
2479     %<lab-bf> { "{\mdseries " swap$ * "}" * }
2480     %<(lab-it|lab-sc)&!lab-bf> { "{\upshape " swap$ * "}" * }
2481     %<!lab-it&!lab-sc&!lab-bf> { "{\normalfont " swap$ * "}" * }
2482     if$
2483     }
2484     %</nfss>
2485    
2486     %</and-rm|nmand-rm|etal-rm>
2487     % \end{macrocode}
2488     % \end{macro}\end{macro}
2489     %
2490     % \begin{macro}{`capitalize'}
2491     % \changes{3.0}{1995 Mar 7}{Add capitalizing function}
2492     % Capitalizing is easy for regular languages, but for \texttt{babel},
2493     % some trickery stuff is needed; definitions of |\capitalize| and
2494     % |\Capitalize| are written to the \texttt{.bbl} file.
2495     % \begin{macrocode}
2496     FUNCTION {capitalize}
2497     %<!babel>{ "u" change.case$ "t" change.case$ }
2498     %<babel>{ "\capitalize" swap$ * }
2499    
2500     % \end{macrocode}
2501     % \end{macro}
2502     %
2503     % \begin{macro}{`space.word'}
2504     % \changes{2.0}{1994 Jan 31}{Add function to space out words; necessary
2505     % for the multilingual functions.}
2506     % The function \texttt{space.word} adds a space before and after the word or
2507     % words currently on the stack. This was added for the \texttt{bbl.}$nnn$
2508     % functions, that contain only a word without spacing, but replace explicit
2509     % text in the originals that were spaced out. Its seems more flexible to
2510     % define the word functions to be without spacing.
2511     % \begin{macrocode}
2512     FUNCTION {space.word}
2513     { " " swap$ * " " * }
2514    
2515     % Here are the language-specific definitions for explicit words.
2516     % Each function has a name bbl.xxx where xxx is the English word.
2517     %<*!exlang>
2518     % \end{macrocode}
2519     % \end{macro}
2520     % \begin{macro}{`bbl.xxx'}
2521     % \changes{2.0}{1994 Jan 31}{Replace all explicit words with functions
2522     % of the form \texttt{bbl.xxx}.}
2523     % \changes{3.6}{1996 Jan 15}{Add option \texttt{varand}}
2524     % These are the default English words. There is no default language
2525     % option: one of \texttt{english} or \texttt{babel} must be given.
2526     % \begin{macrocode}
2527     %<*!babel>
2528     % The language selected here is ENGLISH
2529     FUNCTION {bbl.and}
2530     %<!varand>{ "and"}
2531     %<varand>{ "\BIBand{}"}
2532    
2533     FUNCTION {bbl.editors}
2534     %<!ed>{ "editors" }
2535     %<ed>{ "eds." }
2536    
2537     FUNCTION {bbl.editor}
2538     %<!ed>{ "editor" }
2539     %<ed>{ "ed." }
2540    
2541     FUNCTION {bbl.edby}
2542     { "edited by" }
2543    
2544     FUNCTION {bbl.edition}
2545     %<!abr>{ "edition" }
2546     %<abr>{ "edn." }
2547    
2548     FUNCTION {bbl.volume}
2549     %<!abr>{ "volume" }
2550     %<abr>{ "vol." }
2551    
2552     FUNCTION {bbl.of}
2553     { "of" }
2554    
2555     FUNCTION {bbl.number}
2556     %<!abr>{ "number" }
2557     %<abr>{ "no." }
2558    
2559     FUNCTION {bbl.nr}
2560     { "no." }
2561    
2562     FUNCTION {bbl.in}
2563     { "in" }
2564    
2565     FUNCTION {bbl.pages}
2566     %<!pp&!ppx>{ "pages" }
2567     %<pp>{ "pp." }
2568     %<!pp&ppx>{ "" }
2569    
2570     FUNCTION {bbl.page}
2571     %<!pp&!ppx>{ "page" }
2572     %<pp>{ "p." }
2573     %<!pp&ppx>{ "" }
2574    
2575     FUNCTION {bbl.chapter}
2576     %<!abr>{ "chapter" }
2577     %<abr>{ "chap." }
2578    
2579     FUNCTION {bbl.techrep}
2580     %<!abr>{ "Technical Report" }
2581     %<abr>{ "Tech. Rep." }
2582    
2583     FUNCTION {bbl.mthesis}
2584     { "Master's thesis" }
2585    
2586     FUNCTION {bbl.phdthesis}
2587     { "Ph.D. thesis" }
2588    
2589     FUNCTION {bbl.first}
2590     %<!ord>{ "First" }
2591     %<ord>{ "1st" }
2592    
2593     FUNCTION {bbl.second}
2594     %<!ord>{ "Second" }
2595     %<ord>{ "2nd" }
2596    
2597     FUNCTION {bbl.third}
2598     %<!ord>{ "Third" }
2599     %<ord>{ "3rd" }
2600    
2601     FUNCTION {bbl.fourth}
2602     %<!ord>{ "Fourth" }
2603     %<ord>{ "4th" }
2604    
2605     FUNCTION {bbl.fifth}
2606     %<!ord>{ "Fifth" }
2607     %<ord>{ "5th" }
2608    
2609     FUNCTION {bbl.st}
2610     { "st" }
2611    
2612     FUNCTION {bbl.nd}
2613     { "nd" }
2614    
2615     FUNCTION {bbl.rd}
2616     { "rd" }
2617    
2618     FUNCTION {bbl.th}
2619     { "th" }
2620    
2621     %<*!abr>
2622     MACRO {jan} {"January"}
2623    
2624     MACRO {feb} {"February"}
2625    
2626     MACRO {mar} {"March"}
2627    
2628     MACRO {apr} {"April"}
2629    
2630     MACRO {may} {"May"}
2631    
2632     MACRO {jun} {"June"}
2633    
2634     MACRO {jul} {"July"}
2635    
2636     MACRO {aug} {"August"}
2637    
2638     MACRO {sep} {"September"}
2639    
2640     MACRO {oct} {"October"}
2641    
2642     MACRO {nov} {"November"}
2643    
2644     MACRO {dec} {"December"}
2645    
2646     %</!abr>
2647     %<*abr>
2648     MACRO {jan} {"Jan."}
2649    
2650     MACRO {feb} {"Feb."}
2651    
2652     MACRO {mar} {"Mar."}
2653    
2654     MACRO {apr} {"Apr."}
2655    
2656     MACRO {may} {"May"}
2657    
2658     MACRO {jun} {"Jun."}
2659    
2660     MACRO {jul} {"Jul."}
2661    
2662     MACRO {aug} {"Aug."}
2663    
2664     MACRO {sep} {"Sep."}
2665    
2666     MACRO {oct} {"Oct."}
2667    
2668     MACRO {nov} {"Nov."}
2669    
2670     MACRO {dec} {"Dec."}
2671    
2672     %</abr>
2673     %</!babel>
2674     % \end{macrocode}
2675     %
2676     % Here are the definitions for \texttt{babel} option, i.e., explicit
2677     % translations are not used, but rather only \LaTeX{} macros that must be
2678     % defined in the file \texttt{babelbst.tex}. This could allow automatic
2679     % language selection.
2680     % \begin{macrocode}
2681     %<*babel>
2682     % The BABEL language selection is made here; definitions in babelbst.tex.
2683     FUNCTION {bbl.and}
2684     { "\bbland{}"}
2685    
2686     FUNCTION {bbl.editors}
2687     %<!ed>{ "\bbleditors{}" }
2688     %<ed>{ "\bbleds{}" }
2689    
2690     FUNCTION {bbl.editor}
2691     %<!ed>{ "\bbleditor{}" }
2692     %<ed>{ "\bbled{}" }
2693    
2694     FUNCTION {bbl.edby}
2695     { "\bbledby{}" }
2696    
2697     FUNCTION {bbl.edition}
2698     %<!abr>{ "\bbledition{}" }
2699     %<abr>{ "\bbledn{}" }
2700    
2701     FUNCTION {bbl.volume}
2702     %<!abr>{ "\bblvolume{}" }
2703     %<abr>{ "\bblvol{}" }
2704    
2705     FUNCTION {bbl.of}
2706     { "\bblof{}" }
2707    
2708     FUNCTION {bbl.number}
2709     %<!abr>{ "\bblnumber{}" }
2710     %<abr>{ "\bblno{}" }
2711    
2712     FUNCTION {bbl.nr}
2713     { "\bblno{}" }
2714    
2715     FUNCTION {bbl.in}
2716     { "\bblin{}" }
2717    
2718     FUNCTION {bbl.pages}
2719     %<!pp&!ppx>{ "\bblpages{}" }
2720     %<pp>{ "\bblpp{}" }
2721     %<!pp&ppx>{ "" }
2722    
2723     FUNCTION {bbl.page}
2724     %<!pp&!ppx>{ "\bblpage{}" }
2725     %<pp>{ "\bblp{}" }
2726     %<!pp&ppx>{ "" }
2727    
2728     FUNCTION {bbl.chapter}
2729     %<!abr>{ "\bblchapter{}" }
2730     %<abr>{ "\bblchap{}" }
2731    
2732     FUNCTION {bbl.techrep}
2733     %<!abr>{ "\bbltechreport{}" }
2734     %<abr>{ "\bbltechrep{}" }
2735    
2736     FUNCTION {bbl.mthesis}
2737     { "\bblmthesis{}" }
2738    
2739     FUNCTION {bbl.phdthesis}
2740     { "\bblphdthesis{}" }
2741    
2742     FUNCTION {bbl.first}
2743     %<!ord>{ "\bblfirst{}" }
2744     %<ord>{ "\bblfirsto{}" }
2745    
2746     FUNCTION {bbl.second}
2747     %<!ord>{ "\bblsecond{}" }
2748     %<ord>{ "\bblsecondo{}" }
2749    
2750     FUNCTION {bbl.third}
2751     %<!ord>{ "\bblthird{}" }
2752     %<ord>{ "\bblthirdo{}" }
2753    
2754     FUNCTION {bbl.fourth}
2755     %<!ord>{ "\bblfourth{}" }
2756     %<ord>{ "\bblfourtho{}" }
2757    
2758     FUNCTION {bbl.fifth}
2759     %<!ord>{ "\bblfifth{}" }
2760     %<ord>{ "\bblfiftho{}" }
2761    
2762     FUNCTION {bbl.st}
2763     { "\bblst{}" }
2764    
2765     FUNCTION {bbl.nd}
2766     { "\bblnd{}" }
2767    
2768     FUNCTION {bbl.rd}
2769     { "\bblrd{}" }
2770    
2771     FUNCTION {bbl.th}
2772     { "\bblth{}" }
2773    
2774     MACRO {jan} {"\bbljan{}"}
2775    
2776     MACRO {feb} {"\bblfeb{}"}
2777    
2778     MACRO {mar} {"\bblmar{}"}
2779    
2780     MACRO {apr} {"\bblapr{}"}
2781    
2782     MACRO {may} {"\bblmay{}"}
2783    
2784     MACRO {jun} {"\bbljun{}"}
2785    
2786     MACRO {jul} {"\bbljul{}"}
2787    
2788     MACRO {aug} {"\bblaug{}"}
2789    
2790     MACRO {sep} {"\bblsep{}"}
2791    
2792     MACRO {oct} {"\bbloct{}"}
2793    
2794     MACRO {nov} {"\bblnov{}"}
2795    
2796     MACRO {dec} {"\bbldec{}"}
2797    
2798     %</babel>
2799     % \end{macrocode}
2800     %
2801     % \begin{macro}{`eng.ord'}
2802     % \changes{2.0}{1994 Jan 31}{Add function to format English ordinals.}
2803     % This function adds English endings for ordinals 1, 2, 3. However, if
2804     % the second last digit is 1, then the ending is `th' for all last digits.
2805     % So far, all other languages included do not have this problem, and it is
2806     % sufficient to add the \textsl{th} equivalent. This might change with further
2807     % languages.
2808     %
2809     % This function must be included with \texttt{babel} too, since that includes
2810     % English. This means that the language definition files must also provide
2811     % for |\bblst|, |\bblnd|, and |\bblrd|, setting them all equal to |\bblth|.
2812     %
2813     % \begin{macrocode}
2814     %<*english|!exlang>
2815     FUNCTION {eng.ord}
2816     { duplicate$ "1" swap$ *
2817     #-2 #1 substring$ "1" =
2818     { bbl.th * }
2819     { duplicate$ #-1 #1 substring$
2820     duplicate$ "1" =
2821     { pop$ bbl.st * }
2822     { duplicate$ "2" =
2823     { pop$ bbl.nd * }
2824     { "3" =
2825     { bbl.rd * }
2826     { bbl.th * }
2827     if$
2828     }
2829     if$
2830     }
2831     if$
2832     }
2833     if$
2834     }
2835    
2836     %</english|!exlang>
2837     % \end{macrocode}
2838     % \end{macro}
2839     %
2840     % \begin{macrocode}
2841     %</!exlang>
2842     %</!tail>
2843     %<*!head>
2844     % \end{macrocode}
2845     % \end{macro}
2846     %
2847     % \begin{macrocode}
2848     %<*!jabr>
2849     MACRO {acmcs} {"ACM Computing Surveys"}
2850    
2851     MACRO {acta} {"Acta Informatica"}
2852    
2853     MACRO {cacm} {"Communications of the ACM"}
2854    
2855     MACRO {ibmjrd} {"IBM Journal of Research and Development"}
2856    
2857     MACRO {ibmsj} {"IBM Systems Journal"}
2858    
2859     MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
2860    
2861     MACRO {ieeetc} {"IEEE Transactions on Computers"}
2862    
2863     MACRO {ieeetcad}
2864     {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
2865    
2866     MACRO {ipl} {"Information Processing Letters"}
2867    
2868     MACRO {jacm} {"Journal of the ACM"}
2869    
2870     MACRO {jcss} {"Journal of Computer and System Sciences"}
2871    
2872     MACRO {scp} {"Science of Computer Programming"}
2873    
2874     MACRO {sicomp} {"SIAM Journal on Computing"}
2875    
2876     MACRO {tocs} {"ACM Transactions on Computer Systems"}
2877    
2878     MACRO {tods} {"ACM Transactions on Database Systems"}
2879    
2880     MACRO {tog} {"ACM Transactions on Graphics"}
2881    
2882     MACRO {toms} {"ACM Transactions on Mathematical Software"}
2883    
2884     MACRO {toois} {"ACM Transactions on Office Information Systems"}
2885    
2886     MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
2887    
2888     MACRO {tcs} {"Theoretical Computer Science"}
2889    
2890     %</!jabr>
2891     %<*jabr>
2892     MACRO {acmcs} {"ACM Comput. Surv."}
2893    
2894     MACRO {acta} {"Acta Inf."}
2895    
2896     MACRO {cacm} {"Commun. ACM"}
2897    
2898     MACRO {ibmjrd} {"IBM J. Res. Dev."}
2899    
2900     MACRO {ibmsj} {"IBM Syst.~J."}
2901    
2902     MACRO {ieeese} {"IEEE Trans. Softw. Eng."}
2903    
2904     MACRO {ieeetc} {"IEEE Trans. Comput."}
2905    
2906     MACRO {ieeetcad}
2907     {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}
2908    
2909     MACRO {ipl} {"Inf. Process. Lett."}
2910    
2911     MACRO {jacm} {"J.~ACM"}
2912    
2913     MACRO {jcss} {"J.~Comput. Syst. Sci."}
2914    
2915     MACRO {scp} {"Sci. Comput. Programming"}
2916    
2917     MACRO {sicomp} {"SIAM J. Comput."}
2918    
2919     MACRO {tocs} {"ACM Trans. Comput. Syst."}
2920    
2921     MACRO {tods} {"ACM Trans. Database Syst."}
2922    
2923     MACRO {tog} {"ACM Trans. Gr."}
2924    
2925     MACRO {toms} {"ACM Trans. Math. Softw."}
2926    
2927     MACRO {toois} {"ACM Trans. Office Inf. Syst."}
2928    
2929     MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}
2930    
2931     MACRO {tcs} {"Theoretical Comput. Sci."}
2932    
2933     %</jabr>
2934     % \end{macrocode}
2935     %
2936     % \begin{macro}{`write.url'}
2937     % \changes{1.5(2.3)}{1994 Sep 16}{Add \texttt{write.url} for option
2938     % \texttt{harnm}}
2939     % This function taken over from \texttt{agsm.sty}, the main \texttt{harvard}
2940     % bib style.
2941     % \begin{macrocode}
2942     %<*harnm>
2943     FUNCTION {write.url}
2944     { URL empty$
2945     { skip$ }
2946     { "\newline\harvardurl{" URL * "}" * write$ newline$ }
2947     if$
2948     }
2949    
2950     %</harnm>
2951     % \end{macrocode}
2952     % \end{macro}
2953     %
2954     % \begin{macro}{`format.names'}
2955     % \changes{1.5(2.3)}{1994 Sep 16}{Add \texttt{harvard} command for `and' with
2956     % new option \texttt{harnm}}
2957     % \changes{3.0}{1995 Feb 27}{Add option \texttt{nm-revf}}
2958     % \changes{3.0}{1995 Mar 15}{Add option \texttt{nm-rvx}}
2959     % \changes{3.2}{1995 Jun 7}{Add option \texttt{nm-rvv}}
2960     % \changes{3.6}{1995 Dec 7}{Jr to go at end with \texttt{nm-rev1} (AGU style)}
2961     % \changes{3.6}{1995 Dec 8}{Add option \texttt{nmand-rm}}
2962     % \changes{3.6}{1996 Jan 30}{Add option \texttt{etal-rm}}
2963     % \changes{3.7}{1996 Feb 5}{Add option \texttt{aunm-semi}}
2964     % \changes{3.82}{1996 Dec 16}{Add option \texttt{nm-revv1} (AGU style with full
2965     % names)}
2966     % The \texttt{harvard} package now (version 2.0.3, for \LaTeXe) uses
2967     % |\harvardand| in place of the word \textsl{and} so that it can be changed
2968     % at run time. This is allowed for with the option \texttt{harnm}, which
2969     % need not be used only with the \texttt{har} option.
2970     % This seems like a useless feature for \texttt{.bst} files made from
2971     % this multilanguage source. However, it is included anyway, which means
2972     % if \texttt{harnm} option selected, one must redefine |\harvardand|
2973     % in the document for the language being used.
2974     % \begin{macrocode}
2975     INTEGERS { nameptr namesleft numnames }
2976    
2977     FUNCTION {format.names}
2978     { 's :=
2979     #1 'nameptr :=
2980     s num.names$ 'numnames :=
2981     numnames 'namesleft :=
2982     { namesleft #0 > }
2983     %<*!nm-rev1&!nm-revv1>
2984     { s nameptr
2985     %<nm-init> "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
2986     %<*!nm-init>
2987     %<nm-rev> "{vv~}{ll}{, jj}{, f.}" format.name$ 't :=
2988     %<*!nm-rev>
2989     %<nm-rv> "{vv~}{ll}{ jj}{ f{~}}" format.name$ 't :=
2990     %<*!nm-rv>
2991     %<nm-rvx> "{vv~}{ll}{ jj}{ f{}}" format.name$ 't :=
2992     %<*!nm-rvx>
2993     %<nm-rvv> "{vv~}{ll}{ jj}{ f{.}.}" format.name$ 't :=
2994     %<*!nm-rvv>
2995     %<nm-revf> "{vv~}{ll}{, jj}{, ff}" format.name$ 't :=
2996     %<*!nm-revf>
2997     "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
2998     %</!nm-revf>
2999     %</!nm-rvv>
3000     %</!nm-rvx>
3001     %</!nm-rv>
3002     %</!nm-rev>
3003     %</!nm-init>
3004     %</!nm-rev1&!nm-revv1>
3005     %<*nm-rev1>
3006     { nameptr #1 >
3007     { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't := }
3008     { s nameptr "{vv~}{ll}{, f.}{, jj}" format.name$ 't := }
3009     if$
3010     %</nm-rev1>
3011     %<*!nm-rev1&nm-revv1>
3012     { nameptr #1 >
3013     { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := }
3014     { s nameptr "{vv~}{ll}{, ff}{, jj}" format.name$ 't := }
3015     if$
3016     %</!nm-rev1&nm-revv1>
3017     nameptr #1 >
3018     {
3019     %<*nmlm>
3020     %<m1> nameptr #2 =
3021     %<m2> nameptr #3 =
3022     %<m3> nameptr #4 =
3023     %<m4> nameptr #5 =
3024     %<m5> nameptr #6 =
3025     %<m6> nameptr #7 =
3026     %<x1> numnames #1 > and
3027     %<x2> numnames #2 > and
3028     %<x3> numnames #3 > and
3029     %<x4> numnames #4 > and
3030     %<x5> numnames #5 > and
3031     %<x6> numnames #6 > and
3032     %<x7> numnames #7 > and
3033     %<x8> numnames #8 > and
3034     %<x9> numnames #9 > and
3035     { "others" 't :=
3036     #1 'namesleft := }
3037     'skip$
3038     if$
3039     %</nmlm>
3040     namesleft #1 >
3041     %<!aunm-semi> { ", " * t * }
3042     %<aunm-semi> { "; " * t * }
3043     {
3044     %<(and-com|xand)&!aunm-semi> "," *
3045     %<(and-com|xand)&aunm-semi> ";" *
3046     %<*!and-xcom&!and-com&!xand>
3047     numnames #2 >
3048     %<!aunm-semi> { "," * }
3049     %<aunm-semi> { ";" * }
3050     'skip$
3051     if$
3052     %</!and-xcom&!and-com&!xand>
3053     t "others" =
3054     %<!etal-it&!etal-rm> { " et~al." * }
3055     %<!etal-it&etal-rm> { " " * "et~al." roman.list * }
3056     %<etal-it> { " " * "et~al." emphasize * }
3057     %<*!harnm>
3058     %<!amper&!xand&!nmand-rm> { bbl.and space.word * t * }
3059     %<!amper&!xand&nmand-rm> { bbl.and roman.list space.word * t * }
3060     %<amper&!xand> { " \& " * t * }
3061     %</!harnm>
3062     %<harnm&!xand> { " \harvardand\ " * t * }
3063     %<xand> { " " * t * }
3064     if$
3065     }
3066     if$
3067     }
3068     't
3069     if$
3070     nameptr #1 + 'nameptr :=
3071     namesleft #1 - 'namesleft :=
3072     }
3073     while$
3074     }
3075    
3076     % \end{macrocode}
3077     % \end{macro}
3078     %
3079     % \begin{macro}{`format.names.ed'}
3080     % \changes{1.6(2.4)}{1995 Feb 2}{Add option \texttt{ed-rev} to allow editor
3081     % to be formatted just like authors'}
3082     % \changes{3.0}{1995 Feb 27}{Option \texttt{nm-revf} to act just as default}
3083     % When editors are used in place of authors to identify the work, the
3084     % names are always formatted just like authors'. However, in collections,
3085     % where ``edited by'' or ``\emph{names} (editors)'' are given, it is
3086     % normal not the reverse the names, even if the authors' are. The option
3087     % \texttt{ed-rev} sees to it that editor names are always formatted exactly
3088     % like those of authors, being reversed if necessary.
3089     %
3090     % The option \texttt{nm-revf} in this case acts the same as the default
3091     % when no \texttt{nm-} option given: full names with surname last. Therefore
3092     % it is not necessary to test for it at all, since it, like the default,
3093     % has the lowest priority: any other \texttt{nm-} option clobbers it.
3094     %
3095     % The option \texttt{aunm-semi} will put a semi-colon between editor names, just
3096     % as for authors, when \texttt{ed-rev} selected, in keeping with the idea
3097     % that in this case both authors and editors are to be formatted the same.
3098     % \begin{macrocode}
3099     FUNCTION {format.names.ed}
3100     %<ed-rev>{ format.names }
3101     %<*!ed-rev>
3102     { 's :=
3103     #1 'nameptr :=
3104     s num.names$ 'numnames :=
3105     numnames 'namesleft :=
3106     { namesleft #0 > }
3107     { s nameptr
3108     %<nm-init|nm-rev|nm-rev1> "{f.~}{vv~}{ll}{, jj}"
3109     %<*!nm-init&!nm-rev&!nm-rev1>
3110     %<nm-revv1> "{ff~}{vv~}{ll}{, jj}"
3111     %<*!nm-revv1>
3112     %<nm-rv> "{f{~}~}{vv~}{ll}{ jj}"
3113     %<*!nm-rv>
3114     %<nm-rvx> "{f{}~}{vv~}{ll}{ jj}"
3115     %<*!nm-rvx>
3116     %<nm-rvv> "{f{.}.~}{vv~}{ll}{ jj}"
3117     %<*!nm-rvv>
3118     "{ff~}{vv~}{ll}{, jj}"
3119     %</!nm-rvv>
3120     %</!nm-rvx>
3121     %</!nm-rv>
3122     %</!nm-revv1>
3123     %</!nm-init&!nm-rev&!nm-rev1>
3124     format.name$ 't :=
3125     nameptr #1 >
3126     {
3127     namesleft #1 >
3128     %<!aunm-semi> { ", " * t * }
3129     %<aunm-semi> { "; " * t * }
3130     {
3131     %<(and-com|xand)&!aunm-semi> "," *
3132     %<(and-com|xand)&aunm-semi> ";" *
3133     %<*!and-xcom&!and-com&!xand>
3134     numnames #2 >
3135     %<!aunm-semi> { "," * }
3136     %<aunm-semi> { ";" * }
3137     'skip$
3138     if$
3139     %</!and-xcom&!and-com&!xand>
3140     t "others" =
3141     %<!etal-it&!etal-rm> { " et~al." * }
3142     %<!etal-it&etal-rm> { " " * "et~al." roman.list * }
3143     %<etal-it> { " " * "et~al." emphasize * }
3144     %<*!harnm>
3145     %<!amper&!xand&!nmand-rm> { bbl.and space.word * t * }
3146     %<!amper&!xand&nmand-rm> { bbl.and roman.list space.word * t * }
3147     %<amper&!xand> { " \& " * t * }
3148     %</!harnm>
3149     %<harnm&!xand> { " \harvardand\ " * t * }
3150     %<xand> { " " * t * }
3151     if$
3152     }
3153     if$
3154     }
3155     't
3156     if$
3157     nameptr #1 + 'nameptr :=
3158     namesleft #1 - 'namesleft :=
3159     }
3160     while$
3161     }
3162    
3163     %</!ed-rev>
3164     % \end{macrocode}
3165     % \end{macro}
3166     % \begin{macrocode}
3167     %<*ay>
3168     FUNCTION {format.key}
3169     { empty$
3170     { key field.or.null }
3171     { "" }
3172     if$
3173     }
3174    
3175     %</ay>
3176     % \end{macrocode}
3177     % \begin{macro}{`format.authors'}
3178     % \begin{macrocode}
3179     FUNCTION {format.authors}
3180     { author empty$
3181     { "" }
3182     {
3183     %<nmft-sc> author format.names scaps
3184     %<*!nmft-sc>
3185     %<nmft-bf> author format.names bolden
3186     %<*!nmft-bf>
3187     %<nmft-it> author format.names emphasize
3188     %<*!nmft-it>
3189     author format.names
3190     %</!nmft-it>
3191     %</!nmft-bf>
3192     %</!nmft-sc>
3193     }
3194     if$
3195     }
3196    
3197     % \end{macrocode}
3198     % \end{macro}
3199     %
3200     % \begin{macro}{`format.editors'}
3201     % \changes{3.0}{1995 Mar 20}{Add option \texttt{edpar}}
3202     % The option \texttt{edpar} puts the word `editor' in parentheses.
3203     % In \texttt{genbst.mbs}, this occurred automatically with the option
3204     % \texttt{ed}, to abbreviate `editor' to `ed'. In \texttt{babel.mbs},
3205     % this was not the case, because of complications with the word functions.
3206     % Now this possibility is added as a special option, which means there is
3207     % some inconsistency with older \texttt{.dbj} files that called \texttt{ed}:
3208     % the abbreviated `ed' is not put in parentheses unless \texttt{edpar} is
3209     % also called.
3210     % \begin{macrocode}
3211     FUNCTION {format.editors}
3212     { editor empty$
3213     { "" }
3214     {
3215     %<nmft-sc> editor format.names scaps
3216     %<*!nmft-sc>
3217     %<nmft-bf> editor format.names bolden
3218     %<*!nmft-bf>
3219     %<nmft-it> editor format.names emphasize
3220     %<*!nmft-it>
3221     editor format.names
3222     %</!nmft-it>
3223     %</!nmft-bf>
3224     %</!nmft-sc>
3225     editor num.names$ #1 >
3226     %<*!edpar>
3227     { ", " * bbl.editors * }
3228     { ", " * bbl.editor * }
3229     %</!edpar>
3230     %<*edpar>
3231     { " (" * bbl.editors * ")" * }
3232     { " (" * bbl.editor * ")" * }
3233     %</edpar>
3234     if$
3235     }
3236     if$
3237     }
3238    
3239     % \end{macrocode}
3240     % \end{macro}
3241     %
3242     % \begin{macro}{`format.in.editors'}
3243     % \changes{3.0}{1995 Mar 20}{Add option \texttt{edpar}}
3244     % See the note about the option \texttt{edpar} above.
3245     % \begin{macrocode}
3246     FUNCTION {format.in.editors}
3247     { editor empty$
3248     { "" }
3249     { editor format.names.ed
3250     %<*!edby&!edby-par>
3251     editor num.names$ #1 >
3252     %<*!edpar>
3253     { ", " * bbl.editors * }
3254     { ", " * bbl.editor * }
3255     %</!edpar>
3256     %<*edpar>
3257     { " (" * bbl.editors * ")" * }
3258     { " (" * bbl.editor * ")" * }
3259     %</edpar>
3260     if$
3261     %</!edby&!edby-par>
3262     }
3263     if$
3264     }
3265    
3266     % \end{macrocode}
3267     % \end{macro}
3268     %
3269     % \begin{macro}{`format.isbn'}
3270     % \changes{3.0}{1995 Mar 1}{Add function}
3271     % \begin{macrocode}
3272     %<*isbn>
3273     FUNCTION {format.isbn}
3274     { isbn empty$
3275     { "" }
3276     {
3277     %<!blk-com&!blk-tit&!blk-tita> new.block
3278     "ISBN " isbn * }
3279     if$
3280     }
3281    
3282     %</isbn>
3283     % \end{macrocode}
3284     % \end{macro}
3285     %
3286     % \begin{macro}{`format.title'}
3287     % \changes{1.4(2.2)a}{1994 Sep 7}{Add enquote function to put titles in quotes,
3288     % such that punctuation is inside quotes.}
3289     % \changes{3.8}{1996 Apr 17}{Fix bug in quoted title and \texttt{blk-com}}
3290     % \begin{macrocode}
3291     FUNCTION {format.title}
3292     { title empty$
3293     { "" }
3294     %<!atit-u> { title "t" change.case$
3295     %<atit-u> { title
3296     %<tit-it> emphasize
3297     %<*!tit-it&(tit-q|tit-qq)>
3298     "\enquote{" swap$ *
3299     %<*blk-com>
3300     non.stop
3301     %<!com-semi&!com-blank> { ",} " * }
3302     %<com-semi> { ";} " * }
3303     %<!com-semi&com-blank> { "} " * }
3304     { "} " * }
3305     if$
3306     %</blk-com>
3307     %<!blk-com> add.period$ "}" *
3308     %</!tit-it&(tit-q|tit-qq)>
3309     }
3310     if$
3311     }
3312    
3313     % \end{macrocode}
3314     % \end{macro}
3315     %
3316     % \begin{macro}{`end.quote.title'}
3317     % \changes{3.82}{1996 Nov 15}{Add macro to finish off quoted titles}
3318     % For a quoted title, the punctuation appears in the quotes. For commas
3319     % between block, this means the inter-block punctuation is already present,
3320     % so it must be suppressed after every \texttt{format.title output}. This
3321     % is done by setting the \texttt{output.state} to \texttt{before.all}, but
3322     % only if there really was a title. Call this macro every time after
3323     % titles are output.
3324     % \begin{macrocode}
3325     %<*blk-com&(tit-q|tit-qq)>
3326     FUNCTION {end.quote.title}
3327     { title empty$
3328     'skip$
3329     { before.all 'output.state := }
3330     if$
3331     }
3332    
3333     %</blk-com&(tit-q|tit-qq)>
3334     % \end{macrocode}
3335     % \end{macro}
3336     %
3337     % \begin{macro}{`make.full.names'}
3338     % \changes{1.1}{1993 Nov 12}{Add key labels to \texttt{calc.long.label} and
3339     % get {\tt'author} and {\tt'editor} in right order when author
3340     % missing.}
3341     % \changes{1.4(2.2)}{1994 Sep 5}{Remove \texttt{calc.long.label} and
3342     % \texttt{format.long.lab.names}, replacing them with
3343     % \texttt{format.full.names}, \texttt{make.full.names}, and adding
3344     % \texttt{author.editor.key}, \texttt{author.key}, and \texttt{editor.key}}
3345     % \changes{1.4(2.2)a}{1994 Sep 7}{Remove option \texttt{and-com} from
3346     % \texttt{make.full.names}}
3347     % \changes{1.5(2.3)}{1994 Sep 15}{Add full names for \texttt{natbib} v5.3}
3348     % \changes{3.6}{1995 Dec 8}{Suppress `and' in full list if suppressed in short}
3349     % \changes{3.6}{1995 Dec 8}{Font of `and' in lists same as in citations}
3350     % In versions before 2.2, there were two functions \texttt{calc.long.label}
3351     % and \texttt{format.long.lab.names} that made up the string
3352     % \texttt{long.label} for each entry. This contains the full author list.
3353     % However, there was a bug in the one routine, entered by mistake when an
3354     % earlier bug was removed, and more seriously, the string
3355     % \texttt{long.label} was limited to \texttt{entry.max\$} characters, 100 on
3356     % my system. Author lists were truncated. Thus, \texttt{make.full.names}
3357     % is used instead to enter the full list of names directly in the
3358     % \texttt{output.bibitem} function, without an intermediate string. This
3359     % involves changing the order of some function definitions, especially
3360     % \texttt{output.bibitem} must come later.
3361     % \begin{macrocode}
3362     %<*har|cay|nat>
3363     FUNCTION {format.full.names}
3364     {'s :=
3365     #1 'nameptr :=
3366     s num.names$ 'numnames :=
3367     numnames 'namesleft :=
3368     { namesleft #0 > }
3369     { s nameptr
3370     "{vv~}{ll}" format.name$ 't :=
3371     nameptr #1 >
3372     {
3373     %<*nmlm>
3374     %<m1> nameptr #2 =
3375     %<m2> nameptr #3 =
3376     %<m3> nameptr #4 =
3377     %<m4> nameptr #5 =
3378     %<m5> nameptr #6 =
3379     %<x1> numnames #1 > and
3380     %<x2> numnames #2 > and
3381     %<x3> numnames #3 > and
3382     %<x4> numnames #4 > and
3383     %<x5> numnames #5 > and
3384     %<x6> numnames #6 > and
3385     %<x7> numnames #7 > and
3386     %<x8> numnames #8 > and
3387     %<x9> numnames #9 > and
3388     { "others" 't :=
3389     #1 'namesleft := }
3390     'skip$
3391     if$
3392     %</nmlm>
3393     namesleft #1 >
3394     { ", " * t * }
3395     {
3396     %<*!and-xcom>
3397     numnames #2 >
3398     { "," * }
3399     'skip$
3400     if$
3401     %</!and-xcom>
3402     t "others" =
3403     %<!etal-it&!etal-rm> { " et~al." * }
3404     %<!etal-it&etal-rm> { " " * "et~al." roman.cite * }
3405     %<etal-it> { " " * "et~al." emphasize * }
3406     %<*!harnm>
3407     %<!amper&!and-rm> { bbl.and space.word * t * }
3408     %<!amper&and-rm> { bbl.and roman.cite space.word * t * }
3409     %<amper> { " \& " * t * }
3410     %</!harnm>
3411     %<harnm> { " \harvardand\ " * t * }
3412     if$
3413     }
3414     if$
3415     }
3416     't
3417     if$
3418     nameptr #1 + 'nameptr :=
3419     namesleft #1 - 'namesleft :=
3420     }
3421     while$
3422     }
3423    
3424     FUNCTION {author.editor.key.full}
3425     { author empty$
3426     { editor empty$
3427     { key empty$
3428     { cite$ #1 #3 substring$ }
3429     'key
3430     if$
3431     }
3432     { editor format.full.names }
3433     if$
3434     }
3435     { author format.full.names }
3436     if$
3437     }
3438    
3439     FUNCTION {author.key.full}
3440     { author empty$
3441     { key empty$
3442     { cite$ #1 #3 substring$ }
3443     'key
3444     if$
3445     }
3446     { author format.full.names }
3447     if$
3448     }
3449    
3450     FUNCTION {editor.key.full}
3451     { editor empty$
3452     { key empty$
3453     { cite$ #1 #3 substring$ }
3454     'key
3455     if$
3456     }
3457     { editor format.full.names }
3458     if$
3459     }
3460    
3461     FUNCTION {make.full.names}
3462     { type$ "book" =
3463     type$ "inbook" =
3464     or
3465     'author.editor.key.full
3466     { type$ "proceedings" =
3467     'editor.key.full
3468     'author.key.full
3469     if$
3470     }
3471     if$
3472     %<lab-it> emphasize
3473     %<lab-bf&!lab-it> bolden
3474     %<lab-sc&!lab-it&!lab-bf> scaps
3475     }
3476    
3477     %</har|cay|nat>
3478     % \end{macrocode}
3479     % \end{macro}
3480     %
3481     % \begin{macro}{`output.bibitem'}
3482     %\changes{1.1}{1993 Nov 12}{Test for missing year, set to {\tt????}.}
3483     % The \texttt{output.bibitem} function formats the |\bibitem| entries.
3484     %\changes{1.4(2.2)}{1994 Sep 5}{Move to later location, add
3485     % \texttt{make.full.names} instead of inserting string \texttt{long.label}}
3486     %\changes{1.5(2.3)}{1994 Sep 16}{Add option \texttt{nat} for full author list
3487     % for \texttt{natbib.sty} version~5.3}
3488     % \begin{macrocode}
3489     FUNCTION {output.bibitem}
3490     { newline$
3491     %<*ay>
3492     %<!har> "\bibitem[" write$
3493     %<har> "\harvarditem" write$
3494     %<nmd> "\protect\citeauthoryear{" write$
3495     %<ast> "\protect\astroncite{" write$
3496     %<cay> "\protect\citeauthoryear{" make.full.names * "}{" * write$
3497     %<cn> "\protect\citename{" write$
3498     %<!har> label write$
3499     %<har> make.full.names duplicate$ label =
3500     %<har> 'skip$
3501     %<har> { "[" label * "]" * write$ }
3502     %<har> if$
3503     %<har> "{" swap$ * "}{" * write$
3504     %<har> year duplicate$ empty$
3505     %<cn> ", }" year duplicate$ empty$
3506     %<cay|nmd|ast> "}{" year duplicate$ empty$
3507     %<har|cn|cay|nmd|ast> { pop$ "????" }
3508     %<har|cn|cay|nmd|ast> 'skip$
3509     %<har|cn|cay|nmd|ast> if$
3510     %<har> extra.label * "}{" * write$
3511     %<cn> * extra.label * "]{" * write$
3512     %<cay|nmd|ast> * extra.label * "}]{" * write$
3513     %<alk> "]{" write$
3514     %<!(har|cay|nmd|ast|alk|cn|nat)> ")]{" write$
3515     %<nat> ")" make.full.names duplicate$ short.list =
3516     %<nat> { pop$ }
3517     %<nat> { * }
3518     %<nat> if$
3519     %<nat> "]{" * write$
3520     %</ay>
3521     %<!ay&!(cite|alph)> "\bibitem{" write$
3522     %<!ay&(cite|alph)> "\bibitem[" label * "]{" * write$
3523     cite$ write$
3524     "}" write$
3525     newline$
3526     ""
3527     before.all 'output.state :=
3528     }
3529    
3530     % \end{macrocode}
3531     % \end{macro}
3532     %
3533     % \begin{macro}{`bracket.number'}
3534     % \changes{3.6}{1995 Nov 23}{Add function to put `number' on pages}
3535     % For the scheme in which the `number' is added to the pages, provide this
3536     % function which is called in \texttt{num.pages}. This adds number at
3537     % the start and after any hyphens.
3538     % \begin{macrocode}
3539     %<*vnum-pg>
3540     FUNCTION {bracket.number}
3541     { number empty$
3542     'skip$
3543     { "(" number * ")" * * }
3544     if$
3545     }
3546    
3547     FUNCTION {num.pages}
3548     { 't :=
3549     "0" 's :=
3550     ""
3551     bracket.number
3552     { t empty$ not }
3553     { t #1 #1 substring$ "-" =
3554     { "1" 's := }
3555     { "1" s =
3556     'bracket.number
3557     'skip$
3558     if$
3559     "0" 's :=
3560     }
3561     if$
3562     t #1 #1 substring$ *
3563     t #2 global.max$ substring$ 't :=
3564     }
3565     while$
3566     }
3567    
3568     %</vnum-pg>
3569     % \end{macrocode}
3570     % \end{macro}
3571     % \begin{macrocode}
3572     FUNCTION {n.dashify}
3573     { 't :=
3574     ""
3575     { t empty$ not }
3576     { t #1 #1 substring$ "-" =
3577     { t #1 #2 substring$ "--" = not
3578     { "--" *
3579     t #2 global.max$ substring$ 't :=
3580     }
3581     { { t #1 #1 substring$ "-" = }
3582     { "-" *
3583     t #2 global.max$ substring$ 't :=
3584     }
3585     while$
3586     }
3587     if$
3588     }
3589     { t #1 #1 substring$ *
3590     t #2 global.max$ substring$ 't :=
3591     }
3592     if$
3593     }
3594     while$
3595     }
3596    
3597     % \end{macrocode}
3598     %
3599     % \begin{macro}{`word.in'}
3600     % \changes{2.0}{1994 Jan 31}{Function \texttt{word.in} constructed out of
3601     % \texttt{bbl.in} or \texttt{bbl.iin}.}
3602     % \changes{3.0}{1995 Feb 16}{Use only \texttt{bbl.in} and capitalize it
3603     % as necessary; remove \texttt{bbl.iin}}
3604     % \changes{3.81}{1996 Jun 19}{Add option \texttt{in-x} to suppress `in'}
3605     % The function \texttt{word.in} prints the word \textsl{in} for references
3606     % that are
3607     % contained in a larger work, or in conference proceedings. One may have a
3608     % colon after the word with the option \texttt{in-col}. If blocks of text are
3609     % to be separated with commas (option \texttt{blk-com}) then the word remains
3610     % in lower case, as it is defined in \texttt{bbl.in}; but if blocks act as
3611     % sentences, then it must be capitalized.^^A by using \texttt{bbl.iin}.
3612     % \begin{macrocode}
3613     FUNCTION {word.in}
3614     %<in-x>{ "" }
3615     %<*!in-x>
3616     %<blk-com|blk-tita>{ bbl.in
3617     %<!blk-com&!blk-tita>{ bbl.in capitalize
3618     %<in-col> ":" *
3619     " " * }
3620     %</!in-x>
3621    
3622     % \end{macrocode}
3623     % \end{macro}
3624     % \begin{macro}{`format.date'}
3625     % \changes{1.4(2.2)}{1994 Sep 6}{Add option \texttt{yr-per} to put period
3626     % before date}
3627     % \changes{1.5(2.3)}{1994 Sep 16}{Add \texttt{harvard} bracket names to year
3628     % with new option \texttt{harnm}}
3629     % \changes{1.6(2.4)}{1995 Feb 2}{Add \texttt{yr-blk} for no punctuation before
3630     % the date}
3631     % \changes{3.2}{1995 May 19}{Add \texttt{dtrev} option for year month}
3632     % \changes{3.2}{1995 May 19}{Add \texttt{mth-bare} for dotless abbreviation
3633     % of months}
3634     % \changes{3.4}{1995 Sep 28}{Add \texttt{volp-dt} for date after volume}
3635     % \changes{3.5}{1995 Oct 9}{Add brace pair after
3636     % \texttt{\char`\\harvardyearright}}
3637     % \changes{3.5}{1995 Oct 16}{Add \texttt{aymth} option for months in dates}
3638     % \changes{3.8}{1996 Mar 19}{Add \texttt{vnum-dt} option}
3639     % \changes{3.81}{1996 Sep 12}{Add \texttt{yr-com} option}
3640     % \changes{3.82}{1996 Dec 12}{Fix bug that left off extra label for plain year}
3641     % The new \texttt{harvard.sty} allows variable brackets around the date
3642     % in the reference list. It uses |\harvardyearleft| and |\harvardyearright|
3643     % in the \texttt{.bst} files. Allow this with the option \texttt{harnm},
3644     % which could actually be used without the \texttt{har} option. Note that
3645     % this overrides the other year formatting options.
3646     % \begin{macrocode}
3647     %<*ay>
3648     FUNCTION {format.date}
3649     { year duplicate$ empty$
3650     { "empty year in " cite$ * "; set to ????" * warning$
3651     pop$ "????" }
3652     'skip$
3653     if$
3654     %<*aymth>
3655     month empty$
3656     'skip$
3657     { month
3658     %<dtrev> swap$
3659     " " * swap$ *
3660     }
3661     if$
3662     %<mth-bare> purify$
3663     %</aymth>
3664     %<dtbf> bolden
3665     extra.label *
3666     %<*!harnm>
3667     %<*yr-par|yr-brk|yr-col|yr-blk|yr-com|yr-per>
3668     %<!volp-dt&!vnum-dt> before.all 'output.state :=
3669     %<yr-par> " (" swap$ * ")" *
3670     %<!yr-par&yr-brk> " [" swap$ * "]" *
3671     %<!yr-par&!yr-brk&yr-col> ": " swap$ *
3672     %<!yr-par&!yr-brk&!yr-col&yr-com> ", " swap$ *
3673     %<!yr-par&!yr-brk&!yr-col&!yr-com&yr-per> after.sentence 'output.state :=
3674     %<!yr-par&!yr-brk&!yr-col&!yr-com&!yr-per&yr-blk> " " swap$ *
3675     %</yr-par|yr-brk|yr-col|yr-blk|yr-com|yr-per>
3676     %</!harnm>
3677     %<harnm> " \harvardyearleft " swap$ * "\harvardyearright{}" *
3678     }
3679    
3680     %</ay>
3681     %<*!ay>
3682     FUNCTION {format.date}
3683     { year empty$
3684     { month empty$
3685     { "" }
3686     { "there's a month but no year in " cite$ * warning$
3687     month
3688     }
3689     if$
3690     }
3691     { month empty$
3692     'year
3693     %<!dtrev> { month " " * year * }
3694     %<dtrev> { year " " * month * }
3695     if$
3696     %<mth-bare> purify$
3697     }
3698     if$
3699     %<dtbf> bolden
3700     %<*yr-par|yr-brk|yr-col|yr-com|yr-per|yr-blk>
3701     duplicate$ empty$
3702     'skip$
3703     {
3704     %<!volp-dt&!vnum-dt> before.all 'output.state :=
3705     %<yr-par> " (" swap$ * ")" *
3706     %<!yr-par&yr-brk> " [" swap$ * "]" *
3707     %<!yr-par&!yr-brk&yr-col> ": " swap$ *
3708     %<!yr-par&!yr-brk&!yr-col&yr-com> ", " swap$ *
3709     %<!yr-par&!yr-brk&!yr-col&!yr-com&yr-per> after.sentence 'output.state :=
3710     %<!yr-par&!yr-brk&!yr-col&!yr-com&!yr-per&yr-blk> " " swap$ *
3711     }
3712     if$
3713     %</yr-par|yr-brk|yr-col|yr-com|yr-per|yr-blk>
3714     }
3715    
3716     %</!ay>
3717     % \end{macrocode}
3718     % \end{macro}
3719     % \begin{macrocode}
3720     FUNCTION {format.btitle}
3721     %<!btit-rm>{ title emphasize
3722     %<btit-rm>{ title
3723     }
3724    
3725     FUNCTION {tie.or.space.connect}
3726     { duplicate$ text.length$ #3 <
3727     { "~" }
3728     { " " }
3729     if$
3730     swap$ * *
3731     }
3732    
3733     FUNCTION {either.or.check}
3734     { empty$
3735     'pop$
3736     { "can't use both " swap$ * " fields in " * cite$ * warning$ }
3737     if$
3738     }
3739    
3740     FUNCTION {format.bvolume}
3741     { volume empty$
3742     { "" }
3743     { bbl.volume volume tie.or.space.connect
3744     series empty$
3745     'skip$
3746     { bbl.of space.word * series emphasize * }
3747     if$
3748     "volume and number" number either.or.check
3749     }
3750     if$
3751     }
3752    
3753     FUNCTION {format.number.series}
3754     { volume empty$
3755     { number empty$
3756     { series field.or.null }
3757     { output.state mid.sentence =
3758     { bbl.number }
3759     { bbl.number capitalize }
3760     if$
3761     number tie.or.space.connect
3762     series empty$
3763     { "there's a number but no series in " cite$ * warning$ }
3764     { bbl.in space.word * series * }
3765     if$
3766     }
3767     if$
3768     }
3769     { "" }
3770     if$
3771     }
3772    
3773     % \end{macrocode}
3774     %
3775     % \begin{macro}{`is.num'}
3776     % \changes{2.0}{1994 Jan 31}{Add function to test for digit.}
3777     % This function takes the single-character string on the stack and returns
3778     % 1 if it is a digit, else 0.
3779     % \begin{macrocode}
3780     FUNCTION {is.num}
3781     { chr.to.int$
3782     duplicate$ "0" chr.to.int$ < not
3783     swap$ "9" chr.to.int$ > not and
3784     }
3785    
3786     % \end{macrocode}
3787     % \end{macro}
3788     %
3789     % \begin{macro}{`extract.num'}
3790     % \changes{2.0}{1994 Jan 31}{Add function to extract leading number from
3791     % a literal string.}
3792     % This function tests the string on the stack to see if it begins with a
3793     % number. If so, that number is left on the stack; if the string contains
3794     % no numbers at the start, it is left unchanged. The idea is to convert
3795     % \textsl{1st} to \textsl{1} and leave \textsl{first} as is.
3796     % This is used by {\tt convert.edition}.
3797     % \begin{macrocode}
3798     FUNCTION {extract.num}
3799     { duplicate$ 't :=
3800     "" 's :=
3801     { t empty$ not }
3802     { t #1 #1 substring$
3803     t #2 global.max$ substring$ 't :=
3804     duplicate$ is.num
3805     { s swap$ * 's := }
3806     { pop$ "" 't := }
3807     if$
3808     }
3809     while$
3810     s empty$
3811     'skip$
3812     { pop$ s }
3813     if$
3814     }
3815    
3816     % \end{macrocode}
3817     % \end{macro}
3818     %
3819     % \begin{macro}{`convert.edition'}
3820     % \changes{2.0}{1994 Jan 31}{Add function to convert \texttt{edition} entry
3821     % text from word to a function}
3822     % The function \texttt{convert.edition} takes the text in the field
3823     % \texttt{edition} and changes it to the language-specific equivalent. As
3824     % originally planned for \btx, this field should contain the words
3825     % \textsl{First}, \textsl{Second}, etc. Being so explicit,
3826     % it is not so easy to translate, nor to
3827     % convert to \textsl{1st}, \textsl{2nd}, etc., if one wanted.
3828     % This function carries out the translation, by changing
3829     % \textsl{first} or \textsl{1} to \texttt{bbl.first}, and so
3830     % on. The field is reduced to lower case to make it case insensitive. If no
3831     % translation is found, then the original text in \texttt{edition} is used
3832     % instead, as it stands. However, if the original is a number greater than
3833     % the maximum for which text is provided, then \texttt{bbl.th} is added to
3834     % it.
3835     % \begin{macrocode}
3836     FUNCTION {convert.edition}
3837     { edition extract.num "l" change.case$ 's :=
3838     s "first" = s "1" = or
3839     { bbl.first 't := }
3840     { s "second" = s "2" = or
3841     { bbl.second 't := }
3842     { s "third" = s "3" = or
3843     { bbl.third 't := }
3844     { s "fourth" = s "4" = or
3845     { bbl.fourth 't := }
3846     { s "fifth" = s "5" = or
3847     { bbl.fifth 't := }
3848     { s #1 #1 substring$ is.num
3849     %<!english&exlang> { s bbl.th * 't := }
3850     %<english|!exlang> { s eng.ord 't := }
3851     { edition 't := }
3852     if$
3853     }
3854     if$
3855     }
3856     if$
3857     }
3858     if$
3859     }
3860     if$
3861     }
3862     if$
3863     t
3864     }
3865    
3866     % \end{macrocode}
3867     % \end{macro}
3868     %
3869     % \begin{macro}{`format.edition'}
3870     % \changes{2.0}{1994 Jan 31}{Add call to \texttt{convert.edition}}
3871     % This function formats the text for the edition specification, such as
3872     % ``Second edition''. It combines the edition number with the word
3873     % \textsl{edition}.
3874     % \begin{macrocode}
3875     FUNCTION {format.edition}
3876     { edition empty$
3877     { "" }
3878     { output.state mid.sentence =
3879     { convert.edition "l" change.case$ " " * bbl.edition * }
3880     { convert.edition "t" change.case$ " " * bbl.edition * }
3881     if$
3882     }
3883     if$
3884     }
3885    
3886     % \end{macrocode}
3887     % \end{macro}
3888     % \begin{macrocode}
3889     INTEGERS { multiresult }
3890    
3891     FUNCTION {multi.page.check}
3892     { 't :=
3893     #0 'multiresult :=
3894     { multiresult not
3895     t empty$ not
3896     and
3897     }
3898     { t #1 #1 substring$
3899     duplicate$ "-" =
3900     swap$ duplicate$ "," =
3901     swap$ "+" =
3902     or or
3903     { #1 'multiresult := }
3904     { t #2 global.max$ substring$ 't := }
3905     if$
3906     }
3907     while$
3908     multiresult
3909     }
3910    
3911     % \end{macrocode}
3912     % \begin{macro}{`format.pages'}
3913     % \changes{3.6}{1995 Nov 24}{Add option \texttt{bkpg-par}}
3914     % \begin{macrocode}
3915     FUNCTION {format.pages}
3916     { pages empty$
3917     { "" }
3918     { pages multi.page.check
3919     %<*!bkpg-par>
3920     { bbl.pages pages n.dashify tie.or.space.connect }
3921     { bbl.page pages tie.or.space.connect }
3922     %</!bkpg-par>
3923     %<*bkpg-par>
3924     { "(" bbl.pages pages n.dashify tie.or.space.connect ")" * * }
3925     { "(" bbl.page pages tie.or.space.connect ")" * * }
3926     %</bkpg-par>
3927     if$
3928     }
3929     if$
3930     }
3931    
3932     % \end{macrocode}
3933     % \end{macro}
3934     % \begin{macrocode}
3935     %<*jpg-1>
3936     FUNCTION {first.page}
3937     { 't :=
3938     ""
3939     { t empty$ not t #1 #1 substring$ "-" = not and }
3940     { t #1 #1 substring$ *
3941     t #2 global.max$ substring$ 't :=
3942     }
3943     while$
3944     }
3945    
3946     %</jpg-1>
3947     % \end{macrocode}
3948     %
3949     % \begin{macro}{`format.journal.pages'}
3950     % \changes{3.82}{1996 Nov 15}{Remove from \texttt{format.vol.num.pages} to
3951     % be a separate function}
3952     % \begin{macrocode}
3953     FUNCTION {format.journal.pages}
3954     {
3955     pages empty$
3956     'skip$
3957     { duplicate$ empty$
3958     { pop$ format.pages }
3959     %<*!jpg-1>
3960     %<volp-dt&!vnum-pg&!jwdpg> { " " * pages n.dashify * }
3961     %<volp-dt&vnum-pg> { " " * pages num.pages n.dashify * }
3962     %<volp-dt&!vnum-pg&jwdpg> { " " * bbl.pages "~" * * pages n.dashify * }
3963     %<*!volp-dt>
3964     %<volp-sp&!vnum-pg&!jwdpg> { ": " * pages n.dashify * }
3965     %<volp-sp&vnum-pg> { ": " * pages num.pages n.dashify * }
3966     %<volp-sp&!vnum-pg&jwdpg> { ": " * bbl.pages "~" * * pages n.dashify * }
3967     %<*!volp-sp>
3968     %<volp-blk&!vnum-pg&!jwdpg> { " " * pages n.dashify * }
3969     %<volp-blk&vnum-pg> { " " * pages num.pages n.dashify * }
3970     %<volp-blk&!vnum-pg&jwdpg> { " " * bbl.pages "~" * * pages n.dashify * }
3971     %<*!volp-blk>
3972     %<volp-com&!vnum-pg&!jwdpg> { ", " * pages n.dashify * }
3973     %<volp-com&vnum-pg> { ", " * pages num.pages n.dashify * }
3974     %<volp-com&!vnum-pg&jwdpg> { ", " * bbl.pages "~" * * pages n.dashify * }
3975     %<*!volp-com>
3976     %<volp-semi&!vnum-pg&!jwdpg> { "; " * pages n.dashify * }
3977     %<volp-semi&vnum-pg> { "; " * pages num.pages n.dashify * }
3978     %<volp-semi&!vnum-pg&jwdpg> { "; " * bbl.pages "~" * * pages n.dashify * }
3979     %<*!volp-semi>
3980     %<!vnum-pg&!jwdpg> { ":" * pages n.dashify * }
3981     %<vnum-pg> { ":" * pages num.pages n.dashify * }
3982     %<!vnum-pg&jwdpg> { ":" * bbl.pages "~" * * pages n.dashify * }
3983     %</!volp-semi>
3984     %</!volp-com>
3985     %</!volp-blk>
3986     %</!volp-sp>
3987     %</!volp-dt>
3988     %</!jpg-1>
3989     %<*jpg-1>
3990     %<volp-dt&!vnum-pg&!jwdpg> { " " * pages first.page * }
3991     %<volp-dt&vnum-pg> { " " * pages first.page num.pages * }
3992     %<volp-dt&!vnum-pg&jwdpg> { " " * bbl.page "~" * * pages first.page * }
3993     %<*!volp-dt>
3994     %<volp-sp&!vnum-pg&!jwdpg> { ": " * pages first.page * }
3995     %<volp-sp&vnum-pg> { ": " * pages first.page num.pages * }
3996     %<volp-sp&!vnum-pg&jwdpg> { ": " * bbl.page "~" * * pages first.page * }
3997     %<*!volp-sp>
3998     %<volp-blk&!vnum-pg&!jwdpg> { " " * pages first.page * }
3999     %<volp-blk&vnum-pg> { " " * pages first.page num.pages * }
4000     %<volp-blk&!vnum-pg&jwdpg> { " " * bbl.page "~" * * pages first.page * }
4001     %<*!volp-blk>
4002     %<volp-com&!vnum-pg&!jwdpg> { ", " * pages first.page * }
4003     %<volp-com&vnum-pg> { ", " * pages first.page num.pages * }
4004     %<volp-com&!vnum-pg&jwdpg> { ", " * bbl.page "~" * * pages first.page * }
4005     %<*!volp-com>
4006     %<volp-semi&!vnum-pg&!jwdpg> { "; " * pages first.page * }
4007     %<volp-semi&vnum-pg> { "; " * pages first.page num.pages * }
4008     %<volp-semi&!vnum-pg&jwdpg> { "; " * bbl.page "~" * * pages first.page * }
4009     %<*!volp-semi>
4010     %<!vnum-pg&!jwdpg> { ":" * pages first.page * }
4011     %<vnum-pg> { ":" * pages first.page num.pages * }
4012     %<!vnum-pg&jwdpg> { ":" * bbl.page "~" * * pages first.page * }
4013     %</!volp-semi>
4014     %</!volp-com>
4015     %</!volp-blk>
4016     %</!volp-sp>
4017     %</!volp-dt>
4018     %</jpg-1>
4019     if$
4020     }
4021     if$
4022     }
4023    
4024     % \end{macrocode}
4025     % \end{macro}
4026     % \begin{macro}{`format.vol.num.pages'}
4027     % \changes{1.4(2.2)}{1994 Sep 6}{Add option \texttt{volp-sp} to put space
4028     % after colon in vol:~page.}
4029     % \changes{1.5(2.3)c}{1995 Jan 20}{Add options \texttt{vnum-h},
4030     % \texttt{vnum-nr} and \texttt{vnum-x} for various formats of
4031     % journal vol number}
4032     % \changes{1.7(2.5)}{1995 Feb 9}{Add options \texttt{vnum-sp} and
4033     % \texttt{vnum-cm}}
4034     % \changes{3.0}{1995 Mar 17}{Add option \texttt{volp-semi}}
4035     % \changes{3.4}{1995 Sep 28}{Put \texttt{bolden} in right place for
4036     % \texttt{vol-2bf} option}
4037     % \changes{3.8}{1996 Mar 19}{Put date between volume and number}
4038     % \changes{3.8}{1996 Mar 19}{Add possibilitity of `page' word}
4039     % \changes{3.81}{1996 Jun 19}{Activate \texttt{jwdpg} option properly}
4040     % \changes{3.81}{1996 Jun 19}{Add possibilitity of `volume' word}
4041     % \changes{3.82}{1996 Nov 15}{Add option \texttt{pp-last}}
4042     % The option \texttt{vnum-dt} is most unpleasing. There should be more choice
4043     % about how the number is formatted. It should be a separate option from
4044     % the \texttt{vnum-} series, but it was a special wish. Option \texttt{jwdpg}
4045     % is also part of this special wish. (Was not properly programmed until 3.81).
4046     %
4047     % The option \texttt{pp-last} is similar to \texttt{vnum-dt}, and might
4048     % actually be able to replace it if used correctly with other options. But
4049     % that is speculation on my part. What it does is to suppress the pages
4050     % in the formatting macros, and sees to it that the pages are added just
4051     % before any notes in those entries that take pages. This applies to more than
4052     % just \texttt{article}, but to \texttt{inbook}, \texttt{incollection} as well.
4053     % \begin{macrocode}
4054     FUNCTION {format.vol.num.pages}
4055     { volume field.or.null
4056     %<*jwdvol>
4057     volume empty$
4058     'skip$
4059     { bbl.volume "~" * swap$ * }
4060     if$
4061     %</jwdvol>
4062     %<vol-bf&!vol-2bf> bolden
4063     %<!vol-bf&!vol-2bf&vol-it> emphasize
4064     %<vnum-dt> format.date *
4065     %<*!vnum-x&!vnum-pg>
4066     number empty$
4067     'skip$
4068     {
4069     %<vnum-sp> "~(" number * ")" * *
4070     %<!vnum-sp&vnum-cm> ", " number * *
4071     %<!vnum-sp&!vnum-cm&vnum-nr> ", " bbl.nr * number tie.or.space.connect *
4072     %<!vnum-sp&!vnum-cm&!vnum-nr&vnum-h> ", \#" number * *
4073     %<!vnum-sp&!vnum-cm&!vnum-nr&!vnum-h&vnum-dt> " " number * *
4074     %<!vnum-sp&!vnum-cm&!vnum-nr&!vnum-h&!vnum-dt> "(" number * ")" * *
4075     volume empty$
4076     { "there's a number but no volume in " cite$ * warning$ }
4077     'skip$
4078     if$
4079     }
4080     if$
4081     %</!vnum-x&!vnum-pg>
4082     %<!vol-bf&vol-2bf> bolden
4083     %<volp-dt> format.date *
4084     %<!pp-last> format.journal.pages
4085     }
4086    
4087     % \end{macrocode}
4088     % \end{macro}
4089     % \begin{macrocode}
4090     FUNCTION {format.chapter.pages}
4091     { chapter empty$
4092     %<!pp-last> 'format.pages
4093     %<pp-last> { "" }
4094     { type empty$
4095     { bbl.chapter }
4096     { type "l" change.case$ }
4097     if$
4098     chapter tie.or.space.connect
4099     %<*!pp-last>
4100     pages empty$
4101     'skip$
4102     { ", " * format.pages * }
4103     if$
4104     %</!pp-last>
4105     }
4106     if$
4107     }
4108    
4109     % \end{macrocode}
4110     % \begin{macro}{`format.in.ed.booktitle'}
4111     % \changes{1.5(2.3)b}{1995 Jan 18}{Add option \texttt{edby-par} to put editors
4112     % in parentheses}
4113     % \changes{1.6(2.4)}{1995 Feb 2}{If \texttt{ed} and \texttt{edby} given
4114     % together, abbreviate `edited by' to `ed(s).'}
4115     % \changes{3.1}{1995 May 2}{Add option \texttt{edbyx} to replace `edited by'
4116     % by `ed(s).'}
4117     % \changes{3.81}{1996 Jun 26}{Add option \texttt{edcap}}
4118     % Prior to version 3.81, the \textsl{Editor} or \textsl{Edited by} in
4119     % parentheses was meant to be capitalized, but this did not work properly.
4120     % Now the option \texttt{edcap} produces this, and default is not capitalized.
4121     % \begin{macrocode}
4122     FUNCTION {format.in.ed.booktitle}
4123     { booktitle empty$
4124     { "" }
4125     { editor empty$
4126     { word.in booktitle emphasize * }
4127     %<!edby&!edby-par> { word.in format.in.editors * ", " *
4128     %<!edby&!edby-par> booktitle emphasize * }
4129     %<*edby|edby-par>
4130     { word.in booktitle emphasize *
4131     %<edby> ", " *
4132     %<edby-par> " (" *
4133     %<!edbyx&!edbyy> bbl.edby
4134     %<*edbyx>
4135     editor num.names$ #1 >
4136     { bbl.editors }
4137     { bbl.editor }
4138     if$
4139     %</edbyx>
4140     %<edby-par&edcap> capitalize
4141     %<edbyx|!edbyy> *
4142     " " *
4143     format.in.editors *
4144     %<*edbyy>
4145     ", " *
4146     editor num.names$ #1 >
4147     { bbl.editors }
4148     { bbl.editor }
4149     if$
4150     *
4151     %</edbyy>
4152     %<edby-par> ")" *
4153     }
4154     %</edby|edby-par>
4155     if$
4156     }
4157     if$
4158     }
4159    
4160     % \end{macrocode}
4161     % \end{macro}
4162     % \begin{macrocode}
4163     %<*!ay>
4164     FUNCTION {empty.misc.check}
4165     { author empty$ title empty$ howpublished empty$
4166     month empty$ year empty$ note empty$
4167     and and and and and
4168     %<!seq-no|alph> key empty$ not and
4169     { "all relevant fields are empty in " cite$ * warning$ }
4170     'skip$
4171     if$
4172     }
4173    
4174     %</!ay>
4175     FUNCTION {format.thesis.type}
4176     { type empty$
4177     'skip$
4178     { pop$
4179     type "t" change.case$
4180     }
4181     if$
4182     }
4183    
4184     FUNCTION {format.tr.number}
4185     { type empty$
4186     { bbl.techrep }
4187     'type
4188     if$
4189     number empty$
4190     { "t" change.case$ }
4191     { number tie.or.space.connect }
4192     if$
4193     }
4194    
4195     % \end{macrocode}
4196     %
4197     % \begin{macro}{`format.article.crossref'}
4198     %\changes{1.3(2.1)}{1994 Jul 1}{Emphasize \texttt{journal} with
4199     % \texttt{emphasize}, not explicitly}
4200     % The \texttt{journal} field was emphasized emplicitly, but it should be
4201     % done by command.
4202     % \begin{macrocode}
4203     FUNCTION {format.article.crossref}
4204     {
4205     %<*!ay>
4206     key empty$
4207     { journal empty$
4208     { "need key or journal for " cite$ * " to crossref " * crossref *
4209     warning$
4210     ""
4211     }
4212     { word.in journal emphasize * }
4213     if$
4214     }
4215     { word.in key * " " *}
4216     if$
4217     %</!ay>
4218     %<ay> word.in
4219     " \cite{" * crossref * "}" *
4220     }
4221    
4222     % \end{macrocode}
4223     % \end{macro}
4224     % \begin{macrocode}
4225     %<*!ay>
4226     FUNCTION {format.crossref.editor}
4227     { editor #1 "{vv~}{ll}" format.name$
4228     editor num.names$ duplicate$
4229     #2 >
4230     %<!etal-it&!etal-rm> { pop$ " et~al." * }
4231     %<!etal-it&etal-rm> { pop$ " " * "et~al." roman.list * }
4232     %<etal-it> { pop$ " " * "et~al." emphasize * }
4233     { #2 <
4234     'skip$
4235     { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
4236     %<!etal-it&!etal-rm> { " et~al." * }
4237     %<!etal-it&etal-rm> { " " * "et~al." roman.list * }
4238     %<etal-it> { " " * "et~al." emphasize * }
4239     %<*!harnm>
4240     %<!amper> { bbl.and space.word * editor #2 "{vv~}{ll}" format.name$ * }
4241     %<amper> { " \& " * editor #2 "{vv~}{ll}" format.name$ * }
4242     %</!harnm>
4243     %<harnm> { " \harvardand\ " * editor #2 "{vv~}{ll}" format.name$ * }
4244     if$
4245     }
4246     if$
4247     }
4248     if$
4249     }
4250    
4251     %</!ay>
4252     % \end{macrocode}
4253     %
4254     % \begin{macro}{`format.book.crossref'}
4255     %\changes{1.3(2.1)}{1994 Jul 1}{Emphasize \texttt{series} with
4256     % \texttt{emphasize}, not explicitly}
4257     % The \texttt{series} field was emphasized emplicitly, but it should be
4258     % done by command.
4259     % \begin{macrocode}
4260     FUNCTION {format.book.crossref}
4261     { volume empty$
4262     { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
4263     word.in
4264     }
4265     %<(blk-com|blk-tita)> { bbl.volume volume tie.or.space.connect
4266     %<!(blk-com|blk-tita)> { bbl.volume capitalize
4267     %<!(blk-com|blk-tita)> volume tie.or.space.connect
4268     bbl.of space.word *
4269     }
4270     if$
4271     %<*!ay>
4272     editor empty$
4273     editor field.or.null author field.or.null =
4274     or
4275     { key empty$
4276     { series empty$
4277     { "need editor, key, or series for " cite$ * " to crossref " *
4278     crossref * warning$
4279     "" *
4280     }
4281     { series emphasize * }
4282     if$
4283     }
4284     { key * }
4285     if$
4286     }
4287     { format.crossref.editor * }
4288     if$
4289     %</!ay>
4290     " \cite{" * crossref * "}" *
4291     }
4292    
4293     % \end{macrocode}
4294     % \end{macro}
4295     %
4296     % \begin{macro}{`format.incoll.inproc.crossref'}
4297     %\changes{1.3(2.1)}{1994 Jul 1}{Emphasize \texttt{booktitle} with
4298     % \texttt{emphasize}, not explicitly}
4299     % The \texttt{booktitle} field was emphasized emplicitly, but it should be
4300     % done by command.
4301     % \begin{macrocode}
4302     FUNCTION {format.incoll.inproc.crossref}
4303     {
4304     %<*!ay>
4305     editor empty$
4306     editor field.or.null author field.or.null =
4307     or
4308     { key empty$
4309     { booktitle empty$
4310     { "need editor, key, or booktitle for " cite$ * " to crossref " *
4311     crossref * warning$
4312     ""
4313     }
4314     { word.in booktitle emphasize * }
4315     if$
4316     }
4317     { word.in key * " " *}
4318     if$
4319     }
4320     { word.in format.crossref.editor * " " *}
4321     if$
4322     %</!ay>
4323     %<ay> word.in
4324     " \cite{" * crossref * "}" *
4325     }
4326    
4327     % \end{macrocode}
4328     % \end{macro}
4329     %
4330     % \begin{macro}{`format.publisher'}
4331     % \changes{3.3}{1995 Aug 7}{Add option \texttt{add-pub} which makes use
4332     % of this function}
4333     % \changes{3.8}{1996 Mar 12}{Add option \texttt{pub-par} to put publisher
4334     % in parentheses}
4335     % \changes{3.81}{1996 Sep 16}{Add option \texttt{pub-date} to put publisher
4336     % and date in parentheses together}
4337     % \changes{3.82}{1996 Dec 16}{Add \texttt{add.blank} for \texttt{pub-par}}
4338     % Psychology journals often want \textit{address}: \textit{publisher}.
4339     %
4340     % \textsl{Nature} wants publisher and date in parentheses, and when both
4341     % are there, they are merged into one set.
4342     % Call function \texttt{add.blank} before parentheses so suppress preceding
4343     % punctuation, which looks strange when publisher in parentheses.
4344     % \begin{macrocode}
4345     FUNCTION {format.publisher}
4346     { publisher empty$
4347     { "empty publisher in " cite$ * warning$ }
4348     'skip$
4349     if$
4350     ""
4351     %<*pub-date&!ay>
4352     year empty$
4353     { "empty year in " cite$ * warning$ }
4354     'skip$
4355     if$
4356     %</pub-date&!ay>
4357     %<*!(pub-date&ay)>
4358     address empty$ publisher empty$ and
4359     %<pub-date> year empty$ and
4360     'skip$
4361     {
4362     %</!(pub-date&ay)>
4363     %<pub-par|pub-date> add.blank "(" *
4364     %<*add-pub>
4365     address empty$
4366     'skip$
4367     { address * }
4368     if$
4369     publisher empty$
4370     'skip$
4371     %</add-pub>
4372     %<*!add-pub>
4373     publisher empty$
4374     { address empty$
4375     'skip$
4376     { address * }
4377     if$
4378     }
4379     { publisher *
4380     address empty$
4381     'skip$
4382     { ", " * address * }
4383     if$
4384     }
4385     %</!add-pub>
4386     %<*add-pub>
4387     { address empty$
4388     'skip$
4389     { ": " * }
4390     if$
4391     publisher *
4392     }
4393     %</add-pub>
4394     if$
4395     %<*pub-date&!ay>
4396     year empty$
4397     'skip$
4398     { publisher empty$ address empty$ and
4399     'skip$
4400     { ", " * }
4401     if$
4402     year *
4403     }
4404     if$
4405     %</pub-date&!ay>
4406     %<*pub-date&ay>
4407     year duplicate$ empty$
4408     { "empty year in " cite$ * "; set to ????" * warning$
4409     pop$ "????" }
4410     'skip$
4411     if$
4412     publisher empty$ address empty$ and
4413     { * }
4414     { ", " swap$ * * }
4415     if$
4416     %</pub-date&ay>
4417     %<pub-par|pub-date> ")" *
4418     %<*!(pub-date&ay)>
4419     }
4420     if$
4421     %</!(pub-date&ay)>
4422     output
4423     }
4424    
4425     % \end{macrocode}
4426     % \end{macro}
4427     % \changes{1.5(2.3)b}{1995 Jan 18}{Add option \texttt{yrp-x} to suppress
4428     % punctuation following date at beginning}
4429     % \changes{3.0}{1995 Mar 8}{Add option \texttt{yrp-col} to add colon after
4430     % date at beginning}
4431     % \changes{3.0}{1995 Mar 20}{Add option \texttt{jxper} to remove periods
4432     % from journal name}
4433     % \changes{3.2}{1995 May 19}{Add option \texttt{dt-jnl} to make date part of
4434     % the journal specification, follows journal name.}
4435     % \changes{3.4}{1995 Sep 28}{Add option \texttt{au-col}}
4436     % \changes{3.6}{1995 Nov 23}{Add option \texttt{jttl-rm}}
4437     % \changes{3.7}{1996 Feb 5}{Put \texttt{purify\$} before \texttt{emphasize}}
4438     % \changes{3.81}{1996 Jun 26}{Add option \texttt{blk-tita} for article only}
4439     % \begin{macrocode}
4440     FUNCTION {article}
4441     { output.bibitem
4442     format.authors "author" output.check
4443     %<ay> author format.key output
4444     %<au-col> author add.colon
4445     %<dt-beg> format.date "year" output.check
4446     %<dt-beg> date.block
4447     %<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block
4448     %<*!jtit-x>
4449     format.title "title" output.check
4450     %<blk-com&(tit-q|tit-qq)> end.quote.title
4451     %<!blk-com&!blk-tit&!blk-tita> new.block
4452     %<blk-tit|blk-tita> new.sentence
4453     %</!jtit-x>
4454     crossref missing$
4455     { journal
4456     %<jxper> purify$
4457     %<!jttl-rm> emphasize
4458     "journal" output.check
4459     %<jnm-x> add.blank
4460     %<*!dt-beg&!dt-end&dt-jnl&!volp-dt&!vnum-dt>
4461     format.date "year" output.check
4462     date.block
4463     %</!dt-beg&!dt-end&dt-jnl&!volp-dt&!vnum-dt>
4464     format.vol.num.pages output
4465     %<!dt-beg&!dt-end&!dt-jnl&!volp-dt&!vnum-dt> format.date "year" output.check
4466     }
4467     { format.article.crossref output.nonnull
4468     format.pages output
4469     }
4470     if$
4471     %<pp-last> format.journal.pages
4472     %<!blk-com&!blk-tit&!blk-tita> new.block
4473     note output
4474     %<*!dt-beg&dt-end>
4475     %<!blk-com&!blk-tit&!blk-tita> new.block
4476     format.date "year" output.check
4477     %</!dt-beg&dt-end>
4478     fin.entry
4479     %<harnm> write.url
4480     }
4481    
4482     % \end{macrocode}
4483     %\changes{2.0a}{1994 Aug 30}{Fix up \texttt{new.sentence} so not added with
4484     % \texttt{blk-com}}
4485     % \begin{macrocode}
4486     FUNCTION {book}
4487     { output.bibitem
4488     author empty$
4489     { format.editors "author and editor" output.check
4490     %<ay> editor format.key output
4491     %<au-col> editor add.colon
4492     }
4493     { format.authors output.nonnull
4494     %<au-col> author add.colon
4495     crossref missing$
4496     { "author and editor" editor either.or.check }
4497     'skip$
4498     if$
4499     }
4500     if$
4501     %<dt-beg&!pub-date> format.date "year" output.check
4502     %<dt-beg&!pub-date> date.block
4503     %<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block
4504     format.btitle "title" output.check
4505     crossref missing$
4506     { format.bvolume output
4507     %<!blk-com&!blk-tit&!blk-tita> new.block
4508     %<blk-tit> new.sentence
4509     format.number.series output
4510     %<pre-edn> format.edition output
4511     %<!blk-com&!blk-tit&!blk-tita> new.sentence
4512     format.publisher
4513     }
4514     {
4515     %<!blk-com&!blk-tit&!blk-tita> new.block
4516     %<blk-tit> new.sentence
4517     format.book.crossref output.nonnull
4518     %<!dt-beg&!dt-end&pub-date> format.date "year" output.check
4519     }
4520     if$
4521     %<!pre-edn> format.edition output
4522     %<!dt-beg&!dt-end&!pub-date> format.date "year" output.check
4523     %<isbn> format.isbn output
4524     %<!blk-com&!blk-tit&!blk-tita> new.block
4525     note output
4526     %<*!dt-beg&dt-end&!pub-date>
4527     %<!blk-com&!blk-tit&!blk-tita> new.block
4528     format.date "year" output.check
4529     %</!dt-beg&dt-end&!pub-date>
4530     fin.entry
4531     %<harnm> write.url
4532     }
4533    
4534     FUNCTION {booklet}
4535     { output.bibitem
4536     format.authors output
4537     %<ay> author format.key output
4538     %<au-col> author add.colon
4539     %<ay&dt-beg> format.date "year" output.check
4540     %<!ay&dt-beg> format.date output
4541     %<dt-beg> date.block
4542     %<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block
4543     format.title "title" output.check
4544     %<blk-com&(tit-q|tit-qq)> end.quote.title
4545     %<!blk-com&!blk-tit&!blk-tita> new.block
4546     %<blk-tit> new.sentence
4547     howpublished output
4548     address output
4549     %<ay&!dt-beg&!dt-end> format.date "year" output.check
4550     %<!ay&!dt-beg&!dt-end> format.date output
4551     %<!blk-com&!blk-tit&!blk-tita> new.block
4552     note output
4553     %<*ay&!dt-beg&dt-end>
4554     %<!blk-com&!blk-tit&!blk-tita> new.block
4555     format.date "year" output.check
4556     %</ay&!dt-beg&dt-end>
4557     %<*!ay&!dt-beg&dt-end>
4558     %<isbn> format.isbn output
4559     %<!blk-com&!blk-tit&!blk-tita> new.block
4560     format.date output
4561     %</!ay&!dt-beg&dt-end>
4562     fin.entry
4563     %<harnm> write.url
4564     }
4565    
4566     % \end{macrocode}
4567     % The medical journals, with option \texttt{dt-jnl}, have the date as part of
4568     % the journal specification. For chapters in books, they want date and pages
4569     % to appear at the end, with a space between them. (For journals, there is to be
4570     % no space.) Suppress the chapter specification (for now).
4571     %
4572     % The \texttt{dt-jnl} option usually behaves as the default, except for some
4573     % special entries, like this one.
4574     % \begin{macrocode}
4575     FUNCTION {inbook}
4576     { output.bibitem
4577     author empty$
4578     { format.editors "author and editor" output.check
4579     %<ay> editor format.key output
4580     %<au-col> editor add.colon
4581     }
4582     { format.authors output.nonnull
4583     %<au-col> author add.colon
4584     crossref missing$
4585     { "author and editor" editor either.or.check }
4586     'skip$
4587     if$
4588     }
4589     if$
4590     %<dt-beg&!pub-date> format.date "year" output.check
4591     %<dt-beg&!pub-date> date.block
4592     %<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block
4593     format.btitle "title" output.check
4594     crossref missing$
4595     {
4596     %<pre-pub> format.publisher
4597     format.bvolume output
4598     %<*dt-beg|dt-end|!dt-jnl>
4599     format.chapter.pages "chapter and pages" output.check
4600     %</dt-beg|dt-end|!dt-jnl>
4601     %<!blk-com&!blk-tit&!blk-tita> new.block
4602     %<blk-tit> new.sentence
4603     format.number.series output
4604     %<pre-edn> format.edition output
4605     %<!blk-com&!blk-tit&!blk-tita> new.sentence
4606     %<!pre-pub> format.publisher
4607     }
4608     {
4609     %<*dt-beg|dt-end|!dt-jnl>
4610     format.chapter.pages "chapter and pages" output.check
4611     %</dt-beg|dt-end|!dt-jnl>
4612     %<!blk-com&!blk-tit&!blk-tita> new.block
4613     %<blk-tit> new.sentence
4614     format.book.crossref output.nonnull
4615     %<!dt-beg&!dt-end&!dt-jnl&pub-date> format.date "year" output.check
4616     }
4617     if$
4618     %<!pre-edn> format.edition output
4619     %<!dt-beg&!dt-end&!dt-jnl&!pub-date> format.date "year" output.check
4620     %<isbn> format.isbn output
4621     %<*!dt-beg&!dt-end&dt-jnl>
4622     %<!pub-date> year "year" output.check
4623     %<!pub-date> date.block
4624     add.blank
4625     format.pages "pages" output.check
4626     %</!dt-beg&!dt-end&dt-jnl>
4627     %<pp-last> format.pages "pages" output.check
4628     %<!blk-com&!blk-tit&!blk-tita> new.block
4629     note output
4630     %<*!dt-beg&dt-end&!pub-date>
4631     %<!blk-com&!blk-tit&!blk-tita> new.block
4632     format.date "year" output.check
4633     %</!dt-beg&dt-end&!pub-date>
4634     fin.entry
4635     %<harnm> write.url
4636     }
4637    
4638     FUNCTION {incollection}
4639     { output.bibitem
4640     format.authors "author" output.check
4641     %<ay> author format.key output
4642     %<au-col> author add.colon
4643     %<dt-beg&!pub-date> format.date "year" output.check
4644     %<dt-beg&!pub-date> date.block
4645     %<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block
4646     %<*!jtit-x>
4647     format.title "title" output.check
4648     %<blk-com&(tit-q|tit-qq)> end.quote.title
4649     %<!blk-com&!blk-tit&!blk-tita> new.block
4650     %<blk-tit> new.sentence
4651     %</!jtit-x>
4652     crossref missing$
4653     { format.in.ed.booktitle "booktitle" output.check
4654     %<pre-pub> format.publisher
4655     format.bvolume output
4656     format.number.series output
4657     %<pre-edn> format.edition output
4658     %<dt-beg|dt-end|!dt-jnl> format.chapter.pages output
4659     %<!blk-com&!blk-tit&!blk-tita> new.sentence
4660     %<!pre-pub> format.publisher
4661     %<!pre-edn> format.edition output
4662     %<!dt-beg&!dt-end&!dt-jnl&!pub-date> format.date "year" output.check
4663     }
4664     { format.incoll.inproc.crossref output.nonnull
4665     %<dt-beg|dt-end|!dt-jnl> format.chapter.pages output
4666     }
4667     if$
4668     %<isbn> format.isbn output
4669     %<*!dt-beg&!dt-end&dt-jnl>
4670     %<!pub-date> year "year" output.check
4671     %<!pub-date> date.block
4672     add.blank
4673     format.pages "pages" output.check
4674     %</!dt-beg&!dt-end&dt-jnl>
4675     %<pp-last> format.pages "pages" output.check
4676     %<!blk-com&!blk-tit&!blk-tita> new.block
4677     note output
4678     %<*!dt-beg&dt-end&!pub-date>
4679     %<!blk-com&!blk-tit&!blk-tita> new.block
4680     format.date "year" output.check
4681     %</!dt-beg&dt-end&!pub-date>
4682     fin.entry
4683     %<harnm> write.url
4684     }
4685    
4686     % \end{macrocode}
4687     %
4688     % \begin{macro}{`inproceedings'}
4689     % \changes{3.81}{1996 Sep 13}{Reorganize organization/publisher}
4690     % \begin{macrocode}
4691     FUNCTION {inproceedings}
4692     { output.bibitem
4693     format.authors "author" output.check
4694     %<ay> author format.key output
4695     %<au-col> author add.colon
4696     %<dt-beg&!pub-date> format.date "year" output.check
4697     %<dt-beg&!pub-date> date.block
4698     %<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block
4699     %<*!jtit-x>
4700     format.title "title" output.check
4701     %<blk-com&(tit-q|tit-qq)> end.quote.title
4702     %<!blk-com&!blk-tit&!blk-tita> new.block
4703     %<blk-tit> new.sentence
4704     %</!jtit-x>
4705     crossref missing$
4706     { format.in.ed.booktitle "booktitle" output.check
4707     %<*!pre-pub>
4708     format.bvolume output
4709     format.number.series output
4710     %<(dt-beg|dt-end|!dt-jnl)&!pp-last> format.pages output
4711     %</!pre-pub>
4712     %<!blk-com&!blk-tit&!blk-tita> new.sentence
4713     publisher empty$
4714     { organization output
4715     address output
4716     %<pub-date> format.date "year" output.check
4717     }
4718     { organization output
4719     format.publisher
4720     }
4721     if$
4722     %<!dt-beg&!dt-end&!dt-jnl&!pub-date> format.date "year" output.check
4723     %<*pre-pub>
4724     format.bvolume output
4725     format.number.series output
4726     %<(dt-beg|dt-end|!dt-jnl)|!pp-last> format.pages output
4727     %</pre-pub>
4728     }
4729     { format.incoll.inproc.crossref output.nonnull
4730     %<dt-beg|dt-end|!dt-jnl> format.pages output
4731     }
4732     if$
4733     %<isbn> format.isbn output
4734     %<*!dt-beg&!dt-end&dt-jnl>
4735     %<!pub-date> year "year" output.check
4736     %<!pub-date> date.block
4737     add.blank
4738     format.pages "pages" output.check
4739     %</!dt-beg&!dt-end&dt-jnl>
4740     %<pp-last> format.pages "pages" output.check
4741     %<!blk-com&!blk-tit&!blk-tita> new.block
4742     note output
4743     %<*!dt-beg&dt-end&!pub-date>
4744     %<!blk-com&!blk-tit&!blk-tita> new.block
4745     format.date "year" output.check
4746     %</!dt-beg&dt-end&!pub-date>
4747     fin.entry
4748     %<harnm> write.url
4749     }
4750    
4751     % \end{macrocode}
4752     % \end{macro}
4753     %
4754     % \begin{macrocode}
4755     FUNCTION {conference} { inproceedings }
4756    
4757     %<*ay>
4758     FUNCTION {manual}
4759     { output.bibitem
4760     format.authors output
4761     author format.key output
4762     %<au-col> author add.colon
4763     %<dt-beg> format.date "year" output.check
4764     %<dt-beg> date.block
4765     %<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block
4766     format.btitle "title" output.check
4767     %<blk-tit> new.sentence
4768     %<!blk-com&!blk-tit&!blk-tita> organization address new.block.checkb
4769     organization output
4770     address output
4771     format.edition output
4772     %<!dt-beg&!dt-end> format.date "year" output.check
4773     %<!blk-com&!blk-tit&!blk-tita> new.block
4774     note output
4775     %<*!dt-beg&dt-end>
4776     %<!blk-com&!blk-tit&!blk-tita> new.block
4777     format.date "year" output.check
4778     %</!dt-beg&dt-end>
4779     fin.entry
4780     %<harnm> write.url
4781     }
4782    
4783     %</ay>
4784     %<*!ay>
4785     FUNCTION {manual}
4786     { output.bibitem
4787     author empty$
4788     { organization empty$
4789     'skip$
4790     { organization output.nonnull
4791     address output
4792     }
4793     if$
4794     }
4795     { format.authors output.nonnull }
4796     if$
4797     %<au-col> author add.colon
4798     %<ay&dt-beg> format.date "year" output.check
4799     %<!ay&dt-beg> format.date output
4800     %<dt-beg> date.block
4801     %<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block
4802     format.btitle "title" output.check
4803     %<blk-tit> new.sentence
4804     author empty$
4805     { organization empty$
4806     {
4807     %<!blk-com&!blk-tit&!blk-tita> address new.block.checka
4808     address output
4809     }
4810     'skip$
4811     if$
4812     }
4813     {
4814     %<!blk-com&!blk-tit&!blk-tita> organization address new.block.checkb
4815     organization output
4816     address output
4817     }
4818     if$
4819     format.edition output
4820     %<ay&!dt-beg&!dt-end> format.date "year" output.check
4821     %<!ay&!dt-beg&!dt-end> format.date output
4822     %<!blk-com&!blk-tit&!blk-tita> new.block
4823     note output
4824     %<*ay&!dt-beg&dt-end>
4825     %<!blk-com&!blk-tit&!blk-tita> new.block
4826     format.date "year" output.check
4827     %</ay&!dt-beg&dt-end>
4828     %<*!ay&!dt-beg&dt-end>
4829     %<!blk-com&!blk-tit&!blk-tita> new.block
4830     format.date output
4831     %</!ay&!dt-beg&dt-end>
4832     fin.entry
4833     %<harnm> write.url
4834     }
4835    
4836     %</!ay>
4837     % \end{macrocode}
4838     % \begin{macro}{`masterthesis'}
4839     % \changes{2.0}{1994 Feb 7}{Add \texttt{thtit-a} to format thesis titles like
4840     % articles instead of books.}
4841     % To format a master's thesis.
4842     % \begin{macrocode}
4843     FUNCTION {mastersthesis}
4844     { output.bibitem
4845     format.authors "author" output.check
4846     %<ay> author format.key output
4847     %<au-col> author add.colon
4848     %<dt-beg> format.date "year" output.check
4849     %<dt-beg> date.block
4850     %<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block
4851     %<!thtit-a> format.btitle "title" output.check
4852     %<thtit-a> format.title "title" output.check
4853     %<thtit-a&blk-com&(tit-q|tit-qq)> end.quote.title
4854     %<!blk-com&!blk-tit&!blk-tita> new.block
4855     %<blk-tit> new.sentence
4856     bbl.mthesis format.thesis.type output.nonnull
4857     school "school" output.check
4858     address output
4859     %<!dt-beg&!dt-end> format.date "year" output.check
4860     %<!blk-com&!blk-tit&!blk-tita> new.block
4861     note output
4862     %<*!dt-beg&dt-end>
4863     %<!blk-com&!blk-tit&!blk-tita> new.block
4864     format.date "year" output.check
4865     %</!dt-beg&dt-end>
4866     fin.entry
4867     %<harnm> write.url
4868     }
4869    
4870     % \end{macrocode}
4871     % \end{macro}
4872     % \begin{macrocode}
4873     FUNCTION {misc}
4874     { output.bibitem
4875     format.authors output
4876     %<ay> author format.key output
4877     %<au-col> author add.colon
4878     %<ay&dt-beg> format.date "year" output.check
4879     %<!ay&dt-beg> format.date output
4880     %<*ay>
4881     %<dt-beg> date.block
4882     %<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block
4883     format.title output
4884     %<blk-com&(tit-q|tit-qq)> end.quote.title
4885     %<!blk-com&!blk-tit&!blk-tita> new.block
4886     %<blk-tit> new.sentence
4887     %</ay>
4888     %<*!ay>
4889     %<!blk-com&!blk-tit&!blk-tita> title howpublished new.block.checkb
4890     format.title output
4891     %<blk-com&(tit-q|tit-qq)> end.quote.title
4892     %<blk-tit> new.sentence
4893     %<!blk-com&!blk-tit&!blk-tita> howpublished new.block.checka
4894     %</!ay>
4895     howpublished output
4896     %<ay&!dt-beg&!dt-end> format.date "year" output.check
4897     %<!ay&!dt-beg&!dt-end> format.date output
4898     %<!blk-com&!blk-tit&!blk-tita> new.block
4899     note output
4900     %<*ay&!dt-beg&dt-end>
4901     %<!blk-com&!blk-tit&!blk-tita> new.block
4902     format.date "year" output.check
4903     %</ay&!dt-beg&dt-end>
4904     %<*!ay&!dt-beg&dt-end>
4905     %<!blk-com&!blk-tit&!blk-tita> new.block
4906     format.date output
4907     %</!ay&!dt-beg&dt-end>
4908     fin.entry
4909     %<harnm> write.url
4910     %<!ay> empty.misc.check
4911     }
4912    
4913     % \end{macrocode}
4914     % \begin{macro}{`phdthesis'}
4915     % \changes{2.0}{1994 Feb 7}{Add \texttt{thtit-a} to format thesis titles like
4916     % articles instead of books.}
4917     % To format a doctoral thesis.
4918     % \begin{macrocode}
4919     FUNCTION {phdthesis}
4920     { output.bibitem
4921     format.authors "author" output.check
4922     %<ay> author format.key output
4923     %<au-col> author add.colon
4924     %<dt-beg> format.date "year" output.check
4925     %<dt-beg> date.block
4926     %<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block
4927     %<!thtit-a> format.btitle "title" output.check
4928     %<thtit-a> format.title "title" output.check
4929     %<thtit-a&blk-com&(tit-q|tit-qq)> end.quote.title
4930     %<!blk-com&!blk-tit&!blk-tita> new.block
4931     %<blk-tit> new.sentence
4932     bbl.phdthesis format.thesis.type output.nonnull
4933     school "school" output.check
4934     address output
4935     %<!dt-beg&!dt-end> format.date "year" output.check
4936     %<!blk-com&!blk-tit&!blk-tita> new.block
4937     note output
4938     %<*!dt-beg&dt-end>
4939     %<!blk-com&!blk-tit&!blk-tita> new.block
4940     format.date "year" output.check
4941     %</!dt-beg&dt-end>
4942     fin.entry
4943     %<harnm> write.url
4944     }
4945    
4946     % \end{macrocode}
4947     % \end{macro}
4948     % \begin{macrocode}
4949     %<*ay>
4950     FUNCTION {proceedings}
4951     { output.bibitem
4952     format.editors output
4953     editor format.key output
4954     %<au-col> editor add.colon
4955     %<dt-beg> format.date "year" output.check
4956     %<dt-beg> date.block
4957     %<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block
4958     format.btitle "title" output.check
4959     format.bvolume output
4960     format.number.series output
4961     address output
4962     %<!blk-com&!blk-tit&!blk-tita> new.sentence
4963     organization output
4964     publisher output
4965     %<!dt-beg&!dt-end> format.date "year" output.check
4966     %<isbn> format.isbn output
4967     %<!blk-com&!blk-tit&!blk-tita> new.block
4968     note output
4969     %<*!dt-beg&dt-end>
4970     %<!blk-com&!blk-tit&!blk-tita> new.block
4971     format.date "year" output.check
4972     %</!dt-beg&dt-end>
4973     fin.entry
4974     %<harnm> write.url
4975     }
4976    
4977     %</ay>
4978     %<*!ay>
4979     FUNCTION {proceedings}
4980     { output.bibitem
4981     editor empty$
4982     { organization output }
4983     { format.editors output.nonnull }
4984     if$
4985     %<au-col> editor add.colon
4986     %<dt-beg> format.date "year" output.check
4987     %<dt-beg> date.block
4988     %<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block
4989     format.btitle "title" output.check
4990     format.bvolume output
4991     format.number.series output
4992     address empty$
4993     { editor empty$
4994     { publisher new.sentence.checka }
4995     { organization publisher new.sentence.checkb
4996     organization output
4997     }
4998     if$
4999     publisher output
5000     %<!dt-beg&!dt-end> format.date "year" output.check
5001     }
5002     { address output.nonnull
5003     %<!dt-beg&!dt-end> format.date "year" output.check
5004     %<!blk-com&!blk-tit&!blk-tita> new.sentence
5005     editor empty$
5006     'skip$
5007     { organization output }
5008     if$
5009     publisher output
5010     }
5011     if$
5012     %<!blk-com&!blk-tit&!blk-tita> new.block
5013     note output
5014     %<*!dt-beg&dt-end>
5015     %<!blk-com&!blk-tit&!blk-tita> new.block
5016     format.date "year" output.check
5017     %</!dt-beg&dt-end>
5018     fin.entry
5019     %<harnm> write.url
5020     }
5021    
5022     %</!ay>
5023     % \end{macrocode}
5024     %
5025     % \begin{macro}{`techreport'}
5026     % \changes{3.5}{1995 Oct 4}{Add option \texttt{trtit-b}}
5027     % \begin{macrocode}
5028     FUNCTION {techreport}
5029     { output.bibitem
5030     format.authors "author" output.check
5031     %<ay> author format.key output
5032     %<au-col> author add.colon
5033     %<dt-beg> format.date "year" output.check
5034     %<dt-beg> date.block
5035     %<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block
5036     %<trtit-b> format.btitle "title" output.check
5037     %<!trtit-b> format.title "title" output.check
5038     %<!trtit-b&blk-com&(tit-q|tit-qq)> end.quote.title
5039     %<!blk-com&!blk-tit&!blk-tita> new.block
5040     %<blk-tit> new.sentence
5041     format.tr.number output.nonnull
5042     institution "institution" output.check
5043     address output
5044     %<!dt-beg&!dt-end> format.date "year" output.check
5045     %<!blk-com&!blk-tit&!blk-tita> new.block
5046     note output
5047     %<*!dt-beg&dt-end>
5048     %<!blk-com&!blk-tit&!blk-tita> new.block
5049     format.date "year" output.check
5050     %</!dt-beg&dt-end>
5051     fin.entry
5052     %<harnm> write.url
5053     }
5054    
5055     % \end{macrocode}
5056     % \end{macro}
5057     %
5058     % \begin{macrocode}
5059     FUNCTION {unpublished}
5060     { output.bibitem
5061     format.authors "author" output.check
5062     %<ay> author format.key output
5063     %<au-col> author add.colon
5064     %<ay&dt-beg> format.date "year" output.check
5065     %<!ay&dt-beg> format.date output
5066     %<dt-beg> date.block
5067     %<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block
5068     format.title "title" output.check
5069     %<blk-com&(tit-q|tit-qq)> end.quote.title
5070     %<!blk-com&!blk-tit&!blk-tita> new.block
5071     %<blk-tit> new.sentence
5072     note "note" output.check
5073     %<*ay&!dt-beg&dt-end>
5074     %<!blk-com&!blk-tit&!blk-tita> new.block
5075     format.date "year" output.check
5076     %</ay&!dt-beg&dt-end>
5077     %<*!ay&!dt-beg&dt-end>
5078     %<!blk-com&!blk-tit&!blk-tita> new.block
5079     format.date output
5080     %</!ay&!dt-beg&dt-end>
5081     fin.entry
5082     %<harnm> write.url
5083     }
5084    
5085     FUNCTION {default.type} { misc }
5086    
5087     READ
5088    
5089     % \end{macrocode}
5090     %
5091     % \begin{macro}{`sortify'}
5092     % \changes{3.8}{1996 Feb 29}{Do not allow unsorted alphas}
5093     % In \texttt{btxbst.doc}/\texttt{.mbs}, the \texttt{sortify} function is
5094     % left out for unsorted alpha-style citations. This leads to an error,
5095     % because it is still used. So leave it in here too. \emph{In fact, do away
5096     % with unsorted alpha style, since it is as useless as unsorted author--year
5097     % listings.}
5098     % \begin{macrocode}
5099     %<*ay|alph|!seq-no>
5100     FUNCTION {sortify}
5101     { purify$
5102     "l" change.case$
5103     }
5104    
5105     % \end{macrocode}
5106     % \end{macro}
5107     %
5108     % \begin{macrocode}
5109     INTEGERS { len }
5110    
5111     FUNCTION {chop.word}
5112     { 's :=
5113     'len :=
5114     s #1 len substring$ =
5115     { s len #1 + global.max$ substring$ }
5116     's
5117     if$
5118     }
5119    
5120     % \end{macrocode}
5121     %
5122     % \begin{macro}{`format.lab.names'}
5123     % \changes{3.8}{1996 Feb 29}{Add option \texttt{alph} for \texttt{alpha.bst}
5124     % style of labels}
5125     % The function \texttt{format.lab.names} formats by author--year or the
5126     % \texttt{alpha} style as in the original \texttt{alpha.bst}.
5127     % Only major difference is that there should be no unsorted (\texttt{seq-no})
5128     % versions of this. Patashnik was clearly very unhappy about accommodating
5129     % such an animal, and in fact, his unsorted alpha style crashes \btx.
5130     % I also provide the \texttt{vonx} option here to ignore the \textsl{von}
5131     % part of the name.
5132     % \begin{macrocode}
5133     %<*!ay&alph>
5134     INTEGERS { et.al.char.used }
5135    
5136     FUNCTION {initialize.et.al.char.used}
5137     { #0 'et.al.char.used :=
5138     }
5139    
5140     EXECUTE {initialize.et.al.char.used}
5141    
5142     FUNCTION {format.lab.names}
5143     { 's :=
5144     s num.names$ 'numnames :=
5145     numnames #1 >
5146     { numnames #4 >
5147     { #3 'namesleft := }
5148     { numnames 'namesleft := }
5149     if$
5150     #1 'nameptr :=
5151     ""
5152     { namesleft #0 > }
5153     { nameptr numnames =
5154     { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
5155     { "{\etalchar{+}}" *
5156     #1 'et.al.char.used :=
5157     }
5158     %<!vonx> { s nameptr "{v{}}{l{}}" format.name$ * }
5159     %<vonx> { s nameptr "{l{}}" format.name$ * }
5160     if$
5161     }
5162     %<!vonx> { s nameptr "{v{}}{l{}}" format.name$ * }
5163     %<vonx> { s nameptr "{l{}}" format.name$ * }
5164     if$
5165     nameptr #1 + 'nameptr :=
5166     namesleft #1 - 'namesleft :=
5167     }
5168     while$
5169     numnames #4 >
5170     { "{\etalchar{+}}" *
5171     #1 'et.al.char.used :=
5172     }
5173     'skip$
5174     if$
5175     }
5176     %<!vonx> { s #1 "{v{}}{l{}}" format.name$
5177     %<vonx> { s #1 "{l{}}" format.name$
5178     duplicate$ text.length$ #2 <
5179     { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ }
5180     'skip$
5181     if$
5182     }
5183     if$
5184     }
5185    
5186     %</!ay&alph>
5187     %<*ay>
5188     FUNCTION {format.lab.names}
5189     { 's :=
5190     s #1 "{vv~}{ll}" format.name$
5191     s num.names$ duplicate$
5192     #2 >
5193     %<!etal-it&!etal-rm> { pop$ " et~al." * }
5194     %<!etal-it&etal-rm> { pop$ " " * "et~al." roman.cite * }
5195     %<etal-it> { pop$ " " * "et~al." emphasize * }
5196     { #2 <
5197     'skip$
5198     { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
5199     %<!etal-it&!etal-rm> { " et~al." * }
5200     %<!etal-it&etal-rm> { " " * "et~al." roman.cite * }
5201     %<etal-it> { " " * "et~al." emphasize * }
5202     %<*!harnm>
5203     %<*!amper>
5204     { bbl.and
5205     %<and-rm> roman.cite
5206     space.word * s #2 "{vv~}{ll}" format.name$ * }
5207     %</!amper>
5208     %<amper> { " \& " * s #2 "{vv~}{ll}" format.name$ * }
5209     %</!harnm>
5210     %<harnm> { " \harvardand\ " * s #2 "{vv~}{ll}" format.name$ * }
5211     if$
5212     }
5213     if$
5214     }
5215     if$
5216     }
5217    
5218     %</ay>
5219     % \end{macrocode}
5220     % \end{macro}
5221     %
5222     % Have to be very careful with the options \texttt{ay}, \texttt{alph}, and
5223     % \texttt{seq-no} here. The first two are actually mutually exclusive, and
5224     % \texttt{ay} should dominate. The \texttt{seq-no} option only applies for
5225     % numerical (\texttt{!ay}) but not alphabetic (\texttt{alph}) selections.
5226     % This whole block of coding dealing with labels is only included for
5227     % author--year or alphabetic or ordered numerical.
5228     % That is, \texttt{ay} or \texttt{alph} or \texttt{!seq-no} is true.
5229     % \begin{macrocode}
5230     %<*ay|alph>
5231     FUNCTION {author.key.label}
5232     { author empty$
5233     { key empty$
5234     { cite$ #1 #3 substring$ }
5235     %<ay> 'key
5236     %<!ay> { key #3 text.prefix$ }
5237     if$
5238     }
5239     { author format.lab.names }
5240     if$
5241     }
5242    
5243     FUNCTION {author.editor.key.label}
5244     { author empty$
5245     { editor empty$
5246     { key empty$
5247     { cite$ #1 #3 substring$ }
5248     %<ay> 'key
5249     %<!ay> { key #3 text.prefix$ }
5250     if$
5251     }
5252     { editor format.lab.names }
5253     if$
5254     }
5255     { author format.lab.names }
5256     if$
5257     }
5258    
5259     %</ay|alph>
5260     %<*!ay&alph>
5261     FUNCTION {author.key.organization.label}
5262     { author empty$
5263     { key empty$
5264     { organization empty$
5265     { cite$ #1 #3 substring$ }
5266     { "The " #4 organization chop.word #3 text.prefix$ }
5267     if$
5268     }
5269     { key #3 text.prefix$ }
5270     if$
5271     }
5272     { author format.lab.names }
5273     if$
5274     }
5275    
5276     FUNCTION {editor.key.organization.label}
5277     { editor empty$
5278     { key empty$
5279     { organization empty$
5280     { cite$ #1 #3 substring$ }
5281     { "The " #4 organization chop.word #3 text.prefix$ }
5282     if$
5283     }
5284     { key #3 text.prefix$ }
5285     if$
5286     }
5287     { editor format.lab.names }
5288     if$
5289     }
5290    
5291     %</!ay&alph>
5292     %<*ay>
5293     FUNCTION {editor.key.label}
5294     { editor empty$
5295     { key empty$
5296     { cite$ #1 #3 substring$ }
5297     'key
5298     if$
5299     }
5300     { editor format.lab.names }
5301     if$
5302     }
5303    
5304     % \end{macrocode}
5305     % \begin{macro}{`calc.short.authors'}
5306     % \changes{3.3}{1995 Sep 4}{Add function to store short list of authors
5307     % for later test}
5308     % \begin{macrocode}
5309     FUNCTION {calc.short.authors}
5310     { type$ "book" =
5311     type$ "inbook" =
5312     or
5313     'author.editor.key.label
5314     { type$ "proceedings" =
5315     'editor.key.label
5316     'author.key.label
5317     if$
5318     }
5319     if$
5320     %<lab-it> emphasize
5321     %<lab-bf&!lab-it> bolden
5322     %<lab-sc&!lab-it&!lab-bf> scaps
5323     'short.list :=
5324     }
5325    
5326     % \end{macrocode}
5327     % \end{macro}
5328     % \begin{macro}{`calc.label'}
5329     % \changes{1.5(2.3)a}{1994 Oct 11}{Add option \texttt{note-yr}}
5330     % \changes{3.0}{1995 Mar 3}{Add options \texttt{lab-bf} and \texttt{lab-sc}}
5331     % \changes{3.3}{1995 Sep 4}{Use \texttt{calc.short.authors}}
5332     % \changes{3.8}{1996 Feb 29}{Add \texttt{calc.label} from \texttt{alpha.bst}}
5333     % \begin{macrocode}
5334     FUNCTION {calc.label}
5335     { calc.short.authors
5336     short.list
5337     %<!(har|ast|cay|nmd|alk|cn)> "("
5338     %<har|ast|cay|nmd|alk|cn> ", "
5339     *
5340     year duplicate$ empty$
5341     { pop$ "????" }
5342     %<!note-yr> { purify$ #-1 #4 substring$ }
5343     %<note-yr> 'skip$
5344     if$
5345     *
5346     'label :=
5347     }
5348    
5349     %</ay>
5350     %<*!ay&alph>
5351     FUNCTION {calc.label}
5352     { type$ "book" =
5353     type$ "inbook" =
5354     or
5355     'author.editor.key.label
5356     { type$ "proceedings" =
5357     'editor.key.organization.label
5358     { type$ "manual" =
5359     'author.key.organization.label
5360     'author.key.label
5361     if$
5362     }
5363     if$
5364     }
5365     if$
5366     duplicate$
5367     year field.or.null purify$ #-1 #2 substring$
5368     *
5369     'label :=
5370     year field.or.null purify$ #-1 #4 substring$
5371     *
5372     sortify 'sort.label :=
5373     }
5374    
5375     %</!ay&alph>
5376     %<*ay>
5377     % \end{macrocode}
5378     % \end{macro}
5379     % \begin{macro}{`calc.short.label'}
5380     % \changes{3.3}{1995 Sep 4}{Use \texttt{calc.short.authors}}
5381     % \begin{macrocode}
5382     %<*har|cay|nmd|ast|cn>
5383     FUNCTION {calc.short.label}
5384     { calc.short.authors short.list
5385     'label :=
5386     }
5387    
5388     %</har|cay|nmd|ast|cn>
5389     %</ay>
5390     % \end{macrocode}
5391     % \end{macro}
5392     % \begin{macro}{`sort.format.names'}
5393     % \changes{1.7(2.5)}{1995 Feb 9}{Make ordering of `et al' works by year
5394     % and authors and not just year}
5395     % \changes{3.0}{1995 Feb 27}{Option \texttt{nm-revf} to act just as default}
5396     % \changes{3.2}{1995 Jun 16}{Add option \texttt{vonx} so sorting ignores the
5397     % \emph{von} part of the name}
5398     % \changes{3.5}{1995 Oct 24}{For limited authors, sort only on those present}
5399     % \changes{3.5}{1995 Oct 24}{`Et al' considered author before all others}
5400     % \begin{macrocode}
5401     FUNCTION {sort.format.names}
5402     { 's :=
5403     #1 'nameptr :=
5404     ""
5405     s num.names$ 'numnames :=
5406     numnames 'namesleft :=
5407     { namesleft #0 > }
5408     { s nameptr
5409     %<*!nm-init&!nm-rev&!nm-rev1&!nm-rv&!nm-rvx&!nm-rvv>
5410     %<!vonx> "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}"
5411     %<vonx> "{ll{ }}{ ff{ }}{ jj{ }}"
5412     %</!nm-init&!nm-rev&!nm-rev1&!nm-rv&!nm-rvx&!nm-rvv>
5413     %<*nm-init|nm-rev|nm-rev1|nm-rv|nm-rvx|nm-rvv>
5414     %<!vonx> "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}"
5415     %<vonx> "{ll{ }}{ f{ }}{ jj{ }}"
5416     %</nm-init|nm-rev|nm-rev1|nm-rv|nm-rvx|nm-rvv>
5417     format.name$ 't :=
5418     nameptr #1 >
5419     {
5420     %<*nmlm>
5421     %<m1> nameptr #2 =
5422     %<m2> nameptr #3 =
5423     %<m3> nameptr #4 =
5424     %<m4> nameptr #5 =
5425     %<m5> nameptr #6 =
5426     %<x1> numnames #1 > and
5427     %<x2> numnames #2 > and
5428     %<x3> numnames #3 > and
5429     %<x4> numnames #4 > and
5430     %<x5> numnames #5 > and
5431     %<x6> numnames #6 > and
5432     %<x7> numnames #7 > and
5433     %<x8> numnames #8 > and
5434     %<x9> numnames #9 > and
5435     { "others" 't :=
5436     #1 'namesleft := }
5437     'skip$
5438     if$
5439     %</nmlm>
5440     " " *
5441     namesleft #1 = t "others" = and
5442     { "aaaaa" * }
5443     %<*seq-lab|seq-key>
5444     { numnames #2 > nameptr #2 = and
5445     { "zz" * year field.or.null * " " * }
5446     'skip$
5447     if$
5448     t sortify *
5449     }
5450     %</seq-lab|seq-key>
5451     %<!seq-lab&!seq-key> { t sortify * }
5452     if$
5453     }
5454     { t sortify * }
5455     if$
5456     nameptr #1 + 'nameptr :=
5457     namesleft #1 - 'namesleft :=
5458     }
5459     while$
5460     }
5461    
5462     % \end{macrocode}
5463     % \end{macro}
5464     %
5465     % \begin{macrocode}
5466     FUNCTION {sort.format.title}
5467     { 't :=
5468     "A " #2
5469     "An " #3
5470     "The " #4 t chop.word
5471     chop.word
5472     chop.word
5473     sortify
5474     #1 global.max$ substring$
5475     }
5476    
5477     FUNCTION {author.sort}
5478     { author empty$
5479     { key empty$
5480     { "to sort, need author or key in " cite$ * warning$
5481     ""
5482     }
5483     { key sortify }
5484     if$
5485     }
5486     { author sort.format.names }
5487     if$
5488     }
5489    
5490     FUNCTION {author.editor.sort}
5491     { author empty$
5492     { editor empty$
5493     { key empty$
5494     { "to sort, need author, editor, or key in " cite$ * warning$
5495     ""
5496     }
5497     { key sortify }
5498     if$
5499     }
5500     { editor sort.format.names }
5501     if$
5502     }
5503     { author sort.format.names }
5504     if$
5505     }
5506    
5507     %<*ay>
5508     FUNCTION {editor.sort}
5509     { editor empty$
5510     { key empty$
5511     { "to sort, need editor or key in " cite$ * warning$
5512     ""
5513     }
5514     { key sortify }
5515     if$
5516     }
5517     { editor sort.format.names }
5518     if$
5519     }
5520    
5521     %<*seq-no>
5522     INTEGERS { seq.num }
5523    
5524     FUNCTION {init.seq}
5525     { #0 'seq.num :=}
5526    
5527     EXECUTE {init.seq}
5528    
5529     FUNCTION {int.to.fix}
5530     { "000000000" swap$ int.to.str$ *
5531     #-1 #10 substring$
5532     }
5533    
5534     %</seq-no>
5535     % \end{macrocode}
5536     % \begin{macro}{`presort'}
5537     % \changes{3.81}{1996 Sep 16}{Add option \texttt{seq-no} to author--year}
5538     % For unsorted author--year, make up the final sorting order in
5539     % \texttt{sort.label} with the original sequence number, for unsorting later.
5540     % \begin{macrocode}
5541     FUNCTION {presort}
5542     { calc.label
5543     label sortify
5544     " "
5545     *
5546     %<*!seq-no>
5547     type$ "book" =
5548     type$ "inbook" =
5549     or
5550     'author.editor.sort
5551     { type$ "proceedings" =
5552     'editor.sort
5553     'author.sort
5554     if$
5555     }
5556     if$
5557     #1 entry.max$ substring$
5558     %</!seq-no>
5559     %<*seq-no>
5560     seq.num #1 + 'seq.num :=
5561     seq.num int.to.fix
5562     %</seq-no>
5563     'sort.label :=
5564     sort.label
5565     *
5566     " "
5567     *
5568     %<seq-yr> " " * year field.or.null *
5569     %<*!seq-key&!seq-yr>
5570     title field.or.null
5571     sort.format.title
5572     %</!seq-key&!seq-yr>
5573     %<seq-key|seq-yr> cite$
5574     *
5575     #1 entry.max$ substring$
5576     'sort.key$ :=
5577     }
5578    
5579     % \end{macrocode}
5580     % \end{macro}
5581     % \begin{macrocode}
5582     %</ay>
5583     %<*!ay>
5584     FUNCTION {author.organization.sort}
5585     { author empty$
5586     { organization empty$
5587     { key empty$
5588     { "to sort, need author, organization, or key in " cite$ * warning$
5589     ""
5590     }
5591     { key sortify }
5592     if$
5593     }
5594     { "The " #4 organization chop.word sortify }
5595     if$
5596     }
5597     { author sort.format.names }
5598     if$
5599     }
5600    
5601     FUNCTION {editor.organization.sort}
5602     { editor empty$
5603     { organization empty$
5604     { key empty$
5605     { "to sort, need editor, organization, or key in " cite$ * warning$
5606     ""
5607     }
5608     { key sortify }
5609     if$
5610     }
5611     { "The " #4 organization chop.word sortify }
5612     if$
5613     }
5614     { editor sort.format.names }
5615     if$
5616     }
5617    
5618     FUNCTION {presort}
5619     %<*alph>
5620     { calc.label
5621     sort.label
5622     " "
5623     *
5624     type$ "book" =
5625     %</alph>
5626     %<!alph>{ type$ "book" =
5627     type$ "inbook" =
5628     or
5629     'author.editor.sort
5630     { type$ "proceedings" =
5631     'editor.organization.sort
5632     { type$ "manual" =
5633     'author.organization.sort
5634     'author.sort
5635     if$
5636     }
5637     if$
5638     }
5639     if$
5640     %<alph> *
5641     " "
5642     *
5643     year field.or.null sortify
5644     %<!seq-yr|alph> *
5645     " "
5646     *
5647     %<seq-yr&!alph> swap$ *
5648     title field.or.null
5649     sort.format.title
5650     *
5651     #1 entry.max$ substring$
5652     'sort.key$ :=
5653     }
5654    
5655     %</!ay>
5656     ITERATE {presort}
5657    
5658     SORT
5659    
5660     %</ay|alph|!seq-no>
5661     % \end{macrocode}
5662     % \begin{macro}{`forward.pass'}
5663     % \changes{3.4}{1995 Sep 5}{Include number of references in argument to
5664     % \texttt{thebibliography} environment}
5665     % With version~6.0 of \texttt{natbib}, the author-year styles can also be
5666     % used for numerical citations; then the \texttt{thebibliography} environment
5667     % must have an argument indicating the length of the longest label.
5668     % Simply count the references and add this number as the argument.
5669     % \begin{macrocode}
5670     %<*ay>
5671     STRINGS { last.label next.extra }
5672    
5673     INTEGERS { last.extra.num number.label }
5674    
5675     FUNCTION {initialize.extra.label.stuff}
5676     { #0 int.to.chr$ 'last.label :=
5677     "" 'next.extra :=
5678     #0 'last.extra.num :=
5679     #0 'number.label :=
5680     }
5681    
5682     FUNCTION {forward.pass}
5683     { last.label label =
5684     { last.extra.num #1 + 'last.extra.num :=
5685     last.extra.num int.to.chr$ 'extra.label :=
5686     }
5687     { "a" chr.to.int$ 'last.extra.num :=
5688     "" 'extra.label :=
5689     label 'last.label :=
5690     }
5691     if$
5692     number.label #1 + 'number.label :=
5693     }
5694    
5695     %</ay>
5696     %<*!ay&alph>
5697     STRINGS { longest.label last.sort.label next.extra }
5698    
5699     INTEGERS { longest.label.width last.extra.num }
5700    
5701     FUNCTION {initialize.longest.label}
5702     { "" 'longest.label :=
5703     #0 int.to.chr$ 'last.sort.label :=
5704     "" 'next.extra :=
5705     #0 'longest.label.width :=
5706     #0 'last.extra.num :=
5707     }
5708    
5709     FUNCTION {forward.pass}
5710     { last.sort.label sort.label =
5711     { last.extra.num #1 + 'last.extra.num :=
5712     last.extra.num int.to.chr$ 'extra.label :=
5713     }
5714     { "a" chr.to.int$ 'last.extra.num :=
5715     "" 'extra.label :=
5716     sort.label 'last.sort.label :=
5717     }
5718     if$
5719     }
5720    
5721     %</!ay&alph>
5722     % \end{macrocode}
5723     % \end{macro}
5724     % \begin{macro}{`reverse.pass'}
5725     % \changes{3.3}{1995 Aug 7}{Put extra label in braces}
5726     % The extra label is added in braces so that natbib can treat it as one unit.
5727     % This allows extra labels to be more than one letter long. For non-NFSS
5728     % emphasizing, this is no problem, since labels go in |{\em a}|, but for
5729     % non-emphasizing and for NFSS, it caused troubles without the braces.
5730     % The trouble arises with multiple citations in one |\cite| in which
5731     % authors and years are the same, and only the extra label is given for
5732     % the next one. Note: |\emph{a}| is more than one letter long in this sense,
5733     % so it is not just a problem for more than 26 papers with same authors and
5734     % year.
5735     %
5736     % \changes{3.81}{1996 Jun 17}{Add \texttt{\char`\\natexlab}}
5737     % The command |\natexlab| now encloses the extra label for \texttt{natbib}
5738     % styles. This command normally just prints its argument, but for numerical
5739     % citation mode, it swallows its argument. This allows the extra labels to
5740     % be suppressed for numerical citations where they are superfluous.
5741     % The enclosing braces mentioned above must be included here to make the
5742     % entire extra label text a single token for \texttt{natbib}.
5743     % \begin{macrocode}
5744     %<*ay>
5745     FUNCTION {reverse.pass}
5746     { next.extra "b" =
5747     { "a" 'extra.label := }
5748     'skip$
5749     if$
5750     extra.label 'next.extra :=
5751     extra.label
5752     %<xlab-it> emphasize
5753     duplicate$ empty$
5754     'skip$
5755     { "{\natexlab{" swap$ * "}}" * }
5756     if$
5757     'extra.label :=
5758     %<!(har|ast|cay|nmd|cn)> label extra.label * 'label :=
5759     }
5760    
5761     %</ay>
5762     %<*!ay&alph>
5763     FUNCTION {reverse.pass}
5764     { next.extra "b" =
5765     { "a" 'extra.label := }
5766     'skip$
5767     if$
5768     label extra.label * 'label :=
5769     label width$ longest.label.width >
5770     { label 'longest.label :=
5771     label width$ 'longest.label.width :=
5772     }
5773     'skip$
5774     if$
5775     extra.label 'next.extra :=
5776     }
5777    
5778     %</!ay&alph>
5779     % \end{macrocode}
5780     % \end{macro}
5781     %
5782     % \begin{macrocode}
5783     %<ay>EXECUTE {initialize.extra.label.stuff}
5784     %<!ay&alph>EXECUTE {initialize.longest.label}
5785     %<*ay|alph>
5786    
5787     ITERATE {forward.pass}
5788    
5789     REVERSE {reverse.pass}
5790    
5791     %</ay|alph>
5792     %<*ay>
5793     FUNCTION {bib.sort.order}
5794     { sort.label
5795     " "
5796     *
5797     year field.or.null sortify
5798     %<seq-yr&!(seq-lab|seq-key)> swap$
5799     *
5800     " "
5801     *
5802     %<*!seq-key&!seq-yr>
5803     title field.or.null
5804     sort.format.title
5805     %</!seq-key&!seq-yr>
5806     %<seq-key|seq-yr> cite$
5807     *
5808     #1 entry.max$ substring$
5809     'sort.key$ :=
5810     %<har|cay|nmd|cn|ast> calc.short.label
5811     }
5812    
5813     ITERATE {bib.sort.order}
5814    
5815     SORT
5816    
5817     %</ay>
5818     %<*!ay&!alph>
5819     STRINGS { longest.label }
5820    
5821     INTEGERS { number.label longest.label.width }
5822    
5823     FUNCTION {initialize.longest.label}
5824     { "" 'longest.label :=
5825     #1 'number.label :=
5826     #0 'longest.label.width :=
5827     }
5828    
5829     FUNCTION {longest.label.pass}
5830     %<*!cite>
5831     { number.label int.to.str$ 'label :=
5832     number.label #1 + 'number.label :=
5833     %</!cite>
5834     %<cite>{ cite$ 'label :=
5835     label width$ longest.label.width >
5836     { label 'longest.label :=
5837     label width$ 'longest.label.width :=
5838     }
5839     'skip$
5840     if$
5841     }
5842    
5843     EXECUTE {initialize.longest.label}
5844    
5845     ITERATE {longest.label.pass}
5846    
5847     %</!ay&!alph>
5848     % \end{macrocode}
5849     %
5850     % \begin{macro}{`begin.bib'}
5851     % \changes{2.0}{1994 Jan 31}{For \texttt{german}, add the definition of
5852     % {\tt\protect\bslash qq} to replace double-quote character.}
5853     % \changes{2.0}{1994 Jan 31}{For \texttt{babel}, read in file
5854     % \texttt{babelbst.tex} in \texttt{thebibliography} to define the word
5855     % commands.}
5856     % \changes{3.4}{1995 Sep 5}{Add number of references as argument}
5857     % The function \texttt{begin.bib} writes the initial text to the \texttt{.bbl}
5858     % file. The most important matter here is that the \texttt{thebibliography}
5859     % environment is invoked.
5860     % \begin{macrocode}
5861     FUNCTION {begin.bib}
5862     %<*!ay&alph>
5863     { et.al.char.used
5864     { "\newcommand{\etalchar}[1]{$^{#1}$}" write$ newline$ }
5865     'skip$
5866     if$
5867     preamble$ empty$
5868     %</!ay&alph>
5869     %<ay|!alph>{ preamble$ empty$
5870     'skip$
5871     { preamble$ write$ newline$ }
5872     if$
5873     %<ay> "\begin{thebibliography}{" number.label int.to.str$ * "}" *
5874     %<!ay> "\begin{thebibliography}{" longest.label * "}" *
5875     write$ newline$
5876     %<!tit-it&tit-q> "\newcommand{\enquote}[1]{`#1'}"
5877     %<!tit-it&!tit-q&tit-qq> "\newcommand{\enquote}[1]{``#1''}"
5878     %<!tit-it&(tit-q|tit-qq)> write$ newline$
5879     %<umlaut> "\let\qq=\" quote$ * write$ newline$
5880     %<*ay>
5881     "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi"
5882     write$ newline$
5883     %</ay>
5884     %<*babel>
5885     "\input{babelbst.tex}" write$ newline$
5886     "\newcommand{\Capitalize}[1]{\uppercase{#1}}" write$ newline$
5887     "\newcommand{\capitalize}[1]{\expandafter\Capitalize#1}" write$ newline$
5888     %</babel>
5889     }
5890    
5891     EXECUTE {begin.bib}
5892    
5893     % \end{macrocode}
5894     % \end{macro}
5895     % \begin{macrocode}
5896     EXECUTE {init.state.consts}
5897    
5898     ITERATE {call.type$}
5899    
5900     FUNCTION {end.bib}
5901     { newline$
5902     "\end{thebibliography}" write$ newline$
5903     }
5904    
5905     EXECUTE {end.bib}
5906     %</!head>
5907     %</!options&!driver&!bblbst>
5908     % \end{macrocode}
5909     %
5910     % \section{The File \texttt{babelbst.tex} for English}
5911     % The following contains the definitions for the \texttt{babel} language
5912     % selection as they apply to English. This file may be extracted with
5913     % \dtx{} and the option \texttt{bblbst}.
5914     % \begin{macrocode}
5915     %<*bblbst>
5916     % This is babelbst.tex for English.
5917     % It should serve as a model for other languages.
5918     % Alternatively, store it under a different name (e.g. englbst.tex)
5919     % and then \input it with a command in babelbst.tex.
5920     \def\bbland{and}
5921     \def\bbleditors{editors} \def\bbleds{eds.}
5922     \def\bbleditor{editor} \def\bbled{ed.}
5923     \def\bbledby{edited by}
5924     \def\bbledition{edition} \def\bbledn{edn.}
5925     \def\bblvolume{volume} \def\bblvol{vol.}
5926     \def\bblof{of}
5927     \def\bblnumber{number} \def\bblno{no.}
5928     \def\bblin{in}
5929     \def\bblpages{pages} \def\bblpp{pp.}
5930     \def\bblpage{page} \def\bblp{p.}
5931     \def\bblchapter{chapter} \def\bblchap{chap.}
5932     \def\bbltechreport{Technical Report}
5933     \def\bbltechrep{Tech. Rep.}
5934     \def\bblmthesis{Master's thesis}
5935     \def\bblphdthesis{Ph.D. thesis}
5936     \def\bblfirst{First} \def\bblfirsto{1st}
5937     \def\bblsecond{Second} \def\bblsecondo{2nd}
5938     \def\bblthird{Third} \def\bblthirdo{3rd}
5939     \def\bblfourth{Fourth} \def\bblfourtho{4th}
5940     \def\bblfifth{Fifth} \def\bblfiftho{5th}
5941     \def\bblst{st} \def\bblnd{nd} \def\bblrd{rd}
5942     \def\bblth{th}
5943     \def\bbljan{January} \def\bblfeb{February} \def\bblmar{March}
5944     \def\bblapr{April} \def\bblmay{May} \def\bbljun{June}
5945     \def\bbljul{July} \def\bblaug{August} \def\bblsep{September}
5946     \def\bbloct{October} \def\bblnov{November} \def\bbldec{December}
5947     %</bblbst>
5948     % \end{macrocode}
5949     %
5950     % \Finale