diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/base/ltplain.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/base/ltplain.dtx | 1112 |
1 files changed, 1112 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/base/ltplain.dtx b/Master/texmf-dist/source/latex/base/ltplain.dtx new file mode 100644 index 00000000000..0b172df540b --- /dev/null +++ b/Master/texmf-dist/source/latex/base/ltplain.dtx @@ -0,0 +1,1112 @@ +% \iffalse meta-comment +% +% Copyright 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 +% The LaTeX3 Project and any individual authors listed elsewhere +% in this file. +% +% This file is part of the LaTeX base system. +% ------------------------------------------- +% +% It may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2003/12/01 or later. +% +% This file has the LPPL maintenance status "maintained". +% +% The list of all files belonging to the LaTeX base distribution is +% given in the file `manifest.txt'. See also `legal.txt' for additional +% information. +% +% The list of derived (unpacked) files belonging to the distribution +% and covered by LPPL is defined by the unpacking scripts (with +% extension .ins) which are part of the distribution. +% +% \fi +% \iffalse +%%% From File: ltplain.dtx +% +%<*driver> +% \fi +\ProvidesFile{ltplain.dtx} + [2004/02/24 v1.1x LaTeX Kernel (Plain TeX)] +% \iffalse +\documentclass{ltxdoc} +\GetFileInfo{ltplain.dtx} +\begin{document} +\title{\filename\\(The file plain.tex, modified for \LaTeX)} +\author{Donald~E.~Knuth\\ + Modified by + Leslie Lamport, Frank Mittelbach,\\ + Rainer Sch\"opf, David Carlisle} +\date{\filedate} +\maketitle + \DocInput{\filename} +\end{document} +%</driver> +% \fi +% +% \CheckSum{756} +% +% \changes{v1.0a}{1994/03/08} +% {Remove need for a driver file.} +% \changes{v1.0b}{1994/03/12} +% {Name changed from lplain. The end of an era} +% \changes{v1.0e}{1994/03/12}{Replaced remaining width, height, depth +% by \LaTeX{} macro names to save tokens.} +% \changes{v1.1a}{1994/10/14} +% {Moved code to other files.} +% \changes{v1.1b}{1994/11/10} +% {(CAR) added patch to \cs{loop}.} +% \changes{v1.1f}{1994/11/25} +% {(DPC) Comment out lots of obsolete code} +% \changes{v1.1g}{1994/12/01} +% {(DPC) More doc changes} +% \changes{v1.1j}{1995/05/07}{Use \cs{hb@xt@}} +% \changes{v1.1j}{1995/05/21}{Moved some code to other files} +% \changes{v1.1n}{1995/07/02}{Removed surplus `by' and `\quotechar=' in +% various places} +% \changes{v1.1o}{1995/09/14}{Moved \cs{multispan} to lttab.dtx} +% \changes{v1.1r}{1995/10/10}{Autoload tracing code} +% \changes{v1.1u}{1996/10/28}{(CAR) More doc changes} +% +% \section{Plain \TeX} +% +% \LaTeX\ includes almost all of the functionality of Knuth's original +% `Basic Macros' That is, the plain \TeX\ format described in Appendix~B +% of the \TeX{}Book. However, some of the user commands are not much +% use so, in order to save memory, we may remove them from the kernel +% into a package. Here is a list of the commands that may be removed +% (PROBABLY NOT COMPLETE). +% \begin{verbatim} +% \magstep \magstephalf +% \mathhexbox +% \vglue \vgl@ +% \hglue \hgl@ +% \end{verbatim} +% +% This file is by now very small as most of it has been moved to more +% appropriate kernel files: it may disappear completely one day. +% +% \LaTeX\ font definitions are done using NFSS2 so none of PLAIN's +% font definitions are in \LaTeX. +% +% \LaTeX\ has its own tabbing environment, so PLAIN's is disabled. +% +% \LaTeX{} uses its own output routine, so most of the plain one was +% removed. +% +% \StopEventually{} +% +% \iffalse +%% \CharacterTable +%% {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 +%% 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 +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +% \fi +% +% \begin{macrocode} +%<*2ekernel|autoload> +\catcode`\{=1 % left brace is begin-group character +\catcode`\}=2 % right brace is end-group character +\catcode`\$=3 % dollar sign is math shift +\catcode`\&=4 % ampersand is alignment tab +\catcode`\#=6 % hash mark is macro parameter character +\catcode`\^=7 % circumflex and uparrow are for superscripts +\catcode`\_=8 % underline and downarrow are for subscripts +\catcode`\^^I=10 % ascii tab is a blank space +\chardef\active=13 \catcode`\~=\active % tilde is active +\catcode`\^^L=\active \outer\def^^L{\par}% ascii form-feed is \outer\par +% \end{macrocode} +% +% \begin{macrocode} +\message{catcodes,} +% \end{macrocode} +% +% We had to define the |\catcodes| right away, before the message line, +% since |\message| uses the |{| and |}| characters. +% When INITEX (the \TeX\ initializer) starts up, +% it has defined the following |\catcode| values:\\ +% |\catcode`\^^@=9 % | ascii null is ignored\\ +% |\catcode`\^^M=5 % | ascii return is end-line\\ +% |\catcode`\\=0 % | backslash is TeX escape character\\ +% |\catcode`\%=14 % | percent sign is comment character\\ +% |\catcode`\ =10 % | ascii space is blank space\\ +% |\catcode`\^^?=15 %| ascii delete is invalid\\ +% |\catcode`\A=11 ... \catcode`\Z=11 %| uppercase letters\\ +% |\catcode`\a=11 ... \catcode`\z=11 %| lowercase letters\\ +% all others are type 12 (other) +% +% Here is a list of the characters that have been specially catcoded: +% \begin{macrocode} +\def\dospecials{\do\ \do\\\do\{\do\}\do\$\do\&% + \do\#\do\^\do\_\do\%\do\~} +% \end{macrocode} +% (not counting ascii null, tab, linefeed, formfeed, return, delete) +% Each symbol in the list is preceded by \do, which can be defined +% if you want to do something to every item in the list. +% +% We make |@| signs act like letters, temporarily, to avoid conflict +% between user names and internal control sequences of plain format. +% \begin{macrocode} +\catcode`@=11 +% \end{macrocode} +% +% To make the plain macros more efficient in time and space, +% several constant values are declared here as control sequences. +% If they were changed, anything could happen; +% so they are private symbols. +% \begin{macro}{\@ne} +% \begin{macro}{\tw@} +% \begin{macro}{\thr@@} +% \begin{macro}{\sixt@@n} +% \begin{macro}{\@cclv} +% Small constants are defined using |\chardef|. +% \begin{macrocode} +\chardef\@ne=1 +\chardef\tw@=2 +\chardef\thr@@=3 +\chardef\sixt@@n=16 +\chardef\@cclv=255 +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@cclvi} +% \begin{macro}{\@m} +% \begin{macro}{\@M} +% \begin{macro}{\@MM} +% Constants above 255 defined using |\mathchardef|. +% \begin{macrocode} +\mathchardef\@cclvi=256 +\mathchardef\@m=1000 +\mathchardef\@M=10000 +\mathchardef\@MM=20000 +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% Allocation of registers +% +% Here are macros for the automatic allocation of |\count|, |\box|, +% |\dimen|, |\skip|, |\muskip|, and |\toks| registers, as well as +% |\read| and |\write| stream numbers, |\fam| codes, |\language| codes, +% and |\insert| numbers. +% +% \begin{macrocode} +\message{registers,} +% \end{macrocode} +% +% When a register is used only temporarily, it need not be allocated; +% grouping can be used, making the value previously in the register +% return after the close of the group. The main use of these macros is +% for registers that are defined by one macro and used by others, +% possibly at different nesting levels. All such registers should be +% defined through these macros; otherwise conflicts may occur, +% especially when two or more macro packages are being used at +% the same time. +% +% \begin{oldcomments} +% The following counters are reserved: +% 0 to 9 page numbering +% 10 count allocation +% 11 dimen allocation +% 12 skip allocation +% 13 muskip allocation +% 14 box allocation +% 15 toks allocation +% 16 read file allocation +% 17 write file allocation +% 18 math family allocation +% 19 language allocation +% 20 insert allocation +% 21 the most recently allocated number +% 22 constant -1 +% \end{oldcomments} +% +% New counters are allocated starting with 23, 24, etc. Other registers +% are allocated starting with 10. This leaves 0 through 9 for the user +% to play with safely, except that counts 0 to 9 are considered to be +% the page and subpage numbers (since they are displayed during +% output). In this scheme, |\count| 10 always contains the number of the +% highest-numbered counter that has been allocated, |\count| 14 the +% highest-numbered box, etc. Inserts are given numbers 254, 253, etc., +% since they require a |\count|, |\dimen|, |\skip|, and |\box| all with +% the same number; |\count| 20 contains the lowest-numbered insert that +% has been allocated. Of course, |\box|255 is reserved for |\output|; +% |\count|255, |\dimen|255, and |\skip|255 can be used freely. +% +% It is recommended that macro designers always use +% |\global| assignments with respect to registers numbered\\ +% 1, 3, 5, 7, 9,\\ +% and always non-|\global| assignments with respect to registers\\ +% 0, 2, 4, 6, 8, 255.\\ +% This will prevent ``save stack buildup'' that might otherwise occur. +% +% \begin{macrocode} +\count10=22 % allocates \count registers 23, 24, ... +\count11=9 % allocates \dimen registers 10, 11, ... +\count12=9 % allocates \skip registers 10, 11, ... +\count13=9 % allocates \muskip registers 10, 11, ... +\count14=9 % allocates \box registers 10, 11, ... +\count15=9 % allocates \toks registers 10, 11, ... +\count16=-1 % allocates input streams 0, 1, ... +\count17=-1 % allocates output streams 0, 1, ... +\count18=3 % allocates math families 4, 5, ... +\count19=0 % allocates \language codes 1, 2, ... +\count20=255 % allocates insertions 254, 253, ... +% \end{macrocode} +% +% \begin{macro}{\insc@unt} +% \begin{macro}{\allocationnumber} +% The insertion counter and most recent allocation. +% \begin{macrocode} +\countdef\insc@unt=20 +\countdef\allocationnumber=21 +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\m@ne} +% The constant $-1$. +% \begin{macrocode} +\countdef\m@ne=22 \m@ne=-1 +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\wlog} +% Write on log file (only) +% \begin{macrocode} +\def\wlog{\immediate\write\m@ne} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\count@} +% \begin{macro}{\dimen@} +% \begin{macro}{\dimen@i} +% \begin{macro}{\dimen@ii} +% \begin{macro}{\skip@} +% \begin{macro}{\toks@} +% Here are abbreviations for the names of scratch registers +% that don't need to be allocated. +% \begin{macrocode} +\countdef\count@=255 +\dimendef\dimen@=0 +\dimendef\dimen@i=1 % global only +\dimendef\dimen@ii=2 +\skipdef\skip@=0 +\toksdef\toks@=0 +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\newcount} +% \begin{macro}{\newdimen} +% \begin{macro}{\newskip} +% \begin{macro}{\newmuskip} +% \begin{macro}{\newbox} +% \begin{macro}{\newhelp} +% \begin{macro}{\newtoks} +% \changes{v1.0c}{1994/03/28} +% {Remove some \cs{outer} declarations.} +% \changes{v1.1h}{1995/04/24} +% {Remove remaining \cs{outer} declarations.} +% Now, we define |\newcount|, |\newbox|, etc. so that you can say +% |\newcount\foo| and |\foo| will be defined (with |\countdef|) to +% be the next counter. +% +% To find out which counter |\foo| is, you can look at +% |\allocationnumber|. +% +% Since there's no |\boxdef| command, |\chardef| is used to define a +% |\newbox|, |\newinsert|, |\newfam|, and so on. +% +% \LaTeX\ change: remove |\outer| from |\newcount| and |\newdimen| (FMi) +% This is necessary to use |\newcount| inside |\if...| +% later on. Also remove from |\newskip|, |\newbox| +% |\newwrite| and |\newfam| (DPC) to save later redefinition. +% \begin{macrocode} +\def\newcount{\alloc@0\count\countdef\insc@unt} +\def\newdimen{\alloc@1\dimen\dimendef\insc@unt} +\def\newskip{\alloc@2\skip\skipdef\insc@unt} +\def\newmuskip{\alloc@3\muskip\muskipdef\@cclvi} +\def\newbox{\alloc@4\box\chardef\insc@unt} +\def\newhelp#1#2{\newtoks#1#1\expandafter{\csname#2\endcsname}} +\def\newtoks{\alloc@5\toks\toksdef\@cclvi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\newread} +% \begin{macro}{\newwrite} +% \begin{macrocode} +\def\newread{\alloc@6\read\chardef\sixt@@n} +\def\newwrite{\alloc@7\write\chardef\sixt@@n} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \LaTeX\ defines |\newfam| in |ltfss.dtx|. +%\begin{verbatim} +%\def\newfam{\alloc@8\fam\chardef\sixt@@n} +%\end{verbatim} +% +% \begin{macro}{\newlanguage} +% \begin{macrocode} +\def\newlanguage{\alloc@9\language\chardef\@cclvi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\alloc@} +% \begin{macrocode} +\def\alloc@#1#2#3#4#5{\global\advance\count1#1\@ne + \ch@ck#1#4#2% make sure there's still room + \allocationnumber\count1#1% + \global#3#5\allocationnumber + \wlog{\string#5=\string#2\the\allocationnumber}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newinsert} +% \begin{macrocode} +\def\newinsert#1{\global\advance\insc@unt \m@ne + \ch@ck0\insc@unt\count + \ch@ck1\insc@unt\dimen + \ch@ck2\insc@unt\skip + \ch@ck4\insc@unt\box + \allocationnumber\insc@unt + \global\chardef#1\allocationnumber + \wlog{\string#1=\string\insert\the\allocationnumber}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ch@ck} +% \begin{macrocode} +%</2ekernel|autoload> +%<*2ekernel|autoload|autoerr> +\gdef\ch@ck#1#2#3{% + \ifnum\count1#1<#2\else +%<!autoload> \errmessage{No room for a new #3}% +%<autoload> \@autoerr\ch@ck#1#2#3% + \fi} +%</2ekernel|autoload|autoerr> +%<*2ekernel|autoload> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\maxdimen} +% \begin{macro}{\hideskip} +% Here are some examples of allocation. +% \begin{macrocode} +\newdimen\maxdimen \maxdimen=16383.99999pt % the largest legal <dimen> +\newskip\hideskip \hideskip=-1000pt plus 1fill % negative but can grow +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\p@} +% \begin{macro}{\z@} +% \begin{macro}{\z@skip} +% \begin{macro}{\voidb@x} +% \begin{macrocode} +\newdimen\p@ \p@=1pt % this saves macro space and time +\newdimen\z@ \z@=0pt % can be used both for 0pt and 0 +\newskip\z@skip \z@skip=0pt plus0pt minus0pt +\newbox\voidb@x % permanently void box register +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \changes{v1.1p}{1995/10/02}{Move \cs{newif} to ltdefns} +% +% \begin{macrocode} +\message{compatibility for TeX 2, } +% \end{macrocode} +% +% If this file is used in an old \TeX\ we define the new features +% of \TeX\ 3.0 as simple macros or counters so that files that uses +% these features can be processed in such an environment +% (They will however produce some other results). +% +% \begin{macrocode} +\ifx\@undefined\inputlineno + \newcount\inputlineno +% \end{macrocode} +% This could be used to detect that an old \TeX\ is in force +% \begin{macrocode} + \inputlineno-1 +% \end{macrocode} +% Extra test for MLTeX 2, RmS 91/11/07. +% \begin{macrocode} + \ifx\@undefined\language + \newcount\language + \fi + \newcount\lefthyphenmin + \newcount\righthyphenmin + \newcount\errorcontextlines + \newcount\holdinginserts + \newdimen\emergencystretch + \newcount\badness + \let\noboundary\relax + \newcount\setlanguage +\fi +% \end{macrocode} +% +% Assign initial values to \TeX's parameters +% +% \begin{macrocode} +\message{parameters,} +% \end{macrocode} +% +% All of \TeX's numeric parameters are listed here, +% but the code is commented out if no special value needs to be set. +% INITEX makes all parameters zero except where noted. +% +% \begin{oldcomments} +% \begin{macrocode} +\pretolerance=100 +\tolerance=200 % INITEX sets this to 10000 +\hbadness=1000 +\vbadness=1000 +\linepenalty=10 +\hyphenpenalty=50 +\exhyphenpenalty=50 +\binoppenalty=700 +\relpenalty=500 +\clubpenalty=150 +\widowpenalty=150 +\displaywidowpenalty=50 +\brokenpenalty=100 +\predisplaypenalty=10000 +% \end{macrocode} +% \postdisplaypenalty=0 +% \interlinepenalty=0 +% \floatingpenalty=0, set during \insert +% \outputpenalty=0, set before TeX enters \output +% \begin{macrocode} +\doublehyphendemerits=10000 +\finalhyphendemerits=5000 +\adjdemerits=10000 +% \end{macrocode} +% \looseness=0, cleared by TeX after each paragraph +% \pausing=0 +% \holdinginserts=0 +% \tracingonline=0 +% \tracingmacros=0 +% \tracingstats=0 +% \tracingparagraphs=0 +% \tracingpages=0 +% \tracingoutput=0 +% \begin{macrocode} +\tracinglostchars=1 +% \end{macrocode} +% \tracingcommands=0 +% \tracingrestores=0 +% \language=0 +% \begin{macrocode} +\uchyph=1 +% \end{macrocode} +% \lefthyphenmin=2 \righthyphenmin=3 set below +% \globaldefs=0 +% \maxdeadcycles=25 % INITEX does this +% \hangafter=1 % INITEX does this, also TeX after each paragraph +% \fam=0 +% \mag=1000 % INITEX does this +% \escapechar=`\\ % INITEX does this +% \begin{macrocode} +\defaulthyphenchar=`\- +\defaultskewchar=-1 +% \end{macrocode} +% \endlinechar=`\^^M % INITEX does this +% \newlinechar=-1 \LaTeX\ sets this in ltdefns.dtx. +% \begin{macrocode} +\delimiterfactor=901 +% \end{macrocode} +% \time=now % TeX does this at beginning of job +% \day=now % TeX does this at beginning of job +% \month=now % TeX does this at beginning of job +% \year=now % TeX does this at beginning of job +% +% \end{oldcomments} +% In \LaTeX{} we don't want box information in the transcript +% unless we do a full tracing. +% \changes{v1.0g}{1994/04/28}{Turn off overfull box tracing in log} +% +% \begin{macrocode} +\showboxbreadth=-1 +\showboxdepth=-1 +\errorcontextlines=-1 +% \end{macrocode} +% +% \begin{macrocode} +\hfuzz=0.1pt +\vfuzz=0.1pt +\overfullrule=5pt +\maxdepth=4pt +\splitmaxdepth=\maxdimen +\boxmaxdepth=\maxdimen +% \end{macrocode} +% +% \begin{oldcomments} +% \lineskiplimit=0pt, changed by \normalbaselines +% \begin{macrocode} +\delimitershortfall=5pt +\nulldelimiterspace=1.2pt +\scriptspace=0.5pt +% \end{macrocode} +% \mathsurround=0pt +% \predisplaysize=0pt, set before TeX enters $$ +% \displaywidth=0pt, set before TeX enters $$ +% \displayindent=0pt, set before TeX enters $$ +% \begin{macrocode} +\parindent=20pt +% \end{macrocode} +% \hangindent=0pt, zeroed by TeX after each paragraph +% \hoffset=0pt +% \voffset=0pt +% +% \baselineskip=0pt, changed by \normalbaselines +% \lineskip=0pt, changed by \normalbaselines +% \begin{macrocode} +\parskip=0pt plus 1pt +\abovedisplayskip=12pt plus 3pt minus 9pt +\abovedisplayshortskip=0pt plus 3pt +\belowdisplayskip=12pt plus 3pt minus 9pt +\belowdisplayshortskip=7pt plus 3pt minus 4pt +% \end{macrocode} +% \leftskip=0pt +% \rightskip=0pt +% \begin{macrocode} +\topskip=10pt +\splittopskip=10pt +% \end{macrocode} +% \tabskip=0pt +% \spaceskip=0pt +% \xspaceskip=0pt +% \begin{macrocode} +\parfillskip=0pt plus 1fil +% \end{macrocode} +% \end{oldcomments} +% +% +% \begin{macro}{\normalbaselineskip} +% \begin{macro}{\normallineskip} +% \begin{macro}{\normallineskiplimit} +% We also define special registers that function like parameters: +% \begin{macrocode} +\newskip\normalbaselineskip \normalbaselineskip=12pt +\newskip\normallineskip \normallineskip=1pt +\newdimen\normallineskiplimit \normallineskiplimit=0pt +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\interfootlinepenalty} +% \begin{macrocode} +\newcount\interfootnotelinepenalty \interfootnotelinepenalty=100 +% \end{macrocode} +% \end{macro} +% +% Definitions for preloaded fonts +% +% \begin{macro}{\magstephalf} +% \begin{macro}{\magstep} +% \begin{macrocode} +\def\magstephalf{1095 } +\def\magstep#1{\ifcase#1 \@m\or 1200\or 1440\or 1728\or + 2074\or 2488\fi\relax} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% Macros for setting ordinary text +% +% \begin{macro}{\frenchspacing} +% \begin{macro}{\nonfrenchspacing} +% \begin{macrocode} +\def\frenchspacing{\sfcode`\.\@m \sfcode`\?\@m \sfcode`\!\@m + \sfcode`\:\@m \sfcode`\;\@m \sfcode`\,\@m} +\def\nonfrenchspacing{\sfcode`\.3000\sfcode`\?3000\sfcode`\!3000% + \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\normalbaselines} +% \begin{macrocode} +\def\normalbaselines{\lineskip\normallineskip + \baselineskip\normalbaselineskip \lineskiplimit\normallineskiplimit} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\M} +% \begin{macro}{\I} +% \changes{v1.1m}{1995/09/01}{Use \cs{let} to save space} +% Save a bit of space by using |\let| here. +% \begin{macrocode} +\def\^^M{\ } % control <return> = control <space> +\let\^^I\^^M % same for <tab> +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\lq} +% \begin{macro}{\rq} +% \begin{macrocode} +\def\lq{`} +\def\rq{'} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\lbrack} +% \begin{macro}{\rbrack} +% \begin{macrocode} +\def\lbrack{[} +\def\rbrack{]} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\aa} +% \begin{macro}{\AA} +% These are not from plain.tex but they are similar to other commands +% found here and nowhere else, being alternate input forms for +% characters. +% \begin{macrocode} +\def \aa {\r a} +\def \AA {\r A} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\endgraf} +% \begin{macro}{\endline} +% \begin{macrocode} +\let\endgraf=\par +\let\endline=\cr +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\space} +% \begin{macrocode} +\def\space{ } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\empty} +% \changes{v1.1m}{1995/09/01}{Use \cs{let} to save space} +% This probably ought to go altogether, but let it to the \LaTeX\ +% version to save space. +% \begin{macrocode} +\let\empty\@empty +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\null} +% \begin{macrocode} +\def\null{\hbox{}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bgroup} +% \begin{macro}{\egroup} +% \begin{macrocode} +\let\bgroup={ +\let\egroup=} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\obeylines} +% \begin{macro}{\obeyspaces} +% In |\obeylines|, we say |\let^^M=\par| instead of |\def^^M{\par}| +% since this allows, for example, |\let\par=\cr \obeylines \halign{...| +% \begin{macrocode} +{\catcode`\^^M=\active % these lines must end with % + \gdef\obeylines{\catcode`\^^M\active \let^^M\par}% + \global\let^^M\par} % this is in case ^^M appears in a \write +\def\obeyspaces{\catcode`\ \active} +{\obeyspaces\global\let =\space} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\loop} +% \changes{v1.0h}{1994/05/16}{Use Kabelschacht method} +% \begin{macro}{\iterate} +% \changes{v1.1b}{1994/11/10} +% {(CAR) added extra \cs{relax}} +% \changes{v1.1m}{1994/05/26} +% {(CAR) added \cs{long}} +% \begin{macro}{\repeat} +% We use Kabelschacht's method of doing loops, see TUB 8\#2 (1987). +% (unless that breaks something :-). It turned out to need an +% extra |\relax|: see pr/642 (|\loop| could do one iteration too much +% in certain cases). +% \begin{macrocode} +\long\def \loop #1\repeat{% + \def\iterate{#1\relax % Extra \relax + \expandafter\iterate\fi + }% + \iterate + \let\iterate\relax +} +% \end{macrocode} +% This setting of |\repeat| is needed to make |\loop...\if...\repeat| +% skippable within another |\if...|. +% \begin{macrocode} +\let\repeat=\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \LaTeX\ defines |\smallskip|, etc.\ in |ltspace.dtx|. +% +% \begin{macro}{\nointerlineskip} +% \begin{macro}{\offinterlineskip} +% \changes{v1.1n}{1995/07/02}{Replaced 1000 by \cs{@m}} +% \begin{macrocode} +\def\nointerlineskip{\prevdepth-\@m\p@} +\def\offinterlineskip{\baselineskip-\@m\p@ + \lineskip\z@ \lineskiplimit\maxdimen} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\vglue} +% \begin{macro}{\hglue} +% \begin{macrocode} +\def\vglue{\afterassignment\vgl@\skip@=} +\def\vgl@{\par \dimen@\prevdepth \hrule \@height\z@ + \nobreak\vskip\skip@ \prevdepth\dimen@} +\def\hglue{\afterassignment\hgl@\skip@=} +\def\hgl@{\leavevmode \count@\spacefactor \vrule \@width\z@ + \nobreak\hskip\skip@ \spacefactor\count@} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \LaTeX\ defines |~| in |ltdefns.dtx|. +% +% \begin{macro}{\slash} +% \begin{macrocode} +\def\slash{/\penalty\exhyphenpenalty} % a `/' that acts like a `-' +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\break} +% \begin{macro}{\nobreak} +% \begin{macro}{\allowbreak} +% \begin{macrocode} +\def\break{\penalty-\@M} +\def\nobreak{\penalty \@M} +\def\allowbreak{\penalty \z@} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\filbreak} +% \begin{macro}{\goodbreak} +% \begin{macrocode} +\def\filbreak{\par\vfil\penalty-200\vfilneg} +\def\goodbreak{\par\penalty-500 } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\eject} +% \changes{v1.1s}{1995/10/17}{Move \cs{supereject} to compat file} +% Define |\eject| as in plain \TeX\ but define |\supereject| only in +% the compatibility file. +% \begin{macrocode} +\def\eject{\par\break} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\removelastskip} +% \begin{macrocode} +\def\removelastskip{\ifdim\lastskip=\z@\else\vskip-\lastskip\fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\smallbreak} +% \begin{macro}{\medbreak} +% \begin{macro}{\bigbreak} +% \begin{macrocode} +\def\smallbreak{\par\ifdim\lastskip<\smallskipamount + \removelastskip\penalty-50\smallskip\fi} +\def\medbreak{\par\ifdim\lastskip<\medskipamount + \removelastskip\penalty-100\medskip\fi} +\def\bigbreak{\par\ifdim\lastskip<\bigskipamount + \removelastskip\penalty-200\bigskip\fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\m@th} +% \changes{v1.0h}{1994/05/16}{Remove unnecssary space} +% \begin{macrocode} +\def\m@th{\mathsurround\z@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\underbar} +% Due to \LaTeX's redefinition of |\underline| plain \TeX's +% |\underbar| can be done in a simpler fashion (but do we +% need it at all?). +% \changes{v1.1m}{1994/05/26} +% {(CAR/FMi) changed to use box \cs{tw@}} +% \changes{v1.1p}{1994/05/26} +% {(DPC) changed to use \cs{sbox}} +% \begin{macrocode} +\def\underbar#1{\underline{\sbox\tw@{#1}\dp\tw@\z@\box\tw@}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\strutbox} +% \begin{macro}{\strut} +% \LaTeX\ sets |\strutbox| in |\set@fontsize|. +% \begin{macrocode} +\newbox\strutbox +\def\strut{\relax\ifmmode\copy\strutbox\else\unhcopy\strutbox\fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\hidewidth} +% For alignment entries that can stick out. +% \begin{macrocode} +\def\hidewidth{\hskip\hideskip} +% \end{macrocode} +% \end{macro} +% +% \changes{v1.0h}{1994/05/16}{Remove unnecessary def for \cs{item}} +% \changes{v1.1i}{1995/04/27} +% {Move \cs{hang} and \cs{textindent} to latex209.def} +% \changes{RmS}{1991/11/04}{Removed \cs{itemitem} since never +% needed/useful with \LaTeX.} +% +% \begin{macro}{\narrower} +% \begin{macrocode} +\def\narrower{% + \advance\leftskip\parindent + \advance\rightskip\parindent} +% \end{macrocode} +% \end{macro} +% +% \changes{v1.1c}{1994/11/12}{Comment out more encoding specific +% commands} +% \LaTeX\ defines |\ae| and similar commands elsewhere. +% +% \begin{macrocode} +\chardef\%=`\% +\chardef\&=`\& +\chardef\#=`\# +% \end{macrocode} +% +% Most text commands are actually encoding specific and therefore +% defined later, so commented out or removed from this file. +% \changes{v1.0h}{1994/05/16}{Comment out encoding specific commands} +% +% \begin{macro}{\leavevmode} +% begins a paragraph, if necessary +% \begin{macrocode} +\def\leavevmode{\unhbox\voidb@x} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\mathhexbox} +% \begin{macrocode} +\def\mathhexbox#1#2#3{\mbox{$\m@th \mathchar"#1#2#3$}} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\ialign} +% \begin{macrocode} +\def\ialign{\everycr{}\tabskip\z@skip\halign} % initialized \halign +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\oalign} +% \begin{macro}{\o@lign} +% \begin{macro}{\ooalign} +% \begin{macrocode} +\def\oalign#1{\leavevmode\vtop{\baselineskip\z@skip \lineskip.25ex% + \ialign{##\crcr#1\crcr}}} +\def\o@lign{\lineskiplimit\z@ \oalign} +\def\ooalign{\lineskiplimit-\maxdimen \oalign} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\sh@ft} +% \changes{v1.1t}{1996/07/26}{replace \cs{dimen}\cs{z@} by +% \cs{dimen@}} +% \begin{macrocode} +\def\sh@ft#1{\dimen@.00#1ex\multiply\dimen@\fontdimen1\font + \kern-.0156\dimen@} % compensate for slant in lowered accents +% \end{macrocode} +% \end{macro} +% +% \LaTeX\ change: |\d|, |\b|, |\c|, |\copyright|, |\TeX| +% defined elsewhere. +% +% \changes{LaTeX2e} +% {1993/11/29}{All accents in decimals; suggested by Paul Taylor} +% \changes{v1.0d}{1994/04/12} +% {Define \cs{@acci}} +% \changes{v1.0h}{1994/05/16}{Remove \cs{@acci} and friends again} +% +% \LaTeX{} change: Make |\t| work in a moving argument. +% Now defined elsewhere. +% +% \begin{macro}{\hrulefill} +% \begin{macro}{\dotfill} +% \LaTeX\ change: |\kern\z@| added to end of +% |\hrulefill| and |\dotfill| +% to make them work in `tabular' and `array' environments. +% (Change made 24 July 1987). +% \LaTeX\ change: |\leavevmode| added at begining of +% |\dotfill| and |\hrulefill| +% so that they work as expected in vertical mode. +% \begin{macrocode} +\def\hrulefill{\leavevmode\leaders\hrule\hfill\kern\z@} +% \end{macrocode} +% The box in |\dotfill| originally contained (in plain.tex): +% |\mkern 1.5mu .\mkern 1.5mu|; the width of .44em differs from this +% by .04pt which is probably an acceptable difference within leaders. +% \changes{v1.1u}{1996/10/28}{Removed math mode} +% \changes{v1.1v}{1996/10/29}{Got arithmetic correct (CAR)} +% \changes{v1.1w}{1996/11/03}{Saved tokens by using \cs{hb@xt@}} +% \begin{macrocode} +\def\dotfill{% + \leavevmode + \cleaders \hb@xt@ .44em{\hss.\hss}\hfill + \kern\z@} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% INITEX sets |\sfcode x=1000| for all x, except that |\sfcode`X=999| +% for uppercase letters. The following changes are needed: +% \begin{macrocode} +\sfcode`\)=0 \sfcode`\'=0 \sfcode`\]=0 +% \end{macrocode} +% The |\nonfrenchspacing| macro will make further changes to +% |\sfcode| values. +% +% +% Definitions related to output +% +% +% \changes{v1.1k}{1995/05/22}{Definitions of \cs{footins} and +% \cs{footnoterule} moved to ltfloat.} +% +% +% |\magnification| doesn't work in \LaTeX. +%\begin{verbatim} +%\def\magnification{\afterassignment\m@g\count@} +%\def\m@g{\mag\count@ +% \hsize6.5truein\vsize8.9truein\dimen\footins8truein} +%\end{verbatim} +% +% \begin{macro}{\showoverfull} +% \changes{v0.1k ltfinal}{1994/05/19}{used \cs{@ne} not 1} +% The following commands are used in debugging: +% \begin{macrocode} +\def\showoverfull{\tracingonline\@ne} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\showoutput} +% \changes{v0.1k ltfinal}{1994/05/19} +% {used \cs{maxdimen} not 99999} +% \changes{v1.1n}{1995/07/02}{Use \cs{showoverfull} to save space} +% \changes{v1.1x}{2002/02/24}{Use newly added \cs{loggingoutput}} +% \begin{macro}{\loggingoutput} +% \changes{v1.1x}{2002/02/24}{Macro added} +% \begin{macrocode} +%</2ekernel|autoload> +%<*2ekernel|autoerr> +\gdef\loggingoutput{\tracingoutput\@ne + \showboxbreadth\maxdimen\showboxdepth\maxdimen\errorstopmode} +\gdef\showoutput{\loggingoutput\showoverfull} +%</2ekernel|autoerr> +%<autoload>\def\showoutput{\@autoerr\showoutput} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% \begin{macro}{\tracingall} +% \changes{LaTeX209}{1991/08/26}{Added +% \cs{errorcontextlines}!=\cs{maxdimen}, suggested by J. Schrod} +% \changes{v1.1n}{1995/07/02}{Use \cs{showoutput} to save space} +% \changes{v1.1x}{2002/02/24}{Use newly added \cs{loggingoutput}} +% \begin{macro}{\loggingall} +% \changes{v1.1x}{2002/02/24}{Macro added} +% \begin{macrocode} +%<*2ekernel|autoerr> +\gdef\loggingall{\tracingcommands\tw@\tracingstats\tw@ + \tracingpages\@ne\tracinglostchars\@ne + \tracingmacros\tw@\tracingparagraphs\@ne\tracingrestores\@ne + \errorcontextlines\maxdimen\loggingoutput} +\gdef\tracingall{\loggingall\showoverfull} +%</2ekernel|autoerr> +%<autoload>\def\tracingall{\@autoerr\tracingall} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \LaTeX\ change: |\showhyphens| Defined later. +% +% Punctuation affects the spacing. +% \begin{macrocode} +%<*2ekernel|autoload> +\nonfrenchspacing +%</2ekernel|autoload> +% \end{macrocode} +% +% +% \Finale +% |