diff options
Diffstat (limited to 'macros/lollipop/doc/manual/btxmac.tex')
-rw-r--r-- | macros/lollipop/doc/manual/btxmac.tex | 812 |
1 files changed, 0 insertions, 812 deletions
diff --git a/macros/lollipop/doc/manual/btxmac.tex b/macros/lollipop/doc/manual/btxmac.tex deleted file mode 100644 index 3093ed1a83..0000000000 --- a/macros/lollipop/doc/manual/btxmac.tex +++ /dev/null @@ -1,812 +0,0 @@ -%% @texfile{ -%% author = "Karl Berry and Oren Patashnik", -%% version = "0.99h", -%% date = "24 Apr 1991", -%% filename = "btxmac.tex", -%% address = "Please use electronic mail", -%% checksum = "812 4053 30557", -%% email = "opbibtex@neon.stanford.edu", -%% codetable = "ISO/ASCII", -%% supported = "yes", -%% docstring = "Defines macros that make BibTeX work with plain TeX", -%% } -% BibTeX-for-TeX macros, version 0.99h, for BibTeX 0.99c, TeX 3.0 or later. -% Copyright (C) 1990--91 by Karl Berry and Oren Patashnik; all rights reserved. -% You may copy this file provided: that it's accompanied by the -% "BibTeXing" document, whose text is contained in the file `btxdoc.tex'; -% that any documentation you write for these macros also gives a -% reference for "BibTeXing"; and that either you make absolutely no -% changes to your copy, or if you do make changes, (1) you name the file -% something other than `btxmac.tex' and you remove all occurrences of -% `btxmac.tex' from the file, (2) you put, somewhere in the first twenty -% lines of the file, your name, along with an electronic address at which -% others who might use the file may reach you, and (3) you remove each -% occurrence of Oren's name and electronic address from this file. These -% restrictions help ensure that all standard versions of these macros are -% identical, and that Oren doesn't get deluged with inappropriate e-mail. -% -% This file, btxmac.tex, contains TeX macros that allow BibTeX, a -% bibliography program that was originally designed for use with LaTeX, -% to work with plain TeX. Please report any bugs (outright goofs, -% improvable macros, misfeatures, or unclear documentation) to Oren -% Patashnik (opbibtex@neon.stanford.edu). These macros will become -% frozen shortly after BibTeX version 1.00 is released. -% -% To use these macros you should be familiar with how BibTeX interacts -% with LaTeX, since BibTeX's interaction with TeX is very similar; that -% interaction is explained in the LaTeX manual. It also helps to -% have read "BibTeXing", the documentation that accompanies BibTeX. -% Then, if you want, you should redefine any of the macros that begin -% with `\bbl' or `\biblabel' or `\print' that you need to get formatting -% different from the default (the default settings are designed to -% accompany a bibliography style like BibTeX's standard style `plain'). -% The macros you might want to change are described briefly a few -% paragraphs hence. Finally, as long as you follow the guidelines given -% by the LaTeX manual and "BibTeXing", you simply \input btxmac. -% [Remember the general scheme: Running (La)TeX writes information on -% the .aux (auxiliary) file; then running BibTeX reads information from -% the .aux, .bst (style), and .bib (database) files, and writes -% information (the bibliography) on a .bbl file; then running (La)TeX -% incorporates the bibliography; then running (La)TeX once more fixes -% the remaining forward references into the bibliography. Thus, to get -% everything incorporated into your output, you'll have to run (La)TeX, -% BibTeX, (La)TeX, (La)TeX. (Standup, sitdown, fight, fight, fight.)] -% -% These macros can stand alone or they can be \input into macro packages -% like Eplain. If you want to try out these macros on the 0.99 version -% of the xampl.bib file that's distributed with BibTeX (that version of -% the file has no self-identification), you'll need to define \mbox, -% which is a LaTeX command, to be \hbox. -% -% -% HISTORY -% -% Karl Berry wrote the original version of these macros in 1989 and -% 1990, for use in his `Eplain' package. Oren Patashnik modified them -% slightly in July 1990, as part of the official BibTeX distribution. -% -% 1-Aug-90 Version 0.99a, not released to the general public. -% 14-Aug-90 0.99b, first general release. -% 26-Aug-90 0.99c, made \@undefinedmessage work with other macro packages. -% 6-Sep-90 0.99d, allowed for general formatting of bibliography labels, -% for general formatting of (in-text) citations, and for -% changing certain catcodes while reading the .aux file. -% 14-Nov-90 0.99e, changed the way \@setletters works, made some \new...'s -% non-outer, and changed the way Eplain reads this file. -% 12-Dec-90 0.99f, made \@resetnumerals change the `,' and `.' catcodes; and -% added \biblabelextrahang, \@getoptionalarg, and \bblsc. -% 11-Mar-91 0.99g, made a few minor changes required by the way Eplain reads -% this file, but no functional changes. -% 24-Apr-91 0.99h, inhibited the reading and writing of the .aux file if it -% isn't used or if the \noauxfile macro is defined, and -% removed some .aux-file-opening detritus; printed the -% cite-key of undefined citations in \tt font; changed the -% catcode of `_' inside \cite; and called \@resetnumerals -% from inside a group. -% -% -% The LaTeX-related commands defined in this file include (a) the four -% commands that a user types (\bibliography, \bibliographystyle, \cite, -% and \nocite); (b) the three commands that BibTeX looks for in the .aux -% file (\bibdata, \bibstyle, and \citation---there is a fourth command -% that BibTeX looks for, but that command is related to LaTeX's \include -% facility, so these macros ignore that command); and (c) a LaTeX -% command (\newcommand) that's written by one of the four standard -% bibliography styles (alpha). The definitions here are not exactly the -% same as the corresponding LaTeX definitions (those eight LaTeX -% definitions depend on a significant fraction of LaTeX itself). But -% the only substantial differences are with \newcommand, which here, -% without complaining, lets you redefine a preexisting control sequence -% (in LaTeX, \newcommand won't let you redefine a preexisting command), -% and which here doesn't make the control sequences it defines \long (in -% LaTeX, that happens automatically); there may also be other minor -% differences. To summarize: Unless you know what you're doing, you -% shouldn't define any control sequences with these eight names: -% -% \bibdata -% \bibliography -% \bibliographystyle -% \bibstyle -% \citation -% \cite -% \newcommand -% \nocite -% -% There are three other commands written by one or more of the four -% standard (plain, abbrv, alpha, unsrt) or four semistandard (acm, -% apalike, ieeetr, siam) bibliography styles; they take effect only -% within the bibliography, and are redefinable, as explained later: -% -% \em -% \newblock -% \sc -% -% There's one control sequence you might want to use (but not redefine) -% in redefining \biblabelprint: -% -% \biblabelwidth -% -% There are twelve other control sequences (explained later in more detail) -% that the macros of this file will use if you define them---you should -% define them after the \input btxmac command but before the \bibliography -% command. The first five begin with `\bbl' and affect fonts, spacing, -% and perhaps other characteristics of the bibliography; the next three -% begin with `\biblabel' and determine how labels are formatted in the -% bibliography; and the last four begin with `\print' and determine how -% the in-text citations are formatted: -% -% \bblem -% \bblhook -% \bblnewblock -% \bblrm -% \bblsc -% \biblabelcontents -% \biblabelextrahang -% \biblabelprint -% \printbetweencitations -% \printcitefinish -% \printcitenote -% \printcitestart -% -% If it's defined before the \input btxmac command, the control sequence -% below inhibits the reading and writing of the .aux file(s), and the -% issuing of related warning messages. Any definition will do. This -% feature might help when you're working on draft stages of a document: -% -% \noauxfile -% -% Here's another control sequence (it's described later), with an `@' -% in its name, that you probably won't want to redefine unless you are -% writing another macro package; if you do redefine it, however, do it -% before the \input btxmac command: -% -% \@undefinedmessage -% -% And here are still more control sequences that, should you already have -% them defined, might conflict with the way the btxmac.tex macros use them -% (but since each of these has an `@' in its name, it's unlikely that such -% conflicts will arise unless you intend them): -% -% \@auxfile \@auxfiledonefalse \@auxfiledonetrue -% \@bracketcheck \@citation \@cite -% \@citedef \@citelabel \@citewarningfalse -% \@citewarningtrue \@commandname \@continuenewcommand -% \@emptymarkA \@emptymarkB \@fileexistsfalse -% \@fileexiststrue \@finishcitedef \@finishtestfileexistence -% \@for \@forloop \@fornoop -% \@fortmp \@getoptionalarg \@@getoptionalarg -% \@gobble \@if@auxfiledone \if@citewarning -% \@ifempty \@@ifempty \if@fileexists -% \if@notfirstcitation \@iforloop \@innerdef -% \@innernewcount \@innernewdimen \@innernewif -% \@innernewwrite \@itemnum \@letter -% \@linenumber \@newcommandwithargs \@newcommand -% \@next \@nextwhile \@nil -% \@nnil \@notfirstcitationfalse \@notfirstcitationtrue -% \@numparams \@oldatcatcode \@onecitation -% \@optionalarg \@other \@paramdef -% \@readauxfile \@readbblfile \@resetnumerals -% \@scfont \@setletters \@spacesub -% \@startdef \@testfileexistence \@tokstostring -% \@ttsA \@ttsB \@ttsmarkA -% \@ttsmarkB \@undefined \@writeaux -% -% -% So to start things off we turn `@' into a letter (category code 11), -% keeping track of the old category code for future restoration. -% (Simply resetting it to 12 when we leave these macros is -% insufficient.) The use of `\cite' as a temporary control sequence is -% a kludge, but it's a reasonably simple way to accomplish what we need -% without possibly overwriting something (without an `@' in its name) -% that might already be defined. -% -\edef\cite{\the\catcode`@}% -\catcode`@ = 11 -\let\@oldatcatcode = \cite -\chardef\@letter = 11 -\chardef\@other = 12 -% -% -% Next come some things that will be useful later. -% -% Make an outer definition into an inner one (due to Chris Thompson). -% The arguments should be the control sequence to be defined, and the -% new of the \outer control sequence, as characters; the control -% sequence #1 is defined to be just the same as \csname#2\endcsname, but -% not \outer. For example, \@innerdef\innernewcount{newcount} would -% define \innernewcount to be a non-outer version of \newcount. -% -\def\@innerdef#1#2{\edef#1{\expandafter\noexpand\csname #2\endcsname}}% -% -% We use \@innerdef to make some of our allocations local, because -% Eplain includes our code inside a conditional. We put @'s in the -% names to minimize the (already small) chance of conflicts. -% -\@innerdef\@innernewcount{newcount}% -\@innerdef\@innernewdimen{newdimen}% -\@innerdef\@innernewif{newif}% -\@innerdef\@innernewwrite{newwrite}% -% -% -% Swallow one parameter. -% -\def\@gobble#1{}% -% -% -% Use TeX 3.0's \inputlineno to get the line number, for better error -% messages, but if we're using an old version of TeX, don't do anything. -% -\ifx\inputlineno\@undefined - \let\@linenumber = \empty % Pre-3.0. -\else - \def\@linenumber{\the\inputlineno:\space}% -\fi -% -% -% \@getoptionalarg\CS gets an optional argument from the input, enclosed -% in brackets, then expands \CS. We set \@optionalarg to \empty if we -% don't find one, otherwise to the text of the argument. This assumes -% the brackets don't have a funny category code. -% -\def\@getoptionalarg#1{\let\temp = #1\futurelet\next\@bracketcheck}% -\def\@bracketcheck{\begingroup - \if [\next - \aftergroup\@@getoptionalarg - \else - \global\let\@optionalarg = \empty - % - % We can't do the \aftergroup\temp after the \fi, because then the - % \temp gets in the way of reading the optional argument from the - % input, if we do have one. - \aftergroup\temp - \fi -\endgroup}% -% -\def\@@getoptionalarg[#1]{% - \def\@optionalarg{#1}% - \temp -}% -% -% -% \@tokstostring converts its argument into a list of character tokens. -% It uses no commands that are executed in the stomach, only expansions -% handled in the gullet. (This is necessary for use with \edef). -% -% Control sequences in the argument are not expanded. Blanks become a -% \spacesub. The argument shouldn't contain other special characters. -% -\def\@tokstostring#1{\@ttsA#1 \@ttsmarkA}% -% -% \@ttsA partitions a sequence of tokens into portions delimited by blanks. -% -\def\@ttsA#1 #2\@ttsmarkA{% - \@ifempty{#1}\else - \@ttsB #1\@ttsmarkB - % - \@ifempty{#2}\else - \@spacesub\@ttsA#2\@ttsmarkA - \fi - \fi -}% -% -% \@ttsB processes a sequence of tokens with no contained blanks. -% -\def\@ttsB#1{% - \ifx #1\@ttsmarkB\else - \string #1% - \expandafter\@ttsB - \fi -}% -% -% This is just so \ifx won't complain about an undefined control sequence. -% -\def\@ttsmarkB{\@ttsmarkB}% should never be expanded -% -% The expansion of this macro replaces spaces. -% -\def\@spacesub{+}% -% -% -% \@ifempty tests if it is given an argument. -% -\def\@ifempty#1{\@@ifempty #1\@emptymarkA\@emptymarkB}% -\def\@@ifempty#1#2\@emptymarkB{\ifx #1\@emptymarkA}% -% -\def\@emptymarkA{\@emptymarkA}% Again, so \ifx won't complain. -% -% -% From LaTeX. -% -\def\@nnil{\@nil}% -\def\@fornoop#1\@@#2#3{}% -% -\def\@for#1:=#2\do#3{% - \edef\@fortmp{#2}% - \ifx\@fortmp\empty \else - \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}% - \fi -}% -% -\def\@forloop#1,#2,#3\@@#4#5{\def#4{#1}\ifx #4\@nnil \else - #5\def#4{#2}\ifx #4\@nnil \else#5\@iforloop #3\@@#4{#5}\fi\fi -}% -% -\def\@iforloop#1,#2\@@#3#4{\def#3{#1}\ifx #3\@nnil - \let\@nextwhile=\@fornoop \else - #4\relax\let\@nextwhile=\@iforloop\fi\@nextwhile#2\@@#3{#4}% -}% -% -% -% This macro tests if a file \jobname.#1 exists, and sets -% \if@fileexists appropriately. If an optional argument is given, it is -% used as the root part of the filename instead of \jobname. -% -\@innernewif\if@fileexists -% -\def\@testfileexistence{\@getoptionalarg\@finishtestfileexistence}% -\def\@finishtestfileexistence#1{% - \begingroup - \def\extension{#1}% - \immediate\openin0 = - \ifx\@optionalarg\empty\jobname\else\@optionalarg\fi - \ifx\extension\empty \else .#1\fi - \space - \ifeof 0 - \global\@fileexistsfalse - \else - \global\@fileexiststrue - \fi - \immediate\closein0 - \endgroup -}% -% -% -%% [[[start of BibTeX-specific stuff]]] -% -% Now come the four main LaTeX commands and their associated .aux -% commands. Just as in LaTeX, \bibliographystyle defines the BibTeX -% style name (.bst file, that is), and \bibliography defines the -% database (.bib) file(s). The corresponding .aux-file commands are -% \bibstyle and \bibdata, which are there only for BibTeX's (but not -% LaTeX's) use. -% -\def\bibliographystyle#1{% - \@readauxfile - \@writeaux{\string\bibstyle{#1}}% -}% -\let\bibstyle = \@gobble -% -% As well as writing the \bibdata command to tell BibTeX -% which .bib files to read, we read the .bbl file that -% BibTeX (or a person, conceivably) has produced. -% -\def\bibliography#1{% - \@readauxfile - \@writeaux{\string\bibdata{#1}}% - \@testfileexistence{bbl}% - \if@fileexists - \@readbblfile - \fi -}% -\let\bibdata = \@gobble -% -% The \nocite{label,label,...} command writes its argument to \@auxfile, -% unless instructed not to, but produces no text in the document. Both -% the \nocite and \cite commands produce \citation commands in the .aux file. -% -\def\nocite#1{% - \@readauxfile - \@writeaux{\string\citation{#1}}% -}% -% -\@innernewif\if@notfirstcitation -% -% \cite[note]{label,label,...} produces the citations for the labels as -% well. If the optional argument `note' is present, it's added after -% the labels. Since \cite calls \nocite before doing any writing, it -% doesn't need to call \@readauxfile. We change the category code of -% `_' so that the dummy definition given to the citation label doesn't -% include a subcript character; that would cause TeX to complain. -% -\def\cite{\begingroup\catcode`_ = \@letter \@getoptionalarg\@cite}% -% -% Typeset the citations for the labels in #1, followed by the note, if -% it exists. To change the citation's format in the text, redefine one -% or more `\print...' macros, whose defaults appear later in this file. -% -\def\@cite#1{% - \nocite{#1}% - % Start printing the text, beginning with a left bracket by default. - % - \printcitestart - \@notfirstcitationfalse - \@for \@citation :=#1\do - {% - \expandafter\@onecitation\@citation\@@ - }% - \ifx\empty\@optionalarg\else - \printcitenote{\@optionalarg}% - \fi - \printcitefinish - \endgroup -}% -% -\def\@onecitation#1\@@{% - \if@notfirstcitation - \printbetweencitations - \fi - % - \expandafter \ifx \csname\@citelabel{#1}\endcsname \relax - \if@citewarning - \message{\@linenumber Undefined citation `#1'.}% - \fi - % Give it a dummy definition: - \expandafter\gdef\csname\@citelabel{#1}\endcsname{% - {\tt \nobreak\hskip0pt#1\nobreak\hskip0pt}}% - \fi - % Now produce the text, whether it was undefined or not. - \csname\@citelabel{#1}\endcsname - \@notfirstcitationtrue -}% -% -% Given a label `foo', the macro `\b@foo' is supposed to -% hold the text that should be produced. -% -\def\@citelabel#1{\@tokstostring{b@#1}}% -% -% So, how does a citation label get defined? When we read the .bbl file -% (below), a \bibitem writes out a \@citedef command. And when we read -% the \@citedef, we define \@citelabel{#1}, where #1 is the user's -% label. But we have to be careful when reading the \@citedef, because -% the second argument might have accents or other commands with numbers -% as arguments. We have given the numerals category code 11 for reading -% the .aux file, and that prevents them from being recognized as TeX -% <number>s. Similarly for the other characters that can be part of a -% <number>. So we have to reset the category codes before reading the -% second argument. We also have to reset them back to letters when we -% finish reading the \@citedef's, because there might be more labels -% with numerals in them defined afterwards in the .aux file, put there -% by Eplain or whatever. -% -\def\@citedef#1{% - \begingroup - \@resetnumerals - \@finishcitedef{#1}% -}% -\def\@finishcitedef#1#2{% - \expandafter\gdef\csname\@citelabel{#1}\endcsname{#2}% - \endgroup -}% -\def\@resetnumerals{% - \catcode`0 = \@other \catcode`1 = \@other \catcode`2 = \@other - \catcode`3 = \@other \catcode`4 = \@other \catcode`5 = \@other - \catcode`6 = \@other \catcode`7 = \@other \catcode`8 = \@other - \catcode`9 = \@other \catcode`" = \@other \catcode`' = \@other - \catcode`` = \@other \catcode`, = \@other \catcode`. = \@other -}% -% -% -% Reading the .bbl file also produces the typeset bibliography. Please -% notice, however, that we do not produce the title for the references -% (e.g., `References'), as LaTeX does. The formatting and spacing of -% that title, whether it should go into the headline, and so on, are all -% things determined by your format. We cannot know those things in -% advance. If you wish, you can define \bblhook to produce the title. -% Or just do it before the \bibliography command. -% -\def\@readbblfile{% - % Define a counter to tell us which item number we are on. - \@innernewcount\@itemnum - % - \begingroup - \def\begin##1##2{% - % ##1 is just `thebibliography'. - % ##2 is the widest label. - % We set (new dimen) \biblabelwidth based on the widest label - \setbox0 = \hbox{\biblabelcontents{##2}}% - \biblabelwidth = \wd0 - }% - \def\end##1{}% ##1 is `thebibliography' again. - % - % Here we have two possibilities: - % \bibitem[typesetlabel]{citationlabel} - % \bibitem{citationlabel} - % If we have the second of these, the citations are numbered, starting - % from one; we use our own count register \@itemnum for this. - % - \@itemnum = 0 - \def\bibitem{\futurelet\next\@bibitem}% - \def\@bibitem{% - \begingroup \if [\next - \aftergroup\@alphabibitem - \else - \aftergroup\@numberedbibitem - \fi \endgroup - }% - \def\@alphabibitem[##1]##2{% - % Need \xdef here for various reasons. - \expandafter \xdef\csname\@citelabel{##2}\endcsname {##1}% - \@finishbibitem{##2}% - }% - % - \def\@numberedbibitem##1{% - \advance\@itemnum by 1 - \expandafter \xdef\csname\@citelabel{##1}\endcsname{\number\@itemnum}% - \@finishbibitem{##1}% - }% - % - \def\@finishbibitem##1{% - \biblabelprint{\csname\@citelabel{##1}\endcsname}% - \@writeaux{\string\@citedef{##1}{\csname\@citelabel{##1}\endcsname}}% - \ignorespaces - }% - % - % Do the printing (we're producing the bibliography, remember). - % - \let\em = \bblem - \let\newblock = \bblnewblock - \let\sc = \bblsc - % Punctuation won't affect spacing; - \frenchspacing - % the penalties below are from LaTeX's [article,book,report].sty; - \clubpenalty = 4000 \widowpenalty = 4000 - % the next two values come from LaTeX's \sloppy command; - \tolerance = 10000 \hfuzz = .5pt - \everypar = {\hangindent = \biblabelwidth - \advance\hangindent by \biblabelextrahang}% - \bblrm - % the \parskip is a guess at what looks good; - \parskip = 1.5ex plus .5ex minus .5ex - % and the .5em matches the \enspace of \biblabelprint below. - \biblabelextrahang = .5em - \bblhook - % - \input \jobname.bbl - \endgroup -}% -% -% The widest label's width is useful for redefining \biblabelprint; you -% redefine \biblabelwidth, in effect, by redefining the -% \biblabelcontents macro that appears below. And \biblabelextrahang, -% which is redefinable inside \bblhook, is added to \biblabelwidth to -% determine the amount of hanging indentation. -% -\@innernewdimen\biblabelwidth -\@innernewdimen\biblabelextrahang -% -% Now come the main macros that are related to the printing of the -% bibliography. Since you might want to redefine them, they are given -% default definitions outside of \@readbblfile. -% -% The first one controls the printing of a bibliography entry's label. -% If you change it, make sure that it starts with something like -% \noindent or \indent that puts TeX into horizontal mode (even if the -% label itself is empty); otherwise, the hanging indentation will get -% messed up in certain circumstances. -% -\def\biblabelprint#1{% - \noindent\hbox to \biblabelwidth{\biblabelcontents{#1}\hss}\enspace}% -% -% By default the labels are typeset in \bblrm, and enclosed in brackets. -% -\def\biblabelcontents#1{\bblrm [#1]}% -% -% The main text, too, is typeset using \bblrm, which is \rm by default. -% -\def\bblrm{\rm}% -% -% Emphasis for producing, e.g., titles, is done with \it by default. -% -\def\bblem{\it}% -% -% Some styles use a caps-and-small-caps font for author names. LaTeX -% defines an \sc command but plain TeX doesn't, so we need one here. -% The definition below doesn't load the font unless it's needed, but it -% tries to load only the 10pt version, because it might not exist at -% other point sizes. -% -\def\bblsc{\ifx\@scfont\@undefined - \font\@scfont = cmcsc10 - \fi - \@scfont -}% -% -% The major parts of an entry are separated with \bblnewblock. The -% numbers below are taken from LaTeX's `article' style. -% -\def\bblnewblock{\hskip .11em plus .33em minus .07em}% -% -% Here's where you stick any other bibliography-formatting goodies, or -% redefine the values above. -% -\let\bblhook = \empty -% -% -% Here are the four default definitions for formatting the in-text -% citations. These are what you redefine (after your \input btxmac but -% before your \bibliography) to get parens instead of brackets, or -% superscripts, or footnotes, or whatever. -% -\def\printcitestart{[}% left bracket -\def\printcitefinish{]}% right bracket -\def\printbetweencitations{, }% comma, space -\def\printcitenote#1{, #1}% comma, space, note (if it exists) -% -% That scheme is pretty flexible. For example you could use -% \def\printcitestart{$^\bgroup} -% \def\printcitefinish{\egroup$} -% \def\printbetweencitations{,} -% \def\printcitenote#1{\hbox{\sevenrm\space (#1)}} -% to get superscripted in-text citations. To get something radically -% different, however, you'll have to define your own \cite command. -% -% When we read this from the .aux file, \citation means nothing. -% -\let\citation = \@gobble -% -% -% Now comes the stuff for dealing with LaTeX's \newcommand. As -% mentioned earlier, this \newcommand will redefine a preexisting -% command; that's different from how LaTeX's \newcommand behaves. -% -\@innernewcount\@numparams -% -% \newcommand{\foo}[n]{text} defines the control sequence \foo to have -% n parameters, and replacement text `text'. -% -\def\newcommand#1{% - \def\@commandname{#1}% - \futurelet\@next\@continuenewcommand -}% -% -% Figure out if this definition has parameters. -% -\def\@continuenewcommand{\begingroup - \if [\@next - \aftergroup\@newcommandwithargs - \else - \global\@numparams = 0 - \aftergroup\@newcommand - \fi -\endgroup}% -% -\def\@newcommandwithargs[#1]{% - \global\@numparams = #1 - \@newcommand -}% -% -% \@numparams is how many arguments this command has. The name of the -% command is \@commandname. The replacement text for the new macro is #1. -% -\def\@newcommand#1{% - \def\@startdef{\expandafter\edef\@commandname}% - \ifnum\@numparams=0 - \let\@paramdef = \empty - \else - \ifnum\@numparams>9 - \errmessage{\the\@numparams\space is too many parameters}% - \else - \ifnum\@numparams<0 - \errmessage{\the\@numparams\space is too few parameters}% - \else - \edef\@paramdef{% - % This is disgusting, but \loop doesn't work inside \edef, - % because \body isn't defined. - % - \ifcase\@numparams - \empty No arguments. - \or ####1% - \or ####1####2% - \or ####1####2####3% - \or ####1####2####3####4% - \or ####1####2####3####4####5% - \or ####1####2####3####4####5####6% - \or ####1####2####3####4####5####6####7% - \or ####1####2####3####4####5####6####7####8% - \or ####1####2####3####4####5####6####7####8####9% - \fi - }% - \fi - \fi - \fi - \expandafter\@startdef\@paramdef{#1}% -}% -% -%% [[[end of BibTeX-specific stuff]]] -% -% -% Names of references (arguments given in the \cite and \nocite -% commands) and file names (arguments given in the \bibliography and -% \bibliographystyle commands) are recorded in \jobname.aux, called the -% \@auxfile in these macros. Here's how they get read in. -% -\def\@readauxfile{% - \if@auxfiledone \else % remember: \@auxfiledonetrue if \noauxfile is defined - \global\@auxfiledonetrue - \@testfileexistence{aux}% - \if@fileexists - \begingroup - % Because we might be in horizontal mode when \@readauxfile - % is called (if it's in response to a \cite or \nocite), we - % want to ignore all the would-be spaces at the ends of - % lines in the aux file. Fortunately, there are never any - % (non-pathological) cases where an end-of-line might - % actually be desired. If you really need to do something - % strange, you can redefine \@setletters to do something - % besides what it does now (this is intentionally left as - % being somewhat painful to do). - \endlinechar = -1 - \@setletters - \input \jobname.aux - \endgroup - \else - \message{\@undefinedmessage}% - \global\@citewarningfalse - \fi - \immediate\openout\@auxfile = \jobname.aux - \fi -}% -% -% The \@readauxfile macro does all that work the first time it's called. -% Since it's called once for every \cite, \nocite, \bibliography, and -% \bibliographystyle command that the user issues, we need to remember -% whether the work's been done. It's considered done if we're not to do -% it---that is, if \noauxfile is defined. -% -\newif\if@auxfiledone -\ifx\noauxfile\@undefined \else \@auxfiledonetrue\fi -% -% Since lots of characters are allowable inside reference names, and -% since a reference name can get converted into a control sequence, -% \@readauxfile must treat many characters as letters. It does that by -% calling \@setletters, which changes the category code of all \@other -% characters to \@letter. The 128/256 business arises because character -% codes go up to 256 starting with TeX 3.0, but up to only 128 with -% earlier versions. -% -\def\@setletters{% - \count255 = 0 - \edef\temp{\ifx\inputlineno\@undefined 128\else 256\fi}% - \loop - \ifnum\catcode\count255 = \@other - \catcode\count255 = \@letter - \fi - \advance\count255 by 1 - \ifnum\count255<\temp - \repeat - % The Eplain package uses underscores to construct the label names. - \catcode`\_ = \@letter -}% -% -% It's conceivable you'd want to change how other characters are read; -% to do that, change their category code before doing \input btxmac. -% -% -% After reading the .aux file, \@readauxfile opens it for writing. -% The \@writeaux macro does the actual writing (as long as -% \noauxfile is undefined). -% -\@innernewwrite\@auxfile -\def\@writeaux#1{\ifx\noauxfile\@undefined \write\@auxfile{#1}\fi}% -% -% -% A macro package that uses btxmac.tex might define -% \@undefinedmessage (before doing an \input btxmac). -% -\ifx\@undefinedmessage\@undefined - \def\@undefinedmessage{No .aux file; I won't give you warnings about - undefined citations.}% -\fi -% -% Even if citations are undefined, we want to complain only if -% \@citewarningtrue. The default is to set \@citewarningtrue unless -% \noauxfile is defined. Again, a macro package that uses -% btxmac.tex might want to redefine this. -% -\@innernewif\if@citewarning -\ifx\noauxfile\@undefined \@citewarningtrue\fi -% -% -% Finally, before leaving we restore @'s old category code. -% -\catcode`@ = \@oldatcatcode |