From 003784987870c03b80d1c7c230c856f299aa9f22 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 14 Dec 2014 00:12:03 +0000 Subject: regenerate tfm as part of knuth-lib, where the mf sources are; also move a variety of other knuth files into knuth-lib git-svn-id: svn://tug.org/texlive/trunk@35820 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/plain/base/manmac.tex | 715 --------------------- Master/texmf-dist/tex/plain/base/mftmac.tex | 55 -- Master/texmf-dist/tex/plain/base/story.tex | 18 - Master/texmf-dist/tex/plain/base/testfont.tex | 208 ------ Master/texmf-dist/tex/plain/base/webmac.tex | 206 ------ Master/texmf-dist/tex/plain/knuth-lib/manmac.tex | 715 +++++++++++++++++++++ Master/texmf-dist/tex/plain/knuth-lib/mftmac.tex | 55 ++ Master/texmf-dist/tex/plain/knuth-lib/story.tex | 18 + Master/texmf-dist/tex/plain/knuth-lib/testfont.tex | 208 ++++++ Master/texmf-dist/tex/plain/knuth-lib/webmac.tex | 206 ++++++ 10 files changed, 1202 insertions(+), 1202 deletions(-) delete mode 100644 Master/texmf-dist/tex/plain/base/manmac.tex delete mode 100644 Master/texmf-dist/tex/plain/base/mftmac.tex delete mode 100644 Master/texmf-dist/tex/plain/base/story.tex delete mode 100644 Master/texmf-dist/tex/plain/base/testfont.tex delete mode 100644 Master/texmf-dist/tex/plain/base/webmac.tex create mode 100644 Master/texmf-dist/tex/plain/knuth-lib/manmac.tex create mode 100644 Master/texmf-dist/tex/plain/knuth-lib/mftmac.tex create mode 100644 Master/texmf-dist/tex/plain/knuth-lib/story.tex create mode 100644 Master/texmf-dist/tex/plain/knuth-lib/testfont.tex create mode 100644 Master/texmf-dist/tex/plain/knuth-lib/webmac.tex (limited to 'Master/texmf-dist/tex/plain') diff --git a/Master/texmf-dist/tex/plain/base/manmac.tex b/Master/texmf-dist/tex/plain/base/manmac.tex deleted file mode 100644 index 63c064d1290..00000000000 --- a/Master/texmf-dist/tex/plain/base/manmac.tex +++ /dev/null @@ -1,715 +0,0 @@ -% Macros for The TeXbook - -\catcode`@=11 % borrow the private macros of PLAIN (with care) - -\font\tentex=cmtex10 - -\font\inchhigh=cminch -\font\titlefont=cmssdc10 at 40pt - -\font\ninerm=cmr9 -\font\eightrm=cmr8 -\font\sixrm=cmr6 - -\font\ninei=cmmi9 -\font\eighti=cmmi8 -\font\sixi=cmmi6 -\skewchar\ninei='177 \skewchar\eighti='177 \skewchar\sixi='177 - -\font\ninesy=cmsy9 -\font\eightsy=cmsy8 -\font\sixsy=cmsy6 -\skewchar\ninesy='60 \skewchar\eightsy='60 \skewchar\sixsy='60 - -\font\eightss=cmssq8 - -\font\eightssi=cmssqi8 - -\font\ninebf=cmbx9 -\font\eightbf=cmbx8 -\font\sixbf=cmbx6 - -\font\ninett=cmtt9 -\font\eighttt=cmtt8 - -\hyphenchar\tentt=-1 % inhibit hyphenation in typewriter type -\hyphenchar\ninett=-1 -\hyphenchar\eighttt=-1 - -\font\ninesl=cmsl9 -\font\eightsl=cmsl8 - -\font\nineit=cmti9 -\font\eightit=cmti8 - -\font\tenu=cmu10 % unslanted text italic -\font\magnifiedfiverm=cmr5 at 10pt -\font\manual=manfnt % font used for the METAFONT logo, etc. -\font\cmman=cmman % font used for miscellaneous Computer Modern variations - -\newskip\ttglue -\def\tenpoint{\def\rm{\fam0\tenrm}% - \textfont0=\tenrm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm - \textfont1=\teni \scriptfont1=\seveni \scriptscriptfont1=\fivei - \textfont2=\tensy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy - \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex - \def\it{\fam\itfam\tenit}% - \textfont\itfam=\tenit - \def\sl{\fam\slfam\tensl}% - \textfont\slfam=\tensl - \def\bf{\fam\bffam\tenbf}% - \textfont\bffam=\tenbf \scriptfont\bffam=\sevenbf - \scriptscriptfont\bffam=\fivebf - \def\tt{\fam\ttfam\tentt}% - \textfont\ttfam=\tentt - \tt \ttglue=.5em plus.25em minus.15em - \normalbaselineskip=12pt - \def\MF{{\manual META}\-{\manual FONT}}% - \let\sc=\eightrm - \let\big=\tenbig - \setbox\strutbox=\hbox{\vrule height8.5pt depth3.5pt width\z@}% - \normalbaselines\rm} - -\def\ninepoint{\def\rm{\fam0\ninerm}% - \textfont0=\ninerm \scriptfont0=\sixrm \scriptscriptfont0=\fiverm - \textfont1=\ninei \scriptfont1=\sixi \scriptscriptfont1=\fivei - \textfont2=\ninesy \scriptfont2=\sixsy \scriptscriptfont2=\fivesy - \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex - \def\it{\fam\itfam\nineit}% - \textfont\itfam=\nineit - \def\sl{\fam\slfam\ninesl}% - \textfont\slfam=\ninesl - \def\bf{\fam\bffam\ninebf}% - \textfont\bffam=\ninebf \scriptfont\bffam=\sixbf - \scriptscriptfont\bffam=\fivebf - \def\tt{\fam\ttfam\ninett}% - \textfont\ttfam=\ninett - \tt \ttglue=.5em plus.25em minus.15em - \normalbaselineskip=11pt - \def\MF{{\manual hijk}\-{\manual lmnj}}% - \let\sc=\sevenrm - \let\big=\ninebig - \setbox\strutbox=\hbox{\vrule height8pt depth3pt width\z@}% - \normalbaselines\rm} - -\def\eightpoint{\def\rm{\fam0\eightrm}% - \textfont0=\eightrm \scriptfont0=\sixrm \scriptscriptfont0=\fiverm - \textfont1=\eighti \scriptfont1=\sixi \scriptscriptfont1=\fivei - \textfont2=\eightsy \scriptfont2=\sixsy \scriptscriptfont2=\fivesy - \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex - \def\it{\fam\itfam\eightit}% - \textfont\itfam=\eightit - \def\sl{\fam\slfam\eightsl}% - \textfont\slfam=\eightsl - \def\bf{\fam\bffam\eightbf}% - \textfont\bffam=\eightbf \scriptfont\bffam=\sixbf - \scriptscriptfont\bffam=\fivebf - \def\tt{\fam\ttfam\eighttt}% - \textfont\ttfam=\eighttt - \tt \ttglue=.5em plus.25em minus.15em - \normalbaselineskip=9pt - \def\MF{{\manual opqr}\-{\manual stuq}}% - \let\sc=\sixrm - \let\big=\eightbig - \setbox\strutbox=\hbox{\vrule height7pt depth2pt width\z@}% - \normalbaselines\rm} - -\def\tenmath{\tenpoint\fam-1 } % use after $ in ninepoint sections -\def\tenbig#1{{\hbox{$\left#1\vbox to8.5pt{}\right.\n@space$}}} -\def\ninebig#1{{\hbox{$\textfont0=\tenrm\textfont2=\tensy - \left#1\vbox to7.25pt{}\right.\n@space$}}} -\def\eightbig#1{{\hbox{$\textfont0=\ninerm\textfont2=\ninesy - \left#1\vbox to6.5pt{}\right.\n@space$}}} - -% Page layout -\newdimen\pagewidth \newdimen\pageheight \newdimen\ruleht -\hsize=29pc \vsize=44pc \maxdepth=2.2pt \parindent=3pc -\pagewidth=\hsize \pageheight=\vsize \ruleht=.5pt -\abovedisplayskip=6pt plus 3pt minus 1pt -\belowdisplayskip=6pt plus 3pt minus 1pt -\abovedisplayshortskip=0pt plus 3pt -\belowdisplayshortskip=4pt plus 3pt - -%\newinsert\footins -\def\footnote#1{\edef\@sf{\spacefactor\the\spacefactor}#1\@sf - \insert\footins\bgroup\eightpoint - \interlinepenalty100 \let\par=\endgraf - \leftskip=\z@skip \rightskip=\z@skip - \splittopskip=10pt plus 1pt minus 1pt \floatingpenalty=20000 - \smallskip\item{#1}\bgroup\strut\aftergroup\@foot\let\next} -\skip\footins=12pt plus 2pt minus 4pt % space added when footnote is present -%\count\footins=1000 % footnote magnification factor (1 to 1) -\dimen\footins=30pc % maximum footnotes per page - -\newinsert\margin -\dimen\margin=\maxdimen -%\count\margin=0 \skip\margin=0pt % marginal inserts take up no space - -\newif\iftitle -\def\titlepage{\global\titletrue} % for pages without headlines -\def\rhead{} % \rhead contains the running headline - -\def\leftheadline{\hbox to \pagewidth{\spaceskip=0pt - \vbox to 10pt{}% strut to position the baseline - \llap{\tenbf\folio\kern1pc}% folio to left of text - \tenit\rhead\hfil% running head flush left - }} -\def\rightheadline{\hbox to \pagewidth{\spaceskip=0pt - \vbox to 10pt{}% strut to position the baseline - \hfil\tenit\rhead\/% running head flush right - \rlap{\kern1pc\tenbf\folio}% folio to right of text - }} - -\def\onepageout#1{\shipout\vbox{ % here we define one page of output - \offinterlineskip % butt the boxes together - \vbox to 3pc{ % this part goes on top of the 44pc pages - \iftitle % the next is used for title pages - \global\titlefalse % reset the titlepage switch - \setcornerrules % for camera alignment - \else\ifodd\pageno \rightheadline\else\leftheadline\fi\fi - \vfill} % this completes the \vbox to 3pc - \vbox to \pageheight{ - \ifvoid\margin\else % marginal info is present - \rlap{\kern31pc\vbox to\z@{\kern4pt\box\margin \vss}}\fi - #1 % now insert the main information - \ifvoid\footins\else % footnote info is present - \vskip\skip\footins \kern-3pt - \hrule height\ruleht width\pagewidth \kern-\ruleht \kern3pt - \unvbox\footins\fi - \boxmaxdepth=\maxdepth - } % this completes the \vbox to \pageheight - } - \advancepageno} - -\def\setcornerrules{\hbox to \pagewidth{\vrule width 1pc height\ruleht - \hfil \vrule width 1pc} - \hbox to \pagewidth{\llap{\sevenrm(page \folio)\kern1pc}% - \vrule height1pc width\ruleht depth\z@ - \hfil \vrule width\ruleht depth\z@}} - -\output{\onepageout{\unvbox255}} - -\newbox\partialpage -\def\begindoublecolumns{\begingroup - \output={\global\setbox\partialpage=\vbox{\unvbox255\bigskip}}\eject - \output={\doublecolumnout} \hsize=14pc \vsize=89pc} -\def\enddoublecolumns{\output={\balancecolumns}\eject - \endgroup \pagegoal=\vsize} - -\def\doublecolumnout{\splittopskip=\topskip \splitmaxdepth=\maxdepth - \dimen@=44pc \advance\dimen@ by-\ht\partialpage - \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ - \onepageout\pagesofar - \unvbox255 \penalty\outputpenalty} -\def\pagesofar{\unvbox\partialpage - \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}} -\def\balancecolumns{\setbox0=\vbox{\unvbox255} \dimen@=\ht0 - \advance\dimen@ by\topskip \advance\dimen@ by-\baselineskip - \divide\dimen@ by2 \splittopskip=\topskip - {\vbadness=10000 \loop \global\setbox3=\copy0 - \global\setbox1=\vsplit3 to\dimen@ - \ifdim\ht3>\dimen@ \global\advance\dimen@ by1pt \repeat} - \setbox0=\vbox to\dimen@{\unvbox1} - \setbox2=\vbox to\dimen@{\unvbox3} - \pagesofar} - -% To produce only a subset of pages, put the page numbers on separate -% lines in a file called pages.tex -\let\Shipout=\shipout -\newread\pages \newcount\nextpage \openin\pages=pages -\def\getnextpage{\ifeof\pages\else - {\endlinechar=-1\read\pages to\next - \ifx\next\empty % in this case we should have eof now - \else\global\nextpage=\next\fi}\fi} -\ifeof\pages\else\message{OK, I'll ship only the requested pages!} - \getnextpage\fi -\def\shipout{\ifeof\pages\let\next=\Shipout - \else\ifnum\pageno=\nextpage\getnextpage\let\next=\Shipout - \else\let\next=\Tosspage\fi\fi \next} -\newbox\garbage \def\Tosspage{\deadcycles=0\setbox\garbage=} - -% Chapter formatting -% The preface and table of contents are formatted in place, not here - -\newcount\exno % for the number of exercises in the current chapter -\newcount\subsecno % for the number of subsections in the current chapter - -\def\beginchapter#1 #2#3. #4\par{\global\exno=0 - \subsecno=0 - \def\chapno{#2#3} - \ifodd\pageno - \errmessage{You had too much text on that last page; I'm backing up} - \advance\pageno by-1 \fi - \titlepage - \def\\{ } % \\'s in the title will be treated as spaces - \message{#1 #2#3:} % show the chapter title on the terminal - \def\MF{{\manual 89:;<=>:}} % slant the logo - \xdef\rhead{#1 #2#3: #4\unskip} - {\def\TeX{T\kern-.2em\lower.5ex\hbox{E}\kern-.06em X} - \def\MF{{\vbox to30pt{}\manual ()*+,-.*}} - \def\\{#3} - \ifx\empty\\ \rightline{\inchhigh #2\kern-.04em} - \else\rightline{\inchhigh #2\kern-.06em#3\kern-.04em}\fi - \vskip 1.75pc - \baselineskip 36pt \lineskiplimit \titlelsl \lineskip 12pt - \let\\=\cr % now the \\'s are line dividers - \halign{\line{\titlefont\hfil##}\\#4\unskip\\} - \vfill\eject} % output the chapter title page - \tenpoint - \noindent\ignorespaces} % the first paragraph of a chapter is not indented -\newdimen\titlelsl \titlelsl=1pt - -\outer\def\endchapter{\ifodd\pageno \else\vfill\eject\null\fi - \begingroup\bigskip\vfill % beginning of the quotes - \def\eject{\endgroup\eject} - \def\par{\ifhmode\/\endgraf\fi}\obeylines - \def\TeX{T\kern-.2em\lower.5ex\hbox{E}\kern-.000em X} - \def\MF{{\manual opqr}\-{\manual stuq}} - \eightpoint \let\tt=\ninett - \baselineskip 10pt - \parfillskip \z@ - \interlinepenalty 10000 - \leftskip \z@ plus 40pc minus \parindent - \let\rm=\eightss \let\sl=\eightssi - \everypar{\sl}} -\def\author#1(#2){\smallskip\noindent\rm--- #1\unskip\enspace(#2)} - -\def\dbend{{\manual\char127}} % dangerous bend sign -\def\d@nger{\medbreak\begingroup\clubpenalty=10000 - \def\par{\endgraf\endgroup\medbreak} \noindent\hang\hangafter=-2 - \hbox to0pt{\hskip-\hangindent\dbend\hfill}\ninepoint} -\outer\def\danger{\d@nger} -\def\dd@nger{\medbreak\begingroup\clubpenalty=10000 - \def\par{\endgraf\endgroup\medbreak} \noindent\hang\hangafter=-2 - \hbox to0pt{\hskip-\hangindent\dbend\kern1pt\dbend\hfill}\ninepoint} -\outer\def\ddanger{\dd@nger} -\def\enddanger{\endgraf\endgroup} % omits the \medbreak - -\outer\def\subsection#1. {\medbreak\advance\subsecno by 1 - \noindent{\it \the\subsecno.\enspace#1.\enspace}} -\def\ansno#1.#2:{\medbreak\noindent - \hbox to\parindent{\bf\hss#1.#2.\enspace}\ignorespaces} - -% Composition macros -\hyphenation{man-u-script man-u-scripts ap-pen-dix xscaled} - -\def\AmSTeX{$\cal A\kern-.1667em\lower.5ex\hbox{$\cal M$}\kern-.075em - S$-\TeX} -\def\bull{\vrule height .9ex width .8ex depth -.1ex } % square bullet -\def\SS{{\it SS}} % scriptscript style -\def\|{\leavevmode\hbox{\tt\char`\|}} % vertical line -\def\dn{\leavevmode\hbox{\tt\char'14}} % downward arrow -\def\up{\leavevmode\hbox{\tt\char'13}} % upward arrow -\def\]{\leavevmode\hbox{\tt\char`\ }} % visible space - -\def\pt{\,{\rm pt}} % units of points, in math formulas -\def\em{\,{\rm em}} % units of ems, in math formulas -\def\<#1>{\leavevmode\hbox{$\langle$#1\/$\rangle$}} % syntactic quantity -\def\oct#1{\hbox{\rm\'{}\kern-.2em\it#1\/\kern.05em}} % octal constant -\def\hex#1{\hbox{\rm\H{}\tt#1}} % hexadecimal constant -\def\cstok#1{\leavevmode\thinspace\hbox{\vrule\vtop{\vbox{\hrule\kern1pt - \hbox{\vphantom{\tt/}\thinspace{\tt#1}\thinspace}} - \kern1pt\hrule}\vrule}\thinspace} % control sequence token - -{\obeyspaces\gdef {\ }} -\def\parbreak{\hfil\break\indent\strut} -\def\stretch{\nobreak\hskip0pt plus2pt\relax} - -% macros for non-centered displays -\outer\def\begindisplay{\obeylines\startdisplay} -{\obeylines\gdef\startdisplay#1 - {\catcode`\^^M=5$$#1\halign\bgroup\indent##\hfil&&\qquad##\hfil\cr}} -\outer\def\enddisplay{\crcr\egroup$$} - -% (the following \begin...\end-type macros do not appear in Appendix E) -% macros for demonstrating math constructions -\outer\def\beginmathdemo{$$\advance\baselineskip by2pt - \halign\bgroup\indent\hbox to 160pt{##\hfil}&$##$\hfil\cr\noalign{\vskip-2pt}} -\outer\def\begindisplaymathdemo {$$\advance\baselineskip by15pt - \halign\bgroup\indent\hbox to 160pt{##\hfil}&$\displaystyle{##}$\hfil\cr - \noalign{\vskip-15pt}} -\outer\def\beginlongmathdemo{$$\advance\baselineskip by2pt - \halign\bgroup\indent\hbox to 210pt{##\hfil}&$##$\hfil\cr\noalign{\vskip-2pt}} -\outer\def\beginlongdisplaymathdemo {$$\advance\baselineskip by15pt - \halign\bgroup\indent\hbox to 210pt{##\hfil}&$\displaystyle{##}$\hfil\cr - \noalign{\vskip-15pt}} -\outer\def\endmathdemo{\egroup$$} - -% macros for font tables -\def\oddline#1{\cr - \noalign{\nointerlineskip} - \multispan{19}\hrulefill& - \setbox0=\hbox{\lower 2.3pt\hbox{\hex{#1x}}}\smash{\box0}\cr - \noalign{\nointerlineskip}} -\def\evenline{\cr\noalign{\hrule}} -\def\chartstrut{\lower4.5pt\vbox to14pt{}} -\def\beginchart#1{$$\postdisplaypenalty=-10000 \global\count@=0 #1 - \halign to\hsize\bgroup - \chartstrut##\tabskip0pt plus10pt& - &\hfil##\hfil&\vrule##\cr - \lower6.5pt\null - &&&\oct0&&\oct1&&\oct2&&\oct3&&\oct4&&\oct5&&\oct6&&\oct7&\evenline} -\def\endchart{\raise11.5pt\null&&&\hex 8&&\hex 9&&\hex A&&\hex B& - &\hex C&&\hex D&&\hex E&&\hex F&\cr\egroup$$} -\def\:{\setbox0=\hbox{\char\count@}% - \ifdim\ht0>7.5pt\reposition - \else\ifdim\dp0>2.5pt\reposition\fi\fi - \box0\global\advance\count@ by1 } -\def\reposition{\setbox0=\hbox{$\vcenter{\kern2pt\box0\kern2pt}$}} -\def\normalchart{% - &\oct{00x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline0 - &\oct{01x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{02x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline1 - &\oct{03x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{04x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline2 - &\oct{05x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{06x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline3 - &\oct{07x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{10x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline4 - &\oct{11x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{12x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline5 - &\oct{13x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{14x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline6 - &\oct{15x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline - &\oct{16x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline7 - &\oct{17x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline} - -% (now Appendix E resumes again) -% macros for verbatim scanning -\chardef\other=12 -\def\ttverbatim{\begingroup - \catcode`\\=\other - \catcode`\{=\other - \catcode`\}=\other - \catcode`\$=\other - \catcode`\&=\other - \catcode`\#=\other - \catcode`\%=\other - \catcode`\~=\other - \catcode`\_=\other - \catcode`\^=\other - \obeyspaces \obeylines \tt} - -\outer\def\begintt{$$\let\par=\endgraf \ttverbatim \parskip=\z@ - \catcode`\|=0 \rightskip-5pc \ttfinish} -{\catcode`\|=0 |catcode`|\=\other % | is temporary escape character - |obeylines % end of line is active - |gdef|ttfinish#1^^M#2\endtt{#1|vbox{#2}|endgroup$$}} - -\catcode`\|=\active -{\obeylines \gdef|{\ttverbatim \spaceskip\ttglue \let^^M=\ \let|=\endgroup}} - -% macros for syntax rules (again, not in Appendix E) -\def\[#1]{\silenttrue\xref|#1|\thinspace{\tt#1}\thinspace} % keyword in syntax -\def\beginsyntax{\endgraf\nobreak\medskip - \begingroup \catcode`<=13 \catcode`[=13 - \let\par=\endsyntaxline \obeylines} -\def\endsyntaxline{\futurelet\next\syntaxswitch} -\def\syntaxswitch{\ifx\next\<\let\next=\syntaxrule - \else\ifx\next\endsyntax\let\next=\endgroup - \else\let\next=\continuerule\fi\fi \next} -\def\continuerule{\hfil\break\indent\qquad} -\def\endsyntax{\medbreak\noindent} -{\catcode`<=13 \catcode`[=13 - \global\let<=\< \global\let[=\[ - \gdef\syntaxrule<#1>{\endgraf\indent\silentfalse\xref\<#1>}} -\def\is{\ $\longrightarrow$ } -\def\alt{\ $\vert$ } - -% macros to demarcate lines quoted from TeX source files -\def\beginlines{\par\begingroup\nobreak\medskip\parindent\z@ \obeylines - \hrule\kern1pt\nobreak \everypar{\strut}} -\def\endlines{\kern1pt\hrule\endgroup\medbreak\noindent} -\def\weakendlines{\kern1pt\hrule\endgroup\medskip\noindent} -\def\finalendlines{\kern1pt\hrule\endgroup\medbreak} - -\outer\def\exercise{\medbreak - \global\advance\exno by 1 - \noindent\llap{\manual\char'170\rm\kern.15em}% triangle in margin - {\ninebf EXERCISE \bf\chapno.\the\exno}\par\nobreak\noindent} -\def\dexercise{\global\advance\exno by 1 - \llap{\manual\char'170\rm\kern.15em}% triangle in indented space - {\eightbf EXERCISE \bf\chapno.\the\exno}\hfil\break} -\outer\def\dangerexercise{\d@nger \dexercise} -\outer\def\ddangerexercise{\dd@nger \dexercise} - -\newwrite\ans -\immediate\openout\ans=answers % file for answers to exercises -\outer\def\answer{\par\medbreak - \immediate\write\ans{} - \immediate\write\ans{\string\ansno\chapno.\the\exno:} - \copytoblankline} -\def\copytoblankline{\begingroup\setupcopy\copyans} -\def\setupcopy{\def\do##1{\catcode`##1=\other}\dospecials - \catcode`\|=\other \obeylines} -{\obeylines \gdef\copyans#1 - {\def\next{#1}% - \ifx\next\empty\let\next=\endgroup % - \else\immediate\write\ans{\next} \let\next=\copyans\fi\next}} - -% Editorial notes: some things to watch for. - -% f |\ and f ^|\ => insert \/ [e.g., if\/ |\hbox|...] -% appendi => check for \null [e.g., Appendix~B\null.] -% ly- => the hyphen is probably omittable -% ''. and '', => transpose to .'' and ,'' -% dgement => dgment -% in MFbook: f@' and \MF, and \MF. - -% Macros for drawing figures (not in Appendix E) -\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 } -% \makeblankbox puts rules at the edges of a blank box -% whose dimensions are those of \box0 (assuming nonnegative wd,ht,dp) -% #1 is rule thickness outside, #2 is rule thickness inside -\def\makeblankbox#1#2{\hbox{\lower\dp0\vbox{\hidehrule{#1}{#2}% - \kern-#1% overlap the rules at the corners - \hbox to\wd0{\hidevrule{#1}{#2}% - \raise\ht0\vbox to #1{}% set the vrule height - \lower\dp0\vtop to #1{}% set the vrule depth - \hfil\hidevrule{#2}{#1}}% - \kern-#1\hidehrule{#2}{#1}}}} -\def\maketypebox{\makeblankbox{0pt}{1pt}} -\def\makelightbox{\makeblankbox{.2pt}{.2pt}} - -% \box\bigdot is a null box with a bullet at its reference point -\newbox\bigdot \newbox\smalldot -\setbox0=\hbox{$\vcenter{}$} % \ht0 is the axis height -\setbox1=\hbox to\z@{$\hss\bullet\hss$} % bullet is centered on the axis -\setbox\bigdot=\vbox to\z@{\kern-\ht1 \kern\ht0 \box1 \vss} -\setbox1=\hbox to\z@{$\hss\cdot\hss$} % cdot is centered on the axis -\setbox\smalldot=\vbox to\z@{\kern-\ht1 \kern\ht0 \box1 \vss} - -% \arrows makes things like <--- text ---> -\def\arrows#1#2{% #1=width, #2=text - {\setbox0=\hbox{$\mkern-2mu\mathord-\mkern-2mu$} - \hbox to #1{\kern-.055556em$\leftarrow\mkern-6mu$% - \cleaders\copy0\hfil - \kern.4em #2\kern.4em - \cleaders\copy0\hfil - $\mkern-6mu\rightarrow$\kern-.055556em}}} - -% \samplebox makes the outline of a box, with big dot at reference point -\def\samplebox#1#2#3#4{% #1=ht, #2=dp, #3=wd, #4=text - {\setbox0=\vtop{\vbox to #1{\hbox to #3{}\vss} - \nointerlineskip - \vbox to #2{}}% now \box0 has the desired ht, dp, and wd - \hbox{\copy\bigdot - \vrule height.2pt depth.2pt width#3% - \kern-#3% - \makelightbox - \kern-#3% - \raise#1\vbox{\hbox to #3{\hss#4\hss} - \kern 3pt}}}} - -% \sampleglue makes glue between sample boxes -\newdimen\varunit -\varunit=\hsize \advance\varunit by-2\parindent -\divide\varunit by 58 % illustrations in Chapter 12 -\def\sampleglue#1#2{% #1=width, #2=text - \vtop{\hbox to #1{\xleaders\hbox to .5\varunit{\hss\copy\smalldot\hss}\hfil} - \kern3pt - \tabskip \z@ plus 1fil - \halign to #1{\hfil##\cr#2\cr}}} - -% Indexing macros -\newif\ifproofmode -\proofmodetrue % this should be false when making camera-ready copy -\newwrite\inx -\immediate\openout\inx=index % file for index reminders -\newif\ifsilent -\def\specialhat{\ifmmode\def\next{^}\else\let\next=\beginxref\fi\next} -\def\beginxref{\futurelet\next\beginxrefswitch} -\def\beginxrefswitch{\ifx\next\specialhat\let\next=\silentxref - \else\silentfalse\let\next=\xref\fi \next} -\catcode`\^=\active \let ^=\specialhat -\def\silentxref^{\silenttrue\xref} - -\def\marginstyle{\vrule height6pt depth2pt width\z@ \sevenrm} - -\chardef\bslash=`\\ -\def\xref{\futurelet\next\xrefswitch} -\def\xrefswitch{\begingroup - \ifx\next|\aftergroup\vxref % case 1 or 2, |arg| or |\arg| - \else\ifx\next\<\aftergroup\anglexref % case 3, "\" means angle brackets - \else\aftergroup\normalxref \fi\fi\endgroup} % case 0, "{arg}" -\def\vxref|{\catcode`\\=\active \futurelet\next\vxrefswitch} -\def\vxrefswitch#1|{\catcode`\\=0 - \ifx\next\empty\def\xreftype{2}% - \def\next{{\tt\bslash\text}}% type 2, |\arg| - \else\def\xreftype{1}\def\next{{\tt\text}}\fi % type 1, |arg| - \edef\text{#1}\makexref} -{\catcode`\|=0 \catcode`\\=\active |gdef\{}} -\def\anglexref\<#1>{\def\xreftype{3}\def\text{#1}% - \def\next{\<\text>}\makexref} -\def\normalxref#1{\def\xreftype{0}\def\text{#1}\let\next=\text\makexref} -\def\makexref{\ifproofmode\insert\margin{\hbox{\marginstyle\text}}% - \xdef\writeit{\write\inx{\text\space!\xreftype\space - \noexpand\number\pageno.}}\writeit - \else\ifhmode\kern\z@\fi\fi - \ifsilent\ignorespaces\else\next\fi} -% the \insert (which is done in proofmode only) suppresses hyphenation, -% so the \kern\z@ is put in to give the same effect in non-proofmode. - -% Internal cross references that may change -\def\sesame{61} % page number for Sesame Street quote -\def\bmiexno{20} % exercise number for bold math italic -\def\punishexno{1} % exercise number for `punishment' -\def\fracexno{6} % exercise number for `\frac' -\def\vshippage{31} % error message from `\vship' -\def\storypage{24} % listing of story.tex -\def\metaT{4} % exercise number for T of METAFONT -\def\xwhat{2} % exercise number for x3:=whatever -\def\Xwhat{2} % exercise number for whatever itself - -\def\checkequals#1#2{\ifnum#1=#2\else - \errmessage{Redefine \string#1 to be \the#2}\fi} - -% Things for The METAFONTbook only -\ifx\MFmanual\!\else\endinput\fi - -\def\!{\kern-.03em\relax} - -\def\frac#1/#2{\leavevmode\kern.1em - \raise.5ex\hbox{\the\scriptfont0 #1}\kern-.1em - /\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}} - -\outer\def\displayfig #1 (#2){$$\advance\abovedisplayskip by 3pt - \leftline{\indent\figbox{#1}{3in}{#2}\vbox}$$} -\def\rightfig #1 (#2 x #3) ^#4 {% #2 wide and #3 deep, raised #4 - \strut\vadjust{\setbox0=\vbox to 0pt{\vss - \hbox to\pagewidth{\hfil - \raise #4\figbox{#1}{#2}{#3}\vtop \quad}} - \dp0=0pt \box0}} -\def\figbox#1#2#3#4{#4to#3{ % makes a box #2 wide and #3 deep - \ifproofmode\kern0pt\hrule\vfill - \hsize=#2 \baselineskip 6pt \fiverm\noindent\raggedright - (Figure #1 will be inserted here; too bad you can't see it now.) - \endgraf\vfill\hrule - \else\vfill\hbox to#2{}\fi}} - -\def\endsyntax{\begingroup\let\par=\endgraf\medbreak\endgroup\noindent} - -\let\BEGINCHAPTER=\beginchapter -\def\beginchapter{\titlelsl=1pt \BEGINCHAPTER} -\def\beginChapter{\titlelsl=2pt \BEGINCHAPTER} - -\def\decreasehsize #1 {\advance\hsize-#1} -\def\restorehsize{\hsize=\pagewidth} - -\catcode`\@=\active -\catcode`\"=\active -\def\ttverbatim{\begingroup \catcode`\@=\other \catcode`\"=\other - \catcode`\\=\other - \catcode`\{=\other - \catcode`\}=\other - \catcode`\$=\other - \catcode`\&=\other - \catcode`\#=\other - \catcode`\%=\other - \catcode`\~=\other - \catcode`\_=\other - \catcode`\^=\other - \obeyspaces \obeylines \tt} -\def\setupcopy{\def\do##1{\catcode`##1=\other}\dospecials - \catcode`\|=\other \catcode`\@=\other \catcode`\"=\other \obeylines} -\def\_{\leavevmode \kern.06em \vbox{\hrule width.3em}} -\def@#1@{\begingroup\def\_{\kern.04em - \vbox{\hrule width.3em height .6pt}\kern.08em}% - \ifmmode\mathop{\bf#1}\else\hbox{\bf#1\/}\fi\endgroup} -\def"#1"{\hbox{\it#1\/\kern.05em}} % italic type for identifiers -\def\xrefswitch{\begingroup - \ifx\next|\aftergroup\vxref % case 1, |arg| or |\arg| - \else\ifx\next@\aftergroup\boldxref % case 2, "@arg@" means boldface - \else\ifx\next"\aftergroup\italxref % case 4, ""arg"" means boldface - \else\ifx\next\<\aftergroup\anglexref % case 3, "\" means angle brackets - \else\aftergroup\normalxref \fi\fi\fi\fi\endgroup} % case 0, "{arg}" -\def\boldxref@#1@{\def\xreftype{2}\def\text{#1}% - \def\next{@\text@}\makexref} -\def\italxref"#1"{\def\xreftype{4}\def\text{#1}% - \def\next{"\text"}\makexref} - -\def\pyth+{\mathbin{++}} -\def\0{\raise.7ex\hbox{$\scriptstyle\#$}} -\def\to{\mathrel{\ldotp\ldotp}} -\def\dashto{\mathrel{\hbox{-\thinspace-\kern-.05em}}} -\def\ddashto{\mathrel{\hbox{-\thinspace-\thinspace-\kern-.05em}}} -\def\round{\mathop{\rm round}} -\def\angle{\mathop{\rm angle}} -\def\rmsqrt{\mathop{\rm sqrt}} -\def\reverse{\mathop{\rm reverse}} -\def\curl{\mathop{\rm curl}} -\def\tension{\mathop{\rm tension}} -\def\atleast{\mathop{\rm atleast}} -\def\controls{\mathop{\rm controls}} -\def\and{\,{\rm and}\,} -\def\cycle{{\rm cycle}} -\def\pickup{@pickup@ \thinspace} -\def\penpos#1{\hbox{\it penpos}_{#1}} -\def\pentaper#1{\hbox{\it pentaper}_{#1}} - -\chardef\hexa=1 % first hex -\chardef\hexb=2 % top and bot adjusted -\chardef\hexc=3 % same, bold -\chardef\hexd=4 % same, confined to box -\chardef\hexe=5 % penstroked hex -\chardef\Aa=6 % stick-figure A, golden ratio -\def\sevenAs{\char7\char8\char9\char10\char11\char12\char13} % same, variants -\chardef\Az=14 % same, with crooked bar -\chardef\Ab=15 % \Aa with rectilinear elliptical pen -\chardef\Ac=16 % same, with the ellipse tilted -\chardef\beana=17 % kidney bean, default pen -\chardef\beanb=18 % same, twice as bold -\chardef\beanc=19 % same, rectilinear elliptical pen -\chardef\beand=20 % same, with the ellipse tilted -\chardef\niba=21 % 10x rectilinear ellipse -\chardef\nibb=22 % same, with the ellipse tilted -\chardef\nibc=23 % same, 90 degrees titled -\chardef\IOT=24 % Ionian T -\chardef\IOS=25 % Ionian S -\chardef\IOO=26 % Ionian O -\chardef\IOI=27 % Ionian I -\chardef\cubea=28 % possible cube -\chardef\cubeb=29 % impossible cube -\chardef\bicentennial=30 % star with overlapping strokes -\chardef\oneu=31 % 1/4 of uuuu ornament -\chardef\circa=32 % quartercircle -\chardef\circb=33 % filled quartercircle -\chardef\circc=34 % rotated quartercircle -\chardef\circd=35 % cone -\chardef\circe=36 % concentric circles -\chardef\circf=37 % concentric diamonds -\chardef\fouru=38 % uuuu ornament -\chardef\fourc=39 % same, rotated -\chardef\seventh='140 % 1/7, to go with cmssqi8 - -\newdimen\apspix -\apspix=31448sp % 8 APS pixels = 52413.64sp, and I'm taking 60% of this -% to crude approximation, there are about 2\apspix per pt -\newdimen\blankpix \newdimen\Blankpix -\setbox0=\hbox{\manual P} \blankpix=\wd0 % approximately 1pt blank pixel -\setbox0=\hbox{\manual R} \Blankpix=\wd0 % approximately 3pt blank pixel - -\def\leftheadline{\hbox to \pagewidth{% - \vbox to 10pt{}% strut to position the baseline - \llap{\tenbf\folio\kern1pc}% folio to left of text - \def\MF{{\manual 89:;<=>:}}% slanted 10pt - \tenit\rhead\hfil% running head flush left - }} -\def\rightheadline{\hbox to \pagewidth{% - \vbox to 10pt{}% strut to position the baseline - \def\MF{{\manual 89:;<=>:}}% slanted 10pt - \hfil\tenit\rhead\/% running head flush right - \rlap{\kern1pc\tenbf\folio}% folio to right of text - }} -\def\ttok#1{\leavevmode\thinspace\hbox{\vrule\vtop{\vbox{\hrule\kern1pt - \hbox{\vphantom{\tt(j}\thinspace{\tt#1}\thinspace}} - \kern1pt\hrule}\vrule}\thinspace} % token - -\newdimen\tinypix \setbox0=\hbox{\sixrm0} \tinypix=5pt -\newdimen\pixcorr \pixcorr=\tinypix \advance\pixcorr by-\wd0 -\def\pixpat#1#2#3#4{\vcenter{\sixrm\baselineskip=\tinypix - \hbox{#1\kern\pixcorr#2}\hbox{#3\kern\pixcorr#4}}} - -\font\rand=random diff --git a/Master/texmf-dist/tex/plain/base/mftmac.tex b/Master/texmf-dist/tex/plain/base/mftmac.tex deleted file mode 100644 index 3243e74d68d..00000000000 --- a/Master/texmf-dist/tex/plain/base/mftmac.tex +++ /dev/null @@ -1,55 +0,0 @@ -% special macros for use with MFT output - -\font\tenlogo=logo10 % font used for the METAFONT logo -\font\tentex=cmtex10 \hyphenchar\tentex=-1 % font used for strings -\font\sevenit=cmti7 \scriptfont\itfam=\sevenit -\def\MF{{\tenlogo META}\-{\tenlogo FONT}} - -\parindent=0pt -\thinmuskip=5mu -\thickmuskip=6mu plus 6mu -\mathcode`\|="326A - -\def\\#1{{\it#1}} % italic type for identifiers -\def\0#1#2#3{\hbox{\rm\'{}\kern-.2em\it#1#2#3\/\kern.05em}} % octal constant -\def\1#1{\mathop{\hbox{\rm#1}}} % operator, in roman type -\def\2#1{\mathop{\hbox{\bf#1\/\kern.05em}}} % operator, in bold type -\def\3#1{\,\mathclose{\hbox{\bf#1\/}}} % `fi' and `endgroup' -\def\4#1{\mathbin{\hbox{\bf#1\/}}} % `step' and `at' -\def\5#1{\hbox{\bf#1\/}} % `true' and `nullpicture' -\def\6#1{\mathbin{\rm#1}} % `++' and `scaled' -\def\7{\hbox\bgroup\nocats\frenchspacing\finstring} % string token -\def\8#1{\mathrel{\mathcode`\.="8000 \mathcode`\-="8000 - #1\unkern}} % `..' and `--' -\def\9{\hfill$\%} % comment separator -\def\?#1{\mathopen{#1}\;} % `:', `::', and `||:' -\def\frac#1/#2{\leavevmode\kern.1em - \raise.5ex\hbox{\the\scriptfont0 #1}\kern-.1em - /\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}} - -\mathchardef\AM="2026 % ampersand -\let\BL=\medskip % space for empty line -\mathchardef\BS="026E % backslash -\mathchardef\HA="0222 % hat ("005E not as good) -\def\PS{\mathbin{+{-}+}} % pythagorean subtraction -\def\SH{\raise.7ex\hbox{$\scriptstyle\#$}} % sharp sign for sharped units -\mathchardef\TI="007E % tilde - -\chardef\other=12 -\def\nocats{\catcode`\\=\other \catcode`\{=\other - \catcode`\}=\other \catcode`\$=\other \catcode`\&=\other - \catcode`\#=\other \catcode`\%=\other \catcode`\~=\other - \catcode`\_=\other \catcode`\^=\other} -\def\finstring"#1"{\tentex"#1"\egroup} - -\newbox\shorthyf \setbox\shorthyf=\hbox{-\kern-.05em} -\mathchardef\period=`\. -{\catcode`\-=\active \global\def-{\copy\shorthyf\mkern3.9mu} - \catcode`\.=\active \global\def.{\period\mkern3mu}} - -\def\bf{\fam\bffam - \def\_{\kern.04em\vbox{\hrule width.3em height .6pt}\kern.08em}% - \tenbf} - -\def\join#1${} % say %%\join in .mf file to join lines together -\def\]{\hskip0pt plus 1filll\ } % say % comment\] to get comment flush left diff --git a/Master/texmf-dist/tex/plain/base/story.tex b/Master/texmf-dist/tex/plain/base/story.tex deleted file mode 100644 index fcbaa4151af..00000000000 --- a/Master/texmf-dist/tex/plain/base/story.tex +++ /dev/null @@ -1,18 +0,0 @@ -\hrule -\vskip 1in -\centerline{\bf A SHORT STORY} -\vskip 6pt -\centerline{\sl by A. U. Thor} % !`?`?! (modified) -\vskip .5cm -Once upon a time, in a distant - galaxy called \"O\"o\c c, -there lived a computer -named R.~J. Drofnats. - -Mr.~Drofnats---or ``R. J.,'' as -he preferred to be called---% error has been fixed! -was happiest when he was at work -typesetting beautiful documents. -\vskip 1in -\hrule -\vfill\eject diff --git a/Master/texmf-dist/tex/plain/base/testfont.tex b/Master/texmf-dist/tex/plain/base/testfont.tex deleted file mode 100644 index f7d146f8671..00000000000 --- a/Master/texmf-dist/tex/plain/base/testfont.tex +++ /dev/null @@ -1,208 +0,0 @@ -% A testbed for font evaluation (see The METAFONTbook, Appendix H) - -\tracinglostchars=0 -\tolerance=1000 -\raggedbottom -\nopagenumbers -\parindent=0pt -\newlinechar=`@ -\hyphenpenalty=200 -\doublehyphendemerits=30000 -\hyphenation{prom-i-nent} - -\newcount\m \newcount\n \newcount\p \newdimen\dim -\chardef\other=12 - -\def\today{\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 - \space\number\day, \number\year} -\def\hours{\n=\time \divide\n 60 - \m=-\n \multiply\m 60 \advance\m \time - \twodigits\n\twodigits\m} -\def\twodigits#1{\ifnum #1<10 0\fi \number#1} - -\def\init{\message{@Name of the font to test = } - \read-1 to\fontname \startfont - \message{Now type a test command (\string\help\space for help):}} -\def\startfont{\font\testfont=\fontname \spaceskip=0pt - \leftline{\sevenrm Test of \fontname\unskip\ on \today\ at \hours} - \medskip - \testfont \setbaselineskip - \ifdim\fontdimen6\testfont<10pt \rightskip=0pt plus 20pt - \else\rightskip=0pt plus 2em \fi - \spaceskip=\fontdimen2\testfont % space between words (\raggedright) - \xspaceskip=\fontdimen2\testfont \advance\xspaceskip by\fontdimen7\testfont} - -{\catcode`\|=0 \catcode`\\=\other -|gdef|help{|message{% -\init switches to another font;@% -\end or \bye finishes the run;@% -\table prints the font layout in tabular format;@% -\text prints a sample text, assuming TeX text font conventions;@% -\sample combines \table and \text;@% -\mixture mixes a background character with a series of others;@% -\alternation interleaves a background character with a series;@% -\alphabet prints all lowercase letters within a given background;@% -\ALPHABET prints all uppercase letters within a given background;@% -\series prints a series of letters within a given background;@% -\lowers prints a comprehensive test of lowercase;@% -\uppers prints a comprehensive test of uppercase;@% -\digits prints a comprehensive test of numerals;@% -\math prints a comprehensive test of TeX math italic;@% -\names prints a text that mixes upper and lower case;@% -\punct prints a punctuation test;@% -\bigtest combines many of the above routines;@% -\help repeats this message;@% -and you can use ordinary TeX commands (e.g., to \input a file).}}} - -\def\setbaselineskip{\setbox0=\hbox{\n=0 -\loop\char\n \ifnum \n<255 \advance\n 1 \repeat} -\baselineskip=6pt \advance\baselineskip\ht0 \advance\baselineskip\dp0 } - -\def\setchar#1{{\escapechar-1\message{\string#1 character = }% - \def\do##1{\catcode`##1=\other}\dospecials - \read-1 to\next - \expandafter\finsetchar\next\next#1}} -\def\finsetchar#1#2\next#3{\global\chardef#3=`#1 - \ifnum #3=`\# \global\chardef#3=#2 \fi} -\def\promptthree{\setchar\background - \setchar\starting \setchar\ending} - -\def\mixture{\promptthree \domix\mixpattern} -\def\alternation{\promptthree \domix\altpattern} -\def\mixpattern{\0\1\0\0\1\1\0\0\0\1\1\1\0\1} -\def\altpattern{\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0} -\def\domix#1{\par\chardef\0=\background \n=\starting - \loop \chardef\1=\n #1\endgraf - \ifnum \n<\ending \advance\n 1 \repeat} - -\def\!{\discretionary{\background}{\background}{\background}} -\def\series{\promptthree \!\doseries\starting\ending\par} -\def\doseries#1#2{\n=#1\loop\char\n\!\ifnum\n<#2\advance\n 1 \repeat} -\def\complower{\!\doseries{`a}{`z}\doseries{'31}{'34}\par} -\def\compupper{\!\doseries{`A}{`Z}\doseries{'35}{'37}\par} -\def\compdigs{\!\doseries{`0}{`9}\par} -\def\alphabet{\setchar\background\complower} -\def\ALPHABET{\setchar\background\compupper} - -\def\lowers{\docomprehensive\complower{`a}{`z}{'31}{'34}} -\def\uppers{\docomprehensive\compupper{`A}{`Z}{'35}{'37}} -\def\digits{\docomprehensive\compdigs{`0}{`4}{`5}{`9}} -\def\docomprehensive#1#2#3#4#5{\par\chardef\background=#2 - \loop{#1} \ifnum\background<#3\m=\background\advance\m 1 - \chardef\background=\m \repeat \chardef\background=#4 - \loop{#1} \ifnum\background<#5\m=\background\advance\m 1 - \chardef\background=\m \repeat} - -\def\names{ {\AA}ngel\aa\ Beatrice Claire - Diana \'Erica Fran\c{c}oise Ginette H\'el\`ene Iris - Jackie K\=aren {\L}au\.ra Mar{\'\i}a N\H{a}ta{\l}{\u\i}e {\O}ctave - Pauline Qu\^eneau Roxanne Sabine T\~a{\'\j}a Ur\v{s}ula - Vivian Wendy Xanthippe Yv{\o}nne Z\"azilie\par} -\def\punct{\par\dopunct{min}\dopunct{pig}\dopunct{hid} - \dopunct{HIE}\dopunct{TIP}\dopunct{fluff} - \$1,234.56 + 7/8 = 9\% @ \#0\par} -\def\dopunct#1{#1,\ #1:\ #1;\ `#1'\ ?`#1?\ !`#1!\ (#1)\ [#1]\ #1*\ #1.\par} - -\def\bigtest{\sample - hamburgefonstiv HAMBURGEFONSTIV\par - \names \punct \lowers \uppers \digits} - -\def\math{\textfont1=\testfont \skewchar\testfont=\skewtrial - \mathchardef\Gamma="100 \mathchardef\Delta="101 - \mathchardef\Theta="102 \mathchardef\Lambda="103 \mathchardef\Xi="104 - \mathchardef\Pi="105 \mathchardef\Sigma="106 \mathchardef\Upsilon="107 - \mathchardef\Phi="108 \mathchardef\Psi="109 \mathchardef\Omega="10A - \def\ii{i} \def\jj{j} - \def\\##1{|##1|+}\mathtrial - \def\\##1{##1_2+}\mathtrial - \def\\##1{##1^2+}\mathtrial - \def\\##1{##1/2+}\mathtrial - \def\\##1{2/##1+}\mathtrial - \def\\##1{##1,{}+}\mathtrial - \def\\##1{d##1+}\mathtrial - \let\ii=\imath \let\jj=\jmath \def\\##1{\hat##1+}\mathtrial} -\newcount\skewtrial \skewtrial='177 -\def\mathtrial{$\\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 \\a \\b \\c \\d \\e \\f \\g - \\h \\\ii \\\jj \\k \\l \\m \\n \\o \\p \\q \\r \\s \\t \\u \\v \\w \\x \\y - \\z \\\alpha \\\beta \\\gamma \\\delta \\\epsilon \\\zeta \\\eta \\\theta - \\\iota \\\kappa \\\lambda \\\mu \\\nu \\\xi \\\pi \\\rho \\\sigma \\\tau - \\\upsilon \\\phi \\\chi \\\psi \\\omega \\\vartheta \\\varpi \\\varphi - \\\Gamma \\\Delta \\\Theta \\\Lambda \\\Xi \\\Pi \\\Sigma \\\Upsilon - \\\Phi \\\Psi \\\Omega \\\partial \\\ell \\\wp$\par} -\def\mathsy{\begingroup\skewtrial='060 % for math symbol font tests - \def\mathtrial{$\\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$\par} - \math\endgroup} - -\def\oct#1{\hbox{\rm\'{}\kern-.2em\it#1\/\kern.05em}} % octal constant -\def\hex#1{\hbox{\rm\H{}\tt#1}} % hexadecimal constant -\def\setdigs#1"#2{\gdef\h{#2}% \h=hex prefix; \0\1=corresponding octal - \m=\n \divide\m by 64 \xdef\0{\the\m}% - \multiply\m by-64 \advance\m by\n \divide\m by 8 \xdef\1{\the\m}} -\def\testrow{\setbox0=\hbox{\penalty 1\def\\{\char"\h}% - \\0\\1\\2\\3\\4\\5\\6\\7\\8\\9\\A\\B\\C\\D\\E\\F% - \global\p=\lastpenalty}} % \p=1 if none of the characters exist -\def\oddline{\cr - \noalign{\nointerlineskip} - \multispan{19}\hrulefill& - \setbox0=\hbox{\lower 2.3pt\hbox{\hex{\h x}}}\smash{\box0}\cr - \noalign{\nointerlineskip}} -\newif\ifskipping -\def\evenline{\loop\skippingfalse - \ifnum\n<256 \m=\n \divide\m 16 \chardef\next=\m - \expandafter\setdigs\meaning\next \testrow - \ifnum\p=1 \skippingtrue \fi\fi - \ifskipping \global\advance\n 16 \repeat - \ifnum\n=256 \let\next=\endchart\else\let\next=\morechart\fi - \next} -\def\morechart{\cr\noalign{\hrule\penalty5000} - \chartline \oddline \m=\1 \advance\m 1 \xdef\1{\the\m} - \chartline \evenline} -\def\chartline{&\oct{\0\1x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&} -\def\chartstrut{\lower4.5pt\vbox to14pt{}} -\def\table{$$\global\n=0 - \halign to\hsize\bgroup - \chartstrut##\tabskip0pt plus10pt& - &\hfil##\hfil&\vrule##\cr - \lower6.5pt\null - &&&\oct0&&\oct1&&\oct2&&\oct3&&\oct4&&\oct5&&\oct6&&\oct7&\evenline} -\def\endchart{\cr\noalign{\hrule} - \raise11.5pt\null&&&\hex 8&&\hex 9&&\hex A&&\hex B& - &\hex C&&\hex D&&\hex E&&\hex F&\cr\egroup$$\par} -\def\:{\setbox0=\hbox{\noboundary\char\n\noboundary}% - \ifdim\ht0>7.5pt\reposition - \else\ifdim\dp0>2.5pt\reposition\fi\fi - \box0\global\advance\n 1 } -\def\reposition{\setbox0=\vbox{\kern2pt\box0}\dim=\dp0 - \advance\dim 2pt \dp0=\dim} -\def\centerlargechars{ - \def\reposition{\setbox0=\hbox{$\vcenter{\kern2pt\box0\kern2pt}$}}} - -\def\text{{\advance\baselineskip-4pt -\setbox0=\hbox{abcdefghijklmnopqrstuvwxyz} -\ifdim\hsize>2\wd0 \ifdim 15pc>2\wd0 \hsize=15pc \else \hsize=2\wd0 \fi\fi -On November 14, 1885, Senator \& Mrs.~Leland Stanford called -together at their San Francisco mansion the 24~prominent men who had -been chosen as the first trustees of The Leland Stanford Junior University. -They handed to the board the Founding Grant of the University, which they -had executed three days before. This document---with various amendments, -legislative acts, and court decrees---remains as the University's charter. -In bold, sweeping language it stipulates that the objectives of the University -are ``to qualify students for personal success and direct usefulness in life; -and to promote the publick welfare by exercising an influence in behalf of -humanity and civilization, teaching the blessings of liberty regulated by -law, and inculcating love and reverence for the great principles of -government as derived from the inalienable rights of man to life, liberty, -and the pursuit of happiness.'' \moretext -(!`THE DAZED BROWN FOX QUICKLY GAVE 12345--67890 JUMPS!)\par}} -\def\moretext{?`But aren't Kafka's Schlo{\ss} and {\AE}sop's {\OE}uvres -often na{\"\i}ve vis-\`a-vis the d{\ae}monic ph{\oe}nix's official r\^ole -in fluffy souffl\'es? } -\def\omitaccents{\let\moretext=\relax} - -\def\sample{\table\text} - -\ifx\noinit!\else\init\fi diff --git a/Master/texmf-dist/tex/plain/base/webmac.tex b/Master/texmf-dist/tex/plain/base/webmac.tex deleted file mode 100644 index 5ca707bb9b2..00000000000 --- a/Master/texmf-dist/tex/plain/base/webmac.tex +++ /dev/null @@ -1,206 +0,0 @@ -% standard macros for WEB listings (in addition to PLAIN.TEX) -\xdef\fmtversion{\fmtversion+WEBMAC4.1} % identifies current set of macros -\parskip 0pt % no stretch between paragraphs -\parindent 1em % for paragraphs and for the first line of Pascal text - -\font\eightrm=cmr8 \let\sc=\eightrm % NOT a caps-and-small-caps font! -\let\mainfont=\tenrm -\font\titlefont=cmr7 scaled\magstep4 % title on the contents page -\font\ttitlefont=cmtt10 scaled\magstep2 % typewriter type in title -\font\tentex=cmtex10 % TeX extended character set (used in strings) -\fontdimen7\tentex=0pt % no extra space after punctuation - -\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers -\def\|#1{\hbox{$#1$}} % one-letter identifiers look a bit better this way -\def\{\hbox{\bf#1\/}} % boldface type for reserved words -\def\.#1{\hbox{\tentex % typewriter type for strings - \let\\=\BS % backslash in a string - \let\'=\RQ % right quote in a string - \let\`=\LQ % left quote in a string - \let\{=\LB % left brace in a string - \let\}=\RB % right brace in a string - \let\~=\TL % tilde in a string - \let\ =\SP % space in a string - \let\_=\UL % underline in a string - \let\&=\AM % ampersand in a string - #1}} -\def\#{\hbox{\tt\char`\#}} % parameter sign -\def\${\hbox{\tt\char`\$}} % dollar sign -\def\%{\hbox{\tt\char`\%}} % percent sign -\def\^{\ifmmode\mathchar"222 \else\char`^ \fi} % pointer or hat -% circumflex accents can be obtained from \^^D instead of \^ -\def\AT!{@} % at sign for control text - -\chardef\AM=`\& % ampersand character in a string -\chardef\BS=`\\ % backslash in a string -\chardef\LB=`\{ % left brace in a string -\def\LQ{{\tt\char'22}} % left quote in a string -\chardef\RB=`\} % right brace in a string -\def\RQ{{\tt\char'23}} % right quote in a string -\def\SP{{\tt\char`\ }} % (visible) space in a string -\chardef\TL=`\~ % tilde in a string -\chardef\UL=`\_ % underline character in a string - -\newbox\bak \setbox\bak=\hbox to -1em{} % backspace one em -\newbox\bakk\setbox\bakk=\hbox to -2em{} % backspace two ems - -\newcount\ind % current indentation in ems -\def\1{\global\advance\ind by1\hangindent\ind em} % indent one more notch -\def\2{\global\advance\ind by-1} % indent one less notch -\def\3#1{\hfil\penalty#10\hfilneg} % optional break within a statement -\def\4{\copy\bak} % backspace one notch -\def\5{\hfil\penalty-1\hfilneg\kern2.5em\copy\bakk\ignorespaces}% optional break -\def\6{\ifmmode\else\par % forced break - \hangindent\ind em\noindent\kern\ind em\copy\bakk\ignorespaces\fi} -\def\7{\Y\6} % forced break and a little extra space - -\let\yskip=\smallskip -\def\to{\mathrel{.\,.}} % double dot, used only in math mode -\def\note#1#2.{\Y\noindent{\hangindent2em\baselineskip10pt\eightrm#1~#2.\par}} -\def\lapstar{\rlap{*}} -\def\startsection{\Q\noindent{\let\*=\lapstar\bf\modstar.\quad}} -\def\defin#1{\global\advance\ind by 2 \1\&{#1 }} % begin `define' or `format' -\def\A{\note{See also section}} % crossref for doubly defined section name -\def\As{\note{See also sections}} % crossref for multiply defined section name -\def\B{\mathopen{\.{@\{}}} % begin controlled comment -\def\C#1{\ifmmode\gdef\XX{\null$\null}\else\gdef\XX{}\fi % Pascal comments - \XX\hfil\penalty-1\hfilneg\quad$\{\,$#1$\,\}$\XX} -\def\D{\defin{define}} % macro definition -\def\E{\cdot10^} % exponent in floating point constant -\def\ET{ and~} % conjunction between two section numbers -\def\ETs{, and~} % conjunction between the last two of several section numbers -\def\F{\defin{format}} % format definition -\let\G=\ge % greater than or equal sign -\def\H#1{\hbox{\rm\char"7D\tt#1}} % hexadecimal constant -\let\I=\ne % unequal sign -\def\J{\.{@\&}} % TANGLE's join operation -\let\K=\gets % left arrow -\let\L=\le % less than or equal sign -\outer\def\M#1.{\MN#1.\ifon\vfil\penalty-100\vfilneg % beginning of section - \vskip12ptminus3pt\startsection\ignorespaces} -\outer\def\N#1.#2.{\MN#1.\vfil\eject % beginning of starred section - \def\rhead{\uppercase{\ignorespaces#2}} % define running headline - \message{*\modno} % progress report - \edef\next{\write\cont{\Z{#2}{\modno}{\the\pageno}}}\next % to contents file - \ifon\startsection{\bf\ignorespaces#2.\quad}\ignorespaces} -\def\MN#1.{\par % common code for \M, \N - {\xdef\modstar{#1}\let\*=\empty\xdef\modno{#1}} - \ifx\modno\modstar \onmaybe \else\ontrue \fi \mark{\modno}} -\def\O#1{\hbox{\rm\char'23\kern-.2em\it#1\/\kern.05em}} % octal constant -\def\P{\rightskip=0pt plus 100pt minus 10pt % go into Pascal mode - \sfcode`;=3000 - \pretolerance 10000 - \hyphenpenalty 10000 \exhyphenpenalty 10000 - \global\ind=2 \1\ \unskip} -\def\Q{\rightskip=0pt % get out of Pascal mode - \sfcode`;=1500 \pretolerance 200 \hyphenpenalty 50 \exhyphenpenalty 50 } -\let\R=\lnot % logical not -\let\S=\equiv % equivalence sign -\def\T{\mathclose{\.{@\}}}} % terminate controlled comment -\def\U{\note{This code is used in section}} % crossref for use of a section -\def\Us{\note{This code is used in sections}} % crossref for uses of a section -\let\V=\lor % logical or -\let\W=\land % logical and -\def\X#1:#2\X{\ifmmode\gdef\XX{\null$\null}\else\gdef\XX{}\fi % section name - \XX$\langle\,$#2{\eightrm\kern.5em#1}$\,\rangle$\XX} -\def\Y{\par\yskip} -\let\Z=\let % now you can \send the control sequence \Z -\def\){\hbox{\.{@\$}}} % sign for string pool check sum -\def\]{\hbox{\.{@\\}}} % sign for forced line break -\def\=#1{\kern2pt\hbox{\vrule\vtop{\vbox{\hrule - \hbox{\strut\kern2pt\.{#1}\kern2pt}} - \hrule}\vrule}\kern2pt} % verbatim string -\let\~=\ignorespaces -\let\*=* - -\def\onmaybe{\let\ifon=\maybe} \let\maybe=\iftrue -\newif\ifon \newif\iftitle \newif\ifpagesaved -\def\lheader{\mainfont\the\pageno\eightrm\qquad\rhead\hfill\title\qquad - \tensy x\mainfont\topmark} % top line on left-hand pages -\def\rheader{\tensy x\mainfont\topmark\eightrm\qquad\title\hfill\rhead - \qquad\mainfont\the\pageno} % top line on right-hand pages -\def\page{\box255 } -\def\normaloutput#1#2#3{\ifodd\pageno\hoffset=\pageshift\fi - \shipout\vbox{ - \vbox to\fullpageheight{ - \iftitle\global\titlefalse - \else\hbox to\pagewidth{\vbox to10pt{}\ifodd\pageno #3\else#2\fi}\fi - \vfill#1}} % parameter #1 is the page itself - \global\advance\pageno by1} - -\def\rhead{\.{WEB} OUTPUT} % this running head is reset by starred sections -\def\title{} % an optional title can be set by the user -\def\topofcontents{\centerline{\titlefont\title} - \vfill} % this material will start the table of contents page -\def\botofcontents{\vfill} % this material will end the table of contents page -\def\contentspagenumber{0} % default page number for table of contents -\newdimen\pagewidth \pagewidth=6.5in % the width of each page -\newdimen\pageheight \pageheight=8.7in % the height of each page -\newdimen\fullpageheight \fullpageheight=9in % page height including headlines -\newdimen\pageshift \pageshift=0in % shift righthand pages wrt lefthand ones -\def\magnify#1{\mag=#1\pagewidth=6.5truein\pageheight=8.7truein - \fullpageheight=9truein\setpage} -\def\setpage{\hsize\pagewidth\vsize\pageheight} % use after changing page size -\def\contentsfile{CONTENTS} % file that gets table of contents info -\def\readcontents{\input CONTENTS} - -\newwrite\cont -\output{\setbox0=\page % the first page is garbage - \openout\cont=\contentsfile - \global\output{\normaloutput\page\lheader\rheader}} -\setpage -\vbox to \vsize{} % the first \topmark won't be null - -\def\ch{\note{The following sections were changed by the change file:} - \let\*=\relax} -\newbox\sbox % saved box preceding the index -\newbox\lbox % lefthand column in the index -\def\inx{\par\vskip6pt plus 1fil % we are beginning the index - \write\cont{} % ensure that the contents file isn't empty - \closeout\cont % the contents information has been fully gathered - \output{\ifpagesaved\normaloutput{\box\sbox}\lheader\rheader\fi - \global\setbox\sbox=\page \global\pagesavedtrue} - \pagesavedfalse \eject % eject the page-so-far and predecessors - \setbox\sbox\vbox{\unvbox\sbox} % take it out of its box - \vsize=\pageheight \advance\vsize by -\ht\sbox % the remaining height - \hsize=.5\pagewidth \advance\hsize by -10pt - % column width for the index (20pt between cols) - \parfillskip 0pt plus .6\hsize % try to avoid almost empty lines - \def\lr{L} % this tells whether the left or right column is next - \output{\if L\lr\global\setbox\lbox=\page \gdef\lr{R} - \else\normaloutput{\vbox to\pageheight{\box\sbox\vss - \hbox to\pagewidth{\box\lbox\hfil\page}}}\lheader\rheader - \global\vsize\pageheight\gdef\lr{L}\global\pagesavedfalse\fi} - \message{Index:} - \parskip 0pt plus .5pt - \outer\def\:##1, {\par\hangindent2em\noindent##1:\kern1em} % index entry - \let\ttentry=\. \def\.##1{\ttentry{##1\kern.2em}} % give \tt a little room - \def\[##1]{$\underline{##1}$} % underlined index item - \rm \rightskip0pt plus 2.5em \tolerance 10000 \let\*=\lapstar - \hyphenpenalty 10000 \parindent0pt} -\def\fin{\par\vfill\eject % this is done when we are ending the index - \ifpagesaved\null\vfill\eject\fi % output a null index column - \if L\lr\else\null\vfill\eject\fi % finish the current page - \parfillskip 0pt plus 1fil - \def\rhead{NAMES OF THE SECTIONS} - \message{Section names:} - \output{\normaloutput\page\lheader\rheader} - \setpage - \def\note##1##2.{\hfil\penalty-1\hfilneg\quad{\eightrm##1~##2.}} - \linepenalty=10 % try to conserve lines - \def\U{\note{Used in section}} % crossref for use of a section - \def\Us{\note{Used in sections}} % crossref for uses of a section - \def\:{\par\hangindent 2em}\let\*=*\let\.=\ttentry} -\def\con{\par\vfill\eject % finish the section names - \rightskip 0pt \hyphenpenalty 50 \tolerance 200 - \setpage - \output{\normaloutput\page\lheader\rheader} - \titletrue % prepare to output the table of contents - \pageno=\contentspagenumber \def\rhead{TABLE OF CONTENTS} - \message{Table of contents:} - \topofcontents - \line{\hfil Section\hbox to3em{\hss Page}} - \def\Z##1##2##3{\line{\ignorespaces##1 - \leaders\hbox to .5em{.\hfil}\hfil\ ##2\hbox to3em{\hss##3}}} - \readcontents\relax % read the contents info - \botofcontents \end} % print the contents page(s) and terminate diff --git a/Master/texmf-dist/tex/plain/knuth-lib/manmac.tex b/Master/texmf-dist/tex/plain/knuth-lib/manmac.tex new file mode 100644 index 00000000000..ac0c3756124 --- /dev/null +++ b/Master/texmf-dist/tex/plain/knuth-lib/manmac.tex @@ -0,0 +1,715 @@ +% Macros for The TeXbook + +\catcode`@=11 % borrow the private macros of PLAIN (with care) + +\font\tentex=cmtex10 + +\font\inchhigh=cminch +\font\titlefont=cmssdc10 at 40pt + +\font\ninerm=cmr9 +\font\eightrm=cmr8 +\font\sixrm=cmr6 + +\font\ninei=cmmi9 +\font\eighti=cmmi8 +\font\sixi=cmmi6 +\skewchar\ninei='177 \skewchar\eighti='177 \skewchar\sixi='177 + +\font\ninesy=cmsy9 +\font\eightsy=cmsy8 +\font\sixsy=cmsy6 +\skewchar\ninesy='60 \skewchar\eightsy='60 \skewchar\sixsy='60 + +\font\eightss=cmssq8 + +\font\eightssi=cmssqi8 + +\font\ninebf=cmbx9 +\font\eightbf=cmbx8 +\font\sixbf=cmbx6 + +\font\ninett=cmtt9 +\font\eighttt=cmtt8 + +\hyphenchar\tentt=-1 % inhibit hyphenation in typewriter type +\hyphenchar\ninett=-1 +\hyphenchar\eighttt=-1 + +\font\ninesl=cmsl9 +\font\eightsl=cmsl8 + +\font\nineit=cmti9 +\font\eightit=cmti8 + +\font\tenu=cmu10 % unslanted text italic +\font\magnifiedfiverm=cmr5 at 10pt +\font\manual=manfnt % font used for the METAFONT logo, etc. +\font\cmman=cmman % font used for miscellaneous Computer Modern variations + +\newskip\ttglue +\def\tenpoint{\def\rm{\fam0\tenrm}% + \textfont0=\tenrm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm + \textfont1=\teni \scriptfont1=\seveni \scriptscriptfont1=\fivei + \textfont2=\tensy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy + \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex + \def\it{\fam\itfam\tenit}% + \textfont\itfam=\tenit + \def\sl{\fam\slfam\tensl}% + \textfont\slfam=\tensl + \def\bf{\fam\bffam\tenbf}% + \textfont\bffam=\tenbf \scriptfont\bffam=\sevenbf + \scriptscriptfont\bffam=\fivebf + \def\tt{\fam\ttfam\tentt}% + \textfont\ttfam=\tentt + \tt \ttglue=.5em plus.25em minus.15em + \normalbaselineskip=12pt + \def\MF{{\manual META}\-{\manual FONT}}% + \let\sc=\eightrm + \let\big=\tenbig + \setbox\strutbox=\hbox{\vrule height8.5pt depth3.5pt width\z@}% + \normalbaselines\rm} + +\def\ninepoint{\def\rm{\fam0\ninerm}% + \textfont0=\ninerm \scriptfont0=\sixrm \scriptscriptfont0=\fiverm + \textfont1=\ninei \scriptfont1=\sixi \scriptscriptfont1=\fivei + \textfont2=\ninesy \scriptfont2=\sixsy \scriptscriptfont2=\fivesy + \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex + \def\it{\fam\itfam\nineit}% + \textfont\itfam=\nineit + \def\sl{\fam\slfam\ninesl}% + \textfont\slfam=\ninesl + \def\bf{\fam\bffam\ninebf}% + \textfont\bffam=\ninebf \scriptfont\bffam=\sixbf + \scriptscriptfont\bffam=\fivebf + \def\tt{\fam\ttfam\ninett}% + \textfont\ttfam=\ninett + \tt \ttglue=.5em plus.25em minus.15em + \normalbaselineskip=11pt + \def\MF{{\manual hijk}\-{\manual lmnj}}% + \let\sc=\sevenrm + \let\big=\ninebig + \setbox\strutbox=\hbox{\vrule height8pt depth3pt width\z@}% + \normalbaselines\rm} + +\def\eightpoint{\def\rm{\fam0\eightrm}% + \textfont0=\eightrm \scriptfont0=\sixrm \scriptscriptfont0=\fiverm + \textfont1=\eighti \scriptfont1=\sixi \scriptscriptfont1=\fivei + \textfont2=\eightsy \scriptfont2=\sixsy \scriptscriptfont2=\fivesy + \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex + \def\it{\fam\itfam\eightit}% + \textfont\itfam=\eightit + \def\sl{\fam\slfam\eightsl}% + \textfont\slfam=\eightsl + \def\bf{\fam\bffam\eightbf}% + \textfont\bffam=\eightbf \scriptfont\bffam=\sixbf + \scriptscriptfont\bffam=\fivebf + \def\tt{\fam\ttfam\eighttt}% + \textfont\ttfam=\eighttt + \tt \ttglue=.5em plus.25em minus.15em + \normalbaselineskip=9pt + \def\MF{{\manual opqr}\-{\manual stuq}}% + \let\sc=\sixrm + \let\big=\eightbig + \setbox\strutbox=\hbox{\vrule height7pt depth2pt width\z@}% + \normalbaselines\rm} + +\def\tenmath{\tenpoint\fam-1 } % use after $ in ninepoint sections +\def\tenbig#1{{\hbox{$\left#1\vbox to8.5pt{}\right.\n@space$}}} +\def\ninebig#1{{\hbox{$\textfont0=\tenrm\textfont2=\tensy + \left#1\vbox to7.25pt{}\right.\n@space$}}} +\def\eightbig#1{{\hbox{$\textfont0=\ninerm\textfont2=\ninesy + \left#1\vbox to6.5pt{}\right.\n@space$}}} + +% Page layout +\newdimen\pagewidth \newdimen\pageheight \newdimen\ruleht +\hsize=29pc \vsize=44pc \maxdepth=2.2pt \parindent=3pc +\pagewidth=\hsize \pageheight=\vsize \ruleht=.5pt +\abovedisplayskip=6pt plus 3pt minus 1pt +\belowdisplayskip=6pt plus 3pt minus 1pt +\abovedisplayshortskip=0pt plus 3pt +\belowdisplayshortskip=4pt plus 3pt + +%\newinsert\footins +\def\footnote#1{\edef\@sf{\spacefactor\the\spacefactor}#1\@sf + \insert\footins\bgroup\eightpoint + \interlinepenalty100 \let\par=\endgraf + \leftskip=\z@skip \rightskip=\z@skip + \splittopskip=10pt plus 1pt minus 1pt \floatingpenalty=20000 + \smallskip\item{#1}\bgroup\strut\aftergroup\@foot\let\next} +\skip\footins=12pt plus 2pt minus 4pt % space added when footnote is present +%\count\footins=1000 % footnote magnification factor (1 to 1) +\dimen\footins=30pc % maximum footnotes per page + +\newinsert\margin +\dimen\margin=\maxdimen +%\count\margin=0 \skip\margin=0pt % marginal inserts take up no space + +\newif\iftitle +\def\titlepage{\global\titletrue} % for pages without headlines +\def\rhead{} % \rhead contains the running headline + +\def\leftheadline{\hbox to \pagewidth{\spaceskip=0pt + \vbox to 10pt{}% strut to position the baseline + \llap{\tenbf\folio\kern1pc}% folio to left of text + \tenit\rhead\hfil% running head flush left + }} +\def\rightheadline{\hbox to \pagewidth{\spaceskip=0pt + \vbox to 10pt{}% strut to position the baseline + \hfil\tenit\rhead\/% running head flush right + \rlap{\kern1pc\tenbf\folio}% folio to right of text + }} + +\def\onepageout#1{\shipout\vbox{ % here we define one page of output + \offinterlineskip % butt the boxes together + \vbox to 3pc{ % this part goes on top of the 44pc pages + \iftitle % the next is used for title pages + \global\titlefalse % reset the titlepage switch + \setcornerrules % for camera alignment + \else\ifodd\pageno \rightheadline\else\leftheadline\fi\fi + \vfill} % this completes the \vbox to 3pc + \vbox to \pageheight{ + \ifvoid\margin\else % marginal info is present + \rlap{\kern31pc\vbox to\z@{\kern4pt\box\margin \vss}}\fi + #1 % now insert the main information + \ifvoid\footins\else % footnote info is present + \vskip\skip\footins \kern-3pt + \hrule height\ruleht width\pagewidth \kern-\ruleht \kern3pt + \unvbox\footins\fi + \boxmaxdepth=\maxdepth + } % this completes the \vbox to \pageheight + } + \advancepageno} + +\def\setcornerrules{\hbox to \pagewidth{\vrule width 1pc height\ruleht + \hfil \vrule width 1pc} + \hbox to \pagewidth{\llap{\sevenrm(page \folio)\kern1pc}% + \vrule height1pc width\ruleht depth\z@ + \hfil \vrule width\ruleht depth\z@}} + +\output{\onepageout{\unvbox255}} + +\newbox\partialpage +\def\begindoublecolumns{\begingroup + \output={\global\setbox\partialpage=\vbox{\unvbox255\bigskip}}\eject + \output={\doublecolumnout} \hsize=14pc \vsize=89pc} +\def\enddoublecolumns{\output={\balancecolumns}\eject + \endgroup \pagegoal=\vsize} + +\def\doublecolumnout{\splittopskip=\topskip \splitmaxdepth=\maxdepth + \dimen@=44pc \advance\dimen@ by-\ht\partialpage + \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ + \onepageout\pagesofar + \unvbox255 \penalty\outputpenalty} +\def\pagesofar{\unvbox\partialpage + \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}} +\def\balancecolumns{\setbox0=\vbox{\unvbox255} \dimen@=\ht0 + \advance\dimen@ by\topskip \advance\dimen@ by-\baselineskip + \divide\dimen@ by2 \splittopskip=\topskip + {\vbadness=10000 \loop \global\setbox3=\copy0 + \global\setbox1=\vsplit3 to\dimen@ + \ifdim\ht3>\dimen@ \global\advance\dimen@ by1pt \repeat} + \setbox0=\vbox to\dimen@{\unvbox1} + \setbox2=\vbox to\dimen@{\unvbox3} + \pagesofar} + +% To produce only a subset of pages, put the page numbers on separate +% lines in a file called pages.tex +\let\Shipout=\shipout +\newread\pages \newcount\nextpage \openin\pages=pages +\def\getnextpage{\ifeof\pages\else + {\endlinechar=-1\read\pages to\next + \ifx\next\empty % in this case we should have eof now + \else\global\nextpage=\next\fi}\fi} +\ifeof\pages\else\message{OK, I'll ship only the requested pages!} + \getnextpage\fi +\def\shipout{\ifeof\pages\let\next=\Shipout + \else\ifnum\pageno=\nextpage\getnextpage\let\next=\Shipout + \else\let\next=\Tosspage\fi\fi \next} +\newbox\garbage \def\Tosspage{\deadcycles=0\setbox\garbage=} + +% Chapter formatting +% The preface and table of contents are formatted in place, not here + +\newcount\exno % for the number of exercises in the current chapter +\newcount\subsecno % for the number of subsections in the current chapter + +\def\beginchapter#1 #2#3. #4\par{\global\exno=0 + \subsecno=0 + \def\chapno{#2#3} + \ifodd\pageno + \errmessage{You had too much text on that last page; I'm backing up} + \advance\pageno by-1 \fi + \titlepage + \def\\{ } % \\'s in the title will be treated as spaces + \message{#1 #2#3:} % show the chapter title on the terminal + \def\MF{{\manual 89:;<=>:}} % slant the logo + \xdef\rhead{#1 #2#3: #4\unskip} + {\def\TeX{T\kern-.2em\lower.5ex\hbox{E}\kern-.06em X} + \def\MF{{\vbox to30pt{}\manual ()*+,-.*}} + \def\\{#3} \advance\hsize by -18mm + \ifx\empty\\ \rightline{\inchhigh #2\kern-.04em} + \else\rightline{\inchhigh #2\kern-.06em#3\kern-.04em}\fi + \vskip 1.75pc + \baselineskip 36pt \lineskiplimit \titlelsl \lineskip 12pt + \let\\=\cr % now the \\'s are line dividers + \halign{\line{\titlefont\hss##}\\#4\unskip\\} + \vfill\eject} % output the chapter title page + \tenpoint + \noindent\ignorespaces} % the first paragraph of a chapter is not indented +\newdimen\titlelsl \titlelsl=1pt + +\outer\def\endchapter{\ifodd\pageno \else\vfill\eject\null\fi + \begingroup\bigskip\vfill % beginning of the quotes + \def\eject{\endgroup\eject} + \def\par{\ifhmode\/\endgraf\fi}\obeylines + \def\TeX{T\kern-.2em\lower.5ex\hbox{E}\kern-.000em X} + \def\MF{{\manual opqr}\-{\manual stuq}} + \eightpoint \let\tt=\ninett + \baselineskip 10pt + \parfillskip \z@ + \interlinepenalty 10000 + \leftskip \z@ plus 40pc minus \parindent + \let\rm=\eightss \let\sl=\eightssi + \everypar{\sl}} +\def\author#1(#2){\smallskip\noindent\rm--- #1\unskip\enspace(#2)} + +\def\dbend{{\manual\char127}} % dangerous bend sign +\def\d@nger{\medbreak\begingroup\clubpenalty=10000 + \def\par{\endgraf\endgroup\medbreak} \noindent\hang\hangafter=-2 + \hbox to0pt{\hskip-\hangindent\dbend\hfill}\ninepoint} +\outer\def\danger{\d@nger} +\def\dd@nger{\medbreak\begingroup\clubpenalty=10000 + \def\par{\endgraf\endgroup\medbreak} \noindent\hang\hangafter=-2 + \hbox to0pt{\hskip-\hangindent\dbend\kern1pt\dbend\hfill}\ninepoint} +\outer\def\ddanger{\dd@nger} +\def\enddanger{\endgraf\endgroup} % omits the \medbreak + +\outer\def\subsection#1. {\medbreak\advance\subsecno by 1 + \noindent{\it \the\subsecno.\enspace#1.\enspace}} +\def\ansno#1.#2:{\medbreak\noindent + \hbox to\parindent{\bf\hss#1.#2.\enspace}\ignorespaces} + +% Composition macros +\hyphenation{man-u-script man-u-scripts ap-pen-dix xscaled} + +\def\AmSTeX{$\cal A\kern-.1667em\lower.5ex\hbox{$\cal M$}\kern-.075em + S$-\TeX} +\def\bull{\vrule height .9ex width .8ex depth -.1ex } % square bullet +\def\SS{{\it SS}} % scriptscript style +\def\|{\leavevmode\hbox{\tt\char`\|}} % vertical line +\def\dn{\leavevmode\hbox{\tt\char'14}} % downward arrow +\def\up{\leavevmode\hbox{\tt\char'13}} % upward arrow +\def\]{\leavevmode\hbox{\tt\char`\ }} % visible space + +\def\pt{\,{\rm pt}} % units of points, in math formulas +\def\em{\,{\rm em}} % units of ems, in math formulas +\def\<#1>{\leavevmode\hbox{$\langle$#1\/$\rangle$}} % syntactic quantity +\def\oct#1{\hbox{\rm\'{}\kern-.2em\it#1\/\kern.05em}} % octal constant +\def\hex#1{\hbox{\rm\H{}\tt#1}} % hexadecimal constant +\def\cstok#1{\leavevmode\thinspace\hbox{\vrule\vtop{\vbox{\hrule\kern1pt + \hbox{\vphantom{\tt/}\thinspace{\tt#1}\thinspace}} + \kern1pt\hrule}\vrule}\thinspace} % control sequence token + +{\obeyspaces\gdef {\ }} +\def\parbreak{\hfil\break\indent\strut} +\def\stretch{\nobreak\hskip0pt plus2pt\relax} + +% macros for non-centered displays +\outer\def\begindisplay{\obeylines\startdisplay} +{\obeylines\gdef\startdisplay#1 + {\catcode`\^^M=5$$#1\halign\bgroup\indent##\hfil&&\qquad##\hfil\cr}} +\outer\def\enddisplay{\crcr\egroup$$} + +% (the following \begin...\end-type macros do not appear in Appendix E) +% macros for demonstrating math constructions +\outer\def\beginmathdemo{$$\advance\baselineskip by2pt + \halign\bgroup\indent\hbox to 160pt{##\hfil}&$##$\hfil\cr\noalign{\vskip-2pt}} +\outer\def\begindisplaymathdemo {$$\advance\baselineskip by15pt + \halign\bgroup\indent\hbox to 160pt{##\hfil}&$\displaystyle{##}$\hfil\cr + \noalign{\vskip-15pt}} +\outer\def\beginlongmathdemo{$$\advance\baselineskip by2pt + \halign\bgroup\indent\hbox to 210pt{##\hfil}&$##$\hfil\cr\noalign{\vskip-2pt}} +\outer\def\beginlongdisplaymathdemo {$$\advance\baselineskip by15pt + \halign\bgroup\indent\hbox to 210pt{##\hfil}&$\displaystyle{##}$\hfil\cr + \noalign{\vskip-15pt}} +\outer\def\endmathdemo{\egroup$$} + +% macros for font tables +\def\oddline#1{\cr + \noalign{\nointerlineskip} + \multispan{19}\hrulefill& + \setbox0=\hbox{\lower 2.3pt\hbox{\hex{#1x}}}\smash{\box0}\cr + \noalign{\nointerlineskip}} +\def\evenline{\cr\noalign{\hrule}} +\def\chartstrut{\lower4.5pt\vbox to14pt{}} +\def\beginchart#1{$$\postdisplaypenalty=-10000 \global\count@=0 #1 + \halign to\hsize\bgroup + \chartstrut##\tabskip0pt plus10pt& + &\hfil##\hfil&\vrule##\cr + \lower6.5pt\null + &&&\oct0&&\oct1&&\oct2&&\oct3&&\oct4&&\oct5&&\oct6&&\oct7&\evenline} +\def\endchart{\raise11.5pt\null&&&\hex 8&&\hex 9&&\hex A&&\hex B& + &\hex C&&\hex D&&\hex E&&\hex F&\cr\egroup$$} +\def\:{\setbox0=\hbox{\char\count@}% + \ifdim\ht0>7.5pt\reposition + \else\ifdim\dp0>2.5pt\reposition\fi\fi + \box0\global\advance\count@ by1 } +\def\reposition{\setbox0=\hbox{$\vcenter{\kern2pt\box0\kern2pt}$}} +\def\normalchart{% + &\oct{00x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline0 + &\oct{01x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{02x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline1 + &\oct{03x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{04x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline2 + &\oct{05x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{06x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline3 + &\oct{07x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{10x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline4 + &\oct{11x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{12x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline5 + &\oct{13x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{14x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline6 + &\oct{15x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline + &\oct{16x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\oddline7 + &\oct{17x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&\evenline} + +% (now Appendix E resumes again) +% macros for verbatim scanning +\chardef\other=12 +\def\ttverbatim{\begingroup + \catcode`\\=\other + \catcode`\{=\other + \catcode`\}=\other + \catcode`\$=\other + \catcode`\&=\other + \catcode`\#=\other + \catcode`\%=\other + \catcode`\~=\other + \catcode`\_=\other + \catcode`\^=\other + \obeyspaces \obeylines \tt} + +\outer\def\begintt{$$\let\par=\endgraf \ttverbatim \parskip=\z@ + \catcode`\|=0 \rightskip-5pc \ttfinish} +{\catcode`\|=0 |catcode`|\=\other % | is temporary escape character + |obeylines % end of line is active + |gdef|ttfinish#1^^M#2\endtt{#1|vbox{#2}|endgroup$$}} + +\catcode`\|=\active +{\obeylines \gdef|{\ttverbatim \spaceskip\ttglue \let^^M=\ \let|=\endgroup}} + +% macros for syntax rules (again, not in Appendix E) +\def\[#1]{\silenttrue\xref|#1|\thinspace{\tt#1}\thinspace} % keyword in syntax +\def\beginsyntax{\endgraf\nobreak\medskip + \begingroup \catcode`<=13 \catcode`[=13 + \let\par=\endsyntaxline \obeylines} +\def\endsyntaxline{\futurelet\next\syntaxswitch} +\def\syntaxswitch{\ifx\next\<\let\next=\syntaxrule + \else\ifx\next\endsyntax\let\next=\endgroup + \else\let\next=\continuerule\fi\fi \next} +\def\continuerule{\hfil\break\indent\qquad} +\def\endsyntax{\medbreak\noindent} +{\catcode`<=13 \catcode`[=13 + \global\let<=\< \global\let[=\[ + \gdef\syntaxrule<#1>{\endgraf\indent\silentfalse\xref\<#1>}} +\def\is{\ $\longrightarrow$ } +\def\alt{\ $\vert$ } + +% macros to demarcate lines quoted from TeX source files +\def\beginlines{\par\begingroup\nobreak\medskip\parindent\z@ \obeylines + \hrule\kern1pt\nobreak \everypar{\strut}} +\def\endlines{\kern1pt\hrule\endgroup\medbreak\noindent} +\def\weakendlines{\kern1pt\hrule\endgroup\medskip\noindent} +\def\finalendlines{\kern1pt\hrule\endgroup\medbreak} + +\outer\def\exercise{\medbreak + \global\advance\exno by 1 + \noindent\llap{\manual\char'170\rm\kern.15em}% triangle in margin + {\ninebf EXERCISE \bf\chapno.\the\exno}\par\nobreak\noindent} +\def\dexercise{\global\advance\exno by 1 + \llap{\manual\char'170\rm\kern.15em}% triangle in indented space + {\eightbf EXERCISE \bf\chapno.\the\exno}\hfil\break} +\outer\def\dangerexercise{\d@nger \dexercise} +\outer\def\ddangerexercise{\dd@nger \dexercise} + +\newwrite\ans +\immediate\openout\ans=answers % file for answers to exercises +\outer\def\answer{\par\medbreak + \immediate\write\ans{} + \immediate\write\ans{\string\ansno\chapno.\the\exno:} + \copytoblankline} +\def\copytoblankline{\begingroup\setupcopy\copyans} +\def\setupcopy{\def\do##1{\catcode`##1=\other}\dospecials + \catcode`\|=\other \obeylines} +{\obeylines \gdef\copyans#1 + {\def\next{#1}% + \ifx\next\empty\let\next=\endgroup % + \else\immediate\write\ans{\next} \let\next=\copyans\fi\next}} + +% Editorial notes: some things to watch for. + +% f |\ and f ^|\ => insert \/ [e.g., if\/ |\hbox|...] +% appendi => check for \null [e.g., Appendix~B\null.] +% ly- => the hyphen is probably omittable +% ''. and '', => transpose to .'' and ,'' +% dgement => dgment +% in MFbook: f@' and \MF, and \MF. + +% Macros for drawing figures (not in Appendix E) +\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 } +% \makeblankbox puts rules at the edges of a blank box +% whose dimensions are those of \box0 (assuming nonnegative wd,ht,dp) +% #1 is rule thickness outside, #2 is rule thickness inside +\def\makeblankbox#1#2{\hbox{\lower\dp0\vbox{\hidehrule{#1}{#2}% + \kern-#1% overlap the rules at the corners + \hbox to\wd0{\hidevrule{#1}{#2}% + \raise\ht0\vbox to #1{}% set the vrule height + \lower\dp0\vtop to #1{}% set the vrule depth + \hfil\hidevrule{#2}{#1}}% + \kern-#1\hidehrule{#2}{#1}}}} +\def\maketypebox{\makeblankbox{0pt}{1pt}} +\def\makelightbox{\makeblankbox{.2pt}{.2pt}} + +% \box\bigdot is a null box with a bullet at its reference point +\newbox\bigdot \newbox\smalldot +\setbox0=\hbox{$\vcenter{}$} % \ht0 is the axis height +\setbox1=\hbox to\z@{$\hss\bullet\hss$} % bullet is centered on the axis +\setbox\bigdot=\vbox to\z@{\kern-\ht1 \kern\ht0 \box1 \vss} +\setbox1=\hbox to\z@{$\hss\cdot\hss$} % cdot is centered on the axis +\setbox\smalldot=\vbox to\z@{\kern-\ht1 \kern\ht0 \box1 \vss} + +% \arrows makes things like <--- text ---> +\def\arrows#1#2{% #1=width, #2=text + {\setbox0=\hbox{$\mkern-2mu\mathord-\mkern-2mu$} + \hbox to #1{\kern-.055556em$\leftarrow\mkern-6mu$% + \cleaders\copy0\hfil + \kern.4em #2\kern.4em + \cleaders\copy0\hfil + $\mkern-6mu\rightarrow$\kern-.055556em}}} + +% \samplebox makes the outline of a box, with big dot at reference point +\def\samplebox#1#2#3#4{% #1=ht, #2=dp, #3=wd, #4=text + {\setbox0=\vtop{\vbox to #1{\hbox to #3{}\vss} + \nointerlineskip + \vbox to #2{}}% now \box0 has the desired ht, dp, and wd + \hbox{\copy\bigdot + \vrule height.2pt depth.2pt width#3% + \kern-#3% + \makelightbox + \kern-#3% + \raise#1\vbox{\hbox to #3{\hss#4\hss} + \kern 3pt}}}} + +% \sampleglue makes glue between sample boxes +\newdimen\varunit +\varunit=\hsize \advance\varunit by-2\parindent +\divide\varunit by 58 % illustrations in Chapter 12 +\def\sampleglue#1#2{% #1=width, #2=text + \vtop{\hbox to #1{\xleaders\hbox to .5\varunit{\hss\copy\smalldot\hss}\hfil} + \kern3pt + \tabskip \z@ plus 1fil + \halign to #1{\hfil##\cr#2\cr}}} + +% Indexing macros +\newif\ifproofmode +\proofmodetrue % this should be false when making camera-ready copy +\newwrite\inx +\immediate\openout\inx=index % file for index reminders +\newif\ifsilent +\def\specialhat{\ifmmode\def\next{^}\else\let\next=\beginxref\fi\next} +\def\beginxref{\futurelet\next\beginxrefswitch} +\def\beginxrefswitch{\ifx\next\specialhat\let\next=\silentxref + \else\silentfalse\let\next=\xref\fi \next} +\catcode`\^=\active \let ^=\specialhat +\def\silentxref^{\silenttrue\xref} + +\def\marginstyle{\vrule height6pt depth2pt width\z@ \sevenrm} + +\chardef\bslash=`\\ +\def\xref{\futurelet\next\xrefswitch} +\def\xrefswitch{\begingroup + \ifx\next|\aftergroup\vxref % case 1 or 2, |arg| or |\arg| + \else\ifx\next\<\aftergroup\anglexref % case 3, "\" means angle brackets + \else\aftergroup\normalxref \fi\fi\endgroup} % case 0, "{arg}" +\def\vxref|{\catcode`\\=\active \futurelet\next\vxrefswitch} +\def\vxrefswitch#1|{\catcode`\\=0 + \ifx\next\empty\def\xreftype{2}% + \def\next{{\tt\bslash\text}}% type 2, |\arg| + \else\def\xreftype{1}\def\next{{\tt\text}}\fi % type 1, |arg| + \edef\text{#1}\makexref} +{\catcode`\|=0 \catcode`\\=\active |gdef\{}} +\def\anglexref\<#1>{\def\xreftype{3}\def\text{#1}% + \def\next{\<\text>}\makexref} +\def\normalxref#1{\def\xreftype{0}\def\text{#1}\let\next=\text\makexref} +\def\makexref{\ifproofmode\insert\margin{\hbox{\marginstyle\text}}% + \xdef\writeit{\write\inx{\text\space!\xreftype\space + \noexpand\number\pageno.}}\writeit + \else\ifhmode\kern\z@\fi\fi + \ifsilent\ignorespaces\else\next\fi} +% the \insert (which is done in proofmode only) suppresses hyphenation, +% so the \kern\z@ is put in to give the same effect in non-proofmode. + +% Internal cross references that may change +\def\sesame{61} % page number for Sesame Street quote +\def\bmiexno{20} % exercise number for bold math italic +\def\punishexno{1} % exercise number for `punishment' +\def\fracexno{6} % exercise number for `\frac' +\def\vshippage{31} % error message from `\vship' +\def\storypage{24} % listing of story.tex +\def\metaT{4} % exercise number for T of METAFONT +\def\xwhat{2} % exercise number for x3:=whatever +\def\Xwhat{2} % exercise number for whatever itself + +\def\checkequals#1#2{\ifnum#1=#2\else + \errmessage{Redefine \string#1 to be \the#2}\fi} + +% Things for The METAFONTbook only +\ifx\MFmanual\!\else\endinput\fi + +\def\!{\kern-.03em\relax} + +\def\frac#1/#2{\leavevmode\kern.1em + \raise.5ex\hbox{\the\scriptfont0 #1}\kern-.1em + /\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}} + +\outer\def\displayfig #1 (#2){$$\advance\abovedisplayskip by 3pt + \leftline{\indent\figbox{#1}{3in}{#2}\vbox}$$} +\def\rightfig #1 (#2 x #3) ^#4 {% #2 wide and #3 deep, raised #4 + \strut\vadjust{\setbox0=\vbox to 0pt{\vss + \hbox to\pagewidth{\hfil + \raise #4\figbox{#1}{#2}{#3}\vtop \quad}} + \dp0=0pt \box0}} +\def\figbox#1#2#3#4{#4to#3{ % makes a box #2 wide and #3 deep + \ifproofmode\kern0pt\hrule\vfill + \hsize=#2 \baselineskip 6pt \fiverm\noindent\raggedright + (Figure #1 will be inserted here; too bad you can't see it now.) + \endgraf\vfill\hrule + \else\vfill\hbox to#2{}\fi}} + +\def\endsyntax{\begingroup\let\par=\endgraf\medbreak\endgroup\noindent} + +\let\BEGINCHAPTER=\beginchapter +\def\beginchapter{\titlelsl=1pt \BEGINCHAPTER} +\def\beginChapter{\titlelsl=2pt \BEGINCHAPTER} + +\def\decreasehsize #1 {\advance\hsize-#1} +\def\restorehsize{\hsize=\pagewidth} + +\catcode`\@=\active +\catcode`\"=\active +\def\ttverbatim{\begingroup \catcode`\@=\other \catcode`\"=\other + \catcode`\\=\other + \catcode`\{=\other + \catcode`\}=\other + \catcode`\$=\other + \catcode`\&=\other + \catcode`\#=\other + \catcode`\%=\other + \catcode`\~=\other + \catcode`\_=\other + \catcode`\^=\other + \obeyspaces \obeylines \tt} +\def\setupcopy{\def\do##1{\catcode`##1=\other}\dospecials + \catcode`\|=\other \catcode`\@=\other \catcode`\"=\other \obeylines} +\def\_{\leavevmode \kern.06em \vbox{\hrule width.3em}} +\def@#1@{\begingroup\def\_{\kern.04em + \vbox{\hrule width.3em height .6pt}\kern.08em}% + \ifmmode\mathop{\bf#1}\else\hbox{\bf#1\/}\fi\endgroup} +\def"#1"{\hbox{\it#1\/\kern.05em}} % italic type for identifiers +\def\xrefswitch{\begingroup + \ifx\next|\aftergroup\vxref % case 1, |arg| or |\arg| + \else\ifx\next@\aftergroup\boldxref % case 2, "@arg@" means boldface + \else\ifx\next"\aftergroup\italxref % case 4, ""arg"" means boldface + \else\ifx\next\<\aftergroup\anglexref % case 3, "\" means angle brackets + \else\aftergroup\normalxref \fi\fi\fi\fi\endgroup} % case 0, "{arg}" +\def\boldxref@#1@{\def\xreftype{2}\def\text{#1}% + \def\next{@\text@}\makexref} +\def\italxref"#1"{\def\xreftype{4}\def\text{#1}% + \def\next{"\text"}\makexref} + +\def\pyth+{\mathbin{++}} +\def\0{\raise.7ex\hbox{$\scriptstyle\#$}} +\def\to{\mathrel{\ldotp\ldotp}} +\def\dashto{\mathrel{\hbox{-\thinspace-\kern-.05em}}} +\def\ddashto{\mathrel{\hbox{-\thinspace-\thinspace-\kern-.05em}}} +\def\round{\mathop{\rm round}} +\def\angle{\mathop{\rm angle}} +\def\rmsqrt{\mathop{\rm sqrt}} +\def\reverse{\mathop{\rm reverse}} +\def\curl{\mathop{\rm curl}} +\def\tension{\mathop{\rm tension}} +\def\atleast{\mathop{\rm atleast}} +\def\controls{\mathop{\rm controls}} +\def\and{\,{\rm and}\,} +\def\cycle{{\rm cycle}} +\def\pickup{@pickup@ \thinspace} +\def\penpos#1{\hbox{\it penpos}_{#1}} +\def\pentaper#1{\hbox{\it pentaper}_{#1}} + +\chardef\hexa=1 % first hex +\chardef\hexb=2 % top and bot adjusted +\chardef\hexc=3 % same, bold +\chardef\hexd=4 % same, confined to box +\chardef\hexe=5 % penstroked hex +\chardef\Aa=6 % stick-figure A, golden ratio +\def\sevenAs{\char7\char8\char9\char10\char11\char12\char13} % same, variants +\chardef\Az=14 % same, with crooked bar +\chardef\Ab=15 % \Aa with rectilinear elliptical pen +\chardef\Ac=16 % same, with the ellipse tilted +\chardef\beana=17 % kidney bean, default pen +\chardef\beanb=18 % same, twice as bold +\chardef\beanc=19 % same, rectilinear elliptical pen +\chardef\beand=20 % same, with the ellipse tilted +\chardef\niba=21 % 10x rectilinear ellipse +\chardef\nibb=22 % same, with the ellipse tilted +\chardef\nibc=23 % same, 90 degrees titled +\chardef\IOT=24 % Ionian T +\chardef\IOS=25 % Ionian S +\chardef\IOO=26 % Ionian O +\chardef\IOI=27 % Ionian I +\chardef\cubea=28 % possible cube +\chardef\cubeb=29 % impossible cube +\chardef\bicentennial=30 % star with overlapping strokes +\chardef\oneu=31 % 1/4 of uuuu ornament +\chardef\circa=32 % quartercircle +\chardef\circb=33 % filled quartercircle +\chardef\circc=34 % rotated quartercircle +\chardef\circd=35 % cone +\chardef\circe=36 % concentric circles +\chardef\circf=37 % concentric diamonds +\chardef\fouru=38 % uuuu ornament +\chardef\fourc=39 % same, rotated +\chardef\seventh='140 % 1/7, to go with cmssqi8 + +\newdimen\apspix +\apspix=31448sp % 8 APS pixels = 52413.64sp, and I'm taking 60% of this +% to crude approximation, there are about 2\apspix per pt +\newdimen\blankpix \newdimen\Blankpix +\setbox0=\hbox{\manual P} \blankpix=\wd0 % approximately 1pt blank pixel +\setbox0=\hbox{\manual R} \Blankpix=\wd0 % approximately 3pt blank pixel + +\def\leftheadline{\hbox to \pagewidth{% + \vbox to 10pt{}% strut to position the baseline + \llap{\tenbf\folio\kern1pc}% folio to left of text + \def\MF{{\manual 89:;<=>:}}% slanted 10pt + \tenit\rhead\hfil% running head flush left + }} +\def\rightheadline{\hbox to \pagewidth{% + \vbox to 10pt{}% strut to position the baseline + \def\MF{{\manual 89:;<=>:}}% slanted 10pt + \hfil\tenit\rhead\/% running head flush right + \rlap{\kern1pc\tenbf\folio}% folio to right of text + }} +\def\ttok#1{\leavevmode\thinspace\hbox{\vrule\vtop{\vbox{\hrule\kern1pt + \hbox{\vphantom{\tt(j}\thinspace{\tt#1}\thinspace}} + \kern1pt\hrule}\vrule}\thinspace} % token + +\newdimen\tinypix \setbox0=\hbox{\sixrm0} \tinypix=5pt +\newdimen\pixcorr \pixcorr=\tinypix \advance\pixcorr by-\wd0 +\def\pixpat#1#2#3#4{\vcenter{\sixrm\baselineskip=\tinypix + \hbox{#1\kern\pixcorr#2}\hbox{#3\kern\pixcorr#4}}} + +\font\rand=random diff --git a/Master/texmf-dist/tex/plain/knuth-lib/mftmac.tex b/Master/texmf-dist/tex/plain/knuth-lib/mftmac.tex new file mode 100644 index 00000000000..3243e74d68d --- /dev/null +++ b/Master/texmf-dist/tex/plain/knuth-lib/mftmac.tex @@ -0,0 +1,55 @@ +% special macros for use with MFT output + +\font\tenlogo=logo10 % font used for the METAFONT logo +\font\tentex=cmtex10 \hyphenchar\tentex=-1 % font used for strings +\font\sevenit=cmti7 \scriptfont\itfam=\sevenit +\def\MF{{\tenlogo META}\-{\tenlogo FONT}} + +\parindent=0pt +\thinmuskip=5mu +\thickmuskip=6mu plus 6mu +\mathcode`\|="326A + +\def\\#1{{\it#1}} % italic type for identifiers +\def\0#1#2#3{\hbox{\rm\'{}\kern-.2em\it#1#2#3\/\kern.05em}} % octal constant +\def\1#1{\mathop{\hbox{\rm#1}}} % operator, in roman type +\def\2#1{\mathop{\hbox{\bf#1\/\kern.05em}}} % operator, in bold type +\def\3#1{\,\mathclose{\hbox{\bf#1\/}}} % `fi' and `endgroup' +\def\4#1{\mathbin{\hbox{\bf#1\/}}} % `step' and `at' +\def\5#1{\hbox{\bf#1\/}} % `true' and `nullpicture' +\def\6#1{\mathbin{\rm#1}} % `++' and `scaled' +\def\7{\hbox\bgroup\nocats\frenchspacing\finstring} % string token +\def\8#1{\mathrel{\mathcode`\.="8000 \mathcode`\-="8000 + #1\unkern}} % `..' and `--' +\def\9{\hfill$\%} % comment separator +\def\?#1{\mathopen{#1}\;} % `:', `::', and `||:' +\def\frac#1/#2{\leavevmode\kern.1em + \raise.5ex\hbox{\the\scriptfont0 #1}\kern-.1em + /\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}} + +\mathchardef\AM="2026 % ampersand +\let\BL=\medskip % space for empty line +\mathchardef\BS="026E % backslash +\mathchardef\HA="0222 % hat ("005E not as good) +\def\PS{\mathbin{+{-}+}} % pythagorean subtraction +\def\SH{\raise.7ex\hbox{$\scriptstyle\#$}} % sharp sign for sharped units +\mathchardef\TI="007E % tilde + +\chardef\other=12 +\def\nocats{\catcode`\\=\other \catcode`\{=\other + \catcode`\}=\other \catcode`\$=\other \catcode`\&=\other + \catcode`\#=\other \catcode`\%=\other \catcode`\~=\other + \catcode`\_=\other \catcode`\^=\other} +\def\finstring"#1"{\tentex"#1"\egroup} + +\newbox\shorthyf \setbox\shorthyf=\hbox{-\kern-.05em} +\mathchardef\period=`\. +{\catcode`\-=\active \global\def-{\copy\shorthyf\mkern3.9mu} + \catcode`\.=\active \global\def.{\period\mkern3mu}} + +\def\bf{\fam\bffam + \def\_{\kern.04em\vbox{\hrule width.3em height .6pt}\kern.08em}% + \tenbf} + +\def\join#1${} % say %%\join in .mf file to join lines together +\def\]{\hskip0pt plus 1filll\ } % say % comment\] to get comment flush left diff --git a/Master/texmf-dist/tex/plain/knuth-lib/story.tex b/Master/texmf-dist/tex/plain/knuth-lib/story.tex new file mode 100644 index 00000000000..fcbaa4151af --- /dev/null +++ b/Master/texmf-dist/tex/plain/knuth-lib/story.tex @@ -0,0 +1,18 @@ +\hrule +\vskip 1in +\centerline{\bf A SHORT STORY} +\vskip 6pt +\centerline{\sl by A. U. Thor} % !`?`?! (modified) +\vskip .5cm +Once upon a time, in a distant + galaxy called \"O\"o\c c, +there lived a computer +named R.~J. Drofnats. + +Mr.~Drofnats---or ``R. J.,'' as +he preferred to be called---% error has been fixed! +was happiest when he was at work +typesetting beautiful documents. +\vskip 1in +\hrule +\vfill\eject diff --git a/Master/texmf-dist/tex/plain/knuth-lib/testfont.tex b/Master/texmf-dist/tex/plain/knuth-lib/testfont.tex new file mode 100644 index 00000000000..f7d146f8671 --- /dev/null +++ b/Master/texmf-dist/tex/plain/knuth-lib/testfont.tex @@ -0,0 +1,208 @@ +% A testbed for font evaluation (see The METAFONTbook, Appendix H) + +\tracinglostchars=0 +\tolerance=1000 +\raggedbottom +\nopagenumbers +\parindent=0pt +\newlinechar=`@ +\hyphenpenalty=200 +\doublehyphendemerits=30000 +\hyphenation{prom-i-nent} + +\newcount\m \newcount\n \newcount\p \newdimen\dim +\chardef\other=12 + +\def\today{\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 + \space\number\day, \number\year} +\def\hours{\n=\time \divide\n 60 + \m=-\n \multiply\m 60 \advance\m \time + \twodigits\n\twodigits\m} +\def\twodigits#1{\ifnum #1<10 0\fi \number#1} + +\def\init{\message{@Name of the font to test = } + \read-1 to\fontname \startfont + \message{Now type a test command (\string\help\space for help):}} +\def\startfont{\font\testfont=\fontname \spaceskip=0pt + \leftline{\sevenrm Test of \fontname\unskip\ on \today\ at \hours} + \medskip + \testfont \setbaselineskip + \ifdim\fontdimen6\testfont<10pt \rightskip=0pt plus 20pt + \else\rightskip=0pt plus 2em \fi + \spaceskip=\fontdimen2\testfont % space between words (\raggedright) + \xspaceskip=\fontdimen2\testfont \advance\xspaceskip by\fontdimen7\testfont} + +{\catcode`\|=0 \catcode`\\=\other +|gdef|help{|message{% +\init switches to another font;@% +\end or \bye finishes the run;@% +\table prints the font layout in tabular format;@% +\text prints a sample text, assuming TeX text font conventions;@% +\sample combines \table and \text;@% +\mixture mixes a background character with a series of others;@% +\alternation interleaves a background character with a series;@% +\alphabet prints all lowercase letters within a given background;@% +\ALPHABET prints all uppercase letters within a given background;@% +\series prints a series of letters within a given background;@% +\lowers prints a comprehensive test of lowercase;@% +\uppers prints a comprehensive test of uppercase;@% +\digits prints a comprehensive test of numerals;@% +\math prints a comprehensive test of TeX math italic;@% +\names prints a text that mixes upper and lower case;@% +\punct prints a punctuation test;@% +\bigtest combines many of the above routines;@% +\help repeats this message;@% +and you can use ordinary TeX commands (e.g., to \input a file).}}} + +\def\setbaselineskip{\setbox0=\hbox{\n=0 +\loop\char\n \ifnum \n<255 \advance\n 1 \repeat} +\baselineskip=6pt \advance\baselineskip\ht0 \advance\baselineskip\dp0 } + +\def\setchar#1{{\escapechar-1\message{\string#1 character = }% + \def\do##1{\catcode`##1=\other}\dospecials + \read-1 to\next + \expandafter\finsetchar\next\next#1}} +\def\finsetchar#1#2\next#3{\global\chardef#3=`#1 + \ifnum #3=`\# \global\chardef#3=#2 \fi} +\def\promptthree{\setchar\background + \setchar\starting \setchar\ending} + +\def\mixture{\promptthree \domix\mixpattern} +\def\alternation{\promptthree \domix\altpattern} +\def\mixpattern{\0\1\0\0\1\1\0\0\0\1\1\1\0\1} +\def\altpattern{\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0} +\def\domix#1{\par\chardef\0=\background \n=\starting + \loop \chardef\1=\n #1\endgraf + \ifnum \n<\ending \advance\n 1 \repeat} + +\def\!{\discretionary{\background}{\background}{\background}} +\def\series{\promptthree \!\doseries\starting\ending\par} +\def\doseries#1#2{\n=#1\loop\char\n\!\ifnum\n<#2\advance\n 1 \repeat} +\def\complower{\!\doseries{`a}{`z}\doseries{'31}{'34}\par} +\def\compupper{\!\doseries{`A}{`Z}\doseries{'35}{'37}\par} +\def\compdigs{\!\doseries{`0}{`9}\par} +\def\alphabet{\setchar\background\complower} +\def\ALPHABET{\setchar\background\compupper} + +\def\lowers{\docomprehensive\complower{`a}{`z}{'31}{'34}} +\def\uppers{\docomprehensive\compupper{`A}{`Z}{'35}{'37}} +\def\digits{\docomprehensive\compdigs{`0}{`4}{`5}{`9}} +\def\docomprehensive#1#2#3#4#5{\par\chardef\background=#2 + \loop{#1} \ifnum\background<#3\m=\background\advance\m 1 + \chardef\background=\m \repeat \chardef\background=#4 + \loop{#1} \ifnum\background<#5\m=\background\advance\m 1 + \chardef\background=\m \repeat} + +\def\names{ {\AA}ngel\aa\ Beatrice Claire + Diana \'Erica Fran\c{c}oise Ginette H\'el\`ene Iris + Jackie K\=aren {\L}au\.ra Mar{\'\i}a N\H{a}ta{\l}{\u\i}e {\O}ctave + Pauline Qu\^eneau Roxanne Sabine T\~a{\'\j}a Ur\v{s}ula + Vivian Wendy Xanthippe Yv{\o}nne Z\"azilie\par} +\def\punct{\par\dopunct{min}\dopunct{pig}\dopunct{hid} + \dopunct{HIE}\dopunct{TIP}\dopunct{fluff} + \$1,234.56 + 7/8 = 9\% @ \#0\par} +\def\dopunct#1{#1,\ #1:\ #1;\ `#1'\ ?`#1?\ !`#1!\ (#1)\ [#1]\ #1*\ #1.\par} + +\def\bigtest{\sample + hamburgefonstiv HAMBURGEFONSTIV\par + \names \punct \lowers \uppers \digits} + +\def\math{\textfont1=\testfont \skewchar\testfont=\skewtrial + \mathchardef\Gamma="100 \mathchardef\Delta="101 + \mathchardef\Theta="102 \mathchardef\Lambda="103 \mathchardef\Xi="104 + \mathchardef\Pi="105 \mathchardef\Sigma="106 \mathchardef\Upsilon="107 + \mathchardef\Phi="108 \mathchardef\Psi="109 \mathchardef\Omega="10A + \def\ii{i} \def\jj{j} + \def\\##1{|##1|+}\mathtrial + \def\\##1{##1_2+}\mathtrial + \def\\##1{##1^2+}\mathtrial + \def\\##1{##1/2+}\mathtrial + \def\\##1{2/##1+}\mathtrial + \def\\##1{##1,{}+}\mathtrial + \def\\##1{d##1+}\mathtrial + \let\ii=\imath \let\jj=\jmath \def\\##1{\hat##1+}\mathtrial} +\newcount\skewtrial \skewtrial='177 +\def\mathtrial{$\\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 \\a \\b \\c \\d \\e \\f \\g + \\h \\\ii \\\jj \\k \\l \\m \\n \\o \\p \\q \\r \\s \\t \\u \\v \\w \\x \\y + \\z \\\alpha \\\beta \\\gamma \\\delta \\\epsilon \\\zeta \\\eta \\\theta + \\\iota \\\kappa \\\lambda \\\mu \\\nu \\\xi \\\pi \\\rho \\\sigma \\\tau + \\\upsilon \\\phi \\\chi \\\psi \\\omega \\\vartheta \\\varpi \\\varphi + \\\Gamma \\\Delta \\\Theta \\\Lambda \\\Xi \\\Pi \\\Sigma \\\Upsilon + \\\Phi \\\Psi \\\Omega \\\partial \\\ell \\\wp$\par} +\def\mathsy{\begingroup\skewtrial='060 % for math symbol font tests + \def\mathtrial{$\\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$\par} + \math\endgroup} + +\def\oct#1{\hbox{\rm\'{}\kern-.2em\it#1\/\kern.05em}} % octal constant +\def\hex#1{\hbox{\rm\H{}\tt#1}} % hexadecimal constant +\def\setdigs#1"#2{\gdef\h{#2}% \h=hex prefix; \0\1=corresponding octal + \m=\n \divide\m by 64 \xdef\0{\the\m}% + \multiply\m by-64 \advance\m by\n \divide\m by 8 \xdef\1{\the\m}} +\def\testrow{\setbox0=\hbox{\penalty 1\def\\{\char"\h}% + \\0\\1\\2\\3\\4\\5\\6\\7\\8\\9\\A\\B\\C\\D\\E\\F% + \global\p=\lastpenalty}} % \p=1 if none of the characters exist +\def\oddline{\cr + \noalign{\nointerlineskip} + \multispan{19}\hrulefill& + \setbox0=\hbox{\lower 2.3pt\hbox{\hex{\h x}}}\smash{\box0}\cr + \noalign{\nointerlineskip}} +\newif\ifskipping +\def\evenline{\loop\skippingfalse + \ifnum\n<256 \m=\n \divide\m 16 \chardef\next=\m + \expandafter\setdigs\meaning\next \testrow + \ifnum\p=1 \skippingtrue \fi\fi + \ifskipping \global\advance\n 16 \repeat + \ifnum\n=256 \let\next=\endchart\else\let\next=\morechart\fi + \next} +\def\morechart{\cr\noalign{\hrule\penalty5000} + \chartline \oddline \m=\1 \advance\m 1 \xdef\1{\the\m} + \chartline \evenline} +\def\chartline{&\oct{\0\1x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&} +\def\chartstrut{\lower4.5pt\vbox to14pt{}} +\def\table{$$\global\n=0 + \halign to\hsize\bgroup + \chartstrut##\tabskip0pt plus10pt& + &\hfil##\hfil&\vrule##\cr + \lower6.5pt\null + &&&\oct0&&\oct1&&\oct2&&\oct3&&\oct4&&\oct5&&\oct6&&\oct7&\evenline} +\def\endchart{\cr\noalign{\hrule} + \raise11.5pt\null&&&\hex 8&&\hex 9&&\hex A&&\hex B& + &\hex C&&\hex D&&\hex E&&\hex F&\cr\egroup$$\par} +\def\:{\setbox0=\hbox{\noboundary\char\n\noboundary}% + \ifdim\ht0>7.5pt\reposition + \else\ifdim\dp0>2.5pt\reposition\fi\fi + \box0\global\advance\n 1 } +\def\reposition{\setbox0=\vbox{\kern2pt\box0}\dim=\dp0 + \advance\dim 2pt \dp0=\dim} +\def\centerlargechars{ + \def\reposition{\setbox0=\hbox{$\vcenter{\kern2pt\box0\kern2pt}$}}} + +\def\text{{\advance\baselineskip-4pt +\setbox0=\hbox{abcdefghijklmnopqrstuvwxyz} +\ifdim\hsize>2\wd0 \ifdim 15pc>2\wd0 \hsize=15pc \else \hsize=2\wd0 \fi\fi +On November 14, 1885, Senator \& Mrs.~Leland Stanford called +together at their San Francisco mansion the 24~prominent men who had +been chosen as the first trustees of The Leland Stanford Junior University. +They handed to the board the Founding Grant of the University, which they +had executed three days before. This document---with various amendments, +legislative acts, and court decrees---remains as the University's charter. +In bold, sweeping language it stipulates that the objectives of the University +are ``to qualify students for personal success and direct usefulness in life; +and to promote the publick welfare by exercising an influence in behalf of +humanity and civilization, teaching the blessings of liberty regulated by +law, and inculcating love and reverence for the great principles of +government as derived from the inalienable rights of man to life, liberty, +and the pursuit of happiness.'' \moretext +(!`THE DAZED BROWN FOX QUICKLY GAVE 12345--67890 JUMPS!)\par}} +\def\moretext{?`But aren't Kafka's Schlo{\ss} and {\AE}sop's {\OE}uvres +often na{\"\i}ve vis-\`a-vis the d{\ae}monic ph{\oe}nix's official r\^ole +in fluffy souffl\'es? } +\def\omitaccents{\let\moretext=\relax} + +\def\sample{\table\text} + +\ifx\noinit!\else\init\fi diff --git a/Master/texmf-dist/tex/plain/knuth-lib/webmac.tex b/Master/texmf-dist/tex/plain/knuth-lib/webmac.tex new file mode 100644 index 00000000000..5ca707bb9b2 --- /dev/null +++ b/Master/texmf-dist/tex/plain/knuth-lib/webmac.tex @@ -0,0 +1,206 @@ +% standard macros for WEB listings (in addition to PLAIN.TEX) +\xdef\fmtversion{\fmtversion+WEBMAC4.1} % identifies current set of macros +\parskip 0pt % no stretch between paragraphs +\parindent 1em % for paragraphs and for the first line of Pascal text + +\font\eightrm=cmr8 \let\sc=\eightrm % NOT a caps-and-small-caps font! +\let\mainfont=\tenrm +\font\titlefont=cmr7 scaled\magstep4 % title on the contents page +\font\ttitlefont=cmtt10 scaled\magstep2 % typewriter type in title +\font\tentex=cmtex10 % TeX extended character set (used in strings) +\fontdimen7\tentex=0pt % no extra space after punctuation + +\def\\#1{\hbox{\it#1\/\kern.05em}} % italic type for identifiers +\def\|#1{\hbox{$#1$}} % one-letter identifiers look a bit better this way +\def\{\hbox{\bf#1\/}} % boldface type for reserved words +\def\.#1{\hbox{\tentex % typewriter type for strings + \let\\=\BS % backslash in a string + \let\'=\RQ % right quote in a string + \let\`=\LQ % left quote in a string + \let\{=\LB % left brace in a string + \let\}=\RB % right brace in a string + \let\~=\TL % tilde in a string + \let\ =\SP % space in a string + \let\_=\UL % underline in a string + \let\&=\AM % ampersand in a string + #1}} +\def\#{\hbox{\tt\char`\#}} % parameter sign +\def\${\hbox{\tt\char`\$}} % dollar sign +\def\%{\hbox{\tt\char`\%}} % percent sign +\def\^{\ifmmode\mathchar"222 \else\char`^ \fi} % pointer or hat +% circumflex accents can be obtained from \^^D instead of \^ +\def\AT!{@} % at sign for control text + +\chardef\AM=`\& % ampersand character in a string +\chardef\BS=`\\ % backslash in a string +\chardef\LB=`\{ % left brace in a string +\def\LQ{{\tt\char'22}} % left quote in a string +\chardef\RB=`\} % right brace in a string +\def\RQ{{\tt\char'23}} % right quote in a string +\def\SP{{\tt\char`\ }} % (visible) space in a string +\chardef\TL=`\~ % tilde in a string +\chardef\UL=`\_ % underline character in a string + +\newbox\bak \setbox\bak=\hbox to -1em{} % backspace one em +\newbox\bakk\setbox\bakk=\hbox to -2em{} % backspace two ems + +\newcount\ind % current indentation in ems +\def\1{\global\advance\ind by1\hangindent\ind em} % indent one more notch +\def\2{\global\advance\ind by-1} % indent one less notch +\def\3#1{\hfil\penalty#10\hfilneg} % optional break within a statement +\def\4{\copy\bak} % backspace one notch +\def\5{\hfil\penalty-1\hfilneg\kern2.5em\copy\bakk\ignorespaces}% optional break +\def\6{\ifmmode\else\par % forced break + \hangindent\ind em\noindent\kern\ind em\copy\bakk\ignorespaces\fi} +\def\7{\Y\6} % forced break and a little extra space + +\let\yskip=\smallskip +\def\to{\mathrel{.\,.}} % double dot, used only in math mode +\def\note#1#2.{\Y\noindent{\hangindent2em\baselineskip10pt\eightrm#1~#2.\par}} +\def\lapstar{\rlap{*}} +\def\startsection{\Q\noindent{\let\*=\lapstar\bf\modstar.\quad}} +\def\defin#1{\global\advance\ind by 2 \1\&{#1 }} % begin `define' or `format' +\def\A{\note{See also section}} % crossref for doubly defined section name +\def\As{\note{See also sections}} % crossref for multiply defined section name +\def\B{\mathopen{\.{@\{}}} % begin controlled comment +\def\C#1{\ifmmode\gdef\XX{\null$\null}\else\gdef\XX{}\fi % Pascal comments + \XX\hfil\penalty-1\hfilneg\quad$\{\,$#1$\,\}$\XX} +\def\D{\defin{define}} % macro definition +\def\E{\cdot10^} % exponent in floating point constant +\def\ET{ and~} % conjunction between two section numbers +\def\ETs{, and~} % conjunction between the last two of several section numbers +\def\F{\defin{format}} % format definition +\let\G=\ge % greater than or equal sign +\def\H#1{\hbox{\rm\char"7D\tt#1}} % hexadecimal constant +\let\I=\ne % unequal sign +\def\J{\.{@\&}} % TANGLE's join operation +\let\K=\gets % left arrow +\let\L=\le % less than or equal sign +\outer\def\M#1.{\MN#1.\ifon\vfil\penalty-100\vfilneg % beginning of section + \vskip12ptminus3pt\startsection\ignorespaces} +\outer\def\N#1.#2.{\MN#1.\vfil\eject % beginning of starred section + \def\rhead{\uppercase{\ignorespaces#2}} % define running headline + \message{*\modno} % progress report + \edef\next{\write\cont{\Z{#2}{\modno}{\the\pageno}}}\next % to contents file + \ifon\startsection{\bf\ignorespaces#2.\quad}\ignorespaces} +\def\MN#1.{\par % common code for \M, \N + {\xdef\modstar{#1}\let\*=\empty\xdef\modno{#1}} + \ifx\modno\modstar \onmaybe \else\ontrue \fi \mark{\modno}} +\def\O#1{\hbox{\rm\char'23\kern-.2em\it#1\/\kern.05em}} % octal constant +\def\P{\rightskip=0pt plus 100pt minus 10pt % go into Pascal mode + \sfcode`;=3000 + \pretolerance 10000 + \hyphenpenalty 10000 \exhyphenpenalty 10000 + \global\ind=2 \1\ \unskip} +\def\Q{\rightskip=0pt % get out of Pascal mode + \sfcode`;=1500 \pretolerance 200 \hyphenpenalty 50 \exhyphenpenalty 50 } +\let\R=\lnot % logical not +\let\S=\equiv % equivalence sign +\def\T{\mathclose{\.{@\}}}} % terminate controlled comment +\def\U{\note{This code is used in section}} % crossref for use of a section +\def\Us{\note{This code is used in sections}} % crossref for uses of a section +\let\V=\lor % logical or +\let\W=\land % logical and +\def\X#1:#2\X{\ifmmode\gdef\XX{\null$\null}\else\gdef\XX{}\fi % section name + \XX$\langle\,$#2{\eightrm\kern.5em#1}$\,\rangle$\XX} +\def\Y{\par\yskip} +\let\Z=\let % now you can \send the control sequence \Z +\def\){\hbox{\.{@\$}}} % sign for string pool check sum +\def\]{\hbox{\.{@\\}}} % sign for forced line break +\def\=#1{\kern2pt\hbox{\vrule\vtop{\vbox{\hrule + \hbox{\strut\kern2pt\.{#1}\kern2pt}} + \hrule}\vrule}\kern2pt} % verbatim string +\let\~=\ignorespaces +\let\*=* + +\def\onmaybe{\let\ifon=\maybe} \let\maybe=\iftrue +\newif\ifon \newif\iftitle \newif\ifpagesaved +\def\lheader{\mainfont\the\pageno\eightrm\qquad\rhead\hfill\title\qquad + \tensy x\mainfont\topmark} % top line on left-hand pages +\def\rheader{\tensy x\mainfont\topmark\eightrm\qquad\title\hfill\rhead + \qquad\mainfont\the\pageno} % top line on right-hand pages +\def\page{\box255 } +\def\normaloutput#1#2#3{\ifodd\pageno\hoffset=\pageshift\fi + \shipout\vbox{ + \vbox to\fullpageheight{ + \iftitle\global\titlefalse + \else\hbox to\pagewidth{\vbox to10pt{}\ifodd\pageno #3\else#2\fi}\fi + \vfill#1}} % parameter #1 is the page itself + \global\advance\pageno by1} + +\def\rhead{\.{WEB} OUTPUT} % this running head is reset by starred sections +\def\title{} % an optional title can be set by the user +\def\topofcontents{\centerline{\titlefont\title} + \vfill} % this material will start the table of contents page +\def\botofcontents{\vfill} % this material will end the table of contents page +\def\contentspagenumber{0} % default page number for table of contents +\newdimen\pagewidth \pagewidth=6.5in % the width of each page +\newdimen\pageheight \pageheight=8.7in % the height of each page +\newdimen\fullpageheight \fullpageheight=9in % page height including headlines +\newdimen\pageshift \pageshift=0in % shift righthand pages wrt lefthand ones +\def\magnify#1{\mag=#1\pagewidth=6.5truein\pageheight=8.7truein + \fullpageheight=9truein\setpage} +\def\setpage{\hsize\pagewidth\vsize\pageheight} % use after changing page size +\def\contentsfile{CONTENTS} % file that gets table of contents info +\def\readcontents{\input CONTENTS} + +\newwrite\cont +\output{\setbox0=\page % the first page is garbage + \openout\cont=\contentsfile + \global\output{\normaloutput\page\lheader\rheader}} +\setpage +\vbox to \vsize{} % the first \topmark won't be null + +\def\ch{\note{The following sections were changed by the change file:} + \let\*=\relax} +\newbox\sbox % saved box preceding the index +\newbox\lbox % lefthand column in the index +\def\inx{\par\vskip6pt plus 1fil % we are beginning the index + \write\cont{} % ensure that the contents file isn't empty + \closeout\cont % the contents information has been fully gathered + \output{\ifpagesaved\normaloutput{\box\sbox}\lheader\rheader\fi + \global\setbox\sbox=\page \global\pagesavedtrue} + \pagesavedfalse \eject % eject the page-so-far and predecessors + \setbox\sbox\vbox{\unvbox\sbox} % take it out of its box + \vsize=\pageheight \advance\vsize by -\ht\sbox % the remaining height + \hsize=.5\pagewidth \advance\hsize by -10pt + % column width for the index (20pt between cols) + \parfillskip 0pt plus .6\hsize % try to avoid almost empty lines + \def\lr{L} % this tells whether the left or right column is next + \output{\if L\lr\global\setbox\lbox=\page \gdef\lr{R} + \else\normaloutput{\vbox to\pageheight{\box\sbox\vss + \hbox to\pagewidth{\box\lbox\hfil\page}}}\lheader\rheader + \global\vsize\pageheight\gdef\lr{L}\global\pagesavedfalse\fi} + \message{Index:} + \parskip 0pt plus .5pt + \outer\def\:##1, {\par\hangindent2em\noindent##1:\kern1em} % index entry + \let\ttentry=\. \def\.##1{\ttentry{##1\kern.2em}} % give \tt a little room + \def\[##1]{$\underline{##1}$} % underlined index item + \rm \rightskip0pt plus 2.5em \tolerance 10000 \let\*=\lapstar + \hyphenpenalty 10000 \parindent0pt} +\def\fin{\par\vfill\eject % this is done when we are ending the index + \ifpagesaved\null\vfill\eject\fi % output a null index column + \if L\lr\else\null\vfill\eject\fi % finish the current page + \parfillskip 0pt plus 1fil + \def\rhead{NAMES OF THE SECTIONS} + \message{Section names:} + \output{\normaloutput\page\lheader\rheader} + \setpage + \def\note##1##2.{\hfil\penalty-1\hfilneg\quad{\eightrm##1~##2.}} + \linepenalty=10 % try to conserve lines + \def\U{\note{Used in section}} % crossref for use of a section + \def\Us{\note{Used in sections}} % crossref for uses of a section + \def\:{\par\hangindent 2em}\let\*=*\let\.=\ttentry} +\def\con{\par\vfill\eject % finish the section names + \rightskip 0pt \hyphenpenalty 50 \tolerance 200 + \setpage + \output{\normaloutput\page\lheader\rheader} + \titletrue % prepare to output the table of contents + \pageno=\contentspagenumber \def\rhead{TABLE OF CONTENTS} + \message{Table of contents:} + \topofcontents + \line{\hfil Section\hbox to3em{\hss Page}} + \def\Z##1##2##3{\line{\ignorespaces##1 + \leaders\hbox to .5em{.\hfil}\hfil\ ##2\hbox to3em{\hss##3}}} + \readcontents\relax % read the contents info + \botofcontents \end} % print the contents page(s) and terminate -- cgit v1.2.3