summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/generic/knuth/errata/logmac.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/generic/knuth/errata/logmac.tex')
-rw-r--r--Master/texmf-dist/source/generic/knuth/errata/logmac.tex107
1 files changed, 107 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/generic/knuth/errata/logmac.tex b/Master/texmf-dist/source/generic/knuth/errata/logmac.tex
new file mode 100644
index 00000000000..8719efc497d
--- /dev/null
+++ b/Master/texmf-dist/source/generic/knuth/errata/logmac.tex
@@ -0,0 +1,107 @@
+% macros for the appendix to "Errors of TeX" paper
+\input manmac
+\voffset=-.3in
+\catcode`\^=7 % disable the indexing stuff
+\font\sltt=cmsltt9
+\font\logosl=logosl9
+\ninepoint
+\vsize=48pc \pageheight=\vsize
+\hsize=33.5pc
+
+\def\\{\bgroup\catcode`_=\active\identifier}
+{\catcode`_=\active \global\let_=\_}
+\def\identifier#1{\hbox{\it#1\/\kern.05em}\egroup} % italic type for identifiers
+
+\newdimen\codesize \setbox0=\hbox{\enspace M} \codesize=\wd0
+\setbox0=\hbox{\thinspace\S1111\kern\codesize} \rightskip=\wd0
+\newdimen\itemnosize \setbox0=\hbox{\bf999} \itemnosize=\wd0
+\setbox0=\hbox{$999\mapsto{}$\kern\itemnosize\enspace} \parindent=\wd0
+\newdimen\datemar \setbox0=\hbox{\bf 15 Mar 1977}
+\datemar=\hsize \advance\datemar-\wd0 \divide\datemar2
+\newdimen\hangamount \hangamount=\parindent \advance\hangamount 1em
+\everypar{\global\hangindent=\hangamount}
+\parfillskip=-\rightskip
+\finalhyphendemerits=0
+\interlinepenalty=100
+\smallskipamount=3pt plus 2pt
+\def\smallbreak{\fin\penalty-50\smallskip}
+
+\newbox\predec % for predecessor "mapsto" info
+\newbox\code % for the code letter
+\newbox\texsec % for TeX section numbers
+\newbox\cbox % the symbol used on commentlines
+\newbox\dbox % empty box used after datelines
+\setbox\dbox=\hbox to\datemar{}
+\setbox\cbox=\hbox to\itemnosize{\hfil$\bullet$}
+
+\newif\ifnothing \newif\ifnobreak
+\def\fin{\ifnothing\nothingfalse\else\endgroup
+ \unskip\nobreak\hfil\penalty500\enspace\null\nobreak\hfil\box\texsec
+ \box\code\endgraf\ifnobreak\nobreakfalse\nobreak\fi\fi}
+
+\catcode`\ =12 % tabs are ordinary characters
+\catcode`@=\active % @ signs denote a TeX section reference
+{\obeylines \gdef@#1
+ {\global\setbox\texsec=\hbox{\S$#1$}\lookahead}}
+\chardef\@=`\@
+{\catcode`X=\active \gdef X{\X}}
+\def\X{{\eightbf X}}
+\def\lightX{\hbox{\eightrm X}}
+\def\>#1\relax{\global\setbox\predec=\hbox{\let\X=\lightX
+ $#1\mapsto{}$}} % previous bug ref
+
+\def\checkvalid#1{\expandafter\ifx\csname#1!\endcsname\okay\else\invalidcode\fi}
+\def\okay{\okay}
+\def\makevalid#1{\expandafter\let\csname#1!\endcsname=\okay}
+\makevalid A % algorithm
+\makevalid B % blunder
+\makevalid C % cleanup
+\makevalid D % data structure
+\makevalid E % efficiency
+\makevalid F % forgotten case
+\makevalid G % generalization
+\makevalid I % interaction
+\makevalid L % language
+\makevalid M % mismatch
+\makevalid P % program organization
+\makevalid Q % quality
+\makevalid R % robustness
+\makevalid S % surprise
+\makevalid T % typo
+
+\def\lookahead{\futurelet\next\looky} % we'll do this at end of every line
+\def\looky{\if\next \let\cont\continuationline % tab mark
+ \else\if\next*\let\cont\dateline % asterisk
+ \else\if\next##\let\cont\commentline % sharp sign
+ \else\if\next\relax\let\cont\endit % \relax (gets us out)
+ \else\let\cont\dataline\fi\fi\fi\fi\cont} % otherwise should be a code letter
+\def\continuationline { } % insert space if a tab mark starts the next line
+\def\dateline* {\smallbreak\begingroup\bf\hfill\nobreaktrue
+ \global\setbox\code=\copy\dbox}
+\def\dataline#1{\fin\checkvalid#1%
+ \global\setbox\code=\hbox to\codesize{\enspace
+ \hskip0pt plus 3fil\rm#1\hskip0pt plus1fil}%
+ \begingroup\rm\catcode`X=\active\itemnumber}
+\def\itemnumber#1.{\catcode`X=11\setbox0=\hbox to\itemnosize{\bf\hss#1\relax}%
+ \setbox2=\hbox{\bf#1\relax}\ifdim\wd2>\wd0 \setbox0=\box2 \fi
+ \textindent{\hfil\box\predec\box0}}
+\def\commentline{\fin\afterassignment\begincomment\let\next}
+\def\begincomment{\begingroup\let\tt=\sltt
+ \let\MF=\slMF\sl\textindent{\hfil\copy\cbox}}
+
+\def\leftheadline{\hbox to \hsize{%
+ \vbox to 10pt{}% strut to position the baseline
+ {\tenrm\folio\kern1pc}% folio to left of text
+ \hfil\eightrm D. \ E. \ KNUTH\hfil% running head
+ }}
+\def\rightheadline{\hbox to \hsize{%
+ \vbox to 10pt{}% strut to position the baseline
+ \hfil\eightrm THE \ ERRORS \ OF \ \TeX\hfil% running head
+ {\kern1pc\tenrm\folio}% folio to right of text
+ }}
+
+\def\O#1{\hbox{\rm\char'23\kern-.2em\it#1\/\kern.05em}} % octal constant
+\def\slMF{{\logosl META}\-{\logosl FONT}}
+
+\def\endit{\fin\catcode`\^^M=5\let\par=\endgraf}
+\let\par=\lookahead \obeylines \nothingtrue