diff options
Diffstat (limited to 'Master/texmf-dist/doc/plain/impatient-fr/eplain.tex')
-rw-r--r-- | Master/texmf-dist/doc/plain/impatient-fr/eplain.tex | 1196 |
1 files changed, 1196 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/plain/impatient-fr/eplain.tex b/Master/texmf-dist/doc/plain/impatient-fr/eplain.tex new file mode 100644 index 00000000000..19ad8cf59f6 --- /dev/null +++ b/Master/texmf-dist/doc/plain/impatient-fr/eplain.tex @@ -0,0 +1,1196 @@ +%% @texfile{ +%% author = "Karl Berry et al.", +%% version = "1.9a", +%% date = "28jul03", +%% filename = "eplain.tex", +%% email = "karl@cs.umb.edu", +%% codetable = "ISO/ASCII", +%% supported = "yes", +%% docstring = "This file defines macros that expand on plain TeX, and +%% is used in the production of the book TeX for the Impatient. It was +%% originally version 1.9 from 11mar91, and differs only in this header +%% material. Sadly, newer versions of eplain have more +%% incompatibilities with the features we used to produce TFTI. Of +%% course new documents should use the latest eplain, available from +%% http://tug.org/eplain and from http://www.ctan.org/macros/eplain. +%% ", +%% } +\def\makeactive#1{\catcode`#1 = \active \ignorespaces}% +\chardef\letter = 11 +\chardef\other = 12 +\catcode`@ = \letter +\def\uncatcodespecials{% + \def\do##1{\catcode`##1 = \other}% + \dospecials +}% +{% + \makeactive\^^M + \long\gdef\letreturn#1{\let^^M = #1}% +}% +\def\gobble#1{}% +\def\gobbletwo#1#2{}% +\def\gobblethree#1#2#3{}% +\def\@gobblemeaning#1:->{}% +\def\sanitize{\expandafter\@gobblemeaning\meaning}% +\def\futurenonspacelet#1{\def\cs{#1}% + \afterassignment\@stepone\let\nexttoken= +}% +\def\\{\let\@stoken= }% +\\ % now \@stoken is a space token (\\ is a control symbol, so that +\def\@stepone{\expandafter\futurelet\cs\@steptwo}% +\def\@steptwo{\expandafter\ifx\cs\@stoken\let\@@next=\@stepthree + \else\let\@@next=\nexttoken\fi \@@next}% +\def\@stepthree{\afterassignment\@stepone\let\@@next= }% +\let\@plainwlog = \wlog +\let\wlog = \gobble +\newlinechar = `^^J +\def\loggingall{\tracingcommands\tw@\tracingstats\tw@ + \tracingpages\@ne\tracingoutput\@ne\tracinglostchars\@ne + \tracingmacros\tw@\tracingparagraphs\@ne\tracingrestores\@ne + \showboxbreadth\maxdimen\showboxdepth\maxdimen +}% +\def\tracingboxes{\showboxbreadth = \maxdimen \showboxdepth = \maxdimen}% +\newdimen\hruledefaultheight \hruledefaultheight = 0.4pt +\newdimen\hruledefaultdepth \hruledefaultdepth = 0.0pt +\newdimen\vruledefaultwidth \vruledefaultwidth = 0.4pt +\def\ehrule{\hrule height\hruledefaultheight depth\hruledefaultdepth}% +\def\evrule{\vrule width\vruledefaultwidth}% +\begingroup + \catcode`\{ = 12 \catcode`\} = 12 + \catcode`\[ = 1 \catcode`\] = 2 + \gdef\lbracechar[{]% + \gdef\rbracechar[}]% + \catcode`\% = \other + \gdef\percentchar[%]\endgroup +\def^^L{\par}% +\let\@ifempty = \iffalse +\ifx\@undefinedmessage\@undefined + \def\@undefinedmessage + {No .aux file; I won't warn you about undefined labels.}% +\fi +%% @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", +%% } +\edef\cite{\the\catcode`@}% +\catcode`@ = 11 +\let\@oldatcatcode = \cite +\chardef\@letter = 11 +\chardef\@other = 12 +\def\@innerdef#1#2{\edef#1{\expandafter\noexpand\csname #2\endcsname}}% +\@innerdef\@innernewcount{newcount}% +\@innerdef\@innernewdimen{newdimen}% +\@innerdef\@innernewif{newif}% +\@innerdef\@innernewwrite{newwrite}% +\def\@gobble#1{}% +\ifx\inputlineno\@undefined + \let\@linenumber = \empty % Pre-3.0. +\else + \def\@linenumber{\the\inputlineno:\space}% +\fi +\def\@getoptionalarg#1{\let\temp = #1\futurelet\next\@bracketcheck}% +\def\@bracketcheck{\begingroup + \if [\next + \aftergroup\@@getoptionalarg + \else + \global\let\@optionalarg = \empty + \aftergroup\temp + \fi +\endgroup}% +\def\@@getoptionalarg[#1]{% + \def\@optionalarg{#1}% + \temp +}% +\def\@tokstostring#1{\@ttsA#1 \@ttsmarkA}% +\def\@ttsA#1 #2\@ttsmarkA{% + \@ifempty{#1}\else + \@ttsB #1\@ttsmarkB + \@ifempty{#2}\else + \@spacesub\@ttsA#2\@ttsmarkA + \fi + \fi +}% +\def\@ttsB#1{% + \ifx #1\@ttsmarkB\else + \string #1% + \expandafter\@ttsB + \fi +}% +\def\@ttsmarkB{\@ttsmarkB}% should never be expanded +\def\@spacesub{+}% +\def\@ifempty#1{\@@ifempty #1\@emptymarkA\@emptymarkB}% +\def\@@ifempty#1#2\@emptymarkB{\ifx #1\@emptymarkA}% +\def\@emptymarkA{\@emptymarkA}% Again, so \ifx won't complain. +\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}% +}% +\@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 +}% +\toks0 = {% +\def\bibliographystyle#1{% + \@readauxfile + \@writeaux{\string\bibstyle{#1}}% +}% +\let\bibstyle = \@gobble +\def\bibliography#1{% + \@readauxfile + \@writeaux{\string\bibdata{#1}}% + \@testfileexistence{bbl}% + \if@fileexists + \@readbblfile + \fi +}% +\let\bibdata = \@gobble +\def\nocite#1{% + \@readauxfile + \@writeaux{\string\citation{#1}}% +}% +\@innernewif\if@notfirstcitation +\def\cite{\begingroup\catcode`_ = \@letter \@getoptionalarg\@cite}% +\def\@cite#1{% + \nocite{#1}% + \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 + \expandafter\gdef\csname\@citelabel{#1}\endcsname{% + {\tt \nobreak\hskip0pt#1\nobreak\hskip0pt}}% + \fi + \csname\@citelabel{#1}\endcsname + \@notfirstcitationtrue +}% +\def\@citelabel#1{\@tokstostring{b@#1}}% +\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 +}% +\def\@readbblfile{% + \@innernewcount\@itemnum + \begingroup + \def\begin##1##2{% + \setbox0 = \hbox{\biblabelcontents{##2}}% + \biblabelwidth = \wd0 + }% + \def\end##1{}% ##1 is `thebibliography' again. + \@itemnum = 0 + \def\bibitem{\futurelet\next\@bibitem}% + \def\@bibitem{% + \begingroup \if [\next + \aftergroup\@alphabibitem + \else + \aftergroup\@numberedbibitem + \fi \endgroup + }% + \def\@alphabibitem[##1]##2{% + \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 + }% + \let\em = \bblem + \let\newblock = \bblnewblock + \let\sc = \bblsc + \frenchspacing + \clubpenalty = 4000 \widowpenalty = 4000 + \tolerance = 10000 \hfuzz = .5pt + \everypar = {\hangindent = \biblabelwidth + \advance\hangindent by \biblabelextrahang}% + \bblrm + \parskip = 1.5ex plus .5ex minus .5ex + \biblabelextrahang = .5em + \bblhook + \input \jobname.bbl + \endgroup +}% +\@innernewdimen\biblabelwidth +\@innernewdimen\biblabelextrahang +\def\biblabelprint#1{% + \noindent\hbox to \biblabelwidth{\biblabelcontents{#1}\hss}\enspace}% +\def\biblabelcontents#1{\bblrm [#1]}% +\def\bblrm{\rm}% +\def\bblem{\it}% +\def\bblsc{\ifx\@scfont\@undefined + \font\@scfont = cmcsc10 + \fi + \@scfont +}% +\def\bblnewblock{\hskip .11em plus .33em minus .07em}% +\let\bblhook = \empty +\def\printcitestart{[}% left bracket +\def\printcitefinish{]}% right bracket +\def\printbetweencitations{, }% comma, space +\def\printcitenote#1{, #1}% comma, space, note (if it exists) +\let\citation = \@gobble +\@innernewcount\@numparams +\def\newcommand#1{% + \def\@commandname{#1}% + \futurelet\@next\@continuenewcommand +}% +\def\@continuenewcommand{\begingroup + \if [\@next + \aftergroup\@newcommandwithargs + \else + \global\@numparams = 0 + \aftergroup\@newcommand + \fi +\endgroup}% +\def\@newcommandwithargs[#1]{% + \global\@numparams = #1 + \@newcommand +}% +\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{% + \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}% +}% +}% +\ifx\nobibtex\@undefined \the\toks0 \fi +\def\@readauxfile{% + \if@auxfiledone \else % remember: \@auxfiledonetrue if \noauxfile is defined + \global\@auxfiledonetrue + \@testfileexistence{aux}% + \if@fileexists + \begingroup + \endlinechar = -1 + \@setletters + \input \jobname.aux + \endgroup + \else + \message{\@undefinedmessage}% + \global\@citewarningfalse + \fi + \immediate\openout\@auxfile = \jobname.aux + \fi +}% +\newif\if@auxfiledone +\ifx\noauxfile\@undefined \else \@auxfiledonetrue\fi +\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 + \catcode`\_ = \@letter +}% +\@innernewwrite\@auxfile +\def\@writeaux#1{\ifx\noauxfile\@undefined \write\@auxfile{#1}\fi}% +\ifx\@undefinedmessage\@undefined + \def\@undefinedmessage{No .aux file; I won't give you warnings about + undefined citations.}% +\fi +\@innernewif\if@citewarning +\ifx\noauxfile\@undefined \@citewarningtrue\fi +\catcode`@ = \@oldatcatcode +\let\auxfile = \@auxfile +\let\for = \@for +\let\getoptionalarg = \@getoptionalarg +\let\ifempty = \@ifempty +\def\iffileexists{\if@fileexists}% +\let\innerdef = \@innerdef +\let\innernewcount = \@innernewcount +\let\innernewdimen = \@innernewdimen +\let\innernewif = \@innernewif +\let\innernewwrite = \@innernewwrite +\let\linenumber = \@linenumber +\let\readauxfile = \@readauxfile +\let\spacesub = \@spacesub +\let\testfileexistence = \@testfileexistence +\let\tokstostring = \@tokstostring +\let\writeaux = \@writeaux +\def\innerinnerdef#1{\expandafter\innerdef\csname inner#1\endcsname{#1}}% +\innerinnerdef{newbox}% +\innerinnerdef{newfam}% +\innerinnerdef{newhelp}% +\innerinnerdef{newinsert}% +\innerinnerdef{newlanguage}% +\innerinnerdef{newmuskip}% +\innerinnerdef{newread}% +\innerinnerdef{newskip}% +\innerinnerdef{newtoks}% +\def\immediatewriteaux#1{% + \ifx\noauxfile\@undefined + \immediate\write\@auxfile{#1}% + \fi +}% +\begingroup + \makeactive\^^M \makeactive\ % No spaces or ^^M's from here on. +\gdef\obeywhitespace{% +\makeactive\^^M\def^^M{\par\futurelet\next\@finishobeyedreturn}% +\makeactive\ \def {\ }% +\aftergroup\@removebox% +\futurelet\next\@finishobeywhitespace% +}% +\gdef\@finishobeywhitespace{{% +\ifx\next % +\aftergroup\@obeywhitespaceloop% +\else\ifx\next^^M% +\aftergroup\gobble% +\fi\fi}}% +\gdef\@finishobeyedreturn{% +\ifx\next^^M\vskip\blanklineskipamount\fi% +\indent% +}% +\endgroup +\def\@obeywhitespaceloop#1{\futurelet\next\@finishobeywhitespace}% +\def\@removebox{% + \setbox0 = \lastbox + \ifdim\wd0=\parindent + \setbox2 = \hbox{\unhbox0}% + \ifdim\wd2=0pt + \ignorespaces + \else + \box2 % Put it back: it wasn't empty. + \fi + \else + \box0 % Put it back: it wasn't the right width. + \fi +}% +\newskip\blanklineskipamount +\blanklineskipamount = 0pt +\def\frac#1/#2{\leavevmode + \kern.1em \raise .5ex \hbox{\the\scriptfont0 #1}% + \kern-.1em $/$% + \kern-.15em \lower .25ex \hbox{\the\scriptfont0 #2}% +}% +\def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\null}% +\def\LaTeX{L\kern -.26em \raise .6ex \hbox{\sevenrm A}\kern -.15em \TeX}% +\def\AMSTeX{$\cal A\kern -.1667em + \lower .5ex\hbox{$\cal M$}% + \kern -.125em S$-\TeX +}% +\def\BibTeX{{\rm B\kern-.05em{\sevenrm I\kern-.025em B}\kern-.08em + T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}% +\font\mflogo = logo10 +\def\MF{{\mflogo META}{\tenrm \-}{\mflogo FONT}}% +\def\blackbox{\vrule height .8ex width .6ex depth -.2ex }% square bullet +\def\makeblankbox#1#2{% + \ifvoid0 + \errmessage{Box 0 is void}% + \errhelp = \@makeblankboxhelp + \fi + \hbox{\lower\dp0 + \vbox{\hidehrule{#1}{#2}% + \kern -#1% overlap rules + \hbox to \wd0{\hidevrule{#1}{#2}% + \raise\ht0\vbox to #1{}% vrule height + \lower\dp0\vtop to #1{}% vrule depth + \hfil\hidevrule{#2}{#1}% + }% + \kern-#1\hidehrule{#2}{#1}% + }% + }% +}% +\newhelp\@makeblankboxhelp{Assigning to the dimensions of a void^^J% + box has no effect. Do `\string\setbox0=\string\null' before you^^J% + define its dimensions.}% +\def\hidehrule#1#2{\kern-#1\hrule height#1 depth#2 \kern-#2}% +\def\hidevrule#1#2{% + \kern-#1% + \dimen0=#1\advance\dimen0 by #2% + \vrule width\dimen0 + \kern-#2% +}% +\newdimen\boxitspace \boxitspace = 3pt +\def\boxit#1{% + \vbox{% + \hrule + \hbox{% + \vrule + \kern\boxitspace + \vbox{\kern\boxitspace \parindent = 0pt #1\kern\boxitspace}% + \kern\boxitspace + \vrule + }% + \hrule + }% +}% +\def\numbername#1{\ifcase#1% + zero% + \or one% + \or two% + \or three% + \or four% + \or five% + \or six% + \or seven% + \or eight% + \or nine% + \or ten% + \or #1% + \fi +}% +\def\environment#1{% + \ifx\@groupname\@undefined\else + \errhelp = \@unnamedendgrouphelp + \errmessage{`\@groupname' was not closed by \string\endenvironment}% + \fi + \def\@groupname{#1}% + \begingroup + \let\@groupname = \@undefined +}% +\def\endenvironment#1{% + \endgroup + \def\@thearg{#1}% + \ifx\@groupname\@thearg + \else + \ifx\@groupname\@undefined + \errhelp = \@isolatedendenvironmenthelp + \errmessage{Isolated \string\endenvironment\space for `#1'}% + \else + \errhelp = \@mismatchedenvironmenthelp + \errmessage{Environment `#1' ended, but `\@groupname' started}% + \endgroup % Probably a typo in the names. + \fi + \fi + \let\@groupname = \@undefined +}% +\newhelp\@unnamedendgrouphelp{Most likely, you just forgot an^^J% + \string\endenvironment. Maybe you should try inserting another^^J% + \string\endgroup to recover.}% +\newhelp\@isolatedendenvironmenthelp{You ended an environment X, but^^J% + no \string\environment\space to start it is anywhere in sight.^^J% + You might also be at an \string\endenvironment\space that would match^^J% + a \string\begingroup, i.e., you forgot an \string\endgroup.}% +\newhelp\@mismatchedenvironmenthelp{You started an environment X, but^^J% + you ended it with Y. Maybe you made a typo in one or the other^^J% + of the names.}% +\newif\ifenvironment +\def\checkenv{\ifenvironment \errhelp = \@interwovenenvhelp + \errmessage{Interwoven environments}% + \endgroup \fi +}% +\newhelp\@interwovenenvhelp{Perhaps you forgot to end the previous^^J% + environment? I'm finishing off the current group,^^J% + hoping that will fix it.}% +\newif\ifeqno +\newif\ifleqno +\def\eq{\the\@eqtoks}% +\def\eqn{\the\@eqnotoks}% +\newtoks\@eqtoks +\newtoks\@eqnotoks +\long\def\displaysetup#1$${% + \@ddisplaytest#1\eqdef\eqdef\@ddisplaytest + \expandafter\@displaytest\the\toks0\eqno\eqno\@displaytest +}% +\def\@removetrailingspaces#1 #2 \endmark{#1}% +\long\def\@ddisplaytest#1\eqdef#2\eqdef#3\@ddisplaytest{% + \if !\noexpand#3!% + \toks0 = {#1}% + \else + \toks2 = {#1}% + \begingroup + \def\temp{\@removetrailingspaces #2}% + \def\\{ }% + \xdef\temp{{\expandafter\temp\\ \endmark}}% + \endgroup + \toks4 = \expandafter\expandafter\expandafter{\expandafter\eqdef\temp}% + \edef\@setupeq{\toks0 = {\the\toks2 \the\toks4}}% + \@setupeq + \fi +}% +\long\def\@displaytest#1\eqno#2\eqno#3\@displaytest{% + \if !\noexpand#3!% + \@ldisplaytest#1\leqno\leqno\@ldisplaytest + \else + \eqnotrue + \leqnofalse + \@eqnotoks = {#2}% + \@eqtoks = {#1}% + \fi + \generaldisplay$$% +}% +\long\def\@ldisplaytest#1\leqno#2\leqno#3\@ldisplaytest{% + \@eqtoks = {#1}% + \if !\noexpand#3!% + \eqnofalse + \else + \eqnotrue + \leqnotrue + \@eqnotoks = {#2}% + \fi +}% +\newdimen\leftdisplayindent +\newtoks\previouseverydisplay +\newtoks\displayhook +\def\leftdisplays{% + \previouseverydisplay = \everydisplay + \everydisplay = {\the\previouseverydisplay \the\displayhook \displaysetup}% + \def\generaldisplay{% + \leftline{% + \strut + \indent \hskip\leftskip \hskip\leftdisplayindent + \dimen0 = \parindent \advance\dimen0 by \leftskip + \advance\dimen0 by \leftdisplayindent + \advance\displaywidth by -\dimen0 + \@redefinealignmentdisplays + \ifeqno\ifleqno + \kern-\dimen0\rlap{$\displaystyle\eqn$}\kern\dimen0 + \fi\fi + $\displaystyle\eq$% + \ifeqno\ifleqno\else + \hfill $\displaystyle\eqn$% + \fi\fi + }% + }% +}% +\def\@redefinealignmentdisplays{% + \def\displaylines##1{\displ@y + \vcenter{% + \let\oldeqprint = \eqprint + \def\eqprint{\hfill\oldeqprint}% + \halign{\hbox to\displaywidth{$\@lign\displaystyle####\hfil$}\crcr + ##1\crcr}}}% + \def\eqalignno##1{\displ@y + \vcenter{% + \halign to\displaywidth{% + $\@lign\displaystyle{####}$\tabskip\z@skip + &$\@lign\displaystyle{{}####}$\hfil\tabskip\centering + &\llap{$\@lign####$}\tabskip\z@skip\crcr + ##1\crcr}}}% + \def\leqalignno##1{\displ@y + \vcenter{% + \halign to\displaywidth{% + $\@lign\displaystyle{####}$\tabskip\z@skip + &$\@lign\displaystyle{{}####}$\hfil\tabskip\centering + &\kern-\displaywidth + \rlap{\kern-\parindent\kern-\leftskip$\@lign####$}% + \tabskip\displaywidth\crcr + ##1\crcr}}}% +}% +\def\centereddisplays{\let\displaysetup = \relax}% +\def\monthname{% + \ifcase\month + \or Jan\or Feb\or Mar\or Apr\or May\or Jun% + \or Jul\or Aug\or Sep\or Oct\or Nov\or Dec% + \fi +}% +\def\fullmonthname{% + \ifcase\month + \or January\or February\or March\or April\or May\or June% + \or July\or August\or September\or October\or November\or December% + \fi +}% +\def\timestring{\begingroup + \count0 = \time + \divide\count0 by 60 + \count2 = \count0 % The hour, from zero to 23. + \count4 = \time + \multiply\count0 by 60 + \advance\count4 by -\count0 % The minute, from zero to 59. + \ifnum\count4<10 + \toks1 = {0}% + \else + \toks1 = {}% + \fi + \ifnum\count2<12 + \toks0 = {a.m.}% + \else + \toks0 = {p.m.}% + \advance\count2 by -12 + \fi + \ifnum\count2=0 + \count2 = 12 + \fi + \number\count2:\the\toks1 \number\count4 \thinspace \the\toks0 +\endgroup}% +\def\timestamp{\number\day\space\monthname\space\number\year\quad\timestring}% +\newskip\abovelistskip \abovelistskip = .5\baselineskip +\newskip\interitemskip \interitemskip = 0pt +\newskip\belowlistskip \belowlistskip = .5\baselineskip +\newdimen\listleftindent \listleftindent = 0pt +\newdimen\listrightindent \listrightindent = 0pt +\def\listcompact{\interitemskip = 0pt \relax}% +\newdimen\@listindent +\def\beginlist{% + \@listindent = \parindent + \advance\@listindent by \listleftindent + \everydisplay = \expandafter{\the\everydisplay + \advance\displayindent by \@listindent + \advance\displaywidth by -\@listindent + \advance\displaywidth by -\listrightindent}% + \nobreak\vskip\abovelistskip + \advance\leftskip by \@listindent + \advance\rightskip by \listrightindent +}% +\def\printitem{% + \par + \vskip-\parskip + \noindent + \llap{\marker \enspace}% +}% +\def\endlist{\vskip\belowlistskip}% +\newcount\numberedlistdepth +\newcount\itemnumber +\newcount\itemletter +\def\numberedmarker{% + \ifcase\numberedlistdepth + (impossible)% + \or \itemnumberout)% + \or \itemletterout)% + \else *% + \fi +}% +\def\numberedlist{\environment{@numbered-list}% + \advance\numberedlistdepth by 1 + \itemnumber = 1 + \itemletter = `a + \beginlist + \let\marker = \numberedmarker + \def\li{% + \ifnum\itemnumber=1\else + \vskip\interitemskip + \fi + \printitem + \advance\itemnumber by 1 + \advance\itemletter by 1 + }% +}% +\def\itemnumberout{\number\itemnumber}% +\def\itemletterout{\char\itemletter}% +\def\endnumberedlist{% + \par + \endenvironment{@numbered-list}% + \endlist +}% +\newcount\unorderedlistdepth +\def\unorderedmarker{% + \ifcase\unorderedlistdepth + (impossible)% + \or \blackbox + \or ---% + \else *% + \fi +}% +\def\unorderedlist{\environment{@unordered-list}% + \advance\unorderedlistdepth by 1 + \beginlist + \itemnumber = 1 + \let\marker = \unorderedmarker + \def\li{% + \ifnum\itemnumber=1\else + \vskip\interitemskip + \fi + \printitem + \advance\itemnumber by 1 + }% +}% +\def\endunorderedlist{% + \par + \endenvironment{@unordered-list}% + \endlist +}% +\def\listing#1{% + \par \begingroup + \@setuplisting + \setuplistinghook + \input #1 + \endgroup +}% +\let\setuplistinghook = \empty +\def\@setuplisting{% + \uncatcodespecials + \obeywhitespace + \makeactive\` + \makeactive\^^I + \def^^L{\vfill\eject}% + \tt +}% +{% + \makeactive\` + \gdef`{\relax\lq}% Defeat ligatures. +}% +{% + \makeactive\^^I + \tt + \gdef^^I{\hskip8\fontdimen2\font \relax}% +}% +\newif\if@tocfileopened +\newwrite\tocfile +\def\opentocfile{% + \if@tocfileopened\else + \global\@tocfileopenedtrue + \immediate\openout\tocfile = \jobname.toc + \fi +}% +\def\writetocentry#1#2{\writenumberedtocentry{#1}{#2}\empty}% +\def\writenumberedtocentry#1#2#3{% + \ifrewritetocfile + \opentocfile + \toks0 = {\expandafter\noexpand \csname toc#1entry\endcsname}% + \def\temp{#2}% + \def\cs{#3}% + \edef\@wr{% + \write\tocfile{% + \the\toks0 + {\sanitize\temp}% + \ifx \empty\cs\else{#3}\fi + {\noexpand\folio}% + }% + }% + \@wr + \fi + \ignorespaces +}% +\newif\ifrewritetocfile \rewritetocfiletrue +\def\readtocfile{% + \testfileexistence{toc}% + \if@fileexists + \input \jobname.toc + \ifrewritetocfile + \opentocfile + \fi + \fi +}% +\def\tocchapterentry#1#2{\line{\bf #1 \dotfill\ #2}}% +\def\tocsectionentry#1#2{\line{\quad\sl #1 \dotfill\ \rm #2}}% +\def\tocsubsectionentry#1#2{\line{\qquad\rm #1 \dotfill\ #2}}% +\def\xrdef#1{% + \@readauxfile + \begingroup + \xrlabel{#1}% + \edef\@wr{\@writexrdef{\the\xrlabeltoks}}% + \@wr + \endgroup + \ignorespaces +}% +\def\@writexrdef#1{% + \@writeaux{% + \string\gdef\expandafter\string\csname#1\endcsname {\noexpand\folio}% + }% +}% +\newtoks\xrlabeltoks +\def\xrlabel#1{% + \begingroup + \escapechar = `\_ + \edef\tts{\tokstostring{#1_}}% + \global\xrlabeltoks = \expandafter{\tts}% + \endgroup +}% +\let\ifxrefwarning = \iftrue +\def\xrefwarningtrue{\@citewarningtrue \let\ifxrefwarning = \iftrue}% +\def\xrefwarningfalse{\@citewarningfalse let\ifxrefwarning = \iffalse}% +\def\xrefn#1{% + \@readauxfile + \xrlabel{#1}% \xrlabeltoks now has the control sequence name. + \toks0 = \expandafter{\csname\the\xrlabeltoks\endcsname}% + \expandafter \ifx\the\toks0\relax + \if@citewarning + \message{\linenumber Undefined label `\tokstostring{#1}'.}% + \fi + \begingroup + \let\spacesub = \space + \expandafter\xdef\the\toks0{`{\tt \tokstostring{#1}}'}% + \endgroup + \fi + \the\toks0 % Always produce something. +}% +\def\xref#1{p.\thinspace\xrefn{#1}}% +\newcount\eqnumber +\def\eqdefn#1{% + \@readauxfile + \global\advance\eqnumber by 1 + \begingroup + \xrlabel{#1}% \xrlabeltoks now has the control sequence name. + \edef\@wr{\@writeeqdef{\the\xrlabeltoks}{\the\eqnumber}}% + \@wr + \endgroup + \expandafter\xdef\csname\the\xrlabeltoks\endcsname{\the\eqnumber}% + \ignorespaces +}% +\def\@writeeqdef#1#2{% + \immediatewriteaux{% + \string\gdef\expandafter\string\csname#1\endcsname{#2}% + }% +}% +\def\eqdef#1{% + \@maybedisableeqno + \eqno \eqdefn{#1}\eqprint{\the\eqnumber}% + \@mayberestoreeqno + \ignorespaces +}% +\let\@mayberestoreeqno = \empty +\def\@maybedisableeqno{% + \ifinner + \global\let\eqno = \relax + \global\let\@mayberestoreeqno = \@restoreeqno + \fi +}% +\let\@primitiveeqno = \eqno +\def\@restoreeqno{% + \global\let\eqno = \@primitiveeqno + \global\let\@mayberestoreeqno = \empty +}% +\def\eqref#1{% + \@readauxfile + \xrlabel{#1}% \xrlabeltoks now has the control sequence name. + \toks0 = \expandafter{\csname\the\xrlabeltoks\endcsname}% + \expandafter \ifx\the\toks0\relax + \if@citewarning + \message{\linenumber Undefined equation label `\tokstostring{#1}'.}% + \fi + \begingroup + \let\spacesub = \space + \expandafter\xdef\the\toks0{`{\tt \tokstostring{#1}}'}% + \endgroup + \fi + \eqprint{\the\toks0}% +}% +\def\eqprint#1{(#1)}% +\begingroup + \catcode `\^^M = \active % + \globaldefs = 1 % + \def\flushleft{\beforejustify % + \aftergroup\@endflushleft % + \def^^M{\null\hfil\break}% + \def\@eateol^^M{}% + \@eateol % + }% + \def\flushright{\beforejustify % + \aftergroup\@endflushright % + \def^^M{\break\null\hfil}% + \def\@eateol^^M{\hfil\null}% + \@eateol % + }% + \def\center {\beforejustify % + \aftergroup\@endcenter % + \def^^M{\hfil\break\null\hfil}% + \def\@eateol^^M{\hfil\null}% + \@eateol % + }% +\endgroup +\def\@endflushleft{\unpenalty{\parfillskip = 0pt plus 1 fil\par}\ignorespaces}% +\def\@endflushright{% Remove the \hfil\null\break we just put on. + \unskip \setbox0=\lastbox \unpenalty + {\parfillskip = 0pt \par}\ignorespaces +}% +\def\@endcenter{% Remove the \hfil\null\break we just put on. + \unskip \setbox0=\lastbox \unpenalty + {\parfillskip = 0pt plus 1fil \par}\ignorespaces +}% +\def\beforejustify{% + \par\noindent + \catcode`\^^M = \active + \checkenv \environmenttrue +}% +\newcount\abovecolumnspenalty \abovecolumnspenalty = 10000 +\newcount\@linestogo % Lines remaining to process. +\newcount\@linestogoincolumn % Lines remaining in column. +\newcount\@columndepth % Number of lines in a column. +\newdimen\@columnwidth % Width of each column. +\newtoks\crtok \crtok = {\cr}% +\newcount\currentcolumn +\def\makecolumns#1/#2: {\par \begingroup + \@columndepth = #1 + \advance\@columndepth by #2 + \advance\@columndepth by -1 + \divide \@columndepth by #2 + \@linestogoincolumn = \@columndepth + \@linestogo = #1 + \currentcolumn = 1 + \def\@endcolumnactions{% + \ifnum \@linestogo<2 + \the\crtok \egroup \endgroup \par % End \valign and \makecolumns. + \else + \global\advance\@linestogo by -1 + \ifnum\@linestogoincolumn<2 + \global\advance\currentcolumn by 1 + \global\@linestogoincolumn = \@columndepth + \the\crtok + \else + &\global\advance\@linestogoincolumn by -1 + \fi + \fi + }% + \makeactive\^^M + \letreturn \@endcolumnactions + \@columnwidth = \hsize + \advance\@columnwidth by -\parindent + \divide\@columnwidth by #2 + \penalty\abovecolumnspenalty + \noindent % It's not a paragraph (usually). + \valign\bgroup + &\hbox to \@columnwidth{\strut \hsize = \@columnwidth ##\hfil}\cr +}% +\newcount\footnotenumber +\newdimen\footnotemarkseparation \footnotemarkseparation = .5em +\newskip\interfootnoteskip \interfootnoteskip = 0pt +\newtoks\everyfootnote +\newdimen\footnoterulewidth \footnoterulewidth = 2true in +\newdimen\footnoteruleheight \footnoteruleheight = 0.4pt +\newdimen\belowfootnoterulespace \belowfootnoterulespace = 2.6pt +\let\@plainfootnote = \footnote +\let\@plainvfootnote = \vfootnote +\def\vfootnote#1{\insert\footins\bgroup + \interlinepenalty\interfootnotelinepenalty + \splittopskip\ht\strutbox % top baseline for broken footnotes + \advance\splittopskip by \interfootnoteskip + \splitmaxdepth\dp\strutbox + \floatingpenalty\@MM + \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip + \everypar = {}% + \the\everyfootnote + \vskip\interfootnoteskip + \indent\llap{#1\kern\footnotemarkseparation}\footstrut\futurelet\next\fo@t +}% +\def\footnoterule{\dimen0 = \footnoteruleheight + \advance\dimen0 by \belowfootnoterulespace + \kern-\dimen0 + \hrule width\footnoterulewidth height\footnoteruleheight depth0pt + \kern\belowfootnoterulespace + \vskip-\interfootnoteskip +}% +\def\numberedfootnote{% + \global\advance\footnotenumber by 1 + \@plainfootnote{$^{\number\footnotenumber}$}% +}% +\newdimen\paperheight \paperheight = 11in +\def\topmargin{\afterassignment\@finishtopmargin \dimen0}% +\def\@finishtopmargin{% + \dimen2 = \voffset % Remember the old \voffset. + \voffset = \dimen0 \advance\voffset by -1in + \advance\dimen2 by -\voffset % Compute the change in \voffset. + \advance\vsize by \dimen2 % Change type area accordingly. +}% +\def\advancetopmargin{% + \dimen0 = 0pt \afterassignment\@finishadvancetopmargin \advance\dimen0 +}% +\def\@finishadvancetopmargin{% + \advance\voffset by \dimen0 + \advance\vsize by -\dimen0 +}% +\def\bottommargin{\afterassignment\@finishbottommargin \dimen0}% +\def\@finishbottommargin{% + \@computebottommargin % Result in \dimen2. + \advance\dimen2 by -\dimen0 % Compute the change in the bottom margin. + \advance\vsize by \dimen2 % Change the type area. +}% +\def\advancebottommargin{% + \dimen0 = 0pt \afterassignment\@finishadvancebottommargin \advance\dimen0 +}% +\def\@finishadvancebottommargin{% + \advance\vsize by -\dimen0 +}% +\def\@computebottommargin{% + \dimen2 = \paperheight % The total paper size. + \advance\dimen2 by -\vsize % Less the text size. + \advance\dimen2 by -\voffset % Less the offset at the top. + \advance\dimen2 by -1in % Less the default offset. +}% +\newdimen\paperwidth \paperwidth = 8.5in +\def\leftmargin{\afterassignment\@finishleftmargin \dimen0}% +\def\@finishleftmargin{% + \dimen2 = \hoffset % Remember the old \hoffset. + \hoffset = \dimen0 \advance\hoffset by -1in + \advance\dimen2 by -\hoffset % Compute the change in \hoffset. + \advance\hsize by \dimen2 % Change type area accordingly. +}% +\def\advanceleftmargin{% + \dimen0 = 0pt \afterassignment\@finishadvanceleftmargin \advance\dimen0 +}% +\def\@finishadvanceleftmargin{% + \advance\hoffset by \dimen0 + \advance\hsize by -\dimen0 +}% +\def\rightmargin{\afterassignment\@finishrightmargin \dimen0}% +\def\@finishrightmargin{% + \@computerightmargin % Result in \dimen2. + \advance\dimen2 by -\dimen0 % Compute the change in the right margin. + \advance\hsize by \dimen2 % Change the type area. +}% +\def\advancerightmargin{% + \dimen0 = 0pt \afterassignment\@finishadvancerightmargin \advance\dimen0 +}% +\def\@finishadvancerightmargin{% + \advance\hsize by -\dimen0 +}% +\def\@computerightmargin{% + \dimen2 = \paperwidth % The total paper size. + \advance\dimen2 by -\hsize % Less the text size. + \advance\dimen2 by -\hoffset % Less the offset at the left. + \advance\dimen2 by -1in % Less the default offset. +}% +\newskip\abovedoublecolumnskip \abovedoublecolumnskip = \bigskipamount +\newskip\belowdoublecolumnskip \belowdoublecolumnskip = \bigskipamount +\newdimen\gutter \gutter = 2pc +\newdimen\doublecolumnhsize +\newbox\@partialpage \newdimen\singlecolumnhsize \newdimen\singlecolumnvsize +\newtoks\previousoutput +\def\doublecolumns{% + \doublecolumnhsize = \hsize % If \hsize changed, get the new value. + \par % Shouldn't start in horizontal mode. + \previousoutput = \expandafter{\the\output}% + \advance\doublecolumnhsize by -\gutter + \divide\doublecolumnhsize by 2 + \output = {% + \global\setbox\@partialpage = + \vbox{\unvbox255\vskip\abovedoublecolumnskip}% + }% + \pagegoal = \pagetotal + \break % Now expand the \output just above. + \output = {\doublecolumnoutput}% + \singlecolumnhsize = \hsize + \singlecolumnvsize = \vsize + \hsize = \doublecolumnhsize + \vsize = 2\vsize +}% +\def\@doublecolumnsplit{% + \splittopskip = \topskip + \splitmaxdepth = \maxdepth + \dimen0 = \singlecolumnvsize + \advance\dimen0 by -\ht\@partialpage + \advance\dimen0 by -\ht\footins + \ifvoid\footins\else \advance\dimen0 by -\skip\footins \fi + \advance\dimen0 by -\ht\topins + \ifvoid\topins\else \advance\dimen0 by -\skip\topins \fi + \begingroup + \vbadness = 10000 + \global\setbox1 = \vsplit255 to \dimen0 + \wd1 = \hsize + \global\setbox3 = \vsplit255 to \dimen0 + \wd3 = \hsize + \endgroup + \global\setbox4 = \vbox{\unvbox255 \penalty\outputpenalty}% + \global\setbox255 + = \vbox{% + \unvbox\@partialpage + \hbox to \singlecolumnhsize{\box1\hfil\box3}% + }% +}% +\def\doublecolumnoutput{% + \@doublecolumnsplit + \hsize = \singlecolumnhsize % Local to the \output group. + \vsize = \singlecolumnvsize + \the\previousoutput + \unvbox4 +}% +\def\singlecolumn{% + \par % Shouldn't start in horizontal mode. + \output = {\global\setbox1 = \box255}% + \pagegoal = \pagetotal + \break % Exercise the page builder, i.e., \output. + \setbox255 = \box1 % Retrieve what the fake \output set. + \begingroup + \singlecolumnvsize = \ht\@partialpage + \advance\singlecolumnvsize by \ht\footins + \ifvoid\footins\else \advance\singlecolumnvsize by \skip\footins\fi + \advance\singlecolumnvsize by \ht\topins + \ifvoid\topins\else \advance\singlecolumnvsize by \skip\topins\fi + \dimen0 = \ht255 \divide\dimen0 by 2 + \advance\singlecolumnvsize by \dimen0 + \advance\singlecolumnvsize by .5\baselineskip + \@doublecolumnsplit + \endgroup + \hsize = \singlecolumnhsize + \vsize = \singlecolumnvsize + \output = \expandafter{\the\previousoutput}% + \unvbox255 + \vskip\belowdoublecolumnskip + \nointerlineskip +}% +\let\wlog = \@plainwlog +\catcode`@ = \other +\def\fmtname{eplain}% +\def\eplain{t}% +{\edef\plainversion{\fmtversion}% + \xdef\fmtversion{1.9: 26 April 1991 (and plain \plainversion)}% +}% |