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