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

File Contents

# Content
1 %\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