diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-12 23:46:46 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-12 23:46:46 +0000 |
commit | b1c871653d37d9c6fd0f97b048dca051b5b1db27 (patch) | |
tree | 3f925e95aa3461b9ecb75df861259a7f71bc3f23 /Master/texmf-dist/tex/plain | |
parent | 82770e7491344072d5dd54ce9a78546eebe99c3f (diff) |
trunk/Master/texmf-dist/tex/plain
git-svn-id: svn://tug.org/texlive/trunk@621 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/plain')
225 files changed, 45875 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/plain/amsfonts/amssym.def b/Master/texmf-dist/tex/plain/amsfonts/amssym.def new file mode 100644 index 00000000000..4a92045d6a2 --- /dev/null +++ b/Master/texmf-dist/tex/plain/amsfonts/amssym.def @@ -0,0 +1,117 @@ +%%% ==================================================================== +%%% @TeX-file{ +%%% filename = "amssym.def", +%%% version = "2.2", +%%% date = "22-Dec-1994", +%%% time = "10:14:01 EST", +%%% checksum = "28096 117 438 4924", +%%% author = "American Mathematical Society", +%%% copyright = "Copyright (C) 1994 American Mathematical Society, +%%% all rights reserved. Copying of this file is +%%% authorized only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% address = "American Mathematical Society, +%%% Technical Support, +%%% Electronic Products and Services, +%%% P. O. Box 6248, +%%% Providence, RI 02940, +%%% USA", +%%% telephone = "401-455-4080 or (in the USA and Canada) +%%% 800-321-4AMS (321-4267)", +%%% FAX = "401-331-3842", +%%% email = "tech-support@math.ams.org (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "amsfonts, msam, msbm, math symbols", +%%% supported = "yes", +%%% abstract = "This is part of the AMSFonts distribution, +%%% It is the plain TeX source file for the +%%% AMSFonts user's guide.", +%%% docstring = "The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the +%%% equivalent of the standard UNIX wc (word +%%% count) utility output of lines, words, and +%%% characters. This is produced by Robert +%%% Solovay's checksum utility.", +%%% } +%%% ==================================================================== +\expandafter\ifx\csname amssym.def\endcsname\relax \else\endinput\fi +% +% Store the catcode of the @ in the csname so that it can be restored later. +\expandafter\edef\csname amssym.def\endcsname{% + \catcode`\noexpand\@=\the\catcode`\@\space} +% Set the catcode to 11 for use in private control sequence names. +\catcode`\@=11 +% +% Include all definitions related to the fonts msam, msbm and eufm, so that +% when this file is used by itself, the results with respect to those fonts +% are equivalent to what they would have been using AMS-TeX. +% Most symbols in fonts msam and msbm are defined using \newsymbol; +% however, a few symbols that replace composites defined in plain must be +% defined with \mathchardef. + +\def\undefine#1{\let#1\undefined} +\def\newsymbol#1#2#3#4#5{\let\next@\relax + \ifnum#2=\@ne\let\next@\msafam@\else + \ifnum#2=\tw@\let\next@\msbfam@\fi\fi + \mathchardef#1="#3\next@#4#5} +\def\mathhexbox@#1#2#3{\relax + \ifmmode\mathpalette{}{\m@th\mathchar"#1#2#3}% + \else\leavevmode\hbox{$\m@th\mathchar"#1#2#3$}\fi} +\def\hexnumber@#1{\ifcase#1 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or 8\or + 9\or A\or B\or C\or D\or E\or F\fi} + +\font\tenmsa=msam10 +\font\sevenmsa=msam7 +\font\fivemsa=msam5 +\newfam\msafam +\textfont\msafam=\tenmsa +\scriptfont\msafam=\sevenmsa +\scriptscriptfont\msafam=\fivemsa +\edef\msafam@{\hexnumber@\msafam} +\mathchardef\dabar@"0\msafam@39 +\def\dashrightarrow{\mathrel{\dabar@\dabar@\mathchar"0\msafam@4B}} +\def\dashleftarrow{\mathrel{\mathchar"0\msafam@4C\dabar@\dabar@}} +\let\dasharrow\dashrightarrow +\def\ulcorner{\delimiter"4\msafam@70\msafam@70 } +\def\urcorner{\delimiter"5\msafam@71\msafam@71 } +\def\llcorner{\delimiter"4\msafam@78\msafam@78 } +\def\lrcorner{\delimiter"5\msafam@79\msafam@79 } +% Note that there should not be a final space after the digits for a +% \mathhexbox@. +\def\yen{{\mathhexbox@\msafam@55}} +\def\checkmark{{\mathhexbox@\msafam@58}} +\def\circledR{{\mathhexbox@\msafam@72}} +\def\maltese{{\mathhexbox@\msafam@7A}} + +\font\tenmsb=msbm10 +\font\sevenmsb=msbm7 +\font\fivemsb=msbm5 +\newfam\msbfam +\textfont\msbfam=\tenmsb +\scriptfont\msbfam=\sevenmsb +\scriptscriptfont\msbfam=\fivemsb +\edef\msbfam@{\hexnumber@\msbfam} +\def\Bbb#1{{\fam\msbfam\relax#1}} +\def\widehat#1{\setbox\z@\hbox{$\m@th#1$}% + \ifdim\wd\z@>\tw@ em\mathaccent"0\msbfam@5B{#1}% + \else\mathaccent"0362{#1}\fi} +\def\widetilde#1{\setbox\z@\hbox{$\m@th#1$}% + \ifdim\wd\z@>\tw@ em\mathaccent"0\msbfam@5D{#1}% + \else\mathaccent"0365{#1}\fi} +\font\teneufm=eufm10 +\font\seveneufm=eufm7 +\font\fiveeufm=eufm5 +\newfam\eufmfam +\textfont\eufmfam=\teneufm +\scriptfont\eufmfam=\seveneufm +\scriptscriptfont\eufmfam=\fiveeufm +\def\frak#1{{\fam\eufmfam\relax#1}} +\let\goth\frak + +% Restore the catcode value for @ that was previously saved. +\csname amssym.def\endcsname + +\endinput diff --git a/Master/texmf-dist/tex/plain/amsfonts/amssym.tex b/Master/texmf-dist/tex/plain/amsfonts/amssym.tex new file mode 100644 index 00000000000..fdab6ef72a8 --- /dev/null +++ b/Master/texmf-dist/tex/plain/amsfonts/amssym.tex @@ -0,0 +1,286 @@ +%%% ==================================================================== +%%% @TeX-file{ +%%% filename = "amssym.tex", +%%% version = "2.2b", +%%% date = "26 February 1997", +%%% time = "13:14:29 EST", +%%% checksum = "61515 286 903 9155", +%%% author = "American Mathematical Society", +%%% copyright = "Copyright (C) 1997 American Mathematical Society, +%%% all rights reserved. Copying of this file is +%%% authorized only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% address = "American Mathematical Society, +%%% Technical Support, +%%% Electronic Products and Services, +%%% P. O. Box 6248, +%%% Providence, RI 02940, +%%% USA", +%%% telephone = "401-455-4080 or (in the USA and Canada) +%%% 800-321-4AMS (321-4267)", +%%% FAX = "401-331-3842", +%%% email = "tech-support@ams.org (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "amsfonts, msam, msbm, math symbols", +%%% supported = "yes", +%%% abstract = "This is part of the AMSFonts distribution. +%%% It contains the plain TeX source file for loading +%%% the AMS extra symbols and Euler fraktur fonts.", +%%% docstring = "The checksum field above contains a CRC-16 checksum +%%% as the first value, followed by the equivalent of +%%% the standard UNIX wc (word count) utility output +%%% of lines, words, and characters. This is produced +%%% by Robert Solovay's checksum utility.", +%%% } +%%% ==================================================================== +%% Save the current value of the @-sign catcode so that it can +%% be restored afterwards. This allows us to call amssym.tex +%% either within an AMS-TeX document style file or by itself, in +%% addition to providing a means of testing whether the file has +%% been previously loaded. We want to avoid inputting this file +%% twice because when AMSTeX is being used \newsymbol will give an +%% error message if used to define a control sequence name that is +%% already defined. +%% +%% If the csname is not equal to \relax, we assume this file has +%% already been loaded and \endinput immediately. +\expandafter\ifx\csname pre amssym.tex at\endcsname\relax \else\endinput\fi +%% Otherwise we store the catcode of the @ in the csname. +\expandafter\chardef\csname pre amssym.tex at\endcsname=\the\catcode`\@ +%% Set the catcode to 11 for use in private control sequence names. +\catcode`\@=11 +%% Load amssym.def if necessary: If \newsymbol is undefined, do nothing +%% and the following \input statement will be executed; otherwise +%% change \input to a temporary no-op. +\ifx\undefined\newsymbol \else \begingroup\def\input#1 {\endgroup}\fi +\input amssym.def \relax +%% Most symbols in fonts msam and msbm are defined using \newsymbol. A few +%% that are delimiters or otherwise require special treatment have already +%% been defined as soon as the fonts were loaded. Finally, a few symbols +%% that replace composites defined in plain must be undefined first. +\newsymbol\boxdot 1200 +\newsymbol\boxplus 1201 +\newsymbol\boxtimes 1202 +\newsymbol\square 1003 +\newsymbol\blacksquare 1004 +\newsymbol\centerdot 1205 +\newsymbol\lozenge 1006 +\newsymbol\blacklozenge 1007 +\newsymbol\circlearrowright 1308 +\newsymbol\circlearrowleft 1309 +\undefine\rightleftharpoons +\newsymbol\rightleftharpoons 130A +\newsymbol\leftrightharpoons 130B +\newsymbol\boxminus 120C +\newsymbol\Vdash 130D +\newsymbol\Vvdash 130E +\newsymbol\vDash 130F +\newsymbol\twoheadrightarrow 1310 +\newsymbol\twoheadleftarrow 1311 +\newsymbol\leftleftarrows 1312 +\newsymbol\rightrightarrows 1313 +\newsymbol\upuparrows 1314 +\newsymbol\downdownarrows 1315 +\newsymbol\upharpoonright 1316 + \let\restriction\upharpoonright +\newsymbol\downharpoonright 1317 +\newsymbol\upharpoonleft 1318 +\newsymbol\downharpoonleft 1319 +\newsymbol\rightarrowtail 131A +\newsymbol\leftarrowtail 131B +\newsymbol\leftrightarrows 131C +\newsymbol\rightleftarrows 131D +\newsymbol\Lsh 131E +\newsymbol\Rsh 131F +\newsymbol\rightsquigarrow 1320 +\newsymbol\leftrightsquigarrow 1321 +\newsymbol\looparrowleft 1322 +\newsymbol\looparrowright 1323 +\newsymbol\circeq 1324 +\newsymbol\succsim 1325 +\newsymbol\gtrsim 1326 +\newsymbol\gtrapprox 1327 +\newsymbol\multimap 1328 +\newsymbol\therefore 1329 +\newsymbol\because 132A +\newsymbol\doteqdot 132B + \let\Doteq\doteqdot +\newsymbol\triangleq 132C +\newsymbol\precsim 132D +\newsymbol\lesssim 132E +\newsymbol\lessapprox 132F +\newsymbol\eqslantless 1330 +\newsymbol\eqslantgtr 1331 +\newsymbol\curlyeqprec 1332 +\newsymbol\curlyeqsucc 1333 +\newsymbol\preccurlyeq 1334 +\newsymbol\leqq 1335 +\newsymbol\leqslant 1336 +\newsymbol\lessgtr 1337 +\newsymbol\backprime 1038 +\newsymbol\risingdotseq 133A +\newsymbol\fallingdotseq 133B +\newsymbol\succcurlyeq 133C +\newsymbol\geqq 133D +\newsymbol\geqslant 133E +\newsymbol\gtrless 133F +\newsymbol\sqsubset 1340 +\newsymbol\sqsupset 1341 +\newsymbol\vartriangleright 1342 +\newsymbol\vartriangleleft 1343 +\newsymbol\trianglerighteq 1344 +\newsymbol\trianglelefteq 1345 +\newsymbol\bigstar 1046 +\newsymbol\between 1347 +\newsymbol\blacktriangledown 1048 +\newsymbol\blacktriangleright 1349 +\newsymbol\blacktriangleleft 134A +\newsymbol\vartriangle 134D +\newsymbol\blacktriangle 104E +\newsymbol\triangledown 104F +\newsymbol\eqcirc 1350 +\newsymbol\lesseqgtr 1351 +\newsymbol\gtreqless 1352 +\newsymbol\lesseqqgtr 1353 +\newsymbol\gtreqqless 1354 +\newsymbol\Rrightarrow 1356 +\newsymbol\Lleftarrow 1357 +\newsymbol\veebar 1259 +\newsymbol\barwedge 125A +\newsymbol\doublebarwedge 125B +\undefine\angle +\newsymbol\angle 105C +\newsymbol\measuredangle 105D +\newsymbol\sphericalangle 105E +\newsymbol\varpropto 135F +\newsymbol\smallsmile 1360 +\newsymbol\smallfrown 1361 +\newsymbol\Subset 1362 +\newsymbol\Supset 1363 +\newsymbol\Cup 1264 + \let\doublecup\Cup +\newsymbol\Cap 1265 + \let\doublecap\Cap +\newsymbol\curlywedge 1266 +\newsymbol\curlyvee 1267 +\newsymbol\leftthreetimes 1268 +\newsymbol\rightthreetimes 1269 +\newsymbol\subseteqq 136A +\newsymbol\supseteqq 136B +\newsymbol\bumpeq 136C +\newsymbol\Bumpeq 136D +\newsymbol\lll 136E + \let\llless\lll +\newsymbol\ggg 136F + \let\gggtr\ggg +\newsymbol\circledS 1073 +\newsymbol\pitchfork 1374 +\newsymbol\dotplus 1275 +\newsymbol\backsim 1376 +\newsymbol\backsimeq 1377 +\newsymbol\complement 107B +\newsymbol\intercal 127C +\newsymbol\circledcirc 127D +\newsymbol\circledast 127E +\newsymbol\circleddash 127F +\newsymbol\lvertneqq 2300 +\newsymbol\gvertneqq 2301 +\newsymbol\nleq 2302 +\newsymbol\ngeq 2303 +\newsymbol\nless 2304 +\newsymbol\ngtr 2305 +\newsymbol\nprec 2306 +\newsymbol\nsucc 2307 +\newsymbol\lneqq 2308 +\newsymbol\gneqq 2309 +\newsymbol\nleqslant 230A +\newsymbol\ngeqslant 230B +\newsymbol\lneq 230C +\newsymbol\gneq 230D +\newsymbol\npreceq 230E +\newsymbol\nsucceq 230F +\newsymbol\precnsim 2310 +\newsymbol\succnsim 2311 +\newsymbol\lnsim 2312 +\newsymbol\gnsim 2313 +\newsymbol\nleqq 2314 +\newsymbol\ngeqq 2315 +\newsymbol\precneqq 2316 +\newsymbol\succneqq 2317 +\newsymbol\precnapprox 2318 +\newsymbol\succnapprox 2319 +\newsymbol\lnapprox 231A +\newsymbol\gnapprox 231B +\newsymbol\nsim 231C +\newsymbol\ncong 231D +\newsymbol\diagup 201E +\newsymbol\diagdown 201F +\newsymbol\varsubsetneq 2320 +\newsymbol\varsupsetneq 2321 +\newsymbol\nsubseteqq 2322 +\newsymbol\nsupseteqq 2323 +\newsymbol\subsetneqq 2324 +\newsymbol\supsetneqq 2325 +\newsymbol\varsubsetneqq 2326 +\newsymbol\varsupsetneqq 2327 +\newsymbol\subsetneq 2328 +\newsymbol\supsetneq 2329 +\newsymbol\nsubseteq 232A +\newsymbol\nsupseteq 232B +\newsymbol\nparallel 232C +\newsymbol\nmid 232D +\newsymbol\nshortmid 232E +\newsymbol\nshortparallel 232F +\newsymbol\nvdash 2330 +\newsymbol\nVdash 2331 +\newsymbol\nvDash 2332 +\newsymbol\nVDash 2333 +\newsymbol\ntrianglerighteq 2334 +\newsymbol\ntrianglelefteq 2335 +\newsymbol\ntriangleleft 2336 +\newsymbol\ntriangleright 2337 +\newsymbol\nleftarrow 2338 +\newsymbol\nrightarrow 2339 +\newsymbol\nLeftarrow 233A +\newsymbol\nRightarrow 233B +\newsymbol\nLeftrightarrow 233C +\newsymbol\nleftrightarrow 233D +\newsymbol\divideontimes 223E +\newsymbol\varnothing 203F +\newsymbol\nexists 2040 +\newsymbol\Finv 2060 +\newsymbol\Game 2061 +\newsymbol\mho 2066 +\newsymbol\eth 2067 +\newsymbol\eqsim 2368 +\newsymbol\beth 2069 +\newsymbol\gimel 206A +\newsymbol\daleth 206B +\newsymbol\lessdot 236C +\newsymbol\gtrdot 236D +\newsymbol\ltimes 226E +\newsymbol\rtimes 226F +\newsymbol\shortmid 2370 +\newsymbol\shortparallel 2371 +\newsymbol\smallsetminus 2272 +\newsymbol\thicksim 2373 +\newsymbol\thickapprox 2374 +\newsymbol\approxeq 2375 +\newsymbol\succapprox 2376 +\newsymbol\precapprox 2377 +\newsymbol\curvearrowleft 2378 +\newsymbol\curvearrowright 2379 +\newsymbol\digamma 207A +\newsymbol\varkappa 207B +\newsymbol\Bbbk 207C +\newsymbol\hslash 207D +\undefine\hbar +\newsymbol\hbar 207E +\newsymbol\backepsilon 237F +% Restore the catcode value for @ that was previously saved. +\catcode`\@=\csname pre amssym.tex at\endcsname + +\endinput diff --git a/Master/texmf-dist/tex/plain/amsfonts/cyracc.def b/Master/texmf-dist/tex/plain/amsfonts/cyracc.def new file mode 100644 index 00000000000..2b183b98be6 --- /dev/null +++ b/Master/texmf-dist/tex/plain/amsfonts/cyracc.def @@ -0,0 +1,285 @@ +%%% ==================================================================== +%%% @TeX-file{ +%%% filename = "cyracc.def", +%%% version = "2.2b", +%%% date = "26 February 1997", +%%% time = "15:26:08 EST", +%%% checksum = "¤50915 285 1398 10151", +%%% author = "American Mathematical Society", +%%% copyright = "Copyright (C) 1996 American Mathematical Society, +%%% all rights reserved. Copying of this file is +%%% authorized only if either: +%%% (1) you make absolutely no changes to your copy, +%%% including name; OR +%%% (2) if you do make changes, you first rename it +%%% to some other name.", +%%% address = "American Mathematical Society, +%%% Technical Support, +%%% Electronic Products and Services, +%%% P. O. Box 6248, +%%% Providence, RI 02940, +%%% USA", +%%% telephone = "401-455-4080 or (in the USA and Canada) +%%% 800-321-4AMS (321-4267)", +%%% FAX = "401-331-3842", +%%% email = "tech-support@ams.org (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "amsfonts, tex, cyrillic", +%%% supported = "yes", +%%% abstract = "This file contains definitions of accents and +%%% special characters required for use of cyrillic +%%% fonts arranged according to the AMS scheme.", +%%% docstring = "The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the +%%% equivalent of the standard UNIX wc (word +%%% count) utility output of lines, words, and +%%% characters. This is produced by Robert +%%% Solovay's checksum utility.", +%%% } +%%% ==================================================================== +%% +%% The \font specification(s) should be made elsewhere, and should include +%% \newfam\cyrfam +%% \font\...cyr=wncyr... (e.g. \font\tencyr=wncyr10 ) +%% An appropriate definition for cyrillic, usable in math and text, is +%% \def\cyr{\fam\cyrfam\...cyr\cyracc} +%% More extensive instructions for using cyrillic fonts are included in +%% the AMSFonts 2.2 User's Guide. +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\chardef\tempcat=\the\catcode`\@ +\catcode`\@=11 + +% The first set of definitions is what will be in effect outside of cyrillic, +% i.e., in transliterated text. + +% Definition of \cydot is not ideal; real dot should be in an accent font. +\def\cydot{{\mathsurround=0pt$\cdot$}} + +% \ubar is the definition of \b from PLAIN; it may not work in math mode. +\def\ubar#1{\oalign{#1\crcr\hidewidth + \vbox to.2ex{\hbox{\char22}\vss}\hidewidth}} + +% Soft and hard signs are represented in transliteration by prime and +% double prime respectively. +\def\cprime{\/{\mathsurround=0pt$'$}} +\def\Cprime{{\mathsurround=0pt$'$}} +\def\cdprime{\/{\mathsurround=0pt$''$}} +\def\Cdprime{{\mathsurround=0pt$\ubar{\hbox{$''$}}$}} + +\def\dbar{dj} % make real barred d when accent font available +\def\Dbar{Dj} % "" + +% It would be nice to make these control sequences unnecessary; that will +% probably require d to become active. +\def\dz{dz} +\def\Dz{Dz} +\def\dzh{dzh\cydot } +\def\Dzh{Dzh\cydot } + + +% Stress marks are sometimes used in cyrillic text, mainly for pedagogic +% reasons. These definitions support stress marks within {\cyr ...}; +% in transliteration, they are suppressed. Stress is indicated in +% input by \! preceding a letter on which a stress mark is to appear; +% an acute accent will appear in the output. Since \! is also a plain +% command, for negative thin space in math mode, test for math mode and +% include the plain definition as appropriate. + +\def\@gobble#1{} +\def\@testgrave{\`} +\def\@stressit{\futurelet\chartest\@stresschar } + +\def\@stresschar#1{% + \ifx #1y\def\result{\futurelet\chartest\@yligature}% + \else \ifx #1Y\def\result{\futurelet\chartest\@Yligature}% + \else \ifx\chartest\@testgrave \def\result{\accent"26 }% + \else \def\result{\accent"26 #1}% + \fi \fi \fi + \result } + +\def\@yligature{% + \ifx a\chartest \def\result{\accent"26 \char"1F \@gobble}% + \else \ifx u\chartest \def\result{\accent"26 \char"18 \@gobble}% + \else \def\result{\accent"26 y}% + \fi \fi + \result } + +\def\@Yligature{% + \ifx a\chartest \def\result{\accent"26 \char"17 \@gobble}% + \else \ifx A\chartest \def\result{\accent"26 \char"17 \@gobble}% + \else \ifx u\chartest \def\result{\accent"26 \char"10 \@gobble}% + \else \ifx U\chartest \def\result{\accent"26 \char"10 \@gobble}% + \else \def\result{\accent"26 Y}% + \fi \fi \fi \fi + \result } + +\def\!{\ifmmode \mskip-\thinmuskip \fi} + + +% These are the definitions that will produce cyrillic letters within +% {\cyr ...} for letters represented in input by control sequences and +% accented latin letters. + +\def\cyracc{% + \def\cydot{{\kern0pt}}% + \def\cprime{\char"7E }\def\Cprime{\char"5E }% + \def\cdprime{\char"7F }\def\Cdprime{\char"5F }% + \def\dbar{dj}\def\Dbar{Dj}% + \def\dz{\char"1E }\def\Dz{\char"16 }% + \def\dzh{\char"0A }\def\Dzh{\char"02 }% + \def\'##1{\if c##1\char"0F % + \else \if C##1\char"07 % + \else \accent"26 ##1\fi \fi }% + \def\`##1{\if e##1\char"0B % + \else \if E##1\char"03 % + \else \errmessage{accent \string\` not defined in cyrillic}% + ##1\fi \fi }% + \def\=##1{\if e##1\char"0D % + \else \if E##1\char"05 % + \else \if \i##1\char"0C % + \else \if I##1\char"04 % + \else \errmessage{accent \string\= not defined in cyrillic}% + ##1\fi \fi \fi \fi }% + \def\u##1{\if \i##1\accent"24 i% + \else \accent"24 ##1\fi }% + \def\"##1{\if \i##1\accent"20 \char"3D % + \else \if I##1\accent"20 \char"04 % + \else \accent"20 ##1\fi \fi }% + \def\!{\ifmmode \def\result{\mskip-\thinmuskip}% + \else \def\result{\@stressit}\fi \result}} + + +% If cyrillic strings are to be included in \mark's, the accents need +% to be kept in unexpanded form until the \mark's are interpreted. +% See note on \mark below for details. + +\def\keep@cyracc{\let\cyr=\relax \let\i=\relax + \let\ubar=\relax \let\cydot=\relax + \let\cprime=\relax \let\Cprime=\relax + \let\cdprime=\relax \let\Cdprime=\relax + \let\dbar=\relax \let\Dbar=\relax + \let\dz=\relax \let\Dz=\relax + \let\dzh=\relax \let\Dzh=\relax + \let\'=\relax \let\`=\relax \let\==\relax + \let\u=\relax \let\"=\relax \let\!=\relax } + + +\catcode`\@=\tempcat +\endinput + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% ***** CYRACC.DEF ***** +% +% Access to the cyrillic is through the MR 1980 transliteration scheme, +% using TeX/Metafont ligature capability. (An alternate set of ligatures +% exists, for accessing letters beyond the 26 located in the font positions +% of the 26 roman letters. An authoritative list of the ligature rules is +% given below, under the heading Ligatures.) Successful use of this file +% requires appropriate cyrillic and accent fonts, arranged according to +% the AMS/MR scheme. +% +% There are some weaknesses in this ligaturing and accent system. +% The following are known to be less than satisfactory: +% +% the intermediate `ligatures' for shch access numerals; +% primes (transliteration of hard/soft signs) use math mode; +% underbar on `cap' double prime is too low (hard sign); +% thorn d's don't yet exist; +% \cydot uses math mode; +% this scheme is not compatible with automatic Russian hyphenation. +% +% +% Notes on the macros: +% +% The single space following each hex character code is necessary +% to prevent the next input character from being gobbled. +% +% +% Note on \mark : +% +% Control sequences such as these cyrillic accents should remain +% unexpanded when generating \mark's; otherwise, the definition of +% the expanded strings in effect when the \mark is used may be +% inappropriate. By \let\...=\relax , the \... takes on the important +% characteristic of a primitive that it will not be expanded further. +% The following code has been shown to generate correct \mark entries +% that can be used successfully in running heads: +% +% \newtoks\marktoks +% \def\domark{\keep@cyracc \mark{\the\marktoks}} +% +% In running heads, the marks should be accessed using \the to expand +% the tokens strings properly. +% +% +% Ligatures +% +% This is a list of all the letter ligatures in the AMS cyrillic fonts, +% and in other cyrillic fonts (such as those developed at the University +% of Washington that use the AMS arrangement). +% +% LOWER CASE LIGATURES +% +% A. All-letter ligatures +% +% ch = `q +% dj = '016 +% kh = `h +% lj = '011 +% nj = '010 +% sh = `x; xc = `7 (shc); 7h = `w (shch) +% ts = `c +% ya = '037 +% yu = '030 +% zh = '031 +% +% B. Ligatures with keyed numerals +% +% c1 = '017 +% d1 = '016 (dj); d2 = '012 (dzh); d3 = '036 (dz) +% e0 = '033; e1 = '013; e2 = '015 +% i0 = '032; i1 = '014 +% j1 = '037 (ya); j2 = '030 (yu) +% l1 = '011 (lj) +% n1 = '010 (nj) +% p1 = '176; p2 = '177 +% z1 = '031 (zh) +% +% UPPER CASE LIGATURES +% A. All-letter ligatures +% +% CH, Ch = `Q +% KH, Kh = `H +% LJ, Lj = '001 +% NJ, Nj = '000 +% SH, Sh = `X; XH, Xh = `6 (SHC, SHc, Shc); +% 6H, 6h = `W (SHCH, SHCh, SHch, Shch) +% TS, Ts = `C +% YA, Ya = '027 +% YU, Yu = '020 +% ZH, Zh = '021 +% +% B. Ligatures with keyed numerals +% +% C1 = '007 +% D1 = '006 (DJ); D2 = '002 (DZH); D3 = '026 (DZ) +% E0 = '023; E1 = '003; E2 = '005 +% I0 = '022; I1 = '004 +% J1 = '027 (YA); J2 = '020 (YU) +% L1 = '001 (LJ) +% N0 = '175 (Number sign); N1 = '000 (NJ) +% P1 = '136; P2 = '137 +% Z1 = '021 (ZH) +% +% DEACTIVATED LIGATURES +% +% The dzh and DZH ligatures were originally built in the following manner, +% but the results were not compatible with desired keyboarding schemes. +% +% dz = '036; '036(roman s)h = '012 (dzh) +% DZ = '026; '026(roman S)H = '002 (DZH) +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/Master/texmf-dist/tex/plain/antt/antt-math.tex b/Master/texmf-dist/tex/plain/antt/antt-math.tex new file mode 100644 index 00000000000..5f6575dd1cb --- /dev/null +++ b/Master/texmf-dist/tex/plain/antt/antt-math.tex @@ -0,0 +1,271 @@ +\catcode`@=11 +% roman text +\font\seventeenrm= rm-anttr at17.28pt +\font\fourteenrm= rm-anttr at14.4pt +\font\twelverm= rm-anttr at12pt +\font\elevenrm= rm-anttr at11pt +\font\tenrm= rm-anttr +\font\ninerm= rm-anttr at9pt +\font\eightrm= rm-anttr at8pt +\font\sevenrm= rm-anttr at7pt +\font\sixrm= rm-anttr at6pt +\font\fiverm= rm-anttr at5pt +% math italic +\font\seventeeni= mi-anttri at17.28pt +\font\fourteeni= mi-anttri at14.4pt +\font\twelvei= mi-anttri at12pt +\font\eleveni= mi-anttri at11pt +\font\teni= mi-anttri +\font\ninei= mi-anttri at9pt +\font\eighti= mi-anttri at8pt +\font\seveni= mi-anttri at7pt +\font\sixi= mi-anttri at6pt +\font\fivei= mi-anttri at5pt +% math symbols +\font\seventeensy= sy-anttrz at17.28pt +\font\fourteensy= sy-anttrz at14.4pt +\font\twelvesy= sy-anttrz at12pt +\font\elevensy= sy-anttrz at11pt +\font\tensy= sy-anttrz +\font\ninesy= sy-anttrz at9pt +\font\eightsy= sy-anttrz at8pt +\font\sevensy= sy-anttrz at7pt +\font\sixsy= sy-anttrz at6pt +\font\fivesy= sy-anttrz at5pt +% math extension +\font\seventeenex= ex-anttr at17.28pt +\font\fourteenex= ex-anttr at14.4pt +\font\twelveex= ex-anttr at12pt +\font\elevenex= ex-anttr at11pt +\font\tenex= ex-anttr +\font\nineex= ex-anttr at9pt +\font\eightex= ex-anttr at8pt +\font\sevenex= ex-anttr at7pt +\font\sixex= ex-anttr at6pt +\font\fiveex= ex-anttr at5pt +% boldface +\font\seventeenbf= qx-anttb at17.28pt +\font\fourteenbf= qx-anttb at14.4pt +\font\twelvebf= qx-anttb at12pt +\font\elevenbf= qx-anttb at11pt +\font\tenbf= qx-anttb +\font\ninebf= qx-anttb at9pt +\font\eightbf= qx-anttb at8pt +\font\sevenbf= qx-anttb at7pt +\font\sixbf= qx-anttb at6pt +\font\fivebf= qx-anttb at5pt +% typewriter +\font\seventeentt= qx-lmtt12 at17.28pt +\font\fourteentt= qx-lmtt12 at14.4pt +\font\twelvett= qx-lmtt12 +\font\eleventt= qx-lmtt10 at11pt +\font\tentt= qx-lmtt10 +\font\ninett= qx-lmtt9 +\font\eighttt= qx-lmtt8 +\font\seventt= qx-lmtt8 at7pt +\font\sixtt= qx-lmtt8 at6pt +\font\fivett= qx-lmtt8 at5pt +% text italic +\font\seventeenit= qx-anttri at17.28pt +\font\fourteenit= qx-anttri at14.4pt +\font\twelveit= qx-anttri at12pt +\font\elevenit= qx-anttri at11pt +\font\tenit= qx-anttri +\font\nineit= qx-anttri at9pt +\font\eightit= qx-anttri at8pt +\font\sevenit= qx-anttri at7pt +\font\sixit= qx-anttri at6pt +\font\fiveit= qx-anttri at5pt +% +\skewchar\seventeeni='177 \skewchar\fourteeni='177 \skewchar\twelvei='177 +\skewchar\eleveni='177 \skewchar\teni='177 \skewchar\ninei='177 +\skewchar\eighti='177 \skewchar\seveni='177 \skewchar\sixi='177 +\skewchar\fivei='177 +\skewchar\seventeensy='60 \skewchar\fourteensy='60 \skewchar\twelvesy='60 +\skewchar\elevensy='60 \skewchar\tensy='60 \skewchar\ninesy='60 +\skewchar\eightsy='60 \skewchar\sevensy='60 \skewchar\sixsy='60 +\skewchar\fivesy='60 +% +\let\usereightpointmacro=\relax +\def\eightpoint{\let\pointsize=\eightpoint + \textfont0=\eightrm \scriptfont0=\sixrm \scriptscriptfont0=\fiverm + \def\rm{\fam\z@\eightrm}% + \textfont1=\eighti \scriptfont1=\sixi \scriptscriptfont1=\fivei + \def\mit{\fam\@ne}\def\oldstyle{\fam\@ne\eighti}% + \textfont2=\eightsy \scriptfont2=\sixsy \scriptscriptfont2=\fivesy + \def\cal{\fam\tw@}% + \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex + \textfont\itfam=\eightit + \def\it{\fam\itfam\eightit}% + \textfont\bffam=\eightbf \scriptfont\bffam=\sixbf + \scriptscriptfont\bffam=\fivebf + \def\bf{\fam\bffam\eightbf}% + \textfont\ttfam=\eighttt \def\tt{\fam\ttfam\eighttt}% + \def\big##1{{\hbox{$\left##1\vbox to8.5\p@{}\right.\n@space$}}}% + \def\Big##1{{\hbox{$\left##1\vbox to11.5\p@{}\right.\n@space$}}}% + \def\bigg##1{{\hbox{$\left##1\vbox to14.5\p@{}\right.\n@space$}}}% + \def\Bigg##1{{\hbox{$\left##1\vbox to17.5\p@{}\right.\n@space$}}}% + \setnormalsp@cing \usereightpointmacro} +% +\let\userninepointmacro=\relax +\def\ninepoint{\let\pointsize=\ninepoint + \textfont0=\ninerm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm + \def\rm{\fam\z@\ninerm}% + \textfont1=\ninei \scriptfont1=\seveni \scriptscriptfont1=\fivei + \def\mit{\fam\@ne}\def\oldstyle{\fam\@ne\ninei}% + \textfont2=\ninesy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy + \def\cal{\fam\tw@}% + \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex + \textfont\itfam=\nineit + \def\it{\fam\itfam\nineit}% + \textfont\bffam=\ninebf \scriptfont\bffam=\sevenbf + \scriptscriptfont\bffam=\fivebf + \def\bf{\fam\bffam\ninebf}% + \textfont\ttfam=\ninett \def\tt{\fam\ttfam\ninett}% + \def\big##1{{\hbox{$\left##1\vbox to8.5\p@{}\right.\n@space$}}}% + \def\Big##1{{\hbox{$\left##1\vbox to11.5\p@{}\right.\n@space$}}}% + \def\bigg##1{{\hbox{$\left##1\vbox to14.5\p@{}\right.\n@space$}}}% + \def\Bigg##1{{\hbox{$\left##1\vbox to17.5\p@{}\right.\n@space$}}}% + \setnormalsp@cing \userninepointmacro} +% +\let\usertenpointmacro=\relax +\def\tenpoint{\let\pointsize=\tenpoint + \textfont0=\tenrm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm + \def\rm{\fam\z@\tenrm}% + \textfont1=\teni \scriptfont1=\seveni \scriptscriptfont1=\fivei + \def\mit{\fam\@ne}\def\oldstyle{\fam\@ne\teni}% + \textfont2=\tensy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy + \def\cal{\fam\tw@}% + \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex + \textfont\itfam=\tenit + \def\it{\fam\itfam\tenit}% + \textfont\bffam=\tenbf \scriptfont\bffam=\sevenbf + \scriptscriptfont\bffam=\fivebf + \def\bf{\fam\bffam\tenbf}% + \textfont\ttfam=\tentt \def\tt{\fam\ttfam\tentt}% + \def\big##1{{\hbox{$\left##1\vbox to8.5\p@{}\right.\n@space$}}}% + \def\Big##1{{\hbox{$\left##1\vbox to11.5\p@{}\right.\n@space$}}}% + \def\bigg##1{{\hbox{$\left##1\vbox to14.5\p@{}\right.\n@space$}}}% + \def\Bigg##1{{\hbox{$\left##1\vbox to17.5\p@{}\right.\n@space$}}}% + \setnormalsp@cing \usertenpointmacro} +% +\let\userelevenpointmacro=\relax +\def\elevenpoint{\let\pointsize=\elevenpoint + \textfont0=\elevenrm \scriptfont0=\eightrm \scriptscriptfont0=\fiverm + \def\rm{\fam\z@\elevenrm}% + \textfont1=\eleveni \scriptfont1=\eighti \scriptscriptfont1=\fivei + \def\mit{\fam\@ne}\def\oldstyle{\fam\@ne\eleveni}% + \textfont2=\elevensy \scriptfont2=\eightsy \scriptscriptfont2=\fivesy + \def\cal{\fam\tw@}% + \textfont3=\elevenex \scriptfont3=\elevenex \scriptscriptfont3=\elevenex% + \textfont\itfam=\elevenit + \def\it{\fam\itfam\elevenit}% + \textfont\bffam=\elevenbf \scriptfont\bffam=\eightbf + \scriptscriptfont\bffam=\fivebf + \def\bf{\fam\bffam\elevenbf}% + \textfont\ttfam=\eleventt \def\tt{\fam\ttfam\eleventt}% + \def\big##1{{\hbox{$\left##1\vbox to9.3\p@{}\right.\n@space$}}}% + \def\Big##1{{\hbox{$\left##1\vbox to12.6\p@{}\right.\n@space$}}}% + \def\bigg##1{{\hbox{$\left##1\vbox to16\p@{}\right.\n@space$}}}% + \def\Bigg##1{{\hbox{$\left##1\vbox to19.2\p@{}\right.\n@space$}}}% + \setnormalsp@cing \userelevenpointmacro} +% +\let\usertwelvepointmacro=\relax +\def\twelvepoint{\let\pointsize=\twelvepoint + \textfont0=\twelverm \scriptfont0=\ninerm \scriptscriptfont0=\sixrm + \def\rm{\fam\z@\twelverm}% + \textfont1=\twelvei \scriptfont1=\ninei \scriptscriptfont1=\sixi + \def\mit{\fam\@ne}\def\oldstyle{\fam\@ne\twelvei}% + \textfont2=\twelvesy \scriptfont2=\ninesy \scriptscriptfont2=\sixsy + \def\cal{\fam\tw@}% + \textfont3=\twelveex \scriptfont3=\twelveex \scriptscriptfont3=\twelveex% + \textfont\itfam=\twelveit + \def\it{\fam\itfam\twelveit}% + \textfont\bffam=\twelvebf \scriptfont\bffam=\ninebf + \scriptscriptfont\bffam=\sixbf + \def\bf{\fam\bffam\twelvebf}% + \textfont\ttfam=\twelvett \def\tt{\fam\ttfam\twelvett}% + \def\big##1{{\hbox{$\left##1\vbox to10.2\p@{}\right.\n@space$}}}% + \def\Big##1{{\hbox{$\left##1\vbox to13.8\p@{}\right.\n@space$}}}% + \def\bigg##1{{\hbox{$\left##1\vbox to17.4\p@{}\right.\n@space$}}}% + \def\Bigg##1{{\hbox{$\left##1\vbox to21\p@{}\right.\n@space$}}}% + \setnormalsp@cing \usertwelvepointmacro} +% +\let\userfourteenpointmacro=\relax +\def\fourteenpoint{\let\pointsize=\fourteenpoint + \textfont0=\fourteenrm \scriptfont0=\tenrm \scriptscriptfont0=\sevenrm + \def\rm{\fam\z@\fourteenrm}% + \textfont1=\fourteeni \scriptfont1=\teni \scriptscriptfont1=\seveni + \def\mit{\fam\@ne}\def\oldstyle{\fam\@ne\fourteeni}% + \textfont2=\fourteensy \scriptfont2=\tensy \scriptscriptfont2=\sevensy + \def\cal{\fam\tw@}% + \textfont3=\fourteenex \scriptfont3=\fourteenex \scriptscriptfont3=\fourteenex% + \textfont\itfam=\fourteenit + \def\it{\fam\itfam\fourteenit}% + \textfont\bffam=\fourteenbf \scriptfont\bffam=\tenbf + \scriptscriptfont\bffam=\sixbf + \def\bf{\fam\bffam\fourteenbf}% + \textfont\ttfam=\fourteentt \def\tt{\fam\ttfam\fourteentt}% + \def\big##1{{\hbox{$\left##1\vbox to11.9\p@{}\right.\n@space$}}}% + \def\Big##1{{\hbox{$\left##1\vbox to16.1\p@{}\right.\n@space$}}}% + \def\bigg##1{{\hbox{$\left##1\vbox to20.3\p@{}\right.\n@space$}}}% + \def\Bigg##1{{\hbox{$\left##1\vbox to24.5\p@{}\right.\n@space$}}}% + \setnormalsp@cing \userfourteenpointmacro} +% +\newcount\antttext \antttext=10 +\let\userseventeenpointmacro=\relax +\def\seventeenpoint{\let\pointsize=\seventeenpoint + \textfont0=\seventeenrm \scriptfont0=\twelverm \scriptscriptfont0=\ninerm + \textfont1=\seventeeni \scriptfont1=\twelvei \scriptscriptfont1=\ninei + \def\mit{\fam\@ne}\def\oldstyle{\fam\@ne\seventeeni}% + \textfont2=\seventeensy \scriptfont2=\twelvesy \scriptscriptfont2=\ninesy + \def\cal{\fam\tw@}% + \textfont3=\seventeenex \scriptfont3=\seventeenex \scriptscriptfont3=\seventeenex% + \textfont\itfam=\seventeenit + \textfont\bffam=\seventeenbf \scriptfont\bffam=\twelvebf + \scriptscriptfont\bffam=\ninebf + \textfont\ttfam=\seventeentt + \def\rm{\fam\z@\seventeenrm}% + \def\bf{\fam\bffam\seventeenbf}% + \def\it{\fam\itfam\seventeenit}% + \def\tt{\fam\ttfam\seventeentt}% + \def\big##1{{\hbox{$\left##1\vbox to15.3\p@{}\right.\n@space$}}}% + \def\Big##1{{\hbox{$\left##1\vbox to20.7\p@{}\right.\n@space$}}}% + \def\bigg##1{{\hbox{$\left##1\vbox to26.1\p@{}\right.\n@space$}}}% + \def\Bigg##1{{\hbox{$\left##1\vbox to31.5\p@{}\right.\n@space$}}}% + \setnormalsp@cing \userseventeenpointmacro} +% +\newtoks\baselinefactor \baselinefactor={1.2} +\def\setnormalsp@cing{% + \rm % set the em properly + \normalbaselineskip=\the\baselinefactor em\relax + \normalbaselines + \abovedisplayskip=1.2em plus .3em minus .9em% + \abovedisplayshortskip=0em plus .3em% + \belowdisplayskip=1.2em plus .3em minus .9em% + \belowdisplayshortskip=.7em plus .3em minus .4em% + \setbox\strutbox=\hbox{\vrule height .7\baselineskip + depth .3\baselineskip width\z@}} +% +\mathchardef\equalleft="32CD +\mathchardef\equalright="32CC +\mathchardef\equalc="32CB +\mathchardef\Rightarrow="32D1 +\mathchardef\Leftarrowj="32D0 +\mathchardef\minusleft="32C9 +\mathchardef\minusright="32CA +\mathchardef\minusc="32C8 +\mathchardef\rightarrow="32CF +\mathchardef\leftarrow="32CE +\def\Longrightarrow{\equalleft\joinrel\Rightarrow} +\def\Longleftarrow{\Leftarrowj\joinrel\equalright} +\def\longrightarrow{\minusright\joinrel\rightarrow} +\def\longleftarrow{\leftarrow\joinrel\minusleft} +\def\rightarrowfill{$\m@th\minusright\mkern-7mu% + \cleaders\hbox{$\mkern-2mu\minusc\mkern-2mu$}\hfill + \mkern-7mu\mathord\rightarrow$} +\def\leftarrowfill{$\m@th\mathord\leftarrow\mkern-7mu% + \cleaders\hbox{$\mkern-2mu\minusc\mkern-2mu$}\hfill + \mkern-7mu\minusleft$} +\catcode`@=11 +\endinput diff --git a/Master/texmf-dist/tex/plain/antt/ofs-8x.tex b/Master/texmf-dist/tex/plain/antt/ofs-8x.tex new file mode 100644 index 00000000000..9020181ad4f --- /dev/null +++ b/Master/texmf-dist/tex/plain/antt/ofs-8x.tex @@ -0,0 +1,231 @@ +% Encoding definition of fonts by Storm Type Foundry +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% May 2004 Petr Olsak + +% This file declares "expert encoding" of AntykwaTorunska. + +% See stormtex.html and ofsdoc.tex manuals for more details. + +\protectreading ofs-8x.tex % This is part of OFS package + +\characterdef \minusalt 8x 1 +\characterdef \plusalt 8x 2 +\characterdef \equalalt 8x 3 +\characterdef \dividealt 8x 4 +\characterdef \multiplyalt 8x 5 +\characterdef \plusminusalt 8x 6 +\characterdef \minusplusalt 8x 7 +\characterdef \lessalt 8x 8 +\characterdef \greateralt 8x 9 +\characterdef \greaterequalaltpl 8x 10 +\characterdef \lessequalaltpl 8x 11 +\characterdef \textminusplus 8x 12 +\characterdef \textless 8x 13 +\characterdef \textgreater 8x 14 +\characterdef \textlessequal 8x 15 +\characterdef \textgreaterequal 8x 16 +\characterdef \lessequalalt 8x 17 +\characterdef \greaterequalalt 8x 18 +\characterdef \dotlessisuperior 8x 19 +\characterdef \onehalf 8x 20 +\characterdef \onequarter 8x 21 +\characterdef \onethird 8x 22 +\characterdef \oneeighth 8x 23 +\characterdef \threeeighths 8x 24 +\characterdef \fiveeighths 8x 25 +\characterdef \seveneighths 8x 26 +\characterdef \threequarters 8x 27 +\characterdef \twothirds 8x 28 +\characterdef \ligfj 8x 29 +\characterdef \ligffj 8x 30 +\characterdef \ligst 8x 33 +\characterdef \ligct 8x 34 +\characterdef \ligTh 8x 35 +\characterdef \dollarsuperior 8x 36 +\characterdef \parenleftsuperior 8x 40 +\characterdef \parenrightsuperior 8x 41 +\characterdef \commasuperior 8x 44 +\characterdef \hyphensuperior 8x 45 +\characterdef \periodsuperior 8x 46 +\characterdef \fraction 8x 47 +\characterdef \zerosuperior 8x 48 +\characterdef \onesuperior 8x 49 +\characterdef \twosuperior 8x 50 +\characterdef \threesuperior 8x 51 +\characterdef \foursuperior 8x 52 +\characterdef \fivesuperior 8x 53 +\characterdef \sixsuperior 8x 54 +\characterdef \sevensuperior 8x 55 +\characterdef \eightsuperior 8x 56 +\characterdef \ninesuperior 8x 57 +\characterdef \sterlingsuperior 8x 91 +\characterdef \yensuperior 8x 92 +\characterdef \dotaccentsuperior 8x 95 +\characterdef \asuperior 8x 97 +\characterdef \bsuperior 8x 98 +\characterdef \csuperior 8x 99 +\characterdef \dsuperior 8x 100 +\characterdef \esuperior 8x 101 +\characterdef \fsuperior 8x 102 +\characterdef \hsuperior 8x 104 +\characterdef \isuperior 8x 105 +\characterdef \lsuperior 8x 108 +\characterdef \msuperior 8x 109 +\characterdef \nsuperior 8x 110 +\characterdef \osuperior 8x 111 +\characterdef \rsuperior 8x 114 +\characterdef \ssuperior 8x 115 +\characterdef \tsuperior 8x 116 +\characterdef \centsuperior 8x 124 +\characterdef \florinsuperior 8x 125 +\characterdef \euro 8x 128 +\characterdef \eurosuperior 8x 129 +\characterdef \zeronumr 8x 130 +\characterdef \onenumr 8x 131 +\characterdef \twonumr 8x 132 +\characterdef \threenumr 8x 133 +\characterdef \fournumr 8x 134 +\characterdef \fivenumr 8x 135 +\characterdef \sixnumr 8x 136 +\characterdef \sevennumr 8x 137 +\characterdef \eightnumr 8x 138 +\characterdef \ninenumr 8x 139 +\characterdef \zerodnom 8x 140 +\characterdef \onednom 8x 141 +\characterdef \twodnom 8x 142 +\characterdef \threednom 8x 143 +\characterdef \fourdnom 8x 144 +\characterdef \fivednom 8x 145 +\characterdef \sixdnom 8x 146 +\characterdef \sevendnom 8x 147 +\characterdef \eightdnom 8x 148 +\characterdef \ninednom 8x 149 +\characterdef \zeroinferior 8x 150 +\characterdef \oneinferior 8x 151 +\characterdef \twoinferior 8x 152 +\characterdef \threeinferior 8x 153 +\characterdef \fourinferior 8x 154 +\characterdef \fiveinferior 8x 155 +\characterdef \sixinferior 8x 156 +\characterdef \seveninferior 8x 157 +\characterdef \eightinferior 8x 158 +\characterdef \nineinferior 8x 159 +\characterdef \equivasymptotic 8x 160 +\characterdef \equivalence 8x 161 +\characterdef \precedes 8x 162 +\characterdef \precedesequal 8x 163 +\characterdef \lessmuch 8x 164 +\characterdef \greatermuch 8x 165 +\characterdef \follows 8x 166 +\characterdef \followsequal 8x 167 +\characterdef \element 8x 168 +\characterdef \owner 8x 169 +\characterdef \propersubset 8x 170 +\characterdef \reflexsubset 8x 171 +\characterdef \propersuperset 8x 172 +\characterdef \reflexsuperset 8x 173 +\characterdef \arrowsouthwest 8x 174 +\characterdef \arrowsoutheast 8x 175 +\characterdef \arrownorthwest 8x 176 +\characterdef \arrownortheast 8x 177 +\characterdef \arrowleft 8x 178 +\characterdef \arrowright 8x 179 +\characterdef \arrowboth 8x 180 +\characterdef \arrowup 8x 181 +\characterdef \arrowdown 8x 182 +\characterdef \arrowdblleft 8x 183 +\characterdef \arrowdblright 8x 184 +\characterdef \arrowdblup 8x 185 +\characterdef \arrowdbldown 8x 186 +\characterdef \arrowdblboth 8x 187 +\characterdef \arrowlefttophalf 8x 188 +\characterdef \arrowrighttophalf 8x 189 +\characterdef \arrowleftbothalf 8x 190 +\characterdef \arrowrightbothalf 8x 191 +\characterdef \similar 8x 192 +\characterdef \asymptoticallyequal 8x 193 +\characterdef \union 8x 194 +\characterdef \intersection 8x 195 +\characterdef \unionmulti 8x 196 +\characterdef \unionsq 8x 197 +\characterdef \intersectionsq 8x 198 +\characterdef \subsetsqequal 8x 199 +\characterdef \supersetsqequal 8x 200 +\characterdef \openbullet 8x 201 +\characterdef \circleminus 8x 202 +\characterdef \circleplus 8x 203 +\characterdef \circledivide 8x 204 +\characterdef \circlemultiply 8x 205 +\characterdef \circledot 8x 206 +\characterdef \circlecopyrt 8x 207 +\characterdef \diamondmath 8x 208 +\characterdef \asteriskmath 8x 209 +\characterdef \latticetop 8x 210 +\characterdef \perpendicular 8x 211 +\characterdef \turnstileleft 8x 212 +\characterdef \turnstileright 8x 213 +\characterdef \floorleft 8x 214 +\characterdef \floorright 8x 215 +\characterdef \ceilingleft 8x 216 +\characterdef \ceilingright 8x 217 +\characterdef \textlangle 8x 218 +\characterdef \textrangle 8x 219 +\characterdef \dblverticalbar 8x 220 +\characterdef \arrowupdndbl 8x 221 +\characterdef \arrowupdn 8x 222 +\characterdef \universal 8x 223 +\characterdef \existential 8x 224 +\characterdef \wreathproduct 8x 225 +\characterdef \club 8x 226 +\characterdef \spade 8x 227 +\characterdef \heart 8x 228 +\characterdef \diamond 8x 229 +\characterdef \logicaland 8x 230 +\characterdef \logicalor 8x 231 +\characterdef \triangle 8x 232 +\characterdef \triangleinv 8x 233 +\characterdef \triangleright 8x 234 +\characterdef \triangleleft 8x 235 +\characterdef \proportional 8x 236 +\characterdef \arrowhookleft 8x 237 +\characterdef \arrowhookright 8x 238 +\characterdef \flat 8x 239 +\characterdef \vector 8x 240 +\characterdef \tie 8x 241 +\characterdef \nabla 8x 242 +\characterdef \dollarinferior 8x 243 +\characterdef \euroinferior 8x 244 +\characterdef \sterlinginferior 8x 245 +\characterdef \yeninferior 8x 246 +\characterdef \centinferior 8x 247 +\characterdef \parenleftinferior 8x 248 +\characterdef \periodinferior 8x 249 +\characterdef \hypheninferior 8x 250 +\characterdef \commainferior 8x 251 +\characterdef \parenrightinferior 8x 252 +\characterdef \trademark 8x 253 +\characterdef \estimated 8x 254 + +\modifydef 8z:antt; {% + \characterdef \degree 8z 176 + \characterdef \euro 8z 134 + \characterdef \trademark 8z 136 + \characterdef \copyright 8z 137 + \characterdef \registered 8z 138 + \characterdef \flq 8z 142 + \characterdef \frq 8z 143 + \characterdef \clq 8z 154 + \characterdef \crq 8z 155 + \characterdef \longs 8z 149 + \characterdef \florin 8z 151 + \accentdel \c T 8z 222 + \accentdel \c t 8z 189 +} + + + + + + + + diff --git a/Master/texmf-dist/tex/plain/antt/pantyk.tex b/Master/texmf-dist/tex/plain/antt/pantyk.tex new file mode 100644 index 00000000000..6779777b5bc --- /dev/null +++ b/Master/texmf-dist/tex/plain/antt/pantyk.tex @@ -0,0 +1,114 @@ +% The file pantyk.tex (C) Petr Olsak, May 2004 +% Polish Antykwa ... OFS declaration file + +% After "\input pantyk", you can use +% +% \showfonts ... to show the loaded fontfamilies on terminal +% \fontusage ... to show the usage of new TeX macros on terminal + +\ifx \ofsdeclarefamily\undefined \input ofs \fi +\protectreading pantyk.tex % This is part of OFS package + +\ofsputfamlist {^^Jpantyk.tex:} + +\ofsdeclarefamily [AntykwaTorunska] {% --------------- AntykwaTorunska + \loadtextfam (Regular) \nowackienc-anttr;% + (Bold) \nowackienc-anttb;% + (Italic) \nowackienc-anttri;% + (BoldItalic) \nowackienc-anttbi;8x;% + \newvariant0 \lr (Light) \nowackienc-anttl;8x;% + \newvariant1 \li (LightItalic) \nowackienc-anttli;8x;% + \newvariant2 \mr (Medium) \nowackienc-anttm;8x;% + \newvariant3 \mi (MediumItalic) \nowackienc-anttmi;8x;% + \modifyenc 8z:antt;% + \def\TeX{T\kern-.08em\lower.3333ex\hbox{E}\kern-0.09emX}% +} +\registerenc: 8t \registerenc: 8z \registerenc: 7k \registerenc: 6w +\registerenc: 8a + +\ofsdeclarefamily [AntykwaTorunskaCaps] {% ------- AntykwaTorunskaCaps + \loadtextfam (Regular) \nowackienc-anttrcap;% + (Bold) \nowackienc-anttbcap;% + (Italic) \nowackienc-anttricap;% + (BoldItalic) \nowackienc-anttbicap;8x;% + \newvariant0 \lr (Light) \nowackienc-anttlcap;8x;% + \newvariant1 \li (LightItalic) \nowackienc-anttlicap;8x;% + \newvariant2 \mr (Medium) \nowackienc-anttmcap;8x;% + \newvariant3 \mi (MediumItalic) \nowackienc-anttmicap;8x;% + \modifyenc 8z:antt;% + \def\TeX{T\kern-.08em\lower.3333ex\hbox{E}\kern-0.09emX}% +} +\registerenc: 8t \registerenc: 8z \registerenc: 7k \registerenc: 6w +\registerenc: 8a + +\ofsdeclarefamily [AntykwaTorunskaCond] {% ------- AntykwaTorunskaCond + \loadtextfam (Regular) \nowackienc-anttcr;% + (Bold) \nowackienc-anttcb;% + (Italic) \nowackienc-anttcri;% + (BoldItalic) \nowackienc-anttcbi;8x;% + \newvariant0 \lr (Light) \nowackienc-anttcl;8x;% + \newvariant1 \li (LightItalic) \nowackienc-anttcli;8x;% + \newvariant2 \mr (Medium) \nowackienc-anttcm;8x;% + \newvariant3 \mi (MediumItalic) \nowackienc-anttcmi;8x;% + \modifyenc 8z:antt;% + \def\TeX{T\kern-.08em\lower.3333ex\hbox{E}\kern-0.09emX}% +} +\registerenc: 8t \registerenc: 8z \registerenc: 7k \registerenc: 6w +\registerenc: 8a + +\ofsdeclarefamily [AntykwaTorunskaCondCaps] {% ---- AntykwaTorunskaCondCaps + \loadtextfam (Regular) \nowackienc-anttcrcap;% + (Bold) \nowackienc-anttcbcap;% + (Italic) \nowackienc-anttcricap;% + (BoldItalic) \nowackienc-anttcbicap;8x;% + \newvariant0 \lr (Light) \nowackienc-anttclcap;8x;% + \newvariant1 \li (LightItalic) \nowackienc-anttclicap;8x;% + \newvariant2 \mr (Medium) \nowackienc-anttcmcap;8x;% + \newvariant3 \mi (MediumItalic) \nowackienc-anttcmicap;8x;% + \modifyenc 8z:antt;% + \def\TeX{T\kern-.08em\lower.3333ex\hbox{E}\kern-0.09emX}% +} +\registerenc: 8t \registerenc: 8z \registerenc: 7k \registerenc: 6w +\registerenc: 8a + +% Janusz Nowacki use a non standard tfm names. We need +% to define a conversion table: + +\def\nowackienc{\csname nowacki:\fotenc\endcsname} +\expandafter \def \csname nowacki:8t\endcsname {ec} +\expandafter \def \csname nowacki:8z\endcsname {cs} +\expandafter \def \csname nowacki:6w\endcsname {1251} +\expandafter \def \csname nowacki:7k\endcsname {wncyr} +\expandafter \def \csname nowacki:8a\endcsname {texansi} +\expandafter \def \csname nowacki:8x\endcsname {exp} + +% The expert fonts are the same for Caps and Normal: + +\registertfm exp-anttrcap - exp-anttr +\registertfm exp-anttbcap - exp-anttb +\registertfm exp-anttricap - exp-anttri +\registertfm exp-anttbicap - exp-anttbi +\registertfm exp-anttlcap - exp-anttl +\registertfm exp-anttlicap - exp-anttli +\registertfm exp-anttmcap - exp-anttm +\registertfm exp-anttmicap - exp-anttmi + +\registertfm exp-anttcrcap - exp-anttcr +\registertfm exp-anttcbcap - exp-anttcb +\registertfm exp-anttcricap - exp-anttcri +\registertfm exp-anttcbicap - exp-anttcbi +\registertfm exp-anttclcap - exp-anttcl +\registertfm exp-anttclicap - exp-anttcli +\registertfm exp-anttcmcap - exp-anttcm +\registertfm exp-anttcmicap - exp-anttcmi + +\ofsdeclarefamily [AntykwaPoltawskiego] {% --------------- AntykwaPoltawskiego + \loadtextfam (Regular) antpr;% + (Bold) antpb;% + (Italic) antpri;% + (BoldItalic) antpbi;;% + \def\TeX{T\kern-.08em\lower.3333ex\hbox{E}\kern-0.09emX}% +} +\registerenc: 8t \registerenc: 8z + +\endinput diff --git a/Master/texmf-dist/tex/plain/armenian/arm.tex b/Master/texmf-dist/tex/plain/armenian/arm.tex new file mode 100644 index 00000000000..bbc5700692b --- /dev/null +++ b/Master/texmf-dist/tex/plain/armenian/arm.tex @@ -0,0 +1,97 @@ +%% This file is a part of the ArmTeX 2.0 +%% [1999/06/01 v2.0 arm.tex (plain TeX input file for writing in Armenian)] +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%% Making '@' letter. +%% +\catcode`\@=11 + + +%% Double input protection. +%% +\expandafter\ifx\csname ArmTeX@PlainLoaded\endcsname\relax +\let\ArmTeX@PlainLoaded\null\else\endinput\fi + + +%% Some auxilliary macros. +%% +\def\ArmTeX@Armtoday{\number\day~\ifcase\month\or + hunvari\or phetrvari\or marti\or aprili\or maisi\or hunisi\or + hulisi\or o'gostosi\or septemberi\or hoktemberi\or noyemberi\or + dektemberi\fi~\number\year th.} +\def\ArmTeX@Armdischyph{\discretionary{\char123}{}{}} +\let\ArmTeX@Savedexclam=\! +\let\ArmTeX@Savedbar=\| +\let\ArmTeX@Savedstar=\* +\let\ArmTeX@Saveddischyph=\- +\let\ArmTeX@Savedtoday=\today + + +%% User macros. +%% +\def\armdate{\let\today\ArmTeX@Armtoday} +\def\armhyph{\let\-\ArmTeX@Armdischyph + \let\@dischyph\ArmTeX@Armdischyph} +\def\armdateoff{\let\today\ArmTeX@Savedtoday} +\def\armhyphoff{\let\-\ArmTeX@Saveddischyph + \let\@dischyph\ArmTeX@Saveddischyph} +\def\ArmTeX{{A\kern -0.08ex\raise 0.63ex\hbox{\smash{r}}\kern -0.22em% + \lower 0.43ex\hbox{m}\kern -0.16em\aroff\TeX}} +\def\latArmTeX{{Arm\kern -0.15em\TeX}} + +\chardef\textbraceleft=94 +\chardef\textbraceright=95 +\chardef\textdollar=36 +\chardef\texthash=35 +\chardef\textpercent=37 +\chardef\textand=38 +\chardef\textexclam=126 +\chardef\textquestion=127 +\def\textanjgic{\leavevmode + \kern0.02em\vrule height0.4ex depth-0.25ex width0.8em\kern0.02em\relax} +\def\textbreaklig{{\kern0pt}} +\let\?\textquestion +\def\*{\ifmmode\ArmTeX@Savedstar\else\textbreaklig\fi} +\def\!{\ifmmode\ArmTeX@Savedexclam\else\textexclam\fi} +\def\|{\ifmmode\ArmTeX@Savedbar\else\textanjgic\fi} +\def\{{\ifmmode\lbrace\else\textbraceleft\relax\fi} +\def\}{\ifmmode\rbrace\else\textbraceright\relax\fi} +\def\vdots{\vbox{\baselineskip4\p@ \lineskiplimit\z@ + \kern6\p@\hbox{$\ldotp$}\hbox{$\ldotp$}\hbox{$\ldotp$}}} +\def\ddots{\mathinner{\mkern1mu\raise7\p@ + \vbox{\kern7\p@\hbox{$\ldotp$}}\mkern2mu + \raise4\p@\hbox{$\ldotp$}\mkern2mu\raise\p@\hbox{$\ldotp$}\mkern1mu}} + + +%% Font changing macros. +%% +\let\arofffont=\rm +\def\aroff{\armdateoff\armhyphoff\arofffont} + +\def\ArmTeX@DeclarePlainFont#1#2#3{% +\font#1=#2 +\hyphenchar #1=-1 +\def#3{\armdate\armhyph #1}} + +\ArmTeX@DeclarePlainFont{\tenartmrm}{artmr10}{\artm} +\ArmTeX@DeclarePlainFont{\tenartmbf}{artmb10}{\artmbf} +\ArmTeX@DeclarePlainFont{\tenartmsl}{artmsl10}{\artmsl} +\ArmTeX@DeclarePlainFont{\tenartmbfsl}{artmbs10}{\artmbfsl} +\ArmTeX@DeclarePlainFont{\tenartmit}{artmi10}{\artmit} +\ArmTeX@DeclarePlainFont{\tenartmbfit}{artmbi10}{\artmbfit} +\ArmTeX@DeclarePlainFont{\tenarssrm}{arssr10}{\arss} +\ArmTeX@DeclarePlainFont{\tenarsssl}{arsssl10}{\arsssl} +\ArmTeX@DeclarePlainFont{\tenarssbf}{arssb10}{\arssbf} +\ArmTeX@DeclarePlainFont{\tenarssbfsl}{arssbs10}{\arssbfsl} + + +%% Making '@' other. +%% +\catcode`\@=12 + + +%% That's all, Folks! +%% +\endinput diff --git a/Master/texmf-dist/tex/plain/armenian/kbdencod.tex b/Master/texmf-dist/tex/plain/armenian/kbdencod.tex new file mode 100644 index 00000000000..6b315b3f909 --- /dev/null +++ b/Master/texmf-dist/tex/plain/armenian/kbdencod.tex @@ -0,0 +1,132 @@ +%% This file is a part of the ArmTeX 2.0 +%% [1999/06/01 v2.0 kbdencod.tex (ArmSCII8 input encoding for plain)] +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%% Begining of the code. +%% +\def\DeclareInputText#1#2{% + \bgroup + \uccode`\~#1% + \uppercase{% + \egroup + \catcode`~=13 + \def~% + }{#2} +} + + +%% Upper-case letters. +%% +\DeclareInputText{178}{A}% Upper-case A (Ayb) letter. +\DeclareInputText{180}{B}% Upper-case B (Ben) letter. +\DeclareInputText{182}{G}% Upper-case G (Gim) letter. +\DeclareInputText{184}{D}% Upper-case D (Da) letter. +\DeclareInputText{186}{E}% Upper-case E (Ech) letter. +\DeclareInputText{188}{Z}% Upper-case Z (Za) letter. +\DeclareInputText{190}{E'}% Upper-case E' (E') letter. +\DeclareInputText{192}{U'}% Upper-case U' (U'th) letter. +\DeclareInputText{194}{TH}% Upper-case TH (Tho) letter. +\DeclareInputText{196}{G'}% Upper-case G' (G'e) letter. +\DeclareInputText{198}{I}% Upper-case I (Ini) letter. +\DeclareInputText{200}{L}% Upper-case L (Lyun) letter. +\DeclareInputText{202}{X}% Upper-case X (Xe) letter. +\DeclareInputText{204}{C'}% Upper-case C' (C'a) letter. +\DeclareInputText{206}{K}% Upper-case K (Ken) letter. +\DeclareInputText{208}{H}% Upper-case H (Ho) letter. +\DeclareInputText{210}{DZ}% Upper-case DZ (Dza) letter. +\DeclareInputText{212}{GH}% Upper-case GH (Ghat) letter. +\DeclareInputText{214}{J'}% Upper-case J' (J'e) letter. +\DeclareInputText{216}{M}% Upper-case M (Men) letter. +\DeclareInputText{218}{Y}% Upper-case Y (Hi) letter. +\DeclareInputText{220}{N}% Upper-case N (Nu) letter. +\DeclareInputText{222}{SH}% Upper-case SH (Sha) letter. +\DeclareInputText{224}{O}% Upper-case O (O) letter. +\DeclareInputText{226}{CH}% Upper-case CH (Cha) letter. +\DeclareInputText{228}{P}% Upper-case P (Pe) letter. +\DeclareInputText{230}{J}% Upper-case J (Je) letter. +\DeclareInputText{232}{R'}% Upper-case R' (R'a) letter. +\DeclareInputText{234}{S}% Upper-case S (Se) letter. +\DeclareInputText{236}{V}% Upper-case V (Vev) letter. +\DeclareInputText{238}{T}% Upper-case T (Tyun) letter. +\DeclareInputText{240}{R}% Upper-case R (Re) letter. +\DeclareInputText{242}{C}% Upper-case C (Co) letter. +\DeclareInputText{244}{W}% Upper-case W (Vyun) letter. +\DeclareInputText{246}{PH}% Upper-case PH (Phyur) letter. +\DeclareInputText{248}{Q}% Upper-case Q (Qe) letter. +\DeclareInputText{250}{O'}% Upper-case O' (O') letter. +\DeclareInputText{252}{F}% Upper-case F (Fe) letter. + + +%% Lower-case letters. +%% +\DeclareInputText{179}{a}% Lower-case a (ayb) letter. +\DeclareInputText{181}{b}% Lower-case b (ben) letter. +\DeclareInputText{183}{g}% Lower-case g (gim) letter. +\DeclareInputText{185}{d}% Lower-case d (da) letter. +\DeclareInputText{187}{e}% Lower-case e (ech) letter. +\DeclareInputText{189}{z}% Lower-case z (za) letter. +\DeclareInputText{191}{e'}% Lower-case e' (e') letter. +\DeclareInputText{193}{u'}% Lower-case u' (u'th) letter. +\DeclareInputText{195}{th}% Lower-case th (tho) letter. +\DeclareInputText{197}{g'}% Lower-case g' (g'e) letter. +\DeclareInputText{199}{i}% Lower-case i (ini) letter. +\DeclareInputText{201}{l}% Lower-case l (lyun) letter. +\DeclareInputText{203}{x}% Lower-case x (xe) letter. +\DeclareInputText{205}{c'}% Lower-case c' (c'a) letter. +\DeclareInputText{207}{k}% Lower-case k (ken) letter. +\DeclareInputText{209}{h}% Lower-case h (ho) letter. +\DeclareInputText{211}{dz}% Lower-case dz (dza) letter. +\DeclareInputText{213}{gh}% Lower-case gh (ghat) letter. +\DeclareInputText{215}{j'}% Lower-case j' (j'e) letter. +\DeclareInputText{217}{m}% Lower-case m (men) letter. +\DeclareInputText{219}{y}% Lower-case y (hi) letter. +\DeclareInputText{221}{n}% Lower-case n (nu) letter. +\DeclareInputText{223}{sh}% Lower-case sh (sha) letter. +\DeclareInputText{225}{o}% Lower-case o (o) letter. +\DeclareInputText{227}{ch}% Lower-case ch (cha) letter. +\DeclareInputText{229}{p}% Lower-case p (pe) letter. +\DeclareInputText{231}{j}% Lower-case j (je) letter. +\DeclareInputText{233}{r'}% Lower-case r' (r'a) letter. +\DeclareInputText{235}{s}% Lower-case s (se) letter. +\DeclareInputText{237}{v}% Lower-case v (vev) letter. +\DeclareInputText{239}{t}% Lower-case t (tyun) letter. +\DeclareInputText{241}{r}% Lower-case r (re) letter. +\DeclareInputText{243}{c}% Lower-case c (co) letter. +\DeclareInputText{245}{w}% Lower-case w (vyun) letter. +\DeclareInputText{247}{ph}% Lower-case ph (phyur) letter. +\DeclareInputText{249}{q}% Lower-case q (ge) letter. +\DeclareInputText{251}{o'}% Lower-case o' (o') letter. +\DeclareInputText{253}{f}% Lower-case f (fe) letter. + + +%% Miscelanious Symbols. +%% +% Commenting following line, since there is no eternity symbol available. +% \DeclareInputText{161}{}% Eternity sign (armeternity) +\DeclareInputText{162}{\S}% Section sign (armsection) +\DeclareInputText{163}{:}% Verjaket (armfullstop) +\DeclareInputText{164}{)}% Aj phakagic' (armparenright) +\DeclareInputText{165}{(}% Dzax phakagic' (armparenleft) +\DeclareInputText{166}{>>}% Aj chakert (armquotright) +\DeclareInputText{167}{<<}% Dzax chakert(armquotleft) +\DeclareInputText{168}{\textanjgic}% Anjatman gic' (armemdash) +\DeclareInputText{169}{.}% Mijaket (armdot) +\DeclareInputText{170}{`}% Buth (armsep) +\DeclareInputText{171}{,}% Storaket (armcoma) +\DeclareInputText{172}{-}% Miuthyan gc'ik (armendash) +\DeclareInputText{173}{--}% Toghadardzi nshan (armyentamna) +\DeclareInputText{174}{...}% Kaxman keter (armellipsis) +\DeclareInputText{175}{!}% Bacakanchakan nshan (armexclam) +\DeclareInputText{176}{|}% Shesht (armaccent) +\DeclareInputText{177}{?}% Harcakan nshan (armquestion) +\DeclareInputText{254}{'}% Apatharc (armapostrophe) +% Coding "Apatharc" as 255 (except as 254), since it can +% be found in that position in many ArmSCII8 fonts. +\DeclareInputText{255}{'}% Apatharc (armapostrophe) + + +%% That's all, Folks! +%% +\endinput diff --git a/Master/texmf-dist/tex/plain/base/fontchart.tex b/Master/texmf-dist/tex/plain/base/fontchart.tex new file mode 100644 index 00000000000..6acc6211551 --- /dev/null +++ b/Master/texmf-dist/tex/plain/base/fontchart.tex @@ -0,0 +1,89 @@ +% make a (fairly large) font chart + +\newlinechar=`@ +\message{@Name of the font to chart = } +\read-1 to \fontname + +\font\f=\fontname at .75in +\f + +% Here's the best way I know to discover character height and depth +% when they are possibly negative. +\fontdimen5\f=-10000pt % a new (rather small) xheight +\textfont0=\f +\newdimen\h \newdimen\d % will be set to the character's height, depth +\def\htdp#1{\setbox0=\hbox{\char#1}\h=-\ht0 + \setbox0=\hbox{\accent#1\char#1}\advance\h\ht0 \advance\h-10000pt + \setbox0=\null \wd0=-10000pt % in case the character has a charlist! + \setbox0=\hbox{$\mathaccent#1{\box0}$}% + \d=\ht0 \advance\d-10000pt \advance\d-\h} + +% (By the way, my previous best was this: +% \textfont15=\f % use family "F +% \fontdimen8\tenex=0pt % set defaultrulethickness zero +% \setbox1=\null \ht1=-10000pt \setbox2=\null \dp3=-10000pt +% \newdimen\d \newdimen\h \newcount\n +% \n=#1 \advance\n"F00 +% \setbox0=\hbox{$\radical\n{\copy1}$} +% \d=\dp0 \advance\d-5000pt \advance\d\d %\showthe\d +% \setbox0=\hbox{$\radical\n{\copy2}$} +% \h=\ht0 \advance\h-5000pt \advance\h-.5\d +% \ifdim\h>0pt \h=.5\h \fi +% ....very tricky! But it works only when height+depth is positive.) + +\tracinglostchars=0 +\nopagenumbers + +\def\testrow#1#2{\setbox0=\hbox{\penalty1\def\\{\char'#1#2}% + \\0\\1\\2\\3\\4\\5\\6\\7\global\chardef\p=\lastpenalty}} % p=1 if none there + +\raggedbottom +\baselineskip=1in +\topskip=.75in +\newdimen\w \w=.75in +\headline={\vtop{\hbox{\tt\fontname\unskip, page \folio\hfil} + \kern-.75in\unitsdigits}\hss} +\footline={\unitsdigits\hss} +\def\unitsdigits{\hbox{\kern.3in \tt + \hbox to\w{\ \ 0\hss}% + \hbox to\w{\ \ 1\hss}% + \hbox to\w{\ \ 2\hss}% + \hbox to\w{\ \ 3\hss}% + \hbox to\w{\ \ 4\hss}% + \hbox to\w{\ \ 5\hss}% + \hbox to\w{\ \ 6\hss}% + \hbox to\w{\ \ 7\hss}}} + +\def\row#1#2{\testrow#1#2% +\ifnum\p=0\hbox{\hbox to.3in{\tt#1#2\hfil}% + \mod#1#20\mod#1#21\mod#1#22\mod#1#23\mod#1#24\mod#1#25\mod#1#26\mod#1#27% + \hbox to.3in{\tt\hfil#1#2}}\fi} + +\newdimen\pixel \pixel=.00333333in +\def\mod#1#2#3{\chardef\c='#1#2#3 \htdp\c + \setbox0=\hbox{\penalty1\c\global\chardef\p=\lastpenalty}% + \ifnum\p=1 \hbox to\w{}\else + \setbox2=\hbox{\c\/}% + \hbox to\w{\kern-\pixel \vrule width\pixel height\h depth\d + \copy\leftbox\copy0\copy\rightbox + \vrule width\pixel height\h depth\d \kern-\pixel \kern-\wd0 + \raise\h\vbox{\hrule height\pixel width\wd0}\kern-\wd0 + \lower\d\vbox{\hrule height0pt depth\pixel width\wd0}\kern-\wd0 + \ifdim\wd2>\wd0 \kern\wd2\raise\h\copy\icbox \fi + \hss}\fi} + +\newbox\leftbox % marking the baseline at the left +\setbox\leftbox=\hbox{\kern-\pixel\vrule width\pixel height4pt + \vrule height0pt depth\pixel width4pt \kern-4pt} +\newbox\rightbox % marking the baseline at the right +\setbox\rightbox=\hbox{\kern-4pt\vrule height0pt depth\pixel width4pt + \vrule width\pixel height4pt \kern-\pixel} +\newbox\icbox % the mark of an italic correction +\setbox\icbox=\hbox{\kern-4pt\vrule height\pixel width4pt depth0pt + \vrule width\pixel depth4pt} + +\row00 \row01 \row02 \row03 \row04 \row05 \row06 \row07 +\row10 \row11 \row12 \row13 \row14 \row15 \row16 \row17 +\row20 \row21 \row22 \row23 \row24 \row25 \row26 \row27 +\row30 \row31 \row32 \row33 \row34 \row35 \row36 \row37 +\bye diff --git a/Master/texmf-dist/tex/plain/base/gkpmac.tex b/Master/texmf-dist/tex/plain/base/gkpmac.tex new file mode 100644 index 00000000000..cdcd7b9c087 --- /dev/null +++ b/Master/texmf-dist/tex/plain/base/gkpmac.tex @@ -0,0 +1,859 @@ +\tracingpages=1 % TEMPORARY! +% Macros for `Concrete Mathematics' +\ifx\gkpmac\fmtversion\endinput\else\let\gkpmac=\fmtversion\fi + +% Fonts for regular text + +\font\textrm=ccr10 % roman +\font\textit=ccti10 % italic (emphasis) +\font\textsl=ccsl10 % slanted (titles) +\font\textbf=cmbx10 % bold +\font\textcsc=cccsc10 % caps and small caps +\font\oldsty=ccmi10 % equation numbers + +% Fonts for regular math +% I'm setting \fontdimen2 to zero because AMS forgot to do it; +% they may have fixed the problem in the meantime, but no harm is done + +\font\mathtext=ccr10 + \font\mathsubtext=ccr7 + \font\mathsubsubtext=ccr5 +\font\mathlet=eurm10 \fontdimen2\mathlet=0pt + \font\mathsublet=eurm7 \fontdimen2\mathsublet=0pt + \font\mathsubsublet=eurm5 \fontdimen2\mathsubsublet=0pt + \skewchar\mathlet='177 \skewchar\mathsublet='177 \skewchar\mathsubsublet='177 +\font\mathsym=cmsy10 + \font\mathsubsym=cmsy7 + \font\mathsubsubsym=cmsy5 + \skewchar\mathsym='60 \skewchar\mathsubsym='60 \skewchar\mathsubsubsym='60 +\font\mathext=cmex10 + \font\mathsubext=cmex10 + \font\mathsubsubext=cmex10 +\font\mathscr=euxm10\fontdimen2\mathscr=0pt + \font\mathsubscr=euxm7 \fontdimen2\mathsubscr=0pt + \font\mathsubsubscr=euxm5 \fontdimen2\mathsubsubscr=0pt + \skewchar\mathscr='60 \skewchar\mathsubscr='60 \skewchar\mathsubsubscr='60 +\font\mathfr=eufm10\fontdimen2\mathfr=0pt + \font\mathsubfr=eufm7 \fontdimen2\mathsubfr=0pt + \font\mathsubsubfr=eufm5 \fontdimen2\mathsubsubfr=0pt +\font\matheuex=euex10\fontdimen2\matheuex=0pt + +\font\eulerbf=eurb10 \fontdimen2\eulerbf=0pt % not hooked in to these macros + +% Fonts for graffiti + +\font\gtext=ccslc9 +\font\goldstyle=ccmic9 + \fontdimen3\gtext=0pt \fontdimen4\gtext=0pt % no stretch or shrink +\font\gmathtext=ccr9 + \font\gmathsubtext=ccr6 + \font\gmathsubsubtext=ccr5 +\font\gmathlet=eurm10 scaled 900 \fontdimen2\gmathlet=0pt + \font\gmathsublet=eurm7 scaled 857 \fontdimen2\gmathsublet=0pt + \font\gmathsubsublet=eurm5 \fontdimen2\gmathsubsublet=0pt + \skewchar\gmathlet='177 \skewchar\gmathsublet='177 + \skewchar\gmathsubsublet='177 +\font\gmathsym=cmsy9 + \font\gmathsubsym=cmsy6 + \font\gmathsubsubsym=cmsy5 + \skewchar\gmathsym='60 \skewchar\gmathsubsym='60 \skewchar\gmathsubsubsym='60 +\font\gmathext=cmex9 + \font\gmathsubext=cmex9 + \font\gmathsubsubext=cmex9 +\font\gmathscr=euxm10 scaled 900 \fontdimen2\gmathscr=0pt + \font\gmathsubscr=euxm7 scaled 857 \fontdimen2\gmathsubscr=0pt + \font\gmathsubsubscr=euxm5 \fontdimen2\gmathsubsubscr=0pt + \skewchar\gmathscr='60 \skewchar\gmathsubscr='60 \skewchar\gmathsubsubscr='60 +\font\gmathfr=eufm10 scaled 900 \fontdimen2\gmathfr=0pt + \font\gmathsubfr=eufm7 scaled 857 \fontdimen2\gmathsubfr=0pt + \font\gmathsubsubfr=eufm5 \fontdimen2\gmathsubsubfr=0pt +\font\gmatheuex=euex9 \fontdimen2\gmatheuex=0pt + +% Fonts for headings, etc. + +\font\chapfont=cmbxcd10 scaled 8000 +\font\title=cmbx10 scaled \magstep5 +\font\subtitle=cmbx10 scaled 1315 % that's magstep 1.5 +\font\subsubtitle=cmbxsl10 +\font\runhead=cmbx9 +\font\foliofont=cmr9 +\font\gtfont=cmmi9 % for the \t accent +\font\ninesl=ccsl9 % used in the index only + +% Normal text conventions + +\catcode`@=11 % borrow the private macros of PLAIN (with care) +\def\wlog#1{} % don't put allocation info into the log + +\hsize=28pc +\vsize=45.25pc +\parindent=20pt +\baselineskip=13pt + +\let\sc=\textcsc +\let\bf=\textbf +\def\textindent#1{\noindent\hbox to\parindent{\bf#1\hfil}\ignorespaces} +\def\exitem{\hangindent2\parindent \textindent} + +\textfont0=\mathtext + \scriptfont0=\mathsubtext + \scriptscriptfont0=\mathsubsubtext +\textfont1=\mathlet \let\tfont=\teni + \scriptfont1=\mathsublet + \scriptscriptfont1=\mathsubsublet +\textfont2=\mathsym + \scriptfont2=\mathsubsym + \scriptscriptfont2=\mathsubsubsym +\textfont3=\mathext + \scriptfont3=\mathsubext + \scriptscriptfont3=\mathsubsubext +\def\rm{\fam\z@\textrm} +\def\it{\fam\itfam\textit} % \it is family 4, defined in PLAIN +\def\sl{\textsl} +\textfont\itfam=\textit +\newfam\scrfam \ifnum\scrfam=8\relax\else\error\fi % family 8, script +\textfont\scrfam=\mathscr + \scriptfont\scrfam=\mathsubscr + \scriptscriptfont\scrfam=\mathsubsubscr +\def\scr{\fam8 } +\mathcode`0="7130 +\mathcode`1="7131 +\mathcode`2="7132 +\mathcode`3="7133 +\mathcode`4="7134 +\mathcode`5="7135 +\mathcode`6="7136 +\mathcode`7="7137 +\mathcode`8="7138 +\mathcode`9="7139 +\newfam\frfam % family 9, fraktur +\textfont\frfam=\mathfr + \scriptfont\frfam=\mathsubfr + \scriptscriptfont\frfam=\mathsubsubfr +\def\frak{\fam9 } +\newfam\euexfam % family 10, substitions for euler symbols +\newfam\eqfam % family 11, cmr equal signs for Relbar (!) +\font\teneq=cmr10 \textfont\eqfam=\teneq +\font\nineeq=cmr9 +% I'm not using Relbar except in 9&10pt, so this family is very incomplete... + +\mathchardef\intop="1A52 +\mathchardef\ointop="1A48 +\mathchardef\coprod="1A60 +\mathchardef\prod="1A51 +\mathchardef\sum="1A50 +\mathchardef\braceld="A7A \mathchardef\bracerd="A7B +\mathchardef\bracelu="A7C \mathchardef\braceru="A7D +\mathchardef\infty="0A31 + +\mathchardef\nearrow="3A25 +\mathchardef\searrow="3A26 +\mathchardef\nwarrow="3A2D +\mathchardef\swarrow="3A2E +\mathchardef\Leftrightarrow="3A2C +\mathchardef\Leftarrow="3A28 +\mathchardef\Rightarrow="3A29 +\mathchardef\leftrightarrow="3A24 \mathcode`\^^W="3A24 +\mathchardef\leftarrow="3A20 \let\gets=\leftarrow \mathcode`\^^X="3A20 +\mathchardef\rightarrow="3A21 \let\to=\rightarrow \mathcode`\^^Y="3A21 +\def\uparrow{\delimiter"3A22378 } \mathcode`\^^K="3A22 +\def\downarrow{\delimiter"3A23379 } \mathcode`\^^A="3A23 +\def\updownarrow{\delimiter"3A6C33F } +\def\Uparrow{\delimiter"3A2A37E } +\def\Downarrow{\delimiter"3A2B37F } +\def\Updownarrow{\delimiter"3A6D377 } +\mathchardef\leftharpoonup="3A18 +\mathchardef\leftharpoondown="3A19 +\mathchardef\rightharpoonup="3A1A +\mathchardef\rightharpoondown="3A1B + +\textfont\euexfam=\matheuex +\scriptfont\euexfam=\mathsubsym % this is OK since I don't use all characters +% of euex in subscripts/superscripts; otherwise I'd have to make euex7 and euex6 +\scriptscriptfont\euexfam=\mathsubsym % only for \mathchoice, not really chosen +\mathcode`+="292B +\mathcode`-="292D +\mathcode`!="0921 +\mathcode`(="4928 \delcode`(="928300 +\mathcode`)="5929 \delcode`)="929301 +\mathcode`[="495B \delcode`[="95B302 +\mathcode`]="595D \delcode`]="95D303 +\mathcode`=="393D +\mathchardef\Relbar="3B3D % we need the old = to match \Arrows +\mathchardef\Gamma="7100 +\mathchardef\Delta="7101 +\mathchardef\Theta="7102 +\mathchardef\Lambda="7103 +\mathchardef\Xi="7104 +\mathchardef\Pi="7105 +\mathchardef\Sigma="7106 +\mathchardef\Upsilon="7107 +\mathchardef\Phi="7108 +\mathchardef\Psi="7109 +\mathchardef\Omega="710A +\let\varsigma=\sigma \let\varrho=\rho % Euler doesn't have these +\mathchardef\aleph="0840 +\def\rbrace{\delimiter"5867A09 } \let\}=\rbrace +\def\lbrace{\delimiter"4866A08 } \let\{=\lbrace +%\mathchardef\equiv="3811 \let\cong=\equiv % lowres bars weren't spaced right +\mathchardef\leq="3814 \let\le=\leq +\mathchardef\geq="3815 \let\ge=\geq +\mathchardef\Re="083C +\mathchardef\Im="083D +\def\vert{\delimiter"86A30C } +\def\backslash{\delimiter"86E30F } + +\setbox\strutbox=\hbox{\vrule height9pt depth4pt width\z@}% +\newbox\bigstrutbox \newbox\biggstrutbox +\setbox\bigstrutbox=\hbox{\vrule height11pt depth4pt width\z@}% +\def\bigstrut{\relax\ifmmode\copy\bigstrutbox\else\unhcopy\bigstrutbox\fi} +\setbox\biggstrutbox=\hbox{\vrule height17pt depth10pt width\z@}% +\def\biggstrut{\relax\ifmmode\copy\biggstrutbox\else\unhcopy\biggstrutbox\fi} +\rm + +\newmuskip\normalthick \normalthick=5mu plus 5mu +\newmuskip\normalmedmu \normalmedmu=\medmuskip +\newmuskip\displaythick \displaythick=10mu minus 3mu +\everymath{\thickmuskip=\normalthick} + +\abovedisplayskip=8pt plus 3pt minus 2pt % there's 2pt more (opened up) +\belowdisplayskip=10pt plus 3pt minus 2pt + +% displays not centered; all have capability of \eqalign +\outer\def\begindisplay{\obeylines\startdisplay} +{\obeylines\gdef\startdisplay#1 + {\catcode`\^^M=5$$% + \advance\displayindent\parindent\advance\displaywidth-\parindent% + \openup2pt #1\halign\bgroup\span\preamble\cr}} +\outer\def\enddisplay{\crcr\egroup$$} +\jot=\z@ % we do our own opening up + +\def\displaymath{$\thickmuskip=\displaythick\displaystyle} +\def\preamble{\hfil\displaymath{##}$&&\displaymath{{}##}$\hfil} +\def\tablepreamble{\bigstrut\hfil$##$\hfil\ &\vrule##&&\quad\hfil$##$\hfil} +\def\xbox{\qquad\hbox} % for third column of explanation + +\newcount\eqcount +\def\equ(#1.#2){{\rm({\oldsty#1}.{\oldsty#2})}} +\def\eq(#1){\equ(\chapno.#1)} +\def\thiseq{\xdef\next{(\chapno.\number\eqcount)}\expandafter\equ\next} +\def\eqno{\global\advance\eqcount 1 \global\everycr{\makeeqno\thiseq}} +\newdimen\backup +\def\makeeqno#1{\noalign{\global\everycr{}% + \advance\displaywidth\displayindent + \setbox0=\hbox to\displaywidth{\hfil#1}% + \backup=\prevdepth \advance\backup\ht0 + \setbox0=\vbox{\kern-\backup\box0}\ht0=\z@ \dp0=\z@ + \setbox0=\vbox{\box0}\unvbox0}} % that puts equation number on prev line! + +\newif\iftitle +\newskip\chaptopspace \chaptopspace=1in minus 5pt +\def\beginchapter#1 #2 \par{ % we should be at top of a page + \titletrue \eqcount=0 + \ifodd\pageno + \rightline{\chapfont#1\kern-.05em} + \vskip\chaptopspace + \rightline{\title#2} + \moveleft7pc % this applies to the \vbox after the \fi + \else % left-hand page + \leftline{\kern-.05em\chapfont#1} + \vskip\chaptopspace + \leftline{\title#2} \fi + \vbox{\hrule width 35pc} + \def\chapno{#1} \edef\chaptitle{#2} + \mark{#1\enspace #2} + \smallskip\noindent} + +\def\beginsection#1 #2 \par{ % should not be first in the chapter + \backup=\lastskip % but should come on first or second page of chapter + \mark{#1\enspace #2} % because the mark gives running head on right page + \nobreak\vskip-\backup\penalty-200 + {\subtitle\baselineskip=34pt + \noindent\hbox to2\parindent{#1\hfil}\uppercase{\kern-.05em#2}\par} + \nobreak\vskip5pt\noindent\hbox to2\parindent{}} + +\newcount\excount +\def\beginexercises{\backup=\lastskip \excount=0 + \mark{\chapno\enspace Exercises} + \nobreak\vskip-\backup\penalty-200 + {\subtitle\baselineskip=34pt\noindent Exercises\par}\nobreak} + +{\catcode`\|=\active +\gdef\table#1\tabref|#2|{\hrule height1pt width\hsize \kern2pt + \noindent\strut{\bf Table |#2|\enspace}#1\par + \hrule height.5pt width\hsize\tabref|#2|}} + +\def\medbr{\ifnum\lastpenalty>9999 \medskip \else\medbreak\fi} +\def\subhead#1\par{\medbr + {\subsubtitle\noindent#1\par}\nobreak} +\def\ex:{\par{\advance\medskipamount-1pt\medbr}% + \advance\excount 1 \item{\number\excount}} + +\def\dash---{\thinspace---\hskip.16667em\relax} +\def\qback{\kern-.15em} % between , or . and '' +\def\undertext#1{$\underline{\smash{\hbox{#1}}}$} +\def\newline{\hfil\break} +\def\Hint:{{\it Hint:\/}} +\let\macron=\= % we will use \= for congruence relation +\def\t#1{{\edef\next{\the\font}\tfont\accent"7F\next#1}} + +% Here's a definition that was corrected in plain.tex version 3.14159; +% I'm keeping the old version here, because I had already been compensating +% for its deficiencies in script and scriptscript styles; without this +% buggy version, it would be hard for me to match the old pages precisely +\def\bmod{\mskip-\medmuskip\mkern5mu + \mathbin{\rm mod}\penalty900\mkern5mu\mskip-\medmuskip} + +% Graffiti macros +\chardef\other=12 +\newread\grfi \openin\grfi=\jobname.grf +%\newwrite\grfo \immediate\openout\grfo=\jobname.grf % let's hope no conflict +%% Hmmm...; that doesn't work on Unix. +%% Here's my first solution, a kludge where I alternated between .grf and .gr +%\newif\ifgrf \newwrite\grfo \newwrite\grfempty +%\ifeof\grfi \grffalse +%\else\read\grfi to\grfitest \ifeof\grfi \grffalse \else \grftrue \fi\fi +%\ifgrf\else \openin\grfi=\jobname.gr +% \ifeof\grfi\else\read\grfi to\grfitest \fi\fi +%\immediate\openout\grfo=\jobname.gr\ifgrf\else f\fi +%\immediate\write\grfo{} % an empty line will start a nonempty file (Unix only) +%% and then at the end I said +% \immediate\openout\grfempty=\jobname.gr\ifgrf f\fi % clear the input file +%% That solution worked with the following original macros +%\def\testnextgrf{{\def\do##1{\catcode`##1=\other}\dospecials +% \global\read\grfi to\next}\expandafter\testgrf\meaning\next\testgrf} +%\expandafter\def\expandafter\testgrf\meaning\empty#1 #2\testgrf{% +% \setup#2!!!!!$\ifx\thisone\thatone\if#1R\Rtrue\else\Rfalse\fi\else\Rguess\fi} +%% Anyway, here's my second approach to Unix: (order n^2 algorithm) +\def\\{{\def\do##1{\catcode`##1=\other}\dospecials \endlinechar=-1 \let\eol=0 + \gdef\grfmem{} + \expandafter\def\expandafter\gbbl\meaning\empty{} + \def\appgrf{\read\grfi to\g + \ifx\g\empty\else\xdef\grfmem{\grfmem\expandafter\gbbl\meaning\g\eol}\fi} + \def\next{\ifeof\grfi\let\next\relax\else\appgrf\fi\next}\next}} +\\ % now \grfmem is "L aaaaa\eol R bbbbb\eol ... R zzzzz\eol". +\def\testnextgrf#1 #2\eol#3\\{\gdef\grfmem{#3}\setup#2!!!!!$% + \ifx\thisone\thatone\if#1R\Rtrue\else\Rfalse\fi\else\Rguess\fi} +\newwrite\grfo \immediate\openout\grfo=\jobname.grf % no conflict now + +\def\graffiti{% set up graffiti style + \hsize=6pc + \baselineskip=10pt \lineskip=0pt \lineskiplimit=0pt + \parindent=0pt + \mathsurround=1pt + \textfont0=\gmathtext + \scriptfont0=\gmathsubtext + \scriptscriptfont0=\gmathsubsubtext + \textfont1=\gmathlet \let\tfont=\gtfont + \scriptfont1=\gmathsublet + \scriptscriptfont1=\gmathsubsublet + \textfont2=\gmathsym + \scriptfont2=\gmathsubsym + \scriptscriptfont2=\gmathsubsubsym + \textfont3=\gmathext + \scriptfont3=\gmathsubext + \scriptscriptfont3=\gmathsubsubext +\textfont\scrfam=\gmathscr + \scriptfont\scrfam=\gmathsubscr + \scriptscriptfont\scrfam=\gmathsubsubscr +\textfont\frfam=\gmathfr + \scriptfont\frfam=\gmathsubfr + \scriptscriptfont\frfam=\gmathsubsubfr +\textfont\euexfam=\gmatheuex +\scriptfont\euexfam=\gmathsubsym % OK since I don't use all chars in this size +\textfont\eqfam=\nineeq + \def\rm{\fam\z@\gtext}% + \let\oldsty=\goldstyle + \let\big=\ninebig + \setbox\strutbox=\hbox{\vrule height7.25pt depth2.75pt width\z@}% + \gtext + \rightskip=\z@ plus2em % ragged right + \tolerance=2000 + \hyphenpenalty=300 + \exhyphenpenalty=300 + \doublehyphendemerits=100000 + \finalhyphendemerits=\doublehyphendemerits + } +\def\ninebig#1{{\hbox{$\textfont0=\tenrm\textfont2=\tensy + \left#1\vbox to7.25pt{}\right.\n@space$}}} +\def\grafctr{\hbox to4.5pc{\hfil##\hfil}} + +\newif\ifR % does this entry go on a right-hand page? +\def\Rguess{\def\ifR{\ifodd\pageno}} +\long\def\g#1\g{\def\next{#1!!!!!}\expandafter\writegrf\meaning\next$% + \ifx\grfmem\empty\Rguess\else\expandafter\testnextgrf\grfmem\\\fi +% pre-Unix, that line was \ifeof\grfi\Rguess\else\testnextgrf\fi + \setbox0=\vtop{\graffiti#1% + \write\m@ne\ifR{\Rcheck}\else{\Lcheck}\fi}% log file records successes + \ifvmode\kern-\prevdepth\kern-\ht0\dp0=\z@\nointerlineskip\bgroup + \else\dp0=\dp\strutbox\strut\vadjust{\kern-\dp\strutbox\kern-\ht0\fi + \ifR\moveleft7\else\moveright29\fi pc\box0}} +\expandafter\def\expandafter\writegrf\meaning\empty#1#2#3#4#5#6${% + \write\grfo{\LorR #1#2#3#4#5}\def\thisone{#1#2#3#4#5}} +\def\setup#1#2#3#4#5#6${\def\thatone{#1#2#3#4#5}} +\def\LorR{\ifodd\pageno R \else L \fi} +\def\Lcheck{\ifodd\pageno Bad guess!\fi} +\def\Rcheck{\ifodd\pageno\else Bad guess!\fi} + +% Page layout +\newif\ifpreprint \preprinttrue % should be false when making the final copy +\newdimen\pageheight \pageheight=\vsize +\newdimen\totheight \totheight=49.5pc +\newdimen\folioht \setbox0=\hbox{\foliofont0} \folioht=\ht0 +\def\leftheadline{\hbox to35pc{\vbox to 10pt{}% strut to position the baseline + \llap{\kern-2pc\iftitle\leftcorner\else\foliofont\folio\fi\hfil}% + \iftitle\hfil\copyrite\else\runhead\uppercase\expandafter{\chaptitle}\hfil\fi}} +\def\rightheadline{\hbox to35pc{\iftitle\copyrite\fi\hfil + \vbox to 10pt{}% strut to position the baseline + \runhead\uppercase\expandafter{\topmark}% + \rlap{\hfil\iftitle\rightcorner\else\foliofont\folio\fi\kern-2pc}}} +\def\leftcorner{\vrule\vbox to\folioht{\hrule width9pt\vfil}} +\def\rightcorner{\vbox to\folioht{\hrule width9pt\vfil}\vrule} +\def\copyrite{\ifpreprint{\textfont2=\sevensy\sevenrm\copyright\ 1988 + Addison-Wesley Publishing Company; all rights reserved}\fi} + +\def\onepageout#1{\escapechar=-1 % for writing \tabrefs + \shipout\vbox to\totheight{ % here we define one page of output + \offinterlineskip % butt the boxes together + \vbox to 2pc{ % this part goes on top of the regular pages + \ifodd\pageno \rightheadline\else\leftheadline\fi + \vfill} % this completes the \vbox to 2pc + \ifodd\pageno\moveright7pc\fi #1 + \vfill + \iftitle \global\titlefalse % reset the titlepage switch + \ifodd\pageno \hbox to35pc{\hfil\foliofont\folio} + \else\hbox{\foliofont\folio}\fi\fi + \ifpreprint\ifinxmode\makeinxfooter\fi\fi + } + \advancepageno} + +\output{\onepageout{\pagebody}} + +\newbox\inxfootbanner +\def\hours{\count0=\time \divide\count0 by60 % find the o'clock + \multiply\count0 by40 \advance\count0\time % convert to hhmm + \advance\count0 10000 \expandafter\gobbleone\number\count0\relax} +\def\gobbleone1{} +\setbox\inxfootbanner=\rlap{\hbox to 6.5in{\hrulefill\sevenrm\quad + Author's page proof produced by \TeX\ at + \hours\space on \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}} +\def\makeinxfooter{\vbox to0pt{\kern10pt\copy\inxfootbanner\kern4pt + \rlap{\vbadness=\maxdimen \inxcolumns}\vss}} +\def\inxcolumns{\ifvoid\inxbox\let\next\relax\else\let\next\contribcol\fi\next} +\def\contribcol{\setbox0=\vsplit\inxbox to54pt + \vtop{\unvbox0}\kern20pt \inxcolumns} +\def\inxstyle{\vrule height6pt depth2pt width\z@ \sevenrm} +\splittopskip=6pt + +% Cross references + +% \ref{value}|name| gives value to |name| +% \eqref|name| gives \eqcount to |name| +% \exref|name| gives \excount to |name| +% \tabref|name| gives appropriate page number to |name| +% \refin foo inputs references from job foo (other than this job) +% \showmissestrue if you want to see missing references + +\newif\ifshowmisses +\def\vertical{|} +\def\inref#1 #{\expandafter\def\csname\vertical#1\endcsname} + +\catcode`\|=\active +\expandafter\def\expandafter\dospecials\expandafter{\dospecials\do\|} +\newcount\defcount % number of old definitions not yet repeated +\newcount\changecount % number of new definitions that are changed +\newcount\miscount % number of unknown references + +\newread\tempin +\def\refin#1 {\openin\tempin=#1.ref + \ifeof\tempin\closein\tempin + \else\closein\tempin \let|\inref \input#1.ref \let|\crossref \fi} + +{\let\|=\jobname + \def\def{\global\advance\defcount1 \gdef}\expandafter\refin\| } +\newwrite\refo \immediate\openout\refo=\jobname.ref + +\def\ref#1|#2|{\xdef\temp{#1}\expandafter\dordef\csname\vertical#2\endcsname} +\def\dordef#1{\ifx#1\temp \global\advance\defcount-1 + \else\global\advance\changecount1 \global\let#1\temp\fi + {\escapechar=-1\immediate\write\refo{\noexpand#1{\temp}}}} +\def\eqref{\ref{\number\eqcount}} +\def\exref{\ref{\number\excount}} +\def\tabref|#1|{\expandafter\pageref\csname\vertical#1\endcsname} +\def\pageref#1{\ifx#1\relax\else\global\advance\defcount-1 \fi + \write\refo{\noexpand#1{\number\pageno}}% + \write\m@ne{\ifx#1\relax New Pageref!\else + \ifnum#1=\pageno\else Changed Pageref!\fi\fi}} +\def\crossref#1|{\expandafter\usedef\csname\vertical#1\endcsname} +\def\usedef#1{\ifx#1\relax + \ifshowmisses\showmiss#1\fi\global\advance\miscount1 ??\else #1\fi} +\let|=\crossref +\def\showmiss#1{{\escapechar=-1% + \message{***** WARNING: Undefined reference #1\string|! *****}}} + +\def\cite#1.{\ifinxmode\write\bnx{[#1] \number\pageno.}\fi#1} +{\catcode`\@=\active +\gdef\newcite#1.{\ifinxmode\write\bnx{[#1'] \number\pageno.}\fi#1$'@$}} + +\outer\def\bye{ + \ifnum\miscount>0 + \message{(\the\miscount\space undefined references were present)}\fi + \ifnum\changecount>0 + \message{(\the\changecount\space new references written on \jobname.ref)}\fi + \ifnum\defcount>0 + \message{(\the\defcount\space old references dropped from \jobname.ref)}\fi + \par\vfill\supereject + \end} + +% Exercises + +\newwrite\ans +\immediate\openout\ans=\jobname.ans + +\outer\def\answer{\par + \immediate\write\ans{} + \immediate\write\ans{\string\ansno\chapno.\the\excount:} + \copytoblankline} +\def\copytoblankline{\begingroup\setupcopy\copyans} +\def\setupcopy{\def\do##1{\catcode`##1=\other}\dospecials \obeylines} +{\obeylines \gdef\copyans#1 + {\def\next{#1}% + \ifx\next\empty\let\next=\endgroup % + \else\immediate\write\ans{\next} \let\next=\copyans\fi\next}} + +\def\ansno#1:{\par\medbreak\def\thisansno{\source#1}% + \noindent\hbox to\parindent{\bf #1\hfil}\ignorespaces} + +% Pictures (a subset of \LaTeX's conventions) +\newskip\hsssglue \hsssglue=0pt plus 1fill minus 1fill \def\hsss{\hskip\hsssglue} + +\newdimen\unitlength \newdimen\linethickness +\newdimen\@picheight \newdimen\@xdim \newdimen\@ydim \newdimen\@len \newdimen\@save +\newcount\@multicount \newcount\@xarg \newcount\@yarg +\newbox\@picbox \newbox\@mpbox + +\font\tenln=line10 \font\tenlnw=linew10 +\font\tencirc=lcircle10 \font\tencircw=lcirclew10 +\font\smallln=linew10 scaled 483 % that's magstep-4 + +\def\thinlines{\let\linefont=\tenln \let\circlefont=\tencirc + \linethickness=\fontdimen8\linefont} +\def\thicklines{\let\linefont=\tenlnw \let\circlefont=\tencircw + \linethickness=\fontdimen8\linefont} +\thinlines + +\def\beginpicture(#1,#2)(#3,#4){\@picheight=#2\unitlength \let\line=\@line + \setbox\@picbox=\hbox to#1\unitlength\bgroup + \kern-#3\unitlength \lower#4\unitlength\hbox\bgroup\ignorespaces} +\def\endpicture{\egroup\hss\egroup + \ht\@picbox=\@picheight \dp\@picbox=\z@ + \leavevmode\box\@picbox} + +\def\put(#1,#2)#3{\raise#2\unitlength\rlap{\kern#1\unitlength #3}\ignorespaces} + +\def\multiput(#1,#2)(#3,#4)#5#6{\@multicount=#5 + \@xdim=#1\unitlength \@ydim=#2\unitlength \setbox\@mpbox=\hbox{#6}% + \loop\ifnum\@multicount>0 + \raise\@ydim\rlap{\kern\@xdim \unhcopy\@mpbox}% + \advance\@xdim#3\unitlength \advance\@ydim#4\unitlength + \advance\@multicount\m@ne \repeat\ignorespaces} + +\def\makebox(#1,#2)#3{\setbox\@picbox=\hbox to#1\unitlength{\hss#3\hss}% + \@ydim=\ht\@picbox \advance\@ydim-\dp\@picbox + \ht\@picbox=#2\unitlength \dp\@picbox=\z@ + \leavevmode\lower.5\@ydim\box\@picbox} + +\newif\ifneg +\def\@line(#1,#2)#3{\@xarg=#1 \@yarg=#2 \@len=#3\unitlength \leavevmode + \ifnum\@xarg<0 \reverseline \else \negfalse \@ydim=\z@\fi + \ifnum\@xarg=0 \@vline + \else\ifnum\@yarg=0 \@hline \else\@sline\fi\fi + \ifneg\kern-\@len\else\@save=\@ydim\fi} +\def\reverseline{\negtrue \kern-\@len \@xarg=-\@xarg + \@ydim=\@len \multiply\@ydim\@yarg \divide\@ydim\@xarg \@yarg=-\@yarg} + +\def\@hline{\vrule height.5\linethickness depth.5\linethickness width\@len} +\def\@vline{\kern-.5\linethickness\vrule width\linethickness + \ifnum\@yarg<0 height\z@ depth\else depth\z@ height\fi\@len + \kern-.5\linethickness} + +\def\@sline{\setbox\@picbox=\hbox{\linefont \count@=\@xarg \multiply\count@ 8 + \ifnum\@yarg>0 \advance\count@\@yarg \advance\count@-9 + \else \advance\count@-\@yarg \advance\count@ 55 \fi \char\count@}% + \ifnum\@yarg<0 \@picheight=-\ht\@picbox \advance\@ydim\@picheight + \else \@picheight=\ht\@picbox \fi + \@xdim=\wd\@picbox \@save=\@ydim + \loop\ifdim\@xdim<\@len \raise\@ydim\copy\@picbox + \advance\@xdim\wd\@picbox \advance\@ydim\@picheight \repeat + \advance\@xdim-\@len \kern-\@xdim + \multiply\@xdim\@yarg \divide\@xdim\@xarg \advance\@ydim-\@xdim + \raise\@ydim\box\@picbox} + +\def\vector(#1,#2)#3{\@line(#1,#2){#3}% + \ifnum\@xarg=0 \@vvector \else\ifnum\@yarg=0 \@hvector \else\@svector\fi\fi} +\def\@hvector{\ifneg\rlap{\linefont\char27}\else + \smash{\llap{\linefont\char45}}\fi} % we have to smash because of font bug +\def\@vvector{\ifnum\@yarg<0 \raise-\@len\rlap{\linefont\char63}% + \else\setbox\@picbox=\rlap{\linefont\char54}\advance\@len-\ht\@picbox + \raise\@len\box\@picbox\fi} + +\def\@svector{\setbox\@picbox=\hbox to\z@{\linefont + \ifnum\@yarg<0 \count@=55 \@yarg=-\@yarg \else\count@=-9 \fi + \ifneg\multiply\@xarg16 \multiply\@yarg2 + \else\hss % \llap + \ifnum\@xarg>2 \multiply\@xarg9 \multiply\@yarg2 \advance\count@29 + \else\ifnum\@yarg>2 \multiply\@xarg16 \multiply\@yarg9 \advance\count@-20 + \else\multiply\@xarg24 \multiply\@yarg3 \fi\fi\fi + \advance\count@\@xarg \advance\count@\@yarg \char\count@ + \ifneg\hss\fi}% \rlap + \raise\@save\box\@picbox} + +\def\disk#1{\@len=#1\unitlength \count@='160 \@diskcirc} +\def\circle#1{\@len=#1\unitlength \count@='140 \@diskcirc} +\def\@diskcirc{\setbox\@picbox=\hbox{\circlefont\char\count@}\@xdim=\wd\@picbox + \leavevmode \ifdim\@len>15.499\@xdim \@bigdc \else \@smalldc\fi} +\def\@bigdc{\ifnum\count@<'160 \@bigcirc + \else \@len=15\@xdim \@diskcirc\fi} +\def\@smalldc{{\advance\@len-.5\@xdim + \loop\ifdim\@xdim<\@len \advance\count@\@ne \advance\@xdim\wd\@picbox\repeat + \hbox{\circlefont\char\count@}}} +\def\@bigcirc{{\circlefont\count@=15 + \setbox\@picbox=\hbox{\char\count@}\@xdim=\wd\@picbox + \ifdim\@len>2.5\@xdim \@len=2.5\@xdim\fi + \advance\@len-.125\wd\@picbox + \loop\ifdim\@xdim<\@len \advance\count@ 4 \advance\@xdim.25\wd\@picbox\repeat + \@ydim=.5\@xdim \advance\@ydim.5\linethickness + \setbox\@picbox=\vbox{\hbox{\char\count@\advance\count@-3\char\count@}% + \nointerlineskip + \hbox{\advance\count@\m@ne\char\count@\advance\count@\m@ne\char\count@}}% + \kern-\@ydim\lower\@ydim\box\@picbox}} + +\newif\ifovaltl \newif\ifovaltr \newif\ifovalbl \newif\ifovalbr +\ovaltltrue \ovaltrtrue \ovalbltrue \ovalbrtrue +\def\oval(#1,#2){\@xdim=#1\unitlength \@ydim=#2\unitlength + {\circlefont \setbox\@picbox=\hbox{\char0} + \ifdim\@xdim<\wd\@picbox \@xdim=\wd\@picbox\fi + \ifdim\@ydim<\wd\@picbox \@ydim=\wd\@picbox\fi + \@save=\@xdim \ifdim\@ydim<\@save \@save=\@ydim \fi + \count@=39 + \loop \setbox\@picbox=\hbox{\char\count@}\ifdim\@save<\wd\@picbox + \advance\count@-4 \repeat + \setbox\strutbox=\hbox{\vrule height\ht\@picbox depth\dp\@picbox width\z@ + \kern\wd\@picbox}% + \@save=.5\wd\@picbox \advance\@save-.5\linethickness + \setbox0=\hbox to\@xdim{\ifovaltl\char\count@\else\strut\fi + \kern-\@save\leaders\hrule height\ifovaltl\linethickness\else\z@\fi\hfil + \leaders\hrule height\ifovaltr\linethickness\else\z@\fi\hfil\kern\@save + \ifovaltr\advance\count@-3\char\count@\else\strut\fi\kern-\wd\@picbox}% + \advance\count@\m@ne + \setbox2=\hbox to\@xdim{\ifovalbl\char\count@\else\strut\fi + \kern-\@save\leaders\hrule height\ifovalbl\linethickness\else\z@\fi\hfil + \leaders\hrule height\ifovalbr\linethickness\else\z@\fi\hfil\kern\@save + \ifovalbr\advance\count@\m@ne\char\count@\else\strut\fi\kern-\wd\@picbox}% + \@save=\@ydim \advance\@save-\wd\@picbox \divide\@save 2 + \setbox\@picbox=\vbox{\box0\nointerlineskip + \hbox to\@xdim{\vrule height\@save width\ifovaltl\linethickness\else\z@\fi + \hfil\ifovaltr\vrule width\linethickness\kern-\linethickness\fi}% + \nointerlineskip + \hbox to\@xdim{\vrule height\@save width\ifovalbl\linethickness\else\z@\fi + \hfil\ifovalbr\vrule width\linethickness\kern-\linethickness\fi}% + \nointerlineskip\box2}% + \@save=.5\@ydim \advance\@save.5\linethickness \leavevmode + \kern-.5\@xdim \kern-.5\linethickness \lower\@save\box\@picbox}} + +\def\cpic#1\endcpic{\vcenter{\hbox{\beginpicture#1\endpicture}}} + +% Squines (quadratic splines) +% example of use: to plot f(x) between x0 and x1, you can say +% \put(0,0){\squine(x0,xm,x1,y0,ym,y1)}, where y0=f(x0), y1=f(x1) +% xm=(y0-y1+s1x1-s0x0)/(s1-s0), ym=(s0(s1x1-y1)-s1(s0x0-y0))/(s1-s0), +% s0=f'(x0), and s1=f'(x1). + +\newdimen\@xi \newdimen\@xii \newdimen\@xiii \newdimen\@xiv +\newdimen\@xpt \newdimen\@xoldpt +\newdimen\@yi \newdimen\@yii \newdimen\@yiii \newdimen\@yiv +\newdimen\@ypt \newdimen\@yoldpt +\def\squine(#1,#2,#3,#4,#5,#6){\setbox\@picbox\hbox{\tencirc q}% + \global\@xoldpt=#1\unitlength \global\@yoldpt=#4\unitlength \kern\@xoldpt + \@xi=\@xoldpt \@xii=#2\unitlength \@xiii=#3\unitlength + \@yi=\@yoldpt \@yii=#5\unitlength \@yiii=#6\unitlength + \squinerec + \@xpt=#3\unitlength \@ypt=#6\unitlength \@addpoint + \raise\@ypt\copy\@picbox} +\newif\iffar +\def\squinerec{\farfalse \testnear\@xi\@xiii \testnear\@yi\@yiii + \iffar \decast \fi} +\def\testnear#1#2{\@save=#1\advance\@save-#2% + \ifdim\@save<\z@ \@save=-\@save\fi \ifdim\@save>\p@ \fartrue \fi} +\def\decast{\@xpt=\@xi \advance\@xpt\@xii \divide\@xpt2 + \advance\@xii\@xiii \divide\@xii2 + \@xiv=\@xpt \advance\@xiv\@xii \divide\@xiv2 + \@ypt=\@yi \advance\@ypt\@yii \divide\@ypt2 + \advance\@yii\@yiii \divide\@yii2 + \@yiv=\@ypt \advance\@yiv\@yii \divide\@yiv2 + \begingroup\@xii=\@xpt \@xiii=\@xiv + \@yii=\@ypt \@yiii=\@yiv \squinerec\endgroup + \@xpt=\@xiv \@ypt=\@yiv \@addpoint + \@xi=\@xiv \@yi=\@yiv \squinerec} +\def\@addpoint{%\message{(\the\@xpt,\the\@ypt)}% + \global\advance\@xoldpt-\@xpt \wd\@picbox=-\@xoldpt + \raise\@yoldpt\copy\@picbox \global\@xoldpt=\@xpt \global\@yoldpt=\@ypt} + +% Math operators +\def\2{\mskip-.5mu2\mskip.5mu} +\newmuskip\lessfortimes \lessfortimes=-2mu minus -2mu +\def\cdt{\mskip\lessfortimes\cdot\mskip\lessfortimes} +\def\nullnum{\phantom{0}} +\def\twonullnum{\phantom{00}} +\def\bex{\mskip-2mu} +\def\twoconditions#1#2{_{\scriptstyle#1\atop\scriptstyle#2}} +\def\tworestrictions#1#2{\vcenter{\offinterlineskip + \halign{\strut\hfil##\hfil\cr#1\cr#2\cr}}} +\def\dts{\mathinner{\ldotp\ldotp}} +\def\[#1]{[\hbox{$\mskip1mu\thickmuskip=\thinmuskip#1\mskip1mu$}]} +\def\bigi[#1\bigr]{\bigl[\hbox{$\thickmuskip=\thinmuskip#1$}\bigr]} +\def\Bigi[#1\Bigr]{\Bigl[\hbox{$\thickmuskip=\thinmuskip#1$}\Bigr]} +\def\prp(#1){(\hbox{$\thickmuskip=\thinmuskip#1$})} +\def\pbigi(#1\bigr){\bigl(\hbox{$\thickmuskip=\thinmuskip#1$}\bigr)} +\def\_#1{\def\next{#1}% + \ifx\next\risingsign\expandafter\rising\else^{\underline{#1}}\fi} +\def\risingsign{^} +\def\rising#1{^{\overline{#1}}} +\def\dotminus{\mathbin{\buildrel{\hbox{\runhead.}}\over{\smash{-}\vphantom{_2}}}} +\let\divides=\backslash +\def\edivides{\divides\mskip-4mu\divides} +\def\ndivides{\mathpalette\notdiv\relax} +\def\notdiv#1#2{\setbox0=\hbox{$#1\divides$}% + \vcenter{\hbox to\wd0{$\hss\scriptscriptstyle/\hss$}}\kern-\wd0 + \vcenter{\hbox to\wd0{$\hss\kern.5pt\scriptscriptstyle/\hss$}}\kern-\wd0 + \box0\relax} +\def\spec{\mathop{\rm Spec}} +\def\half{{1\over2}} +\def\rp{\mathchar"323F } % relatively prime +\def\lcm{\mathop{\rm lcm}} +\def\And{\quad{\rm and}\quad} +\let\==\equiv +\def\tmod#1{(mod~$#1$)} +\let\implies=\Longrightarrow +\def\?{\hbox{!`}} % subfactorial +\def\hyp{\mathop{F{}}\nolimits\hyper} +\def\tightplus{\medmuskip=1.5mu\relax} +\def\hyper#1#2#3{\mathchoice{\tightplus + \hbox{$\displaystyle\biggl({#1\atop#2}\Big\vert\,{#3}\!\biggr)$}}% + {\bigl({#1\atop#2}\vert\mskip2mu#3\bigr)}% + {}{}} % used only in D and T styles +%\def\hypk_#1{\mathop{F{}}_{#1}\nolimits\hyper} % confl with mFn convention +\def\hypk_#1#2#3#4{\mathop{F{}}\mathchoice{\tightplus + \hbox{$\displaystyle\biggl({#2\atop#3}\Big\vert\,{#4}\!\biggr)$}% + \lower\fontdimen11\mathsym\hbox{$\scriptstyle\!#1$}}% + {\bigl({#2\atop#3}\vert\mskip2mu#4\bigr)\lower\fontdimen12\mathsym + \hbox{$\scriptstyle\!#1$}}% + {}{}} % used only in D and T styles +\def\double(#1\choose#2){\mathchoice{\biggl(\!\!{#1\choose#2}\!\!\biggr)} + {\bigl(\!{#1\choose#2}\!\bigr)}{}{}} % only D and T styles +\def\hypstrut{\vphantom{_1\_^k}} % if there's another denominator with \_^k +\def\deg{\mathop{\rm deg}} +\def\Bscr{{\scr B}} +\def\Escr{{\scr E}} +\def\Fscr{{\scr F}} +\def\Pscr{{\scr P}} +\def\Sscr{{\scr S}} +\def\adj{\relbar\joinrel\relbar} % adjacent in a graph +\let\<=\langle \let \>=\rangle +\def\Pr{\mathop{\rm Pr}\nolimits} +\def\Mean{\mathop{\rm Mean}\nolimits} +\def\Var{\mathop{\rm Var}\nolimits} +\def\between{\big\vert\hbox{\vphantom)}} % \between_a^b +{\catcode`\'=\active \gdef'{^\bgroup\mskip2mu\prim@s}} % more space before ' +\def\array#1[#2]{\hbox{\tt#1[$#2$]}} +\def\given{\mskip1mu\vert\mskip1mu} +\def\euler{\atopwithdelims<>} +\def\Euler#1#2{\mathchoice{\biggl<\mskip-7mu{#1\euler#2}\mskip-7mu\biggr>}% + {\bigl<\!{#1\euler#2}\!\bigr>}{}{}} + +\newbox\phihatbox \newbox\scrphihatbox +\setbox\phihatbox=\hbox{$\phi$} \ht\phihatbox=1ex +\setbox\scrphihatbox=\hbox{$\scriptstyle\phi$} + \ht\scrphihatbox=\fontdimen5\mathsublet +\setbox\phihatbox=\hbox{$\widehat{\box\phihatbox}$} +\setbox\scrphihatbox=\hbox{$\hat{\box\scrphihatbox}$} +\def\phihat{\mathchoice{\copy\phihatbox}{\copy\phihatbox}% + {\copy\scrphihatbox}{{\hat\phi}}} + +\newbox\mathsizebox +\def\setmathsize#1{\global\setbox\mathsizebox=\hbox{\displaymath#1$}} +\def\mathsize#1{\hbox to\wd\mathsizebox{\displaymath#1$\hss}} + +\newbox\sqrtstrutbox +\setbox\sqrtstrutbox=\hbox{\vrule height10.5pt width\z@} +\def\strutsqrt#1{\copy\sqrtstrutbox\sqrt{{}^{\mathstrut}#1}} + +\newbox\Sqbox % for sum of squares +\setbox\Sqbox=\vbox{\tenrm\hrule height.6pt\kern-.6pt + \hbox to1.5ex{\vrule height1.5ex width.6pt\hss\vrule width.6pt}\kern-.6pt + \hrule height.3pt depth.3pt} +\def\Sq{\mskip1.5mu\copy\Sqbox\mskip1.5mu} + +% primitive index macros +% "stuff for index" will go into a file for sorting and into normal text +% "!stuff for index" will go into the file only +\expandafter\def\expandafter\dospecials\expandafter{\dospecials\do\"} +\def\hexcode{"} \catcode`\"=\active + +\newif\ifinxmode +\newwrite\inx \newwrite\bnx +\newbox\inxbox + +\newif\ifsilent +\def\beginxref{\futurelet\next\beginxrefswitch} +\def\beginxrefswitch{\ifx\next!\let\next=\silentxref + \else\silentfalse\let\next=\xref\fi \next} +\def\silentxref!{\silenttrue\xref} +\let"=\beginxref + +\def\xref#1"{\ifinxmode\edef\text{#1}\makexref\fi + \ifsilent\ignorespaces\else#1\fi} +\def\makexref{\global\setbox\inxbox=% + \vbox{\unvbox\inxbox\allowbreak\hbox{\inxstyle\text}}% + \xdef\writeit{\write\inx{\text\space!\space + \noexpand\number\pageno.}}\writeit} + +% Final considerations +\catcode`\@=\active \def@{\mskip1mu\relax} +\expandafter\def\expandafter\dospecials\expandafter{\dospecials\do\@} + +\hyphenation{logical Mac-Mahon hyper-geo-metric hyper-geo-met-rics Ber-noulli} + +\preprintfalse % WE ARE MAKING THE REAL BOOK! +\inxmodetrue % WE ARE PREPARING A ROUGH INDEX +\showmissestrue % THE REFERENCES SHOULD ALL BE READY NOW + +\ifinxmode\immediate\openout\inx=\jobname.inx \fi % file for index reminders +\ifinxmode\immediate\openout\bnx=\jobname.bnx \fi % file for bib reminders + +% To make the book: +% First TeX BIB, to get BIB.REF correct. (Must have \cite entries.) +% Then TeX CHAP1..CHAP9, PREF, ANS, CRED, FRONT, CONT. +% Then make BNX file from individual *.BNX files including BIB.BNX. +% Then reTeX BIB. +% *.INX files are raw data only. Index and Contents are prepared by hand. + +% To produce only a subset of pages, put the page numbers on separate +% lines in a file called pages.tex, ended by 999 +% WARNING: This will screw up the .grf file! Save it, then restore it. +% WARNING: This may screw up the .ref file (if there are \tabrefs). Ditto. +\let\Shipout=\shipout +\newread\pages \newcount\nxtpg \openin\pages=pages +\def\getnxtpg{\ifeof\pages\else + {\endlinechar=-1\read\pages to\next + \ifx\next\empty % in this case we should have eof now + \else\global\nxtpg=\next\fi}\fi} +\ifeof\pages\else\message{OK, I'll ship only the requested pages!} + \getnxtpg\fi +\def\shipout{\ifeof\pages\let\next=\Shipout + \else\ifnum\pageno=\nxtpg\getnxtpg\let\next=\Shipout + \else\let\next=\Tosspage\fi\fi \next} +\newbox\garbage \def\Tosspage{\deadcycles=0\setbox\garbage=} diff --git a/Master/texmf-dist/tex/plain/base/letter.tex b/Master/texmf-dist/tex/plain/base/letter.tex new file mode 100644 index 00000000000..531a8b520df --- /dev/null +++ b/Master/texmf-dist/tex/plain/base/letter.tex @@ -0,0 +1,119 @@ +% This macro file is for business letters + +\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\narrower{\advance\leftskip by 20pt \advance\rightskip by 20pt } + +\raggedbottom +\interlinepenalty=1000 +\hsize=6.25truein \voffset=24pt \advance\vsize by-\voffset +\parindent=0pt \parskip=0pt +\nopagenumbers +\headline={\ifnum\pageno>1 + \tenrm To \addressee\hfil\today\hfil Page \folio + \else\hfil\fi} + +\def\beginlinemode{\endmode + \begingroup\obeylines\def\endmode{\par\endgroup}} +\def\beginparmode{\endmode + \begingroup\parskip=\medskipamount \def\endmode{\par\endgroup}} +\let\endmode=\par +\def\endletter{\endmode\vfill\supereject \pageno=1 } + +\newdimen\longindentation \longindentation=4truein +\newbox\theaddress +\def\address{\beginlinemode\getaddress} +{\obeylines\gdef\getaddress#1 + #2 + {\gdef\addressee{#2\unskip}% + \global\setbox\theaddress=\vbox\bgroup\raggedright% + \hsize=\longindentation \everypar{\hangindent2em}#2 + \def\endmode{\egroup\endgroup \copy\theaddress \bigskip}}} + +\def\body{\beginparmode} +\def\closing{\beginlinemode\getclosing} +{\obeylines\gdef\getclosing #1 + #2 + {\nobreak\bigskip \leftskip=\longindentation #2 + \nobreak\bigskip\bigskip\bigskip % space for signature + \def + {\endgraf\nobreak}}} +\def\annotations{\beginlinemode\def\par{\endgraf\nobreak}\obeylines\par} +\def\ps{\beginparmode\nobreak + \interlinepenalty5000\def\par{\endgraf\penalty5000}} +\def\cc{\beginparmode\nobreak + \interlinepenalty5000\def\par{\endgraf\penalty5000}} + +\def\up#1{\leavevmode \raise.16ex\hbox{#1}} +\font\smallheadfont=cmr8 at 8truept +\font\largeheadfont=cmbx10 at 14.4truept +\font\logofont=stan70 at 70truept +\def\stanfordseal{\vbox{\kern-3truept\hbox{\logofont A}\kern-3truept}} + +\def\csdreturn{Computer Science Department\par \stanfordreturn} +\def\stanfordreturn{Stanford University\par + Stanford, CA 94305\kern.5pt-21\kern-.5pt40 USA\par} +\def\letterhead{\pageno=1 \univletterhead + {\leftskip=\longindentation + {\baselineskip9truept\smallheadfont\sendingaddress} + \bigskip\bigskip\rm\today\bigskip}} +\def\specrule#1{\nointerlineskip + \line{\hbox to 60truept{\hrulefill + \hphantom{\stanfordseal\kern-#1truept}% + \hrulefill}\hrulefill}\nointerlineskip} +\def\univletterhead{\vglue-34pt + \specrule{11}\vskip8truept + \hbox{\hbox to\longindentation{\smash{\hbox to60truept{\hfil\kern2.5truept + \lower10truept\stanfordseal\hfil}}% + \largeheadfont STANFORD UNIVERSITY\hfil}% + \smallheadfont STANFORD, CALIFORNIA 94305\kern.5pt-21\kern-.5pt40} + \vskip6truept\specrule{17}\vskip13truept } + +\def\deklet{ + \def\sendingaddress{DONALD E. KNUTH\par + Professor Emeritus of The Art of\par + \qquad Computer Programming\par + Department of Computer Science\par + Telephone \up[415\up]\thinspace 723-4367\par} + \def\returnaddress{Prof.~D. E. Knuth\par \csdreturn} + \letterhead} + +\def\memoto{\beginlinemode\parindent=60truept + \everypar{\hangindent70truept}\startmemo} +\def\bigmemoto{\beginlinemode\parindent=60pt % use this for magstep>1! + \everypar{\hangindent70pt}\startmemo} +\def\textin#1{\noindent\hbox to\parindent{#1\hss}\ignorespaces} +{\obeylines\gdef\startmemo #1 + {\gdef\addressee{#1}% + \global\pageno=1 \vglue-34pt\specrule{11}\vskip8truept + \leftline{\smash{\hbox to60truept{\hfil\kern2.5truept + \lower10truept\stanfordseal\hfil}}% + \largeheadfont Stanford Computer Science Department % + \rm\today}% + \vskip6truept\specrule{20}\bigskip\bigskip\bigskip% + \textin{Memo to:}#1 + \def\endmode{\par\endgroup\bigskip}} + \gdef\from #1 + {\smallskip\textin{From:}#1 + } + \gdef\subject #1 + {\smallskip\textin{Subject:}#1 + } +} + +\def\makelabel{\endletter\hbox{\vrule + \vbox{\hrule \kern6truept + \hbox{\kern6truept\stanfordseal\kern3pt + \vbox{\smallheadfont\baselineskip9truept\hsize=2truein\returnaddress} + \kern6truept}\kern6truept\hrule}\vrule} + \kern.1truein + \hbox{\vrule + \vbox{\hrule \kern12truept + \hbox{\kern12truept\copy\theaddress + \kern12truept}\kern12truept\hrule}\vrule} + \pageno=0\vfill\eject} + +\def\frac#1/#2{\leavemode\kern.1em\raise.5ex\hbox{\the\scriptfont0 + #1}\kern-.1em/\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}} diff --git a/Master/texmf-dist/tex/plain/base/list.tex b/Master/texmf-dist/tex/plain/base/list.tex new file mode 100644 index 00000000000..1daeba2bbe8 --- /dev/null +++ b/Master/texmf-dist/tex/plain/base/list.tex @@ -0,0 +1,47 @@ +% Makes a listing of one or more files +% Typical usage: +% tex list *.c \\end + +\def\grabfile#1 {\setbox0=\lastbox\endgraf\doit{#1}} +\everypar{\grabfile} + +\font\filenamefont= cmtt8 scaled\magstep3 +\font\headlinefont= cmr8 +\font\listingfont= cmtex10 +\font\eoffont= cmti8 + +\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} +\newcount\m \newcount\n +\n=\time \divide\n 60 \m=-\n \multiply\m 60 \advance\m \time +\def\hours{\twodigits\n\twodigits\m} +\def\twodigits#1{\ifnum #1<10 0\fi \number#1} + +\newlinechar=`@ +\message{@\today\space at \hours} + +\raggedbottom +\nopagenumbers + +\chardef\other=12 +\def\doit#1{\message{@Listing #1@} + \begingroup \everypar{} \frenchspacing + \headline{\filenamefont#1\quad\headlinefont \today\ at \hours + \hfill Page \folio} + \def\do##1{\catcode`##1=\other}\dospecials + \catcode127=\other \catcode9=\other \catcode12=\other + \parindent 0pt \parfillskip=0pt plus 1fil minus 1in + \everypar{\hangindent 1in} \rightskip=0pt plus 2in + \def\par{\ifvmode\penalty-500\medskip\else\endgraf\fi} + \listingfont \obeylines \obeyspaces \global\pageno=1 + \input #1 {\eoffont(end of\/ file)}\endgraf\vfill\eject\endgroup} +{\obeyspaces\global\let =\ } +\catcode`\_=\other % allow _ in file names + +% A tab (^^I) prints as lowercase gamma. +% Character ^^M could be made visible, with a bit of work; +% at present, it's indistinguishable from newline (^^J). + +% You can get up to 103 characters on a line without an overfull box. diff --git a/Master/texmf-dist/tex/plain/base/llist.tex b/Master/texmf-dist/tex/plain/base/llist.tex new file mode 100644 index 00000000000..f107169e248 --- /dev/null +++ b/Master/texmf-dist/tex/plain/base/llist.tex @@ -0,0 +1,67 @@ +% Makes a landscape listing of one or more files +% Typical usage: +% tex llist *.c \\end + +\def\grabfile#1 {\setbox0=\lastbox\endgraf\doit{#1}} +\everypar{\grabfile} + +\font\filenamefont= cmtt8 scaled\magstep3 +\font\headlinefont= cmr8 +\font\listingfont= cmtex8 +\font\eoffont= cmti8 + +\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} +\newcount\m \newcount\n +\n=\time \divide\n 60 \m=-\n \multiply\m 60 \advance\m \time +\def\hours{\twodigits\n\twodigits\m} +\def\twodigits#1{\ifnum #1<10 0\fi \number#1} + +\newlinechar=`@ +\message{@\today\space at \hours} + +\baselineskip=9pt +\medskipamount=4pt minus 1pt +\raggedbottom +\nopagenumbers + +\chardef\other=12 +\def\doit#1{\message{@Listing #1@} + \begingroup \everypar{} \frenchspacing + \headline{\ifright \headlinefont \hfill Page \folio + \else\filenamefont#1\quad\headlinefont \today\ at \hours\hfill \fi} + \def\do##1{\catcode`##1=\other}\dospecials + \catcode127=\other \catcode9=\other \catcode12=\other + \parindent 0pt \parfillskip=0pt plus 1fil minus .8in + \everypar{\hangindent 1in} \rightskip=0pt plus 2in + \def\par{\ifvmode\penalty-50\medskip\else\endgraf\fi} + \listingfont \obeylines \obeyspaces \global\pageno=1 + \input #1 {\eoffont(end of\/ file)}\endgraf\vfill\eject + \ifright\null\vfill\eject\fi\endgroup} +{\obeyspaces\global\let =\ } +\catcode`\_=\other % allow _ in file names + +\hsize=4.6truein +\vsize=7truein +\hoffset=-.5truein +\voffset=-.2truein +\newif\ifright +\newbox\lefthalf +\output{\ifright + \shipout\hbox{\hbox to5.5in{\box\lefthalf\hss}% + \vbox{\makeheadline\pagebody\makefootline}} + \advancepageno\global\rightfalse + \else\global\setbox\lefthalf\vbox{\makeheadline\pagebody\makefootline} + \global\righttrue\fi} + +\special{landscape} + +% A tab (^^I) prints as lowercase gamma. +% Character ^^M could be made visible, with a bit of work; +% at present, it's indistinguishable from newline (^^J). + +% You can get up to 91 characters on a line without an overfull box. +% (But lines with more than 84 characters will be clipped, if they +% appear on a righthand halfpage.) diff --git a/Master/texmf-dist/tex/plain/base/manmac.tex b/Master/texmf-dist/tex/plain/base/manmac.tex new file mode 100644 index 00000000000..d8678ab5070 --- /dev/null +++ b/Master/texmf-dist/tex/plain/base/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{% + \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{% + \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, "\<arg>" 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, "\<arg>" 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 new file mode 100644 index 00000000000..3243e74d68d --- /dev/null +++ b/Master/texmf-dist/tex/plain/base/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/base/mptmac.tex b/Master/texmf-dist/tex/plain/base/mptmac.tex new file mode 100644 index 00000000000..f5af73afdfd --- /dev/null +++ b/Master/texmf-dist/tex/plain/base/mptmac.tex @@ -0,0 +1,89 @@ +% Special macros for use with MFT output. +% Adapted to METAPOST sources by Wlodek Bzyl, July 2001. + +\ifx\mptmacisloaded\relax\endinput\else\let\mptmacisloaded=\relax\fi + +\catcode`\@=11 + +\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}} +\def\MP{{\tenlogo META}\-{\tenlogo POST}} + +\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{\mftbf#1\/\kern.05em}}} % operator, in bold type +\def\3#1{\,\mathclose{\hbox{\mftbf#1\/}}} % `fi' and `endgroup' +\def\4#1{\mathbin{\hbox{\mftbf#1\/}}} % `step' and `at' +\def\5#1{\hbox{\mftbf#1\/}} % `true' and `nullpicture' +\def\6#1{\mathbin{\rm#1}} % `++' and `scaled' +\def\7{\hbox\bgroup\mft@nocats\frenchspacing\mft@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\mft@noc@ts{\catcode`\\=\other \catcode`\{=\other + \catcode`\}=\other \catcode`\$=\other \catcode`\&=\other + \catcode`\#=\other \catcode`\~=\other + \catcode`\_=\other \catcode`\^=\other} +\def\mft@nocats{\mft@noc@ts \catcode`\%=\other} +\def\mft@finstring"#1"{\tentex"#1"\egroup} + +\newbox\mft@shorthyf \setbox\mft@shorthyf=\hbox{-\kern-.05em} +\mathchardef\period=`\. +{\catcode`\-=\active \global\def-{\copy\mft@shorthyf\mkern3.9mu} + \catcode`\.=\active \global\def.{\period\mkern3mu}} + +\def\mftbf{\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 + +{\obeyspaces \global\let =\ } % don't skip spaces which begin a line + +\def\mft@verbatimtex{\begingroup + \def\par{\leavevmode\endgraf}% don't skip empty lines + \mft@nocats \obeyspaces \obeylines \tt} + +% the percent sign in btex .. etex group is a comment character. +\def\mft@btex{\begingroup \mft@noc@ts \obeyspaces \tt} + +% Names `\mftbeginV', `\mftbeginB', and `\mftend' are hard-wired into MFT + +\outer\def\mftbeginV#1{\5{#1}$\mftverbatimtex} +\outer\def\mftbeginB#1{\5{#1}$\mftbtex} +\def\mftend#1{$\5{#1}} + +\outer\def\mftverbatimtex{\let\par=\endgraf \mft@verbatimtex \parskip=\z@ + \mft@finish} +\outer\def\mftbtex{\mft@btex \mft@finish} + +{\catcode`\|=0 |catcode`|\=\other % | is temporary escape character + |obeylines % end of line is active + |gdef|mft@finish#1\mftend{#1|endgroup|mftend}} + +\catcode`\@=12 + +\endinput diff --git a/Master/texmf-dist/tex/plain/base/picmac.tex b/Master/texmf-dist/tex/plain/base/picmac.tex new file mode 100644 index 00000000000..0e1b537ab8b --- /dev/null +++ b/Master/texmf-dist/tex/plain/base/picmac.tex @@ -0,0 +1,178 @@ +% Pictures (a subset of \LaTeX's conventions, plus squines) +\catcode`@=11 % enable private control sequences +\def\wlog#1{} % don't put allocation info into the log + +\newskip\hsssglue \hsssglue=0pt plus 1fill minus 1fill \def\hsss{\hskip\hsssglue} + +\newdimen\unitlength \newdimen\linethickness +\newdimen\@picheight \newdimen\@xdim \newdimen\@ydim \newdimen\@len \newdimen\@save +\newcount\@multicount \newcount\@xarg \newcount\@yarg +\newbox\@picbox \newbox\@mpbox + +\font\tenln=line10 \font\tenlnw=linew10 +\font\tencirc=lcircle10 \font\tencircw=lcirclew10 + +\def\thinlines{\let\linefont=\tenln \let\circlefont=\tencirc + \linethickness=\fontdimen8\linefont} +\def\thicklines{\let\linefont=\tenlnw \let\circlefont=\tencircw + \linethickness=\fontdimen8\linefont} +\thinlines + +\def\beginpicture(#1,#2)(#3,#4){\@picheight=#2\unitlength + \setbox\@picbox=\hbox to#1\unitlength\bgroup \let\line=\@line + \kern-#3\unitlength \lower#4\unitlength\hbox\bgroup\ignorespaces} +\def\endpicture{\egroup\hss\egroup + \ht\@picbox=\@picheight \dp\@picbox=\z@ + \leavevmode\box\@picbox} + +\def\put(#1,#2)#3{\raise#2\unitlength\rlap{\kern#1\unitlength #3}\ignorespaces} + +\def\multiput(#1,#2)(#3,#4)#5#6{\@multicount=#5\relax + \@xdim=#1\unitlength \@ydim=#2\unitlength \setbox\@mpbox=\hbox{#6}% + \loop\ifnum\@multicount>0 + \raise\@ydim\rlap{\kern\@xdim \unhcopy\@mpbox}% + \advance\@xdim#3\unitlength \advance\@ydim#4\unitlength + \advance\@multicount\m@ne \repeat\ignorespaces} + +\def\makebox(#1,#2)#3{\setbox\@picbox=\hbox to#1\unitlength{\hss#3\hss}% + \@ydim=\ht\@picbox \advance\@ydim-\dp\@picbox + \ht\@picbox=#2\unitlength \dp\@picbox=\z@ + \leavevmode\lower.5\@ydim\box\@picbox} + +\newif\ifneg +\def\@line(#1,#2)#3{\@xarg=#1 \@yarg=#2 \@len=#3\unitlength \leavevmode + \ifnum\@xarg<0 \reverseline \else \negfalse \@ydim=\z@\fi + \ifnum\@xarg=0 \@vline + \else\ifnum\@yarg=0 \@hline \else\@sline\fi\fi + \ifneg\kern-\@len\else\@save=\@ydim\fi} +\def\reverseline{\negtrue \kern-\@len \@xarg=-\@xarg + \@ydim=\@len \multiply\@ydim\@yarg \divide\@ydim\@xarg \@yarg=-\@yarg} + +\def\@hline{\vrule height.5\linethickness depth.5\linethickness width\@len} +\def\@vline{\kern-.5\linethickness\vrule width\linethickness + \ifnum\@yarg<0 height\z@ depth\else depth\z@ height\fi\@len + \kern-.5\linethickness} + +\def\@sline{\setbox\@picbox=\hbox{\linefont \count@=\@xarg \multiply\count@ 8 + \ifnum\@yarg>0 \advance\count@\@yarg \advance\count@-9 + \else \advance\count@-\@yarg \advance\count@ 55 \fi \char\count@}% + \ifnum\@yarg<0 \@picheight=-\ht\@picbox \advance\@ydim\@picheight + \else \@picheight=\ht\@picbox \fi + \@xdim=\wd\@picbox \@save=\@ydim + \loop\ifdim\@xdim<\@len \raise\@ydim\copy\@picbox + \advance\@xdim\wd\@picbox \advance\@ydim\@picheight \repeat + \advance\@xdim-\@len \kern-\@xdim + \multiply\@xdim\@yarg \divide\@xdim\@xarg \advance\@ydim-\@xdim + \raise\@ydim\box\@picbox} + +\def\vector(#1,#2)#3{\@line(#1,#2){#3}% + \ifnum\@xarg=0 \@vvector \else\ifnum\@yarg=0 \@hvector \else\@svector\fi\fi} +\def\@hvector{\ifneg\rlap{\linefont\char27}\else + \smash{\llap{\linefont\char45}}\fi} % we have to smash because of font bug +\def\@vvector{\ifnum\@yarg<0 \raise-\@len\rlap{\linefont\char63}% + \else\setbox\@picbox=\rlap{\linefont\char54}\advance\@len-\ht\@picbox + \raise\@len\box\@picbox\fi} + +\def\@svector{\setbox\@picbox=\hbox to\z@{\linefont + \ifnum\@yarg<0 \count@=55 \@yarg=-\@yarg \else\count@=-9 \fi + \ifneg\multiply\@xarg16 \multiply\@yarg2 + \else\hss % \llap + \ifnum\@xarg>2 \multiply\@xarg9 \multiply\@yarg2 \advance\count@29 + \else\ifnum\@yarg>2 \multiply\@xarg16 \multiply\@yarg9 \advance\count@-20 + \else\multiply\@xarg24 \multiply\@yarg3 \fi\fi\fi + \advance\count@\@xarg \advance\count@\@yarg \char\count@ + \ifneg\hss\fi}% \rlap + \raise\@save\box\@picbox} + +\def\disk#1{\@len=#1\unitlength \count@='160 \@diskcirc} +\def\circle#1{\@len=#1\unitlength \count@='140 \@diskcirc} +\def\@diskcirc{\setbox\@picbox=\hbox{\circlefont\char\count@}\@xdim=\wd\@picbox + \leavevmode \ifdim\@len>15.499\@xdim \@bigdc \else \@smalldc\fi} +\def\@bigdc{\ifnum\count@<'160 \@bigcirc + \else \@len=15\@xdim \@diskcirc\fi} +\def\@smalldc{{\advance\@len-.5\@xdim + \loop\ifdim\@xdim<\@len \advance\count@\@ne \advance\@xdim\wd\@picbox\repeat + \hbox{\circlefont\char\count@}}} +\def\@bigcirc{{\circlefont\count@=15 + \setbox\@picbox=\hbox{\char\count@}\@xdim=\wd\@picbox + \ifdim\@len>2.5\@xdim \@len=2.5\@xdim\fi + \advance\@len-.125\wd\@picbox + \loop\ifdim\@xdim<\@len \advance\count@ 4 \advance\@xdim.25\wd\@picbox\repeat + \@ydim=.5\@xdim \advance\@ydim.5\linethickness + \setbox\@picbox=\vbox{\hbox{\char\count@\advance\count@-3\char\count@}% + \nointerlineskip + \hbox{\advance\count@\m@ne\char\count@\advance\count@\m@ne\char\count@}}% + \kern-\@ydim\lower\@ydim\box\@picbox}} + +\newif\ifovaltl \newif\ifovaltr \newif\ifovalbl \newif\ifovalbr +\ovaltltrue \ovaltrtrue \ovalbltrue \ovalbrtrue +\def\oval(#1,#2){\@xdim=#1\unitlength \@ydim=#2\unitlength + {\circlefont \setbox\@picbox=\hbox{\char0} + \ifdim\@xdim<\wd\@picbox \@xdim=\wd\@picbox\fi + \ifdim\@ydim<\wd\@picbox \@ydim=\wd\@picbox\fi + \@save=\@xdim \ifdim\@ydim<\@save \@save=\@ydim \fi + \count@=39 + \loop \setbox\@picbox=\hbox{\char\count@}\ifdim\@save<\wd\@picbox + \advance\count@-4 \repeat + \setbox\strutbox=\hbox{\vrule height\ht\@picbox depth\dp\@picbox width\z@ + \kern\wd\@picbox}% + \@save=.5\wd\@picbox \advance\@save-.5\linethickness + \setbox0=\hbox to\@xdim{\ifovaltl\char\count@\else\strut\fi + \kern-\@save\leaders\hrule height\ifovaltl\linethickness\else\z@\fi\hfil + \leaders\hrule height\ifovaltr\linethickness\else\z@\fi\hfil\kern\@save + \ifovaltr\advance\count@-3\char\count@\else\strut\fi\kern-\wd\@picbox}% + \advance\count@\m@ne + \setbox2=\hbox to\@xdim{\ifovalbl\char\count@\else\strut\fi + \kern-\@save\leaders\hrule height\ifovalbl\linethickness\else\z@\fi\hfil + \leaders\hrule height\ifovalbr\linethickness\else\z@\fi\hfil\kern\@save + \ifovalbr\advance\count@\m@ne\char\count@\else\strut\fi\kern-\wd\@picbox}% + \@save=\@ydim \advance\@save-\wd\@picbox \divide\@save 2 + \setbox\@picbox=\vbox{\box0\nointerlineskip + \hbox to\@xdim{\vrule height\@save width\ifovaltl\linethickness\else\z@\fi + \hfil\ifovaltr\vrule width\linethickness\kern-\linethickness\fi}% + \nointerlineskip + \hbox to\@xdim{\vrule height\@save width\ifovalbl\linethickness\else\z@\fi + \hfil\ifovalbr\vrule width\linethickness\kern-\linethickness\fi}% + \nointerlineskip\box2}% + \@save=.5\@ydim \advance\@save.5\linethickness \leavevmode + \kern-.5\@xdim \kern-.5\linethickness \lower\@save\box\@picbox}} + +\def\cpic#1\endcpic{\vcenter{\hbox{\beginpicture#1\endpicture}}} + +% Squines (quadratic splines) +% example of use: to plot f(x) between x0 and x1, you can say +% \put(0,0){\squine(x0,xm,x1,y0,ym,y1)}, where y0=f(x0), y1=f(x1) +% xm=(y0-y1+s1x1-s0x0)/(s1-s0), ym=(s0(s1x1-y1)-s1(s0x0-y0))/(s1-s0), +% s0=f'(x0), and s1=f'(x1). + +\newdimen\@xi \newdimen\@xii \newdimen\@xiii \newdimen\@xiv +\newdimen\@xpt \newdimen\@xoldpt +\newdimen\@yi \newdimen\@yii \newdimen\@yiii \newdimen\@yiv +\newdimen\@ypt \newdimen\@yoldpt +\def\squine(#1,#2,#3,#4,#5,#6){\setbox\@picbox\hbox{\tencirc q}% + \global\@xoldpt=#1\unitlength \global\@yoldpt=#4\unitlength \kern\@xoldpt + \@xi=\@xoldpt \@xii=#2\unitlength \@xiii=#3\unitlength + \@yi=\@yoldpt \@yii=#5\unitlength \@yiii=#6\unitlength + \squinerec + \@xpt=#3\unitlength \@ypt=#6\unitlength \@addpoint + \raise\@ypt\copy\@picbox} +\newif\iffar +\def\squinerec{\farfalse \testnear\@xi\@xiii \testnear\@yi\@yiii + \iffar \decast \fi} +\def\testnear#1#2{\@save=#1\advance\@save-#2% + \ifdim\@save<\z@ \@save=-\@save\fi \ifdim\@save>\p@ \fartrue \fi} +\def\decast{\@xpt=\@xi \advance\@xpt\@xii \divide\@xpt2 + \advance\@xii\@xiii \divide\@xii2 + \@xiv=\@xpt \advance\@xiv\@xii \divide\@xiv2 + \@ypt=\@yi \advance\@ypt\@yii \divide\@ypt2 + \advance\@yii\@yiii \divide\@yii2 + \@yiv=\@ypt \advance\@yiv\@yii \divide\@yiv2 + \begingroup\@xii=\@xpt \@xiii=\@xiv + \@yii=\@ypt \@yiii=\@yiv \squinerec\endgroup + \@xpt=\@xiv \@ypt=\@yiv \@addpoint + \@xi=\@xiv \@yi=\@yiv \squinerec} +\def\@addpoint{%\message{(\the\@xpt,\the\@ypt)}% + \global\advance\@xoldpt-\@xpt \wd\@picbox=-\@xoldpt + \raise\@yoldpt\copy\@picbox \global\@xoldpt=\@xpt \global\@yoldpt=\@ypt} + +\catcode`\@=12 % disable private control sequences diff --git a/Master/texmf-dist/tex/plain/base/plain.tex b/Master/texmf-dist/tex/plain/base/plain.tex new file mode 100644 index 00000000000..02d0523dd55 --- /dev/null +++ b/Master/texmf-dist/tex/plain/base/plain.tex @@ -0,0 +1,1241 @@ +% This is the plain TeX format that's described in The TeXbook. +% N.B.: A version number is defined at the very end of this file; +% please change that number whenever the file is modified! +% And don't modify the file unless you change its name: +% Everybody's "plain.tex" file should be the same, worldwide. + +% Unlimited copying and redistribution of this file are permitted as long +% as this file is not modified. Modifications are permitted, but only if +% the resulting file is not named plain.tex. + +\catcode`\{=1 % left brace is begin-group character +\catcode`\}=2 % right brace is end-group character +\catcode`\$=3 % dollar sign is math shift +\catcode`\&=4 % ampersand is alignment tab +\catcode`\#=6 % hash mark is macro parameter character +\catcode`\^=7 \catcode`\^^K=7 % circumflex and uparrow are for superscripts +\catcode`\_=8 \catcode`\^^A=8 % underline and downarrow are for subscripts +\catcode`\^^I=10 % ascii tab is a blank space +\chardef\active=13 \catcode`\~=\active % tilde is active +\catcode`\^^L=\active \outer\def^^L{\par} % ascii form-feed is "\outer\par" + +\message{Preloading the plain format: codes,} + +% We had to define the \catcodes right away, before the message line, +% since \message uses the { and } characters. +% When INITEX (the TeX initializer) starts up, +% it has defined the following \catcode values: +% \catcode`\^^@=9 % ascii null is ignored +% \catcode`\^^M=5 % ascii return is end-line +% \catcode`\\=0 % backslash is TeX escape character +% \catcode`\%=14 % percent sign is comment character +% \catcode`\ =10 % ascii space is blank space +% \catcode`\^^?=15 % ascii delete is invalid +% \catcode`\A=11 ... \catcode`\Z=11 % uppercase letters +% \catcode`\a=11 ... \catcode`\z=11 % lowercase letters +% all others are type 12 (other) + +% Here is a list of the characters that have been specially catcoded: +\def\dospecials{\do\ \do\\\do\{\do\}\do\$\do\&% + \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~} +% (not counting ascii null, tab, linefeed, formfeed, return, delete) +% Each symbol in the list is preceded by \do, which can be defined +% if you want to do something to every item in the list. + +% We make @ signs act like letters, temporarily, to avoid conflict +% between user names and internal control sequences of plain format. +\catcode`@=11 + +% INITEX sets up \mathcode x=x, for x=0..255, except that +% \mathcode x=x+"7100, for x = `A to `Z and `a to `z; +% \mathcode x=x+"7000, for x = `0 to `9. +% The following changes define internal codes as recommended +% in Appendix C of The TeXbook: +\mathcode`\^^@="2201 % \cdot +\mathcode`\^^A="3223 % \downarrow +\mathcode`\^^B="010B % \alpha +\mathcode`\^^C="010C % \beta +\mathcode`\^^D="225E % \land +\mathcode`\^^E="023A % \lnot +\mathcode`\^^F="3232 % \in +\mathcode`\^^G="0119 % \pi +\mathcode`\^^H="0115 % \lambda +\mathcode`\^^I="010D % \gamma +\mathcode`\^^J="010E % \delta +\mathcode`\^^K="3222 % \uparrow +\mathcode`\^^L="2206 % \pm +\mathcode`\^^M="2208 % \oplus +\mathcode`\^^N="0231 % \infty +\mathcode`\^^O="0140 % \partial +\mathcode`\^^P="321A % \subset +\mathcode`\^^Q="321B % \supset +\mathcode`\^^R="225C % \cap +\mathcode`\^^S="225B % \cup +\mathcode`\^^T="0238 % \forall +\mathcode`\^^U="0239 % \exists +\mathcode`\^^V="220A % \otimes +\mathcode`\^^W="3224 % \leftrightarrow +\mathcode`\^^X="3220 % \leftarrow +\mathcode`\^^Y="3221 % \rightarrow +\mathcode`\^^Z="8000 % \ne +\mathcode`\^^[="2205 % \diamond +\mathcode`\^^\="3214 % \le +\mathcode`\^^]="3215 % \ge +\mathcode`\^^^="3211 % \equiv +\mathcode`\^^_="225F % \lor +\mathcode`\ ="8000 % \space +\mathcode`\!="5021 +\mathcode`\'="8000 % ^\prime +\mathcode`\(="4028 +\mathcode`\)="5029 +\mathcode`\*="2203 % \ast +\mathcode`\+="202B +\mathcode`\,="613B +\mathcode`\-="2200 +\mathcode`\.="013A +\mathcode`\/="013D +\mathcode`\:="303A +\mathcode`\;="603B +\mathcode`\<="313C +\mathcode`\=="303D +\mathcode`\>="313E +\mathcode`\?="503F +\mathcode`\[="405B +\mathcode`\\="026E % \backslash +\mathcode`\]="505D +\mathcode`\_="8000 % \_ +\mathcode`\{="4266 +\mathcode`\|="026A +\mathcode`\}="5267 +\mathcode`\^^?="1273 % \smallint + +% INITEX sets \uccode`x=`X and \uccode `X=`X for all letters x, +% and \lccode`x=`x, \lccode`X=`x; all other values are zero. +% No changes to those tables are needed in plain TeX format. + +% INITEX sets \sfcode x=1000 for all x, except that \sfcode`X=999 +% for uppercase letters. The following changes are needed: +\sfcode`\)=0 \sfcode`\'=0 \sfcode`\]=0 +% The \nonfrenchspacing macro will make further changes to \sfcode values. + +% Finally, INITEX sets all \delcode values to -1, except \delcode`.=0 +\delcode`\(="028300 +\delcode`\)="029301 +\delcode`\[="05B302 +\delcode`\]="05D303 +\delcode`\<="26830A +\delcode`\>="26930B +\delcode`\/="02F30E +\delcode`\|="26A30C +\delcode`\\="26E30F +% N.B. { and } should NOT get delcodes; otherwise parameter grouping fails! + +% To make the plain macros more efficient in time and space, +% several constant values are declared here as control sequences. +% If they were changed, anything could happen; so they are private symbols. +\chardef\@ne=1 +\chardef\tw@=2 +\chardef\thr@@=3 +\chardef\sixt@@n=16 +\chardef\@cclv=255 +\mathchardef\@cclvi=256 +\mathchardef\@m=1000 +\mathchardef\@M=10000 +\mathchardef\@MM=20000 + +% Allocation of registers + +% Here are macros for the automatic allocation of \count, \box, \dimen, +% \skip, \muskip, and \toks registers, as well as \read and \write +% stream numbers, \fam codes, \language codes, and \insert numbers. + +\message{registers,} + +% When a register is used only temporarily, it need not be allocated; +% grouping can be used, making the value previously in the register return +% after the close of the group. The main use of these macros is for +% registers that are defined by one macro and used by others, possibly at +% different nesting levels. All such registers should be defined through +% these macros; otherwise conflicts may occur, especially when two or more +% macro packages are being used at once. + +% The following counters are reserved: +% 0 to 9 page numbering +% 10 count allocation +% 11 dimen allocation +% 12 skip allocation +% 13 muskip allocation +% 14 box allocation +% 15 toks allocation +% 16 read file allocation +% 17 write file allocation +% 18 math family allocation +% 19 language allocation +% 20 insert allocation +% 21 the most recently allocated number +% 22 constant -1 +% New counters are allocated starting with 23, 24, etc. Other registers are +% allocated starting with 10. This leaves 0 through 9 for the user to play +% with safely, except that counts 0 to 9 are considered to be the page and +% subpage numbers (since they are displayed during output). In this scheme, +% \count 10 always contains the number of the highest-numbered counter that +% has been allocated, \count 14 the highest-numbered box, etc. +% Inserts are given numbers 254, 253, etc., since they require a \count, +% \dimen, \skip, and \box all with the same number; \count 20 contains the +% lowest-numbered insert that has been allocated. Of course, \box255 is +% reserved for \output; \count255, \dimen255, and \skip255 can be used freely. + +% It is recommended that macro designers always use +% \global assignments with respect to registers numbered 1, 3, 5, 7, 9, and +% always non-\global assignments with respect to registers 0, 2, 4, 6, 8, 255. +% This will prevent ``save stack buildup'' that might otherwise occur. + +\count10=22 % allocates \count registers 23, 24, ... +\count11=9 % allocates \dimen registers 10, 11, ... +\count12=9 % allocates \skip registers 10, 11, ... +\count13=9 % allocates \muskip registers 10, 11, ... +\count14=9 % allocates \box registers 10, 11, ... +\count15=9 % allocates \toks registers 10, 11, ... +\count16=-1 % allocates input streams 0, 1, ... +\count17=-1 % allocates output streams 0, 1, ... +\count18=3 % allocates math families 4, 5, ... +\count19=0 % allocates \language codes 1, 2, ... +\count20=255 % allocates insertions 254, 253, ... +\countdef\insc@unt=20 % the insertion counter +\countdef\allocationnumber=21 % the most recent allocation +\countdef\m@ne=22 \m@ne=-1 % a handy constant +\def\wlog{\immediate\write\m@ne} % write on log file (only) + +% Here are abbreviations for the names of scratch registers +% that don't need to be allocated. + +\countdef\count@=255 +\dimendef\dimen@=0 +\dimendef\dimen@i=1 % global only +\dimendef\dimen@ii=2 +\skipdef\skip@=0 +\toksdef\toks@=0 + +% Now, we define \newcount, \newbox, etc. so that you can say \newcount\foo +% and \foo will be defined (with \countdef) to be the next counter. +% To find out which counter \foo is, you can look at \allocationnumber. +% Since there's no \boxdef command, \chardef is used to define a \newbox, +% \newinsert, \newfam, and so on. + +\outer\def\newcount{\alloc@0\count\countdef\insc@unt} +\outer\def\newdimen{\alloc@1\dimen\dimendef\insc@unt} +\outer\def\newskip{\alloc@2\skip\skipdef\insc@unt} +\outer\def\newmuskip{\alloc@3\muskip\muskipdef\@cclvi} +\outer\def\newbox{\alloc@4\box\chardef\insc@unt} +\let\newtoks=\relax % we do this to allow plain.tex to be read in twice +\outer\def\newhelp#1#2{\newtoks#1#1\expandafter{\csname#2\endcsname}} +\outer\def\newtoks{\alloc@5\toks\toksdef\@cclvi} +\outer\def\newread{\alloc@6\read\chardef\sixt@@n} +\outer\def\newwrite{\alloc@7\write\chardef\sixt@@n} +\outer\def\newfam{\alloc@8\fam\chardef\sixt@@n} +\outer\def\newlanguage{\alloc@9\language\chardef\@cclvi} +\def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne + \ch@ck#1#4#2% make sure there's still room + \allocationnumber=\count1#1% + \global#3#5=\allocationnumber + \wlog{\string#5=\string#2\the\allocationnumber}} +\outer\def\newinsert#1{\global\advance\insc@unt by\m@ne + \ch@ck0\insc@unt\count + \ch@ck1\insc@unt\dimen + \ch@ck2\insc@unt\skip + \ch@ck4\insc@unt\box + \allocationnumber=\insc@unt + \global\chardef#1=\allocationnumber + \wlog{\string#1=\string\insert\the\allocationnumber}} +\def\ch@ck#1#2#3{\ifnum\count1#1<#2% + \else\errmessage{No room for a new #3}\fi} + +% Here are some examples of allocation. +\newdimen\maxdimen \maxdimen=16383.99999pt % the largest legal <dimen> +\newskip\hideskip \hideskip=-1000pt plus 1fill % negative but can grow +\newskip\centering \centering=0pt plus 1000pt minus 1000pt +\newdimen\p@ \p@=1pt % this saves macro space and time +\newdimen\z@ \z@=0pt % can be used both for 0pt and 0 +\newskip\z@skip \z@skip=0pt plus0pt minus0pt +\newbox\voidb@x % permanently void box register + +% And here's a different sort of allocation: +% For example, \newif\iffoo creates \footrue, \foofalse to go with \iffoo. +\outer\def\newif#1{\count@\escapechar \escapechar\m@ne + \expandafter\expandafter\expandafter + \def\@if#1{true}{\let#1=\iftrue}% + \expandafter\expandafter\expandafter + \def\@if#1{false}{\let#1=\iffalse}% + \@if#1{false}\escapechar\count@} % the condition starts out false +\def\@if#1#2{\csname\expandafter\if@\string#1#2\endcsname} +{\uccode`1=`i \uccode`2=`f \uppercase{\gdef\if@12{}}} % `if' is required + +% Assign initial values to TeX's parameters + +\message{parameters,} + +% All of TeX's numeric parameters are listed here, +% but the code is commented out if no special value needs to be set. +% INITEX makes all parameters zero except where noted. + +\pretolerance=100 +\tolerance=200 % INITEX sets this to 10000 +\hbadness=1000 +\vbadness=1000 +\linepenalty=10 +\hyphenpenalty=50 +\exhyphenpenalty=50 +\binoppenalty=700 +\relpenalty=500 +\clubpenalty=150 +\widowpenalty=150 +\displaywidowpenalty=50 +\brokenpenalty=100 +\predisplaypenalty=10000 +% \postdisplaypenalty=0 +% \interlinepenalty=0 +% \floatingpenalty=0, set during \insert +% \outputpenalty=0, set before TeX enters \output +\doublehyphendemerits=10000 +\finalhyphendemerits=5000 +\adjdemerits=10000 +% \looseness=0, cleared by TeX after each paragraph +% \pausing=0 +% \holdinginserts=0 +% \tracingonline=0 +% \tracingmacros=0 +% \tracingstats=0 +% \tracingparagraphs=0 +% \tracingpages=0 +% \tracingoutput=0 +\tracinglostchars=1 +% \tracingcommands=0 +% \tracingrestores=0 +% \language=0 +\uchyph=1 +% \lefthyphenmin=2 \righthyphenmin=3 set below +% \globaldefs=0 +% \maxdeadcycles=25 % INITEX does this +% \hangafter=1 % INITEX does this, also TeX after each paragraph +% \fam=0 +% \mag=1000 % INITEX does this +% \escapechar=`\\ % INITEX does this +\defaulthyphenchar=`\- +\defaultskewchar=-1 +% \endlinechar=`\^^M % INITEX does this +\newlinechar=-1 +\delimiterfactor=901 +% \time=now % TeX does this at beginning of job +% \day=now % TeX does this at beginning of job +% \month=now % TeX does this at beginning of job +% \year=now % TeX does this at beginning of job +\showboxbreadth=5 +\showboxdepth=3 +\errorcontextlines=5 + +\hfuzz=0.1pt +\vfuzz=0.1pt +\overfullrule=5pt +\hsize=6.5in +\vsize=8.9in +\maxdepth=4pt +\splitmaxdepth=\maxdimen +\boxmaxdepth=\maxdimen +% \lineskiplimit=0pt, changed by \normalbaselines +\delimitershortfall=5pt +\nulldelimiterspace=1.2pt +\scriptspace=0.5pt +% \mathsurround=0pt +% \predisplaysize=0pt, set before TeX enters $$ +% \displaywidth=0pt, set before TeX enters $$ +% \displayindent=0pt, set before TeX enters $$ +\parindent=20pt +% \hangindent=0pt, zeroed by TeX after each paragraph +% \hoffset=0pt +% \voffset=0pt + +% \baselineskip=0pt, changed by \normalbaselines +% \lineskip=0pt, changed by \normalbaselines +\parskip=0pt plus 1pt +\abovedisplayskip=12pt plus 3pt minus 9pt +\abovedisplayshortskip=0pt plus 3pt +\belowdisplayskip=12pt plus 3pt minus 9pt +\belowdisplayshortskip=7pt plus 3pt minus 4pt +% \leftskip=0pt +% \rightskip=0pt +\topskip=10pt +\splittopskip=10pt +% \tabskip=0pt +% \spaceskip=0pt +% \xspaceskip=0pt +\parfillskip=0pt plus 1fil + +\thinmuskip=3mu +\medmuskip=4mu plus 2mu minus 4mu +\thickmuskip=5mu plus 5mu + +% We also define special registers that function like parameters: +\newskip\smallskipamount \smallskipamount=3pt plus 1pt minus 1pt +\newskip\medskipamount \medskipamount=6pt plus 2pt minus 2pt +\newskip\bigskipamount \bigskipamount=12pt plus 4pt minus 4pt +\newskip\normalbaselineskip \normalbaselineskip=12pt +\newskip\normallineskip \normallineskip=1pt +\newdimen\normallineskiplimit \normallineskiplimit=0pt +\newdimen\jot \jot=3pt +\newcount\interdisplaylinepenalty \interdisplaylinepenalty=100 +\newcount\interfootnotelinepenalty \interfootnotelinepenalty=100 + +% Definitions for preloaded fonts + +\def\magstephalf{1095 } +\def\magstep#1{\ifcase#1 \@m\or 1200\or 1440\or 1728\or 2074\or 2488\fi\relax} + +% Fonts assigned to \preloaded are not part of "plain TeX", +% but they are preloaded so that other format packages can use them. +% For example, if another set of macros says "\font\ninerm=cmr9", +% TeX will not have to reload the font metric information for cmr9. + +\message{fonts,} + +\font\tenrm=cmr10 % roman text +\font\preloaded=cmr9 +\font\preloaded=cmr8 +\font\sevenrm=cmr7 +\font\preloaded=cmr6 +\font\fiverm=cmr5 + +\font\teni=cmmi10 % math italic +\font\preloaded=cmmi9 +\font\preloaded=cmmi8 +\font\seveni=cmmi7 +\font\preloaded=cmmi6 +\font\fivei=cmmi5 + +\font\tensy=cmsy10 % math symbols +\font\preloaded=cmsy9 +\font\preloaded=cmsy8 +\font\sevensy=cmsy7 +\font\preloaded=cmsy6 +\font\fivesy=cmsy5 + +\font\tenex=cmex10 % math extension + +\font\preloaded=cmss10 % sans serif +\font\preloaded=cmssq8 + +\font\preloaded=cmssi10 % sans serif italic +\font\preloaded=cmssqi8 + +\font\tenbf=cmbx10 % boldface extended +\font\preloaded=cmbx9 +\font\preloaded=cmbx8 +\font\sevenbf=cmbx7 +\font\preloaded=cmbx6 +\font\fivebf=cmbx5 + +\font\tentt=cmtt10 % typewriter +\font\preloaded=cmtt9 +\font\preloaded=cmtt8 + +\font\preloaded=cmsltt10 % slanted typewriter + +\font\tensl=cmsl10 % slanted roman +\font\preloaded=cmsl9 +\font\preloaded=cmsl8 + +\font\tenit=cmti10 % text italic +\font\preloaded=cmti9 +\font\preloaded=cmti8 +\font\preloaded=cmti7 + +\message{more fonts,} +\font\preloaded=cmu10 % unslanted text italic + +\font\preloaded=cmmib10 % bold math italic +\font\preloaded=cmbsy10 % bold math symbols + +\font\preloaded=cmcsc10 % caps and small caps + +\font\preloaded=cmssbx10 % sans serif bold extended + +\font\preloaded=cmdunh10 % Dunhill style + +\font\preloaded=cmr7 scaled \magstep4 % for titles +\font\preloaded=cmtt10 scaled \magstep2 +\font\preloaded=cmssbx10 scaled \magstep2 + +\font\preloaded=manfnt % METAFONT logo and dragon curve and special symbols + +% Additional \preloaded fonts can be specified here. +% (And those that were \preloaded above can be eliminated.) + +\let\preloaded=\undefined % preloaded fonts must be declared anew later. + +\skewchar\teni='177 \skewchar\seveni='177 \skewchar\fivei='177 +\skewchar\tensy='60 \skewchar\sevensy='60 \skewchar\fivesy='60 + +\textfont0=\tenrm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm +\def\rm{\fam\z@\tenrm} +\textfont1=\teni \scriptfont1=\seveni \scriptscriptfont1=\fivei +\def\mit{\fam\@ne} \def\oldstyle{\fam\@ne\teni} +\textfont2=\tensy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy +\def\cal{\fam\tw@} +\textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex +\newfam\itfam \def\it{\fam\itfam\tenit} % \it is family 4 +\textfont\itfam=\tenit +\newfam\slfam \def\sl{\fam\slfam\tensl} % \sl is family 5 +\textfont\slfam=\tensl +\newfam\bffam \def\bf{\fam\bffam\tenbf} % \bf is family 6 +\textfont\bffam=\tenbf \scriptfont\bffam=\sevenbf +\scriptscriptfont\bffam=\fivebf +\newfam\ttfam \def\tt{\fam\ttfam\tentt} % \tt is family 7 +\textfont\ttfam=\tentt + +% Macros for setting ordinary text +\message{macros,} + +\def\frenchspacing{\sfcode`\.\@m \sfcode`\?\@m \sfcode`\!\@m + \sfcode`\:\@m \sfcode`\;\@m \sfcode`\,\@m} +\def\nonfrenchspacing{\sfcode`\.3000\sfcode`\?3000\sfcode`\!3000% + \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 } + +\def\normalbaselines{\lineskip\normallineskip + \baselineskip\normalbaselineskip \lineskiplimit\normallineskiplimit} + +\def\^^M{\ } % control <return> = control <space> +\def\^^I{\ } % same for <tab> + +\def\lq{`} \def\rq{'} +\def\lbrack{[} \def\rbrack{]} + +\let\endgraf=\par \let\endline=\cr + +\def\space{ } +\def\empty{} +\def\null{\hbox{}} + +\let\bgroup={ \let\egroup=} + +% In \obeylines, we say `\let^^M=\par' instead of `\def^^M{\par}' +% since this allows, for example, `\let\par=\cr \obeylines \halign{...' +{\catcode`\^^M=\active % these lines must end with % + \gdef\obeylines{\catcode`\^^M\active \let^^M\par}% + \global\let^^M\par} % this is in case ^^M appears in a \write +\def\obeyspaces{\catcode`\ \active} +{\obeyspaces\global\let =\space} + +\def\loop#1\repeat{\def\body{#1}\iterate} +\def\iterate{\body \let\next\iterate \else\let\next\relax\fi \next} +\let\repeat=\fi % this makes \loop...\if...\repeat skippable + +\def\thinspace{\kern .16667em } +\def\negthinspace{\kern-.16667em } +\def\enspace{\kern.5em } + +\def\enskip{\hskip.5em\relax} +\def\quad{\hskip1em\relax} +\def\qquad{\hskip2em\relax} + +\def\smallskip{\vskip\smallskipamount} +\def\medskip{\vskip\medskipamount} +\def\bigskip{\vskip\bigskipamount} + +\def\nointerlineskip{\prevdepth-1000\p@} +\def\offinterlineskip{\baselineskip-1000\p@ + \lineskip\z@ \lineskiplimit\maxdimen} + +\def\topglue{\nointerlineskip\vglue-\topskip\vglue} % for top of page +\def\vglue{\afterassignment\vgl@\skip@=} +\def\vgl@{\par \dimen@\prevdepth \hrule height\z@ + \nobreak\vskip\skip@ \prevdepth\dimen@} +\def\hglue{\afterassignment\hgl@\skip@=} +\def\hgl@{\leavevmode \count@\spacefactor \vrule width\z@ + \nobreak\hskip\skip@ \spacefactor\count@} + +\def~{\penalty\@M \ } % tie +\def\slash{/\penalty\exhyphenpenalty} % a `/' that acts like a `-' + +\def\break{\penalty-\@M} +\def\nobreak{\penalty \@M} +\def\allowbreak{\penalty \z@} + +\def\filbreak{\par\vfil\penalty-200\vfilneg} +\def\goodbreak{\par\penalty-500 } +\def\eject{\par\break} +\def\supereject{\par\penalty-\@MM} + +\def\removelastskip{\ifdim\lastskip=\z@\else\vskip-\lastskip\fi} +\def\smallbreak{\par\ifdim\lastskip<\smallskipamount + \removelastskip\penalty-50\smallskip\fi} +\def\medbreak{\par\ifdim\lastskip<\medskipamount + \removelastskip\penalty-100\medskip\fi} +\def\bigbreak{\par\ifdim\lastskip<\bigskipamount + \removelastskip\penalty-200\bigskip\fi} + +\def\line{\hbox to\hsize} +\def\leftline#1{\line{#1\hss}} +\def\rightline#1{\line{\hss#1}} +\def\centerline#1{\line{\hss#1\hss}} + +\def\rlap#1{\hbox to\z@{#1\hss}} +\def\llap#1{\hbox to\z@{\hss#1}} + +\def\m@th{\mathsurround\z@} +\def\underbar#1{$\setbox\z@\hbox{#1}\dp\z@\z@ + \m@th \underline{\box\z@}$} + +\newbox\strutbox +\setbox\strutbox=\hbox{\vrule height8.5pt depth3.5pt width\z@} +\def\strut{\relax\ifmmode\copy\strutbox\else\unhcopy\strutbox\fi} + +\def\hidewidth{\hskip\hideskip} % for alignment entries that can stick out +\def\ialign{\everycr{}\tabskip\z@skip\halign} % initialized \halign +\newcount\mscount +\def\multispan#1{\omit \mscount#1\relax + \loop\ifnum\mscount>\@ne \sp@n\repeat} +\def\sp@n{\span\omit\advance\mscount\m@ne} + +\newif\ifus@ \newif\if@cr +\newbox\tabs \newbox\tabsyet \newbox\tabsdone + +\def\cleartabs{\global\setbox\tabsyet\null \setbox\tabs\null} +\def\settabs{\setbox\tabs\null \futurelet\next\sett@b} +\let\+=\relax % in case this file is being read in twice +\def\sett@b{\ifx\next\+\def\nxt{\afterassignment\s@tt@b\let\nxt}% + \else\let\nxt\s@tcols\fi \let\next\relax \nxt} +\def\s@tt@b{\let\nxt\relax \us@false\m@ketabbox} +\def\tabalign{\us@true\m@ketabbox} % non-\outer version of \+ +\outer\def\+{\tabalign} +\def\s@tcols#1\columns{\count@#1\dimen@\hsize + \loop\ifnum\count@>\z@ \@nother \repeat} +\def\@nother{\dimen@ii\dimen@ \divide\dimen@ii\count@ + \setbox\tabs\hbox{\hbox to\dimen@ii{}\unhbox\tabs}% + \advance\dimen@-\dimen@ii \advance\count@\m@ne} + +\def\m@ketabbox{\begingroup + \global\setbox\tabsyet\copy\tabs + \global\setbox\tabsdone\null + \def\cr{\@crtrue\crcr\egroup\egroup + \ifus@\unvbox\z@\lastbox\fi\endgroup + \setbox\tabs\hbox{\unhbox\tabsyet\unhbox\tabsdone}}% + \setbox\z@\vbox\bgroup\@crfalse + \ialign\bgroup&\t@bbox##\t@bb@x\crcr} + +\def\t@bbox{\setbox\z@\hbox\bgroup} +\def\t@bb@x{\if@cr\egroup % now \box\z@ holds the column + \else\hss\egroup \global\setbox\tabsyet\hbox{\unhbox\tabsyet + \global\setbox\@ne\lastbox}% now \box\@ne holds its size + \ifvoid\@ne\global\setbox\@ne\hbox to\wd\z@{}% + \else\setbox\z@\hbox to\wd\@ne{\unhbox\z@}\fi + \global\setbox\tabsdone\hbox{\box\@ne\unhbox\tabsdone}\fi + \box\z@} + +\def\hang{\hangindent\parindent} +\def\textindent#1{\indent\llap{#1\enspace}\ignorespaces} +\def\item{\par\hang\textindent} +\def\itemitem{\par\indent \hangindent2\parindent \textindent} +\def\narrower{\advance\leftskip\parindent + \advance\rightskip\parindent} + +\outer\def\beginsection#1\par{\vskip\z@ plus.3\vsize\penalty-250 + \vskip\z@ plus-.3\vsize\bigskip\vskip\parskip + \message{#1}\leftline{\bf#1}\nobreak\smallskip\noindent} +\outer\def\proclaim #1. #2\par{\medbreak + \noindent{\bf#1.\enspace}{\sl#2\par}% + \ifdim\lastskip<\medskipamount \removelastskip\penalty55\medskip\fi} + +\def\raggedright{\rightskip\z@ plus2em \spaceskip.3333em \xspaceskip.5em\relax} +\def\ttraggedright{\tt\rightskip\z@ plus2em\relax} % for use with \tt only + +\chardef\%=`\% +\chardef\&=`\& +\chardef\#=`\# +\chardef\$=`\$ +\chardef\ss="19 +\chardef\ae="1A +\chardef\oe="1B +\chardef\o="1C +\chardef\AE="1D +\chardef\OE="1E +\chardef\O="1F +\chardef\i="10 \chardef\j="11 % dotless letters +\def\aa{\accent23a} +\def\l{\char32l} +\def\L{\leavevmode\setbox0\hbox{L}\hbox to\wd0{\hss\char32L}} + +\def\leavevmode{\unhbox\voidb@x} % begins a paragraph, if necessary +\def\_{\leavevmode \kern.06em \vbox{\hrule width.3em}} +\def\AA{\leavevmode\setbox0\hbox{!}\dimen@\ht0\advance\dimen@-1ex% + \rlap{\raise.67\dimen@\hbox{\char'27}}A} + +\def\mathhexbox#1#2#3{\leavevmode + \hbox{$\m@th \mathchar"#1#2#3$}} +\def\dag{\mathhexbox279} +\def\ddag{\mathhexbox27A} +\def\S{\mathhexbox278} +\def\P{\mathhexbox27B} +\def\Orb{\mathhexbox20D} + +\def\oalign#1{\leavevmode\vtop{\baselineskip\z@skip \lineskip.25ex% + \ialign{##\crcr#1\crcr}}} \def\o@lign{\lineskiplimit\z@ \oalign} +\def\ooalign{\lineskiplimit-\maxdimen \oalign} % chars over each other +{\catcode`p=12 \catcode`t=12 \gdef\\#1pt{#1}} \let\getf@ctor=\\ +\def\sh@ft#1{\dimen@#1\kern\expandafter\getf@ctor\the\fontdimen1\font + \dimen@} % kern by #1 times the current slant +\def\d#1{{\o@lign{\relax#1\crcr\hidewidth\sh@ft{-1ex}.\hidewidth}}} +\def\b#1{{\o@lign{\relax#1\crcr\hidewidth\sh@ft{-3ex}% + \vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}} +\def\c#1{{\setbox\z@\hbox{#1}\ifdim\ht\z@=1ex\accent24 #1% + \else\ooalign{\unhbox\z@\crcr\hidewidth\char24\hidewidth}\fi}} +\def\copyright{{\ooalign{\hfil\raise.07ex\hbox{c}\hfil\crcr\Orb}}} + +\def\dots{\relax\ifmmode\ldots\else$\m@th\ldots\,$\fi} +\def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX} + +\def\`#1{{\accent18 #1}} +\def\'#1{{\accent19 #1}} +\def\v#1{{\accent20 #1}} \let\^^_=\v +\def\u#1{{\accent21 #1}} \let\^^S=\u +\def\=#1{{\accent22 #1}} +\def\^#1{{\accent94 #1}} \let\^^D=\^ +\def\.#1{{\accent95 #1}} +\def\H#1{{\accent"7D #1}} +\def\~#1{{\accent"7E #1}} +\def\"#1{{\accent"7F #1}} +\def\t#1{{\edef\next{\the\font}\the\textfont1\accent"7F\next#1}} + +\def\hrulefill{\leaders\hrule\hfill} +\def\dotfill{\cleaders\hbox{$\m@th \mkern1.5mu.\mkern1.5mu$}\hfill} +\def\rightarrowfill{$\m@th\smash-\mkern-7mu% + \cleaders\hbox{$\mkern-2mu\smash-\mkern-2mu$}\hfill + \mkern-7mu\mathord\rightarrow$} +\def\leftarrowfill{$\m@th\mathord\leftarrow\mkern-7mu% + \cleaders\hbox{$\mkern-2mu\smash-\mkern-2mu$}\hfill + \mkern-7mu\smash-$} +\mathchardef\braceld="37A \mathchardef\bracerd="37B +\mathchardef\bracelu="37C \mathchardef\braceru="37D +\def\downbracefill{$\m@th \setbox\z@\hbox{$\braceld$}% + \braceld\leaders\vrule height\ht\z@ depth\z@\hfill\braceru + \bracelu\leaders\vrule height\ht\z@ depth\z@\hfill\bracerd$} +\def\upbracefill{$\m@th \setbox\z@\hbox{$\braceld$}% + \bracelu\leaders\vrule height\ht\z@ depth\z@\hfill\bracerd + \braceld\leaders\vrule height\ht\z@ depth\z@\hfill\braceru$} + +\outer\def\bye{\par\vfill\supereject\end} + +% Macros for math setting +\message{math definitions,} + +\let\sp=^ \let\sb=_ +\def\,{\mskip\thinmuskip} +\def\>{\mskip\medmuskip} +\def\;{\mskip\thickmuskip} +\def\!{\mskip-\thinmuskip} +\def\*{\discretionary{\thinspace\the\textfont2\char2}{}{}} +{\catcode`\'=\active \gdef'{^\bgroup\prim@s}} +\def\prim@s{\prime\futurelet\next\pr@m@s} +\def\pr@m@s{\ifx'\next\let\nxt\pr@@@s \else\ifx^\next\let\nxt\pr@@@t + \else\let\nxt\egroup\fi\fi \nxt} +\def\pr@@@s#1{\prim@s} \def\pr@@@t#1#2{#2\egroup} +{\catcode`\^^Z=\active \gdef^^Z{\not=}} % ^^Z is like \ne in math + +{\catcode`\_=\active \global\let_=\_} % _ in math is either subscript or \_ + +\mathchardef\alpha="010B +\mathchardef\beta="010C +\mathchardef\gamma="010D +\mathchardef\delta="010E +\mathchardef\epsilon="010F +\mathchardef\zeta="0110 +\mathchardef\eta="0111 +\mathchardef\theta="0112 +\mathchardef\iota="0113 +\mathchardef\kappa="0114 +\mathchardef\lambda="0115 +\mathchardef\mu="0116 +\mathchardef\nu="0117 +\mathchardef\xi="0118 +\mathchardef\pi="0119 +\mathchardef\rho="011A +\mathchardef\sigma="011B +\mathchardef\tau="011C +\mathchardef\upsilon="011D +\mathchardef\phi="011E +\mathchardef\chi="011F +\mathchardef\psi="0120 +\mathchardef\omega="0121 +\mathchardef\varepsilon="0122 +\mathchardef\vartheta="0123 +\mathchardef\varpi="0124 +\mathchardef\varrho="0125 +\mathchardef\varsigma="0126 +\mathchardef\varphi="0127 +\mathchardef\Gamma="7000 +\mathchardef\Delta="7001 +\mathchardef\Theta="7002 +\mathchardef\Lambda="7003 +\mathchardef\Xi="7004 +\mathchardef\Pi="7005 +\mathchardef\Sigma="7006 +\mathchardef\Upsilon="7007 +\mathchardef\Phi="7008 +\mathchardef\Psi="7009 +\mathchardef\Omega="700A + +\mathchardef\aleph="0240 +\def\hbar{{\mathchar'26\mkern-9muh}} +\mathchardef\imath="017B +\mathchardef\jmath="017C +\mathchardef\ell="0160 +\mathchardef\wp="017D +\mathchardef\Re="023C +\mathchardef\Im="023D +\mathchardef\partial="0140 +\mathchardef\infty="0231 +\mathchardef\prime="0230 +\mathchardef\emptyset="023B +\mathchardef\nabla="0272 +\def\surd{{\mathchar"1270}} +\mathchardef\top="023E +\mathchardef\bot="023F +\def\angle{{\vbox{\ialign{$\m@th\scriptstyle##$\crcr + \not\mathrel{\mkern14mu}\crcr + \noalign{\nointerlineskip} + \mkern2.5mu\leaders\hrule height.34pt\hfill\mkern2.5mu\crcr}}}} +\mathchardef\triangle="0234 +\mathchardef\forall="0238 +\mathchardef\exists="0239 +\mathchardef\neg="023A \let\lnot=\neg +\mathchardef\flat="015B +\mathchardef\natural="015C +\mathchardef\sharp="015D +\mathchardef\clubsuit="027C +\mathchardef\diamondsuit="027D +\mathchardef\heartsuit="027E +\mathchardef\spadesuit="027F + +\mathchardef\coprod="1360 +\mathchardef\bigvee="1357 +\mathchardef\bigwedge="1356 +\mathchardef\biguplus="1355 +\mathchardef\bigcap="1354 +\mathchardef\bigcup="1353 +\mathchardef\intop="1352 \def\int{\intop\nolimits} +\mathchardef\prod="1351 +\mathchardef\sum="1350 +\mathchardef\bigotimes="134E +\mathchardef\bigoplus="134C +\mathchardef\bigodot="134A +\mathchardef\ointop="1348 \def\oint{\ointop\nolimits} +\mathchardef\bigsqcup="1346 +\mathchardef\smallint="1273 + +\mathchardef\triangleleft="212F +\mathchardef\triangleright="212E +\mathchardef\bigtriangleup="2234 +\mathchardef\bigtriangledown="2235 +\mathchardef\wedge="225E \let\land=\wedge +\mathchardef\vee="225F \let\lor=\vee +\mathchardef\cap="225C +\mathchardef\cup="225B +\mathchardef\ddagger="227A +\mathchardef\dagger="2279 +\mathchardef\sqcap="2275 +\mathchardef\sqcup="2274 +\mathchardef\uplus="225D +\mathchardef\amalg="2271 +\mathchardef\diamond="2205 +\mathchardef\bullet="220F +\mathchardef\wr="226F +\mathchardef\div="2204 +\mathchardef\odot="220C +\mathchardef\oslash="220B +\mathchardef\otimes="220A +\mathchardef\ominus="2209 +\mathchardef\oplus="2208 +\mathchardef\mp="2207 +\mathchardef\pm="2206 +\mathchardef\circ="220E +\mathchardef\bigcirc="220D +\mathchardef\setminus="226E % for set difference A\setminus B +\mathchardef\cdot="2201 +\mathchardef\ast="2203 +\mathchardef\times="2202 +\mathchardef\star="213F + +\mathchardef\propto="322F +\mathchardef\sqsubseteq="3276 +\mathchardef\sqsupseteq="3277 +\mathchardef\parallel="326B +\mathchardef\mid="326A +\mathchardef\dashv="3261 +\mathchardef\vdash="3260 +\mathchardef\nearrow="3225 +\mathchardef\searrow="3226 +\mathchardef\nwarrow="322D +\mathchardef\swarrow="322E +\mathchardef\Leftrightarrow="322C +\mathchardef\Leftarrow="3228 +\mathchardef\Rightarrow="3229 +\def\neq{\not=} \let\ne=\neq +\mathchardef\leq="3214 \let\le=\leq +\mathchardef\geq="3215 \let\ge=\geq +\mathchardef\succ="321F +\mathchardef\prec="321E +\mathchardef\approx="3219 +\mathchardef\succeq="3217 +\mathchardef\preceq="3216 +\mathchardef\supset="321B +\mathchardef\subset="321A +\mathchardef\supseteq="3213 +\mathchardef\subseteq="3212 +\mathchardef\in="3232 +\mathchardef\ni="3233 \let\owns=\ni +\mathchardef\gg="321D +\mathchardef\ll="321C +\mathchardef\not="3236 +\mathchardef\leftrightarrow="3224 +\mathchardef\leftarrow="3220 \let\gets=\leftarrow +\mathchardef\rightarrow="3221 \let\to=\rightarrow +\mathchardef\mapstochar="3237 \def\mapsto{\mapstochar\rightarrow} +\mathchardef\sim="3218 +\mathchardef\simeq="3227 +\mathchardef\perp="323F +\mathchardef\equiv="3211 +\mathchardef\asymp="3210 +\mathchardef\smile="315E +\mathchardef\frown="315F +\mathchardef\leftharpoonup="3128 +\mathchardef\leftharpoondown="3129 +\mathchardef\rightharpoonup="312A +\mathchardef\rightharpoondown="312B + +\def\joinrel{\mathrel{\mkern-3mu}} +\def\relbar{\mathrel{\smash-}} % \smash, because - has the same height as + +\def\Relbar{\mathrel=} +\mathchardef\lhook="312C \def\hookrightarrow{\lhook\joinrel\rightarrow} +\mathchardef\rhook="312D \def\hookleftarrow{\leftarrow\joinrel\rhook} +\def\bowtie{\mathrel\triangleright\joinrel\mathrel\triangleleft} +\def\models{\mathrel|\joinrel=} +\def\Longrightarrow{\Relbar\joinrel\Rightarrow} +\def\longrightarrow{\relbar\joinrel\rightarrow} +\def\longleftarrow{\leftarrow\joinrel\relbar} +\def\Longleftarrow{\Leftarrow\joinrel\Relbar} +\def\longmapsto{\mapstochar\longrightarrow} +\def\longleftrightarrow{\leftarrow\joinrel\rightarrow} +\def\Longleftrightarrow{\Leftarrow\joinrel\Rightarrow} +\def\iff{\;\Longleftrightarrow\;} + +\mathchardef\ldotp="613A % ldot as a punctuation mark +\mathchardef\cdotp="6201 % cdot as a punctuation mark +\mathchardef\colon="603A % colon as a punctuation mark +\def\ldots{\mathinner{\ldotp\ldotp\ldotp}} +\def\cdots{\mathinner{\cdotp\cdotp\cdotp}} +\def\vdots{\vbox{\baselineskip4\p@ \lineskiplimit\z@ + \kern6\p@\hbox{.}\hbox{.}\hbox{.}}} +\def\ddots{\mathinner{\mkern1mu\raise7\p@\vbox{\kern7\p@\hbox{.}}\mkern2mu + \raise4\p@\hbox{.}\mkern2mu\raise\p@\hbox{.}\mkern1mu}} + +\def\acute{\mathaccent"7013 } +\def\grave{\mathaccent"7012 } +\def\ddot{\mathaccent"707F } +\def\tilde{\mathaccent"707E } +\def\bar{\mathaccent"7016 } +\def\breve{\mathaccent"7015 } +\def\check{\mathaccent"7014 } +\def\hat{\mathaccent"705E } +\def\vec{\mathaccent"017E } +\def\dot{\mathaccent"705F } +\def\widetilde{\mathaccent"0365 } +\def\widehat{\mathaccent"0362 } +\def\overrightarrow#1{\vbox{\m@th\ialign{##\crcr + \rightarrowfill\crcr\noalign{\kern-\p@\nointerlineskip} + $\hfil\displaystyle{#1}\hfil$\crcr}}} +\def\overleftarrow#1{\vbox{\m@th\ialign{##\crcr + \leftarrowfill\crcr\noalign{\kern-\p@\nointerlineskip} + $\hfil\displaystyle{#1}\hfil$\crcr}}} +\def\overbrace#1{\mathop{\vbox{\m@th\ialign{##\crcr\noalign{\kern3\p@} + \downbracefill\crcr\noalign{\kern3\p@\nointerlineskip} + $\hfil\displaystyle{#1}\hfil$\crcr}}}\limits} +\def\underbrace#1{\mathop{\vtop{\m@th\ialign{##\crcr + $\hfil\displaystyle{#1}\hfil$\crcr\noalign{\kern3\p@\nointerlineskip} + \upbracefill\crcr\noalign{\kern3\p@}}}}\limits} +\def\skew#1#2#3{{\muskip\z@#1mu\divide\muskip\z@\tw@ \mkern\muskip\z@ + #2{\mkern-\muskip\z@{#3}\mkern\muskip\z@}\mkern-\muskip\z@}{}} + +\def\lmoustache{\delimiter"437A340 } % top from (, bottom from ) +\def\rmoustache{\delimiter"537B341 } % top from ), bottom from ( +\def\lgroup{\delimiter"462833A } % extensible ( with sharper tips +\def\rgroup{\delimiter"562933B } % extensible ) with sharper tips +\def\arrowvert{\delimiter"26A33C } % arrow without arrowheads +\def\Arrowvert{\delimiter"26B33D } % double arrow without arrowheads +\def\bracevert{\delimiter"77C33E } % the vertical bar that extends braces +\def\Vert{\delimiter"26B30D } \let\|=\Vert +\def\vert{\delimiter"26A30C } +\def\uparrow{\delimiter"3222378 } +\def\downarrow{\delimiter"3223379 } +\def\updownarrow{\delimiter"326C33F } +\def\Uparrow{\delimiter"322A37E } +\def\Downarrow{\delimiter"322B37F } +\def\Updownarrow{\delimiter"326D377 } +\def\backslash{\delimiter"26E30F } % for double coset G\backslash H +\def\rangle{\delimiter"526930B } +\def\langle{\delimiter"426830A } +\def\rbrace{\delimiter"5267309 } \let\}=\rbrace +\def\lbrace{\delimiter"4266308 } \let\{=\lbrace +\def\rceil{\delimiter"5265307 } +\def\lceil{\delimiter"4264306 } +\def\rfloor{\delimiter"5263305 } +\def\lfloor{\delimiter"4262304 } + +\def\bigl{\mathopen\big} +\def\bigm{\mathrel\big} +\def\bigr{\mathclose\big} +\def\Bigl{\mathopen\Big} +\def\Bigm{\mathrel\Big} +\def\Bigr{\mathclose\Big} +\def\biggl{\mathopen\bigg} +\def\biggm{\mathrel\bigg} +\def\biggr{\mathclose\bigg} +\def\Biggl{\mathopen\Bigg} +\def\Biggm{\mathrel\Bigg} +\def\Biggr{\mathclose\Bigg} +\def\big#1{{\hbox{$\left#1\vbox to8.5\p@{}\right.\n@space$}}} +\def\Big#1{{\hbox{$\left#1\vbox to11.5\p@{}\right.\n@space$}}} +\def\bigg#1{{\hbox{$\left#1\vbox to14.5\p@{}\right.\n@space$}}} +\def\Bigg#1{{\hbox{$\left#1\vbox to17.5\p@{}\right.\n@space$}}} +\def\n@space{\nulldelimiterspace\z@ \m@th} + +\def\choose{\atopwithdelims()} +\def\brack{\atopwithdelims[]} +\def\brace{\atopwithdelims\{\}} + +\def\sqrt{\radical"270370 } + +\def\mathpalette#1#2{\mathchoice{#1\displaystyle{#2}}% + {#1\textstyle{#2}}{#1\scriptstyle{#2}}{#1\scriptscriptstyle{#2}}} +\newbox\rootbox +\def\root#1\of{\setbox\rootbox + \hbox{$\m@th\scriptscriptstyle{#1}$}\mathpalette\r@@t} +\def\r@@t#1#2{\setbox\z@\hbox{$\m@th#1\sqrt{#2}$}\dimen@\ht\z@ + \advance\dimen@-\dp\z@ + \mkern5mu\raise.6\dimen@\copy\rootbox \mkern-10mu\box\z@} +\newif\ifv@ \newif\ifh@ +\def\vphantom{\v@true\h@false\ph@nt} +\def\hphantom{\v@false\h@true\ph@nt} +\def\phantom{\v@true\h@true\ph@nt} +\def\ph@nt{\ifmmode\def\next{\mathpalette\mathph@nt}% + \else\let\next\makeph@nt\fi\next} +\def\makeph@nt#1{\setbox\z@\hbox{#1}\finph@nt} +\def\mathph@nt#1#2{\setbox\z@\hbox{$\m@th#1{#2}$}\finph@nt} +\def\finph@nt{\setbox\tw@\null + \ifv@ \ht\tw@\ht\z@ \dp\tw@\dp\z@\fi + \ifh@ \wd\tw@\wd\z@\fi \box\tw@} +\def\mathstrut{\vphantom(} +\def\smash{\relax % \relax, in case this comes first in \halign + \ifmmode\def\next{\mathpalette\mathsm@sh}\else\let\next\makesm@sh + \fi\next} +\def\makesm@sh#1{\setbox\z@\hbox{#1}\finsm@sh} +\def\mathsm@sh#1#2{\setbox\z@\hbox{$\m@th#1{#2}$}\finsm@sh} +\def\finsm@sh{\ht\z@\z@ \dp\z@\z@ \box\z@} + +\def\cong{\mathrel{\mathpalette\@vereq\sim}} % congruence sign +\def\@vereq#1#2{\lower.5\p@\vbox{\lineskiplimit\maxdimen\lineskip-.5\p@ + \ialign{$\m@th#1\hfil##\hfil$\crcr#2\crcr=\crcr}}} +\def\notin{\mathrel{\mathpalette\c@ncel\in}} +\def\c@ncel#1#2{\m@th\ooalign{$\hfil#1\mkern1mu/\hfil$\crcr$#1#2$}} +\def\rightleftharpoons{\mathrel{\mathpalette\rlh@{}}} +\def\rlh@#1{\vcenter{\m@th\hbox{\ooalign{\raise2pt + \hbox{$#1\rightharpoonup$}\crcr + $#1\leftharpoondown$}}}} +\def\buildrel#1\over#2{\mathrel{\mathop{\kern\z@#2}\limits^{#1}}} +\def\doteq{\buildrel\textstyle.\over=} + +\def\log{\mathop{\rm log}\nolimits} +\def\lg{\mathop{\rm lg}\nolimits} +\def\ln{\mathop{\rm ln}\nolimits} +\def\lim{\mathop{\rm lim}} +\def\limsup{\mathop{\rm lim\,sup}} +\def\liminf{\mathop{\rm lim\,inf}} +\def\sin{\mathop{\rm sin}\nolimits} +\def\arcsin{\mathop{\rm arcsin}\nolimits} +\def\sinh{\mathop{\rm sinh}\nolimits} +\def\cos{\mathop{\rm cos}\nolimits} +\def\arccos{\mathop{\rm arccos}\nolimits} +\def\cosh{\mathop{\rm cosh}\nolimits} +\def\tan{\mathop{\rm tan}\nolimits} +\def\arctan{\mathop{\rm arctan}\nolimits} +\def\tanh{\mathop{\rm tanh}\nolimits} +\def\cot{\mathop{\rm cot}\nolimits} +\def\coth{\mathop{\rm coth}\nolimits} +\def\sec{\mathop{\rm sec}\nolimits} +\def\csc{\mathop{\rm csc}\nolimits} +\def\max{\mathop{\rm max}} +\def\min{\mathop{\rm min}} +\def\sup{\mathop{\rm sup}} +\def\inf{\mathop{\rm inf}} +\def\arg{\mathop{\rm arg}\nolimits} +\def\ker{\mathop{\rm ker}\nolimits} +\def\dim{\mathop{\rm dim}\nolimits} +\def\hom{\mathop{\rm hom}\nolimits} +\def\det{\mathop{\rm det}} +\def\exp{\mathop{\rm exp}\nolimits} +\def\Pr{\mathop{\rm Pr}} +\def\gcd{\mathop{\rm gcd}} +\def\deg{\mathop{\rm deg}\nolimits} + +\def\bmod{\nonscript\mskip-\medmuskip\mkern5mu + \mathbin{\rm mod}\penalty900\mkern5mu\nonscript\mskip-\medmuskip} +\def\pmod#1{\allowbreak\mkern18mu({\rm mod}\,\,#1)} + +\def\cases#1{\left\{\,\vcenter{\normalbaselines\m@th + \ialign{$##\hfil$&\quad##\hfil\crcr#1\crcr}}\right.} +\def\matrix#1{\null\,\vcenter{\normalbaselines\m@th + \ialign{\hfil$##$\hfil&&\quad\hfil$##$\hfil\crcr + \mathstrut\crcr\noalign{\kern-\baselineskip} + #1\crcr\mathstrut\crcr\noalign{\kern-\baselineskip}}}\,} +\def\pmatrix#1{\left(\matrix{#1}\right)} +\newdimen\p@renwd +\setbox0=\hbox{\tenex B} \p@renwd=\wd0 % width of the big left ( +\def\bordermatrix#1{\begingroup \m@th + \setbox\z@\vbox{\def\cr{\crcr\noalign{\kern2\p@\global\let\cr\endline}}% + \ialign{$##$\hfil\kern2\p@\kern\p@renwd&\thinspace\hfil$##$\hfil + &&\quad\hfil$##$\hfil\crcr + \omit\strut\hfil\crcr\noalign{\kern-\baselineskip}% + #1\crcr\omit\strut\cr}}% + \setbox\tw@\vbox{\unvcopy\z@\global\setbox\@ne\lastbox}% + \setbox\tw@\hbox{\unhbox\@ne\unskip\global\setbox\@ne\lastbox}% + \setbox\tw@\hbox{$\kern\wd\@ne\kern-\p@renwd\left(\kern-\wd\@ne + \global\setbox\@ne\vbox{\box\@ne\kern2\p@}% + \vcenter{\kern-\ht\@ne\unvbox\z@\kern-\baselineskip}\,\right)$}% + \null\;\vbox{\kern\ht\@ne\box\tw@}\endgroup} + +\def\openup{\afterassignment\@penup\dimen@=} +\def\@penup{\advance\lineskip\dimen@ + \advance\baselineskip\dimen@ + \advance\lineskiplimit\dimen@} +\def\eqalign#1{\null\,\vcenter{\openup\jot\m@th + \ialign{\strut\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil + \crcr#1\crcr}}\,} +\newif\ifdt@p +\def\displ@y{\global\dt@ptrue\openup\jot\m@th + \everycr{\noalign{\ifdt@p \global\dt@pfalse \ifdim\prevdepth>-1000\p@ + \vskip-\lineskiplimit \vskip\normallineskiplimit \fi + \else \penalty\interdisplaylinepenalty \fi}}} +\def\@lign{\tabskip\z@skip\everycr{}} % restore inside \displ@y +\def\displaylines#1{\displ@y \tabskip\z@skip + \halign{\hbox to\displaywidth{$\@lign\hfil\displaystyle##\hfil$}\crcr + #1\crcr}} +\def\eqalignno#1{\displ@y \tabskip\centering + \halign to\displaywidth{\hfil$\@lign\displaystyle{##}$\tabskip\z@skip + &$\@lign\displaystyle{{}##}$\hfil\tabskip\centering + &\llap{$\@lign##$}\tabskip\z@skip\crcr + #1\crcr}} +\def\leqalignno#1{\displ@y \tabskip\centering + \halign to\displaywidth{\hfil$\@lign\displaystyle{##}$\tabskip\z@skip + &$\@lign\displaystyle{{}##}$\hfil\tabskip\centering + &\kern-\displaywidth\rlap{$\@lign##$}\tabskip\displaywidth\crcr + #1\crcr}} + +% Definitions related to output + +\message{output routines,} + +\countdef\pageno=0 \pageno=1 % first page is number 1 +\newtoks\headline \headline={\hfil} % headline is normally blank +\newtoks\footline \footline={\hss\tenrm\folio\hss} + % footline is normally a centered page number in font \tenrm +\newif\ifr@ggedbottom +\def\raggedbottom{\topskip 10\p@ plus60\p@ \r@ggedbottomtrue} +\def\normalbottom{\topskip 10\p@ \r@ggedbottomfalse} % undoes \raggedbottom +\def\folio{\ifnum\pageno<\z@ \romannumeral-\pageno \else\number\pageno \fi} +\def\nopagenumbers{\footline{\hfil}} % blank out the footline +\def\advancepageno{\ifnum\pageno<\z@ \global\advance\pageno\m@ne + \else\global\advance\pageno\@ne \fi} % increase |pageno| + +\newinsert\footins +\def\footnote#1{\let\@sf\empty % parameter #2 (the text) is read later + \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi + #1\@sf\vfootnote{#1}} +\def\vfootnote#1{\insert\footins\bgroup + \interlinepenalty\interfootnotelinepenalty + \splittopskip\ht\strutbox % top baseline for broken footnotes + \splitmaxdepth\dp\strutbox \floatingpenalty\@MM + \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip + \textindent{#1}\footstrut\futurelet\next\fo@t} +\def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t + \else\let\next\f@t\fi \next} +\def\f@@t{\bgroup\aftergroup\@foot\let\next} +\def\f@t#1{#1\@foot} +\def\@foot{\strut\egroup} +\def\footstrut{\vbox to\splittopskip{}} +\skip\footins=\bigskipamount % space added when footnote is present +\count\footins=1000 % footnote magnification factor (1 to 1) +\dimen\footins=8in % maximum footnotes per page + +\newinsert\topins +\newif\ifp@ge \newif\if@mid +\def\topinsert{\@midfalse\p@gefalse\@ins} +\def\midinsert{\@midtrue\@ins} +\def\pageinsert{\@midfalse\p@getrue\@ins} +\skip\topins=\z@skip % no space added when a topinsert is present +\count\topins=1000 % magnification factor (1 to 1) +\dimen\topins=\maxdimen % no limit per page +\def\@ins{\par\begingroup\setbox\z@\vbox\bgroup} % start a \vbox +\def\endinsert{\egroup % finish the \vbox + \if@mid \dimen@\ht\z@ \advance\dimen@\dp\z@ \advance\dimen@12\p@ + \advance\dimen@\pagetotal \advance\dimen@-\pageshrink + \ifdim\dimen@>\pagegoal\@midfalse\p@gefalse\fi\fi + \if@mid \bigskip\box\z@\bigbreak + \else\insert\topins{\penalty100 % floating insertion + \splittopskip\z@skip + \splitmaxdepth\maxdimen \floatingpenalty\z@ + \ifp@ge \dimen@\dp\z@ + \vbox to\vsize{\unvbox\z@\kern-\dimen@}% depth is zero + \else \box\z@\nobreak\bigskip\fi}\fi\endgroup} + +\output{\plainoutput} +\def\plainoutput{\shipout\vbox{\makeheadline\pagebody\makefootline}% + \advancepageno + \ifnum\outputpenalty>-\@MM \else\dosupereject\fi} +\def\pagebody{\vbox to\vsize{\boxmaxdepth\maxdepth \pagecontents}} +\def\makeheadline{\vbox to\z@{\vskip-22.5\p@ + \line{\vbox to8.5\p@{}\the\headline}\vss}\nointerlineskip} +\def\makefootline{\baselineskip24\p@\lineskiplimit\z@\line{\the\footline}} +\def\dosupereject{\ifnum\insertpenalties>\z@ % something is being held over + \line{}\kern-\topskip\nobreak\vfill\supereject\fi} + +\def\pagecontents{\ifvoid\topins\else\unvbox\topins\fi + \dimen@=\dp\@cclv \unvbox\@cclv % open up \box255 + \ifvoid\footins\else % footnote info is present + \vskip\skip\footins + \footnoterule + \unvbox\footins\fi + \ifr@ggedbottom \kern-\dimen@ \vfil \fi} +\def\footnoterule{\kern-3\p@ + \hrule width 2truein \kern 2.6\p@} % the \hrule is .4pt high + +% Hyphenation, miscellaneous macros, and initial values for standard layout +\message{hyphenation} + +\lefthyphenmin=2 \righthyphenmin=3 % disallow x- or -xx breaks +\input hyphen + +\def\magnification{\afterassignment\m@g\count@} +\def\m@g{\mag\count@ + \hsize6.5truein\vsize8.9truein\dimen\footins8truein} + +\def\loggingall{\tracingcommands\tw@\tracingstats\tw@ + \tracingpages\@ne\tracingoutput\@ne\tracinglostchars\@ne + \tracingmacros\tw@\tracingparagraphs\@ne\tracingrestores\@ne + \showboxbreadth\maxdimen\showboxdepth\maxdimen\errorstopmode} +\def\tracingall{\tracingonline\@ne\loggingall} + +\def\showhyphens#1{\setbox0\vbox{\parfillskip\z@skip\hsize\maxdimen\tenrm + \pretolerance\m@ne\tolerance\m@ne\hbadness0\showboxdepth0\ #1}} + +\normalbaselines\rm % select roman font +\nonfrenchspacing % punctuation affects the spacing +\catcode`@=12 % at signs are no longer letters + +\def\fmtname{plain}\def\fmtversion{3.14159265} % identifies the current format diff --git a/Master/texmf-dist/tex/plain/base/story.tex b/Master/texmf-dist/tex/plain/base/story.tex new file mode 100644 index 00000000000..fcbaa4151af --- /dev/null +++ b/Master/texmf-dist/tex/plain/base/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/base/testfont.tex b/Master/texmf-dist/tex/plain/base/testfont.tex new file mode 100644 index 00000000000..f7d146f8671 --- /dev/null +++ b/Master/texmf-dist/tex/plain/base/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/base/webmac.tex b/Master/texmf-dist/tex/plain/base/webmac.tex new file mode 100644 index 00000000000..5ca707bb9b2 --- /dev/null +++ b/Master/texmf-dist/tex/plain/base/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 diff --git a/Master/texmf-dist/tex/plain/base/wlist.tex b/Master/texmf-dist/tex/plain/base/wlist.tex new file mode 100644 index 00000000000..a665a32a627 --- /dev/null +++ b/Master/texmf-dist/tex/plain/base/wlist.tex @@ -0,0 +1,53 @@ +% Makes a landscape listing of one or more files with wide lines +% Typical usage: +% tex list *.c \\end + +\hsize=9in +\vsize=6.5in +\special{landscape} + +\def\grabfile#1 {\setbox0=\lastbox\endgraf\doit{#1}} +\everypar{\grabfile} + +\font\filenamefont= cmtt8 scaled\magstep3 +\font\headlinefont= cmr8 +\font\listingfont= cmtex8 +\font\eoffont= cmti8 + +\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} +\newcount\m \newcount\n +\n=\time \divide\n 60 \m=-\n \multiply\m 60 \advance\m \time +\def\hours{\twodigits\n\twodigits\m} +\def\twodigits#1{\ifnum #1<10 0\fi \number#1} + +\newlinechar=`@ +\message{@\today\space at \hours} + +\baselineskip=9pt +\medskipamount=4pt minus 1pt +\raggedbottom +\nopagenumbers + +\chardef\other=12 +\def\doit#1{\message{@Listing #1@} + \begingroup \everypar{} \frenchspacing + \headline{\filenamefont#1\quad\headlinefont \today\ at \hours + \hfill Page \folio} + \def\do##1{\catcode`##1=\other}\dospecials + \catcode127=\other \catcode9=\other \catcode12=\other + \parindent 0pt \parfillskip=0pt plus 1fil minus 1in + \everypar{\hangindent 1in} \rightskip=0pt plus 2in + \def\par{\ifvmode\penalty-500\medskip\else\endgraf\fi} + \listingfont \obeylines \obeyspaces \global\pageno=1 + \input #1 {\eoffont(end of\/ file)}\endgraf\vfill\eject\endgroup} +{\obeyspaces\global\let =\ } +\catcode`\_=\other % allow _ in file names + +% A tab (^^I) prints as lowercase gamma. +% Character ^^M could be made visible, with a bit of work; +% at present, it's indistinguishable from newline (^^J). + +% You can get up to 170 characters on a line without an overfull box. diff --git a/Master/texmf-dist/tex/plain/calendar/a5.sty b/Master/texmf-dist/tex/plain/calendar/a5.sty new file mode 100644 index 00000000000..6c09b53428d --- /dev/null +++ b/Master/texmf-dist/tex/plain/calendar/a5.sty @@ -0,0 +1,45 @@ +%% +%% FILE a5.sty +%% +\newcount\daysinpage +\newdimen\cellheight +\vsize=17.5cm\voffset=-0.5in +\hsize=11cm\hoffset=-0.6in +\cellheight=\vsize +\divide\cellheight by7 +\advance\cellheight by-0.4pt +\parindent=0pt +\font\Rm=cmr10 at 14pt +\font\Bf=cmbx10 at 14pt +\font\rm=cmr10 +\footline={\Bf\ifodd\pageno\hfill\botmark + \else\botmark\hfill\fi} +\def\newpage{\vfill\penalty-10000} +\def\beginday{\ifnum\daysinpage>0\hrule\fi + \mark{\themonth} % Outside any box + \setbox2=\vbox\bgroup + \ifodd\pageno + \rightskip=3cm plus 1fill + \else + \leftskip=3cm plus 1fill\fi\rm} +\def\endday{\egroup + \vbox to\cellheight{\vglue2pt + \setbox0=\hbox to\hsize{% + \ifodd\pageno + \hfill{\Rm\theweekday\ \ifholy\Bf\fi\the\Day} + \else + {\Rm{\ifholy\Bf\fi\the\Day}\ \theweekday}% + \hfill\fi} + \copy0\kern-\ht0\box2\vfill} + \advance\daysinpage by1 + \ifnum\daysinpage=7 \daysinpage=0 + \newpage\fi} +% +% Local: from monday ... +\Day=1 \Month=9\dayno\nextday1\currentdate=\date +% Local: ... to sunday. +{\nextyear\Day=31 \Month=5\dayno\nextday0 + \global\lastdate=\date} +\leftskip=0pt\rightskip=0pt +\daysinpage=0 +\def\epilog{} diff --git a/Master/texmf-dist/tex/plain/calendar/a6.sty b/Master/texmf-dist/tex/plain/calendar/a6.sty new file mode 100644 index 00000000000..d6fa4e274b0 --- /dev/null +++ b/Master/texmf-dist/tex/plain/calendar/a6.sty @@ -0,0 +1,66 @@ +%% +%% FILE a6.sty +%% +\baselineskip=10pt +\newcount\daysinpage +\newdimen\cellwidth +\newdimen\cellheight +\vsize=5in\voffset=-0.2in +\hsize=3.5in\hoffset=-0.25in +\newdimen\sphsize +\sphsize=\hsize +\divide\sphsize by2\advance\sphsize by-0.4pt +\cellheight=\vsize +\divide\cellheight by3 +\advance\cellheight by-0.4pt\parindent=0pt +\font\bf=cmbx12 +\font\rm=cmr12 +\font\small=cmr9 +\headline={\hfill + \ifodd\pageno + \rm\xdef\ftmk{\firstmark}% + \divide\pageno by2\advance\pageno by1 + Week \#\the\pageno + \else + \bf\edef\btmk{\botmark}% + \ifx\ftmk\btmk\else\ftmk/\fi\btmk + \fi\hfill} +\footline={} +\def\newpage{\vfill\penalty-10000} +\def\beginday{ + \ifcase\daysinpage\or\hrule\or\hrule\or\or + \hrule\or\hrule\fi + \mark{\themonth} % Outside any box + \setbox1=\vbox to\cellheight\bgroup\vglue4pt + \ifnum\daysinpage>4\hsize=\sphsize\fi + \setbox3=\vbox\bgroup + \ifnum\daysinpage>2 + \rightskip=1.45cm plus 1fill + \else + \leftskip=1.45cm plus 1fill\fi + \noindent\small} +\def\endday{\egroup + \setbox0=\hbox to\hsize{\rm\ifholy\bf\fi + \ifnum\daysinpage=6\bf\fi + \ifnum\daysinpage>2 + \hfill{{\rm\theshortweekday} + \ \the\Day\hskip0.5em} + \else + {\hskip0.5em\the\Day + \ {\rm\theshortweekday}}\hfill\fi} + \copy0\kern-\ht0\vskip0pt\box3 + \vfill\egroup + \advance\daysinpage by1 + \ifcase\daysinpage\or\box1\or\box1\or + \box1\newpage\or\box1\or\box1\or + \setbox2=\box1\or + \hbox{\box2\vrule\box1}\newpage + \daysinpage=0\fi} +% +% Local: from monday ... +\Day=1\Month=1\dayno\prevday1\currentdate=\date +% Local: ... to sunday. +\Day=31\Month=12\dayno\nextday0\lastdate=\date +\leftskip=3pt\rightskip=3pt +\daysinpage=0 +\def\epilog{} diff --git a/Master/texmf-dist/tex/plain/calendar/block.sty b/Master/texmf-dist/tex/plain/calendar/block.sty new file mode 100644 index 00000000000..72433136f1b --- /dev/null +++ b/Master/texmf-dist/tex/plain/calendar/block.sty @@ -0,0 +1,59 @@ +%% +%% FILE block.sty +%% +\newcount\daysinrow +\newcount\saveMonth +\font\bf=cmbx12 at 16pt +\font\Rm=cmr12 at 48pt +\font\Bf=cmbx12 at 48pt +\font\rm=cmr12 +\font\small=cmr10 +\footline={} +\def\card{{\mute + \saveMonth=\Month + \def\beginday{ + \ifnum\daysinrow=0\setbox1=\hbox{}\fi + \setbox0=\hbox to1.3em{\hss + \ifnum\Month=\saveMonth\the\Day\fi}} + \def\endday{\setbox1=\hbox{\unhbox1\box0} + \advance\daysinrow by1 + \ifnum\daysinrow=7\box1\daysinrow=0\fi} +% Local: from sunday ... + \Day=1\dayno + \prevday0\currentdate=\date + \Day=1\advancemonth \dayno +% Local: ... to saturday. + \advance\date by-1 \nextday6 \lastdate=\date + \daysinrow=0 + \baselineskip=9pt\small + \global\setbox3=\vbox to0.55in{\makeempty\vss}}} +% +\def\cstrut{\vrule width0pt depth0.3in} +\baselineskip=14pt +\parindent=0pt +\vsize=5in \voffset=-0.2in +\hsize=4in \hoffset=-0.25in +\def\advancemonth{\ifnum\Month=12 + \nextyear\Month=1\else + \advance\Month by1\fi} +\def\beginday{\ifnum\Day=1 + \setbox2=\box3{\advancemonth\card}\fi + \date=\currentdate\caldate + \centerline{\bf\uppercase + \expandafter{\themonth}} + \setbox0=\vbox\bgroup\noindent\rm} +\def\endday{\egroup\vskip10pt + \centerline{\cstrut\copy2\quad + \hbox to1in{\Rm\weekday +% Local: sundays in bf. + \ifnum\weekd=0\Bf\fi\ifholy\Bf\fi + \hss\the\Day\hss}\quad\copy3} + \centerline{\rm\theweekday} + \vskip20pt\box0\newpage} +\def\newpage{\vfill\penalty-10000} +% +\Day=31\Month=12\dayno\lastdate=\date +\Day=1\Month=1\dayno\currentdate=\date +\card +\leftskip=1em plus1fill\rightskip=1em plus1fill +\def\epilog{} diff --git a/Master/texmf-dist/tex/plain/calendar/calend0.tex b/Master/texmf-dist/tex/plain/calendar/calend0.tex new file mode 100644 index 00000000000..854adc3cab6 --- /dev/null +++ b/Master/texmf-dist/tex/plain/calendar/calend0.tex @@ -0,0 +1,156 @@ +%% +%% FILE calend0.tex +%% Modificat 9/12/92 +\catcode`\@=11 +\newif\ifleapyear +\def\loadadvanced{% + \input calend1.tex\relax} +\newcount\date +\newcount\weekd +\newcount\Year +\newcount\yearbase +\newcount\Month +\newcount\Day +\newcount\@catch +\newcount\timezone\timezone=0 +\def\setyear#1{\Year=#1 + \advance\Year by-1900\calculateyearbase} +\def\nextyear{\advance\Year by1 + \calculateyearbase} +\def\settimezone#1{\timezone=#1 + \multiply\timezone by 1000 + \divide\timezone by24} +% \ifleapyear is set; +% \yearbase is the number of +% days passed from 1900, Jan 0 +% to New year's date; +\def\calculateyearbase{% + \yearbase=-1 + {\count0=\Year\divide\count0 by4 + \multiply\count0 by4 + \ifnum\Year=\count0 + \global\@catch=0\else\global\@catch=1\fi}% + \ifcase\@catch \leapyeartrue\or + \leapyearfalse\fi + {\count0=\Year\multiply\count0 + by1461\advance\count0 by3 + \divide\count0 by4 + \global\@catch=\count0}% + \advance\yearbase by\@catch + \ifnum\Year=0\yearbase=0\leapyearfalse\fi} +% Gives the number of days passed +% at the end of each month. +% Value returned in \Day +\def\monthdays{\global + \@catch=\ifcase\Month 0\or31\or + 59\or90\or120\or151\or181\or212\or + 243\or273\or304\or334\or365\fi + {\ifleapyear\ifnum\Month>1 + \global\advance\@catch by1\fi\fi}% + \Day=\@catch} +% Long date of \Month, \Day +% in the year \Year. +% Value returned in \date +\def\dayno{\date=\Day{\advance + \Month by-1\monthdays + \advance\date by\Day + \global\advance\date by\yearbase}} +% Long date MOD 7 gives the week day. +% Sunday is 0 and Saturday is 6. +\def\weekday{{\count0=\date\relax + \count1=\count0\divide\count0 by 7 + \multiply\count0 by 7 +\advance\count1 by -\count0 + \global\weekd=\count1}} +% Name of week day (Local). +\def\theweekday{\weekday + \ifcase\weekd + Sunday\or Monday\or Tuesday\or + Wednesday\or Thursday\or Friday\or + Saturday\fi} +% (Local) +\def\theshortweekday{\weekday + \ifcase\weekd Sun\or Mon\or Tue\or + Wed\or Thu\or Fri\or Sat\fi} +% Gives the usual calendar date for +% a long date in counter \date. +% Returned in \Day, \Month and \Year +\def\caldate{\Year=\date + \multiply\Year by4\divide\Year by1461 + \calculateyearbase + {\advance\date by-\yearbase\Month=0 + \loop\monthdays\ifnum\Day<\date + \global\advance\Month by1\repeat + {\advance\Month by-1\monthdays + \advance\date by-\Day + \global\Day=\date}}} +% Name of month \Month. (Local) +\def\themonth{\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} +% Find the next (previous) day after +% (before) \date with \weekday=#1. +\def\nextday#1{{\count0=#1\weekday + \advance\count0 by-\weekd + \ifnum\count0<0\advance\count0 by7\fi + \global\advance\date by\count0}} +\def\prevday#1{\snextday#1 + \advance\date by-7} +\def\snextday#1{\advance\date by1 + \nextday#1} +\def\sprevday#1{\advance\date by-1 + \prevday#1} +% \beginevents...\endevents +% contains control sequences like +% \event or \evday or sequences +% generating these commands. +\newwrite\evefile +\def\beginevents{% + \immediate\openout + \evefile=\jobname.eve\relax} +\def\endevents{\immediate\closeout + \evefile\end} +\newtoks\evetext +\def\event#1/#2[#3]{\evetext={#3}% + \Day=#1\Month=#2\dayno + \evday[\the\evetext]} +\def\evday[#1]{\immediate\write\evefile{% + \string\evententry{\the\date}{#1}}} +\def\thecaldate{\the\Day/\the\Month} +\def\mute{\def\thecaldate{}} +% +% 2nd run commands +% +\newcount\currentdate +\newcount\lastdate +\newcount\nextdate +\newif\ifdoing@day +\newif\ifholy +\def\holy{\global\holytrue} +\def\upto#1{\nextdate=#1 + \loop\advance\currentdate by1\relax + \ifnum\currentdate<\nextdate + \begin@day\end@day\repeat} +\def\evententry#1#2{\unskip + \ifnum#1>\lastdate\else + \ifnum\currentdate<#1 + \ifdoing@day\end@day\fi + \upto{#1}\fi + \ifnum\currentdate=#1 + \ifdoing@day\else\begin@day\fi + #2\par\fi\fi} +\def\begin@day{\doing@daytrue + \date=\currentdate\caldate + \message{<\thecaldate}\beginday} +\def\end@day{\endday\doing@dayfalse + \global\holyfalse\message{>}} +\def\makeagenda#1{\input #1.sty\relax + \begin@day\input\jobname.eve\relax + \evententry{\the\lastdate}{}\end@day + \epilog\end} +% Do not read events +\def\makeempty{\begin@day + \evententry{\the\lastdate}{}\end@day} +\catcode`\@=12 diff --git a/Master/texmf-dist/tex/plain/calendar/calend1.tex b/Master/texmf-dist/tex/plain/calendar/calend1.tex new file mode 100644 index 00000000000..7ce74606469 --- /dev/null +++ b/Master/texmf-dist/tex/plain/calendar/calend1.tex @@ -0,0 +1,85 @@ +%% +%% FILE calend1.tex +%% +\def\loadadvanced{\relax} +% Convert from Julian date and time in +% \date to long date (in local time) +\def\JDTtoL{\advance\date by500 + \advance\date by\timezone\divide\date by1000} +%% Trigonometric functions +\def\sintable#1{\ifcase #1 0\or100\or199 + \or296\or389\or479\or565\or644\or717 + \or783\or841\or891\or932\or964\or985 + \or997\or1000\or992\or974\or946\or909 + \or863\or808\or746\or675\or598\or516 + \or427\or335\or239\or141\or42\or-58 + \or-158\fi} +% Reduces modulo 2\pi (requires positive +% argument theta): +% theta := theta MOD 2\pi, where +% theta = count1*10^(-3) +\def\twopimod{\count2 =\count1 + \divide\count2 by6284 \count3 =1853 + \count4 =6283\multiply\count3 by\count2 + \multiply\count4 by\count2 + \divide\count3 by10000 + \advance\count3 by\count4 + \advance\count1 by-\count3} +\newif\ifsign +% v := sin(theta), where +% v = count4*10^(-3); +% theta = count1*10^(-3) +% theta is reduced MOD 2\pi to be +% 0<=theta<2\pi by \TWOPIMOD, +% then linear interpolation is performed +% using \SINTABLE. +\def\Sin{ + \ifnum\count1<0 \signtrue + \count1=-\count1\else \signfalse\fi + \loop\ifnum\count1>6284\twopimod\repeat + \ifnum\count1>3142 + \advance\count1 by-3142 + \ifsign\signfalse\else\signtrue\fi\fi + \multiply\count1 by10 \count3 =\count1 + \divide\count3 by1000 \count2 =\count3 + \multiply\count3 by1000 + \advance\count3 by-\count1 + \count5 =\sintable{\count2 } + \count4 =\count5\advance\count2 by1 + \advance\count4 by -\sintable{\count2 } + \multiply\count4 by\count3 + \divide\count4 by1000 + \advance\count4 by\count5 + \ifsign\count4 =-\count4 \fi} +% v := cos(theta), where +% v = count4*10^(-3); +% theta = count1*10^(-3). +% \SIN is evaluated on pi/2-theta. +\def\Cos{\advance\count1 by-1571 + \multiply\count1 by-1\Sin} +% Linear transformation of T giving +% theta := a*T+b, where +% T = count0*10^(-6); +% theta = count1*10^(-3); +% a = #1*10^3+#2+#3*10^(-3); +% b = #4*10^(-3) +\def\lin#1.#2.#3+#4.{\count1 =#3 + \count2 =#2 \count3 =#1 + \multiply\count1 by\count0 + \multiply\count2 by\count0 + \multiply\count3 by\count0 + \divide\count1 by1000 + \advance\count1 by\count2 + \divide\count1 by1000 + \advance\count1 by\count3 + \advance\count1 by #4} +% Accumulate value returned by a +% trigonometric function, scaled by +% factor f, into count6: +% ac := ac+f*v, where +% ac = count6*10^(-7) +% v = value of SIN or COS =count4*10^(-3) +% f = #1*10^(-4) +\def\fac#1{\multiply\count4 by #1 + \advance\count6 by\count4} +\def\id{\count4=\count1} % Identity diff --git a/Master/texmf-dist/tex/plain/calendar/feasts.tex b/Master/texmf-dist/tex/plain/calendar/feasts.tex new file mode 100644 index 00000000000..ab5d48976b3 --- /dev/null +++ b/Master/texmf-dist/tex/plain/calendar/feasts.tex @@ -0,0 +1,32 @@ +%% +%% FILE feasts.tex +%% +% Date of Easter for year \Year. +% Value returned in \date +\def\easter{{\count0=\Year\count1=\count0 + \divide\count0 by19\multiply\count0 by19 + \advance\count1 by-\count0 + \advance\count1 by 1 % Golden number + \count2=\count1\multiply\count2 by11 + \advance\count2 by18\count0=\count2 + \divide\count0 by30\multiply\count0 by30 + \advance\count2 by-\count0 % Epact + \ifnum\count2=25\ifnum\count1>11 + \count2=26 \fi\fi + \ifnum\count2=24 \count2=25\fi + \advance\count2 by-44 + \multiply\count2 by-1 + \ifnum\count2<21 \advance\count2 by30\fi + \Month=3\Day=0\dayno\global\advance\date + by\count2}\snextday0} +% (local) +\def\includefeasts{% + \message{Including feasts} + \easter\evday[Easter Sunday] + {\advance\date by49\evday[Whitsun]} + {\advance\date by-7\evday[Palm Sunday]} + {\advance\date by-46\evday[Ash Wendsday] + \advance\date by-3\evday[Carnival]} + \Month=1\Day=1\dayno\snextday0 + \evday[Epiphany] + \event 25/12[\holy Christmas]} diff --git a/Master/texmf-dist/tex/plain/calendar/moon.tex b/Master/texmf-dist/tex/plain/calendar/moon.tex new file mode 100644 index 00000000000..f64c1f10b73 --- /dev/null +++ b/Master/texmf-dist/tex/plain/calendar/moon.tex @@ -0,0 +1,89 @@ +%% +%% FILE moon.tex +%% +\loadadvanced +\newcount\moonno +\def\firstmoon{\moonno=\Year + \multiply\moonno by123685 + \divide\moonno by10000 + \multiply\moonno by4\advance\moonno by-1 + \loop\moondate\ifnum\date<\yearbase + \advance\moonno by1\repeat} +% Compute date for cycle quarter MOONNO +\def\moondate{{\count0=\moonno + \lin 202.126.369+0.\count0=\count1 + \count6=0 + \lin 0.2.319+2907.\Sin\fac{3} + \divide\count6 by1000 + \lin 365.249.86+7593.\id\fac{1} + \divide\count6 by10\count7 =\count6 + \ifodd\moonno\quarters + \else\fullornew\fi\global\date=\count7} + \JDTtoL\message{\the\date}} +% Correction for full and new moon +\def\fullornew{\count6=0 + \lin -393.0.0+0. + \divide\count1 by100000000 + \advance\count6 by\count1 + \lin 0.628.300+6269.\Sin + \multiply\count6 by\count4 + \lin -7.-700.-369+ 928.\Sin\fac{ -74} + \lin 0. 628. 300+ 6269.\Sin\fac{ 1734} + \lin 1. 256. 600+12539.\Sin\fac{ 21} + \lin 8. 328. 670+ 5341.\Sin\fac{-4068} + \lin 8. 538. 220+-4597.\Sin\fac{ 10} + \lin 8. 956. 970+11610.\Sin\fac{ -51} + \lin 16. 238. 589+-5526.\Sin\fac{ -4} + \lin 16. 657. 340+10682.\Sin\fac{ 161} + \lin 16. 866. 890+ 743.\Sin\fac{ 104} + \lin 17. 285. 640+16951.\Sin\fac{ 50} + \lin 17. 495. 190+ 7013.\Sin\fac{ 4} + \lin 24. 986. 10+16023.\Sin\fac{ -4} + \lin 25. 195. 560+ 6084.\Sin\fac{ -6} + \divide\count6 by10000 + \advance\count7 by\count6 } +% Correction for quarters +\def\quarters{\lin -393.0.0+0. + \divide\count1 by100000000 + \count6 =\count1 \lin 0.628.300+6269. + \Sin\multiply\count6 by\count4 + \lin -16. -29. -40+-4413.\Sin\fac{ 40} + \lin -7.-700.-369+ 928.\Sin\fac{ -47} + \lin -7. -72. -69+ 7198.\Sin\fac{ -30} + \lin 0. 628. 300+ 6270.\Sin\fac{ 1721} + \lin 1. 256. 600+12539.\Sin\fac{ 21} + \lin 8. 328. 670+ 5341.\Sin\fac{-6280} + \lin 8. 538. 220+-4598.\Sin\fac{ 21} + \lin 8. 956. 970+11611.\Sin\fac{ -119} + \lin 16. 238. 589+-5526.\Sin\fac{ -4} + \lin 16. 657. 340+10682.\Sin\fac{ 89} + \lin 16. 866. 890+ 743.\Sin\fac{ 79} + \lin 17. 285. 640+16952.\Sin\fac{ 3} + \lin 17. 495. 190+ 7013.\Sin\fac{ 3} + \lin 24. 986. 10+16023.\Sin\fac{ -4} + \lin 25. 195. 560+ 6085.\Sin\fac{ -6} + \count8=\count6\count6=28000 + \lin 628. 300. 373+ 6270.\Cos\fac{ -4} + \lin 8. 328. 670+ 5341.\Cos\fac{ 3} + \count2=\moonno + \advance\count2 by-1\divide\count2 by2 + \ifodd\count2\multiply\count6 by-1 \fi + \advance\count6 by\count8 + \divide\count6 by10000 + \advance\count7 by\count6 } +% Events for phases. +% Uses PHASE (local). +\def\includemoons{\message{Including moons} + {\firstmoon +\Month=12\Day=31\dayno\advance\date by1 + \count1=\date + \loop\moondate\phase\ifnum\date<\count1 + \evday[\themoon]\advance\moonno by1 + \repeat}} +\def\phase{{\count0=\moonno + \count1=\moonno + \divide\count0 by4\multiply\count0 by4 + \advance\count1 by-\count0\relax + \global\edef\themoon{\ifcase\count1 + New moon\or First quarter\or + Full Moon\or Last quarter\fi}}} diff --git a/Master/texmf-dist/tex/plain/calendar/sun.tex b/Master/texmf-dist/tex/plain/calendar/sun.tex new file mode 100644 index 00000000000..9ec246b1f9a --- /dev/null +++ b/Master/texmf-dist/tex/plain/calendar/sun.tex @@ -0,0 +1,15 @@ +%% +%% FILE sun.tex +%% +\loadadvanced +\def\linY#1.#2.#3+#4.{{\count0=\Year + \multiply\count0 by1000\count1=0 + \lin #1.#2.#3+#4. + \global\date=\count1}\JDTtoL} +% (local) +\def\includeseasons{% + \message{Including seasons} + \linY 365.242.365+ 79573.\evday[Spring] + \linY 365.241.628+172405.\evday[Summer] + \linY 365.242.045+266014.\evday[Fall] + \linY 365.242.756+355784.\evday[Winter]} diff --git a/Master/texmf-dist/tex/plain/calendar/wall.sty b/Master/texmf-dist/tex/plain/calendar/wall.sty new file mode 100644 index 00000000000..076eb579ba1 --- /dev/null +++ b/Master/texmf-dist/tex/plain/calendar/wall.sty @@ -0,0 +1,60 @@ +%% +%% FILE wall.sty +%% +\hsize=9.5in +\vsize=7.5in\voffset=-0.65in +\baselineskip=12pt +\newcount\daysinrow +\newdimen\cellwidth +\newdimen\cellheight +\cellheight=1.13in +\parindent=0pt +\cellwidth=\hsize +\divide\cellwidth by7 +\advance\cellwidth by-0.4pt +\font\BBf=cmbx12 at 24pt +\font\Bf=cmbx10 at 20pt +\font\Rm=cmr10 at 20pt +\font\rm=cmr12 at 14pt +\font\small=cmr9 +\footline={} +\def\hstrut{\hrule height0pt depth0pt + width\cellwidth} +\def\beginday{ + \ifnum\daysinrow=0\setbox1=\hbox{\vrule}\fi + \setbox0=\vbox to\cellheight\bgroup + \hstrut\hsize=\cellwidth\vskip5pt + \setbox2=\vbox\bgroup\small} +\def\endday{\egroup + \hbox{\hskip0.5em\Rm\ifholy\Bf\fi\the\Day} + \vskip2pt\box2\vfill\egroup + \setbox1=\hbox{\unhbox1\box0\vrule} + \advance\daysinrow by1 + \ifnum\daysinrow=7\box1\hrule\daysinrow=0\fi} +% +\def\advancemonth{\ifnum\Month=12 + \nextyear\Month=1\else\advance\Month by1\fi} +% If no Month is given, take today's date. +\ifnum\Month=0 \Month=\month + \ifnum\day>15 \advancemonth\fi\fi +\Day=1\dayno +\topskip=0pt\hbox{} +\vfill +\centerline{\BBf\themonth} +\penalty10000 +\vskip40pt minus32pt +% Local: from sunday ... +\prevday0\currentdate=\date +\hbox{\rm\loop + \hbox to\cellwidth{\hss\theweekday\hss} + \unskip\ifnum\weekd<6\advance\date by1\repeat} +\penalty10000 +\vskip3pt +% Local: ... to saturday. +\Day=1 \advance\Month by1\dayno +\advance\date by-1\nextday6\lastdate=\date +\leftskip=3pt +\raggedright +\daysinrow=0 +\vbox\bgroup\hrule +\def\epilog{\vfill\egroup\supereject} diff --git a/Master/texmf-dist/tex/plain/cellular/cell1.tex b/Master/texmf-dist/tex/plain/cellular/cell1.tex new file mode 100644 index 00000000000..89b98a354ea --- /dev/null +++ b/Master/texmf-dist/tex/plain/cellular/cell1.tex @@ -0,0 +1,148 @@ +% File: TeX Inputs Cell1.tex +% Author: J E Pittman +% Bitnet: JEPTeX@TAMVenus +% Internet: JEPTeX@Venus.TAMU.EDU +% Date: October 11, 1988 +% +% Set up the cellular environment +% +\catcode`_=11 % Protect local macros. +% +\ifx\forcount\undefined \input loopy \fi +\ifx\declarecount\undefined \input declare \fi +% +% Handy abbreviations +% +\def\half{0.5}% +\def\by{by}% +\def\height{height}% +\def\depth{depth}% +\def\width{width}% +\def\to{to}% +\def\zeropt{0pt}% +\let\x_after=\expandafter +% +% When using the Xerox 9700s or 4050, use \setverticaladjustment for +% portrait output and \sethorizontaladjustment for landscape output +% due to the differences in the way that vertical and horizontal lines +% of the same weight are printed. +% +\declaredimen\pixelwidth +\pixelwidth=1in +\divide\pixelwidth by 300 % assume 300dpi +% +\declaredimen\horizontal_rule_adjust +\horizontal_rule_adjust=\zeropt +\def\sethorizontaladjustment{\horizontal_rule_adjust=\pixelwidth}% +% +\declaredimen\vertical_rule_adjust +\vertical_rule_adjust=\zeropt +\def\setverticaladjustment{\vertical_rule_adjust=\pixelwidth}% +% +% The left, right, bottom, and top rule widths are used to determine +% the widths of the box around each cell. +% +\declaredimen\leftrulewidth +\declaredimen\rightrulewidth +\declaredimen\bottomrulewidth +\declaredimen\toprulewidth +% +% The left, right, bottom, and top border skips are used to position +% the text of a cell within it, relative to the centers of the rulers. +% +\declareskip\leftborderskip +\declareskip\rightborderskip +\declareskip\bottomborderskip +\declareskip\topborderskip +% +\declarecount\last_column +\declaredimen\columnwidth +\declarecount\merge_columns +\declaredimen\merge_width +% +\declarecount\last_row +\declaredimen\rowheight +\declarecount\merge_rows +\declaredimen\merge_height +\declarecount\rowpenalty +% +% The row info and column info token registers contain a list of +% tokens of the form /number/info, where number is the number of a +% row or column of interest and info is information, usually register +% assignments, that pertains to the row or column. +% +\declaretoks\column_info +\column_info={/}% +% +\declaretoks\row_info +\row_info={/}% +% +\def\everycolumn{\leftrulewidth=0.4pt\relax + \rightrulewidth=\leftrulewidth + \leftborderskip=6pt plus 1fil\relax + \rightborderskip=\leftborderskip + \columnwidth=\zeropt\relax + \merge_rows=0\relax + \merge_height=\zeropt\relax + \columnwidth=\zeropt\relax + }% +% +\def\everyrow{\toprulewidth=0.4pt\relax + \bottomrulewidth=\toprulewidth + \topborderskip=3pt plus 1fil\relax + \bottomborderskip=\topborderskip + \rowheight=\zeropt\relax + \merge_columns=0\relax + \merge_width=\zeropt\relax + }% +% +\def\get_data#1<#2{\relax + \def\temp##1/#1/##2/##3***{\relax + \def\temp{##2}% + \ifnum1=0\temp + #2={##1/#1//}% + \else +% \message{extracted ##2}% debug + ##2% + \fi + }% + \x_after\temp\the#2#1/1/***% + }% +% +\def\add_data#1>#2#3{\relax + \def\temp##1/#1/##2/##3***{\relax + #2={##1/#1/##2#3/##3}% +% \message{\string#2=\the#2}% debug + }% + \x_after\temp\the#2***% + }% +% +\def\add_column_number_data{\relax + \x_after \add_data \the\column_number>\column_info + }% +% +\def\get_column_number_data{\relax + \x_after \get_data \the\column_number<\column_info + }% +% +\def\add_row_number_data{\relax + \x_after \add_data \the\row_number>\row_info + }% +% +\def\get_row_number_data{\relax + \x_after \get_data \the\row_number<\row_info + }% +% +\declarebox\temp_box +\declarebox\scratch_box +\declaredimen\temp_dimen +\declaredimen\scratch_dimen +\declareskip\temp_skip +\declarecount\temp_count +% +\declarecount\tracingexpansions +\tracingexpansions=0 +% +\catcode`_=8 % Return to normal. +% +\endinput diff --git a/Master/texmf-dist/tex/plain/cellular/cell2.tex b/Master/texmf-dist/tex/plain/cellular/cell2.tex new file mode 100644 index 00000000000..4b025aabb8e --- /dev/null +++ b/Master/texmf-dist/tex/plain/cellular/cell2.tex @@ -0,0 +1,216 @@ +% File: TeX Inputs Cell2.tex +% Author: J E Pittman +% Bitnet: JEPTeX@TAMVenus +% Internet: JEPTeX@Venus.TAMU.EDU +% Date: November 8, 1988 +% +% Prepare to scan the data, taking notes as to span sizes, row and +% column dimensions, et cetera. +% +\catcode`_=11 % Used to protect local control sequence names. +% +% The span info tokens contain sets of entries of the form \process +% {position}{number}{dimension}, where position is the terminal column +% or row, number is the number of columns or rows leading into the +% column or row, and dimension is the size of the information. +% +\declaretoks\column_span_info +\column_span_info={}% +\declaretoks\row_span_info +\row_span_info={}% +% +\let\process=\relax +% +\declarecount\column_number +\column_number=0 +% +% Create a column information entry and put the user's specifications +% into it. +% +\def\column#1{\relax + \advance\column_number \by 1 + \last_column=\column_number + \get_column_number_data + \add_column_number_data {#1}% + \ignorespaces + }% +% +\declarecount\row_number +\row_number=0 +% +% Same as \column. +% +\def\row#1{\relax + \advance\row_number \by 1 + \message{Scanning row \the\row_number.}% + \last_row=\row_number + \everyrow + \get_row_number_data + \add_row_number_data {#1}% + \column_number=0 + \ignorespaces + }% +% +% \blank is used to generate a cell without a border or data. In this +% context, all it does is absorb merges. +% +\def\blank{\relax + \advance\column_number \by 1 + \if\column_number>\last_column + \advance\column_number \by -1 + \column{}% + \fi + \everycolumn + \get_column_number_data + \ifnum\merge_rows>1 + \add_column_number_data {\merge_rows=0\relax}% + \fi + \merge_columns=0 + }% +% +% \cell is used to generate a normal, ruled cell. In this context, it +% merely measures the cell and makes the appropriate notes. +% +\def\cell#1{\relax + \advance\column_number \by 1 + \if\column_number>\last_column + \advance\column_number \by -1 + \column{}% + \fi + \everycolumn + \get_column_number_data +% +% Typeset the information into temp box. +% + \setbox\temp_box=\vbox \bgroup + \begingroup + \ifnum\merge_rows>0 + \advance\row_number \by -\merge_rows + \get_row_number_data + \fi + \vskip \topborderskip + \endgroup + \hbox \bgroup + \begingroup + \ifnum\merge_columns>0 + \advance\column_number \by -\merge_columns + \get_column_number_data + \fi + \hskip \leftborderskip + \endgroup + #1\vphantom{)}% + \hskip \rightborderskip + \egroup + \vskip \bottomborderskip + \egroup +% +% If it is a row merger, record it for later processing. +% + \ifnum \merge_rows>0 + \edef\temp{\process + {\the\merge_rows}{\the\ht\temp_box}{\the\row_number}% + \the\row_span_info + }% + \x_after\row_span_info\x_after=\x_after{\temp}% +% \message{\string\row_span_info=\the\row_span_info}% debug + \add_column_number_data {\merge_rows=0\relax}% + \else +% +% Not a merger, record the height if max. +% + \ifdim\ht\temp_box>\rowheight + \let\info=\relax + \edef\temp{\the\row_number>\info + {\rowheight=\the\ht\temp_box\relax}}% + \let\info=\row_info + \x_after \add_data \temp +% \message{\string\row_info=\the\row_info}% debug + \rowheight=\ht\temp_box + \fi + \fi +% +% Same as above for column merger and width. +% + \ifnum \merge_columns>0 + \edef\temp{\process + {\the\merge_columns}{\the\wd\temp_box}{\the\column_number}% + \the\column_span_info + }% + \x_after\column_span_info\x_after=\x_after{\temp}% +% \message{\string\column_span_info=\the\column_span_info}% debug + \merge_columns=0 + \else + \ifdim\wd\temp_box>\columnwidth + \let\info=\relax + \edef\temp{\the\column_number>\info + {\columnwidth=\the\wd\temp_box\relax}}% + \let\info=\column_info + \x_after \add_data \temp +% \message{\string\column_info=\the\column_info}% debug + \fi + \fi + }% +% +% \mergeright specifies that the corresponding position is to be +% merged with the cell to its right. +% +\def\mergeright{\relax + \advance\column_number \by 1 + \if\column_number>\last_column + \advance\column_number \by -1 + \column{}% + \fi + \everycolumn + \get_column_number_data + \advance\merge_columns \by 1 +% +% Cancel a row merge, if present. +% + \ifnum\merge_rows>1 + \add_column_number_data {\merge_rows=0\relax}% + \fi + }% +% +% Same as \mergeright, except down. +% +\def\mergedown{\relax + \advance\column_number \by 1 + \if\column_number>\last_column + \advance\column_number \by -1 + \column{}% + \fi + \everycolumn + \get_column_number_data + \add_column_number_data {\advance\merge_rows \by 1\relax}% + \merge_columns=0 + }% +% +% The horizontal and vertical stretch macros allow the user to specify +% an explicit stretch that will subsequently be processed like a span. +% User-specified stretches are processed after span caused ones. The +% parameters are the starting column/row, the ending column/row, and +% the size of the stretch. +% +\def\horizontalstretch#1#2#3{\relax + \temp_count=#2\relax + \advance\temp_count \by -#1\relax + \edef\temp{\the\column_span_info\process{\the\temp_count}{#3}{#2}}% + \x_after \column_span_info\x_after=\x_after{\temp}% +% \message{\string\column_span_info=\the\column_span_info}% debug + \ignorespaces + }% +% +\def\verticalstretch#1#2#3{\relax + \temp_count=#2\relax + \advance\temp_count \by -#1\relax + \edef\temp{\the\row_span_info\process{\the\temp_count}{#3}{#2}}% + \x_after \row_span_info\x_after=\x_after{\temp}% +% \message{\string\row_span_info=\the\row_span_info}% debug + \ignorespaces + }% +% +\def\noalign#1{\ignorespaces}% don't do anything for the first pass +% +\catcode`_=8 % Return to normal. +% +\endinput diff --git a/Master/texmf-dist/tex/plain/cellular/cell3.tex b/Master/texmf-dist/tex/plain/cellular/cell3.tex new file mode 100644 index 00000000000..1daa3b1746d --- /dev/null +++ b/Master/texmf-dist/tex/plain/cellular/cell3.tex @@ -0,0 +1,132 @@ +% File: TeX Inputs Cell3.tex +% Author: J E Pittman +% Bitnet: JEPTeX@TAMVenus +% Internet: JEPTeX@Venus.TAMU.EDU +% Date: October 11, 1988 +% +% Process the column and row span info. +% +\declaredimen\expansion +% +\edef\everycolumn{\everycolumn\expansion=\zeropt\relax}% +\edef\everyrow{\everyrow\expansion=\zeropt\relax}% +% +\catcode`_=11 % used to protect local control sequence names. +% +%\message{\string\row_span_info=\the\row_span_info}% debug +%\message{\string\column_span_info=\the\column_span_info}% debug +% +\def\process#1#2#3{\relax + \last_cell=#3\relax + \first_cell=\last_cell + \advance \first_cell \by -#1\relax + \span_size=#2\relax +% +% Compute the gap between the size of the span and the total size of +% the cells spanned. +% + \gap=\span_size + \forcount \cell_number=\first_cell to \last_cell by 1 do + \everycell + \get_cell_number_data + \advance \gap \by -\cell_size + \advance \gap \by -\expansion + \endfor \cell_number +% \message{\string\first_cell=\the\first_cell}% debug +% \message{\string\last_cell=\the\last_cell}% debug +% \message{\string\span_size=\the\span_size}% debug +% \message{\string\gap=\the\gap}% debug +% +% If the gap is 0pt or less, nothing needs to be done, else search for +% the minimum expansion that can be applied to every cell with a +% current expansion less than the expansion found such that the span +% is properly accomadated. +% + \ifdim \gap>\zeropt + \expandable_cells=#1\relax + \advance \expandable_cells \by 1 + \trial_expansion=\zeropt + \whilenot\search \ifdim\gap=\zeropt do +% \message{\string\gap=\the\gap}% debug + \ifnum \expandable_cells=0 + \advance \trial_expansion \by \expansion + \else + \multiply \trial_expansion \by \expandable_cells + \advance \trial_expansion \by \gap + \divide \trial_expansion \by \expandable_cells + \expandable_cells=0 + \fi + \gap=\span_size +% \message{\string\trial_expansion=\the\trial_expansion}% debug + \forcount \cell_number=\first_cell to \last_cell by 1 do + \everycell + \get_cell_number_data + \advance \gap \by -\cell_size + \ifdim \expansion>\trial_expansion + \advance \gap \by -\expansion + \else + \advance \gap \by -\trial_expansion + \advance \expandable_cells \by 1 + \fi + \endfor \cell_number + \temp_dimen=1sp + \multiply \temp_dimen \by \expandable_cells + \ifdim \gap>-\temp_dimen + \ifdim \gap<\temp_dimen + \gap=\zeropt + \fi + \fi + \endwhilenot \search + \forcount \cell_number=\first_cell to \last_cell by 1 do + \everycell + \get_cell_number_data + \ifdim \expansion<\trial_expansion + \let\info=\relax + \edef\temp{\the\cell_number>\info + {\expansion=\the\trial_expansion\relax}}% + \let\info=\cell_info + \x_after \add_data \temp + \ifnum\tracingexpansions>0 + \message{Expanded \the\cell_number}% + \message{by \the\trial_expansion}% + \message{from \the\cell_size}% + \advance \cell_size \by \trial_expansion + \message{to \the\cell_size.}% + \fi + \fi + \endfor \cell_number + \fi + }% +% +\declarecount\first_cell +\declarecount\last_cell +\declaredimen\span_size +\let\expandable_cells=\temp_count +\declaredimen\trial_expansion +\let\gap=\scratch_dimen +% +\let\cell_number=\row_number +\let\everycell=\everyrow +\let\get_cell_number_data=\get_row_number_data +\let\cell_info=\row_info +\let\cell_size=\rowheight +\ifnum\tracingexpansions>0 + \message{Checking row expansions.}% +\fi +\the\row_span_info +% +\let\cell_number=\column_number +\let\everycell=\everycolumn +\let\get_cell_number_data=\get_column_number_data +\let\cell_info=\column_info +\let\cell_size=\columnwidth +\ifnum\tracingexpansions>0 + \message{Checking column expansions.}% +\fi +\the\column_span_info +% +\let\process=\relax +% +\catcode`_=8 % back to normal +% +\endinput diff --git a/Master/texmf-dist/tex/plain/cellular/cell4.tex b/Master/texmf-dist/tex/plain/cellular/cell4.tex new file mode 100644 index 00000000000..498fd6f0044 --- /dev/null +++ b/Master/texmf-dist/tex/plain/cellular/cell4.tex @@ -0,0 +1,355 @@ +% File: TeX Inputs Cell4.tex +% Author: J E Pittman +% Bitnet: JEPTeX@TAMVenus +% Internet: JEPTeX@Venus.TAMU.EDU +% Date: November 8, 1988 +% +% Set up to output the data. +% +\catcode`_=11 % Protect local control sequence names. +% +% The user supplied information about the column has already been +% processed. +% +\def\column #1{\relax\ignorespaces}% +% +\row_number=0 +\rowpenalty=0 +% +% This routine is used for horizontal kerning when there might be a +% kern to the left of the current position. +% +\def\move_right_via_lastkern #1{\relax + \temp_dimen=#1\relax + \ifdim \lastkern>\zeropt + \advance \temp_dimen \by \lastkern + \unkern + \else + \fi + \kern \temp_dimen + }% +% +% \row begins a row by getting its specifications, terminating the +% previous row (if any) and going into horizontal mode. +% +\def\row #1{\relax + \advance \row_number \by 1 + \everyrow + \get_row_number_data + \advance \rowheight \by \expansion + \ifdim \bottomrulewidth>\zeropt + \advance \bottomrulewidth \by \horizontal_rule_adjust + \fi + \column_number=0 + \par + \ifnum \rowpenalty=0 + \else + \penalty \rowpenalty + \rowpenalty=0 + \fi + \noindent + \ignorespaces + \message{Outputting row \the\row_number.}% + }% +% +% \blank creates a blank cell by kerning the appropriate amount. +% +\def\blank {\relax + \advance \column_number \by 1 + \everycolumn + \get_column_number_data + \advance \columnwidth \by \expansion + \advance \merge_width \by \expansion + \move_right_via_lastkern \merge_width +% +% Terminate merger(s). +% + \merge_width=\zeropt + \merge_columns=0 + \ifnum \merge_rows>0 + \add_column_number_data + {\merge_rows=0\relax\merge_height=\zeropt\relax}% + \fi + }% +% +% \cell outputs a cell. The components of the cell are (in the order +% output) the entry, the top ruler, the bottom ruler, and the left and +% right rulers. +% +\def\cell #1{\relax + \advance \column_number \by 1 + \everycolumn + \get_column_number_data + \advance \columnwidth \by \expansion + \advance \merge_height \by \rowheight + \advance \merge_width \by \columnwidth + \ifdim \leftrulewidth>\zeropt + \advance \leftrulewidth \by \vertical_rule_adjust + \fi + \ifdim \rightrulewidth>\zeropt + \advance \rightrulewidth \by \vertical_rule_adjust + \fi +% +% Get the correct top border skip and rule width. Note that it is +% necessary to extract this informaion even if a row merger is not +% present because a previous row merger might have left the wrong +% values. +% + \begingroup + \advance \row_number \by -\merge_rows + \everyrow + \get_row_number_data + \xdef\globaltemp{\topborderskip=\the\topborderskip\relax + \toprulewidth=\the\toprulewidth\relax + }% + \aftergroup \globaltemp + \endgroup + \ifdim \toprulewidth>\zeropt + \advance \toprulewidth \by \horizontal_rule_adjust + \fi +% +% Same procedure for the left border skip and rule width except that +% extraction is necessary only in the presense of a column merger due +% to the execution of an every column and a get at the start of \cell. +% + \ifnum \merge_columns>0 + \begingroup + \advance \column_number \by -\merge_columns + \everycolumn + \get_column_number_data + \xdef\globaltemp{\leftrulewidth=\the\leftrulewidth\relax + \leftborderskip=\the\leftborderskip\relax + }% + \aftergroup \globaltemp + \endgroup + \ifdim \leftrulewidth>\zeropt + \advance \leftrulewidth \by \vertical_rule_adjust + \fi + \fi +% +% Typeset the entry into temp box horizontally first, trying kerns +% before glue in case the cell does not require horizontal stretching +% and taking advantage of an empty cell by doing nothing, if such is +% the case. +% + \setbox\temp_box=\hbox{#1}% + \ifdim\wd\temp_box>\zeropt + \setbox\temp_box=\hbox \bgroup + \kern \leftborderskip + \box\temp_box + \egroup + \temp_dimen=\wd\temp_box + \advance\temp_dimen \by \rightborderskip + \wd\temp_box=\temp_dimen +% + \ifdim\wd\temp_box=\merge_width +% +% then the kerns can be used instead of skips. +% + \else + \setbox\temp_box=\hbox \to \merge_width \bgroup + \hskip \leftborderskip + #1% + \hskip \rightborderskip + \egroup + \fi +% +% Hide the width of temp box and put a phantom into it the hard way. +% + \wd\temp_box=\zeropt + \setbox\scratch_box=\hbox{#1)}% + \ifdim \dp\scratch_box>\dp\temp_box + \dp\temp_box=\dp\scratch_box + \fi + \ifdim \ht\scratch_box>\ht\temp_box + \ht\temp_box=\ht\scratch_box + \fi +% + \temp_dimen=\ht\temp_box + \advance \temp_dimen \by \dp\temp_box + \advance \temp_dimen \by \bottomborderskip + \advance \temp_dimen \by \topborderskip + \ifdim \temp_dimen=\merge_height +% +% then the entry can be positioned vertically via a raise statement. +% The total height of the material output should be equal to the row +% height, thus acting as a strut. +% + \temp_dimen=\bottomborderskip + \advance \temp_dimen \by \dp\temp_box + \scratch_dimen=\rowheight + \advance\scratch_dimen by -\temp_dimen + \ht\temp_box=\scratch_dimen + \raise \temp_dimen \box\temp_box + \else % have to do it via a box + \setbox\temp_box=\vbox \to \rowheight \bgroup +% +% Subtracting merge height - row height from top border skip allows +% the cell to stick up into the next row by an appropriate amount. +% + \advance \topborderskip \by \rowheight + \advance \topborderskip \by -\merge_height + \vskip \topborderskip + \box\temp_box + \vskip \bottomborderskip + \egroup + \box\temp_box + \fi + \fi +% +% All of the rules are typeset with an overlap of at least pixel width +% which insures that there will be no gaps. +% +% Typeset the top rule into an hbox and use a raise statement to put +% it into position. +% + \ifdim \toprulewidth>\zeropt + \setbox\temp_box=\hbox \bgroup + \temp_dimen=\merge_width + \ifdim \half\leftrulewidth<\pixelwidth + \kern -\pixelwidth + \else + \kern -\half\leftrulewidth + \fi + \advance \temp_dimen \by -\lastkern + \vrule \height \half\toprulewidth + \depth \half\toprulewidth + \width \temp_dimen + \ifdim \half\rightrulewidth<\pixelwidth + \temp_dimen=\pixelwidth + \else + \temp_dimen=\half\rightrulewidth + \fi + \kern -\temp_dimen + \vrule \height \half\toprulewidth + \depth \half\toprulewidth + \width 2\temp_dimen + \egroup + \wd\temp_box=\zeropt + \temp_dimen=\rowheight + \advance\temp_dimen \by -\merge_height + \ht\temp_box=\temp_dimen + \dp\temp_box=\merge_height + \raise \merge_height \box\temp_box + \fi +% +% Output the bottom rule using the same methods. +% + \ifdim \bottomrulewidth>\zeropt + \setbox\temp_box=\hbox \bgroup + \temp_dimen=\merge_width + \ifdim \half\leftrulewidth<\pixelwidth + \kern -\pixelwidth + \else + \kern -\half\leftrulewidth + \fi + \advance \temp_dimen \by -\lastkern + \vrule \height \half\bottomrulewidth + \depth \half\bottomrulewidth + \width \temp_dimen + \ifdim \half\rightrulewidth<\pixelwidth + \temp_dimen=\pixelwidth + \else + \temp_dimen=\half\rightrulewidth + \fi + \kern -\temp_dimen + \vrule \height \half\bottomrulewidth + \depth \half\bottomrulewidth + \width 2\temp_dimen + \egroup + \wd\temp_box=\zeropt + \dp\temp_box=\zeropt + \ht\temp_box=\rowheight + \box\temp_box + \fi +% +% Test to see if the left inclusive-or right rule width is non-zero. +% + \ifdim \leftrulewidth=\zeropt + \temp_dimen=\rightrulewidth + \else + \temp_dimen=\leftrulewidth + \fi + \ifdim \temp_dimen>\zeropt + \setbox\temp_box=\hbox \bgroup + \temp_dimen=\merge_height + \advance \merge_height \by \pixelwidth + \ifdim \leftrulewidth>\zeropt + \kern -\half\leftrulewidth + \vrule \height \temp_dimen + \depth \pixelwidth + \width \leftrulewidth + \fi + \ifdim \rightrulewidth>\zeropt + \scratch_dimen=\merge_width + \advance \scratch_dimen \by -\half\leftrulewidth + \advance \scratch_dimen \by -\half\rightrulewidth + \kern \scratch_dimen + \vrule \height \temp_dimen + \depth \pixelwidth + \width \rightrulewidth + \fi + \egroup + \wd\temp_box=\merge_width + \ht\temp_box=\rowheight + \dp\temp_box=\zeropt + \box\temp_box + \else + \move_right_via_lastkern \merge_width + \fi +% +% Cancel the mergers. +% + \merge_width=\zeropt + \merge_columns=0 + \ifnum \merge_rows>0 + \add_column_number_data + {\merge_rows=0\relax\merge_height=\zeropt\relax}% + \fi + \ignorespaces + }% +% +% No surprises here. +% +\def\mergeright {\relax + \advance \column_number \by 1 + \everycolumn + \get_column_number_data + \advance \columnwidth \by \expansion + \advance \merge_width \by \columnwidth + \advance \merge_columns \by 1 + \ifnum \merge_rows>0 + \add_column_number_data + {\merge_rows=0\relax\merge_height=\zeropt\relax}% + \fi + }% +% +% No surprises here. +% +\def\mergedown {\relax + \advance \column_number \by 1 + \everycolumn + \get_column_number_data + \advance \columnwidth \by \expansion + \advance \merge_width \by \columnwidth + \move_right_via_lastkern \merge_width + \merge_width=\zeropt + \merge_columns=0 + \advance \merge_height \by \rowheight + \let\info=\relax + \edef\temp{\the\column_number>\info + {\merge_height=\the\merge_height\relax + \advance\merge_rows \by 1\relax}}% + \let\info=\column_info + \x_after \add_data \temp + \rowpenalty=10000 % do not allow a break over a row merge. + }% +% +\catcode`_=8 % Back to normal. +% +\def\noalign#1{\relax + \vadjust{#1}% + \ignorespaces + }% +% +\endinput diff --git a/Master/texmf-dist/tex/plain/cellular/cellular.tex b/Master/texmf-dist/tex/plain/cellular/cellular.tex new file mode 100644 index 00000000000..62f2c7c02f5 --- /dev/null +++ b/Master/texmf-dist/tex/plain/cellular/cellular.tex @@ -0,0 +1,29 @@ +% File: TeX Inputs cellular.tex +% Author: J E Pittman +% Bitnet: JEPTeX@TAMVenus +% Internet: JEPTeX@Venus.TAMU.EDU +% Date: November 8, 1988 +% +% This file defines the main macro for cellular table construction. +% For commentary, please see the file cellular.doc. +% +\message{Cellular.TeX version 0.}% +% +\def\begincellular#1#2\endcellular{\relax + \begingroup + \input Cell1 % set up enviroment + #1\relax + \input Cell2 % set up for scan + \ignorespaces + #2\relax % scan the cells + \input Cell3 % compute spans + \input Cell4 % set up for output + \offinterlineskip + \parskip=\zeropt + \ignorespaces + #2\relax % output cells + \par + \endgroup + }% +% +\endinput diff --git a/Master/texmf-dist/tex/plain/config/aleph.ini b/Master/texmf-dist/tex/plain/config/aleph.ini new file mode 100644 index 00000000000..949e5bd0540 --- /dev/null +++ b/Master/texmf-dist/tex/plain/config/aleph.ini @@ -0,0 +1,2 @@ +\input plain +\dump diff --git a/Master/texmf-dist/tex/plain/config/bplain.ini b/Master/texmf-dist/tex/plain/config/bplain.ini new file mode 100644 index 00000000000..892588b5df6 --- /dev/null +++ b/Master/texmf-dist/tex/plain/config/bplain.ini @@ -0,0 +1,5 @@ +% Thomas Esser, 1998. public domain. +% hyphenation tables are now set up in language.dat +\input bplain +\dump +\endinput diff --git a/Master/texmf-dist/tex/plain/config/etex.ini b/Master/texmf-dist/tex/plain/config/etex.ini new file mode 100644 index 00000000000..f8db7a942ef --- /dev/null +++ b/Master/texmf-dist/tex/plain/config/etex.ini @@ -0,0 +1,4 @@ +% Thomas Esser, 1998. public domain. +\input etex.src +\dump +\endinput diff --git a/Master/texmf-dist/tex/plain/config/language.def b/Master/texmf-dist/tex/plain/config/language.def new file mode 100644 index 00000000000..e1552e44690 --- /dev/null +++ b/Master/texmf-dist/tex/plain/config/language.def @@ -0,0 +1,29 @@ +%% e-TeX V2.0;2 + +% Note: the first line of this file must match the corresponding line +% in "etex.src" and "etexdefs.lib", otherwise fallback will be used. + +% This is "language.def", e-TeX's language definition file. + +% It is explicitly permitted to augment this file by adding additional +% \addlanguage ... commands AFTER the first (\addlanguage {USenglish}) +% which must remain as the first language added to ensure total document +% portability for pre-\language documents. The last line of the file +% MUST be left as \uselanguage {USenglish} for the sane reason. + +\addlanguage {USenglish}{hyphen}{}{2}{3} %%% This MUST be the first non-comment + %%% line of the file + +% Additional languages, patterns, exceptions and left- and right-hyphen +% minima may be added here, and an example is given for German. + +% The five parameters for \addlanguage are: +% language, patterns file, exceptions file, left- and right-hyphen minima + +%%% Next section is E X A M P L E O N L Y +%%% \addlanguage {German}{ghyph31}{}{2}{2} %%% further such lines may be used; +%%% Previous section is E X A M P L E O N L Y + +%%% No changes may be made beyond this point. + +\uselanguage {USenglish} %%% This MUST be the last line of the file. diff --git a/Master/texmf-dist/tex/plain/config/omega.ini b/Master/texmf-dist/tex/plain/config/omega.ini new file mode 100644 index 00000000000..949e5bd0540 --- /dev/null +++ b/Master/texmf-dist/tex/plain/config/omega.ini @@ -0,0 +1,2 @@ +\input plain +\dump diff --git a/Master/texmf-dist/tex/plain/config/pdfetex.ini b/Master/texmf-dist/tex/plain/config/pdfetex.ini new file mode 100644 index 00000000000..e5b7c74d585 --- /dev/null +++ b/Master/texmf-dist/tex/plain/config/pdfetex.ini @@ -0,0 +1,5 @@ +% Thomas Esser, 1998. public domain. +\input pdftexconfig.tex +\input etex.src +\dump +\endinput diff --git a/Master/texmf-dist/tex/plain/config/pdftex.ini b/Master/texmf-dist/tex/plain/config/pdftex.ini new file mode 100644 index 00000000000..12af71c38a5 --- /dev/null +++ b/Master/texmf-dist/tex/plain/config/pdftex.ini @@ -0,0 +1,6 @@ +% Thomas Esser, 1998. public domain. +% hyphenation tables are now set up in language.dat +\input pdftexconfig.tex +\input plain +\dump +\endinput diff --git a/Master/texmf-dist/tex/plain/config/tex.ini b/Master/texmf-dist/tex/plain/config/tex.ini new file mode 100644 index 00000000000..18cd78cb56d --- /dev/null +++ b/Master/texmf-dist/tex/plain/config/tex.ini @@ -0,0 +1,4 @@ +% Thomas Esser, 1998. public domain. +\input plain +\dump +\endinput diff --git a/Master/texmf-dist/tex/plain/croatian/glhyphen.tex b/Master/texmf-dist/tex/plain/croatian/glhyphen.tex new file mode 100644 index 00000000000..de86bf12226 --- /dev/null +++ b/Master/texmf-dist/tex/plain/croatian/glhyphen.tex @@ -0,0 +1,279 @@ +%GLHYPHEN.TEX, %14.10.92 + +%tablica rastavljanja %verzija 1.00 + +\patterns{ +a1a +a1e +a1i +a1o +a2s +4ast. +a1u +1bdi +1bdj +1bj +1bna. +1bne. +1bni. +1bno. +1bnu. +1ba +1bar +1be +.1be4s3 +1bi +1b2l +1bl4j +1bo +1b2r +1bu +1ca +1ce +1ci +1c2j +1cma +1cmo +1co +1c2r +1cv +1cu +1d2a +1d2e +1d2i +1d2j4e +1d2o +1d2u +1d2r +1dl +1dna. +1dne. +1dni. +1dno. +1dnu. +1dne +1dno +1dv +d2j +e1a +e1e +e1i +e1o +e1u +1fa +1fe +1fi +1f4l +1fo +1f4r +1fu +1fj +1gma +1gmi +1gn +1gv +1ga +1ge +1gi +1g4l +1go +1gu +1g2r +1ha +1he +1hi +1ho +1hu +1hla +1hle +1h2r +1h2v +1hj +1hl +1hna. +1hne. +1hni. +1hno. +1hnu. +i1a +i1e +i1i +i3o +i1u +1j2a +1j4e +1j4em +1j4i +1j4o +1j4u +1ka +1ka. +k1c +1ke +1ke. +1ki +3k2l +1ko +1k4r +1ku +1ku. +1k2v +k1t2n +1la +1le +1li +1lo +1lu +l8j +1lja +1lje +1lji +1ljo +1lju +1ma +1ma. +1me +1mi +1m2je +1mo +1mu +1mr +1mj +1ml +1na +1na. +5nad +1naj5 +1ne +1ne. +1ni +1ni. +n1k2t +n1k2c +n1t2n +1no +1no. +1nu +1nu. +n8j +1nja +1nje +1nji +1njo +1nju +o1a +o1e +o1i +o1o +o1u +o2s +o4st. +1pa +1pe +1pi +1p2l +1po +pod1 +po3s +pot1 +pre1 +pre2d1 +pre2t1 +pri1 +1p2r +1p2t +1pj +1pne +1pu +1ra +r1d2 +1re +re3do +re3ta +1ri +1ro +1ru +3sa +3se +3si +3s2k +3s2l +3s2n +3s2r +3s2t +3sto +1s2t2v +3so +s4t. +3su +3sv2j +1sj +1sm +1sv +1sf +1sp +1t2j +1tl +1tka. +1tke. +1tki. +1tko. +1tku. +1ta +1te +1ti +t2en +1t2lo +1to +1t2r +1tu +1t2v +u1a +u1e +u1i +u1o +u1u +1va +1ve +1vi +1v2je +1v2l +1vla3 +1v2lj +1vo +1v2r +1vu +1vj +1zdj +1zdr +1zj +1zl +1zv +1zr +1zg +1zm +1za +1z2b +1ze +1zi +1z2n +1zo +1zu +s8s +z8z +c8c +c8h +d8d +c8x +c8y +d8y +s8x +z8x +y8a +y8e +y8u } + +\hyphenation{ ras-tav-lja-nje } + + + diff --git a/Master/texmf-dist/tex/plain/croatian/llig.tex b/Master/texmf-dist/tex/plain/croatian/llig.tex new file mode 100644 index 00000000000..3f637673b46 --- /dev/null +++ b/Master/texmf-dist/tex/plain/croatian/llig.tex @@ -0,0 +1,126 @@ + +\def\ja{{\gg \char'000}} +\def\je{{\gg \char'000}} +\def\ju{{\gg \char'001}} +\def\ml{{\gg \char'002}} +\def\ili{{\gg \char'003}} +\def\tv{{\gg \char'004}} +\def\pr{{\gg \char'005}} +\def\ti{{\gg \char'006}} +\def\itt{{\gg \char'007}} +\def\bo{{\gg \char'010}} +\def\br{{\gg \char'011}} +\def\lju{{\gg \char'012}} +\def\li{{\gg \char'013}} +\def\il{{\gg \char'014}} +\def\tr{{\gg \char'015}} +\def\tto{{\gg \char'016}} +\def\jur{{\gg \char'017}} +\def\ol{{\gg \char'020}} +\def\lo{{\gg \char'021}} +\def\vo{{\gg \char'022}} +\def\po{{\gg \char'023}} +\def\oli{{\gg \char'024}} +\def\olju{{\gg \char'025}} +\def\ljud{{\gg \char'026}\hskip2pt\relax} +\def\bll{{\gg \char'027}} +\def\mo{{\gg \char'030}} +\def\vr{{\gg \char'031}} +\def\tvo{{\gg \char'032}} +\def\no{{\gg \char'033}} +\def\pov{{\gg \char'034}} +\def\poto{{\gg \char'035}} +\def\povr{{\gg \char'036}} +\def\potr{{\gg \char'037}} +\def\pt{{\gg \char'040}} +\def\pot{{\gg \char'041}} +\def\jutr{{\gg \char'042}} +\def\vd{{\gg \char'043}} +\def\vod{{\gg \char'044}} +\def\tvr{{\gg \char'045}} +\def\thita{{\gg \char'046}} +\def\izica{{\gg \char'047}} +\def\zl{{\gg \char'050}} +\def\zo{{\gg \char'051}} +\def\zr{{\gg \char'052}} +\def\pv{{\gg \char'053}} +\def\pov{{\gg \char'054}} +\def\prv{{\gg \char'055}} +\def\pl{{\gg \char'056}} +\def\pod{{\gg \char'057}} +\def\mlc{{\gg \char'060}} +\def\lv{{\gg \char'061}} +\def\vl{{\gg \char'062}} +\def\lt{{\gg \char'063}} +\def\tl{{\gg \char'064}} +\def\vt{{\gg \char'065}} +\def\mc{{\gg \char'066}} +\def\so{{\gg \char'067}} +\def\am{{\gg \char'070}} +\def\ko{{\gg \char'071}} +\def\ot{{\gg \char'072}} +\def\ms{{\gg \char'073}} +\def\mm{{\gg \char'074}} +\def\jeje{{\gg \char'075}} +\def\izze{{\gg \char'076}} +\def\jezze{{\gg \char'077}} +\def\krizz{{\gg \char'100}} +\def\jazze{{\gg \char'101}} +\def\komentar{{\gg \char'102}} +\def\go{{\gg \char'103}} +\def\gr{{\gg \char'104}} +\def\hr{{\gg \char'105}} +\def\ho{{\gg \char'106}} + +\def\vjeje{{\ggvv \char'075}} +\def\vizze{{\ggvv \char'076}} +\def\vjezze{{\ggvv \char'077}} +\def\vkrizz{{\ggvv \char'100}} +\def\vjazze{{\ggvv \char'101}} +\def\vkomentar{{\ggvv \char'102}} +\def\vgo{{\ggvv \char'103}} +\def\vgr{{\ggvv \char'104}} +\def\vhr{{\ggvv \char'105}} +\def\vho{{\ggvv \char'106}} +\def\myl{{\gg \char'107}} +\def\ly{{\gg \char'110}} + + +%\let\je=\ja + + +\def\til#1{$\widetilde{\text{#1}}$} + + +%\font\ugvv=ugvv +\font\ugve=ugve +\font\bb=ugv +\font\zz=ggv +\font\be=ugl +\font\zzz=gg +\font\mbl=ugl10 +\font\zzzz=gg10 + +\font\mobl=obl10 %obla gl. +\font\obl=obl \let\nobl=\obl +\font\mkal=cal10 % kaligrafska gl. slova +\font\kal=cal + +\font\ggvv=ggv1 % kraj i.mf, koji se ne mozze uccitati + +\font\pleter=pleter +\font\plet=plet +\font\ple=ple +\font\kur=kur % kurzivna gl. +\font\hc=hcyr % hrv. chirilica +\font\mhc=hcyr10 % hrv. chirilica + +\font\lom=lom % baromicheve +\font\bass=bass10 +\font\bassv=bass + +\def\vvgl{\ugvv\baselineskip=.7truecm} +\def\vgl{\let\gg=\zz\bb\baselineskip=.7truecm} +\def\ngl{\let\gg=\zzz\be\baselineskip=.6cm} +\def\mgl{\let\gg=\zzzz\mbl\baselineskip=.5cm} + diff --git a/Master/texmf-dist/tex/plain/croatian/ste.tex b/Master/texmf-dist/tex/plain/croatian/ste.tex new file mode 100644 index 00000000000..365c0049c08 --- /dev/null +++ b/Master/texmf-dist/tex/plain/croatian/ste.tex @@ -0,0 +1,14 @@ + +% Croatian fonts +% ste\'cak border ornaments + +\def\trokut{\centerline{$\text{\stechak JJJJJJJJJJJJJ}$}} % trokut +\def\Oo{\centerline{$\text{\stechak IIIIIIIIIIIIIIIII}$}} % Oo +\def\dvije8{\centerline{$\text{\stechak HHHHHHHHHHH}$}} % 8 +\def\kukagd{\centerline{$\text{\stechak GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG}$}} % kukice gd. +\def\kukag{\centerline{$\text{\stechak FFFFFFFFFFFFFFFFFFFFFF}$}} % kukice g. +\def\kukad{\centerline{$\text{\stechak EEEEEEEEEEEEEEEEEE}$}} %kukice d. +\def\cvijet{\centerline{$\text{\stechak NNNNNNNNNNN}$}} %cvjetichi +\def\ZZZ{\centerline{$\text{\stechak MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM}$}} %ZZZ + + diff --git a/Master/texmf-dist/tex/plain/croatian/ttabl.tex b/Master/texmf-dist/tex/plain/croatian/ttabl.tex new file mode 100644 index 00000000000..c240ff39674 --- /dev/null +++ b/Master/texmf-dist/tex/plain/croatian/ttabl.tex @@ -0,0 +1,56 @@ +%\hsize=10cm + +%\font\blj=blj +%\def\tvr{{\cyr\t}\relax} + +{ +\baselineskip=0.5cm\rm + +\setbox1=\vbox{\halign{\ngl\hfil#\hfil&\quad#\hfil&\quad\hfil#\quad\cr +A& A& 1\cr +B& B& 2\cr +V& V& 3\cr +G& G& 4\cr +D& D& 5\cr +E& E& 6\cr +Zz& \v Z& 7\cr +9& Dz& 8\cr +Z& Z& 9\cr +Y& \"I& 10\cr +I& I& 20\cr +Dd, J& Dj& 30\cr +K& K& 40\cr +L& L& 50\cr +M& M& 60\cr +N& N& 70\cr +}} + + + +\setbox2=\vbox{\halign{\ngl\hfil#\hfil&\quad#\hfil&\quad\hfil#\quad\cr +O& O& 80\cr +P& P& 90\cr +R& R& 100\cr +S& S& 200\cr +T& T& 300\cr +U& U& 400\cr +F& F& 500\cr +H& H& 600\cr +Q & $\omega$& 700\cr +Ch& \v S\'c, \' C& 800\cr +C& C& 900\cr +Cc, Cx& \v C& 1000\cr +Ss& \v S& 2000\cr +\^{}& semivowel& \cr +YA& Ja, Je& \cr +YU& Ju&\cr}} + + + +\setbox22=\vbox to \ht1{\vskip3.33pt\copy2\vss} +%\setbox33=\vbox to \ht1{\vskip3.33pt\copy3\vss} + +$$ +\hbox to \hsize{\copy1\hfil\copy22} +$$ +} diff --git a/Master/texmf-dist/tex/plain/croatian/ttablb.tex b/Master/texmf-dist/tex/plain/croatian/ttablb.tex new file mode 100644 index 00000000000..87e5c0c8c3a --- /dev/null +++ b/Master/texmf-dist/tex/plain/croatian/ttablb.tex @@ -0,0 +1,55 @@ + +{ +\baselineskip=0.5cm\rm + +\setbox1=\vbox{\halign{\bassv\hfil#\hfil&\quad#\hfil&\quad\hfil#\q\cr +a, x& A&1\cr +b& B& 2\cr +v, V& V& 3\cr +g& G& 4\cr +d& D& 5\cr +e& E& 6\cr +zz& \v Z& 7\cr +%9& {\cyr Z} (zjelo)& 8\cr +z& Z& 9\cr +y& \"I& 10\cr +i, I& I& 20\cr +%& Dd, J& 30\cr +k& K& 40\cr +l& L& 50\cr +m, M& M& 60\cr +n, N& N& 70\cr +}} + + + +\setbox2=\vbox{\halign{\bassv\hfil#\hfil&\quad#\hfil&\quad\hfil#\q\cr +o, O& O& 80\cr +p& P& 90\cr +r& R& 100\cr +s& S& 200\cr +t, T& T& 300\cr +u& U& 400\cr +%F& F& 500\cr +h& H& 600\cr +%Q & $\omega$& 700\cr +ch& \hbox to0pt{\v S\'c, \' C\hss}& 800\cr +c& C& 900\cr +cc, CC& \v C& 1000\cr +ss& \v S& 2000\cr +3, 4& \hbox to 0cm{semivowels\hss}& \cr +ya& Ja, Je& \cr +yu& Ju&\cr +\char'002& \hbox to0cm{nasal ``en''\hss}&\cr +}} + + + +\setbox22=\vbox to \ht1{\vskip3.33pt\copy2\vss} +%\setbox33=\vbox to \ht1{\vskip3.33pt\copy3\vss} + +$$ +\hbox to \hsize{\copy1\hfil\copy22} +$$ +} + diff --git a/Master/texmf-dist/tex/plain/croatian/ttablhc.tex b/Master/texmf-dist/tex/plain/croatian/ttablhc.tex new file mode 100644 index 00000000000..9fc4a1905a2 --- /dev/null +++ b/Master/texmf-dist/tex/plain/croatian/ttablhc.tex @@ -0,0 +1,59 @@ +%\hsize=10cm +\font\hc=hcyr +%\def\cc{\hc\char'034} + +{ +\baselineskip=0.5cm\rm + +\setbox1=\vbox{\halign{\hc\hfil#\hfil&\quad\hfil#\hfil\quad\cr +A& A \cr +B& B \cr +V& V \cr +G& G \cr +D, \char'076, 5& D \cr +%DDD& Dd \cr % \cc -> DD +E& E \cr +ZZ, ZX, \char'017& Zz \cr +9& DZ \cr +Z& Z \cr +I& I \cr +DD, 2& Dj \cr +K& K \cr +L& L \cr +DDL& LJ \cr +M& M \cr +N& N \cr +DDN& NJ \cr +}} + + + +\setbox2=\vbox{\halign{\hc\hfil#\hfil&\quad\hfil#\hfil\quad\cr +O& O \cr +P& P \cr +R& R \cr +S& S \cr +T& T \cr +U& U \cr +F& F \cr +H& H \cr +Q & OT \cr +CH& {\v S\'c, \v C} \cr +C& C \cr +CC& \v C \cr +SS& \v S \cr +\^{}& {semivowel} \cr +J, \&{}& ja \cr +%YA& JA \cr +%YE& JE \cr +YU& ju\cr}} + + + +\setbox22=\vbox to \ht1{\vskip3.33pt\copy2\vss} +%\setbox33=\vbox to \ht1{\vskip3.33pt\copy3\vss} + +$$ +\hbox to \hsize{\copy1\hss\copy22} +$$ +} diff --git a/Master/texmf-dist/tex/plain/croatian/ttablo.tex b/Master/texmf-dist/tex/plain/croatian/ttablo.tex new file mode 100644 index 00000000000..ba50abbd35d --- /dev/null +++ b/Master/texmf-dist/tex/plain/croatian/ttablo.tex @@ -0,0 +1,56 @@ +%\hsize=10cm + +%\font\blj=blj +%\def\tvr{{\cyr\t}\relax} + +{ +\baselineskip=0.5cm\rm + +\setbox1=\vbox{\halign{\nobl\hfil#\hfil&\quad#\hfil&\quad\hfil#\q\cr +A& A&1\cr +B& B& 2\cr +V& V& 3\cr +G& G& 4\cr +D& D& 5\cr +E& E& 6\cr +Zz& \v Z& 7\cr +9& Dz& 8\cr +Z& Z& 9\cr +Y& \"I& 10\cr +I& I& 20\cr +J& Dj& 30\cr +K& K& 40\cr +L& L& 50\cr +M& M& 60\cr +N& N& 70\cr +}} + + + +\setbox2=\vbox{\halign{\nobl\hfil#\hfil&\quad#\hfil&\quad\hfil#\q\cr +O& O& 80\cr +P& P& 90\cr +R& R& 100\cr +S& S& 200\cr +T& T& 300\cr +U& U& 400\cr +F& F& 500\cr +H& H& 600\cr +Q & $\omega$& 700\cr +Ch& \v S\'c, \' C& 800\cr +C& C& 900\cr +Cc& \v C& 1000\cr +Ss& \v S& 2000\cr +4, 7& \hbox to 1cm{semivowels\hss}& \cr +W& Ja, Je& \cr +2& Ju&\cr}} + + + +\setbox22=\vbox to \ht1{\vskip3.33pt\copy2\vss} +%\setbox33=\vbox to \ht1{\vskip3.33pt\copy3\vss} + +$$ +\hbox to \hsize{\copy1\hfil\copy22} +$$ +} diff --git a/Master/texmf-dist/tex/plain/croatian/ttabloku.tex b/Master/texmf-dist/tex/plain/croatian/ttabloku.tex new file mode 100644 index 00000000000..3b508ba60a6 --- /dev/null +++ b/Master/texmf-dist/tex/plain/croatian/ttabloku.tex @@ -0,0 +1,57 @@ +%\hsize=10cm + +%\font\blj=blj +\font\kur=kur +%\def\tvr{{\cyr\t}\relax} + +{ +\baselineskip=0.7cm\rm + +\setbox1=\vbox{\halign{\kur\hfil#\hfil&\q\mgl\hfil#\hfil&\quad#\hfil&\quad\hfil#\q\cr +A& A& A&1\cr +B& B& B& 2\cr +V& V& V& 3\cr +G& G& G& 4\cr +D& D& D& 5\cr +E& E& E& 6\cr +Zz& ZZ& \v Z& 7\cr +9& 9& Dz& 8\cr +Z& Z& Z& 9\cr +Y& Y& \"I& 10\cr +I& I& I& 20\cr +J& J& J& 30\cr +K& K& K& 40\cr +L& L& L& 50\cr +M& M& M& 60\cr +N& N& N& 70\cr +}} + + + +\setbox2=\vbox{\halign{\kur\hfil#\hfil&\q\mgl\hfil#\hfil&\quad#\hfil&\quad\hfil#\q\cr +O& O& O& 80\cr +P& P& P& 90\cr +R& R& R& 100\cr +S& S& S& 200\cr +T& T& T& 300\cr +U& U& U& 400\cr +F& F& F& 500\cr +H& H& H& 600\cr +Q& Q& $\omega$& 700\cr +Ch& Ch& \v S\'c, \' C& 800\cr +C& C& C& 900\cr +Cc& Cc& \v C& 1000\cr +Ss& Ss& \v S& 2000\cr +%6& {\blj\^{}}& poluglas (jer)& \cr +\char'136& Ya& Ja, Je& \cr +\char'137& Yu& Ju&\cr}} + + + +\setbox22=\vbox to \ht1{\vskip3.33pt\copy2\vss} +%\setbox33=\vbox to \ht1{\vskip3.33pt\copy3\vss} + +$$ +\hbox to \hsize{\copy1\hfil\copy22} +$$ +} diff --git a/Master/texmf-dist/tex/plain/croatian/ttlis.tex b/Master/texmf-dist/tex/plain/croatian/ttlis.tex new file mode 100644 index 00000000000..4633d3ce1af --- /dev/null +++ b/Master/texmf-dist/tex/plain/croatian/ttlis.tex @@ -0,0 +1,99 @@ + +%\input llig +{ +\baselineskip=.7cm +%\font\gg=ggv + + +%\obeylines + +\setbox1=\vbox{\halign{\hfil\vgl #\hfil&\quad\hfil#\hfil\cr +\am& am\cr +\bll& bl\cr +\bo& bo\cr +\br& br\cr +\go& go\cr +\gr& gr\cr +\ho& ho\cr +\hr& hr\cr +\il& il\cr +\ili& ili\cr +\itt& it\cr +\izze& i\v ze\cr +\jazze& ja\v ze\cr +%\ggvv\char'101& jazze\cr +\jeje& jeje\cr +%\ggvv\char'075& jeje\cr +\jezze& je\v ze\cr +}} + +\setbox2=\vbox{\halign{\hfil\vgl #\hfil&\quad\hfil#\hfil\cr +\jur& jur\cr +\jutr& jutr\cr +\ko& ko\cr +\li& li\cr +\lo& lo\cr +\lt& lt\cr +\lv& lv\cr +\ly& ly\cr +\lju& lju\cr +\ljud& ljud\cr +\ml& ml\cr +\mlc& ml\v c\cr +\mo& mo\cr +\ms& ms\cr +\mc& m\v z\cr +\myl& myl\cr +}} + + +\setbox3=\vbox{\halign{\hfil\vgl #\hfil&\quad\hfil#\hfil\cr +\no& no\cr +\ol& ol\cr +\oli& oli\cr +\olju& olju\cr +\ot& ot\cr +\pl& pl\cr +\po& po\cr +\pod& pod\cr +\pot& pot\cr +\poto& poto\cr +\potr& potr\cr +\povr& povr\cr +\pr& pr\cr +\prv& prv\cr +\pt& pt\cr +\so& so\cr +}} + + +\setbox4=\vbox{\halign{\hfil\vgl #\hfil&\quad\hfil#\hfil\cr +\ti& ti\cr +\tl& tl\cr +\tto& to\cr +\tr& tr\cr +% +\tv& tv\cr +\tvo& tvo\cr +\tvr& tvr\cr +\vd& vd\cr +\vl& vl\cr +\vo& vo\cr +\vod& vod\cr +\vr& vr\cr +\vt& vt\cr +\zl& zl\cr +\zo& zo\cr +\zr& zr\cr +}} + +%\setbox5=\vbox{\halign{\hfil\vgl #\hfil&\quad\hfil#\hfil\cr +%}} + +$$ +\hbox +to\hsize{\copy1\hfil\copy2\hfil\copy3\hfil\copy4} +$$ + +} + diff --git a/Master/texmf-dist/tex/plain/cweb/pdfXcwebmac.tex b/Master/texmf-dist/tex/plain/cweb/pdfXcwebmac.tex new file mode 100644 index 00000000000..6906f7ff0c0 --- /dev/null +++ b/Master/texmf-dist/tex/plain/cweb/pdfXcwebmac.tex @@ -0,0 +1,37 @@ +% standard macros for CWEB listings (in addition to plain.tex) +% Version 2.4 --- Don Knuth, June 1992 +% Version 2.4 [p5] --- Hans-Hermann Bode, July 1992 +% Version 2.7 --- Don Knuth, July 1992 +% Version 2.7 [p6] --- Hans-Hermann Bode, September 1992 +% Version 2.8 --- Don Knuth, September 1992 +% Version 2.8 [p7] --- Andreas Scherer, October 1993 +% Version 3.0 --- Don Knuth, June 1993 +% Version 3.0 [p8c] --- Hans-Hermann Bode, June 1993 +% Version 3.0 [p8d] --- Andreas Scherer, October 1993 +% Version 3.0 [p8e] --- Andreas Scherer, November 1993 +% Version 3.1 [p9b] --- Andreas Scherer, January 1994 +% Version 3.1 [p9c] --- Andreas Scherer, June 1994 +% Version 3.2 [p10] --- Andreas Scherer, September 1994 +% Version 3.3 [p11] --- Andreas Scherer, December 1994 +% Version 3.3 [p11a] --- Andreas Scherer, January 1995 +% Version 3.3 [p11b] --- Andreas Scherer, March 1995 +% Version 3.4 [p13] --- Andreas Scherer, May 1996 +% Version 3.4 [p14] --- Andreas Scherer, March 1997 + +\ifx\undefined\documentclass\else\endinput\fi % LaTeX will use other macros + +\input pdfcwebmac.tex + +\xdef\fmtversion{\fmtversion+CWEB3.4[p14]} + +\def\Cpp{\CPLUSPLUS/} % for backward compatibility + +\font\tenss=cmss10 \let\cmntfont\tenss % comment font + +\def\C#1{\5\5\quad$\triangleright\,${\cmntfont#1}$\,\triangleleft$} +\def\SHC#1{\5\5\quad$\diamond\,${\cmntfont#1}} + +\let\K=\leftarrow % "honest" alternative to standard assignment operator + +\def\afourshift{\pageshift=-0.5truecm} + % shift righthand pages wrt lefthand pages diff --git a/Master/texmf-dist/tex/plain/cweb/pdfcwebmac.tex b/Master/texmf-dist/tex/plain/cweb/pdfcwebmac.tex new file mode 100644 index 00000000000..aa52dae79a4 --- /dev/null +++ b/Master/texmf-dist/tex/plain/cweb/pdfcwebmac.tex @@ -0,0 +1,406 @@ +% standard macros for CWEB listings (in addition to plain.tex) +% Version 3.1 --- September 1994 +% Modified for use with "pdftex" by Andreas Scherer, April 1997 +\ifx\documentstyle\undefined\else\endinput\fi % LaTeX will use other macros +\xdef\fmtversion{\fmtversion+HyperCWEB3.1} + +\let\:=\. % preserve a way to get the dot accent + % (all other accents will still work as usual) + +\parskip 0pt % no stretch between paragraphs +\parindent 1em % for paragraphs and for the first line of C text + +\font\ninerm=cmr9 +\let\mc=\ninerm % medium caps +\def\CEE/{{\mc C\spacefactor1000}} +\def\UNIX/{{\mc U\kern-.05emNIX\spacefactor1000}} +\def\TEX/{\TeX} +\def\CPLUSPLUS/{{\mc C\PP\spacefactor1000}} +\def\Cee{\CEE/} % for backward compatibility +\def\9#1{} +\font\eightrm=cmr8 +\let\sc=\eightrm % small caps (NOT a caps-and-small-caps font) +\let\mainfont=\tenrm +\let\cmntfont\tenrm +%\font\tenss=cmss10 \let\cmntfont\tenss % alternative comment font +\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 double space after sentences + +\def\\#1{\leavevmode\hbox{\it#1\/\kern.05em}} % italic type for identifiers +\def\|#1{\leavevmode\hbox{$#1$}} % one-letter identifiers look better this way +\def\{\leavevmode\hbox{\bf + \def\_{\kern.04em\vbox{\hrule width.3em height .6pt}\kern.08em}% + #1\/\kern.05em}} % boldface type for reserved words +\def\.#1{\leavevmode\hbox{\tentex % typewriter type for strings + \let\\=\BS % backslash 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 + \let\^=\CF % circumflex in a string + #1\kern.05em}} +\def\){\discretionary{\hbox{\tentex\BS}}{}{}} +\def\AT{@} % at sign for control text (not needed in versions >= 2.9) +\def\ATL{\par\noindent\bgroup\catcode`\_=12 \postATL} % print @l in limbo +\def\postATL#1 #2 {\bf letter \\{\uppercase{\char"#1}} + tangles as \tentex "#2"\egroup\par} +\def\noATL#1 #2 {} +\def\noatl{\let\ATL=\noATL} % suppress output from @l +\def\ATH{\X\kern-.5em:Preprocessor definitions\X} +\let\PB=\relax % hook for program brackets |...| in TeX part or section name + +\chardef\AM=`\& % ampersand character in a string +\chardef\BS=`\\ % backslash in a string +\chardef\LB=`\{ % left brace in a string +\chardef\RB=`\} % right brace 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 +\chardef\CF=`\^ % circumflex character in a string + +\newbox\PPbox % symbol for ++ +\setbox\PPbox=\hbox{\kern.5pt\raise1pt\hbox{\sevenrm+\kern-1pt+}\kern.5pt} +\def\PP{\copy\PPbox} +\newbox\MMbox \setbox\MMbox=\hbox{\kern.5pt\raise1pt\hbox{\sevensy\char0 + \kern-1pt\char0}\kern.5pt} +\def\MM{\copy\MMbox} +\newbox\MGbox % symbol for -> +\setbox\MGbox=\hbox{\kern-2pt\lower3pt\hbox{\teni\char'176}\kern1pt} +\def\MG{\copy\MGbox} +\def\MRL#1{\mathrel{\let\K==#1}} +%\def\MRL#1{\KK#1}\def\KK#1#2{\buildrel\;#1\over{#2}} +\let\GG=\gg +\let\LL=\ll +\let\NULL=\Lambda +\mathchardef\AND="2026 % bitwise and; also \& (unary operator) +\let\OR=\mid % bitwise or +\let\XOR=\oplus % bitwise exclusive or +\def\CM{{\sim}} % bitwise complement +\newbox\MODbox \setbox\MODbox=\hbox{\eightrm\%} +\def\MOD{\mathbin{\copy\MODbox}} +\def\DC{\kern.1em{::}\kern.1em} % symbol for :: +\def\PA{\mathbin{.*}} % symbol for .* +\def\MGA{\mathbin{\MG*}} % symbol for ->* +\def\this{\&{this}} + +\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 +\def\8{\hskip-\ind em\hskip 2em} % no indentation + +\newcount\gdepth % depth of current major group, plus one +\newcount\secpagedepth +\secpagedepth=3 % page breaks will occur for depths -1, 0, and 1 +\newtoks\gtitle % title of current major group +\newskip\intersecskip \intersecskip=12pt minus 3pt % space between sections +\let\yskip=\smallskip +\def\?{\mathrel?} + +% Some changes for pdftex +%\def\note#1#2.{\Y\noindent{\hangindent2em\baselineskip10pt\eightrm#1~#2.\par}} +\def\note#1#2.{\Y\noindent{\hangindent2em\baselineskip10pt\eightrm#1~\pdfnote#2..\par}} +\pdfoutput=1 +\pdfcompresslevel=9 +\input pdfcolor + +\newtoks\toksA +\newtoks\toksB +\newtoks\toksC +\newtoks\toksD +\newcount\countA +\countA=0 +\def\pdfnote#1.{\setbox0=\hbox{\toksA={#1.}\toksB={}\maketoks}\the\toksA} +\def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} +\def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} +\def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} +\def\maketoks{% + \expandafter\poptoks\the\toksA|ENDTOKS| + \ifx\first0\adn0 + \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 + \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 + \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 + \else + \ifnum0=\countA\else\makenote\fi + \ifx\first.\let\next=\done\else + \let\next=\maketoks + \addtokens{\toksB}{\the\toksD} + \ifx\first,\addtokens{\toksB}{\space}\fi + \fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \next +} +\def\n#1{\pdfannotlink attr{/Border [0 0 0]} goto num #1 + \BlueGreen #1\Black\pdfendlink} +\def\makenote{\addtokens{\toksB}% + {\noexpand\n{\the\toksC}}\toksC={}\global\countA=0} +\def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} +% End of pdftex changes + +\def\lapstar{\rlap{*}} + +% Some changes for pdftex +%\def\stsec{\rightskip=0pt % get out of C mode (cf. \B) +% \sfcode`;=1500 \pretolerance 200 \hyphenpenalty 50 \exhyphenpenalty 50 +% \noindent{\let\*=\lapstar\bf\secstar.\quad}} +\def\stsec{\rightskip=0pt % get out of C mode (cf. \B) + \sfcode`;=1500 \pretolerance 200 \hyphenpenalty 50 \exhyphenpenalty 50 + \noindent{\let\*=\lapstar\bf\secstar.\quad}% + {\let\*=\empty\pdfdest num \secstar fitbh}} +% End of pdftex changes + +\let\startsection=\stsec +\def\defin#1{\global\advance\ind by 2 \1\&{#1 } } % begin `define' or `format' +\def\A{\note{See also section}} % xref for doubly defined section name +\def\As{\note{See also sections}} % xref for multiply defined section name +\def\B{\rightskip=0pt plus 100pt minus 10pt % go into C mode + \sfcode`;=3000 + \pretolerance 10000 + \hyphenpenalty 1000 % so strings can be broken (discretionary \ is inserted) + \exhyphenpenalty 10000 + \global\ind=2 \1\ \unskip} +\def\C#1{\5\5\quad$/\ast\,${\cmntfont #1}$\,\ast/$} +\let\SHC\C % "// short comments" treated like "/* ordinary comments */" +%\def\C#1{\5\5\quad$\triangleright\,${\cmntfont#1}$\,\triangleleft$} +%\def\SHC#1{\5\5\quad$\diamond\,${\cmntfont#1}} +\def\D{\defin{\#define}} % macro definition +\let\E=\equiv % equivalence sign +\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 +% \H is long Hungarian umlaut accent +\let\I=\ne % unequal sign +\def\J{\.{@\&}} % TANGLE's join operation +\let\K== % assignment operator +%\let\K=\leftarrow % "honest" alternative to standard assignment operator +% \L is Polish letter suppressed-L +\outer\def\M#1{\MN{#1}\ifon\vfil\penalty-100\vfilneg % beginning of section + \vskip\intersecskip\startsection\ignorespaces} +\outer\def\N#1#2#3.{\gdepth=#1\gtitle={#3}\MN{#2}% beginning of starred section + \ifon\ifnum#1<\secpagedepth \vfil\eject % force page break if depth is small + \else\vfil\penalty-100\vfilneg\vskip\intersecskip\fi\fi + \message{*\secno} % progress report + \edef\next{\write\cont{\ZZ{#3}{#1}{\secno}% write to contents file + {\noexpand\the\pageno}}}\next % \ZZ{title}{depth}{sec}{page} + \ifon\startsection{\bf#3.\quad}\ignorespaces} +\def\MN#1{\par % common code for \M, \N + {\xdef\secstar{#1}\let\*=\empty\xdef\secno{#1}}% remove \* from section name + \ifx\secno\secstar \onmaybe \else\ontrue \fi + \mark{{{\tensy x}\secno}{\the\gdepth}{\the\gtitle}}} +% each \mark is {section reference or null}{depth plus 1}{group title} +% \O is Scandinavian letter O-with-slash +% \P is paragraph sign +\def\Q{\note{This code is cited in section}} % xref for mention of a section +\def\Qs{\note{This code is cited in sections}} % xref for mentions of a section +\let\R=\lnot % logical not +% \S is section sign +\def\T#1{\leavevmode % octal, hex or decimal constant + \hbox{$\def\?{\kern.2em}% + \def\$##1{\egroup_{\,\rm##1}\bgroup}% suffix to constant + \def\_{\cdot 10^{\aftergroup}}% power of ten (via dirty trick) + \let\~=\oct \let\^=\hex {#1}$}} +\def\U{\note{This code is used in section}} % xref for use of a section +\def\Us{\note{This code is used in sections}} % xref for uses of a section +\let\V=\lor % logical or +\let\W=\land % logical and + +% Some changes for pdftex +%\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\X#1:#2\X{\ifmmode\gdef\XX{\null$\null}\else\gdef\XX{}\fi % section name + \XX$\langle\,${#2\eightrm\kern.5em\pdfnote#1.}$\,\rangle$\XX} +% End of pdftex changes + +\def\Y{\par\yskip} +\let\Z=\le +\let\ZZ=\let % now you can \write the control sequence \ZZ +\let\*=* + +%\def\oct{\hbox{\rm\char'23\kern-.2em\it\aftergroup\?\aftergroup}} % WEB style +%\def\hex{\hbox{\rm\char"7D\tt\aftergroup}} % WEB style +\def\oct{\hbox{$^\circ$\kern-.1em\it\aftergroup\?\aftergroup}}% CWEB style +\def\hex{\hbox{$^{\scriptscriptstyle\#}$\tt\aftergroup}} % CWEB style +\def\vb#1{\leavevmode\hbox{\kern2pt\vrule\vtop{\vbox{\hrule + \hbox{\strut\kern2pt\.{#1}\kern2pt}} + \hrule}\vrule\kern2pt}} % verbatim string + +\def\onmaybe{\let\ifon=\maybe} \let\maybe=\iftrue +\newif\ifon \newif\iftitle \newif\ifpagesaved + +\def\lheader{\mainfont\the\pageno\eightrm\qquad\grouptitle\hfill\title\qquad + \mainfont\topsecno} % top line on left-hand pages +\def\rheader{\mainfont\topsecno\eightrm\qquad\title\hfill\grouptitle + \qquad\mainfont\the\pageno} % top line on right-hand pages +\def\grouptitle{\let\i=I\let\j=J\uppercase\expandafter{\expandafter + \takethree\topmark}} +\def\topsecno{\expandafter\takeone\topmark} +\def\takeone#1#2#3{#1} +\def\taketwo#1#2#3{#2} +\def\takethree#1#2#3{#3} +\def\nullsec{\eightrm\kern-2em} % the \kern-2em cancels \qquad in headers + +\let\page=\pagebody \raggedbottom +% \def\page{\box255 }\normalbottom % faster, but loses plain TeX footnotes +\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} + +\gtitle={\.{CWEB} output} % this running head is reset by starred sections +\mark{\noexpand\nullsec0{\the\gtitle}} +\def\title{\expandafter\uppercase\expandafter{\jobname}} +\def\topofcontents{\centerline{\titlefont\title}\vskip.7in + \vfill} % this material will start the table of contents page +\def\botofcontents{\vfill + \centerline{\covernote}} % this material will end the table of contents page +\def\covernote{} +\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{\jobname.toc} % file that gets table of contents info +\def\readcontents{\input \contentsfile} +\def\readindex{\input \jobname.idx} +\def\readsections{\input \jobname.scn} + +\newwrite\cont +\output{\setbox0=\page % the first page is garbage + \openout\cont=\contentsfile + \write\cont{\catcode `\noexpand\@=11\relax} % \makeatletter + \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 + \def\page{\box255 } \normalbottom + \write\cont{} % ensure that the contents file isn't empty + \write\cont{\catcode `\noexpand\@=12\relax} % \makeatother + \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 +% +% Some changes for pdftex +% \outer\def\I##1, {\par\hangindent2em\noindent##1:\kern1em} % index entry + \outer\def\I##1, {\par\hangindent2em\noindent##1:\kern1em\pdfnote} % index entry +% End of pdftex changes +% + \def\[##1]{$\underline{##1}$} % underlined index item + \rm \rightskip0pt plus 2.5em \tolerance 10000 \let\*=\lapstar + \hyphenpenalty 10000 \parindent0pt + \readindex} +\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\grouptitle{NAMES OF THE SECTIONS} + \let\topsecno=\nullsec + \message{Section names:} + \output={\normaloutput\page\lheader\rheader} + \setpage +% +% Some changes for pdftex +% \def\note##1##2.{\quad{\eightrm##1~##2.}} + \def\note##1##2.{\quad{\eightrm##1~\pdfnote##2..}} +% End of pdftex changes +% + \def\Q{\note{Cited in section}} % crossref for mention of a section + \def\Qs{\note{Cited in sections}} % crossref for mentions of a section + \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\I{\par\hangindent 2em}\let\*=* + \readsections} +\def\con{\par\vfill\eject % finish the section names +% \ifodd\pageno\else\titletrue\null\vfill\eject\fi % for duplex printers + \rightskip 0pt \hyphenpenalty 50 \tolerance 200 + \setpage \output={\normaloutput\page\lheader\rheader} + \titletrue % prepare to output the table of contents + \pageno=\contentspagenumber + \def\grouptitle{TABLE OF CONTENTS} + \message{Table of contents:} + \topofcontents + \line{\hfil Section\hbox to3em{\hss Page}} + \let\ZZ=\contentsline + \readcontents\relax % read the contents info + \botofcontents \end} % print the contents page(s) and terminate +% +% Some changes for pdftex +%\def\contentsline#1#2#3#4{\ifnum#2=0 \smallbreak\fi +% \line{\consetup{#2}#1 +% \rm\leaders\hbox to .5em{.\hfil}\hfil\ #3\hbox to3em{\hss#4}}} +\def\contentsline#1#2#3#4{\ifnum#2=0 \smallbreak\fi + \line{\consetup{#2}\pdfoutline goto num #3{#1} + \pdfannotlink attr{/Border [0 0 0]} goto num #3 + \BlueGreen #1 \rm\leaders\hbox to .5em{.\hfil}\hfil\ #3\pdfendlink + \Black\hbox to3em{\hss#4}}} +\pdfcatalog pagemode{/UseOutlines} +% End of pdftex changes +% +\def\consetup#1{\ifcase#1 \bf % depth -1 (@**) + \or % depth 0 (@*) + \or \hskip2em % depth 1 (@*1) + \or \hskip4em % depth 2 (@*2) + \or \hskip6em % depth 3 (@*3) + \or \hskip8em % depth 4 (@*4) + \or \hskip10em % depth 5 (@*5) + \else \hskip12em \fi} % depth 6 or more +\def\noinx{\let\inx=\end} % no indexes or table of contents +\def\nosecs{\let\FIN=\fin \def\fin{\let\parfillskip=\end \FIN}} + % no index of section names or table of contents +\def\nocon{\let\con=\end} % no table of contents +\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} +\newcount\twodigits +\def\hours{\twodigits=\time \divide\twodigits by 60 \printtwodigits + \multiply\twodigits by-60 \advance\twodigits by\time :\printtwodigits} +\def\gobbleone1{} +\def\printtwodigits{\advance\twodigits100 + \expandafter\gobbleone\number\twodigits + \advance\twodigits-100 } +\def\TeX{{\ifmmode\it\fi + \leavevmode\hbox{T\kern-.1667em\lower.424ex\hbox{E}\hskip-.125em X}}} +\def\,{\relax\ifmmode\mskip\thinmuskip\else\thinspace\fi} +\def\datethis{\def\startsection{\leftline{\sc\today\ at \hours}\bigskip + \let\startsection=\stsec\stsec}} + % say `\datethis' in limbo, to get your listing timestamped before section 1 +\def\datecontentspage{% + \def\topofcontents{\leftline{\sc\today\ at \hours}\bigskip + \centerline{\titlefont\title}\vfill}} % timestamps the contents page diff --git a/Master/texmf-dist/tex/plain/cweb/pdfdcwebmac.tex b/Master/texmf-dist/tex/plain/cweb/pdfdcwebmac.tex new file mode 100644 index 00000000000..52188ce6607 --- /dev/null +++ b/Master/texmf-dist/tex/plain/cweb/pdfdcwebmac.tex @@ -0,0 +1,113 @@ +% standard macros for CWEB listings (in addition to plain.tex) +% modified for use with "tex2pdf" --- March 1997 +% Version 2.0 --- Don Knuth, July 1990 +% Version 2.0 [german] --- Carsten Steger, October 1991 +% Version 2.0 [german] --- Andreas Scherer, February 1993 +% Version 2.7 --- Don Knuth, July 1992 +% Version 2.7 [p6c] --- Andreas Scherer, September 1993 +% Version 2.8 --- Don Knuth, September 1992 +% Version 2.8 [german] --- Carsten Steger, 1993 +% Version 2.8 [p7] --- Andreas Scherer, October 1993 +% Version 3.0 --- Don Knuth, June 1993 +% Version 3.0 [p8e] --- Andreas Scherer, November 1993 +% Version 3.1 [p9b] --- Andreas Scherer, January 1994 +% Version 3.1 [p9c] --- Andreas Scherer, March 1994 +% Version 3.1 [p9d] --- Andreas Scherer, July 1994 +% Version 3.2 [p10] --- Andreas Scherer, August 1994 +% Version 3.2 [p10b] --- Andreas Scherer, October 1994 +% Version 3.3 [p11a] --- Andreas Scherer, December 1994 +% Version 3.3 [p11b] --- Andreas Scherer, March 1995 +% Version 3.4 [p13] --- Andreas Scherer, August 1995 +% Version 3.4 [p14] --- Andreas Scherer, March 1997 + +\ifx\undefined\documentclass\else\endinput\fi % LaTeX will use other macros + +\input pdfXcwebmac.tex + +% In case `german.sty' has been loaded, we have to redefine the `\3' +% macro for an optional break within a statement. This should be the +% first command after `\input german.sty' in your CWEB source. +\def\originalthree{\def\3##1{\hfil\penalty##10\hfilneg}} + +\def\.#1{\leavevmode\hbox{\tentex % typewriter type for strings + \ifx\Cstringchars\undefined\else\Cstringchars\fi % special string characters + \let\\=\BS % backslash 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 + \let\^=\CF % circumflex in a string + \ifx\originalTeX\undefined\else\originalTeX\fi#1\kern.05em}} + +\def\postATL#1 #2 {\bf Buchstabe \\{\uppercase{\char"#1}} + wird getangled als \tentex "#2"\egroup\par} +\def\ATH{\X\kern-.5em:Pr\"aprozessor Definitionen\X} + +\def\A{\note{Siehe auch Abschnitt}} % xref for doubly defined section name +\def\As{\note{Siehe auch die Abschnitte}} % xref for multiply defined section name + +\def\ET{ und~} % conjunction between two section numbers +\def\ETs{ und~} % conjunction between the last two of several section numbers + +\def\Q{\note{Dieser Programmteil wird zitiert in Abschnitt}} % xref for mention of a section +\def\Qs{\note{Dieser Programmteil wird zitiert in den Abschnitten}} % xref for mentions of a section + +\def\U{\note{Dieser Programmteil wird verwendet in Abschnitt}} % xref for use of a section +\def\Us{\note{Dieser Programmteil wird verwendet in den Abschnitten}} % xref for uses of a section + +\gtitle={\.{CWEB} Ausgabe} % this running head is reset by starred sections +\mark{\noexpand\nullsec0{\the\gtitle}} + +\def\ch{\note{Die folgenden Abschnitte sind vom Change-File ver\"andert worden:} + \let\*=\relax} + +\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\grouptitle{ABSCHNITTSNAMEN} + \let\topsecno=\nullsec + \message{Abschnittsnamen:} + \output={\normaloutput\page\lheader\rheader} + \setpage +% +% Change for PDFTeX +% \def\note##1##2.{\quad{\eightrm##1~##2.}} + \def\note##1##2.{\quad{\eightrm##1~\pdfnote##2..}} +% End of PDFTeX change +% + \def\Q{\note{Zitiert in Abschnitt}} % crossref for mention of a section + \def\Qs{\note{Zitiert in den Abschnitten}} % crossref for mentions of a section + \def\U{\note{Verwendet in Abschnitt}} % crossref for use of a section + \def\Us{\note{Verwendet in den Abschnitten}} % crossref for uses of a section + \def\I{\par\hangindent 2em}\let\*=* + \readsections} +\def\con{\par\vfill\eject % finish the section names +% \ifodd\pageno\else\titletrue\null\vfill\eject\fi % for duplex printers + \rightskip 0pt \hyphenpenalty 50 \tolerance 200 + \setpage \output={\normaloutput\page\lheader\rheader} + \titletrue % prepare to output the table of contents + \pageno=\contentspagenumber + \def\grouptitle{INHALTSVERZEICHNIS:} + \message{Inhaltsverzeichnis:} + \topofcontents + \line{\hfil Abschnitt\hbox to3em{\hss Seite}} + \let\ZZ=\contentsline + \readcontents\relax % read the contents info + \botofcontents \end} % print the contents page(s) and terminate +\def\today{\number\day.~\ifcase\month\or + Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or + Juli\or August\or September\or Oktober\or November\or Dezember\fi + \space\number\year} +\newcount\twodigits +\def\hours{\twodigits=\time \divide\twodigits by60 \printtwodigits + \null\space\sc Uhr\space % distinguish between time and year + \multiply\twodigits by-60 \advance\twodigits by\time \printtwodigits} +\def\datethis{\def\startsection{\leftline{\sc\today\ um \hours}\bigskip + \let\startsection=\stsec\stsec}} + % say `\datethis' in limbo, to get your listing timestamped before section 1 +\def\datecontentspage{% + \def\topofcontents{\leftline{\sc\today\ um \hours}\bigskip + \centerline{\titlefont\title}\vfill}} % timestamps the contents page diff --git a/Master/texmf-dist/tex/plain/cweb/pdffcwebmac.tex b/Master/texmf-dist/tex/plain/cweb/pdffcwebmac.tex new file mode 100644 index 00000000000..db06e2f7e7e --- /dev/null +++ b/Master/texmf-dist/tex/plain/cweb/pdffcwebmac.tex @@ -0,0 +1,115 @@ +% standard macros for CWEB listings (in addition to plain.tex) +% modified for use with "tex2pdf" --- March 1997 +% Version 2.0 --- Don Knuth, July 1990 +% Version 2.0 [german] --- Carsten Steger, October 1991 +% Version 2.0 [german] --- Andreas Scherer, February 1993 +% Version 2.7 --- Don Knuth, July 1992 +% Version 2.7 [p6c] --- Andreas Scherer, September 1993 +% Version 2.8 --- Don Knuth, September 1992 +% Version 2.8 [german] --- Carsten Steger, 1993 +% Version 2.8 [p7] --- Andreas Scherer, October 1993 +% Version 3.0 --- Don Knuth, June 1993 +% Version 3.0 [p8e] --- Andreas Scherer, November 1993 +% Version 3.1 [p9b] --- Andreas Scherer, January 1994 +% Version 3.1 [p9c] --- Andreas Scherer, March 1994 +% Version 3.1 [p9d] --- Andreas Scherer, July 1994 +% Version 3.2 [p10] --- Andreas Scherer, July 1994 +% Version 3.2 [p10a] --- Denis B. Roegel, September 1994 +% Version 3.3 [p10b] --- Andreas Scherer, October 1994 +% Version 3.3 [p11b] --- Andreas Scherer, March 1995 +% Version 3.4 [p13] --- Andreas Scherer, August 1995 +% Version 3.4 [p14] --- Andreas Scherer, March 1997 + +% french translations --- Denis Roegel, 18 September 1994 + +\ifx\undefined\documentclass\else\endinput\fi % LaTeX will use other macros + +\input pdfXcwebmac.tex + +\def\.#1{\leavevmode\hbox{\tentex % typewriter type for strings + \ifx\Cstringchars\undefined\else\Cstringchars\fi % special string characters + \let\\=\BS % backslash 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 + \let\^=\CF % circumflex in a string + #1\kern.05em}} + +\def\postATL#1 #2 {\bf La lettre \\{\uppercase{\char"#1}} + est \string`\string`tanglee\string'\string' en \tentex "#2"\egroup\par} +\def\ATH{\X\kern-.5em:D\'efinitions du pr\'eprocesseur\X} + +\def\A{\note{Voir aussi la section}} % xref for doubly defined section name +\def\As{\note{Voir aussi les sections}} % xref for multiply defined + % section name + +\def\ET{ et~} % conjunction between two section numbers +\def\ETs{ et~} % conjunction between the last two of several section numbers + +\def\Q{\note{Cette partie du programme est cit\'ee dans la section}} + % xref for mention of a section +\def\Qs{\note{Cette partie du programme est cit\'ee dans les sections}} + % xref for mentions of a section + +\def\U{\note{Cette partie du programme est utilis\'ee dans la section}} + % xref for use of a section +\def\Us{\note{Cette partie du programme est utilis\'ee dans les sections}} + % xref for uses of a section + +\gtitle={Sortie \.{CWEB}} % this running head is reset by starred sections +\mark{\noexpand\nullsec0{\the\gtitle}} + +\def\ch{\note{Les sections suivantes ont \'et\'e modifi\'ees dans le + Change-File:}\let\*=\relax} + +\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\grouptitle{NOMS DES SECTIONS} + \let\topsecno=\nullsec + \message{Noms des sections:} + \output={\normaloutput\page\lheader\rheader} + \setpage +% +% Change for PDFTeX +% \def\note##1##2.{\quad{\eightrm##1~##2.}} + \def\note##1##2.{\quad{\eightrm##1~\pdfnote##2..}} +% End of PDFTeX change +% + \def\Q{\note{Cit\'e dans la section}} % crossref for mention of a section + \def\Qs{\note{Cit\'e dans les sections}} % crossref for mentions of a section + \def\U{\note{Utilis\'e dans la section}} % crossref for use of a section + \def\Us{\note{Utilis\'e dans les sections}} % crossref for uses of a section + \def\I{\par\hangindent 2em}\let\*=* + \readsections} +\def\con{\par\vfill\eject % finish the section names +% \ifodd\pageno\else\titletrue\null\vfill\eject\fi % for duplex printers + \rightskip 0pt \hyphenpenalty 50 \tolerance 200 + \setpage \output={\normaloutput\page\lheader\rheader} + \titletrue % prepare to output the table of contents + \pageno=\contentspagenumber + \def\grouptitle{SOMMAIRE:} + \message{Sommaire:} + \topofcontents + \line{\hfil Section\hbox to3em{\hss Page}} + \let\ZZ=\contentsline + \readcontents\relax % read the contents info + \botofcontents \end} % print the contents page(s) and terminate +\def\today{\number\day.~\ifcase\month\or + Janvier\or F\'evrier\or Mars\or Avril\or Mai\or Juin\or + Juillet\or Ao\^ut\or Septembre\or Octobre\or Novembre\or D\'ecembre\fi + \space\number\year} +\newcount\twodigits +\def\hours{\twodigits=\time \divide\twodigits by60 \printtwodigits + \null\space\sc h\space % distinguish between time and year + \multiply\twodigits by-60 \advance\twodigits by\time \printtwodigits} +\def\datethis{\def\startsection{\leftline{\sc\today\ \`a \hours}\bigskip + \let\startsection=\stsec\stsec}} + % say `\datethis' in limbo, to get your listing timestamped before section 1 +\def\datecontentspage{% + \def\topofcontents{\leftline{\sc\today\ \`a \hours}\bigskip + \centerline{\titlefont\title}\vfill}} % timestamps the contents page diff --git a/Master/texmf-dist/tex/plain/cweb/pdficwebmac.tex b/Master/texmf-dist/tex/plain/cweb/pdficwebmac.tex new file mode 100644 index 00000000000..74f35eaaba3 --- /dev/null +++ b/Master/texmf-dist/tex/plain/cweb/pdficwebmac.tex @@ -0,0 +1,136 @@ +% standard macros for CWEB listings (in addition to plain.tex) +% modified for use with "tex2pdf" --- March 1997 +% Version 2.0 --- Don Knuth, July 1990 +% Version 2.0 [german] --- Carsten Steger, October 1991 +% Version 2.0 [german] --- Andreas Scherer, February 1993 +% Version 2.7 --- Don Knuth, July 1992 +% Version 2.7 [p6c] --- Andreas Scherer, September 1993 +% Version 2.8 --- Don Knuth, September 1992 +% Version 2.8 [german] --- Carsten Steger, 1993 +% Version 2.8 [p7] --- Andreas Scherer, October 1993 +% Version 3.0 --- Don Knuth, June 1993 +% Version 3.0 [p8e] --- Andreas Scherer, November 1993 +% Version 3.1 [p9b] --- Andreas Scherer, January 1994 +% Version 3.1 [p9c] --- Andreas Scherer, March 1994 +% Version 3.1 [p9d] --- Andreas Scherer, July 1994 +% Version 3.2 [p10] --- Andreas Scherer, July 1994 +% Version 3.2 [p10a] --- Giuseppe Ghibò, September 1994 +% Version 3.2 [p10b] --- Andreas Scherer, October 1994 +% Version 3.3 [p11b] --- Andreas Scherer, March 1995 +% Version 3.4 [p13] --- Andreas Scherer, August 1995 +% Version 3.4 [p14] --- Andreas Scherer, March 1997 + +\ifx\undefined\documentclass\else\endinput\fi % LaTeX will use other macros + +\input pdfXcwebmac.tex + +\def\.#1{\leavevmode\hbox{\tentex % typewriter type for strings + \ifx\Cstringchars\undefined\else\Cstringchars\fi % special string characters + \let\\=\BS % backslash 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 + \let\^=\CF % circumflex in a string + #1\kern.05em}} + +\def\postATL#1 #2 {\bf lettera \\{\uppercase{\char"#1}} + tangles as \tentex "#2"\egroup\par} +\def\ATH{\X\kern-.5em:Definizioni preprocessore\X} + +\def\A{\note{Vedi anche sezione}} % xref for doubly defined section name +\def\As{\note{Vedi anche sezioni}} % xref for multiply defined section name + +\def\ET{ e~} % conjunction between two section numbers +\def\ETs{ e~} % conjunction between the last two of several section numbers + +\def\Q{\note{Questo codice \`e citato nella sezione}} % xref for mention of a section +\def\Qs{\note{Questo codice \`e citato nelle sezioni}} % xref for mentions of a section + +\def\U{\note{Questo codice \`e usato nella sezione}} % xref for use of a section +\def\Us{\note{Questo codice \`e usato nelle sezioni}} % xref for uses of a section + +\gtitle={Output \.{CWEB}} % this running head is reset by starred sections +\mark{\noexpand\nullsec0{\the\gtitle}} + +\def\ch{\note{Le seguenti sezioni sono state modificate tramite il change-file:} + \let\*=\relax} + +\def\inx{\par\vskip6pt plus 1fil % we are beginning the index + \def\page{\box255 } \normalbottom + \write\cont{} % ensure that the contents file isn't empty + \write\cont{\catcode `\noexpand\@=12\relax} % \makeatother + \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{Indice Analitico:} + \parskip 0pt plus .5pt +% +% Change for PDFTeX +% \outer\def\I##1, {\par\hangindent2em\noindent##1:\kern1em} % index entry + \outer\def\I##1, {\par\hangindent2em\noindent##1:\kern1em\pdfnote} % index entry +% End of PDFTeX change +% + \def\[##1]{$\underline{##1}$} % underlined index item + \rm \rightskip0pt plus 2.5em \tolerance 10000 \let\*=\lapstar + \hyphenpenalty 10000 \parindent0pt + \readindex} + +\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\grouptitle{NOMI DELLE SEZIONI} + \let\topsecno=\nullsec + \message{Nomi delle sezioni:} + \output={\normaloutput\page\lheader\rheader} + \setpage +% +% Change for PDFTeX +% \def\note##1##2.{\quad{\eightrm##1~##2.}} + \def\note##1##2.{\quad{\eightrm##1~\pdfnote##2..}} +% End of PDFTeX change +% + \def\Q{\note{Citato nella sezione}} % crossref for mention of a section + \def\Qs{\note{Citato nelle sezioni}} % crossref for mentions of a section + \def\U{\note{Usato nella sezione}} % crossref for use of a section + \def\Us{\note{Usato nelle sezioni}} % crossref for uses of a section + \def\I{\par\hangindent 2em}\let\*=* + \readsections} +\def\con{\par\vfill\eject % finish the section names +% \ifodd\pageno\else\titletrue\null\vfill\eject\fi % for duplex printers + \rightskip 0pt \hyphenpenalty 50 \tolerance 200 + \setpage \output={\normaloutput\page\lheader\rheader} + \titletrue % prepare to output the table of contents + \pageno=\contentspagenumber + \def\grouptitle{INDICE} + \message{Indice:} + \topofcontents + \line{\hfil Sezione\hbox to3em{\hss Pag.}} + \let\ZZ=\contentsline + \readcontents\relax % read the contents info + \botofcontents \end} % print the contents page(s) and terminate +\def\today{\number\day\space\ifcase\month\or + gennaio\or febbraio\or marzo\or aprile\or maggio\or giugno\or + luglio\or agosto\or settembre\or ottobre\or novembre\or dicembre\fi + \space\number\year} +\newcount\twodigits +\def\datethis{\def\startsection{\leftline{\sc\today, ore \hours}\bigskip + \let\startsection=\stsec\stsec}} + % say `\datethis' in limbo, to get your listing timestamped before section 1 +\def\datecontentspage{% + \def\topofcontents{\leftline{\sc\today, ore \hours}\bigskip + \centerline{\titlefont\title}\vfill}} % timestamps the contents page diff --git a/Master/texmf-dist/tex/plain/cweb/pdfwebmac.tex b/Master/texmf-dist/tex/plain/cweb/pdfwebmac.tex new file mode 100644 index 00000000000..8bcf2e8281c --- /dev/null +++ b/Master/texmf-dist/tex/plain/cweb/pdfwebmac.tex @@ -0,0 +1,261 @@ +% standard macros for WEB listings (in addition to PLAIN.TEX) +% +% pdfTeX adjustments mainained by Han The Thanh <hanthethanh@gmx.net>. +% +\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 + +% Some changes for pdftex +%\def\note#1#2.{\Y\noindent{\hangindent2em\baselineskip10pt\eightrm#1~#2.\par}} +\def\note#1#2.{\Y\noindent{\hangindent2em\baselineskip10pt\eightrm#1~\pdfnote#2..\par}} +\pdfoutput=1 +\pdfcompresslevel=9 +\input pdfcolor + +\newtoks\toksA +\newtoks\toksB +\newtoks\toksC +\newtoks\toksD +\newcount\countA +\countA=0 +\def\pdfnote#1.{\setbox0=\hbox{\toksA={#1.}\toksB={}\maketoks}\the\toksA} +\def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} +\def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} +\def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} +\def\maketoks{% + \expandafter\poptoks\the\toksA|ENDTOKS| + \ifx\first0\adn0 + \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 + \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 + \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 + \else + \ifnum0=\countA\else\makenote\fi + \ifx\first.\let\next=\done\else + \let\next=\maketoks + \addtokens{\toksB}{\the\toksD} + \ifx\first,\addtokens{\toksB}{\space}\fi + \fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \next +} +\def\n#1{\pdfstartlink attr{/Border [0 0 0]} goto num #1 + \BlueGreen #1\Black\pdfendlink} +\def\makenote{\addtokens{\toksB}% + {\noexpand\n{\the\toksC}}\toksC={}\global\countA=0} +\def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} + +\def\lapstar{\rlap{*}} +% \def\startsection{\Q\noindent{\let\*=\lapstar\bf\modstar.\quad}% +% {\let\*=\empty\pdfdest num \modstar fitbh}} +\def\startsection{\Q{\let\*=\empty\pdfdest num \modstar xyz}% + \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\pdfnote#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\pdfnote} % 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.}} + \def\note##1##2.{\hfil\penalty-1\hfilneg\quad{\eightrm##1~\pdfnote##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{\pdfstartlink attr{/Border [0 0 0]} goto num ##2 + \BlueGreen \ignorespaces##1 + \leaders\hbox to .5em{.\hfil}\hfil\ ##2\pdfendlink\Black + \hbox to3em{\hss##3}}} + \readcontents\relax % read the contents info + \botofcontents \makeoutlines\end} % print the contents page(s) and terminate + +\newcount\countB +\def\makeoutlines{% + \def\?##1]{}\def\Z##1##2##3{\pdfoutline goto num ##2{##1}} + \input CONTENTS\relax} +\pdfcatalog{/PageMode /UseOutlines} +\endinput diff --git a/Master/texmf-dist/tex/plain/cyrplain/README b/Master/texmf-dist/tex/plain/cyrplain/README new file mode 100644 index 00000000000..9cdbbc15ee6 --- /dev/null +++ b/Master/texmf-dist/tex/plain/cyrplain/README @@ -0,0 +1,86 @@ +This directory contains files which can be used to make rusified +Plain TeX and other Plain TeX based formats, such as AMS-TeX, Texinfo +or BLUe TeX, using cyrillic fonts in LCY encoding (which is an 8-bit +extension of OT1 similar to cp866) or T2A encoding. + +The file `plainenc.tex' provides a preliminary support of +inputenc/fontenc mechanisms for Plain TeX. It uses the standard +*unmodified* LaTeX files: inputenc.sty, font encoding definition files +(such as lcyenc.def), and input encoding definition files (koi8-r.def, +cp866.def, etc), so that your documents may be in any input encoding +supported by the `cyrillic' bundle of LaTeX. + +The files `example4.tex' and `example2.tex' contain examples of using +different input encodings in Plain TeX. See also a file example3.tex +which shows another way to process Plain TeX files---using the `plain' +package for LaTeX. + +To install russian support for Plain TeX, AMS-TeX, Texinfo or BLUe +TeX, please do the following steps: + +1) To setup hyphenation, you will need russian hyphenation patterns +and a file `hyphen.cfg' (either from BABEL or created manually). It is +recommended to use russian hyphenation patterns contained in the +`ruhyphen' package (see the README in the parent directory for more +information). There you will find also documentation on installation +and usage of patterns. Note, that for all Plain TeX-based formats it +is recommended to use "combined" Russian-English patterns as a single +language to avoid necessity to use language switching commands like +\Russian and \English (you may use a sample "language.dat" from the +ruhyphen package when creating format files). + +2) If you want to be able to use input encodings other than cp866, you +should install the T2 package first. Then edit the file `cyrtex.cfg', +and choose the default input encoding of your documents in the line +"\def\definpenc{koi8-r}". In this case you must install BABEL, because +we use some files from BABEL (e.g., plain.def, hyphen.cfg). + +Otherwise (if you will process only documents in cp866 encoding), +change "\iftrue" to "\iffalse" in `cyrtex.cfg' (or put cp866 in the +definition of \definpenc). + +Note that we use here the file `lcydefs.tex' which is part of the +`cyrillic' bundle for LaTeX2e (CTAN:macros/latex/required/cyrillic). +Note that this file should be generated as explained in `00readme.txt' +from the `cyrillic' bundle. + +3) By default, we use LH fonts. You could change this to any other +LCY- or T2A-encoded font set (e.g. to use Type1 virtual fonts like +`C1 fonts package'), by redefining the command `\fontprefix' in +cyrtex.cfg. + +We support LCY and T2A font encodings (see cyrtex.cfg). If you use +T2A encoding, you should get EXMI fonts from CTAN:macros/ec-plain/*.mf +and define \miprefix to `ex' in cyrtex.cfg. + +4) Edit the file `makefmts.sh' or `makefmts.bat' (depending on your +platform), and (optionally) remove or comment out the lines which call +INITEX for formats which you do not want to install. + +Then run the script/batch file `makefmts.sh' or `makefmts.bat'. This will +create TeX format files: `cyrtex.fmt', `cyramstex.fmt', `cyrtexinfo.fmt' +and `cyrblue.fmt' (maybe not all of them if you commented some lines +in makefmts script). In case of `makefmts.bat', we use short DOSish +filenames `cyramstx.fmt', `cyrtxinf.fmt' instead of `cyramstex.fmt', +`cyrtexinfo.fmt'. You can rename them to long names if your OS +supports them. ;-) Finally, install the format files as usual (maybe +creating symlinks or scripts/batch files which call TeX with these +formats). + +Note: if you are using `amsppt' with AMS-TeX, you should also patch +the file `amsppt.sty', changing some hard-coded CM fonts to the +corresponding cyrillic fonts. The patch `amsppt.diff' is in the `etc' +directory of the T2 package [if you do not have a `patch' utility, you +may do the changes manually]. + +Please, use plain.tex version 3.1415926 or above. + +To make your documents encoding independent, you can use macros like +`\inputencoding{koi8-r}' in your documents (you can even use several +input encodings in one document, --- see the file `example4.tex' in +the directory `../examples'). + +Please report bugs via email addresses given in the file README in +the parent directory. + +Happy TeXing! diff --git a/Master/texmf-dist/tex/plain/cyrplain/cyramstx.ini b/Master/texmf-dist/tex/plain/cyrplain/cyramstx.ini new file mode 100644 index 00000000000..197bc7ae530 --- /dev/null +++ b/Master/texmf-dist/tex/plain/cyrplain/cyramstx.ini @@ -0,0 +1,10 @@ +\input cyrtex +\UNPROTECT +\input amstex +%% Uncomment this line to include the AMSPPT preprint style in the +%% format file: +%%\documentstyle{amsppt} +\input txxextra +\makerobust\dots +\PROTECT +\dump diff --git a/Master/texmf-dist/tex/plain/cyrplain/cyrblue.ini b/Master/texmf-dist/tex/plain/cyrplain/cyrblue.ini new file mode 100644 index 00000000000..5c20ae26912 --- /dev/null +++ b/Master/texmf-dist/tex/plain/cyrplain/cyrblue.ini @@ -0,0 +1,3 @@ +\input cyrtex +\input blue +\dump diff --git a/Master/texmf-dist/tex/plain/cyrplain/cyrcmfnt.tex b/Master/texmf-dist/tex/plain/cyrplain/cyrcmfnt.tex new file mode 100644 index 00000000000..82c031f5fb8 --- /dev/null +++ b/Master/texmf-dist/tex/plain/cyrplain/cyrcmfnt.tex @@ -0,0 +1,82 @@ +% Definitions of fonts for `cyrillized' Plain TeX: CM-like names +% +% Fonts assigned to \preloaded are not part of "plain TeX", +% but they are preloaded so that other format packages can use them. +% For example, if another set of macros says "\font\ninerm=cmr9", +% TeX will not have to reload the font metric information for cmr9. + +\message{fonts,} + +\font\tenrm=\fontprefix r10 % roman text +%\font\preloaded=\fontprefix r9 +%\font\preloaded=\fontprefix r8 +\font\sevenrm=\fontprefix r7 +%\font\preloaded=\fontprefix r6 +\font\fiverm=\fontprefix r5 + +\font\teni=\miprefix mi10 % math italic +%\font\preloaded=\miprefix mi9 +%\font\preloaded=\miprefix mi8 +\font\seveni=\miprefix mi7 +%\font\preloaded=\miprefix mi6 +\font\fivei=\miprefix mi5 + +\font\tensy=cmsy10 % math symbols +%\font\preloaded=cmsy9 +%\font\preloaded=cmsy8 +\font\sevensy=cmsy7 +%\font\preloaded=cmsy6 +\font\fivesy=cmsy5 + +\font\tenex=cmex10 % math extension + +%\font\preloaded=\fontprefix ss10 % sans serif +%\font\preloaded=\fontprefix ssq8 + +%\font\preloaded=\fontprefix ssi10 % sans serif italic +%\font\preloaded=\fontprefix ssqi8 + +\font\tenbf=\fontprefix bx10 % boldface extended +%\font\preloaded=\fontprefix bx9 +%\font\preloaded=\fontprefix bx8 +\font\sevenbf=\fontprefix bx7 +%\font\preloaded=\fontprefix bx6 +\font\fivebf=\fontprefix bx5 + +\font\tentt=\fontprefix tt10 % typewriter +%\font\preloaded=\fontprefix tt9 +%\font\preloaded=\fontprefix tt8 + +%\font\preloaded=\fontprefix sltt10 % slanted typewriter + +\font\tensl=\fontprefix sl10 % slanted roman +%\font\preloaded=\fontprefix sl9 +%\font\preloaded=\fontprefix sl8 + +\font\tenit=\fontprefix ti10 % text italic +%\font\preloaded=\fontprefix ti9 +%\font\preloaded=\fontprefix ti8 +%\font\preloaded=\fontprefix ti7 + +\message{more fonts,} +%\font\preloaded=\fontprefix u10 % unslanted text italic + +%\font\preloaded=\miprefix mib10 % bold math italic +%\font\preloaded=cmbsy10 % bold math symbols + +%\font\preloaded=\fontprefix csc10 % caps and small caps + +%\font\preloaded=\fontprefix ssbx10 % sans serif bold extended + +%\font\preloaded=\fontprefix dunh10 % Dunhill style + +%\font\preloaded=\fontprefix r7 scaled \magstep4 % for titles +%\font\preloaded=\fontprefix tt10 scaled \magstep2 +%\font\preloaded=\fontprefix ssbx10 scaled \magstep2 + +%\font\preloaded=manfnt % METAFONT logo and dragon curve and special symbols + +% Additional \preloaded fonts can be specified here. +% (And those that were \preloaded above can be eliminated.) + +\let\preloaded=\undefined % preloaded fonts must be declared anew later. diff --git a/Master/texmf-dist/tex/plain/cyrplain/cyrecfnt.tex b/Master/texmf-dist/tex/plain/cyrplain/cyrecfnt.tex new file mode 100644 index 00000000000..2920195c016 --- /dev/null +++ b/Master/texmf-dist/tex/plain/cyrplain/cyrecfnt.tex @@ -0,0 +1,82 @@ +% Definitions of fonts for `cyrillized' Plain TeX: EC-like names +% +% Fonts assigned to \preloaded are not part of "plain TeX", +% but they are preloaded so that other format packages can use them. +% For example, if another set of macros says "\font\ninerm=cmr9", +% TeX will not have to reload the font metric information for cmr9. + +\message{fonts,} + +\font\tenrm=\fontprefix rm1000 % roman text +%\font\preloaded=\fontprefix rm0900 +%\font\preloaded=\fontprefix rm0800 +\font\sevenrm=\fontprefix rm0700 +%\font\preloaded=\fontprefix rm0600 +\font\fiverm=\fontprefix rm0500 + +\font\teni=\miprefix mi10 % math italic +%\font\preloaded=\miprefix mi9 +%\font\preloaded=\miprefix mi8 +\font\seveni=\miprefix mi7 +%\font\preloaded=\miprefix mi6 +\font\fivei=\miprefix mi5 + +\font\tensy=cmsy10 % math symbols +%\font\preloaded=cmsy9 +%\font\preloaded=cmsy8 +\font\sevensy=cmsy7 +%\font\preloaded=cmsy6 +\font\fivesy=cmsy5 + +\font\tenex=cmex10 % math extension + +%\font\preloaded=\fontprefix ss1000 % sans serif +%\font\preloaded=\fontprefix sq8 + +%\font\preloaded=\fontprefix si1000 % sans serif italic +%\font\preloaded=\fontprefix qi8 + +\font\tenbf=\fontprefix bx1000 % boldface extended +%\font\preloaded=\fontprefix bx0900 +%\font\preloaded=\fontprefix bx0800 +\font\sevenbf=\fontprefix bx0700 +%\font\preloaded=\fontprefix bx0600 +\font\fivebf=\fontprefix bx0500 + +\font\tentt=\fontprefix tt1000 % typewriter +%\font\preloaded=\fontprefix tt0900 +%\font\preloaded=\fontprefix tt0800 + +%\font\preloaded=\fontprefix st1000 % slanted typewriter + +\font\tensl=\fontprefix sl1000 % slanted roman +%\font\preloaded=\fontprefix sl0900 +%\font\preloaded=\fontprefix sl0800 + +\font\tenit=\fontprefix ti1000 % text italic +%\font\preloaded=\fontprefix ti0900 +%\font\preloaded=\fontprefix ti0800 +%\font\preloaded=\fontprefix ti0700 + +\message{more fonts,} +%\font\preloaded=\fontprefix ui1000 % unslanted text italic + +%\font\preloaded=\miprefix mib10 % bold math italic +%\font\preloaded=cmbsy10 % bold math symbols + +%\font\preloaded=\fontprefix cc1000 % caps and small caps + +%\font\preloaded=\fontprefix sx1000 % sans serif bold extended + +%\font\preloaded=\fontprefix dh1000 % Dunhill style + +%\font\preloaded=\fontprefix rm0700 scaled \magstep4 % for titles +%\font\preloaded=\fontprefix tt1000 scaled \magstep2 +%\font\preloaded=\fontprefix sx1000 scaled \magstep2 + +%\font\preloaded=manfnt % METAFONT logo and dragon curve and special symbols + +% Additional \preloaded fonts can be specified here. +% (And those that were \preloaded above can be eliminated.) + +\let\preloaded=\undefined % preloaded fonts must be declared anew later. diff --git a/Master/texmf-dist/tex/plain/cyrplain/cyrtex.cfg b/Master/texmf-dist/tex/plain/cyrplain/cyrtex.cfg new file mode 100644 index 00000000000..97963bb26d2 --- /dev/null +++ b/Master/texmf-dist/tex/plain/cyrplain/cyrtex.cfg @@ -0,0 +1,45 @@ +% Cyrillic TeX configuration file for Plain TeX based packages + +% Select text font encoding and fonts which will be used +\c lh/lcy/lcydefs/cm/cyrcmfnt +%\c c3/lcy/lcydefs/cm/cyrcmfnt +%\c la/t2a/txxdefs/ex/cyrecfnt +%\c c1/t2a/txxdefs/ex/cyrcmfnt +%\c lb/t2b/txxdefs/ex/cyrecfnt +%\c lc/t2c/txxdefs/ex/cyrecfnt +%\c ld/t2d/txxdefs/ex/cyrecfnt +% In general, latin-based setups are also supported +%\c cm/ot1/null/cm/cyrcmfnt +%\c ec/t1/txxdefs/ex/cyrecfnt +%\c ae/t1/txxdefs/ex/cyrcmfnt + +% Which Russian hyphenation pattern to load (if not defined here, +% the default from ruhyphen.tex will be used) +%\def\Pattern{al} +%\def\Pattern{as} +%\def\Pattern{ct} +%\def\Pattern{dv} +%\def\Pattern{vl} +%\def\Pattern{zn} + +% Whether to switch on hyphenation of words with explicit hyphens +% (requires hyphenation patterns with hypht1.tex or hypht2.tex loaded!) +\iftxxenc\lccode`\-=`\- \defaulthyphenchar=127 \fi + +% Whether to use input encoding selection (with active characters) +\let\ifinpenc\iftrue +%\let\ifinpenc\iffalse + +% Select the default input encoding (only if inputenc is activated). +% Some possible choices for cyrillic: +% cp1251, cp855, cp866, cp866av, cp866mav, cp866nav, cp866tat, ctt, dbk, +% iso88595, isoir111, koi8-r, koi8-ru, koi8-u, maccyr, macukr, mik, mls, +% mnk, mos, ncc +% +% Some possible choices for latin: +% ansinew, applemac, ascii, cp1250, cp1252, cp437, cp437de, cp850, +% cp852, cp865, decmulti, latin1, latin2, latin3, latin5, next +% latin1jk, latin2jk, latin3jk +% amigapl, mazovia +% atari, isolatin, mac, pc850, roman8 +\def\definpenc{koi8-r} diff --git a/Master/texmf-dist/tex/plain/cyrplain/cyrtex.ini b/Master/texmf-dist/tex/plain/cyrplain/cyrtex.ini new file mode 100644 index 00000000000..def81c80380 --- /dev/null +++ b/Master/texmf-dist/tex/plain/cyrplain/cyrtex.ini @@ -0,0 +1,2 @@ +\input cyrtex +\dump diff --git a/Master/texmf-dist/tex/plain/cyrplain/cyrtex.tex b/Master/texmf-dist/tex/plain/cyrplain/cyrtex.tex new file mode 100644 index 00000000000..20c3d911e79 --- /dev/null +++ b/Master/texmf-dist/tex/plain/cyrplain/cyrtex.tex @@ -0,0 +1,29 @@ +\catcode`\{=1 +\catcode`\}=2 +\catcode`\#=6 +\let\iftxxenc\iffalse +\def\c#1/#2/#3/#4/#5 {\def\fontprefix{#1}\def\Encoding{#2}\input#3 + \def\miprefix{#4}\def\fontdefs{#5}} +\input cyrtex.cfg + +\let\next\font\long\def\font#1\undefined{\let\font\next\input\fontdefs + \let\next\lefthyphenmin\def\lefthyphenmin##1hyphen{\let\lefthyphenmin\next + \let\next\undefined\input hyphen.cfg}} +\input plain +\edef\fmtversion{\fmtversion-Cyr} + +\input txxextra + +%\input\Encoding defs +\ifinpenc + \input plainenc + \fontencoding\Encoding + \inputencoding\definpenc +\else + \let\PROTECT\relax\let\UNPROTECT\relax\def\makerobust#1{} +\fi + +\catcode`\@=11 +\def\Russian{\set@hyphenmins22\language\l@russian}\let\Rus\Russian +\def\English{\set@hyphenmins23\language\l@english}\let\Eng\English +\catcode`\@=12 diff --git a/Master/texmf-dist/tex/plain/cyrplain/cyrtxinf.ini b/Master/texmf-dist/tex/plain/cyrplain/cyrtxinf.ini new file mode 100644 index 00000000000..9f8821a6411 --- /dev/null +++ b/Master/texmf-dist/tex/plain/cyrplain/cyrtxinf.ini @@ -0,0 +1,25 @@ +\input cyrtex +\ifx\fontencoding\undefined\else + \def\putwordAppendix{\CYRP\cyrr\cyri\cyrl\cyro\cyrzh\cyre\cyrn\cyri\cyre} + \def\putwordChapter{\CYRG\cyrl\cyra\cyrv\cyra} + \def\putwordfile{\cyrf\cyra\cyrishrt\cyrl} +% \def\putwordInfo{Info} +% \def\putwordMethodon{Method on} + \def\putwordon{\cyrn\cyra} + \def\putwordpage{\cyrs.} + \def\putwordsection{\cyrr\cyra\cyrz\cyrd\cyre\cyrl} + \def\putwordSection{\CYRR\cyra\cyrz\cyrd\cyre\cyrl} + \def\putwordsee{\cyrs\cyrm.} + \def\putwordSee{\CYRS\cyrm.} + \def\putwordShortContents{\CYRK\cyrr\cyra\cyrt\cyrk\cyro\cyre\ \cyrs\cyro\cyrd\cyre\cyrr\cyrzh\cyra\cyrn\cyri\cyre} + \def\putwordTableofContents{\CYRO\cyrg\cyrl\cyra\cyrv\cyrl\cyre\cyrn\cyri\cyre} +\fi +\catcode`\@=11 +\let\org@IeC\IeC +\def\tmp@IeC#1{\realbackslash IeC\space{\realbackslash\expandafter\@gobble\string#1 }} +\def\newrefx#1#2{\let\IeC\tmp@IeC\edef\reserved@a{#1}\let\IeC\org@IeC\orgrefx\reserved@a{#2}} +\catcode`\@=12 +\input texinfo +@let@orgrefx@refx +@let@refx@newrefx +@dump diff --git a/Master/texmf-dist/tex/plain/cyrplain/makefmts.bat b/Master/texmf-dist/tex/plain/cyrplain/makefmts.bat new file mode 100644 index 00000000000..6b2dff2638d --- /dev/null +++ b/Master/texmf-dist/tex/plain/cyrplain/makefmts.bat @@ -0,0 +1,4 @@ +tex386.exe -i -8 -o -mt18000 cyrtex.ini
+tex386.exe -i -8 -o -mt18000 cyramstx.ini
+tex386.exe -i -8 -o -mt18000 cyrtxinf.ini
+tex386.exe -i -8 -o -mt18000 cyrblue.ini
diff --git a/Master/texmf-dist/tex/plain/cyrplain/makefmts.sh b/Master/texmf-dist/tex/plain/cyrplain/makefmts.sh new file mode 100644 index 00000000000..05065946a88 --- /dev/null +++ b/Master/texmf-dist/tex/plain/cyrplain/makefmts.sh @@ -0,0 +1,8 @@ +#!/bin/sh +tex -ini -fmt=cyrtex -progname=tex cyrtex.ini +tex -ini -fmt=cyramstex -progname=amstex cyramstx.ini +tex -ini -fmt=cyrtexinfo -progname=texinfo cyrtxinf.ini +tex -ini -fmt=cyrblue -progname=tex cyrblue.ini + +pdftex -ini -fmt=cyrpdftex -progname=pdftex cyrtex.ini +pdftex -ini -fmt=cyrpdftexinfo -progname=pdftexinfo cyrtxinf.ini diff --git a/Master/texmf-dist/tex/plain/cyrplain/plainenc.tex b/Master/texmf-dist/tex/plain/cyrplain/plainenc.tex new file mode 100644 index 00000000000..c127997c0df --- /dev/null +++ b/Master/texmf-dist/tex/plain/cyrplain/plainenc.tex @@ -0,0 +1,252 @@ +% This is the file plainenc.tex of the T2 package. +% +% This file defines some commands for Plain TeX, so that it is able to +% read (and interpret accordingly) some LaTeX files (unchanged), such as +% inputenc.sty, font encoding definition files (lcyenc.def, t2aenc.def, +% t1enc.def, etc.), and various input encoding definition files +% (koi8-r.def, latin1.def, etc.). +% +% These definitions are the `minimal' possible. Probably, some +% extensions will be needed. + +%\ProvidesFile{plainenc.tex}[1999/12/15 v0.1 inputenc support for Plain TeX] +\ifx\inputencoding\undefined\else\expandafter\endinput\fi +\chardef\atcatcode=\catcode`\@ \catcode`\@=11 + +% load definitions from BABEL's plain.def (\adddialect should now be defined) +\ifx\adddialect\undefined\let\adddialect\relax\let\protect\relax\fi +\input plain.def + +\def\NeedsTeXFormat#1[#2]{} +\def\ProvidesFile#1{% + \begingroup + \catcode`\ 10 % + \@ifnextchar[{\@providesfile{#1}}{\@providesfile{#1}[]}} +\def\@providesfile#1[#2]{% + \wlog{File: #1 #2}% + \expandafter\xdef\csname ver@#1\endcsname{#2}% + \endgroup} +\let\ProvidesPackage\ProvidesFile % better than #1[#2] -> {} +%\def\DeclareOption#1#2{\def\@OptionBody{#2}} +%\def\ProcessOptions{\@OptionBody} +\def\DeclareOption#1#2{} +\def\ProcessOptions{} +\newlinechar`\^^J +\def\MessageBreak{^^J} + +\let\@empty\empty +\long\def\@gobbletwo#1#2{} +\let\@inmathwarn\@gobble + +\def\PackageWarning#1#2{\immediate\write16{^^JPackage #1 Warning: #2\on@line.^^J}} +\def\PackageWarningNoLine#1#2{\PackageWarning{#1}{#2\@gobble}} +\def\on@line{ on input line \the\inputlineno} +\def\PackageError#1#2#3{\begingroup\let\protect\string + \errmessage{Package #1 Error: #2.^^J}\endgroup} +\def\@latex@error#1{\PackageError{plainenc}{#1}{}} +\def\@latex@info#1{\wlog{Info: #1}} + +\def\DeclareFontEncoding#1#2#3{% + \expandafter\let\csname#1-cmd\endcsname\@current@cmd +% \expandafter\let\csname#1-tmcmd\endcsname\@current@tmcmd + \def\LastDeclaredEncoding{#1}} +% special math setup is unneeded if only one font encoding is used +\def\@current@cmd#1{% + \ifx\protect\@typeset@protect + \else + \noexpand#1\expandafter\@gobble + \fi} +\def\DeclareFontSubstitution#1#2#3#4{} +\def\DeclareErrorFont#1#2#3#4#5{} +\def\DeclareSymbolFont#1#2#3#4#5{} +\def\SetSymbolFont#1#2#3#4#5#6{} +\def\DeclareSymbolFontAlphabet#1#2{} +\def\DeclareMathAlphabet#1#2#3#4#5{} +\def\SetMathAlphabet#1#2#3#4#5#6{} +\def\DeclareMathSymbol#1#2#3#4{% simplified definition + \count@=#4 \advance\count@ "7000 \mathchardef#1\count@} + +\def\@unexpandable@protect{\noexpand\protect\noexpand} +%\let\protect\@typeset@protect + +\def\protected@edef{% + \let\@@protect\protect + \let\protect\@unexpandable@protect + \afterassignment\restore@protect + \@edef} +\def\protected@xdef{% + \let\@@protect\protect + \let\protect\@unexpandable@protect + \afterassignment\restore@protect + \@xdef} +\def\restore@protect{\let\protect\@@protect} + +\let\@edef\edef +\let\@xdef\xdef + +% redefine \input to be compatible with LaTeX (for inputenc.sty) +\ifx\@@input\@undefined\let\@@input\input\fi +\def\input{\@ifnextchar\bgroup\@iinput\@@input} +\def\@iinput#1{\@@input#1 } % This is a simplified definition + +% this is used in cyrillic encoding definition files +\def\@ifundefined#1{% + \expandafter\ifx\csname#1\endcsname\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} +\long\def\@secondoftwo#1#2{#2} + +% support for uppercase/lowercase +\let\@uppercase\uppercase +\let\@lowercase\lowercase +\newtoks\@uclctoks +\DeclareRobustCommand\uppercas@{\afterassignment\upperc@se\@uclctoks} +\DeclareRobustCommand\lowercas@{\afterassignment\lowerc@se\@uclctoks} +\def\upperc@se{{% + \def\i{I}\def\j{J}% + \def\reserved@a##1##2{\let##1##2\reserved@a}% + \expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}% + \protected@edef\reserved@a{\@uppercase\expandafter{\the\@uclctoks}}% + \reserved@a}} +\def\lowerc@se{{% + \def\reserved@a##1##2{\let##2##1\reserved@a}% + \expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}% + \protected@edef\reserved@a{\@lowercase\expandafter{\the\@uclctoks}}% + \reserved@a}} +\def\@uclclist{\oe\OE\o\O\ae\AE\dh\DH\dj\DJ\l\L\ng\NG\ss\SS\th\TH +\cyra\CYRA\cyrabhch\CYRABHCH\cyrabhchdsc\CYRABHCHDSC\cyrabhdze +\CYRABHDZE\cyrabhha\CYRABHHA\cyrae\CYRAE\cyrb\CYRB\cyrbyus +\CYRBYUS\cyrc\CYRC\cyrch\CYRCH\cyrchldsc\CYRCHLDSC\cyrchrdsc +\CYRCHRDSC\cyrchvcrs\CYRCHVCRS\cyrd\CYRD\cyrdelta\CYRDELTA +\cyrdje\CYRDJE\cyrdze\CYRDZE\cyrdzhe\CYRDZHE\cyre\CYRE\cyreps +\CYREPS\cyrerev\CYREREV\cyrery\CYRERY\cyrf\CYRF\cyrfita +\CYRFITA\cyrg\CYRG\cyrgdsc\CYRGDSC\cyrgdschcrs\CYRGDSCHCRS +\cyrghcrs\CYRGHCRS\cyrghk\CYRGHK\cyrgup\CYRGUP\cyrh\CYRH +\cyrhdsc\CYRHDSC\cyrhhcrs\CYRHHCRS\cyrhhk\CYRHHK\cyrhrdsn +\CYRHRDSN\cyri\CYRI\cyrie\CYRIE\cyrii\CYRII\cyrishrt\CYRISHRT +\cyrishrtdsc\CYRISHRTDSC\cyrizh\CYRIZH\cyrje\CYRJE\cyrk\CYRK +\cyrkbeak\CYRKBEAK\cyrkdsc\CYRKDSC\cyrkhcrs\CYRKHCRS\cyrkhk +\CYRKHK\cyrkvcrs\CYRKVCRS\cyrl\CYRL\cyrldsc\CYRLDSC\cyrlhk +\CYRLHK\cyrlje\CYRLJE\cyrm\CYRM\cyrmdsc\CYRMDSC\cyrmhk\CYRMHK +\cyrn\CYRN\cyrndsc\CYRNDSC\cyrng\CYRNG\cyrnhk\CYRNHK\cyrnje +\CYRNJE\cyrnlhk\CYRNLHK\cyro\CYRO\cyrotld\CYROTLD\cyrp\CYRP +\cyrphk\CYRPHK\cyrq\CYRQ\cyrr\CYRR\cyrrdsc\CYRRDSC\cyrrhk +\CYRRHK\cyrrtick\CYRRTICK\cyrs\CYRS\cyrsacrs\CYRSACRS +\cyrschwa\CYRSCHWA\cyrsdsc\CYRSDSC\cyrsemisftsn\CYRSEMISFTSN +\cyrsftsn\CYRSFTSN\cyrsh\CYRSH\cyrshch\CYRSHCH\cyrshha\CYRSHHA +\cyrt\CYRT\cyrtdsc\CYRTDSC\cyrtetse\CYRTETSE\cyrtshe\CYRTSHE +\cyru\CYRU\cyrushrt\CYRUSHRT\cyrv\CYRV\cyrw\CYRW\cyry\CYRY +\cyrya\CYRYA\cyryat\CYRYAT\cyryhcrs\CYRYHCRS\cyryi\CYRYI\cyryo +\CYRYO\cyryu\CYRYU\cyrz\CYRZ\cyrzdsc\CYRZDSC\cyrzh\CYRZH +\cyrzhdsc\CYRZHDSC} +\def\PROTECT{% + \let\uppercase\uppercas@\let\lowercase\lowercas@ + \let\edef\protected@edef\let\xdef\protected@xdef} +\def\UNPROTECT{% + \let\uppercase\@uppercase\let\lowercase\@lowercase + \let\edef\@edef\let\xdef\@xdef} +\PROTECT + +\let\org@write\write +\let\org@immediate\immediate +\DeclareRobustCommand\write{\afterassignment\write@a\count@} +\def\immediate#1{\ifx#1\write\def\immediate@{\org@immediate}\fi\org@immediate#1} +\let\immediate@\@empty +\long\def\write@a#1{% + \begingroup + \let\thepage\relax + \let\protect\@unexpandable@protect +% \@edef\reserved@a{\expandafter\noexpand\immediate@\org@write\the\count@{#1}}% +% \reserved@a + \immediate@\org@write\the\count@{#1}% + \endgroup + \let\immediate@\@empty} + +% make handling of protected commands within whatsits correct: +\let\org@shipout\shipout +\def\shipout#1#2{\begingroup\setbox0=#1{#2}\let\protect\noexpand\org@shipout\box0\endgroup} + +% avoid problems in references with russian letters (e.g. in Texinfo) +% (experimental code): +%\def\DeclareTextSymbol#1#2#3{% +% \@dec@text@cmd\chardef@hack#1{#2}#3\relax +%} +%\def\chardef@hack#1#2{% +% \bgroup +% \lccode`\0=#2 +% \lowercase{ +% \egroup +% \let#1=0 +% } +% \show#1 +%} + +% for inputenc files +\def\makeatletter{\catcode`\@11\relax} +\def\makeatother{\catcode`\@12\relax} + +\ifx\Orb\undefined + \message{^^J* Please get newer version of plain.tex from^^J% + * CTAN:systems/knuth/lib/plain.tex^^J* Aborting.^^J^^J}\end +\fi +\def\textcircled#1{{\ooalign{\hfil\raise.07ex\hbox{#1}\hfil\crcr\Orb}}} +%\let\textlatin\rm + +\def\fontencoding#1{\makeatletter + \UNPROTECT % \lowercase for \DeclareTextComposite + \@lowercase{\input{#1enc.def}}% + \PROTECT + \@edef\cf@encoding{\@uppercase{\def\noexpand\cf@encoding{#1}}}% + \cf@encoding + \makeatother} +\input inputenc.sty +\let\org@inputencoding\inputencoding +\def\inputencoding#1{\UNPROTECT % \uppercase, \edef + \org@inputencoding{#1}% + \PROTECT} + +% definitions of some LaTeX macros used in enc.def and .def files +\def\sh@ft#1{\dimen@.00#1ex\multiply\dimen@\fontdimen1\font\kern-.0156\dimen@} +\chardef\@xxxii=32 +\def\hb@xt@{\hbox to} +\def\@tabacckludge#1{\expandafter\@changed@cmd + \csname\string#1\endcsname\relax} +\DeclareRobustCommand{\ensuremath}{% + \ifmmode + \expandafter\@firstofone + \else + \expandafter\@ensuredmath + \fi} +\long\def\@ensuredmath#1{$\relax#1$} +\def\TextSymbolUnavailable#1{\@latex@error{% + Command \protect#1 unavailable in encoding \cf@encoding}} +\def\textbullet{{\tensy\char15}} +\def\textperiodcentered{{\tensy\char1}} +%\font\tensmc=cmcsc10 +%\DeclareTextCommandDefault{\textregistered}{\textcircled{\tensmc r}} +\DeclareTextCommandDefault{\texttrademark}{\textsuperscript{TM}} +\DeclareTextCommandDefault{\SS}{SS} +\DeclareTextCommandDefault{\textordfeminine}{\textsuperscript{a}} +\DeclareTextCommandDefault{\textordmasculine}{\textsuperscript{o}} +\DeclareRobustCommand*\textsuperscript[1]{% + {\m@th\ensuremath{^{\hbox{\sevenrm#1}}}}} +\DeclareRobustCommand{\nobreakspace}{\leavevmode\nobreak\ } +%\DeclareRobustCommand{\pounds}{% +% \ifmmode\mathsterling\else\textsterling\fi} +%\def\mathsterling{\mathit{\mathchar"7024}} +%\def\mathit#1{{\it#1}} +\def\frac#1#2{{\begingroup#1\endgroup\over#2}} +\def\@height{height} \def\@depth{depth} \def\@width{width} +\def\hmode@bgroup{\leavevmode\bgroup} + +% a helper command +\def\makerobust#1{\expandafter\let\csname\expandafter + \@gobble\string#1 \endcsname#1% + \@edef#1{\noexpand\protect\expandafter\noexpand\csname\expandafter + \@gobble\string#1 \endcsname}} + +\catcode`\@=\atcatcode \let\atcatcode\undefined + +\endinput diff --git a/Master/texmf-dist/tex/plain/cyrplain/txxdefs.tex b/Master/texmf-dist/tex/plain/cyrplain/txxdefs.tex new file mode 100644 index 00000000000..be56c4b7570 --- /dev/null +++ b/Master/texmf-dist/tex/plain/cyrplain/txxdefs.tex @@ -0,0 +1,38 @@ +% setup {cat,uc,lc,sf,math}code values for T* font encodings +\expandafter\ifx\csname txxfam\endcsname\relax + \def\txxfam{0} +\fi +\def\letter#1 #2 {% + \ifnum\catcode#1=13\else\catcode#1=11 \catcode#2=11 \fi + \uccode#1=#1 \uccode#2=#1 + \lccode#1=#2 \lccode#2=#2 + \sfcode#1=999 \sfcode#2=1000 + \count255=#1 \advance\count255 "7\txxfam 00 \mathcode#1=\count255 + \count255=#2 \advance\count255 "7\txxfam 00 \mathcode#2=\count255 +} +\letter 128 160 \letter 129 161 \letter 130 162 \letter 131 163 +\letter 132 164 \letter 133 165 \letter 134 166 \letter 135 167 +\letter 136 168 \letter 137 169 \letter 138 170 \letter 139 171 +\letter 140 172 \letter 141 173 \letter 142 174 \letter 143 175 +\letter 144 176 \letter 145 177 \letter 146 178 \letter 147 179 +\letter 148 180 \letter 149 181 \letter 150 182 \letter 151 183 +\letter 152 184 \letter 153 185 \letter 154 186 \letter 155 187 +\letter 156 188 +\letter 192 224 \letter 193 225 \letter 194 226 \letter 195 227 +\letter 196 228 \letter 197 229 \letter 198 230 \letter 199 231 +\letter 200 232 \letter 201 233 \letter 202 234 \letter 203 235 +\letter 204 236 \letter 205 237 \letter 206 238 \letter 207 239 +\letter 208 240 \letter 209 241 \letter 210 242 \letter 211 243 +\letter 212 244 \letter 213 245 \letter 214 246 \letter 215 247 +\letter 216 248 \letter 217 249 \letter 218 250 \letter 219 251 +\letter 220 252 \letter 221 253 \letter 222 254 \letter 223 255 +\let\letter\undefined +\lccode 25=25 \uccode 25=73 \lccode 26=26 \uccode 26=74 \lccode 27=27 +\lccode 157=105 \uccode 157=157 \mathcode 157="7\txxfam 9D +\lccode 158=158 \uccode 158=208 \mathcode 158="7\txxfam 9E +\lccode 159=0 \uccode 159=0 \mathcode 159="7\txxfam 9F +\lccode 189=0 \uccode 189=0 \mathcode 189="7\txxfam BD +\lccode 190=0 \uccode 190=0 \mathcode 190="7\txxfam BE +\lccode 191=0 \uccode 191=0 \mathcode 191="7\txxfam BF +\let\iftxxenc\iftrue +\endinput diff --git a/Master/texmf-dist/tex/plain/cyrplain/txxextra.tex b/Master/texmf-dist/tex/plain/cyrplain/txxextra.tex new file mode 100644 index 00000000000..6ce4041f5b2 --- /dev/null +++ b/Master/texmf-dist/tex/plain/cyrplain/txxextra.tex @@ -0,0 +1,27 @@ +\def\next{ex}\ifx\next\miprefix +\mathchardef\Gamma="0180 +\mathchardef\Delta="0181 +\mathchardef\Theta="0182 +\mathchardef\Lambda="0183 +\mathchardef\Xi="0184 +\mathchardef\Pi="0185 +\mathchardef\Sigma="0186 +\mathchardef\Upsilon="0187 +\mathchardef\Phi="0188 +\mathchardef\Psi="0189 +\mathchardef\Omega="018A +\fi\let\next\undefined + +\iftxxenc +\def\aa{\r a} +\def\AA{\r A} +\def\acute{\mathaccent"7001 } +\def\grave{\mathaccent"7000 } +\def\ddot{\mathaccent"7004 } +\def\tilde{\mathaccent"7003 } +\def\bar{\mathaccent"7009 } +\def\breve{\mathaccent"7008 } +\def\check{\mathaccent"7007 } +\def\hat{\mathaccent"7002 } +\def\dot{\mathaccent"700A } +\fi diff --git a/Master/texmf-dist/tex/plain/devanagr/dnmacs.tex b/Master/texmf-dist/tex/plain/devanagr/dnmacs.tex new file mode 100644 index 00000000000..00f3e8123dd --- /dev/null +++ b/Master/texmf-dist/tex/plain/devanagr/dnmacs.tex @@ -0,0 +1,530 @@ +% +% dnmacs.tex v2.12 alpha 11 +% +% Plain TeX macros for Devanagari for TeX package +% Copyright (C) 1991-2003 University of Groningen, The Netherlands +% +% Author : Frans J. Velthuis <velthuis@rc.rug.nl> +% Maintainer : John Smith <jds10@cam.ac.uk> +% Anshuman Pandey <apandey@u.washington.edu> +% Kevin Carmody <i@kevincarmody.com> +% Date : 14 March 2005 +% +% This program is free software; you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation; either version 1, or (at your option) +% any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the Free Software +% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +% +% +% Master Devanagari mode macro +% +% Define the basic \dn macro for entering Devanagari mode. +% +\def\dn{\dnmodetrue\ifdnpenfont\ifdnbombayfont\pdnpbom\else\ifdncalcuttafont% +\pdnpcal\else\pdnp\fi\fi\else\ifdnbombayfont\ifdnboldfont\ifdnitalfont% +\pdnbombi\else\pdnbomb\fi\else\ifdnitalfont\pdnbomi\else\pdnbom\fi\fi% +\else\ifdncalcuttafont\ifdnboldfont\ifdnitalfont\pdncalbi\else\pdncalb\fi% +\else\ifdnitalfont\pdncali\else\pdncal\fi\fi\else\ifdnboldfont\ifdnitalfont% +\pdnbi\else\pdnb\fi\else\ifdnitalfont\pdni\else\pdn\fi\fi\fi\fi\fi% +\baselineskip=\dnblskip +\chnum=0 +\loop\catcode\chnum=11 +\ifnum\chnum<12\advance\chnum by1 +\repeat +\chnum=14 +\loop\catcode\chnum=11 +\ifnum\chnum<31\advance\chnum by1 +\repeat +\catcode127=11 +\tolerance=10000 +\pretolerance=10000 +\language=\nohyphenation} +% +% Alternate, bold, italic, and size modes +% +% Use these macros in DN files to switch modes, either inside or outside +% Devanagari mode. Alternate, bold, italic, and size macros may be mixed +% and still produce proper results. Examples: +% +% \dnbombay {\dn atha yogaanu"saasanam} +% {\dn\dnbomay atha yogaanu"saasanam} +% {\dn\dnbig\dnbf atha yogaanu"saasanam} +% {\dn {\dnbombay\dnbig a}tha yogaanu"saasanam} +% +% Definition of \dnoriginal +% +\def\dnoriginal{\dnbombayfontfalse\dncalcuttafontfalse\ifdnmode% +\ifdnboldfont\ifdnitalfont\pdnbi\else\pdnb\fi\else\ifdnitalfont% +\pdni\else\pdn\fi\fi\fi} +% +% Definition of \dnbombay +% +\def\dnbombay{\dnbombayfonttrue\dncalcuttafontfalse\ifdnmode% +\ifdnboldfont\ifdnitalfont\pdnbombi\else\pdnbomb\fi\else\ifdnitalfont% +\pdnbomi\else\pdnbom\fi\fi\fi} +% +% Definition of \dncalcutta +% +\def\dncalcutta{\dncalcuttafonttrue\dnbombayfontfalse\ifdnmode% +\ifdnboldfont\ifdnitalfont\pdncalbi\else\pdncalb\fi\else\ifdnitalfont% +\pdncali\else\pdncal\fi\fi\fi} +% +% Definition of \dnbf for bold +% +\def\dnbf{\dnboldfonttrue\ifdnmode\ifdnbombayfont\ifdnitalfont% +\pdnbombi\else\pdnbomb\fi\else\ifdncalcuttafont\ifdnitalfont% +\pdncalbi\else\pdncalb\fi\else\ifdnitalfont\pdnbi\else\pdnb\fi\fi\fi\fi} +% +% Definition of \dnit for italics +% +\def\dnit{\dnitalfonttrue\ifdnmode\ifdnbombayfont\ifdnboldfont% +\pdnbombi\else\pdnbomi\fi\else\ifdncalcuttafont\ifdnboldfont% +\pdncalbi\else\pdncali\fi\else\ifdnboldfont\pdnbi\else\pdni\fi\fi\fi\fi} +% +% Definition of \dnpen +% +\def\dnpen{\dnpenfonttrue\ifdnmode\ifdnbombayfont\pdnpbom\else% +\ifdncalcuttafont\pdnpcal\else\pdnp\fi\fi\fi} +% +% Definition of various sizes +% +% \dnsmall: 8pt font, 12pt baselineskip +\def\dnsmall{\let\pdn=\smalldn\let\pdnb=\smalldnb% +\let\pdni=\smalldni\let\pdnbi=\smalldnbi% +\let\pdnbom=\smalldnbom\let\pdnbomb=\smalldnbomb% +\let\pdnbomi=\smalldnbomi\let\pdnbombi=\smalldnbombi% +\let\pdncal=\smalldncal\let\pdncalb=\smalldncalb% +\let\pdncali=\smalldncali\let\pdncalbi=\smalldncalbi% +\let\pdnp=\smalldnp\let\pdnpbom=\smalldnpbom\let\pdnpcal=\smalldnpcal% +\let\rsize=\smallcr\dnblskip=12pt\ifdnsamavedamode\dnsmalltf\fi% +\ifdnmode\dn\fi} +% +% \dnnine: 9pt font, 13.5pt baselineskip +\def\dnnine{\let\pdn=\ninedn\let\pdnb=\ninednb% +\let\pdni=\ninedni\let\pdnbi=\ninednbi% +\let\pdnbom=\ninednbom\let\pdnbomb=\ninednbomb% +\let\pdnbomi=\ninednbomi\let\pdnbombi=\ninednbombi% +\let\pdncal=\ninedncal\let\pdncalb=\ninedncalb% +\let\pdncali=\ninedncali\let\pdncalbi=\ninedncalbi% +\let\pdnp=\ninednp\let\pdnpbom=\ninednpbom\let\pdnpcal=\ninednpcal% +\let\rsize=\ninecr\dnblskip=13.5pt\ifdnsamavedamode\dnninetf\fi% +\ifdnmode\dn\fi} +% +% \dnnormal: 10pt font, 15pt baselineskip +\def\dnnormal{\let\pdn=\dvng\let\pdnb=\dvngb% +\let\pdni=\dvngi\let\pdnbi=\dvngbi% +\let\pdnbom=\dvngbom\let\pdnbomb=\dvngbomb% +\let\pdnbomi=\dvngbomi\let\pdnbombi=\dvngbombi% +\let\pdncal=\dvngcal\let\pdncalb=\dvngcalb% +\let\pdncali=\dvngcali\let\pdncalbi=\dvngcalbi% +\let\pdnp=\dvngp\let\pdnpbom=\dvngpbom\let\pdnpcal=\dvngpcal% +\let\rsize=\rm\dnblskip=15pt\ifdnsamavedamode\dnnormaltf\fi% +\ifdnmode\dn\fi} +% +% \dnhalf: 11pt font, 16.5pt baselineskip +\def\dnhalf{\let\pdn=\halfdn\let\pdnb=\halfdnb% +\let\pdni=\halfdni\let\pdnbi=\halfdnbi% +\let\pdnbom=\halfdnbom\let\pdnbomb=\halfdnbomb% +\let\pdnbomi=\halfdnbomi\let\pdnbombi=\halfdnbombi% +\let\pdncal=\halfdncal\let\pdncalb=\halfdncalb% +\let\pdncali=\halfdncali\let\pdncalbi=\halfdncalbi% +\let\pdnp=\halfdnp\let\pdnpbom=\halfdnpbom\let\pdnpcal=\halfdnpcal% +\let\rsize=\halfcr\dnblskip=16.5pt\ifdnsamavedamode\dnhalftf\fi% +\ifdnmode\dn\fi} +% +% \dnbig: 12pt font, 18pt baselineskip +\def\dnbig{\let\pdn=\bigdn\let\pdnb=\bigdnb% +\let\pdni=\bigdni\let\pdnbi=\bigdnbi% +\let\pdnbom=\bigdnbom\let\pdnbomb=\bigdnbomb% +\let\pdnbomi=\bigdnbomi\let\pdnbombi=\bigdnbombi% +\let\pdncal=\bigdncal\let\pdncalb=\bigdncalb% +\let\pdncali=\bigdncali\let\pdncalbi=\bigdncalbi% +\let\pdnp=\bigdnp\let\pdnpbom=\bigdnpbom\let\pdnpcal=\bigdnpcal% +\let\rsize=\bigcr\dnblskip=18pt\ifdnsamavedamode\dnbigtf\fi% +\ifdnmode\dn\fi} +% +% \dnlarge: 14.4pt font, 22pt baselineskip +\def\dnlarge{\let\pdn=\largedn\let\pdnb=\largednb% +\let\pdni=\largedni\let\pdnbi=\largednbi% +\let\pdnbom=\largednbom\let\pdnbomb=\largednbomb% +\let\pdnbomi=\largednbomi\let\pdnbombi=\largednbombi% +\let\pdncal=\largedncal\let\pdncalb=\largedncalb% +\let\pdncali=\largedncali\let\pdncalbi=\largedncalbi% +\let\pdnp=\largednp\let\pdnpbom=\largednpbom\let\pdnpcal=\largednpcal% +\let\rsize=\largecr\dnblskip=22pt\ifdnsamavedamode\dnlargetf\fi% +\ifdnmode\dn\fi} +% +% \dnhuge: 17.3pt font, 26pt baselineskip +\def\dnhuge{\let\pdn=\hugedn\let\pdnb=\hugednb% +\let\pdni=\hugedni\let\pdnbi=\hugednbi% +\let\pdnbom=\hugednbom\let\pdnbomb=\hugednbomb% +\let\pdnbomi=\hugednbomi\let\pdnbombi=\hugednbombi% +\let\pdncal=\hugedncal\let\pdncalb=\hugedncalb% +\let\pdncali=\hugedncali\let\pdncalbi=\hugedncalbi% +\let\pdnp=\hugednp\let\pdnpbom=\hugednpbom\let\pdnpcal=\hugednpcal% +\let\rsize=\hugecr\dnblskip=26pt\ifdnsamavedamode\dnhugetf\fi% +\ifdnmode\dn\fi} +% +% Numeral modes +% +% Use these macros in DN files to control the numeral display style. +% +\def\dnnum{\let\nstyle=d} +\def\cmnum{\let\nstyle=r} +\def\rn#1{\if\nstyle r{\rsize #1}\else#1\fi} +% +% Vedic intonation mark macros +% +% Use these macros in DN files to enable and use Vedic intonation macros. +% +\def\dnveda{\dnvedamodetrue% +\def\_{\anudatta}% +\def\|{\svarita}% +\def\~{\padasep}} +% +\def\dnfixedanudatta{\dnanudattafixedtrue}% +\def\dnvariableanudatta{\dnanudattafixedfalse}% +% +\def\dnsamaveda{\dnsamavedamodetrue% +\def\^{\samatone}% +\def\@{\vedicanusvara}% +\ifdnsamavedafont\else% +\font\sixdn=dvng10 at 6pt% +\font\sixdnbom=dvnb10 at 6pt% +\font\sixdncal=dvnc10 at 6pt% +\font\sixdnp=dvpn10 at 6pt% +\font\sixdnpbom=dvpb10 at 6pt% +\font\sixdnpcal=dvpc10 at 6pt% +\font\sevendn=dvng10 at 7pt% +\font\sevendnbom=dvnb10 at 7pt% +\font\sevendncal=dvnc10 at 7pt% +\font\sevendnp=dvpn10 at 7pt% +\font\sevendnpbom=dvpb10 at 7pt% +\font\sevendnpcal=dvpc10 at 7pt% +\dnsamavedafonttrue% +\fi% +\ifx\pdn\smalldn\dnsmalltf\else% +\ifx\pdn\ninedn\dnninetf\else% +\ifx\pdn\halfdn\dnhalftf\else% +\ifx\pdn\bigdn\dnbigtf\else% +\ifx\pdn\largedn\dnlargetf\else% +\ifx\pdn\hugedn\dnhugetf\else% +\dnnormaltf\fi\fi\fi\fi\fi\fi} +% +\def\anudatta#1{\leavevmode\setbox0=\hbox{#1}% +\anudep=\dp0\anuwid=\wd0\advance\anudep by 0.7ex% +\ifdnanudattafixed{#1}\llap{\lower\anudep% +\hbox to\anuwid{\hss\vrule width0.5em height0.07em\hss}}% +\else\advance\anuwid by -0.1em{#1}\llap{\lower\anudep% +\hbox{\vrule width\anuwid height0.07em}% +\hbox{\phantom{\vrule width0.1em height0.08em}}}\fi} +% +\def\svarita#1{\leavevmode\hbox{#1}% +\llap{\raise5.7ex\hbox{\vrule height2.5ex width0.08em}% +\hbox{\phantom{\vrule height2.5ex width0.15em}}}} +% +\def\padasep{\leavevmode\hbox{% +\kern-0.15em\raise2.42ex\hbox{\char255}% +\kern-0.15em\raise2.42ex\hbox{\char255}% +\kern-0.15em\raise2.42ex\hbox{\char255}}} +% +\def\samatone#1#2{\leavevmode\hbox{#1}% +\llap{\raise9.5ex\hbox{\dnnum\dntf #2}% +\hbox{\phantom{\vrule height2.5ex width0.15em}}}} +% +\def\vedicanusvara{\leavevmode{\kern1.0ex\lower1.5ex\hbox{\char32}}% +\kern-2.0ex\raise3.7ex\llap{\char94}\kern3.8ex} +% +% Macros for selection of Sama Veda tone font \dntf +% +\def\dnsmalltf{\ifdnpenfont\ifdnbombayfont\let\dntf=\sixdnpbom\else% +\ifdncalcuttafont\let\dntf=\sixdnpcal\else\let\dntf=\sixdnp\fi\fi% +\else\ifdnbombayfont\let\dntf=\sixdnbom\else% +\ifdncalcuttafont\let\dntf=\sixdncal\else\let\dntf=\sixdn\fi\fi\fi} +% +\def\dnninetf{\ifdnpenfont\ifdnbombayfont\let\dntf=\sixdnpbom\else% +\ifdncalcuttafont\let\dntf=\sixdnpcal\else\let\dntf=\sixdnp\fi\fi% +\else\ifdnbombayfont\let\dntf=\sixdnbom\else% +\ifdncalcuttafont\let\dntf=\sixdncal\else\let\dntf=\sixdn\fi\fi\fi} +% +\def\dnnormaltf{\ifdnpenfont\ifdnbombayfont\let\dntf=\sevendnpbom\else% +\ifdncalcuttafont\let\dntf=\sevendnpcal\else\let\dntf=\sevendnp\fi\fi% +\else\ifdnbombayfont\let\dntf=\sevendnbom\else% +\ifdncalcuttafont\let\dntf=\sevendncal\else\let\dntf=\sevendn\fi\fi\fi} +% +\def\dnhalftf{\ifdnpenfont\ifdnbombayfont\let\dntf=\smalldnpbom\else% +\ifdncalcuttafont\let\dntf=\smalldnpcal\else\let\dntf=\smalldnp\fi\fi% +\else\ifdnbombayfont\let\dntf=\smalldnbom\else% +\ifdncalcuttafont\let\dntf=\smalldncal\else\let\dntf=\smalldn\fi\fi} +% +\def\dnbigtf{\ifdnpenfont\ifdnbombayfont\let\dntf=\smalldnpbom\else% +\ifdncalcuttafont\let\dntf=\smalldnpcal\else\let\dntf=\smalldnp\fi\fi% +\else\ifdnbombayfont\let\dntf=\smalldnbom\else% +\ifdncalcuttafont\let\dntf=\smalldncal\else\let\dntf=\smalldn\fi\fi} +% +\def\dnlargetf{\ifdnpenfont\ifdnbombayfont\let\dntf=\dvngpbom\else% +\ifdncalcuttafont\let\dntf=\dvngpcal\else\let\dntf=\dvngp\fi\fi% +\else\ifdnbombayfont\let\dntf=\dvngbom\else% +\ifdncalcuttafont\let\dntf=\dvngcal\else\let\dntf=\dvng\fi\fi} +% +\def\dnhugetf{\ifdnpenfont\ifdnbombayfont\let\dntf=\bigdnpbom\else% +\ifdncalcuttafont\let\dntf=\bigdnpcal\else\let\dntf=\bigdnp\fi\fi% +\else\ifdnbombayfont\let\dntf=\bigdnbom\else% +\ifdncalcuttafont\let\dntf=\bigdncal\else\let\dntf=\bigdn\fi\fi} +% +% Devanagari Fonts +% +\font\smalldn=dvng8 +\font\smalldnb=dvngb10 at 8pt +\font\smalldni=dvngi10 at 8pt +\font\smalldnbi=dvngbi10 at 8pt +\font\smalldnbom=dvnb8 +\font\smalldnbomb=dvnbb10 at 8pt +\font\smalldnbomi=dvnbi10 at 8pt +\font\smalldnbombi=dvnbbi10 at 8pt +\font\smalldncal=dvnc8 +\font\smalldncalb=dvncb10 at 8pt +\font\smalldncali=dvnci10 at 8pt +\font\smalldncalbi=dvncbi10 at 8pt +\font\smalldnp=dvpn8 +\font\smalldnpbom=dvpb8 +\font\smalldnpcal=dvpc8 +\font\ninedn=dvng9 +\font\ninednb=dvngb10 at 9pt +\font\ninedni=dvngi10 at 9pt +\font\ninednbi=dvngbi10 at 9pt +\font\ninednbom=dvnb9 +\font\ninednbomb=dvnbb10 at 9pt +\font\ninednbomi=dvnbi10 at 9pt +\font\ninednbombi=dvnbbi10 at 9pt +\font\ninedncal=dvnc9 +\font\ninedncalb=dvncb10 at 9pt +\font\ninedncali=dvnci10 at 9pt +\font\ninedncalbi=dvncbi10 at 9pt +\font\ninednp=dvpn9 +\font\ninednpbom=dvpb9 +\font\ninednpcal=dvpc9 +\font\dvng=dvng10 +\font\dvngb=dvngb10 +\font\dvngi=dvngi10 +\font\dvngbi=dvngbi10 +\font\dvngbom=dvnb10 +\font\dvngbomb=dvnbb10 +\font\dvngbomi=dvnbi10 +\font\dvngbombi=dvnbbi10 +\font\dvngcal=dvnc10 +\font\dvngcalb=dvncb10 +\font\dvngcali=dvnci10 +\font\dvngcalbi=dvncbi10 +\font\dvngp=dvpn10 +\font\dvngpbom=dvpb10 +\font\dvngpcal=dvpc10 +\font\halfdn=dvng10 scaled\magstephalf +\font\halfdnb=dvngb10 scaled\magstephalf +\font\halfdni=dvngi10 scaled\magstephalf +\font\halfdnbi=dvngbi10 scaled\magstephalf +\font\halfdnbom=dvnb10 scaled\magstephalf +\font\halfdnbomb=dvnbb10 scaled\magstephalf +\font\halfdnbomi=dvnbi10 scaled\magstephalf +\font\halfdnbombi=dvnbbi10 scaled\magstephalf +\font\halfdncal=dvnc10 scaled\magstephalf +\font\halfdncalb=dvncb10 scaled\magstephalf +\font\halfdncali=dvnci10 scaled\magstephalf +\font\halfdncalbi=dvncbi10 scaled\magstephalf +\font\halfdnp=dvpn10 scaled\magstephalf +\font\halfdnpbom=dvpb10 scaled\magstephalf +\font\halfdnpcal=dvpc10 scaled\magstephalf +\font\bigdn=dvng10 scaled\magstep1 +\font\bigdnb=dvngb10 scaled\magstep1 +\font\bigdni=dvngi10 scaled\magstep1 +\font\bigdnbi=dvngbi10 scaled\magstep1 +\font\bigdnbom=dvnb10 scaled\magstep1 +\font\bigdnbomb=dvnbb10 scaled\magstep1 +\font\bigdnbomi=dvnbi10 scaled\magstep1 +\font\bigdnbombi=dvnbbi10 scaled\magstep1 +\font\bigdncal=dvnc10 scaled\magstep1 +\font\bigdncalb=dvncb10 scaled\magstep1 +\font\bigdncali=dvnci10 scaled\magstep1 +\font\bigdncalbi=dvncbi10 scaled\magstep1 +\font\bigdnp=dvpn10 scaled\magstep1 +\font\bigdnpbom=dvpb10 scaled\magstep1 +\font\bigdnpcal=dvpc10 scaled\magstep1 +\font\largedn=dvng10 scaled\magstep2 +\font\largednb=dvngb10 scaled\magstep2 +\font\largedni=dvngi10 scaled\magstep2 +\font\largednbi=dvngbi10 scaled\magstep2 +\font\largednbom=dvnb10 scaled\magstep2 +\font\largednbomb=dvnbb10 scaled\magstep2 +\font\largednbomi=dvnbi10 scaled\magstep2 +\font\largednbombi=dvnbbi10 scaled\magstep2 +\font\largedncal=dvnc10 scaled\magstep2 +\font\largedncalb=dvncb10 scaled\magstep2 +\font\largedncali=dvnci10 scaled\magstep2 +\font\largedncalbi=dvncbi10 scaled\magstep2 +\font\largednp=dvpn10 scaled\magstep2 +\font\largednpbom=dvpb10 scaled\magstep2 +\font\largednpcal=dvpc10 scaled\magstep2 +\font\hugedn=dvng10 scaled\magstep3 +\font\hugednb=dvngb10 scaled\magstep3 +\font\hugedni=dvngi10 scaled\magstep3 +\font\hugednbi=dvngbi10 scaled\magstep3 +\font\hugednbom=dvnb10 scaled\magstep3 +\font\hugednbomb=dvnbb10 scaled\magstep3 +\font\hugednbomi=dvnbi10 scaled\magstep3 +\font\hugednbombi=dvnbbi10 scaled\magstep3 +\font\hugedncal=dvnc10 scaled\magstep3 +\font\hugedncalb=dvncb10 scaled\magstep3 +\font\hugedncali=dvnci10 scaled\magstep3 +\font\hugedncalbi=dvncbi10 scaled\magstep3 +\font\hugednp=dvpn10 scaled\magstep3 +\font\hugednpbom=dvpb10 scaled\magstep3 +\font\hugednpcal=dvpc10 scaled\magstep3 +% +% Hyphenation +% +\def\sethyph#1{ +\hyphenchar\smalldn=#1\hyphenchar\smalldnb=#1 +\hyphenchar\smalldni=#1\hyphenchar\smalldnbi=#1 +\hyphenchar\smalldnbom=#1\hyphenchar\smalldnbomb=#1 +\hyphenchar\smalldnbomi=#1\hyphenchar\smalldnbombi=#1 +\hyphenchar\smalldncal=#1\hyphenchar\smalldncalb=#1 +\hyphenchar\smalldncali=#1\hyphenchar\smalldncalbi=#1 +\hyphenchar\smalldnp=#1\hyphenchar\smalldnpbom=#1\hyphenchar\smalldnpcal=#1 +\hyphenchar\ninedn=#1\hyphenchar\ninednb=#1 +\hyphenchar\ninedni=#1\hyphenchar\ninednbi=#1 +\hyphenchar\ninednbom=#1\hyphenchar\ninednbomb=#1 +\hyphenchar\ninednbomi=#1\hyphenchar\ninednbombi=#1 +\hyphenchar\ninedncal=#1\hyphenchar\ninedncalb=#1 +\hyphenchar\ninedncali=#1\hyphenchar\ninedncalbi=#1 +\hyphenchar\ninednp=#1\hyphenchar\ninednpbom=#1\hyphenchar\ninednpcal=#1 +\hyphenchar\dvng=#1\hyphenchar\dvngb=#1 +\hyphenchar\dvngi=#1\hyphenchar\dvngbi=#1 +\hyphenchar\dvngbom=#1\hyphenchar\dvngbomb=#1 +\hyphenchar\dvngbomi=#1\hyphenchar\dvngbombi=#1 +\hyphenchar\dvngcal=#1\hyphenchar\dvngcalb=#1 +\hyphenchar\dvngcali=#1\hyphenchar\dvngcalbi=#1 +\hyphenchar\dvngp=#1\hyphenchar\dvngpbom=#1\hyphenchar\dvngpcal=#1 +\hyphenchar\halfdn=#1\hyphenchar\halfdnb=#1 +\hyphenchar\halfdni=#1\hyphenchar\halfdnbi=#1 +\hyphenchar\halfdnbom=#1\hyphenchar\halfdnbomb=#1 +\hyphenchar\halfdnbomi=#1\hyphenchar\halfdnbombi=#1 +\hyphenchar\halfdncal=#1\hyphenchar\halfdncalb=#1 +\hyphenchar\halfdncali=#1\hyphenchar\halfdncalbi=#1 +\hyphenchar\halfdnp=#1\hyphenchar\halfdnpbom=#1\hyphenchar\halfdnpcal=#1 +\hyphenchar\bigdn=#1\hyphenchar\bigdnb=#1 +\hyphenchar\bigdni=#1\hyphenchar\bigdnbi=#1 +\hyphenchar\bigdnbom=#1\hyphenchar\bigdnbomb=#1 +\hyphenchar\bigdnbomi=#1\hyphenchar\bigdnbombi=#1 +\hyphenchar\bigdncal=#1\hyphenchar\bigdncalb=#1 +\hyphenchar\bigdncali=#1\hyphenchar\bigdncalbi=#1 +\hyphenchar\bigdnp=#1\hyphenchar\bigdnpbom=#1\hyphenchar\bigdnpcal=#1 +\hyphenchar\largedn=#1\hyphenchar\largednb=#1 +\hyphenchar\largedni=#1\hyphenchar\largednbi=#1 +\hyphenchar\largednbom=#1\hyphenchar\largednbomb=#1 +\hyphenchar\largednbomi=#1\hyphenchar\largednbombi=#1 +\hyphenchar\largedncal=#1\hyphenchar\largedncalb=#1 +\hyphenchar\largedncali=#1\hyphenchar\largedncalbi=#1 +\hyphenchar\largednp=#1\hyphenchar\largednpbom=#1\hyphenchar\largednpcal=#1 +\hyphenchar\hugedn=#1\hyphenchar\hugednb=#1 +\hyphenchar\hugedni=#1\hyphenchar\hugednbi=#1 +\hyphenchar\hugednbom=#1\hyphenchar\hugednbomb=#1 +\hyphenchar\hugednbomi=#1\hyphenchar\hugednbombi=#1 +\hyphenchar\hugedncal=#1\hyphenchar\hugedncalb=#1 +\hyphenchar\hugedncali=#1\hyphenchar\hugedncalbi=#1 +\hyphenchar\hugednp=#1\hyphenchar\hugednpbom=#1\hyphenchar\hugednpcal=#1} +% +% Roman Fonts +% +\font\smallcr=cmr8 +\font\ninecr=cmr9 +\font\halfcr=cmr10 scaled\magstephalf +\font\bigcr=cmr10 scaled\magstep1 +\font\largecr=cmr10 scaled\magstep2 +\font\hugecr=cmr10 scaled\magstep3 +% +% Registers +% +\newcount\chnum +\newdimen\itdim +\newdimen\dnblskip +\newdimen\subdep +\newdimen\anudep +\newdimen\anuwid +\newif\ifdnmode +\newif\ifdnbombayfont +\newif\ifdncalcuttafont +\newif\ifdnboldfont +\newif\ifdnitalfont +\newif\ifdnpenfont +\newif\ifdnvedamode +\newif\ifdnsamavedamode +\newif\ifdnsamavedafont +\newif\ifdnanudattafixed +% +% Letter macros +% +% The preprocessor inserts uses of these macros into the preprocessor output. +% TeX then uses them to typeset individual characters. Under normal +% conditions, you should not need to use these macros in DN files. +% +\def\subscr#1{\/\itdim=\lastkern% +\unkern\kern-\itdim\lower\subdep\hbox to\itdim{#1\hfil}} +\def\0{\llap{\char13}} +\def\1{\llap{\char32}} +\def\2{\llap{\char92}} +\def\3#1w{{\char"#1}} +\def\4{\llap{\char123}} +\def\5{\llap{\char125}} +\def\6#1{\leavevmode\setbox0=\hbox{#1}\subdep=\dp0\hbox{#1\subscr{\char126}}} +\def\7#1{\leavevmode\setbox0=\hbox{#1}\subdep=\dp0\hbox{#1\subscr{\char0}}} +\def\8#1{\leavevmode\setbox0=\hbox{#1}\subdep=\dp0\hbox{#1\subscr{\char1}}} +\def\9#1{\leavevmode\setbox0=\hbox{#1}\subdep=\dp0\hbox{#1\subscr{\char2}}} +\def\qb#1{\leavevmode\setbox0=\hbox{#1}\subdep=\dp0\hbox{#1\subscr{\char253}}} +\def\qq#1{\leavevmode\setbox0=\hbox{#1}\subdep=\dp0\hbox{#1\subscr{\char94}}} +\def\qx#1{\leavevmode\setbox0=\hbox{#1}\subdep=\dp0\hbox{#1\subscr{\char14}}} +\def\qy#1{\leavevmode\setbox0=\hbox{#1}\subdep=\dp0\hbox{#1\subscr{\char31}}} +\def\qz#1{\leavevmode\setbox0=\hbox{#1}\subdep=\dp0\hbox{#1\subscr{\char124}}} +\def\qa#1#2{\leavevmode\setbox0=\hbox{#1}\subdep=\dp0\hbox{#1% +\subscr{\char253\kern0.5ex\lower2.5ex\hbox{\char#2}\kern-1.5ex}}} +\def\qc#1#2{\leavevmode\setbox0=\hbox{#1}\subdep=\dp0\hbox{#1% +\subscr{\char126\kern0.5ex\lower2.5ex\hbox{\char#2}\kern-1.5ex}}} +\def\qva{\kern0.5ex\2\kern-0.5ex} +\def\qvb{\kern1ex\0\kern-1ex} +\def\qvc{\kern1ex\rdt\kern-1ex} +\def\?{\llap{\char3}} +\def\<{\llap{\char4}} +\def\rs{\rsize\thinspace} +\let\re=\thinspace +\def\rdt{\llap{\char19}} +% +% Initialization +% +\newlanguage\nohyphenation +\sethyph{255} +\let\pdn=\dvng +\let\pdnb=\dvngb +\let\pdni=\dvngi +\let\pdnbi=\dvngbi +\let\pdnbom=\dvngbom +\let\pdnbomb=\dvngbomb +\let\pdnbomi=\dvngbomi +\let\pdnbombi=\dvngbombi +\let\pdncal=\dvngcal +\let\pdncalb=\dvngcalb +\let\pdncali=\dvngcali +\let\pdncalbi=\dvngcalbi +\let\pdnp=\dvngp +\let\pdnpbom=\dvngpbom +\let\pdnpcal=\dvngpcal +\dnblskip=15pt +\let\rsize=\rm +\cmnum
\ No newline at end of file diff --git a/Master/texmf-dist/tex/plain/esint-type1/esint.tex b/Master/texmf-dist/tex/plain/esint-type1/esint.tex new file mode 100644 index 00000000000..d36aa286db0 --- /dev/null +++ b/Master/texmf-dist/tex/plain/esint-type1/esint.tex @@ -0,0 +1,82 @@ +% esint.tex 1.0 2005/06/21 -- macros for esint integral font +%%%@TeX-definition-file { +%%% filename = "esint.tex", +%%% version = "1.0", +%%% date = "2005/06/21", +%%% package = "esint 1.0", +%%% author = "Michael M. Tung", +%%% email = "mtung@mat.upv.es", +%%% address = "Universidad Politécnica de Valencia, +%%% Departamento de Matemática Aplicada, +%%% Camino de Vera, s/n, +%%% 46022 Valencia (Spain)", +%%% codetable = "USASCII", +%%% keywords = "TeX, plain TeX, style file", +%%% supported = "Maybe", +%%% abstract = "plain TeX macro to use the esint integral +%%% symbols available at CTAN or the website +%%% http://perso.wanadoo.fr/eddie.saudrais", +%%% copyright = "Copyright (c) 2005 Michael M. Tung", +%%% copying = "DISTRIBUTE THIS FILE AS YOU WISH.", +%%% dependencies = "esint10.pfb,esint10.tfm". +%%%} + +\message{1.0 <esint 2005/06/21} + +\font\esint=esint10 + +\def\int{\mathchoice +{\mathop{\raise14pt\hbox{\esint\char02\kern4pt}}} +{\mathop{\raise8pt\hbox{\esint\char01\kern1pt}}}{}{}} +\def\iint{\mathchoice +{\mathop{\raise14pt\hbox{\esint\char04\kern4pt}}} +{\mathop{\raise8pt\hbox{\esint\char03\kern1pt}}}{}{}} +\def\iiint{\mathchoice +{\mathop{\raise14pt\hbox{\esint\char06\kern4pt}}} +{\mathop{\raise8pt\hbox{\esint\char05\kern1pt}}}{}{}} +\def\iiiint{\mathchoice +{\mathop{\raise14pt\hbox{\esint\char08\kern4pt}}} +{\mathop{\raise8pt\hbox{\esint\char07\kern1pt}}}{}{}} +\def\dotsint{\mathchoice +{\mathop{\raise14pt\hbox{\esint\char10\kern4pt}}} +{\mathop{\raise8pt\hbox{\esint\char09\kern1pt}}}{}{}} +\def\oint{\mathchoice +{\mathop{\raise14pt\hbox{\esint\char12\kern4pt}}} +{\mathop{\raise8pt\hbox{\esint\char11\kern1pt}}}{}{}} +\def\oiint{\mathchoice +{\mathop{\raise14pt\hbox{\esint\char14\kern4pt}}} +{\mathop{\raise8pt\hbox{\esint\char13\kern1pt}}}{}{}} +\def\varoiint{\mathchoice +{\mathop{\raise14pt\hbox{\esint\char34\kern4pt}}} +{\mathop{\raise8pt\hbox{\esint\char33\kern1pt}}}{}{}} +\def\sqint{\mathchoice +{\mathop{\raise14pt\hbox{\esint\char16\kern4pt}}} +{\mathop{\raise8pt\hbox{\esint\char15\kern1pt}}}{}{}} +\def\sqiint{\mathchoice +{\mathop{\raise14pt\hbox{\esint\char18\kern4pt}}} +{\mathop{\raise8pt\hbox{\esint\char17\kern1pt}}}{}{}} +\def\ointclockwise{\mathchoice +{\mathop{\raise14pt\hbox{\esint\char24\kern4pt}}} +{\mathop{\raise8pt\hbox{\esint\char23\kern1pt}}}{}{}} +\def\ointctrclockwise{\mathchoice +{\mathop{\raise14pt\hbox{\esint\char26\kern4pt}}} +{\mathop{\raise8pt\hbox{\esint\char25\kern1pt}}}{}{}} +\def\varointclockwise{\mathchoice +{\mathop{\raise14pt\hbox{\esint\char28\kern4pt}}} +{\mathop{\raise8pt\hbox{\esint\char27\kern1pt}}}{}{}} +\def\varointctrclockwise{\mathchoice +{\mathop{\raise14pt\hbox{\esint\char30\kern4pt}}} +{\mathop{\raise8pt\hbox{\esint\char29\kern1pt}}}{}{}} +\def\fint{\mathchoice +{\mathop{\raise14pt\hbox{\esint\char32\kern4pt}}} +{\mathop{\raise8pt\hbox{\esint\char31\kern1pt}}}{}{}} +\def\landupint{\mathchoice +{\mathop{\raise14pt\hbox{\esint\char36\kern4pt}}} +{\mathop{\raise8pt\hbox{\esint\char35\kern1pt}}}{}{}} +\def\landdownint{\mathchoice +{\mathop{\raise14pt\hbox{\esint\char38\kern4pt}}} +{\mathop{\raise8pt\hbox{\esint\char37\kern1pt}}}{}{}} + +% +% end of file esint.tex +% diff --git a/Master/texmf-dist/tex/plain/etex/etex.src b/Master/texmf-dist/tex/plain/etex/etex.src new file mode 100644 index 00000000000..d7857c8e809 --- /dev/null +++ b/Master/texmf-dist/tex/plain/etex/etex.src @@ -0,0 +1,892 @@ +%% e-TeX V2.1;0 +%% Revision-date: 01-FEB-1999 22:36:22 /PB +%% Revision-history: (at-end) + +% The version number in the first line is compared with the corresponding +% element in e-TeX, and an error reported if incompatibility is detected. +% The cycle and revision numbers (that is, the element(s) following the +% period) are not used in this comparison, allowing enhancements to be made to +% this module and recorded in its header without introducing a risk of conflict. +% +% This allows to use this file with e-TeX versions 2.0 and 2.1! +% +% Other files whose headers must be kept in synch include "etexdefs.lib" and +% "language.def". + +% This is "etex.src", the (e-TeX) source file for the "etex" format file. +% To build the format from it, use one of the following commands or the +% local equivalent: + +% Generic: einitex *etex.src \dump +% emTeX: etex -i *etex.src \dump +% VMS: etex /init /noformat *"etex.src \dump" + +% Assume a purely IniTeX environment and set up a minimal \catcode r\'egime + +\catcode `\{=1 +\catcode `\}=2 +\catcode `\#=6 +\catcode `\^=7 +\catcode `\@=\catcode `\A + +% Define the basic error-reporting and abort mechanisms: + +\def \et@xmsg #1#2% + {\begingroup + \def \n {^^J}% + \def \ { }% + \newlinechar=\expandafter `\n + \if E#1% + \errorcontextlines=0 + \errmessage {e-TeX error: #2}% + \else + \message {\n ! e-TeX \if I#1 message% + \else \if W#1 warning% + \else \if F#1 fatal error% + \else + \ unknown (#1)% + \fi + \fi + \fi: #2% + }% + \fi + \endgroup + } + +% Note: a future version may report errors in the %<fac>-<s>-<code>[, <text>] +% format, allowing the more verbose <text>s to be read from file rather than +% stored in the format. + +\def \et@xabort #1% + {\et@xmsg {F}{#1}% + \batchmode + \end + } + +% Make sure this file is being read by e-TeX in extended mode; +% If it is, prepare to check version/revision compatibility, otherwise abort. + +\ifx \undefined \eTeXversion + \et@xabort {this file can be processed only in extended mode;\n + \ \ did you perhaps forget the asterisk?% + }% +\else + \begingroup + \catcode `\%=12 + \catcode `\?=14 + \xdef \et@xfilehdr + {\detokenize {%% e-TeX V}\the \eTeXversion \eTeXrevision}? + \xdef \et@xlibhdr + {\detokenize {%% e-TeXlib V}\the \eTeXversion \eTeXrevision}? + \endgroup +\fi + +% Assume extended mode, but no additional \catcodes/\defs yet; +% set up a simple e-TeX condition-reporting system: + +\def \et@xinf #1{\et@xmsg {I}{#1}} %%% not currently used +\def \et@xwarn #1{\et@xmsg {W}{#1}} +\def \et@xerr #1#2{{\errhelp={#2}\et@xmsg {E}{#1}}} + +% deactivate the processing of patterns and exceptions; these will be +% reinstated later, after the \uselanguage mechanism has been defined. + +\let \et@xpatterns=\patterns +\def \patterns + {\begingroup + \everyeof={\fi \endgroup}% + \message {[skipping from \noexpand \patterns to end-of-file...]}% + \iffalse + } + +% Read "plain.tex" (\patterns & \hyphenation will be skipped) + +\input plain + +% restore the catcode of commercial-at (@), which will just have been clobbered + +\catcode `\@=\catcode `\A + +% Assume an extended Plain environment (i.e. there are no longer any +% restrictions on the coding techniques we can use). First prepare to +% carry out consistency checks on the file headers and the current e-TeX +% version/revision levels: + +\newread \et@xinput + +\def \etexhdrchk #1#2% + {\openin \et@xinput=#2 + \ifeof \et@xinput + \chardef \etexstatus=0 % V1.0-1 + \else + \begingroup + \endlinechar=-1 + \readline \et@xinput to \et@xbuf + \closein \et@xinput + \def \p@rtition ##1.##2\endp@rtition {##1}% V2.1%0 + \xdef \et@xbuf + {\expandafter \p@rtition \et@xbuf .\endp@rtition}% V2.1;0 + \xdef \et@xtmp {\csname et@x#1hdr\endcsname}% + \xdef \et@xtmp + {\expandafter \p@rtition \et@xtmp .\endp@rtition}% V2.1;0 + \endgroup + \ifx \et@xtmp \et@xbuf + \chardef \etexstatus=2 % V1.1;4 + \else + \chardef \etexstatus=1 % V1.1;4 + \fi + \fi + } + +% Check the version number of this file: + +\def \et@xfmtsrc {etex.src} +\etexhdrchk {file} {\et@xfmtsrc} +\ifcase \etexstatus + \et@xerr {unable to open format source file "\et@xfmtsrc";} + {This should not happen; please ensure that your system + allows a file to be opened for reading more than once + concurrently.% + }% +\or + \et@xwarn {format source file "\et@xfmtsrc" has wrong header;\n + \ \ expected: "\et@xfilehdr"; found: "\et@xbuf";% + }% + {You are using a version of e-TeX which may be incompatible + with the source for the format file you are trying to + compile; please ensure that you have the most recent + version of each. I will proceed, but you should treat + the results with caution...% + }% +\fi + +% Module handling now implemented (V1.0-2) + +\def \module #1{\iftrue} +\let \endmodule=\fi + +\newtoks \et@xtoks + +\def \et@xl@@d #1 #2\endl@ad %%% the "#1 #2" code avoids trailing spaces + {\ifcsname module:#1\endcsname + \et@xwarn {duplicate module name "#1"}% + \else + \csname module:#1\endcsname %%% we exploit the side-effect explicitly + \et@xtoks=\expandafter + {\the \et@xtoks + \expandafter \let \csname module:#1\endcsname=\undefined + }% + \fi + } + +\def \et@xl@ad #1#2,#3\endl@ad %%% the #1#2 code avoids spurious leading spaces + {\et@xl@@d #1#2 \endl@ad + \if *#3* + \let \n@xt=\relax + \else + \def \n@xt {\et@xl@ad #3\endl@ad}% + \fi + \n@xt + } + +\def \et@xload #1 %%% needed because of the embedded \ifs... + {\def \module ##1% + {\unless + \ifcsname module:##1\endcsname + \message {Skipping module "##1";}% + \else + \message {Loading module "##1";}% + }% + \input #1 + \def \module ##1{\iftrue}% + } + +\def \load #1 from #2 %%% selective module loading from an e-TeX library file + {\etexhdrchk {lib} {#2}% + \ifcase \etexstatus + \et@xerr {unable to open library file "#2"; load aborted.} + {I got an <eof> on trying to open your library file; + please make sure it exists, is readable and is not locked.% + }% + \or + \et@xerr {library file "#2" has wrong header;\n + \ \ expected: "\et@xlibhdr"; found: "\et@xbuf";\n + \ \ load aborted.% + }% + {The first line of your library does not start with + the correct e-TeX header; you may need to update the + file to be compatible with the current version of + e-TeX, or you may simply have specified the wrong file.% + }% + \else + \et@xtoks={\et@xtoks={}}% + \et@xl@ad #1,\endl@ad + \et@xload {#2} + \the \et@xtoks + \fi + } + +\load interactionmodes from etexdefs.lib %%% \load <foo>[, <bar>...] from <baz> + +\def \@sk #1#2#3% + {\ifnum \interactionmode=\interactionmodes {errorstop} %%% V2.0;15 + \def \pr@mpt {\csname #1 \endcsname}% + \edef \pr@mptloop {{\escapechar=-1 \global \readline 16 to \pr@mpt}}% + \loop \pr@mptloop + \ch@ckforyn \pr@mpt {#2}% + \ifb@dresponse + \message {Please answer Y[es] or N[o]}% + \repeat + \else + \def \pr@mpt {#3}% + \ch@ckforyn \pr@mpt {#2}% + \fi + } + +\def \ch@ckforyn #1#2% Bernd Raichle's improved version, V1.0-1 + {\edef \@nswer {#1}% + \def \p@rse ##1##2\endp@rse + {\lowercase {\if y##1}\b@dresponsefalse \csname #2true\endcsname + \else \lowercase {\if n##1}\b@dresponsefalse \csname #2false\endcsname + \else + \b@dresponsetrue + \fi + \fi + }% + \expandafter \p@rse \@nswer \endp@rse + } + +\def \usef@llback %%% V1.0-3 + {\message {Using fallback mode (USenglish)}% + \addlanguage {USenglish}{hyphen}{}{2}{3}% + } + +% OK, that's all the utilities defined; on with the real work: +% First, re-instate \patterns: + +\let \patterns=\et@xpatterns + +% Define the language-handling commands + +\def \et@xlang {\csname newlanguage\endcsname} + +\def \uselanguage #1% + {\ifcsname lang@#1\endcsname + \language=\csname lang@#1\endcsname + \lefthyphenmin=\csname lhm@#1\endcsname + \righthyphenmin=\csname rhm@#1\endcsname + \ifdefined \uselanguage@hook % V1.0-1 + \uselanguage@hook {#1}% % V1.0-1 + \fi + \else + \et@xerr {language #1 undefined.}% + {You are trying to use a language which has not previously + been defined; remember that any language you want to use + will need to have been specified at the time the format + was created.% + }% + \fi + } + +\def \addlanguage #1#2#3#4#5% language patterns exceptions lhm rhm + {\expandafter \et@xlang \csname lang@#1\endcsname + \expandafter \chardef \csname lhm@#1\endcsname=#4 % V1.0-1 + \expandafter \chardef \csname rhm@#1\endcsname=#5 % V1.0-1 + \uselanguage {#1}% + \input #2 + \if *#3*\else \input #3 \fi + \ifdefined \addlanguage@hook % V1.0-4 + \addlanguage@hook {#1}% % V1.0-4 + \fi + \edef \fmtversion {\fmtversion/#1}% + } + +% Decrement \count 19, because \newlanguage will increment it again + +\advance \count 19 by -1 + +% We are about to try to process a user/site-specific file "language.def", +% which establishes a Babel-like language selection environment. Since +% there is always a risk of a spurious file of that name being found, +% we look for an e-TeX header in the first line. If the file can be opened, +% but doesn't have the right header, we interrogate the user as to whether +% to use fallback mode; in this mode, we simply establish USenglish as the +% sole language, with the et@x patterns, exceptions and left- and right- +% hyphen minima for TeX. If we can't interrogate the user (e.g. not in +% \errorstopmode), or if the user elects not to use fallback, we abort; +% if the file can't be found/opened, we use fallback unconditionally. + +\newif \ifb@dresponse +\newif \ifusef@llback + +\def \l@ngdefnfile {language.def} + +\etexhdrchk {file} {\l@ngdefnfile} +\ifcase \etexstatus + \et@xwarn {unable to open file "\l@ngdefnfile";}% + \usef@llback % unable to open "language.def" +\or + \et@xwarn {file "\l@ngdefnfile" has wrong header;\n + \ \ expected: "\et@xfilehdr"; found: "\et@xbuf";% + }% + \@sk {Use fallback?} {usef@llback} {y}% + \ifusef@llback + \usef@llback + \else + \input \l@ngdefnfile % use "language.def" after warning + \fi +\else + \input \l@ngdefnfile % "language.def" open & valid +\fi + +% All that was just to set up natural language handling... +% The "real" work of "etex.src", however, is to augment the non-primitives +% of Plain.TeX to incorporate e-TeX specific features, and to add new +% non-primitives to simplify access to new e-TeX specific primitives. + +\message {Augmenting the Plain TeX definitions:} +\message {\string \tracingall;} + +\def \tracingall + {\tracingonline=\@ne + \tracingcommands=\thr@@ % plain.tex has \tw@ + \tracingstats=\tw@ + \tracingpages=\@ne + \tracingoutput=\@ne + \tracinglostchars=\tw@ % plain.tex has \@ne + \tracingmacros=\tw@ + \tracingparagraphs=\@ne + \tracingrestores=\@ne + \showboxbreadth=\maxdimen + \showboxdepth=\maxdimen + \errorstopmode + \tracinggroups=\@ne + \tracingifs=\@ne + \tracingscantokens=\@ne + \tracingnesting=\@ne + \tracingassigns=\tw@ + } + +\message {Adding new e-TeX definitions:} + +\message {\string \eTeX,} +\def \eTeX {$\varepsilon$-\TeX} %%% the simple version, not suitable for maths; + %%% a more sophisticated one may find its way + %%% into "etexdefs.lib" in due course. + +\message {\string \loggingall,} +\def \loggingall {\tracingall \tracingonline=\z@} + +\message {\string \tracingnone,} +\def \tracingnone + {\tracingassigns=\z@ + \tracingnesting=\z@ + \tracingscantokens=\z@ + \tracingifs=\z@ + \tracinggroups=\z@ + \showboxdepth=\thr@@ + \showboxbreadth=5 + \tracingrestores=\z@ + \tracingparagraphs=\z@ + \tracingmacros=\z@ + \tracinglostchars=\@ne + \tracingoutput=\z@ + \tracingpages=\z@ + \tracingstats=\z@ + \tracingcommands=\z@ + \tracingonline=\z@ + } + +\message {register allocation;} + +\newcount \et@xins % our insertion counter (\insc@unt is used differently) + +% We have to adjust the Plain TeX register allocation counts for our +% slightly modified book-keeping: + +\advance \count 10 by 1 % \count 10=23 % allocates \count registers 23, 24, ... +\advance \count 11 by 1 % \count 11=10 % allocates \dimen registers 10, 11, ... +\advance \count 12 by 1 % \count 12=10 % allocates \skip registers 10, 11, ... +\advance \count 13 by 1 % \count 13=10 % allocates \muskip registers 10, 11, ... +\advance \count 14 by 1 % \count 14=10 % allocates \box registers 10, 11, ... +\advance \count 15 by 1 % \count 15=10 % allocates \toks registers 10, 11, ... +\advance \count 16 by 1 % \count 16=0 % allocates input streams 0, 1, ... +\advance \count 17 by 1 % \count 17=0 % allocates output streams 0, 1, ... +\advance \count 18 by 1 % \count 18=4 % allocates math families 4, 5, ... +\advance \count 19 by 1 % \count 19=0 % allocates \language codes 0, 1, ... + +\et@xins=\insc@unt % \et@xins=255 % allocates insertions 254, 253, ... + +% We don't change the Plain TeX definitions of \newcount, etc., but the +% \alloc@ macro doing the actual work is redefined. + +% When the normal register pool for \count, \dimen, \skip, \muskip, +% \box, or \toks registers is exhausted, we switch to the extended pool. + +\def \alloc@ #1#2#3#4#5% + {\ifnum \count 1#1 < #4% make sure there's still room + \allocationnumber=\count 1#1 + \global \advance \count 1#1 by \@ne + \global #3#5=\allocationnumber + \wlog {\string #5=\string #2\the \allocationnumber}% + \else \ifnum #1 < 6 + \begingroup \escapechar=\m@ne + \expandafter \alloc@@ \expandafter {\string #2}#5% + \else + \errmessage {No room for a new #2}% + \fi + \fi + } + +% The \expandafter construction used here allows the generation of +% \newcount and \globcount from #1=count. Moreover (and more important) +% this construction avoids the appearance of \outer macros inside +% macro definitions or conditionals. + +\def \alloc@@ #1#2% + {\endgroup % restore \escapechar + \message {Normal \csname#1\endcsname register pool exhausted, + switching to extended pool.}% + \global \expandafter + \let \csname new#1\expandafter \endcsname \csname glob#1\endcsname + \csname new#1\endcsname#2% + } + +% We do change the Plain TeX definition of \newinsert + +\outer \def \newinsert #1%make sure there's still room for ... + {\ch@ck 0 \et@xins \count % ... a \count, ... + {\ch@ck 1 \et@xins \dimen % ... \dimen, ... + {\ch@ck 2 \et@xins \skip % ... \skip, ... + {\ch@ck 4 \et@xins \box % ... and \box register + {\global \advance \et@xins by \m@ne + \unless + \ifnum \insc@unt < \et@xins + \global \insc@unt=\et@xins + \fi + \allocationnumber=\et@xins + \global \chardef #1=\allocationnumber + \wlog {\string #1=\string \insert \the \allocationnumber}% + }% + }% + }% + }% + } + +\def \ch@ck #1#2#3#4% + {\ifnum \count 1#1 < #2#4\else \errmessage {No room for a new #3}\fi} + +% And we define \reserveinserts, so that you can say \reserveinserts{17} +% in order to reserve room for up to 17 additional insertion classes that will +% not be taken away by \newcount, \newdimen, \newskip, or \newbox. + +\outer \def \reserveinserts#1% + {\global \insc@unt=\numexpr \et@xins \ifnum #1 > \z@ -#1\fi \relax} + +\message {extended register allocation;} + +% Now, we define \globcount, \globbox, etc., so that you can say +% \globcount\foo and \foo will be defined (with \countdef) to be the +% next count register from the vastly larger but somewhat less efficient +% extended register pool. We also define \loccount, etc., but these +% register definitions are local to the current group. + +\count 260=277 % globally allocates \count registers 277, 278, ... +\count 261=\@cclvi % globally allocates \dimen registers 256, 257, ... +\count 262=\@cclvi % globally allocates \skip registers 256, 257, ... +\count 263=\@cclvi % globally allocates \muskip registers 256, 257, ... +\count 264=\@cclvi % globally allocates \box registers 256, 257, ... +\count 265=\@cclvi % globally allocates \toks registers 256, 257, ... +\count 266=\@ne % globally allocates \marks classes 1, 2, ... + +\def \et@xmaxregs {32768} + +\count 270=\et@xmaxregs % locally allocates \count registers 32767, 32766, ... +\count 271=\et@xmaxregs % ditto for \dimen registers +\count 272=\et@xmaxregs % ditto for \skip registers +\count 273=\et@xmaxregs % ditto for \muskip registers +\count 274=\et@xmaxregs % ditto for \box registers +\count 275=\et@xmaxregs % ditto for \toks registers +\count 276=\et@xmaxregs % ditto for \marks classes + +% \count registers 256-259 and 267-269 are not (yet) used + +\outer \def \globcount {\et@xglob 0 \count \countdef} + \def \loccount {\et@xloc 0 \count \countdef} +\outer \def \globdimen {\et@xglob 1 \dimen \dimendef} + \def \locdimen {\et@xloc 1 \dimen \dimendef} +\outer \def \globskip {\et@xglob 2 \skip \skipdef} + \def \locskip {\et@xloc 2 \skip \skipdef} +\outer \def \globmuskip {\et@xglob 3 \muskip \muskipdef} + \def \locmuskip {\et@xloc 3 \muskip \muskipdef} +\outer \def \globbox {\et@xglob 4 \box \mathchardef} + \def \locbox {\et@xloc 4 \box \mathchardef} +\outer \def \globtoks {\et@xglob 5 \toks \toksdef} + \def \loctoks {\et@xloc 5 \toks \toksdef} +\outer \def \globmarks {\et@xglob 6 \marks \mathchardef} + \def \locmarks {\et@xloc 6 \marks \mathchardef} + +\let\newmark=\globmarks %%% 2.0;14 +\let\newmarks=\globmarks + +\def \et@xglob #1#2#3#4% + {\et@xchk #1#2% make sure there's still room + {\allocationnumber=\count 26#1 + \global \advance \count 26#1 by \@ne + \global #3#4=\allocationnumber + \wlog {\string #4=\string #2\the \allocationnumber}% + }% + } + +\def \et@xloc#1#2#3#4% + {\et@xchk #1#2% make sure there's still room + {\advance \count 27#1 by \m@ne + \allocationnumber=\count 27#1 + #3#4=\allocationnumber + \wlog {\string #4=\string #2\the \allocationnumber \space (local)}% + }% + } + +\def \et@xchk #1#2#3% + {\ifnum \count 26#1 < \count 27#1 + #3% + \else + \errmessage {No room for a new #2}% + \fi + } + +% Next we define \globcountblk, \loccountblk, etc., so that one can +% write \globcountblk\foo{17} and \foo will be defined (with \mathchardef) +% as the first (the zeroth?) of a block of 17 consecutive registers. +% Thus the user is intended to reference elements <\foo+0> to <\foo+n-1>, +% where n is the length of the block allocated. + +\outer \def \globcountblk {\et@xgblk 0 \count} + \def \loccountblk {\et@xlblk 0 \count} +\outer \def \globdimenblk {\et@xgblk 1 \dimen} + \def \locdimenblk {\et@xlblk 1 \dimen} +\outer \def \globskipblk {\et@xgblk 2 \skip} + \def \locskipblk {\et@xlblk 2 \skip} +\outer \def \globmuskipblk {\et@xgblk 3 \muskip} + \def \locmuskipblk {\et@xlblk 3 \muskip} +\outer \def \globboxblk {\et@xgblk 4 \box} + \def \locboxblk {\et@xlblk 4 \box} +\outer \def \globtoksblk {\et@xgblk 5 \toks} + \def \loctoksblk {\et@xlblk 5 \toks} +\outer \def \globmarksblk {\et@xgblk 6 \marks} + \def \locmarksblk {\et@xlblk 6 \marks} + +% And, both to provide a higher-level interface to the block allocation +% scheme, and to demonstrate possible applications of the new \...expr +% primitives, we also define \globcountvector and \loccountvector (etc) +% which allow the user to access elements with embedded arithmetic, as in + +% \globcountvector \foo {12} +% \foo {\count 0 + 3} = \foo {\count 1 * 2} + +\outer \def \globcountvector {\et@xgvec 0 \count} + \def \loccountvector {\et@xlvec 0 \count} +\outer \def \globdimenvector {\et@xgvec 1 \dimen} + \def \locdimenvector {\et@xlvec 1 \dimen} +\outer \def \globskipvector {\et@xgvec 2 \skip} + \def \locskipvector {\et@xlvec 2 \skip} +\outer \def \globmuskipvector {\et@xgvec 3 \muskip} + \def \locmuskipvector {\et@xlvec 3 \muskip} +\outer \def \globboxvector {\et@xgvec 4 \box} + \def \locboxvector {\et@xlvec 4 \box} +\outer \def \globtoksvector {\et@xgvec 5 \toks} + \def \loctoksvector {\et@xlvec 5 \toks} +\outer \def \globmarksvector {\et@xgvec 6 \marks} + \def \locmarksvector {\et@xlvec 6 \marks} + +\def \et@xgblk #1#2#3#4% + {\et@xchkblk #1#2{#4}% make sure there's still room + {\allocationnumber=\count 26#1 + \global \advance \count 26#1 by #4% + \global \mathchardef #3=\allocationnumber + \wlog {\string #3=\string #2blk{\number #4} at \the \allocationnumber}% + }% + } + +\def \et@xlblk #1#2#3#4% + {\et@xchkblk #1#2{#4}% make sure there's still room + {\advance \count 27#1 by -#4% + \allocationnumber=\count 27#1 + \mathchardef #3=\allocationnumber + \wlog {\string #3=\string #2blk{\number #4} + at \the \allocationnumber \space (local)% + }% + }% + } + +\begingroup +\catcode `\# = 12 +\gdef \et@xhash {#} +\endgroup + +\def \et@xgvec #1#2#3#4% + {\et@xchkblk #1#2{#4}% make sure there's still room + {\allocationnumber=\count 26#1 + \global \advance \count 26#1 by #4% + \ifx #2\box + \def \2{}% + \else \ifx #2\marks + \def \2{}% + \else + \def \2{\string #2}% + \fi + \fi + \xdef #3##1{\2 \noexpand \numexpr \the \allocationnumber+##1\relax}% + \wlog {\string #3 {\et@xhash 1} = + \2 {\the \allocationnumber+\et@xhash 1} (global #2 vector)% + }% + }% + } + +\def \et@xlvec #1#2#3#4% + {\et@xchkblk #1#2{#4}% make sure there's still room + {\advance \count 27#1 by -#4% + \allocationnumber=\count27#1 + \mathchardef #3=\allocationnumber + \ifx #2\box + \def \2{}% + \else \ifx #2\marks + \def \2{}% + \else + \def \2{\string #2}% + \fi + \fi + \edef #3##1{\2 \noexpand \numexpr \the \allocationnumber+##1\relax}% + \wlog {\string #3 {\et@xhash 1} = + \2 {\the \allocationnumber+\et@xhash 1} (local #2 vector)% + }% + }% + } + +\def \et@xchkblk #1#2#3#4% + {\ifnum #3 < \z@ + \errmessage {Negative register block size \number #3}% + \else \ifnum \numexpr \count 26#1+#3 > \count 27#1 + \errmessage {No room for new #2block of size \number#3}% + \else + #4% + \fi + \fi + } + +% In an attempt to reduce the overheads of e-TeX, we recycle all possible +% resources, including (as a penultimate step) the recycler itself... +% The user can circumvent (or force) this during format creation, +% by \letting \ifrecycle=\iffalse (or \iftrue, to force it). + +% As this file has grown by accretion, it is possible that we are no +% longer recycling all the resources we could; this will be investigated. + +\def \mayber@cycle {\expandafter \ifrecycle} +\def \forcer@cycle {\expandafter \iftrue} + +\ifdefined \ifrecycle + \mayber@cycle +\else + \forcer@cycle +\fi + +% There's a concealed \if... lurking here, which explains the +% strange indentation of the code that follows (V1.0-1) + + \def \r@cycle #1% + {\ifdefined #1 + \message {\string #1,}\let #1=\und@fined + \else + \message {\string #1 (not defined),} + \fi + } + {\newlinechar=`\! \message {!Recycling:}} + + \r@cycle \addlanguage + \r@cycle \@nswer + \r@cycle \@sk + \r@cycle \b@dresponsetrue + \r@cycle \b@dresponsefalse + \r@cycle \ch@ckforyn + \r@cycle \mayber@cycle + \r@cycle \et@xabort + \r@cycle \et@xbuf + \r@cycle \et@xfmtsrc + \r@cycle \et@xfilehdr + \r@cycle \et@xinf + \r@cycle \et@xpatterns +% \r@cycle \ifb@dresponse +% \r@cycle \ifusef@llback + \r@cycle \l@ngdefnfile + \r@cycle \n@xt + \r@cycle \p@rse + \r@cycle \pr@mpt + \r@cycle \pr@mptloop + \r@cycle \forcer@cycle + \r@cycle \usef@llback + \r@cycle \usef@llbacktrue + \r@cycle \usef@llbackfalse + +% The following are retained, since they may be needed by user code; with a few +% (regrettable) exceptions, all of these are given the \etex or \et@x prefix, +% to reduce as far as possible the risk of them clashing with other used-defined +% names. + +% The e-TeX team are willing to change the names of the remaining, at-risk, +% control sequences if it is demonstrated that the current names cause problems +% or difficulties. + + \def \r@tain #1% + {\ifdefined #1 + \message {\string #1,} + \else + \message {\string #1 (not defined),} + \fi + } + {\newlinechar=`\! \message {!Retaining:}} + + \r@tain \et@xerr + \r@tain \et@xinput + \r@tain \et@xlibhdr + \r@tain \et@xmsg + \r@tain \et@xtoks + \r@tain \et@xwarn + \r@tain \et@xl@@d + \r@tain \et@xl@ad + \r@tain \et@xload + \r@tain \et@xlang + \r@tain \et@xhash + \r@tain \eTeX + \r@tain \etexhdrchk +% \r@tain \endmodule + \r@tain \etexstatus + \r@tain \module + \r@tain \uselanguage + + \r@cycle \r@tain + \r@cycle \r@cycle + +\fi + +% And finally re-catcode commercial-at + +\catcode `\@=12 +\endinput + +%% Revision-history: + +01-FEB-1999: 2.1;0 Allow file to be used with e-TeX versions 2.0 and 2.1 + +25-MAR-1998: 2.0;19 Improved log message for \{glob|loc}{marks|box}vector (PEB) + +24-MAR-1998: 2.0;18 Optimisation of one section made (DC & PEB), + a couple of \if tests made more robust, + and spacing improved in one macro. + +24-MAR-1998: 2.0;17 Coding styles unified and all references to Peter + Breitenlohner eliminated from main code + +23-MAR-1998: 2.0;16 Continued from 2.0;15 + +20-MAR-1998: 2.0;15 Changes made here and in "etexdefs.lib" to + improve compatibility with LaTeX, and + \{glob,loc}{marks,box}vector re-thought. + +11-MAR-1998: 2.0;14 \newmark made synonym for \newmarks / PT + +10-MAR-1998: 2.0;13 Missing brace re-inserted in \...lvec /PT + +10-MAR-1998: 2.0;12 Typo corrected in Peter's name /PT + +10-MAR-1998: 2.0;11 "\...lvec" failed to use \et@xhash; fixed / PT + +10-MAR-1998: 2.0;10 \h@sh -> \et@xhash /PT + +06-MAR-1998: 2.0;9 Final tweaks by PEB ! + +05-MAR-1998: <missing version number> Final tweaks by PT + +28-Feb-1998: 2.0;8 Major re-work by PEB + +24-Feb-1998: 2.0;7 \tracingnesting -> \tw@ + +24-FEB-1998: 2.0;6 version-mismatch reduced in severity; + \tracingall and ...none improved; + aesthetic spaces around "=" removed + +24-Jan-1998: 2.0;5: block allocation of registers added + +21-Jan-1998: 2.0;4: released to e-TeX team for testing/comments + +20-Jan-1998: \glob... implemented, and coding simplified by + the implementation and use of of \max@xpr + +06-Jan-1998: Alpha-testing complete of extended and local register allocation. + +29-Dec-1997: The "%!" convention replaced by a corresponding "%%": + this should avoid any inadvertent conflict with Adobe conventions. + + \tracingall augmented with + \tracinglostchars=\tw@ %%% Q -- should this be default? + \tracingnesting=\@ne + + \tracingnone augmented. + +05-DEC-1997: A long-standing bug removed: left- and right- hyphenmin + were transposed in fallback mode :-((((( + +24-APR-1997: An interim release, to provide compatibility with Peter's + naming conventions for beta-test versions of e-TeX V2. + Consistency checking is now restricted to \eTeXversion, + and \eTeXrevision is ignored. + +01-NOV-1996: V1.1;5: Final stage? Checking that everything possible + is recycled whilst nothing that is needed is lost. Retained + names given \etex or \et@x prefix wherever possible. Some + potentially dangerous cs-names commented out of the recycle/retain + lists because they were synonyms of members of the if-else-fi set. + The definition of the e-TeX logo added: this had somehow slipped + through the net! Intended to be the final revision before public + release, but awaiting comments from other members of the team. + +31-OCT-1996: V1.1;4: errors noticed while proof-reading corrected; far + greater use made of concealed control sequences with + commercial-at (@); library file headers differentiated + from ordinary file headers; return-values for header-check + altered to allow fall-thru' if ok; fallback-use algorithm + significantly modified (major semantic shift). + +29-OCT-1996: V1.1;3: tidying up prior to release; careful check on + which control words can be re-cycled; \recycle made more + robust, to check whether one is trying to re-cycle something + that was never 'cycled' in the first place (PEB suggestion); + \et@xmsg re-written to use \message or \errmessage as necessary; + \errhelps provided for all places they might be referenced. + +27-OCT-1996: V1.1;2: minor version numbers re-introduced, using semi-colon + as delimiter and stopping pattern matching at the semi-colon; + \et@xfilehdr defined dynamically, based in \eTeXversion and + \eTeXrevision; \load now uses \etexhdrchk, so library + files are required to start with an e-TeX header; this will + have implications when e-TeX -> V2+, so this code should be + re-considered at this point. + +17-OCT-1996: V1.1: minor version numbers eliminated, to reduce the + need for users to update their "language.def" files. + +17-OCT-1996: V1.0-4: \addlanguage@hook added, version history moved to end. + +17-OCT-1996: Version 1.0-3 does away with the "fallback" file. + +16-OCT-1996: Version 1.0-2 implements module handling, so constant "3" + no longer used (see below). + +13-Oct-1996: Replaced \def by \chardef where possible; + eliminated dependency on "etexdefs.def", hard-coding + in the constant "3" (with comment) instead; + used Bernd's \ch@ckforyn; + re-catcoded `\@ earlier, to reduce number of \[if]csnames; + commented the strange indentation of the \recycles at end. + +11-Oct-1996: language handling commands modified (V1.0): PT/BR diff --git a/Master/texmf-dist/tex/plain/etex/etexdefs.lib b/Master/texmf-dist/tex/plain/etex/etexdefs.lib new file mode 100644 index 00000000000..1801dd78cbe --- /dev/null +++ b/Master/texmf-dist/tex/plain/etex/etexdefs.lib @@ -0,0 +1,85 @@ +%% e-TeXlib V2.0;8 24-MAR-1998 16:30:14 /PT + +% This is "etexdefs.def", the library file which +% defines symbolic names for e-TeX's constants. + +\module {grouptypes} +\def \grouptypes #1{\csname gr@up: #1\endcsname} +\def \etexgroupdef #1 + {\expandafter \expandafter \expandafter \chardef \grouptypes {#1}} +\etexgroupdef bottomlevel = 0 %%% {code for the outside world} +\etexgroupdef simple = 1 %%% {code for local structure only} +\etexgroupdef hbox = 2 %%% {code for `\.{\\hbox}\grp'} +\etexgroupdef adjustedhbox = 3 %%% {code for `\.{\\hbox}\grp' in vertical mode} +\etexgroupdef vbox = 4 %%% {code for `\.{\\vbox}\grp'} +\etexgroupdef vtop = 5 %%% {code for `\.{\\vtop}\grp'} +\etexgroupdef align = 6 %%% {code for `\.{\\halign}\grp', `\.{\\valign}\grp'} +\etexgroupdef noalign = 7 %%% {code for `\.{\\noalign}\grp'} +\etexgroupdef output = 8 %%% {code for output routine} +\etexgroupdef math = 9 %%% {code for, e.g, `\.{\char'136}\grp'} +\etexgroupdef disc = 10 %%% {code for `\.{\\discretionary}\grp\grp\grp'} +\etexgroupdef insert = 11 %%% {code for `\.{\\insert}\grp', `\.{\\vadjust}\grp'} +\etexgroupdef vcenter = 12 %%% {code for `\.{\\vcenter}\grp'} +\etexgroupdef mathchoice = 13 %%% {code for `\.{\\mathchoice}\grp\grp\grp\grp'} +\etexgroupdef semisimple = 14 %%% {code for `\.{\\begingroup...\\endgroup}'} +\etexgroupdef mathshift = 15 %%% {code for `\.{\$...\$}'} +\etexgroupdef mathleft = 16 %%% {code for `\.{\\left...\\right}'} +\endmodule + +\module {interactionmodes} +\def \interactionmodes #1{\csname m@de: #1\endcsname} +\def \etexmodedef #1 + {\expandafter \expandafter \expandafter \chardef \interactionmodes {#1}} +\etexmodedef batch = 0 %%% {omits all stops and omits terminal output} +\etexmodedef nonstop = 1 %%% {omits all stops} +\etexmodedef scroll = 2 %%% {omits error stops} +\etexmodedef errorstop = 3 %%% {stops at every opportunity to interact} +\endmodule + +\module {nodetypes} +\def \nodetypes #1{\csname n@de: #1\endcsname} +\def \etexnodedef #1 + {\expandafter \expandafter \expandafter \chardef \nodetypes {#1}} +\etexnodedef char = 0 %%% {|type| of character nodes} +\etexnodedef hlist = 1 %%% {|type| of hlist nodes} +\etexnodedef vlist = 2 %%% {|type| of vlist nodes} +\etexnodedef rule = 3 %%% {|type| of rule nodes} +\etexnodedef ins = 4 %%% {|type| of insertion nodes} +\etexnodedef mark = 5 %%% {|type| of a mark node} +\etexnodedef adjust = 6 %%% {|type| of an adjust node} +\etexnodedef ligature = 7 %%% {|type| of a ligature node} +\etexnodedef disc = 8 %%% {|type| of a discretionary node} +\etexnodedef whatsit = 9 %%% {|type| of special extension nodes} +\etexnodedef math = 10 %%% {|type| of a math node} +\etexnodedef glue = 11 %%% {|type| of that points to a glue specification} +\etexnodedef kern = 12 %%% {|type| of a kern node} +\etexnodedef penalty = 13 %%% {|type| of a penalty node} +\etexnodedef unset = 14 %%% {|type| for an unset node} +\etexnodedef maths = 15 %%% {|type| of nodes that occur only in maths mode} +\endmodule + +\module {iftypes} +\def \conditionaltypes #1{\csname @f: #1\endcsname} +\def \etexifdef #1 + {\expandafter \expandafter \expandafter \chardef \conditionaltypes {#1}} +\etexifdef charif = 1 +\etexifdef catif = 2 +\etexifdef numif = 3 +\etexifdef dimif = 4 +\etexifdef oddif = 5 +\etexifdef vmodeif = 6 +\etexifdef hmodeif = 7 +\etexifdef mmodeif = 8 +\etexifdef innerif = 9 +\etexifdef voidif = 10 +\etexifdef hboxif = 11 +\etexifdef vboxif = 12 +\etexifdef xif = 13 +\etexifdef eofif = 14 +\etexifdef trueif = 15 +\etexifdef falseif = 16 +\etexifdef caseif = 17 +\etexifdef definedif = 18 +\etexifdef csnameif = 19 +\etexifdef fontcharif = 20 +\endmodule diff --git a/Master/texmf-dist/tex/plain/fp/fp.tex b/Master/texmf-dist/tex/plain/fp/fp.tex new file mode 100644 index 00000000000..39f62d60b38 --- /dev/null +++ b/Master/texmf-dist/tex/plain/fp/fp.tex @@ -0,0 +1,49 @@ +%load the fp-package for TeX +\chardef\FPcatamp=\the\catcode`\@ +\catcode`@=11 + +\def\NeedsTeXFormat#1{} +\def\ProvidesPackage#1[#2]{} +\def\DeclareOption#1#2{} +\let\ProcessOptions\relax + +%the for-loop of latex2e +\def\@nnil{\@nil} +\def\@empty{} +\def\@fornoop#1\@@#2#3{} + +\def\@for#1:=#2\do#3{\edef\@fortmp{#2}\ifx\@fortmp\@empty \else + \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}\fi} + +\def\@forloop#1,#2,#3\@@#4#5{\def#4{#1}\ifx #4\@nnil \else + #5\def#4{#2}\ifx #4\@nnil \else#5\@iforloop #3\@@#4{#5}\fi\fi} + +\def\@iforloop#1,#2\@@#3#4{\def#3{#1}\ifx #3\@nnil + \let\@nextwhile\@fornoop \else + #4\relax\let\@nextwhile\@iforloop\fi\@nextwhile#2\@@#3{#4}} + +\edef\FP@loadedfiles{fp.tex} + +\def\FP@alreadyloaded#1{} +\def\FP@notyetloaded#1{ + \edef\FP@loadedfiles{\FP@loadedfiles,#1} + \input #1.sty +} +\def\RequirePackage#1{% + \let\FP@in@\FP@notyetloaded% + \edef\@tempb{#1}% + \@for\@tempa:=\FP@loadedfiles\do{% + \ifx\@tempa\@tempb% + \let\FP@in@\FP@alreadyloaded% + \fi% + }% + \FP@in@{#1}% +} + +\def\loop#1\repeat{\def\iterate{#1\relax\expandafter\iterate\fi}% + \iterate \let\iterate\relax} +\let\repeat=\fi + +\RequirePackage{fp} + +\catcode`\@=\FPcatamp diff --git a/Master/texmf-dist/tex/plain/gustlib/biblotex/biblotex.tex b/Master/texmf-dist/tex/plain/gustlib/biblotex/biblotex.tex new file mode 100644 index 00000000000..50a6d5f247c --- /dev/null +++ b/Master/texmf-dist/tex/plain/gustlib/biblotex/biblotex.tex @@ -0,0 +1,316 @@ +% 2 IX 1994 +% ========= +% +% To jest: +% BibloTeX ver.1.0 +% +% system makr do generowania bibliografii w systemie plain-TeX +% +% adaptacja: B.Licho¤ski 1994 +%----------------------------------- begin BibloTeX ---------------------- +%% @texfile{ +%% author = "Bogus/law Licho/nski", +%% version = "1.0", +%% date = "30 Mar 1994", +%% filename = "biblotex.tex", +%% address = "Gdynia ul. Kameliowa 17", +%% codetable = "ISO/ASCII", +%% supported = "yes", +%% docstring = "Definicje makr plain TeX dla programu BibTeX", +%% } +\edef\cite{\the\catcode`@}% +\catcode`@ = 11 +\let\@oldatcatcode = \cite +\chardef\@letter = 11 +\chardef\@other = 12 +\def\@innerdef#1#2{\edef#1{\expandafter\noexpand\csname #2\endcsname}}% +\@innerdef\@innernewcount{newcount}% +\@innerdef\@innernewdimen{newdimen}% +\@innerdef\@innernewif{newif}% +\@innerdef\@innernewwrite{newwrite}% +\def\@gobble#1{}% +\ifx\inputlineno\@undefined + \let\@linenumber = \empty % Pre-3.0. +\else + \def\@linenumber{\the\inputlineno:\space}% +\fi +\def\@futurenonspacelet#1{\def\cs{#1}% + \afterassignment\@stepone\let\@nexttoken= +}% +\begingroup % The grouping here avoids stepping on an outside use of `\\'. +\def\\{\global\let\@stoken= }% +\\ % now \@stoken is a space token (\\ is a control symbol, so that + % space after it is seen). +\endgroup +\def\@stepone{\expandafter\futurelet\cs\@steptwo}% +\def\@steptwo{\expandafter\ifx\cs\@stoken\let\@@next=\@stepthree + \else\let\@@next=\@nexttoken\fi \@@next}% +\def\@stepthree{\afterassignment\@stepone\let\@@next= }% +\def\@getoptionalarg#1{% + \let\@optionaltemp = #1% + \let\@optionalnext = \relax + \@futurenonspacelet\@optionalnext\@bracketcheck +}% +\def\@bracketcheck{% + \ifx [\@optionalnext + \expandafter\@@getoptionalarg + \else + \let\@optionalarg = \empty + \expandafter\@optionaltemp + \fi +}% +\def\@@getoptionalarg[#1]{% + \def\@optionalarg{#1}% + \@optionaltemp +}% +% +% From LaTeX. +% +\def\@nnil{\@nil}% +\def\@fornoop#1\@@#2#3{}% +\def\@for#1:=#2\do#3{% + \edef\@fortmp{#2}% + \ifx\@fortmp\empty \else + \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}% + \fi +}% +\def\@forloop#1,#2,#3\@@#4#5{\def#4{#1}\ifx #4\@nnil \else + #5\def#4{#2}\ifx #4\@nnil \else#5\@iforloop #3\@@#4{#5}\fi\fi +}% +\def\@iforloop#1,#2\@@#3#4{\def#3{#1}\ifx #3\@nnil + \let\@nextwhile=\@fornoop \else + #4\relax\let\@nextwhile=\@iforloop\fi\@nextwhile#2\@@#3{#4}% +}% +\@innernewif\if@fileexists +\def\@testfileexistence{\@getoptionalarg\@finishtestfileexistence}% +\def\@finishtestfileexistence#1{% + \begingroup + \def\extension{#1}% + \immediate\openin0 = + \ifx\@optionalarg\empty\jobname\else\@optionalarg\fi + \ifx\extension\empty \else .#1\fi + \space + \ifeof 0 + \global\@fileexistsfalse + \else + \global\@fileexiststrue + \fi + \immediate\closein0 + \endgroup +}% +\toks0 = {% +\def\bibliographystyle#1{% + \@readauxfile + \@writeaux{\string\bibstyle{#1}}% +}% +\let\bibstyle = \@gobble +\let\bblfilebasename = \jobname +\def\bibliography#1{% + \@readauxfile + \@writeaux{\string\bibdata{#1}}% + \@testfileexistence[\bblfilebasename]{bbl}% + \if@fileexists + \nobreak + \@readbblfile + \fi +}% +\let\bibdata = \@gobble +\def\nocite#1{% + \@readauxfile + \@writeaux{\string\citation{#1}}% +}% +\@innernewif\if@notfirstcitation +\def\cite{\@getoptionalarg\@cite}% +\def\@cite#1{% + \let\@citenotetext = \@optionalarg + \printcitestart + \nocite{#1}% + \@notfirstcitationfalse + \@for \@citation :=#1\do + {% + \expandafter\@onecitation\@citation\@@ + }% + \ifx\empty\@citenotetext\else + \printcitenote{\@citenotetext}% + \fi + \printcitefinish +}% +\def\@onecitation#1\@@{% + \if@notfirstcitation + \printbetweencitations + \fi + \expandafter \ifx \csname\@citelabel{#1}\endcsname \relax + \if@citewarning + \message{\@linenumber Undefined citation `#1'.}% + \fi + \expandafter\gdef\csname\@citelabel{#1}\endcsname{% + {\tt + \escapechar = -1 + \nobreak\hskip0pt + \expandafter\string\csname#1\endcsname + \nobreak\hskip0pt + }% + }% + \fi + \csname\@citelabel{#1}\endcsname + \@notfirstcitationtrue +}% +\def\@citelabel#1{b@#1}% +\def\@citedef#1#2{\expandafter\gdef\csname\@citelabel{#1}\endcsname{#2}}% +\def\@readbblfile{% + \ifx\@itemnum\@undefined + \@innernewcount\@itemnum + \fi + \begingroup + \def\begin##1##2{% + \setbox0 = \hbox{\biblabelcontents{##2}}% + \biblabelwidth = \wd0 + }% + \def\end##1{}% ##1 is `thebibliography' again. + \@itemnum = 0 + \def\bibitem{\@getoptionalarg\@bibitem}% + \def\@bibitem{% + \ifx\@optionalarg\empty + \expandafter\@numberedbibitem + \else + \expandafter\@alphabibitem + \fi + }% + \def\@alphabibitem##1{% + \expandafter \xdef\csname\@citelabel{##1}\endcsname {\@optionalarg}% + \ifx\biblabelprecontents\@undefined + \let\biblabelprecontents = \relax + \fi + \ifx\biblabelpostcontents\@undefined + \let\biblabelpostcontents = \hss + \fi + \@finishbibitem{##1}% + }% + \def\@numberedbibitem##1{% + \advance\@itemnum by 1 + \expandafter \xdef\csname\@citelabel{##1}\endcsname{\number\@itemnum}% + \ifx\biblabelprecontents\@undefined + \let\biblabelprecontents = \hss + \fi + \ifx\biblabelpostcontents\@undefined + \let\biblabelpostcontents = \relax + \fi + \@finishbibitem{##1}% + }% + \def\@finishbibitem##1{% + \biblabelprint{\csname\@citelabel{##1}\endcsname}% + \@writeaux{\string\@citedef{##1}{\csname\@citelabel{##1}\endcsname}}% + \ignorespaces + }% + \let\em = \bblem + \let\newblock = \bblnewblock + \let\sc = \bblsc + \frenchspacing + \clubpenalty = 4000 \widowpenalty = 4000 + \tolerance = 10000 \hfuzz = .5pt + \everypar = {\hangindent = \biblabelwidth + \advance\hangindent by \biblabelextraspace}% + \bblrm + \parskip = 1.5ex plus .5ex minus .5ex + \biblabelextraspace = .5em + \bblhook + \input \bblfilebasename.bbl + \endgroup +}% +\@innernewdimen\biblabelwidth +\@innernewdimen\biblabelextraspace +\def\biblabelprint#1{% + \noindent + \hbox to \biblabelwidth{% + \biblabelprecontents + \biblabelcontents{#1}% + \biblabelpostcontents + }% + \kern\biblabelextraspace +}% +\def\biblabelcontents#1{{\bblrm [#1]}}% +\def\bblrm{\rm}% +\def\bblem{\it}% +\def\bblsc{\ifx\@scfont\@undefined + \font\@scfont = plcsc10 + \fi + \@scfont +}% +\def\bblnewblock{\hskip .11em plus .33em minus .07em }% +\let\bblhook = \empty +\def\printcitestart{[}% left bracket +\def\printcitefinish{]}% right bracket +\def\printbetweencitations{, }% comma, space +\def\printcitenote#1{, #1}% comma, space, note (if it exists) +\let\citation = \@gobble +\@innernewcount\@numparams +\def\newcommand#1{% + \def\@commandname{#1}% + \@getoptionalarg\@continuenewcommand +}% +\def\@continuenewcommand{% + \@numparams = \ifx\@optionalarg\empty 0\else\@optionalarg \fi \relax + \@newcommand +}% +\def\@newcommand#1{% + \def\@startdef{\expandafter\edef\@commandname}% + \ifnum\@numparams=0 + \let\@paramdef = \empty + \else + \ifnum\@numparams>9 + \errmessage{\the\@numparams\space is too many parameters}% + \else + \ifnum\@numparams<0 + \errmessage{\the\@numparams\space is too few parameters}% + \else + \edef\@paramdef{% + \ifcase\@numparams + \empty No arguments. + \or ####1% + \or ####1####2% + \or ####1####2####3% + \or ####1####2####3####4% + \or ####1####2####3####4####5% + \or ####1####2####3####4####5####6% + \or ####1####2####3####4####5####6####7% + \or ####1####2####3####4####5####6####7####8% + \or ####1####2####3####4####5####6####7####8####9% + \fi + }% + \fi + \fi + \fi + \expandafter\@startdef\@paramdef{#1}% +}% +}% +\ifx\nobibtex\@undefined \the\toks0 \fi +\def\@readauxfile{% + \if@auxfiledone \else % remember: \@auxfiledonetrue if \noauxfile is defined + \global\@auxfiledonetrue + \@testfileexistence{aux}% + \if@fileexists + \begingroup + \endlinechar = -1 + \catcode`@ = 11 + \input \jobname.aux + \endgroup + \else + \message{\@undefinedmessage}% + \global\@citewarningfalse + \fi + \immediate\openout\@auxfile = \jobname.aux + \fi +}% +\newif\if@auxfiledone +\ifx\noauxfile\@undefined \else \@auxfiledonetrue\fi +\@innernewwrite\@auxfile +\def\@writeaux#1{\ifx\noauxfile\@undefined \write\@auxfile{#1}\fi}% +\ifx\@undefinedmessage\@undefined + \def\@undefinedmessage{No .aux file; I won't give you warnings about + undefined citations.}% +\fi +\@innernewif\if@citewarning +\ifx\noauxfile\@undefined \@citewarningtrue\fi +\catcode`@ = \@oldatcatcode +\prefixing +%----------------------------------- end BibloTeX ------------------------- diff --git a/Master/texmf-dist/tex/plain/gustlib/infr-ex.tex b/Master/texmf-dist/tex/plain/gustlib/infr-ex.tex new file mode 100644 index 00000000000..dae0428affa --- /dev/null +++ b/Master/texmf-dist/tex/plain/gustlib/infr-ex.tex @@ -0,0 +1,6 @@ +%% u/zycie: \infram <gr.ramki> <odl.od ramki> {tre/s/c (materia/l pionowy)} +%% usage: \infram <thickness> <distance> {contents (vertical stuff)} +\input infram +\infram 1.8pt 3mm {\hbox{tekst w ramce (text in a frame)}} +\end + diff --git a/Master/texmf-dist/tex/plain/gustlib/infram.tex b/Master/texmf-dist/tex/plain/gustlib/infram.tex new file mode 100644 index 00000000000..8aae4ebae8d --- /dev/null +++ b/Master/texmf-dist/tex/plain/gustlib/infram.tex @@ -0,0 +1,11 @@ +%% u/zycie: \infram <gr.ramki> <odl.od ramki> {tre/s/c (materia/l pionowy)} +%% usage: \infram <thickness> <distance> {contents (vertical stuff)} +\newdimen\frth \newdimen\frdi +\long\def\infram{\vbox\bgroup \afterassignment\inframa \frth = } +\def\inframa{\afterassignment\inframb \frdi = } +\long\def\inframb#1{\hrule height\frth + \hbox{\vrule width\frth + \kern\frdi \vbox{\kern\frdi#1\kern\frdi}\kern\frdi + \vrule width\frth} + \hrule height\frth\egroup} +\endinput diff --git a/Master/texmf-dist/tex/plain/gustlib/licz/licz-tst.mex b/Master/texmf-dist/tex/plain/gustlib/licz/licz-tst.mex new file mode 100644 index 00000000000..dc20aa7dc77 --- /dev/null +++ b/Master/texmf-dist/tex/plain/gustlib/licz/licz-tst.mex @@ -0,0 +1,101 @@ +% Test zestawu makr LICZ (Mazovia) +% wersja 4.0 +% 27.04.96 19:49 + +\input licz.mex + + +\let\ad\advance + +\def\tl + % testline + #1% + {% + \edef\s’ownie{\licz{#1}}% + \item{\bf\number#1}(\s’ownie)\endgraf + \immediate\write16{\number#1}% + } + +\def\tloop + #1% from + #2% step + #3% to + {{% + \n #1\relax + \k #3\relax \ad\k1 + \loop + \tl\n + \ad\n#2\relax + \ifnum\n<\k + \repeat + }} +\newcount\n +\newcount\k + +\let\rm\fiverm +\font\bf plbx5 +\baselineskip7pt +\rm +\raggedright +\nopagenumbers +\raggedbottom +\vsize9.9in +\parindent1.5cm + +\def\test + {% + \liczspace{ } + + \tl{1} + \tl{12} + \tl{20} + \tl{21} + \tl{34} + \tl{234} + + \tl{123} + \tl{1234} + \tl{12345} + \tl{1234546} + \tl{12345678} + \tl{123456789} + \tl{1234567891} + + \bigskip + najmniejsza liczba w \TeX-u: + \tl{-2147483647} + najwi‘ksza liczba w \TeX-u: + \tl{2147483647} + + \bigskip + {% + \tloop + {1} + {1} + {250} + } + + \bigskip + \liczspace{\=} + \tl{1001001001} + \tl{1000000001} + \tl{1000000000} + \tl{1000030000} + + \bigskip + {\liczspace{\hrulefill} + \line{\licz{174568}}} + + \liczspace{ } + \message{12345 = \licz{12345}} + \vfill + \eject + } + +\prefixing +\test + +\nonprefixing +\test + +\end diff --git a/Master/texmf-dist/tex/plain/gustlib/licz/licz.mex b/Master/texmf-dist/tex/plain/gustlib/licz/licz.mex new file mode 100644 index 00000000000..1e336015f30 --- /dev/null +++ b/Master/texmf-dist/tex/plain/gustlib/licz/licz.mex @@ -0,0 +1,529 @@ +% zestaw makr LICZ.MEX +% makro \licz podaj/ace s/lownie po polsku liczb/e +% wraz z makrami pomocniczymi + +% autor: Marek Ry/cko + +% wersja 0.0, 11 sierpnia 1993 r. +% wersja 0.1, 12 sierpnia 1993 r. +% -- wszystko na poziomie rozwiajania +% wersja 0.2, 13 sierpnia 1993 r. (pi/atek!) +% -- pewne optymalizacje czasowe zwi/azane ze sposobem realizacji +% dope/lniania zerami (na poziomie makr) +% wersja 0.3, 23 sierpnia 1993 r. +% -- jedynie troch/e zmieniony program testuj/acy +% wersja 0.4, 25//26 stycznia 1994 r. +% -- istotna poprawka makra \lead_zeroo (dzi/eki BJ) +% wersja 0.5, 18 lutego 1995 r. (po wyk/ladzie o rozwijaniu /zeton/ow) +% -- poprawki pomy/lek w komentarzach +% -- uzupe/lnienie brakuj/acego procentu w \licz_err +% wersja 0.6, 27 kwietnia 1996 r. (przygotowanie do Bachotka 96) +% -- oparcie tylko na MEX-u +% -- uniezale/znienie od rodzaju stosowanej notacji polskich liter + +% OPIS: + +% \licz{<liczba>} +% rozwija si/e do liczby wyra/zonej s/lownie po polsku +% \liczspace{<cokolwiek>} +% powoduje, /ze <cokolwiek> b/edzie wstawiane jako +% odst/ep separuj/acy s/lowa (domy/slnie: <cokolwiek>=zwyk/ly odst/ep) + +% to do: +% -- parametryczne pisanie ,,jeden'' przed tysi/acami itp. +% -- ewentualnie zamieni/c \lead_zero na og/olniejsze makro dope/lniaj/ace czym/s... + +% makra normalnie zawarte w formacie ,,Do'': +\let\e\expandafter +\let\expi\e +\def\expii{\e\expi\e} +\def\expiii{\e\expii\e} +\def\expiv{\e\expiii\e} +\def\letter{11} + +\edef\liczundcatcode{\the\catcode`\_} +\catcode`\_\letter +\edef\liczatcatcode{\the\catcode`\@} +\catcode`\@\letter + +% zapami/etanie dotychczasowej ,,prefiksyjno/sci'': +\let\liczprefix\pr@fix +\if\liczprefix F\prefixing\fi + +% nast/epne dzia/ly zawieraj/a rozmaite makra podr/eczne: + +\def\expfull + % four times expansion of \expfull{...} expands fully ... + #1% a sequence of tokens expanding to characters only + {% + % triple expansion of the following expands fully #1 + \e\e\e\gobble_first + % the following expands at the 2-nd level to the sequence of characters + % preceded by backslash + \e\string\csname#1\endcsname + \end_gobble + } +\def\gobble_first#1#2\end_gobble{#2} + +\def\lead_zero + % zamienia liczb/e nieujemn/a na 10-cyfrow/a liczb/e dope/lnion/a zerami + #1% positive number (any) + {% + % apply \lead_zeroo to the already calculated sequence of digits: + \e\lead_zeroo\e{\number#1}% + } +\def\lead_zeroo + #1% positive number (sequence of digits) + {% + \ifnum#1<10 000000000\else + \ifnum#1<100 00000000\else + \ifnum#1<1000 0000000\else + \ifnum#1<10000 000000\else + \ifnum#1<100000 00000\else + \ifnum#1<1000000 0000\else + \ifnum#1<10000000 000\else + \ifnum#1<100000000 00\else + \ifnum#1<1000000000 0\else + \fi\fi\fi\fi\fi\fi\fi\fi\fi + #1} + +\def\div_ten_to + % expands to a number (a sequence of decimal digits) + % without the last #2 decimal digits + #1% nonnegative number (<=9 999 999 999) + #2% divided by ten to #2 (>=0 <=9) + {% + \number % normalize the result (no leading zeros) + \ifcase#2 + % 0: + #1% + \or + % 1: + \apply_take\take_ix{#1}% + \or + % 2: + \apply_take\take_viii{#1}% + \or + % 3: + \apply_take\take_vii{#1}% + \or + % 4: + \apply_take\take_vi{#1}% + \or + % 5: + \apply_take\take_v{#1}% + \or + % 6: + \apply_take\take_iv{#1}% + \or + % 7: + \apply_take\take_iii{#1}% + \or + % 8: + \apply_take\take_ii{#1}% + \or + % 9: + \apply_take\take_i{#1}% + \else + \licz_err{dzielenie przez 10 do b/l/ednej pot/egi}% + \fi + } + +\def\mod_ten_to + % expands to the last #2 decimal digits + % of a number (a sequence of decimal digits) + #1% nonnegative number (<=9 999 999 999) + #2% modulo ten to #2 (>=0 <=9) + {% + \number % normalize the result (no leading zeros) + \ifcase#2 + % 0: + 0% + \or + % 1: + \apply_take\gob_ix{#1}% + \or + % 2: + \apply_take\gob_viii{#1}% + \or + % 3: + \apply_take\gob_vii{#1}% + \or + % 4: + \apply_take\gob_vi{#1}% + \or + % 5: + \apply_take\gob_v{#1}% + \or + % 6: + \apply_take\gob_iv{#1}% + \or + % 7: + \apply_take\gob_iii{#1}% + \or + % 8: + \apply_take\gob_ii{#1}% + \or + % 9: + \apply_take\gob_i{#1}% + \else + \licz_err{dzielenie przez 10 do b/l/ednej pot/egi}% + \fi + } + +\def\apply_take + #1% np. \take_ix + #2% number + {\e\apply_takee\e#1\e{\number#2}} +\def\apply_takee + #1% np. \take_ix + #2% number + {\expiv#1\expfull{\lead_zero{#2}}\end_take} + +\def\take_ix #1{#1\take_viii} +\def\take_viii #1{#1\take_vii} +\def\take_vii #1{#1\take_vi} +\def\take_vi #1{#1\take_v} +\def\take_v #1{#1\take_iv} +\def\take_iv #1{#1\take_iii} +\def\take_iii #1{#1\take_ii} +\def\take_ii #1{#1\take_i} +\def\take_i #1{#1\take_zero} +\def\take_zero {\gob_rest} +\def\gob_rest#1\end_take{} + +\def\gob_ix #1{\gob_viii} +\def\gob_viii #1{\gob_vii} +\def\gob_vii #1{\gob_vi} +\def\gob_vi #1{\gob_v} +\def\gob_v #1{\gob_iv} +\def\gob_iv #1{\gob_iii} +\def\gob_iii #1{\gob_ii} +\def\gob_ii #1{\gob_i} +\def\gob_i #1{\gob_zero} +\def\gob_zero {\take_rest} +\def\take_rest#1\end_take{#1} + +% koniec makr pomocniczych og/olnego u/zytku + +\def\licz + #1% number (jest obliczany jednokrotnie) + {\e\licz_licz\e{\number#1}} +\def\licz_licz + #1% number + {% + \ifnum#1=0 + zero% + \else + % <> 0 + \ifnum#1<0 + % < 0 + minus\licz_space\licz_dod{-#1}% + \else + % > 0 + \licz_dod{#1}% + \fi + \fi + } + +\def\licz_sep + #1% liczba >=0 + {% first calculate the number, then apply + \e\licz_sepp\e{\number#1}} +\def\licz_sepp + #1% liczba >=0 (ju/z obliczona) + #2% separacja modulo 10 do pot/egi #2 + {% first calculate the mod separation, then apply + \e\licz_seppp\e{\number\mod_ten_to{#1}{#2}}% + {#1}{#2}% powtarzamy parametry + } +\def\licz_seppp + #1% modulo ju/z wyliczone (patrz wy/zej) + #2% liczba >=0 (ju/z obliczona) + #3% separacja modulo 10 do pot/egi #3 + {% first calculate the div separation, then apply + \e\licz_sepppp\e{\number\div_ten_to{#2}{#3}}% + {#1}% modulo ju/z wyliczone + } +\def\licz_sepppp + #1% div + #2% mod + #3% makro dla du/zych + #4% makro dla ko/nc/owki + {% + \ifnum#1>0 + #3{#1}% + \licz_mk_space{#1}{#2}% + \fi + #4{#2}% + } + +\def\licz_dod + #1% liczba dodatnia (w dowolnym zapisie w sensie TeX-a) + {\licz_sep{#1}3\licz_tys\licz_dotys} + +\def\licz_tys + #1% liczba dodatnia + {\licz_sep{#1}3\licz_miliony + {\licz_tylko{tysi}{/ac}{/ace}{/ecy}}}% + +\def\licz_miliony + #1% liczba dodatnia + {\licz_sep{#1}3\licz_miliardy + {\licz_tylko{milion}{}{y}{/ow}}}% + +\def\licz_miliardy + #1% liczba dodatnia + {\licz_sep{#1}3\licz_overflow + {\licz_tylko{miliard}{}{y}{/ow}}}% + +\def\licz_overflow + #1% + {\ifnum#1>0 \licz_err{za du/za liczba}\fi} + +\def\licz_tylko + #1% rdze/n + #2#3#4% ko/nc/owki 1, 2, 5 + #5% liczba tego + {% + \ifnum#5>0 + \licz_dod{#5}\licz_space + \licz_odm{#5}{#1}{#2}{#3}{#4}% + \else + % nic + \fi + } + +\def\licz_dotys + #1% >=1, <=999 + {\licz_sep{#1}2\licz_setki\licz_dostu} + +\def\licz_dostu + #1% + {% + % + \ifnum#1<10 + \licz_jedn{#1}% + \else + % #1 >= 10 + \ifnum#1<20 + % 10 <= #1 <= 19 + \licz_at_least_ten{#1}% + \else + % #1 >= 20 + \ifnum#1<100 + % 20 <= #1 <= 99 + \licz_sep{#1}1\licz_at_least_twenty\licz_jedn + \else + % #1 >= 100 + \licz_err{mia/lo by/c do stu}% + \fi + \fi + \fi + } + +\def\licz_jedn + #1% + {% + \ifcase\number#1\space\space + % 0: + % nic + \or % 1: + jeden% + \or % 2: + dwa% + \or % 3: + trzy% + \or % 4: + cztery% + \or % 5: + pi/e/c% + \or % 6: + sze/s/c% + \or % 7: + siedem% + \or % 8: + osiem% + \or % 9: + dziewi/e/c% + \else + \licz_err{cyfra > 9}% + \fi + } + +\def\licz_at_least_ten + #1% + {% + \ifcase \number\mod_ten_to{#1}{1}\space\space + % 10: + dziesi/e/c% + \or % 11: + jedena/scie% + \or % 12: + dwana/scie% + \or % 13: + trzyna/scie% + \or % 14: + czterna/scie% + \or % 15: + pi/etna/scie% + \or % 16: + szesna/scie% + \or % 17: + siedemna/scie% + \or % 18: + osiemna/scie% + \or % 19: + dziewi/etna/scie% + \else + \licz_err{na/scie > 19}% + \fi + } + +\def\licz_at_least_twenty + #1% + {% + % 2 <= #1 <= 9 + % sk/ladamy dziesi/atki: + \ifcase \number#1\space\space + % 0: + \licz_err{dzie/scia < 10}% + \or % 1: + \licz_err{dzie/scia < 20}% + \or % 2: + dwadzie/scia% + \or % 3: + trzydzie/sci% + \or % 4: + czterdzie/sci% + \or % 5: + pi/e/cdziesi/at% + \or % 6: + sze/s/cdziesi/at% + \or % 7: + siedemdziesi/at% + \or % 8: + osiemdziesi/at% + \or % 9: + dziewi/e/cdziesi/at% + \else + % > 9 + \licz_err{dzie/scia > 99}% + \fi + % dziesi/atki z/lo/zone + } + +\def\licz_setki + #1% + {% + % 0 <= #1 <= 9 + % sk/ladamy setki: + \ifcase\number#1\space\space + % 0: + % nic + \or % 1: + sto% + \or % 2: + dwie/scie% + \or % 3: + trzysta% + \or % 4: + czterysta% + \or % 5: + pi/e/cset% + \or % 6: + sze/s/cset% + \or % 7: + siedemset% + \or % 8: + osiemset% + \or % 9: + dziewi/e/cset% + \else + % > 9 + \licz_err{setki > 9}% + \fi + } + +\def\licz_mk_space + #1#2% je/sli obie liczby >0, to rozwi/n si/e do odst/epu + {% + \ifnum#1>0 + \ifnum#2>0 + \licz_space + \fi + \fi + } + +\def\licz_odm + #1% liczba >=1 + #2% rdze/n + #3% ko/nc/owka 1 + #4% ko/nc/owka 2, 3, 4 + #5% ko/nc/owka 5, 6, 7, 8, 9, 0 + {% + \ifcase\number\mod_ten_to{#1}{1}\space\space + % 0: + #2#5% + \or % 1: + \ifnum#1=1 + #2#3% + \else + #2#5% + \fi + \or % 2: + \ifnum\mod_ten_to{#1}{2}=12 + #2#5% + \else + #2#4% + \fi + \or % 3: + \ifnum\mod_ten_to{#1}{2}=13 + #2#5% + \else + #2#4% + \fi + \or % 4: + \ifnum\mod_ten_to{#1}{2}=14 + #2#5% + \else + #2#4% + \fi + \or % 5: + #2#5% + \or % 6: + #2#5% + \or % 7: + #2#5% + \or % 8: + #2#5% + \or % 9: + #2#5% + \else + % > 9 + \licz_err{modulo w odmianie nie dzia/la}% + \fi + } + +% w poni/zszym makrze u/zyty jest jawny parametr, ze wzgl/edu na mo/zliwo/s/c +% u/zycia np. w formie \liczspace\space (bez nawias/ow klamrowych) +\def\liczspace + #1% cokolwiek + {\def\licz_space{#1}} + +\def\licz_err + #1% + {{% + \newlinechar`\@% + \errhelp{Co/s jest nie tak w makrach obs/luguj/acych liczenie.@% + Najlepiej zawiadomi/c autora, bo to pewnie jego wina.}% + \errmessage{B/l/ad w liczeniu: #1}% + }} + +\catcode`\_\liczundcatcode\space +\catcode`\@\liczatcatcode\space +\if\liczprefix F\nonprefixing\fi + +% domy/slnie: +\liczspace\space +\endinput diff --git a/Master/texmf-dist/tex/plain/gustlib/map/map.tex b/Master/texmf-dist/tex/plain/gustlib/map/map.tex new file mode 100644 index 00000000000..779ef6ae3c7 --- /dev/null +++ b/Master/texmf-dist/tex/plain/gustlib/map/map.tex @@ -0,0 +1,63 @@ +% MAP.TEX + +% Marek Ry\'cko + +% Macro \map +% for applying operations to token sequences + +% uses SPLIT.TEX + +% version 0.0 24.07.1993 +% version 0.1 1.5.1996 +% -- english description + +\def\map + % for each element E of the token list #2 + % ``execute'' the token list #1 + % possibly making use of the following macros: + % \mappre the token list before E (without E) + % \mapcur the token E + % \mappost the token list after E (without E) + % \mapupto the token list from the beginning till and including E + % \mapfrom the token list from and including E till the end + % \mapent the entire token list + % + % -------------\mapent---------------- + % ---\mapfrom--------- + % ----\mapupto----- + % ................E................... + % ----\mappre----- ---\mappost-------- + % + % | + % | + % \mapcur + % + #1% operation + #2% token list + {{% + \def\mapent{#2}% + \def\mappre{}% + \let\mapfrom\mapent + % \mappre contains already processed sequence + % \mapfrom contains the sequence to be processed + % while nonempty \mapfrom do: + \ifx\empty\mapfrom \mapcontfalse \else \mapconttrue \fi + \loop \ifmapcont + % \mapfrom nonempty, so it can be split: + % split \mapfrom to head and tail: + \split\mapfrom\mapcur\mappost + % set \mapupto as the concatenation of \mappre and \mapcur: + \expandafter\expandafter\expandafter + \def\expandafter\expandafter\expandafter + \mapupto\expandafter\expandafter\expandafter + {\expandafter\mappre\mapcur}% + % execute operation(s): + #1% + % define new values of \mappre and \mapfrom + \expandafter\def\expandafter\mappre\expandafter{\mapupto}% + \expandafter\def\expandafter\mapfrom\expandafter{\mappost}% + % \mappre contains already processed sequence + % \mapfrom contains the sequence to be processed + \ifx\empty\mapfrom \mapcontfalse \else \mapconttrue \fi + \repeat}}% +\newif\ifmapcont diff --git a/Master/texmf-dist/tex/plain/gustlib/map/split.tex b/Master/texmf-dist/tex/plain/gustlib/map/split.tex new file mode 100644 index 00000000000..252f1d358b1 --- /dev/null +++ b/Master/texmf-dist/tex/plain/gustlib/map/split.tex @@ -0,0 +1,63 @@ +% SPLIT.TEX + +% Marek Ry\'cko + +% Macro \split (and auxiliary macros) +% for splitting token sequences +% Macro \hdtl + +% version 0.0 24.07.1993 +% version 0.1 31.12.94 +% version 0.2 1.5.1996 +% -- english description + +\def\hdtl + #1% inp. t.s. (nonempty, poss blanks) + #2% outp. -- head + #3% outp. -- tail + {\let\reshead=#2% synonims for token-register names + \let\restail=#3% + \expandafter\gethead\the#1\endoftokens} +\def\gethead + {\futurelet\thehead\analysehead} +\def\analysehead + {\ifcat \noexpand\thehead \space + \let\followby=\followbyspace + \else + \let\followby=\followbynospace + \fi + \followby} +\def\followbyspace + {\reshead={ }% space token + \afterassignment\gettail + \let\swallow= }% swallowing the head-space +\def\gettail + #1\endoftokens + {\restail={#1}} +\def\followbynospace + #1#2\endoftokens + {\reshead={#1}% + \restail={#2}} +\def\split + #1% input macro name (should expand to nonemty token sequence) + #2% macro head (name) + #3% macro tail (name) + {% + % define + % #2 as the first token (with nested braces) of #1 + % #3 as the tail (with nested braces) of #1 + \expandafter\splithdtl\expandafter{#1}% + \expandafter\def\expandafter\splittest\expandafter{\the\splithdtl}% + \ifx\splittest\empty + \gdef#2{}% + \gdef#3{}% + \else + \hdtl\splithdtl\splithd\splittl + \expandafter\gdef\expandafter#2\expandafter{\the\splithd}% + \expandafter\gdef\expandafter#3\expandafter{\the\splittl}% + \fi + } +\newtoks\splithdtl +\newtoks\splithd +\newtoks\splittl + diff --git a/Master/texmf-dist/tex/plain/gustlib/map/tsp-tst.mex b/Master/texmf-dist/tex/plain/gustlib/map/tsp-tst.mex new file mode 100644 index 00000000000..bb887172a97 --- /dev/null +++ b/Master/texmf-dist/tex/plain/gustlib/map/tsp-tst.mex @@ -0,0 +1,68 @@ +% TSP-TEST.MEX + +% test zestawu makr TSP + +% Bogus/law Jackowski i Marek Ry/cko +% 24 lipca 1993 r., dotkni/ete 14 lutego 1997 r. + +\input split +\input map +\input tsp +\prefixing + +\def\wlaz + {% + Wlaz/l pies do kuchni + {i\nobreak} porwa/l mi/esa /cwier{/c,} + {a\nobreak} jaki/s kucharz g/lupi + zar/aba/l go na /smier{/c.} + {A\nobreak} drugi kucharz m/adr{y,} + co lito/s/c {w\nobreak} sercu mia/l + postawi/l mu nagrobek + {i\nobreak} taki napis da} +\edef\lista + {\wlaz{/l:} \wlaz{/l...}} + +\def\test + #1% odst/ep zamiast spacji + #2% odst/ep mi/edzy literami + {% + \def\paramtest{#1#2} + \ifx\paramtest\empty\else + % odst/ep zamiast spacji: + \def\tspsp {#1} + % odst/ep mi/edzy literami: + \def\tsplet {#2} + \fi + \leftline{\tt \string\def\string\tspsp\{\tspsp\}\space\space + \string\def\string\tsplet\{\tsplet\}} + \vskip2pt + \expandafter\tsp\expandafter{\lista} + \vskip6pt + \message{.} + } + +\font\xxx plr12 scaled \magstep1 \xxx +\baselineskip16.4pt +\vsize24.7cm +\nopagenumbers +\chardef\{"7B +\chardef\}"7D + +\message{Prosz/e czeka/c.} + +{\tenrm +\line{Test makra {\tt\string\tsp}\hss + 1 maja 1996 r.} +\smallskip +\hrule +\vfill +} +\test {} {}% standard +\test {0.555em plus.2777em minus.111em} {.1em}% +\test {0.28em plus.1em minus.111em} {-.05em}% +\test {0.22em plus.1em minus.111em} {-.06em}% +\test {0.333em plus.167em minus.111em} {0em}% +\leftline{\tt zwyk/ly tekst:}\vskip2pt +\tsp {\lista}% bez u/zycia makra +\eject\end diff --git a/Master/texmf-dist/tex/plain/gustlib/map/tsp.tex b/Master/texmf-dist/tex/plain/gustlib/map/tsp.tex new file mode 100644 index 00000000000..e140ed624de --- /dev/null +++ b/Master/texmf-dist/tex/plain/gustlib/map/tsp.tex @@ -0,0 +1,49 @@ +% TSP.TEX + +% Marek Ry\'cko + +% Macro \tsp +% Text SPace + +% uses SPLIT.TEX + +% version 0.0 24.07.1993 +% version 0.2, 8.10.1993 +% -- no \input map +% version 0.3 1.5.1996 +% -- english description + + +% uses SPLIT +% uses MAP + + +\def\tsp + %#1% + {\map + {\ifx\mapcur\space + \hskip\tspsp\relax + \else + \mapcur + % if it is not the last element -- join using kern: + \ifx\mappost\empty \else + % ``future'' is nonempty; + % we put interletter spacing only if + % next character is not space: + \split\mappost\tsptest\fool + \ifx\tsptest\space + % will be space, don't put glue: + \else + % not kern to make it streachable: + \nobreak\hskip\tsplet\relax + \fi + \fi + \fi + }% the end of first parameter + %{#1}% + } +% default parameters: +% the amount of space in place of the space character: + \def\tspsp {0.9em plus.3em minus.2em} +% distance between letters: + \def\tsplet {.1666667em}% diff --git a/Master/texmf-dist/tex/plain/gustlib/map/tun-test.mex b/Master/texmf-dist/tex/plain/gustlib/map/tun-test.mex new file mode 100644 index 00000000000..9034c81ef90 --- /dev/null +++ b/Master/texmf-dist/tex/plain/gustlib/map/tun-test.mex @@ -0,0 +1,51 @@ +% TUN-TEST.MEX (Mazovia) + +% test zestawu makr TSP + +% Bogus/law Jackowski i Marek Ry/cko +% 9.10.94, dotkni/ete 14 lutego 1997 r. + +\input split +\input map +\input tun +\prefixing + +\def\zda + {Moim zdaniem ten tekst powinien by{/c} podkre{/s}lony...} +\edef\aka + {% + \zda\ + \zda\ + \zda\ + \zda\ + \zda + } +\def\tes#1% + {\expandafter\tun\expandafter{#1}\vskip5pt} +\def\uf{\afterassignment\tunfont\font\tunfont} +\footline{\hfill\tenrm\expandafter\tun\expandafter{\the\pageno}\hfill} +\pageno1001 + +%\def\tunsep {.25ex}% +%\def\tunwd {.1ex}% +\def\tunfac {1.1}% + +\tes\zda + +\uf plr17 + +\tes\zda + +\uf plb10 + +\tes\zda + +\uf plr17 scaled\magstep1 +\baselineskip22.4pt + +\tes\zda + +%\edef\param{\licz{157}} +%\expandafter\tun\expandafter{\param} + +\end diff --git a/Master/texmf-dist/tex/plain/gustlib/map/tun.tex b/Master/texmf-dist/tex/plain/gustlib/map/tun.tex new file mode 100644 index 00000000000..275135adb97 --- /dev/null +++ b/Master/texmf-dist/tex/plain/gustlib/map/tun.tex @@ -0,0 +1,51 @@ +% TUN.TEX + +% Marek Ry\'cko + +% Macro \tun +% Text UNderline + +% version 0.1, 9.10.94 +% version 0.3, 1.5.1996 +% -- english description + + +% uses SPLIT +% uses MAP + + +\newbox\boxA +\newdimen\dimenA +\newdimen\dimenB + + +\def\tun + %#1% + {\map + {\ifx\mapcur\space + \space + \else + \tunel\mapcur + \fi + }% + %{#1}% + } +\def\tunel + #1% what to underline + {{% + #1% + \setbox\boxA\hbox{#1}% + \dimenA-\tunsep + \dimenB-\dimenA \advance\dimenB\tunwd + \llap{\hbox to\wd\boxA{\hss + \vrule height\dimenA depth\dimenB width\tunfac\wd\boxA + \hss}}% + }} + +% default parameters: +% underline separator width + \def\tunsep {.25ex}% +% underline width + \def\tunwd {.09ex}% +% underline factor of letter width: + \def\tunfac {1}% diff --git a/Master/texmf-dist/tex/plain/gustlib/mcol-ex.tex b/Master/texmf-dist/tex/plain/gustlib/mcol-ex.tex new file mode 100644 index 00000000000..0992ef39131 --- /dev/null +++ b/Master/texmf-dist/tex/plain/gustlib/mcol-ex.tex @@ -0,0 +1,149 @@ +%%% przyklad skladu wielokolumnowego, | an example of multicolumn for plain +%%% oops... wielo/lamowego +%%% (opr. Staszek Wawrykiewicz) +\input mimulcol +%--------------------------------------------------------------------- + +%% sk/lad 1 /lamowy | 1 column +1 2 3 4 5 6 7 8 9 10 +11 12 13 14 15 16 17 18 19 20 +21 22 23 24 25 26 27 28 29 30 +31 32 33 34 35 36 37 38 39 40 +41 42 43 44 45 46 47 48 49 50 +51 52 53 54 55 56 57 58 59 60 +61 62 63 64 65 66 67 68 69 70 +71 72 73 74 75 76 77 78 79 80 +81 82 83 84 85 86 87 88 89 90 +91 92 93 94 95 96 97 98 99 100 + +\columnsep=24pt % odleg/lo/s/c mi/edzy /lamami| distance between columns +\columnseprule=0.4pt % opcjonalna pionowa | optional vertical rule + % krecha mi/edzy lamami | between columns +\multicolbaselineskip=0pt plus 0.2pt % opcjonalna | + % korekta | optional correction of + % \baselineskip +%\raggedcolumns % opcjonalne wy/l/aczenie | optional toggle to turn + % wyr/ownywania prawego | off balancing of the right + % /lamu | column + +%% a teraz 3 /lamy | now 3 columns +\beginmulticols 3[{{\bf TITLE}}] % opcjonalny tekst |optional text (e.g. title) + +101 102 103 104 105 106 107 108 109 110 +111 112 113 114 115 116 117 118 119 120 +121 122 123 124 125 126 127 128 129 130 +131 132 133 134 135 136 137 138 139 140 +141 142 143 144 145 146 147 148 149 150\footnote{**}{% +This is a small footnote. +This is a small footnote. +This is a small footnote.} +151 152 153 154 155 156 157 158 159 160 +161 162 163 164 165 166 167 168 169 170 +171 172 173 174 175 176 177 178 179 180 +181 182 183 184 185 186 187 188 189 190 +191 192 193 194 195 196 197 198 199 200 + +201 202 203 204 205 206 207 208 209 210 +211 212 213 214 215 216 217 218 219 220 +221 222 223 224 225 226 227 228 229 230 +231 232 233 234 235 236 237 238 239 240 +241 242 243 244 245 246 247 248 249 250 +251 252 253 254 255 256 257 258 259 260 +261 262 263 264 265 266 267 268 269 270 +271 272 273 274 275 276 277 278 279 280 +281 282 283 284 285 286 287 288 289 290 +291 292 293 294 295 296 297 298 299 300 + +301 302 303 304 305 306 307 308 309 310 +311 312 313 314 315 316 317 318 319 320 +321 322 323 324 325 326 327 328 329 330 +331 332 333 334 335 336 337 338 339 340 +341 342 343 344 345 346 347 348 349 350 +351 352 353 354 355 356 357 358 359 360 +361 362 363 364 365 366 367 368 369 370 +371 372 373 374 375 376 377 378 379 380 +381 382 383 384 385 386 387 388 389 390 +391 392 393 394 395 396 397 398 399 400 + +401 402 403 404 405 406 407 408 409 410 +411 412 413 414 415 416 417 418 419 420 +421 422 423 424 425 426 427 428 429 430 +431 432 433 434 435 436 437 438 439 440 +441 442 443 444 445 446 447 448 449 450 +451 452 453 454 455 456 457 458 459 460 +461 462 463 464 465 466 467 468 469 470 +471 472 473 474 475 476 477 478 479 480 +481 482 483 484 485 486 487 488 489 490 +491 492 493 494 495 496 497 498 499 500 + +501 502 503 504 505 506 507 508 509 510 +511 512 513 514 515 516 517 518 519 520 +521 522 523 524 525 526 527 528 529 530 +531 532 533 534 535 536 537 538 539 540 +541 542 543 544 545 546 547 548 549 550 +551 552 553 554 555 556 557 558 559 560 +561 562 563 564 565 566 567 568 569 570 +571 572 573 574 575 576 577 578 579 580 +581 582 583 584 585 586 587 588 589 590 +591 592 593 594 595 596 597 598 599 600 +\endmulticols + +%Ponownie 1 /lam % Again 1 column +601 602 603 604 605 606 607 608 609 610 +611 612 613 614 615 616 617 618 619 620 +621 622 623 624 625 626 627 628 629 630 +631 632 633 634 635 636 637 638 639 640 +641 642 643 644 645 646 647 648 649 650 +651 652 653 654 655 656 657 658 659 660 +661 662 663 664 665 666 667 668 669 670 +671 672 673 674 675 676 677 678 679 680 +681 682 683 684 685 686 687 688 689 690 +691 692 693 694 695 696 697 698 699 700 + +%% a teraz 2 /lamy % Then 2 columns +\beginmulticols 2 +701 702 703 704 705 706 707 708 709 710 +711 712 713 714 715 716 717 718 719 720 +721 722 723 724 725 726 727 728 729 730 +731 732 733 734 735 736 737 738 739 740 +741 742 743 744 745 746 747 748 749 750 +751 752 753 754 755 756 757 758 759 760 +761 762 763 764 765 766 767 768 769 770 +771 772 773 774 775 776 777 778 779 780 +781 782 783 784 785 786 787 788 789 790 +791 792 793 794 795 796 797 798 799 800 + +801 802 803 804 805 806 807 808 809 810 +811 812 813 814 815 816 817 818 819 820 +821 822 823 824 825 826 827 828 829 830 +831 832 833 834 835 836 837 838 839 840 +841 842 843 844 845 846 847 848 849 850 +851 852 853 854 855 856 857 858 859 860 +861 862 863 864 865 866 867 868 869 870 +871 872 873 874 875 876 877 878 879 880 +881 882 883 884 885 886 887 888 889 890 +891 892 893 894 895 896 897 898 899 900 + +901 902 903 904 905 906 907 908 909 910 +911 912 913 914 915 916 917 918 919 920 +921 922 923 924 925 926 927 928 929 930 +931 932 933 934 935 936 937 938 939 940 +941 942 943 944 945 946 947 948 949 950 +951 952 953 954 955 956 957 958 959 960 +961 962 963 964 965 966 967 968 969 970 +971 972 973 974 975 976 977 978 979 980 +981 982 983 984 985 986 987 988 989 990 +991 992 993 994 995 996 997 998 999 1000 +\endmulticols + +%% a teraz 1 /lam % and again 1 column +1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 +1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 +1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 +1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 +1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 +1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 +1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 +1071 1072 1073 1074 1075 1076 + +\bye diff --git a/Master/texmf-dist/tex/plain/gustlib/meashor.tex b/Master/texmf-dist/tex/plain/gustlib/meashor.tex new file mode 100644 index 00000000000..59ef7db314d --- /dev/null +++ b/Master/texmf-dist/tex/plain/gustlib/meashor.tex @@ -0,0 +1,71 @@ +% =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +% Autor: | Author: +% Bogus\l{}aw Jackowski, 22 V 1990 + email: B.Jackowski@gust.org.pl +% Sprawdzone i udost/epnione: | Revised and released: +% 18 II 1997 +% =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +% Makro \meashor umieszczone | Macro \meashor, when used in +% w akapicie nadaje warto/s/c | a paragraph, assigns values to +% dw/om zmiennym: \measnum i \measdim, | two registers: \measnum and +% oznaczaj/acym odpowiednio numer | \measdim (number of the line +% wiersza akapitu w kt/orym pojawi/lo | of the paragraph from which the +% si/e makro \meashor i odleg/lo/s/c | macro was invoked and the distance +% punktu pomiaru od lewego skraju | of the measuring point from the +% akapitu. | left edge of the paragraph, resp.). +% Przyk/lad: | Example: +% Fragment programu | The piece of code +% Ala\meashor\ ma kota | Alice\meashor\ has a cat +% spowoduje nadanie zmiennym | results in assigning the +% nast/epuj/acych warto/sci: | following values +% \measnum=1 | \measnum=1 +% \measdim=35.27782pt (parindent | \measdim=41.94447pt (parindent +% plus d/lugo/s/c s/lowa Ala | plus the length of the word Alice +% dla fontu CMR10). | for the font CMR10). +% Autor b/edzie wdzi/eczny za | The author will be grateful for +% poinformowanie o zgrabnych | informing him about neat +% zastosowaniach makra \meashor. | applications of the macro \meashor. +% =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +\newif\ifmeasdisp % ,,kosmetyka'' | cosmetic powder +\measdispfalse % ustawienie domy/slne | default +\newcount\measnum % wynik | result +\newdimen\measdim % wynik | result +\def\meashor{% + \ifhmode + \bgroup % zmiany parametr/ow s/a lokalne | parameters settings are local + \leftskip0pt \rightskip0pt + \parfillskip=0pt plus 1fil + \predisplaypenalty=10000 + \postdisplaypenalty=10000 + \displaywidowpenalty=\widowpenalty + \abovedisplayskip=-\baselineskip + \belowdisplayskip=-\baselineskip + \abovedisplayshortskip=-\baselineskip + \belowdisplayshortskip=-\baselineskip + \null % pozostaw poprzedzaj/ac/a spacj/e | leave preceding space + $$\global\measdim=\predisplaysize$$% + \ifnum\prevgraf=0 + \immediate\write16{! + perhaps restricted hmode: + MEASURING IGNORED}% + \else + \global\advance\measdim by -2em + \global\measnum=\prevgraf + \global\advance\measnum by -3 + \ifmeasdisp + \immediate\write16{>> + \the\measnum: \the\measdim}% + \fi +% \advance\prevgraf to operacja zabroniona | \advance\prevgraf is forbidden + \global\advance\measnum by -1 + \global\prevgraf=\measnum + \global\advance\measnum by 1 + \kern\measdim + \fi + \egroup + \else + \immediate\write16{! vmode: + MEASURING IGNORED}% + \fi +}% +\endinput diff --git a/Master/texmf-dist/tex/plain/gustlib/mimulcol.tex b/Master/texmf-dist/tex/plain/gustlib/mimulcol.tex new file mode 100644 index 00000000000..9ea91182ca6 --- /dev/null +++ b/Master/texmf-dist/tex/plain/gustlib/mimulcol.tex @@ -0,0 +1,286 @@ +% copied from TUGboat, Vol.10 (1989) No.3 p.409--415 (B.J.) +% MULTICOLUMN LaTeX environement. +% Author: F. Mittelbach +% Quick adaptation to PLAIN: B. Jackowski (Ver. 0.9); alterations are +% marked by `(B.J.)' +% +% Since I do not understand floats I assume that they are +% not used while multicolumning. Maybe some other day... +% +% ======================================================================== +% --------------------- PSEUDO-LaTeX ENVIRONEMENT ------------------------ +% ======================================================================== +\catcode`\@=11 +\newtoks\@uteroutput % (P.P.) +\@uteroutput\output % +% -------------------------- +\def\adjust@PLAIN{% + \newlinechar=`\^^J + \columnwidth\hsize \textwidth\hsize + \@colht\vsize \@colroom\vsize % NO FLOATs PLEASE! + \def\makefootline{\baselineskip24\p@\hbox to \textwidth{\the\footline}} + \def\pagebody{\vbox to\@colht{\boxmaxdepth\maxdepth \pagecontents}} + \def\vfootnote##1{\insert\footins\bgroup + \hsize=\textwidth + \interlinepenalty\interfootnotelinepenalty + \splittopskip\ht\strutbox % top baseline for broken footnotes + \splitmaxdepth\dp\strutbox \floatingpenalty\@MM + \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip + \textindent{##1}\footstrut\futurelet\next\fo@t} +} +% -------------------------- +\mathchardef\@Mi=10001 +\newcount\@tempcnta % temporary count register +% ------ These four macros differ from their LaTeX twins ------ +\def\thepage{\number\pageno} +\def\addvspace#1{\vskip#1\relax} +\def\typeout#1{\immediate\write\z@{#1}} +\def\@warning#1{\typeout{WARNING: #1.}} +% -------------------------- +\def\newpage{\par\vfil\penalty -\@M} +\long\def\@ifundefined#1#2#3{\expandafter\ifx\csname + #1\endcsname\relax#2\else#3\fi} +\def\@ifnextchar#1#2#3{\let\@tempe #1\def\@tempa{#2}\def\@tempb{#3}\futurelet + \@tempc\@ifnch} +\def\@ifnch{\ifx \@tempc \@sptoken \let\@tempd\@xifnch + \else \ifx \@tempc \@tempe\let\@tempd\@tempa\else\let\@tempd\@tempb\fi + \fi \@tempd} +\def\:{\let\@sptoken= } \: % this makes \@sptoken a space token +\def\:{\@xifnch} \expandafter\def\: {\futurelet\@tempc\@ifnch} +% -------------------------- +\def\@spaces{\space\space\space\space} +\def\@width{width} +\newdimen\@colroom +\newdimen\@colht +\newdimen\columnwidth +\newdimen\textwidth +% -------------------------- +\newdimen\columnsep \columnsep=24pt +\newdimen\columnseprule \columnseprule = 0pt +% ======================================================================== +% -------------------- MITTELBACH's MACROS ------------------------------- +% ======================================================================== +\newcount\unbalance \unbalance = 0 +\newcount\collectmore \collectmore = 0 +\newcount\tracingmulticols \tracingmulticols = 0 +\newcount\col@number +\newcount\doublecol@number +\newcount\multicoltolerance \multicoltolerance = 9999 +\newdimen\page@free +\newdimen\premulticols \premulticols = 50pt +\newdimen\postmulticols \postmulticols = 20pt +\newskip\multicolsep \multicolsep = 12pt plus 4pt minus 3pt +\newskip\multicolbaselineskip \multicolbaselineskip = 0pt +\newbox\partial@page +\newif\ifshr@nking +% +\@ifundefined{mult@cols}{}{\endinput} +\ifnum\tracingmulticols>\z@ % <--------------------------------- added (B.J.) + \typeout{% + MULTI COLUMN format designed by Frank Mittelbach --- see TUGboat} + \typeout{% + Vol.10 (1989) No.3 pp.407--415> for doc.; PLAIN ver. 0.9 by B. Jackowski} +\fi +% +\def\beginmulticols{\begingroup\multicols}% <--- substitute of LaTeX's phrase + % \begin{...} ... \end{...} (B.J.) +% +\def\multicols#1{\col@number#1\relax + % + \adjust@PLAIN + % + \ifnum\col@number<\@ne + \@warning{Using `number\col@number' + columns doesn't seem a good idea.^^J + \@spaces\@spaces I therefore use two columns instead}% + \col@number\tw@ \fi + \@ifnextchar[\mult@cols{\mult@cols[]}} +% +\def\mult@cols[#1]{\@ifnextchar[% + {\mult@@cols{#1}}% + {\mult@@cols{#1}[\premulticols]}} +% +\def\mult@@cols#1[#2]{% + \ifnum\tracingmulticols>\z@ + \typeout{^^J^^JStarting multicolumn + output with \the\col@number + \space columns:^^J}\fi + \enough@room#2% + {#1}\par % <-------------- instead of #1\par---it seems more natural (B.J.) + % the more so, as outer {} braces inside [] brackets are gobbled: + % \multicols{...}[cosik] is equivalent to \multicols{...}[{cosik}] + \addvspace\multicolsep + \begingroup + \prepare@multicols\ignorespaces} +% +\def\enough@room#1{\par \penalty\z@ + \page@free \pagegoal + \advance \page@free -\pagetotal + \ifnum \tracingmulticols>\z@ + \typeout{Current page:}% + \message{\@spaces goal height=% + \the\pagegoal: used \the\pagetotal + \space -> free\the\page@free}% + \typeout{\@spaces needed \the#1 + (for \string#1)}\fi + \ifdim \page@free <#1\newpage \fi} +% +\def\prepare@multicols{% + \output{\global\setbox\partial@page + \vbox{\unvbox\@cclv}}\eject + \vbadness9999 \hbadness5000 + \tolerance\multicoltolerance + \doublecol@number\col@number + \multiply\doublecol@number\tw@ + \advance\baselineskip\multicolbaselineskip + \advance\@colroom-\ht\partial@page + \vsize\col@number\@colroom + \advance\vsize\collectmore\baselineskip + \hsize\columnwidth \advance\hsize\columnsep + \advance\hsize-\col@number\columnsep + \divide\hsize\col@number +% \linewidth\hsize % <----------------- it seems unnecessary in PLAIN (B.J.) + \output{\multi@columnout}% + \multiply\count\footins\col@number + \multiply\skip \footins\col@number + \reinsert@footnotes} +% +\def\endmulticols{\par\penalty\z@ + \output{\balance@columns}\eject + \endgroup \reinsert@footnotes + \global\unbalance\z@ + \enough@room\postmulticols + \addvspace\multicolsep + \nointerlineskip % <------------------------------------------ added (B.J.) + \ifnum \tracingmulticols>\z@ + \typeout{^^JEnding multicolumn + output.^^J^^J}\fi + \endgroup} +% +\def\process@cols#1#2{\count@#1\relax + \loop #2% + \advance\count@\tw@ + \ifnum\count@<\doublecol@number + \repeat} +% +\def\page@sofar{\unvbox\partial@page + \process@cols\z@{\wd\count@\hsize}% + \hbox to \textwidth{% + \process@cols\tw@{\box\count@ + \hss\vrule\@width\columnseprule\hss}% + \box\z@}} +% +\def\reinsert@footnotes{\ifvoid\footins\else + \insert\footins{\unvbox\footins}\fi} +% +\def\multi@columnout{% + \ifnum\outputpenalty <-\@Mi + \speci@ls + \else + \splittopskip\topskip + \splitmaxdepth\maxdepth + \dimen@\@colroom + \divide\skip\footins\col@number + \ifvoid\footins \else + \advance\dimen@-\skip\footins + \advance\dimen@-\ht\footins \fi + \process@cols\tw@{\setbox\count@ + \vsplit\@cclv to\dimen@}% + \setbox\z@\vsplit\@cclv to\dimen@ + \ifvoid\@cclv \else + \unvbox\@cclv + \penalty\outputpenalty + \ifnum \tracingmulticols>\tw@ + \hrule\allowbreak \fi + \ifvoid\footins\else % <----------------------------------- added (B.J.) + \@warning{I moved some lines to the next page.^^J + \@spaces\@spaces Footnotes on page \thepage\space + might be wrong}\fi\fi + \setbox\@cclv\vbox{\page@sofar}% +% \plainoutput % <---------------- instead of \@makecol\@outputpage (B.J.) + \the\@uteroutput % <------------- instead of \plainoutput (P.P.) + \global\@colroom\@colht + \process@deferreds + \ifnum\tracingmulticols>\@ne + \typeout{Colroom: \the\@colht\space after float + space removed = \the\@colroom}\fi + \global\vsize\col@number\@colroom + \global\advance\vsize \collectmore\baselineskip + \multiply\skip\footins\col@number + \fi} +% +\def\speci@ls{% + \typeout{Floats and marginpars not allowed inside + `multicols' environement!}% + \unvbox\@cclv\reinsert@footnotes +% \gdef\@currlist{}% <----------------------------- not used in PLAIN (B.J.) + } +% +\def\process@deferreds{}% <---------- instead of the `percented' macro (B.J.) + % (temporarily: until I'll learn what all that + % mumbling means) +%\def\process@deferreds{% +% \@floatplacement +% \begingroup +% \let\@tempb\@deferlist +% \gdef\@deferlist{}% +% \let\@elt\@scoelt +% \@tempb \endgroup} +% +% Originally: <------------------------------------------------------- (B.J.) +%\def\raggedcolumns{\@bsphack\shr@nkingtrue\@esphack} +%\def\flushcolumns{\@bsphack\shr@nkingfalse\@esphack} +% +\def\raggedcolumns{\shr@nkingtrue} +\def\flushcolumns{\shr@nkingfalse} +% +\def\balance@columns{% + \splittopskip\topskip + \splitmaxdepth\maxdepth + \setbox\z@\vbox{\unvbox\@cclv}\dimen@\ht\z@ + \advance\dimen@ \col@number\topskip + \advance\dimen@ -\col@number\baselineskip + \divide\dimen@ \col@number + \advance\dimen@ \unbalance\baselineskip + \ifnum\tracingmulticols>\@ne + \typeout{Balance columns: \ifnum\unbalance=\z@\else + (off balance=\number\unbalance)\fi}% + \fi + {\vbadness\@M + \loop + {\process@cols\@ne{\global\setbox\count@\box\voidb@x}}% + \global\setbox\@ne\copy\z@ + {\process@cols\thr@@{\global\setbox\count@ + \vsplit\@ne to\dimen@}}% + % + % ... After \process@cols has done its job we have the following situation: + % box0 <-- all material + % box3 <-- first column + % box5 <-- second column + % ... + % box1 <-- last column ... + % + \ifnum\tracingmulticols>\@ne + \message{\@spaces First column = \the\ht\thr@@}\fi + \ifshr@nking \global\setbox\thr@@\vbox{\unvbox\thr@@}% + \ifnum\tracingmulticols>\@ne + \message{ after shrinking \the\ht\thr@@}\fi\fi + \ifnum\tracingmulticols>\@ne + \message{<> last column = \the\ht\@ne}% + \typeout{}\fi + \ifdim\ht\@ne > \ht\thr@@ + \global\advance\dimen@\p@ + \repeat}% + \dimen@\ht\thr@@ + \process@cols\z@{\@tempcnta\count@ + \advance\@tempcnta\@ne + \setbox\count@\vtop to\dimen@ + {\unvbox\@tempcnta + \ifshr@nking\vfill\fi}}% + \global\vsize\@colroom + \global\advance\vsize\ht\partial@page + \page@sofar} +% ======================================================================== +\catcode`\@=12 % default PLAIN value +% ======================================================================== +\endinput diff --git a/Master/texmf-dist/tex/plain/gustlib/plbtx993/plbtxbst.doc b/Master/texmf-dist/tex/plain/gustlib/plbtx993/plbtxbst.doc new file mode 100644 index 00000000000..24f6fc34ca7 --- /dev/null +++ b/Master/texmf-dist/tex/plain/gustlib/plbtx993/plbtxbst.doc @@ -0,0 +1,2605 @@ +% 22 X 1997 +% ========= +% +% To jest: +% PLBTXBST v.0.99.3[a-z] +% +% system polskich styli bibliograficznych dla programu BibTeX 0.99[a-z] +% +% autor: (c) B.Licho\'nski 1994 +% +% historia: v.0.99[a-z] 2 Paz 1994 -- pierwsze wydanie +% v.0.99.1[a-z] 9 Paz 1997 -- poprawka polegaj/aca na usuni/eciu +% sp/ojnika "i" przy wyliczaniu +% autor/ow +% v.0.99.2[a-z] 10 Paz 1997 -- poprawka polegaj/aca na usuni/eciu +% angielskiej nazwy Master's thesis +% na polsk/a ,,Praca magisterska'' +% v.0.99.3[a-z] 22 Paz 1997 -- poprawka polegaj/aca na dopisywaniu +% przecinka mi/edzy dwoma nazwiskami +% autor/ow +%% @texfile{ +%% author = "Bogus{\l}aw Licho\'nski", +%% version = "PLBTXBST v.0.99.3[a-z]", +%% date = "22 Paz 1994", +%% filename = "plbtxbst.doc", +%% address = "Gdynia ul. Kameliowa 17", +%% codetable = "ISO/ASCII", +%% supported = "yes", +%% docstring = "Definicje polskich styli bibliograficznych +%% dla programu BibTeX 0.99[a-z].", +%% } +% BibTeX `plain' Polish family + % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. + % Copyright (C) 1985, all rights reserved by Oren Patashnik. + % Copyright (C) 1994, all rights reserved by Bogus/law Licho/nski. + % Copying of this file is authorized only if either + % (1) you make absolutely no changes to your copy, including name, or + % (2) if you do make changes, you name it something other than + % plbtxbst.doc, plplain.bst, plunsrt.bst, plalpha.bst, and plabbrv.bst. + % This restriction helps ensure that all standard polish styles are identical. + % The file plbtxbst.doc has the documentation for this style. +% Please notify Bogus/law Licho/nski of any bugs in +% these polish standard styles or in this documentation file. +% +% This is file plbtxbst.doc; it helps document bibliography styles, +% and is also a template file that you can use to make +% several different style files, if you have access to a C preprocessor. +% For example, the standard styles were made by doing something like +% cpp -P -DPLPLAIN plbtxbst.doc plplain.txt +% cpp -P -DPLUNSRT plbtxbst.doc plunsrt.txt +% cpp -P -DPLALPHA plbtxbst.doc plalpha.txt +% cpp -P -DPLABBRV plbtxbst.doc plabbrv.txt +% and then renaming after removing unwanted comments and blank lines. +% If you don't have access, you can edit this file by hand to imitate +% the preprocessor, with the following explanation of the C preprocessor +% constructs used here. +% +% The output of the preprocessor is the same as the input, except that certain +% lines will be excluded (and some blank lines will be added). The sequence +% #if VAR +% lines to be included when VAR is not zero +% #else +% lines to be included when VAR is zero +% #endif +% (with the #-signs appearing in column 1) means that one set or the other of +% the lines are to be included depending on the value of VAR. +% The #else part is optional. Comments can be added after #else and #endif. +% Variables can be set by +% #define VAR value +% and one can also use #ifdef VAR to see if VAR has any value, and #ifndef +% to see if it has none. +% Another #if form used in this file is #if !VAR, which includes the lines +% after the #if only if VAR is zero. +% +% Convention: Use all uppercase identifiers for these preprocessor variables +% so you can spot them easily +% +% The command line to the preprocessor should define one of PLPLAIN, PLUNSRT, +% PLALPHA or PLABBRV (though PLPLAIN will be used by default if none is given), +% and the following lines will set various boolean variables to control the +% various lines that are chosen from the rest of the file. +% Each boolean variable should be set true (1) or false (0) in each style. +% Here are the current variables, and their meanings: +% LAB_ALPH: an alphabetic label is used (if false then a numeric +% label is used) +% SORTED: the entries should be sorted by label (if nonnumeric) +% and other info, like authors (if false, then +% entries remain in order of occurrence) +% NAME_FULL: the authors, editors, etc., get the full names as +% given in the bibliography file (if false, the first +% names become initials) +% ATIT_LOWER: titles of non-"books" (e.g., articles) should be +% converted to lower-case, except the first letter or +% first letter after a colon +% (if false then they appear as in the database) +% MONTH_FULL: months are spelled out in full (if false, then +% they're abbreviated) +% JOUR_FULL: macro journal names are spelled out in full +% (if false then they are abbreviated, currently +% as they appear in ACM publications) +#ifndef PLUNSRT +# ifndef PLALPHA +# ifndef PLABBRV +# define PLPLAIN 1 +# endif +# endif +#endif +#ifdef PLPLAIN +% plain style (sorted numbers) +# define LAB_ALPH 0 +# define SORTED 1 +# define NAME_FULL 1 +# define ATIT_LOWER 1 +# define MONTH_FULL 1 +# define JOUR_FULL 1 +#endif +#ifdef PLUNSRT +% unsrt style (unsorted numbers) +# define LAB_ALPH 0 +# define SORTED 0 +# define NAME_FULL 1 +# define ATIT_LOWER 1 +# define MONTH_FULL 1 +# define JOUR_FULL 1 +#endif +#ifdef PLALPHA +% alpha style (sorted short alphabetics) +# define LAB_ALPH 1 +# define SORTED 1 +# define NAME_FULL 1 +# define ATIT_LOWER 1 +# define MONTH_FULL 1 +# define JOUR_FULL 1 +#endif +#ifdef PLABBRV +% abbrv style (sorted numbers, with abbreviations) +# define LAB_ALPH 0 +# define SORTED 1 +# define NAME_FULL 0 +# define ATIT_LOWER 1 +# define MONTH_FULL 0 +# define JOUR_FULL 0 +#endif +% +% Entry formatting: Similar to that recommended by Mary-Claire van Leunen +% in "A Handbook for Scholars". Book-like titles are italicized +% (emphasized) and non-book titles are converted to sentence +% capitilization (and not enclosed in quotes). +% This file outputs a \newblock between major blocks of an entry +% (the name \newblock is analogous to the names \newline and \newpage) +% so that the user can obtain an "open" format, which has a line break +% before each block and lines after the first are indented within blocks, +% by giving the optional \documentstyle argument `openbib'; +% The default is the "closed" format---blocks runs together. +% +% Citation alphabetic label format: +% [Knu73] for single author (or editor or key) +% [AHU83] (first letters of last names) for multiple authors +% +% Citation label numberic format: +% [number] +% +% Reference list ordering for sorted, alphabetic lables: +% alphabetical by citation label, then by author(s) or whatever +% passes for author in the absence of one, then by year, +% then title +% +% Reference list ordering for sorted, numeric lables: +% alphabetical by author(s) or whatever passes +% for author in the absence of one, then by year, then title +% +% Reference list ordering for unsorted: +% by the order cited in the text +% +% History +% 12/16/84 (HWT) Original `plain' version, by Howard Trickey. +% 12/23/84 (LL) Some comments made by Leslie Lamport. +% 2/16/85 (OP) Changes based on LL's comments, Oren Patashnik. +% 2/17/85 (HWT) Template file and other standard styles made. +% 3/28/85 (OP) First release, version 0.98b for BibTeX 0.98f. +% 5/ 9/85 (OP) Version 0.98c for BibTeX 0.98i: +% fixed Theoretical Computer Science macro name; +% fixed the format.vol.num.pages function. +% 1/24/88 (OP) Version 0.99a for BibTeX 0.99a, main changes: +% assignment operator (:=) arguments reversed; +% the preamble$ function outputs the database PREAMBLE; +% entry.max$ and global.max$ (built-in) variables replace +% entry.string.max and global.string.max functions; +% alphabetizing by year then title, not just title; +% many unnecessary ties removed; \it ==> \em; +% the `alpha' style uses a superscripted `+' instead of a +% `*' for unnamed names in constructing the label; +% the `abbrv' style now uses "Mar." and "Sept."; +% the functions calc.label and presort now look at just +% the fields they're supposed to; +% BOOKLET, MASTERSTHESIS, TECHREPORT use nonbook titles; +% INBOOK and INCOLLECTION take an optional type (e.g. +% type = "Section"), overriding the default "chapter"; +% BOOK, INBOOK, INCOLLECTION, and PROCEEDINGS now allow +% either volume or number, not just volume; +% INCOLLECTION now allows an edition and series field; +% PROCEEDINGS and INPROCEEDINGS now use the address field +% to tell where a conference was held; +% INPROCEEDINGS and PROCEEDINGS now allow either volume +% or number, and also a series field; +% MASTERSTHESIS and PHDTHESIS accept types other than +% "Master's thesis" and "PhD thesis"; +% UNPUBLISHED now outputs, in one block, note then date; +% MANUAL now prints out the organization in +% the first block if the author field is empty; +% MISC can't be empty---it requires some optional field. +% 6/6/94 (BL) Polish PLPLAIN styles by Bogus/law Licho/nski. +% +% The ENTRY declaration +% Like Scribe's (according to pages 231-2 of the April '84 edition), +% but no fullauthor or editors fields because BibTeX does name handling. +% The annote field is commented out here because this family doesn't +% include an annotated bibliography style. And in addition to the fields +% listed here, BibTeX has a built-in crossref field, explained later. + +ENTRY +% Fields: + { address +% Usually the address of a publisher or other type of organization. +% Put information in this field only if it helps the reader find the +% thing---for example you should omit the address of a major +% publisher entirely. For a PROCEEDINGS or an INPROCEEDINGS, +% however, it's the address of the conference; for those two entry +% types, include the publisher's or organization's address, if +% necessary, in the publisher or organization field. +% annote +% Long annotation---for annotated bibliographies (begins sentence). + author +% Name(s) of author(s), in BibTeX name format. + booktitle +% Book title when the thing being referenced isn't the whole book. +% For book entries, the title field should be used instead. + chapter +% Chapter (or section or whatever) number. + edition +% Edition of a book---should be an ordinal (e.g., "Second"). + editor +% Name(s) of editor(s), in BibTeX name format. +% If there is also an author field, then the editor field should be +% for the book or collection that the work appears in. + howpublished +% How something strange has been published (begins sentence). + institution +% Sponsoring institution of a technical report. + journal +% Journal name (macros are provided for many). + key +% Alphabetizing, labeling, and cross-referencing key +% (needed when an entry has no author or editor). + month +% Month (macros are provided). + note +% To help the reader find a reference (begins sentence). + number +% Number of a journal or technical report, or of a work in a series. + organization +% Organization sponsoring a conference (or publishing a manual); if +% the editor (or author) is empty, and if the organization produces +% an awkward label or cross reference, you should put appropriately +% condensed organization information in the key field as well. + pages +% Page number or numbers (use `--' to separate a range, use `+' +% to indicate pages following that don't form a simple range). + publisher +% Publisher name. + school +% School name (for theses). + series +% The name of a series or set of books. +% An individual book will will also have it's own title. + title +% The title of the thing you're referred to. + type +% Type of a Techreport (e.g., "Research Note") to be used instead of +% the default "Technical Report"; or, similarly, the type of a +% thesis; or of a part of a book. + volume +% The volume number of a journal or multivolume work. + year +% The year should contain only numerals (technically, it should end +% with four numerals, after purification; doesn't a begin sentence). + } +% There are no integer entry variables + {} +% These string entry variables are used to form the citation label. +% In a storage pinch, sort.label can be easily computed on the fly. +#if LAB_ALPH +#if SORTED + { label extra.label sort.label } +#else !SORTED +% It doesn't seem like a good idea to use an order-of-citation +% reference list when using alphabetic labels, but when this happens +% we do things a little differently + { label } +#endif SORTED +#else !LAB_ALPH + { label } +#endif LAB_ALPH + +% Each entry function starts by calling output.bibitem, to write the +% \bibitem and its arguments to the .BBL file. Then the various fields +% are formatted and printed by output or output.check. Those functions +% handle the writing of separators (commas, periods, \newblock's), +% taking care not to do so when they are passed a null string. +% Finally, fin.entry is called to add the final period and finish the +% entry. +% +% A bibliographic reference is formatted into a number of `blocks': +% in the open format, a block begins on a new line and subsequent +% lines of the block are indented. A block may contain more than +% one sentence (well, not a grammatical sentence, but something to +% be ended with a sentence ending period). The entry functions should +% call new.block whenever a block other than the first is about to be +% started. They should call new.sentence whenever a new sentence is +% to be started. The output functions will ensure that if two +% new.sentence's occur without any non-null string being output between +% them then there won't be two periods output. Similarly for two +% successive new.block's. +% +% The output routines don't write their argument immediately. +% Instead, by convention, that argument is saved on the stack to be +% output next time (when we'll know what separator needs to come +% after it). Meanwhile, the output routine has to pop the pending +% output off the stack, append any needed separator, and write it. +% +% To tell which separator is needed, we maintain an output.state. +% It will be one of these values: +% before.all just after the \bibitem +% mid.sentence in the middle of a sentence: comma needed +% if more sentence is output +% after.sentence just after a sentence: period needed +% after.block just after a block (and sentence): +% period and \newblock needed. +% Note: These styles don't use after.sentence +% +% VAR: output.state : INTEGER -- state variable for output +% +% The output.nonnull function saves its argument (assumed to be nonnull) +% on the stack, and writes the old saved value followed by any needed +% separator. The ordering of the tests is decreasing frequency of +% occurrence. +% +% output.nonnull(s) == +% BEGIN +% s := argument on stack +% if output.state = mid.sentence then +% write$(pop() * ", ") +% -- "pop" isn't a function: just use stack top +% else +% if output.state = after.block then +% write$(add.period$(pop())) +% newline$ +% write$("\newblock ") +% else +% if output.state = before.all then +% write$(pop()) +% else -- output.state should be after.sentence +% write$(add.period$(pop()) * " ") +% fi +% fi +% output.state := mid.sentence +% fi +% push s on stack +% END +% +% The output function calls output.nonnull if its argument is non-empty; +% its argument may be a missing field (thus, not necessarily a string) +% +% output(s) == +% BEGIN +% if not empty$(s) then output.nonnull(s) +% fi +% END +% +% The output.check function is the same as the output function except that, if +% necessary, output.check warns the user that the t field shouldn't be empty +% (this is because it probably won't be a good reference without the field; +% the entry functions try to make the formatting look reasonable even when +% such fields are empty). +% +% output.check(s,t) == +% BEGIN +% if empty$(s) then +% warning$("empty " * t * " in " * cite$) +% else output.nonnull(s) +% fi +% END +% +% The output.bibitem function writes the \bibitem for the current entry +% (the label should already have been set up), and sets up the separator +% state for the output functions. And, it leaves a string on the stack +% as per the output convention. +% +% output.bibitem == +% BEGIN +% newline$ +% write$("\bibitem[") % for alphabetic labels, +% write$(label) % these three lines +% write$("]{") % are used +% write$("\bibitem{") % this line for numeric labels +% write$(cite$) +% write$("}") +% push "" on stack +% output.state := before.all +% END +% +% The fin.entry function finishes off an entry by adding a period to the +% string remaining on the stack. If the state is still before.all +% then nothing was produced for this entry, so the result will look bad, +% but the user deserves it. (We don't omit the whole entry because the +% entry was cited, and a bibitem is needed to define the citation label.) +% +% fin.entry == +% BEGIN +% write$(add.period$(pop())) +% newline$ +% END +% +% The new.block function prepares for a new block to be output, and +% new.sentence prepares for a new sentence. +% +% new.block == +% BEGIN +% if output.state <> before.all then +% output.state := after.block +% fi +% END +% +% new.sentence == +% BEGIN +% if output.state <> after.block then +% if output.state <> before.all then +% output.state := after.sentence +% fi +% fi +% END +% + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +% the variables s and t are temporary string holders + +STRINGS { s t } + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {output.bibitem} +{ newline$ +#if LAB_ALPH + "\bibitem[" write$ + label write$ + "]{" write$ +#else + "\bibitem{" write$ +#endif LAB_ALPH + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +% This function finishes all entries. + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +% These three functions pop one or two (integer) arguments from the stack +% and push a single one, either 0 or 1. +% The 'skip$ in the `and' and `or' functions are used because +% the corresponding if$ would be idempotent + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +% Sometimes we begin a new block only if the block will be big enough. The +% new.block.checka function issues a new.block if its argument is nonempty; +% new.block.checkb does the same if either of its TWO arguments is nonempty. + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +% The new.sentence.check functions are analogous. + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +% Here are some functions for formatting chunks of an entry. +% By convention they either produce a string that can be followed by +% a comma or period (using add.period$, so it is OK to end in a period), +% or they produce the null string. +% +% A useful utility is the field.or.null function, which checks if the +% argument is the result of pushing a `missing' field (one for which no +% assignment was made when the current entry was read in from the database) +% or the result of pushing a string having no non-white-space characters. +% It returns the null string if so, otherwise it returns the field string. +% Its main (but not only) purpose is to guarantee that what's left on the +% stack is a string rather than a missing field. +% +% field.or.null(s) == +% BEGIN +% if empty$(s) then return "" +% else return s +% END +% +% Another helper function is emphasize, which returns the argument emphazised, +% if that is non-empty, otherwise it returns the null string. Italic +% corrections aren't used, so this function should be used when punctation +% will follow the result. +% +% emphasize(s) == +% BEGIN +% if empty$(s) then return "" +% else return "{\em " * s * "}" +% +% The format.names function formats the argument (which should be in +% BibTeX name format) into "First Von Last, Junior", separated by commas +% and with an "and" before the last (but ending with "et~al." if the last +% of multiple authors is "others"). This function's argument should always +% contain at least one name. +% +% VAR: nameptr, namesleft, numnames: INTEGER +% pseudoVAR: nameresult: STRING (it's what's accumulated on the stack) +% +% format.names(s) == +% BEGIN +% nameptr := 1 +% numnames := num.names$(s) +% namesleft := numnames +% while namesleft > 0 +% do +% % for full names: +% t := format.name$(s, nameptr, "{ff~}{vv~}{ll}{, jj}") +% % for abbreviated first names: +% t := format.name$(s, nameptr, "{f.~}{vv~}{ll}{, jj}") +% if nameptr > 1 then +% if namesleft > 1 then nameresult := nameresult * ", " * t +% else if numnames > 2 +% then nameresult := nameresult * "," +% fi +% if t = "others" +% then nameresult := nameresult * " et~al." +% else nameresult := nameresult * " and " * t +% fi +% fi +% else nameresult := t +% fi +% nameptr := nameptr + 1 +% namesleft := namesleft - 1 +% od +% return nameresult +% END +% +% The format.authors function returns the result of format.names(author) +% if the author is present, or else it returns the null string +% +% format.authors == +% BEGIN +% if empty$(author) then return "" +% else return format.names(author) +% fi +% END +% +% Format.editors is like format.authors, but it uses the editor field, +% and appends ", editor" or ", editors" +% +% format.editors == +% BEGIN +% if empty$(editor) then return "" +% else +% if num.names$(editor) > 1 then +% return format.names(editor) * ", editors" +% else +% return format.names(editor) * ", editor" +% fi +% fi +% END +% +% Other formatting functions are similar, so no "comment version" will be +% given for them. +% +% The `pop$' in this function gets rid of the duplicate `empty' value and +% the `skip$' returns the duplicate field value + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "{\em " swap$ * "}" * } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } +#if NAME_FULL + { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := +#else + { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't := +#endif NAME_FULL + nameptr #1 > + { numnames #2 = % %BL poprawka 22.10.97 (przecinek mi/edzy 2 autor/ow) + { ", " * } % + 'skip$ % + if$ % + namesleft #1 > + { ", " * t * } + { numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " i~in." * } %BL + { " " * t * } %BL poprawka 9.10.97 + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { ", redaktorzy" * } %BL + { ", redaktor" * } %BL + if$ + } + if$ +} + +% The format.title function is used for non-book-like titles. +% For most styles we convert to lowercase (except for the very first letter, +% and except for the first one after a colon (followed by whitespace)), +% and hope the user has brace-surrounded words that need to stay capitilized; +% for some styles, however, we leave it as it is in the database. + +FUNCTION {format.title} +{ title empty$ + { "" } +#if ATIT_LOWER + { title "t" change.case$ } +#else + 'title +#endif ATIT_LOWER + if$ +} + +% By default, BibTeX sets the global integer variable global.max$ to the BibTeX +% constant glob_str_size, the maximum length of a global string variable. +% Analogously, BibTeX sets the global integer variable entry.max$ to +% ent_str_size, the maximum length of an entry string variable. +% The style designer may change these if necessary (but this is unlikely) + +% The n.dashify function makes each single `-' in a string a double `--' +% if it's not already +% +% pseudoVAR: pageresult: STRING (it's what's accumulated on the stack) +% +% n.dashify(s) == +% BEGIN +% t := s +% pageresult := "" +% while (not empty$(t)) +% do +% if (first character of t = "-") +% then +% if (next character isn't) +% then +% pageresult := pageresult * "--" +% t := t with the "-" removed +% else +% while (first character of t = "-") +% do +% pageresult := pageresult * "-" +% t := t with the "-" removed +% od +% fi +% else +% pageresult := pageresult * the first character +% t := t with the first character removed +% fi +% od +% return pageresult +% END + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +% The format.date function is for the month and year, but we give a warning if +% there's an empty year but the month is there, and we return the empty string +% if they're both empty. + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { month " " * year * } + if$ + } + if$ +} + +% The format.btitle is for formatting the title field when it is a book-like +% entry---the style used here keeps it in uppers-and-lowers and emphasizes it. + +FUNCTION {format.btitle} +{ title emphasize +} + +% For several functions we'll need to connect two strings with a +% tie (~) if the second one isn't very long (fewer than 3 characters). +% The tie.or.space.connect function does that. It concatenates the two +% strings on top of the stack, along with either a tie or space between +% them, and puts this concatenation back onto the stack: +% +% tie.or.space.connect(str1,str2) == +% BEGIN +% if text.length$(str2) < 3 +% then return the concatenation of str1, "~", and str2 +% else return the concatenation of str1, " ", and str2 +% END + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +% The either.or.check function complains if both fields or an either-or pair +% are nonempty. +% +% either.or.check(t,s) == +% BEGIN +% if empty$(s) then +% warning$(can't use both " * t * " fields in " * cite$) +% fi +% END + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +% The format.bvolume function is for formatting the volume and perhaps +% series name of a multivolume work. If both a volume and a series field +% are there, we assume the series field is the title of the whole multivolume +% work (the title field should be the title of the thing being referred to), +% and we add an "of <series>". This function is called in mid-sentence. + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { "wolumen" volume tie.or.space.connect %BL + series empty$ + 'skip$ + { " serii " * series emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} + +% The format.number.series function is for formatting the series name +% and perhaps number of a work in a series. This function is similar to +% format.bvolume, although for this one the series must exist (and the +% volume must not exist). If the number field is empty we output either +% the series field unchanged if it exists or else the null string. +% If both the number and series fields are there we assume the series field +% gives the name of the whole series (the title field should be the title +% of the work being one referred to), and we add an "in <series>". +% We capitilize Number when this function is used at the beginning of a block. + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { "number" } %tu skon. + { "Number" } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { " serii " * series * } + if$ + } + if$ + } + { "" } + if$ +} + +% The format.edition function appends " edition" to the edition, if present. +% We lowercase the edition (it should be something like "Third"), because +% this doesn't start a sentence. + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { "wydanie " edition "l" change.case$ * } + { "wydanie " edition "t" change.case$ * } + if$ + } + if$ +} + +% The format.pages function is used for formatting a page range in a book +% (and in rare circumstances, an article). +% +% The multi.page.check function examines the page field for a "-" or "," or "+" +% so that format.pages can use "page" instead of "pages" if none exists. +% Note: global.max$ here means "take the rest of the string" +% +% VAR: multiresult: INTEGER (actually, a boolean) +% +% multi.page.check(s) == +% BEGIN +% t := s +% multiresult := false +% while ((not multiresult) and (not empty$(t))) +% do +% if (first character of t = "-" or "," or "+") +% then multiresult := true +% else t := t with the first character removed +% fi +% od +% return multiresult +% END + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +% This function doesn't begin a sentence so "pages" isn't capitalized. +% Other functions that use this should keep that in mind. + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "strony" pages n.dashify tie.or.space.connect } + { "strona" pages tie.or.space.connect } + if$ + } + if$ +} + +% The format.vol.num.pages function is for the volume, number, and page range +% of a journal article. We use the format: vol(number):pages, with some +% variations for empty fields. This doesn't begin a sentence. + +FUNCTION {format.vol.num.pages} +{ volume field.or.null + number empty$ + 'skip$ + { "(" number * ")" * * + volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ } if$ pages empty$ 'skip$ { duplicate$ empty$ { pop$ + format.pages } { ":" * pages n.dashify * } if$ } if$ } + + +% The format.chapter.pages, if the chapter is present, puts whatever is in the +% type field (or else "chapter" if type is empty) in front of a chapter number. +% It then appends the pages, if present. This doesn't begin a sentence. + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "rozdzia/l" } %problem +%%% { "chapter" } %problem + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +% The format.in.ed.booktitle function is used for starting out a sentence +% that begins "In <booktitle>", putting an editor before the title if one +% exists. + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "" booktitle emphasize * } %BL wywali/lem In + { "" format.editors * ", " * booktitle emphasize * } %BL + if$ + } + if$ +} + +% The function empty.misc.check complains if all six fields are empty, and +% if there's been no sorting or alphabetic-label complaint. + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and +#if SORTED + key empty$ not and +#else !SORTED +#if LAB_ALPH + key empty$ not and +#endif LAB_ALPH +#endif SORTED + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +% The function format.thesis.type returns either the (case-changed) type field, +% if it is defined, or else the default string already on the stack +% (like "Master's thesis" or "PhD thesis"). + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +% The function format.tr.number makes a string starting with "Technical Report" +% (or type, if that field is defined), followed by the number if there is one; +% it returns the starting part (with a case change) even if there is no number. +% This is used at the beginning of a sentence. + +FUNCTION {format.tr.number} +{ type empty$ + { "Raport instytutowy" } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +% Now come the cross-referencing functions (these are invoked because +% one entry in the database file(s) cross-references another, by giving +% the other entry's database key in a `crossref' field). This feature +% allows one or more titled things that are part of a larger titled +% thing to cross-reference the larger thing. These styles allow for +% five posibilities: (1) an ARTICLE may cross-reference an ARTICLE; +% (2) a BOOK, (3) INBOOK, or (4) INCOLLECTION may cross-reference a BOOK; +% or (5) an INPROCEEDINGS may cross-reference a PROCEEDINGS. +% Each of these is explained in more detail later. +% +% An ARTICLE entry type may cross reference another ARTICLE (this is +% intended for when an entire journal is devoted to a single topic--- +% but since there is no JOURNAL entry type, the journal, too, should be +% classified as an ARTICLE but without the author and title fields). +% This will result in two warning messages for the journal's entry +% if it's included in the reference list, but such is life. +% +% format.article.crossref == +% BEGIN +% if empty$(key) then +% if empty$(journal) then +% warning$("need key or journal for " * cite$ * +% " to crossref " * crossref) +% return(" \cite{" * crossref * "}") +% else +% return("In " * emphazise.correct (journal) * +% " \cite{" * crossref * "}") +% fi +% else +% return("In " * key * " \cite{" * crossref * "}") +% fi +% END +% +% The other cross-referencing functions are similar, so no "comment version" +% will be given for them. + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "Patrz {\em " journal * "\/}" * } %BL + if$ + } + { "Patrz " key * } + if$ + " \cite{" * crossref * "}" * +} + +% We use just the last names of editors for a cross reference: either +% "editor", or "editor1 and editor2", or "editor1 et~al." depending on +% whether there are one, or two, or more than two editors. + +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + editor num.names$ duplicate$ + #2 > + { pop$ " i~in." * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " i~in." * } + { " i~" * editor #2 "{vv~}{ll}" format.name$ * } + if$ + } + if$ + } + if$ +} + +% A BOOK (or INBOOK) entry type (assumed to be for a single volume in a +% multivolume work) may cross reference another BOOK (the entire multivolume). +% Usually there will be an editor, in which case we use that to construct the +% cross reference; otherwise we use a nonempty key field or else the series +% field (since the series gives the title of the multivolume work). + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "Patrz " %BL + } + { "Wolumen" volume tie.or.space.connect + " serii " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { "{\em " * series * "\/}" * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +% An INCOLLECTION entry type may cross reference a BOOK (assumed to be the +% collection), or an INPROCEEDINGS may cross reference a PROCEEDINGS. +% Often there will be an editor, in which case we use that to construct +% the cross reference; otherwise we use a nonempty key field or else +% the booktitle field (which gives the cross-referenced work's title). + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "Patrz {\em " booktitle * "\/}" * } %BL + if$ + } + { "Patrz " key * } %BL + if$ + } + { "Patrz " format.crossref.editor * } %BL + if$ + " \cite{" * crossref * "}" * +} + +% Now we define the type functions for all entry types that may appear +% in the .BIB file---e.g., functions like `article' and `book'. These +% are the routines that actually generate the .BBL-file output for +% the entry. These must all precede the READ command. In addition, the +% style designer should have a function `default.type' for unknown types. +% Note: The fields (within each list) are listed in order of appearance, +% except as described for an `inbook' or a `proceedings'. +% +% The article function is for an article in a journal. An article may +% CROSSREF another article. +% Required fields: author, title, journal, year +% Optional fields: volume, number, pages, month, note +% +% article == +% BEGIN +% output.bibitem +% output.check(format.authors,"author") +% new.block +% output.check(format.title,"title") +% new.block +% if missing$(crossref) then +% output.check(emphasize(journal),"journal") +% output(format.vol.num.pages) +% output.check(format.date,"year") +% else +% output.nonnull(format.article.crossref) +% output(format.pages) +% fi +% new.block +% output(note) +% fin.entry +% END +% +% The book function is for a whole book. A book may CROSSREF another book. +% Required fields: author or editor, title, publisher, year +% Optional fields: volume or number, series, address, edition, month, +% note +% +% book == +% BEGIN +% if empty$(author) then output.check(format.editors,"author and editor") +% else output.check(format.authors,"author") +% if missing$(crossref) then +% either.or.check("author and editor",editor) +% fi +% fi +% new.block +% output.check(format.btitle,"title") +% if missing$(crossref) then +% output(format.bvolume) +% new.block +% output(format.number.series) +% new.sentence +% output.check(publisher,"publisher") +% output(address) +% else +% new.block +% output.nonnull(format.book.crossref) +% fi +% output(format.edition) +% output.check(format.date,"year") +% new.block +% output(note) +% fin.entry +% END +% +% The other entry functions are all quite similar, so no "comment version" +% will be given for them. + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { journal emphasize "journal" output.check + format.vol.num.pages output + format.date "year" output.check + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +% A booklet is a bound thing without a publisher or sponsoring institution. +% Required: title +% Optional: author, howpublished, address, month, year, note + +FUNCTION {booklet} +{ output.bibitem + format.authors output + new.block + format.title "title" output.check + howpublished address new.block.checkb + howpublished output + address output + format.date output + new.block + note output + fin.entry +} + +% For the conference entry type, see inproceedings. + +% An inbook is a piece of a book: either a chapter and/or a page range. +% It may CROSSREF a book. If there's no volume field, the type field +% will come before number and series. +% Required: author or editor, title, chapter and/or pages, publisher,year +% Optional: volume or number, series, type, address, edition, month, note + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + format.chapter.pages "chapter and pages" output.check + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +% An incollection is like inbook, but where there is a separate title +% for the referenced thing (and perhaps an editor for the whole). +% An incollection may CROSSREF a book. +% Required: author, title, booktitle, publisher, year +% Optional: editor, volume or number, series, type, chapter, pages, +% address, edition, month, note + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.chapter.pages output + new.sentence + publisher "publisher" output.check + address output + format.edition output + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + new.block + note output + fin.entry +} + +% An inproceedings is an article in a conference proceedings, and it may +% CROSSREF a proceedings. If there's no address field, the month (& year) +% will appear just before note. +% Required: author, title, booktitle, year +% Optional: editor, volume or number, series, pages, address, month, +% organization, publisher, note + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.pages output + address empty$ + { organization publisher new.sentence.checkb + organization output + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + organization output + publisher output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +% The conference function is included for Scribe compatibility. + +FUNCTION {conference} { inproceedings } + +% A manual is technical documentation. +% Required: title +% Optional: author, organization, address, edition, month, year, note + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull + address output + } + if$ + } + { format.authors output.nonnull } + if$ + new.block + format.btitle "title" output.check + author empty$ + { organization empty$ + { address new.block.checka + address output + } + 'skip$ + if$ + } + { organization address new.block.checkb + organization output + address output + } + if$ + format.edition output + format.date output + new.block + note output + fin.entry +} + +% A mastersthesis is a Master's thesis. +% Required: author, title, school, year +% Optional: type, address, month, note + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + "Praca magisterska" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +% A misc is something that doesn't fit elsewhere. +% Required: at least one of the `optional' fields +% Optional: author, title, howpublished, month, year, note + +FUNCTION {misc} +{ output.bibitem + format.authors output + title howpublished new.block.checkb + format.title output + howpublished new.block.checka + howpublished output + format.date output + new.block + note output + fin.entry + empty.misc.check +} + +% A phdthesis is like a mastersthesis. +% Required: author, title, school, year +% Optional: type, address, month, note + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + new.block + format.btitle "title" output.check + new.block + "Praca doktorska" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +% A proceedings is a conference proceedings. +% If there is an organization but no editor field, the organization will +% appear as the first optional field (we try to make the first block nonempty); +% if there's no address field, the month (& year) will appear just before note. +% Required: title, year +% Optional: editor, volume or number, series, address, month, +% organization, publisher, note + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization output } + { format.editors output.nonnull } + if$ + new.block + format.btitle "title" output.check + format.bvolume output + format.number.series output + address empty$ + { editor empty$ + { publisher new.sentence.checka } + { organization publisher new.sentence.checkb + organization output + } + if$ + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + editor empty$ + 'skip$ + { organization output } + if$ + publisher output + } + if$ + new.block + note output + fin.entry +} + +% A techreport is a technical report. +% Required: author, title, institution, year +% Optional: type, number, address, month, note + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + format.tr.number output.nonnull + institution "institution" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +% An unpublished is something that hasn't been published. +% Required: author, title, note +% Optional: month, year + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + new.block + format.title "title" output.check + new.block + note "note" output.check + format.date output + fin.entry +} + +% We use entry type `misc' for an unknown type; BibTeX gives a warning. + +FUNCTION {default.type} { misc } + +% Here are macros for common things that may vary from style to style. +% Users are encouraged to use these macros. +% +% Months are either written out in full or abbreviated + +#if MONTH_FULL + +MACRO {jan} {"Stycze/n"} + +MACRO {feb} {"Luty"} + +MACRO {mar} {"Marzec"} + +MACRO {apr} {"Kwiecie/n"} + +MACRO {may} {"Maj"} + +MACRO {jun} {"Czerwiec"} + +MACRO {jul} {"Lipiec"} + +MACRO {aug} {"Sierpie/n"} + +MACRO {sep} {"Wrzesie/n"} + +MACRO {oct} {"Pa/xdziernik"} + +MACRO {nov} {"Listopad"} + +MACRO {dec} {"Grudzie/n"} + +MACRO {sty} {"Stycze/n"} + +MACRO {lut} {"Luty"} + +%MACRO {mar} {"Marzec"} + +MACRO {kwi} {"Kwiecie/n"} + +MACRO {maj} {"Maj"} + +MACRO {cze} {"Czerwiec"} + +MACRO {lip} {"Lipiec"} + +MACRO {sie} {"Sierpie/n"} + +MACRO {wrz} {"Wrzesie/n"} + +MACRO {paz} {"Pa/xdziernik"} + +MACRO {lis} {"Listopad"} + +MACRO {gru} {"Grudzie/n"} + +#else !MONTH_FULL + +MACRO {jan} {"Sty."} + +MACRO {feb} {"Luty"} + +MACRO {mar} {"Mar."} + +MACRO {apr} {"Kwi."} + +MACRO {may} {"Maj"} + +MACRO {jun} {"Czerw."} + +MACRO {jul} {"Lip."} + +MACRO {aug} {"Sier."} + +MACRO {sep} {"Wrze."} + +MACRO {oct} {"Paz."} + +MACRO {nov} {"List."} + +MACRO {dec} {"Gru."} + +MACRO {sty} {"Sty."} + +MACRO {lut} {"Luty"} + +%MACRO {mar}{"Mar."} + +MACRO {kwi} {"Kwi."} + +MACRO {maj} {"Maj"} + +MACRO {cze} {"Czerw."} + +MACRO {lip} {"Lip."} + +MACRO {sie} {"Sier."} + +MACRO {wrz} {"Wrze."} + +MACRO {paz} {"Paz."} + +MACRO {lis} {"List."} + +MACRO {gru} {"Gru."} + + +#endif MONTH_FULL + +% Journals are either written out in full or abbreviated; +% the abbreviations are like those found in ACM publications. +% +% To get a completely different set of abbreviations, it may be best to make +% a separate .bib file with nothing but those abbreviations; users could then +% include that file name as the first argument to the \bibliography command + +#if JOUR_FULL + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +MACRO {gust} {"Grupa U/zytkownik/ow Systemu \TeX"} + +#else !JOUR_FULL + +MACRO {acmcs} {"ACM Comput. Surv."} + +MACRO {acta} {"Acta Inf."} + +MACRO {cacm} {"Commun. ACM"} + +MACRO {ibmjrd} {"IBM J. Res. Dev."} + +MACRO {ibmsj} {"IBM Syst.~J."} + +MACRO {ieeese} {"IEEE Trans. Softw. Eng."} + +MACRO {ieeetc} {"IEEE Trans. Comput."} + +MACRO {ieeetcad} + {"IEEE Trans. Comput.-Aided Design Integrated Circuits"} + +MACRO {ipl} {"Inf. Process. Lett."} + +MACRO {jacm} {"J.~ACM"} + +MACRO {jcss} {"J.~Comput. Syst. Sci."} + +MACRO {scp} {"Sci. Comput. Programming"} + +MACRO {sicomp} {"SIAM J. Comput."} + +MACRO {tocs} {"ACM Trans. Comput. Syst."} + +MACRO {tods} {"ACM Trans. Database Syst."} + +MACRO {tog} {"ACM Trans. Gr."} + +MACRO {toms} {"ACM Trans. Math. Softw."} + +MACRO {toois} {"ACM Trans. Office Inf. Syst."} + +MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."} + +MACRO {tcs} {"Theoretical Comput. Sci."} + +MACRO {gust} {"G.U.S.T."} + +#endif JOUR_FULL + +% Now we read in the .BIB entries. + +READ + +% The sortify function converts to lower case after purify$ing; it's +% used in sorting and in computing alphabetic labels after sorting +% +% The chop.word(w,len,s) function returns either s or, if the first len +% letters of s equals w (this comparison is done in the third line of the +% function's definition), it returns that part of s after w. + +#if SORTED + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +#else !SORTED +#if LAB_ALPH + +% We need the chop.word stuff for the dubious unsorted-list-with-labels case. + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +#endif LAB_ALPH +#endif SORTED + +% This long comment applies only to alphabetic labels +% +% The format.lab.names function makes a short label by using the initials of +% the von and Last parts of the names (but if there are more than four names, +% (i.e., people) it truncates after three and adds a superscripted "+"; +% it also adds such a "+" if the last of multiple authors is "others"). +% If there is only one name, and its von and Last parts combined have just +% a single name-token ("Knuth" has a single token, "Brinch Hansen" has two), +% we take the first three letters of the last name. The boolean +% et.al.char.used tells whether we've used a superscripted "+", so that we +% know whether to include a LaTeX macro for it. +% +% format.lab.names(s) == +% BEGIN +% numnames := num.names$(s) +% if numnames > 1 then +% if numnames > 4 then +% namesleft := 3 +% else +% namesleft := numnames +% nameptr := 1 +% nameresult := "" +% while namesleft > 0 +% do +% if (name_ptr = numnames) and +% format.name$(s, nameptr, "{ff }{vv }{ll}{ jj}") = "others" +% then nameresult := nameresult * "{\etalchar{+}}" +% et.al.char.used := true +% else nameresult := nameresult * +% format.name$(s, nameptr, "{v{}}{l{}}") +% nameptr := nameptr + 1 +% namesleft := namesleft - 1 +% od +% if numnames > 4 then +% nameresult := nameresult * "{\etalchar{+}}" +% et.al.char.used := true +% else +% t := format.name$(s, 1, "{v{}}{l{}}") +% if text.length$(t) < 2 then % there's just one name-token +% nameresult := text.prefix$(format.name$(s,1,"{ll}"),3) +% else +% nameresult := t +% fi +% fi +% return nameresult +% END +% +% Exactly what fields we look at in constructing the primary part of the label +% depends on the entry type; this selectivity (as opposed to, say, always +% looking at author, then editor, then key) helps ensure that "ignored" fields, +% as described in the LaTeX book, really are ignored. Note that MISC is part +% of the deepest `else' clause in the nested part of calc.label; thus, any +% unrecognized entry type in the database is handled correctly. +% +% There is one auxiliary function for each of the four different sequences of +% fields we use. The first of these functions looks at the author field, and +% then, if necessary, the key field. The other three functions, which might +% look at two fields and the key field, are similar, except that the key field +% takes precedence over the organization field (for labels---not for sorting). +% +% The calc.label function calculates the preliminary label of an entry, which +% is formed by taking three letters of information from the author or editor or +% key or organization field (depending on the entry type and on what's empty, +% but ignoring a leading "The " in the organization), and appending the last +% two characters (digits) of the year. It is an error if the appropriate fields +% among author, editor, organization, and key are missing, and we use +% the first three letters of the cite$ in desperation when this happens. +% The resulting label has the year part, but not the name part, purify$ed +% (purify$ing the year allows some sorting shenanigans by the user). +% +% This function also calculates the version of the label to be used in sorting. +% +% The final label may need a trailing 'a', 'b', etc., to distinguish it from +% otherwise identical labels, but we can't calculated those "extra.label"s +% until after sorting. +% +% calc.label == +% BEGIN +% if type$ = "book" or "inbook" then +% author.editor.key.label +% else if type$ = "proceedings" then +% editor.key.organization.label +% else if type$ = "manual" then +% author.key.organization.label +% else +% author.key.label +% fi fi fi +% label := label * substring$(purify$(field.or.null(year)), -1, 2) +% % assuming we will also sort, we calculate a sort.label +% sort.label := sortify(label), but use the last four, not two, digits +% END + +#if LAB_ALPH + +INTEGERS { et.al.char.used } + +FUNCTION {initialize.et.al.char.used} +{ #0 'et.al.char.used := +} + +EXECUTE {initialize.et.al.char.used} + +FUNCTION {format.lab.names} +{ 's := + s num.names$ 'numnames := + numnames #1 > + { numnames #4 > + { #3 'namesleft := } + { numnames 'namesleft := } + if$ + #1 'nameptr := + "" + { namesleft #0 > } + { nameptr numnames = + { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { "{\etalchar{+}}" * + #1 'et.al.char.used := + } + { s nameptr "{v{}}{l{}}" format.name$ * } + if$ + } + { s nameptr "{v{}}{l{}}" format.name$ * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + numnames #4 > + { "{\etalchar{+}}" * + #1 'et.al.char.used := + } + 'skip$ + if$ + } + { s #1 "{v{}}{l{}}" format.name$ + duplicate$ text.length$ #2 < + { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ } + 'skip$ + if$ + } + if$ +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ +#if SORTED + { cite$ #1 #3 substring$ } +#else !SORTED % need warning here because we won't give it later + { "for label, need author or key in " cite$ * warning$ + cite$ #1 #3 substring$ + } +#endif SORTED + { key #3 text.prefix$ } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ +#if SORTED + { cite$ #1 #3 substring$ } +#else !SORTED % need warning here because we won't give it later + { "for label, need author, editor, or key in " cite$ * warning$ + cite #1 #3 substring$ + } +#endif SORTED + { key #3 text.prefix$ } + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.key.organization.label} +{ author empty$ + { key empty$ + { organization empty$ +#if SORTED + { cite$ #1 #3 substring$ } +#else !SORTED % need warning here because we won't give it later + { "for label, need author, key, or organization in " cite$ * + warning$ + cite #1 #3 substring$ + } +#endif SORTED + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + { key #3 text.prefix$ } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.organization.label} +{ editor empty$ + { key empty$ + { organization empty$ +#if SORTED + { cite$ #1 #3 substring$ } +#else !SORTED % need warning here because we won't give it later + { "for label, need editor, key, or organization in " cite$ * + warning$ + cite #1 #3 substring$ + } +#endif SORTED + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + { key #3 text.prefix$ } + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.label} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.organization.label + { type$ "manual" = + 'author.key.organization.label + 'author.key.label + if$ + } + if$ + } + if$ + duplicate$ + year field.or.null purify$ #-1 #2 substring$ + * + 'label := + year field.or.null purify$ #-1 #4 substring$ + * + sortify 'sort.label := +} + +% It doesn't seem like a particularly good idea to use an order-of-citation +% reference list when using alphabetic labels, but we need to have a +% special pass to calculate labels when this happens. + +#if !SORTED + +ITERATE {calc.label} + +#endif !SORTED + +#endif LAB_ALPH + +% When sorting, we compute the sortkey by executing "presort" on each entry. +% The presort key contains a number of "sortify"ed strings, concatenated +% with multiple blanks between them. This makes things like "brinch per" +% come before "brinch hansen per". +% +% The fields used here are: the sort.label for alphabetic labels (as set by +% calc.label), followed by the author names (or editor names or organization +% (with a leading "The " removed) or key field, depending on entry type and on +% what's empty), followed by year, followed by the first bit of the title +% (chopping off a leading "The ", "A ", or "An "). +% Names are formatted: Von Last First Junior. +% The names within a part will be separated by a single blank +% (such as "brinch hansen"), two will separate the name parts themselves +% (except the von and last), three will separate the names, +% four will separate the names from year (and from label, if alphabetic), +% and four will separate year from title. +% +% The sort.format.names function takes an argument that should be in +% BibTeX name format, and returns a string containing " "-separated +% names in the format described above. The function is almost the same +% as format.names. + +#if SORTED + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ +#if NAME_FULL + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := +#else + s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't := +#endif NAME_FULL + nameptr numnames = t "others" = and + { "i~in" * } %BL + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +% The sort.format.title function returns the argument, +% but first any leading "A "'s, "An "'s, or "The "'s are removed. +% The chop.word function uses s, so we need another string variable, t + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +% The auxiliary functions here, for the presort function, are analogous to +% the ones for calc.label; the same comments apply, except that the +% organization field takes precedence here over the key field. For sorting +% purposes, we still remove a leading "The " from the organization field. + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +% There is a limit, entry.max$, on the length of an entry string variable +% (which is what its sort.key$ is), so we take at most that many characters +% of the constructed key, and hope there aren't many references that match +% to that many characters! + +FUNCTION {presort} +#if LAB_ALPH +{ calc.label + sort.label + " " + * + type$ "book" = +#else !LAB_ALPH +{ type$ "book" = +#endif LAB_ALPH + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ +#if LAB_ALPH + * +#endif LAB_ALPH + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +% And now we can sort + +SORT + +#endif SORTED + +% This long comment applies only to alphabetic labels, when sorted +% +% Now comes the final computation for alphabetic labels, putting in the 'a's +% and 'b's and so forth if required. This involves two passes: a forward +% pass to put in the 'b's, 'c's and so on, and a backwards pass +% to put in the 'a's (we don't want to put in 'a's unless we know there +% are 'b's). +% We have to keep track of the longest (in width$ terms) label, for use +% by the "thebibliography" environment. +% +% VAR: longest.label, last.sort.label, next.extra: string +% longest.label.width, last.extra.num: integer +% +% initialize.longest.label == +% BEGIN +% longest.label := "" +% last.sort.label := int.to.chr$(0) +% next.extra := "" +% longest.label.width := 0 +% last.extra.num := 0 +% END +% +% forward.pass == +% BEGIN +% if last.sort.label = sort.label then +% last.extra.num := last.extra.num + 1 +% extra.label := int.to.chr$(last.extra.num) +% else +% last.extra.num := chr.to.int$("a") +% extra.label := "" +% last.sort.label := sort.label +% fi +% END +% +% reverse.pass == +% BEGIN +% if next.extra = "b" then +% extra.label := "a" +% fi +% label := label * extra.label +% if width$(label) > longest.label.width then +% longest.label := label +% longest.label.width := width$(label) +% fi +% next.extra := extra.label +% END + +#if LAB_ALPH + +#if SORTED + +STRINGS { longest.label last.sort.label next.extra } + +INTEGERS { longest.label.width last.extra.num } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #0 int.to.chr$ 'last.sort.label := + "" 'next.extra := + #0 'longest.label.width := + #0 'last.extra.num := +} + +FUNCTION {forward.pass} +{ last.sort.label sort.label = + { last.extra.num #1 + 'last.extra.num := + last.extra.num int.to.chr$ 'extra.label := + } + { "a" chr.to.int$ 'last.extra.num := + "" 'extra.label := + sort.label 'last.sort.label := + } + if$ +} + +FUNCTION {reverse.pass} +{ next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + label extra.label * 'label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ + extra.label 'next.extra := +} + +EXECUTE {initialize.longest.label} + +ITERATE {forward.pass} + +REVERSE {reverse.pass} + +#else !SORTED + +% It still doesn't seem like a good idea to use an order-of-citation +% reference list when using alphabetic labels, but when this happens we +% must compute the longest label + +STRINGS { longest.label } + +INTEGERS { longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +#endif SORTED + +#else !LAB_ALPH + +% Now comes the computation for numeric labels. +% We use either the sorted order or original order. +% We still have to keep track of the longest (in width$ terms) label, for use +% by the "thebibliography" environment. + +STRINGS { longest.label } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +#endif LAB_ALPH + +% Now we're ready to start writing the .BBL file. +% We begin, if necessary, with a LaTeX macro for unnamed names in an alphabetic +% label; next comes stuff from the `preamble' command in the database files. +% Then we give an incantation containing the command +% \begin{thebibliography}{...} +% where the `...' is the longest label. +% +% We also call init.state.consts, for use by the output routines. + +FUNCTION {begin.bib} +#if LAB_ALPH +{ et.al.char.used + { "\newcommand{\etalchar}[1]{$^{#1}$}" write$ newline$ } + 'skip$ + if$ + preamble$ empty$ +#else !LAB_ALPH +{ preamble$ empty$ +#endif LAB_ALPH + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +% Now we produce the output for all the entries + +ITERATE {call.type$} + +% Finally, we finish up by writing the `\end{thebibliography}' command. + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} diff --git a/Master/texmf-dist/tex/plain/gustlib/plbtx993/test.mex b/Master/texmf-dist/tex/plain/gustlib/plbtx993/test.mex new file mode 100644 index 00000000000..8ff961ac62a --- /dev/null +++ b/Master/texmf-dist/tex/plain/gustlib/plbtx993/test.mex @@ -0,0 +1,19 @@ +% To jest plik /xr/od/lowy dla systemu TeX z formatym MeX + +\input biblotex + +\prefixing + +Program X posiada wszystkie mo/zliwo/sci programu +(ang. upward compatible). Szczeg/o/lowe informacje o~mo/zliwo/sciach obu +program/ow znale/x/c mo/zna w~pracy~\cite{test}. + +\bibliography{test} % Use *.bib to resolve the labels. + +\bibliographystyle{plunsrt} % Number the references. +%\bibliographystyle{plabbrv} % Number the references. +%\bibliographystyle{plplain} % Number the references. +%\bibliographystyle{plalpha} % Number the references. + +\bye + diff --git a/Master/texmf-dist/tex/plain/gustlib/plmac218/plidxmac.tex b/Master/texmf-dist/tex/plain/gustlib/plmac218/plidxmac.tex new file mode 100644 index 00000000000..0d0d4859346 --- /dev/null +++ b/Master/texmf-dist/tex/plain/gustlib/plmac218/plidxmac.tex @@ -0,0 +1,266 @@ +% 2 X 1993 +% ======== +% +% To jest: +% PLIDXMAC ver.2.18 +% +% system makr do tworzenia indeks/ow w systemie plain-TeX +% +% adaptacja: B.Licho/nski 1993 +%----------------------------------- begin PLIDXMAC ---------------------- +%% @texfile{ +%% author = "Bogus/law Licho/nski", +%% version = "2.18", +%% date = "2 Paz 1993", +%% filename = "plidxmac.tex", +%% address = "Gdynia ul. Kameliowa 17", +%% codetable = "ISO/ASCII", +%% supported = "yes", +%% docstring = "Definicje makr plain TeX dla programu PLindex", +%% } +% +% Most of the code in this file are excerpts from latex.tex and manmac.tex. +% The actual style of the index environment \beginindex ... \endindex +% at the end of this file is left empty. +% +% +\def\makeatletter{\catcode`\@=11\relax} +\def\makeatother{\catcode`\@=12\relax} +\makeatletter +\def\newwrite{\alloc@7\write\chardef\sixt@@n}% added by B.L. 1.X.93 Gdynia 16:47:02 +\newif\ifignore% added by B.L. 1.X.93 Gdynia 16:47:02 +\newif\if@filesw \@fileswtrue +\newif\if@nobreak \@nobreakfalse +\def\@makeother#1{\catcode`#112\relax} +\def\newwrite{\alloc@7\write\chardef\sixt@@n} +\newwrite\@unused +\def\typeout#1{{\let\protect\string\immediate\write\@unused{#1}}} + +% **************************************** +% * PAGE NUMBERING * +% **************************************** +% +% Page numbers are produced by a page counter, used just like any other +% counter. The only difference is that \c@page contains the number of +% the next page to be output (the one currently being produced), rather +% than one minus it. Thus, it is normally initialized to 1 rather than +% 0. \c@page is defined to be \count0, rather than a count assigned by +% \newcount. +% +% The user sets the pagenumber style with the \pagenumbering{FOO} +% command, which sets the page counter to 1 and defines \thepage to be +% \FOO. For example, \pagenumbering{roman} causes pages to be numbered +% i, ii, etc. + +% Numbering commands for definitions of \theCOUNTER and \list arguments. +% \fnsymbol produces the standard footnoting symbols: asterisk, dagger, etc. +% They can be used only in math mode. + +% \@nameuse{NAME} : Expands to \NAME . +\def\@nameuse#1{\csname #1\endcsname} + +\def\arabic#1{\@arabic{\@nameuse{c@#1}}} +\def\roman#1{\@roman{\@nameuse{c@#1}}} +\def\Roman#1{\@Roman{\@nameuse{c@#1}}} +\def\alph#1{\@alph{\@nameuse{c@#1}}} +\def\Alph#1{\@Alph{\@nameuse{c@#1}}} +%\def\fnsymbol#1{\@fnsymbol{\@nameuse{c@#1}}} + +\def\@arabic#1{\ifnum #1>0 \number #1\fi} +\def\@roman#1{\romannumeral #1} +\def\@Roman#1{\expandafter\uppercase\expandafter{\romannumeral #1}} +\def\@alph#1{\ifcase#1\or a\or b\or c\or d\else\@ialph{#1}\fi} +\def\@ialph#1{\ifcase#1\or \or \or \or \or e\or f\or g\or h\or i\or j\or + k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or + z\else\@ctrerr\fi} +\def\@Alph#1{\ifcase#1\or A\or B\or C\or D\else\@Ialph{#1}\fi} +\def\@Ialph#1{\ifcase#1\or \or \or \or \or E\or F\or G\or H\or I\or J\or + K\or L\or M\or N\or O\or P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or + Z\else\@ctrerr\fi} +%\def\@fnsymbol#1{\ifcase#1\or *\or \dagger\or \ddagger\or +% \mathchar "278\or \mathchar "27B\or \|\or **\or \dagger\dagger +% \or \ddagger\ddagger \else\@ctrerr\fi\relax} + +\countdef\c@page=0 \c@page=1 +\def\cl@page{} +\def\pagenumbering#1{\global\c@page \@ne \gdef\thepage{\csname @#1\endcsname + \c@page}} +\pagenumbering{arabic} + +% \@bsphack ... \@esphack +% used by macros such as \index and \begin{@float} ... \end{@float} +% that want to be invisible -- i.e., +% not leave any extra space when used in the middle of text. Such +% a macro should begin with \@bsphack and end with \@esphack +% The macro in question should not create any text, nor change the +% mode. +% +% \@bsphack == +% BEGIN +% \dimen\@savsk := \lastskip +% if hmode then \@savsf := \spacefactor fi +% END +% +% \@esphack == +% BEGIN +% if hmode +% then \spacefactor := \@savsf +% if \dimen\@savsk > 0pt then \ignorespaces +% \global\ignoretrue fi +% fi +% END +% + +\newdimen\@savsk +\newcount\@savsf + +\def\@bsphack{\@savsk\lastskip + \ifhmode\@savsf\spacefactor\fi} + +\def\@esphack{\relax\ifhmode\spacefactor\@savsf + {}\ifdim \@savsk >\z@ \global\ignoretrue \ignorespaces + \fi \fi} + +% The command \@sanitize changes the catcode of all special characters +% except for braces to 'other'. It can be used for commands like +% \index that want to write their arguments verbatim. Needless to +% say, this command should only be executed within a group, or chaos +% will ensue. + +\def\@sanitize{\@makeother\ \@makeother\\\@makeother\$\@makeother\&% +\@makeother\#\@makeother\^\@makeother\^^K\@makeother\_\@makeother\^^A% +\@makeother\%\@makeother\~} + +% **************************************** +% * INDEX COMMANDS * +% **************************************** +% +% \makeindex == +% BEGIN +% if \@filesw = T +% then open file \jobname.IDX as \indexfile +% \index == BEGIN \@bsphack +% \begingroup +% re-\catcode special characters to 'other' +% \wrindex +% fi +% END +% +% \wrindex{ITEM} == +% BEGIN +% write of {\indexentry{ITEM}{page number}} +% \endgroup +% \@esphack +% END + +% INITIALIZATION: +% +% \index == BEGIN \@bsphack +% \begingroup +% re-\catcode special characters (in case '%' there) +% \index +% END +% +% \index{ITEM} == BEGIN \endgroup \@esphack END +% +\def\makeindex{\if@filesw \newwrite\@indexfile + \immediate\openout\@indexfile=\jobname.idx + \def\index{\@bsphack\begingroup\@sanitize\@wrindex\@indexfile} + \typeout{Writing index file \jobname.idx }\fi} + +\def\@wrindex#1#2{\let\thepage\relax + \xdef\gtempa{\write#1{\string + \indexentry{#2}{\thepage}}}\endgroup\gtempa + \if@nobreak \ifvmode\@nobreak\fi\fi\@esphack} + +\def\index{\@bsphack\begingroup\@sanitize\@index} +\def\@index#1{\endgroup\@esphack} + +\def\makeglossary{\if@@filesw \newwrite\@glossaryfile + \immediate\openout\@glossaryfile=\jobname.glo + \def\glossary{\@bsphack\begingroup\@sanitize\@wrindex\@glossaryfile}\typeout + {Writing glossary file \jobname.glo }\fi} + +\def\glossary{\@bsphack\begingroup\@sanitize\index} + + +% Doublecolumns formatting +\newdimen\pagewidth +\pagewidth=\hsize +\newbox\partialpage +\def\begindoublecolumns{\begingroup + \output={\global\setbox\partialpage=\vbox{\unvbox255\bigskip}}\eject + \output={\doublecolumnout} \hsize=14pc \vsize=89pc + \let\item\@idxitem} +\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} + +%%%%%%%%%%%% do/lo/zy/lem z texinfo 20:26:54 +\newdimen \bindingoffset \bindingoffset=0pt +\newdimen \normaloffset \normaloffset=\hoffset +\def\onepageout#1{\hoffset=\normaloffset +\ifodd\pageno \advance\hoffset by \bindingoffset +\else \advance\hoffset by -\bindingoffset\fi +{\escapechar=`\\\relax % makes sure backslash is used in output files. +\shipout\vbox{{\let\hsize=\pagewidth \makeheadline} \pagebody{#1}% +{\let\hsize=\pagewidth \makefootline}}}% +\advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi} +%%%%%%%%%%%%%%%%%%%%%% + +\def\@idxitem{\par\hangindent 40pt} +\def\subitem{\par\hangindent 40pt \hskip 20pt} +\def\subsubitem{\par\hangindent 40pt \hskip 30pt} +\def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax} + +\def\indexemdashes{% +\def\@idxitem{\par\hangindent 0pt} +\def\subitem{\par\hangindent 0pt --- } +\def\subsubitem{\par\hangindent 0pt --- --- } +\def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax}} + + + \def\beginindex{\begingroup\let\item\@idxitem + % Output opening routines go here + } + \def\endindex{ + % Output closing routines go here. + \endgroup} + +% \@ifundefined{NAME}{YES}{NO} +% : If \NAME is undefined then it executes YES, +% otherwise it executes NO. More precisely, +% true if \NAME either undefined or = \relax. +\long\def\@ifundefined#1#2#3{\expandafter\ifx\csname + #1\endcsname\relax#2\else#3\fi} +\@ifundefined{seeterm}{\def\seeterm{see}}{} +\@ifundefined{zobterm}{\def\zobterm{zob.}}{} +\def\see#1#2{{\it \seeterm\/} #1} +\def\zob#1#2{{\it \zobterm\/} #1} + +\def\Input#1{\openin1 #1 \ifeof1 \typeout + {I cannot find file #1.}\else\closein1 \relax\input #1 \fi} +\def\printindex{\Input{\jobname.ind}} +\def\printtheindex#1{\Input{#1}} +% above added by B.L. 1.X.93 Gdynia 16:47:03 + +\def\endindex{ +% Output closing routines go here. +\endgroup} + +\makeatother diff --git a/Master/texmf-dist/tex/plain/gustlib/plmac218/plind.bat b/Master/texmf-dist/tex/plain/gustlib/plmac218/plind.bat new file mode 100644 index 00000000000..f3ca45dbca2 --- /dev/null +++ b/Master/texmf-dist/tex/plain/gustlib/plmac218/plind.bat @@ -0,0 +1,6 @@ +@echo off
+rem Przyk/ladowy batch. (StaW)
+rem PLindex sortuje plik przyklad.idx zapisany w standardzie Mazovii,
+rem daj/ac wyj/sciowy plik przyklad.ind
+rem U/zycie stylu plaintex.ist pozwala na sk/lad formatem MeX/Plain
+plindex.exe -z mazovia -s plaintex.ist przyklad.idx
diff --git a/Master/texmf-dist/tex/plain/gustlib/plmac218/przyklad.tex b/Master/texmf-dist/tex/plain/gustlib/plmac218/przyklad.tex new file mode 100644 index 00000000000..63849c3b260 --- /dev/null +++ b/Master/texmf-dist/tex/plain/gustlib/plmac218/przyklad.tex @@ -0,0 +1,10 @@ +% plik test.tex (kodowanie Mazovia) +\input plidxmac.tex +\makeindex +Kot\index{kot} poluje na kanarka\index{kanarek}, a~pies\index{pies} +poluje na kota\index{kot}. Z~kolei §¢’w\index{§¢’w} to strasznie powolne +zwierz‘% +\index{zwierz‘}. +\vfil\eject +\printindex +\bye diff --git a/Master/texmf-dist/tex/plain/gustlib/rbox-ex.tex b/Master/texmf-dist/tex/plain/gustlib/rbox-ex.tex new file mode 100644 index 00000000000..913f2a51b6e --- /dev/null +++ b/Master/texmf-dist/tex/plain/gustlib/rbox-ex.tex @@ -0,0 +1,56 @@ +%% przyk/lad u/zycia ramek zaokr/aglonych | rounded frames example +%% (opr. St. Wawrykiewicz) +\input roundbox +\def\bsl{{\tt\char'134}} +\setcorners 2 % +\roundbox width 9cm height 9cm {Some text} + % ramka o gr. linii 0.4pt | frame of 0.4pt thickness + % parametry: szer. i wys. {tekst} | parameters: width height {contents} + % tre/s/c umieszczona centralnie | the contents is centered in the frame + % w ramce | + +\def\\{\par} + % w parametrze makra nie mo/ze | in macro parameter \par or newline + % by/c \par b/ad/x wolnej linii!!! | is not allowed +\Roundbox width 9cm {%ramka o gr. 0.8pt | 0.8pt thickness of the frame +\vbox{\hsize=0.45\hsize \bf +\parindent=0pt +Some text in rounded frame, in the column of +0.45 ({\tt \bsl hsize}). +\\ \bigskip +Next paragraph after {\tt\bsl bigskip}. +All typeset in boldface. +}} + +\vfill\eject +\message{Next page} +\roundbox width 9cm height 9cm {% %% wymiary ramki | frame dimensions +\vbox to9cm{\hsize=9cm\parindent=0pt %% wymiary pude/lka| box dimensions + %% w ramce | +\vss % \vss rozmieszcza tre/s/c +\leftline{left} % r/ownomiernie +\rightline{right} % +\vss % +\centerline{center} % +\vss +\leftline{left} +\rightline{right} +\vss}} + +\medskip + +\roundbox width 9cm height 9cm { % wymiary ramki | frame dimentions +\vbox to9cm{\hsize=9cm\parindent=0pt % wymiary pude/lka | box dimentions +\parskip=0pt +Test of text. Test of text. Test of text. Test of text. Test of text. +Test of text.\\ +\vbox to 3cm{% +\vss +\centerline{centered in 3cm height of space} +\vss} +Test of text. Test of text. Test of text. Test of text. +Test of text. Test of text. Test of text. Test of text. +Everything flushed from bottom. +\vss}} % to w/la/snie dopych od do/lu!! |\vss flush from bottom + +\bye diff --git a/Master/texmf-dist/tex/plain/gustlib/roundbox.tex b/Master/texmf-dist/tex/plain/gustlib/roundbox.tex new file mode 100644 index 00000000000..f512bf01786 --- /dev/null +++ b/Master/texmf-dist/tex/plain/gustlib/roundbox.tex @@ -0,0 +1,233 @@ +% FILE ROUNDBOX.TEX, version 1.1 (14.VIII.1990) +% ------------------------------------------------------------------------ +% AUTHOR: +% Garry Glendown (see in TUGboat Vol. 10 (1989) no.3 pp.386--387) +% ------------------------------------------------------------------------ +% MODIFICATOR: +% B. Jackowski, Tatrza\'nska 6/1, 80-331 Gda\'nsk, POLAND +% +% Modification includes shadow boxes, possibility of defining outer +% sizes (vertical and horizontal), and possibility of choosing various +% set of corners. +% ``Degenerated'' roundboxes (rectangles) are also available, +% although because of round-off errors (or BJ errors?) they don't +% look nice sometimes. +% ------------------------------------------------------------------------ +% USAGE: +% 1) thin frame (.4pt): +% \roundbox <outer size(s)> {<text>} +% \shadowbox <outer size(s)> {<text>} +% 2) thick frame (.85pt) --- see remark 4: +% \Roundbox <outer size(s)> {<text>} +% \Shadowbox <outer size(s)> {<text>} +% Outer size is optional and can have the form either `height <dimen>' or +% `width <dimen>', or both---the order does not matter. This convention +% is identical to that of `\hrule' and `\vrule'. You can even specify +% depth; however, it is ignored. +% +% Usage of these commands can be preceeded by fixing an appropriate set +% of corners: +% \setcorners <number> +% where +% -1 <= <number> <= 7 +% and +% size of corner = 2*(1+<number>)pt for <number> >= 0. +% +% +% REMARKS: +% 1. <outer size(s)> is/are optional and MUST NOT appear in braces. +% 2. Errors in this parameter are not checked, hence odd results may occur. +% 3. I made some names longer and add \@ as a letter, otherwise they +% might interfere. +% 4. Thick corners are said to have line thickness 0.8pt, however the +% corrected value 0.85pt yields better results (for 300dpi fonts). +% 5. Shadows do not change the size of the box (my shadow does not increase +% my weight). +% 6. I'm not very happy about the elegancy of the code. I hope that some day +% I or somebody else will improve it. +% 7. Is it reasonable to employ also scaled circle fonts? +% ------------------------------------------------------------------------ +% +\catcode`\@=11 +% +% ------------------------------------------------------------------------ +% DECLARATIONS +% ------------------------------------------------------------------------ +% +\newbox\t@mpb@x +\newdimen\t@mpwd +\newdimen\t@mpht +\newdimen\t@mpth +% +\newdimen\xt@mpwd % used for making +\newdimen\xt@mpht % shadows instead +\newdimen\xt@mpdp % of phantoms +% +\newdimen\c@rnwd % width of corner (first --- doubled, finally --- true) +\newdimen\c@frwd % doubled width of corner + width of frame +\newdimen\c@rnsh % corner shift +\newdimen\sh@dsh % shadow shift +% +% ------------------------------------------------------------------------ +% QUARTER CIRCLES: +% ------------------------------------------------------------------------ +%\font\circle=circle10 \font\circlew=circlew10 +\font\circle=lcircle1 \font\circlew=lcirclew +% ------------------------------------------------------------------------ +\newcount\cornern@ +\def\@vailcorn{\immediate + \write16{! AVAILABLE CORNER SETS: -1,0,1,2,...,9 --- 4th set assumed}% + \cornern@=4} +\def\s@tc@rn@rs{% + \ifnum\cornern@<-1\@vailcorn\fi + \ifnum\cornern@>9\@vailcorn\fi + \ifnum\cornern@=-1 + % degenerated corner set; + % in fact, only the width of \luq@tr is important, the corners are + % not drawn, simply the rules are longer. + \def\Ph@ntc@rn{\vbox to 0.8pt{\vss\hbox to 1.6pt{}}}% + \def\ph@ntc@rn{\vbox to 0.4pt{\vss\hbox to 0.8pt{}}}% + \def\luq@tr{\ifx\cf\circlew \Ph@ntc@rn \else \ph@ntc@rn \fi}% + \else + \multiply\cornern@4 + \edef\ruq@tr{{\noexpand\cf\char\the\cornern@}}% right upper qtr + \advance\cornern@ 1 + \edef\rlq@tr{{\noexpand\cf\char\the\cornern@}}% left upper qtr + \advance\cornern@ 1 + \edef\llq@tr{{\noexpand\cf\char\the\cornern@}}% left lower qtr + \advance\cornern@ 1 + \edef\luq@tr{{\noexpand\cf\char\the\cornern@}}% left upper qtr + \fi} +\def\setcorners{\afterassignment\s@tc@rn@rs \cornern@ = } +\setcorners 4 % G. Glendown preferred set no 2 +% ------------------------------------------------------------------------ +% ROUND BOXES: +% ------------------------------------------------------------------------ +% +\def\RB@x#1#2{% #1 - rule thickness, #2 - text +% known: +% \t@mpwd \t@mpht + \t@mpth=#1\relax + \setbox\t@mpb@x=\hbox{\luq@tr}\c@rnwd=\wd\t@mpb@x + \ifdim\c@rnwd=\z@ \c@rnwd=2\t@mpth\fi + \c@frwd=\t@mpth % \c@frwd is globally copied to \sh@dsh in + % \s(S)hadowB@x + \advance \c@frwd \c@rnwd + \c@rnsh=-\t@mpth\advance \c@rnsh \c@rnwd + \setbox\t@mpb@x=\hbox{#2}% + \xt@mpht=\ht\t@mpb@x % pha + \xt@mpwd=\wd\t@mpb@x % nt + \xt@mpdp=\dp\t@mpb@x % om... + \setbox\t@mpb@x=\hbox \ifdim\t@mpwd<\c@frwd + spread \c@rnwd + \else + to \t@mpwd + \fi + {\hss\box\t@mpb@x\hss}% + \advance\t@mpht-\c@frwd \ifdim\t@mpht<\z@ \t@mpht=\z@\fi + \setbox\t@mpb@x=\hbox to \wd\t@mpb@x{\vrule width\t@mpth\hss + \vbox \ifdim\t@mpht>\z@ to \t@mpht\fi + {\vss\box\t@mpb@x\vss}% + \hss\vrule width\t@mpth}% + \c@rnwd=0.5\c@rnwd + \t@mpwd=\wd\t@mpb@x + \vbox spread -\c@rnsh{% + \offinterlineskip + \vss + \hbox to \t@mpwd{\ifnum\cornern@=-1 \else + \hbox to \c@rnwd{\luq@tr\hss}% + \fi + \leaders\hrule height\t@mpth\hfil + \ifnum\cornern@=-1 \else + \hbox to \c@rnwd{\hss\ruq@tr\kern-\c@rnsh}% + \fi} + \box\t@mpb@x + \hbox to \t@mpwd{\ifnum\cornern@=-1 \else + \hbox to \c@rnwd{\llq@tr\hss}% + \fi + \leaders\hrule height\t@mpth\hfil + \ifnum\cornern@=-1 \else + \hbox to \c@rnwd{\hss\rlq@tr\kern-\c@rnsh}% + \fi} + \vss + }% + }% end \def\RB@x +% +\def\roundbox#1#{\setbox\t@mpb@x=\hbox{\vrule #1}% Attention! trick! + \t@mpwd=\wd\t@mpb@x \t@mpht=\ht\t@mpb@x + \roundB@x} +\def\roundB@x#1{\font\cf=lcircle1 \RB@x{.4pt}{#1}} +% +\def\Roundbox#1#{\setbox\t@mpb@x=\hbox{\vrule #1}% Attention! trick! + \t@mpwd=\wd\t@mpb@x \t@mpht=\ht\t@mpb@x + \RoundB@x} +\def\RoundB@x#1{\font\cf=lcirclew \RB@x{.85pt}{#1}} +% +% ------------------------------------------------------------------------ +% SHADOW BOXES: +% ------------------------------------------------------------------------ +% +\def\RShB@x#1{% #1 - rule thickness +% known: +% \t@mpwd \t@mpht +% \xt@mpwd \xt@mpht \xt@mpdp + \t@mpth=#1\relax + \setbox\t@mpb@x=\hbox{\luq@tr}\c@rnwd=\wd\t@mpb@x + \ifdim\c@rnwd=\z@ \c@rnwd=2\t@mpth\fi + \c@frwd=\t@mpth % \c@frwd is globally copied to \sh@dsh in + % \s(S)hadowB@x + \advance \c@frwd \c@rnwd + \c@rnsh=-\t@mpth\advance \c@rnsh \c@rnwd + \setbox\t@mpb@x=\hbox \ifdim\t@mpwd<\c@frwd + spread \c@rnwd + \else + to \t@mpwd + \fi + {\hss\vrule width \z@ height\xt@mpht depth\xt@mpdp + \hskip\xt@mpwd\hss}% + \setbox\t@mpb@x=\vbox \ifdim\t@mpht>\z@ to \t@mpht\fi + {\vss\box\t@mpb@x\vss}% + \c@rnwd=0.5\c@rnwd + \t@mpwd=\wd\t@mpb@x + \setbox\t@mpb@x=\hbox to \t@mpwd{\vbox \ifnum\cornern@=-1 spread\c@rnwd \fi + {\vss\box\t@mpb@x}\hss\vrule width\t@mpth}% + \vbox spread -\c@rnsh{% + \offinterlineskip + \vss + \hbox to \t@mpwd{\hfil + \ifnum\cornern@=-1 \else + \hbox to \c@rnwd{\hss\ruq@tr\kern-\c@rnsh}% + \fi} + \box\t@mpb@x + \hbox to \t@mpwd{\ifnum\cornern@=-1 \else + \hbox to \c@rnwd{\llq@tr\hss}% + \fi + \leaders\hrule height\t@mpth\hfil + \ifnum\cornern@=-1 \else + \hbox to \c@rnwd{\hss\rlq@tr\kern-\c@rnsh}% + \fi} + \vss + }% + }% end \def\RShB@x +% +\def\shadowbox#1#{\def\p@r@m{#1}\shadowB@x} +\def\shadowB@x#1{\vbox{\hbox{\roundbox\p@r@m{#1}\global\sh@dsh\c@frwd + \kern-\t@mpwd \kern0.5\sh@dsh \lower0.5\sh@dsh + \hbox{\font\cf=lcircle1 \RShB@x{.4pt}}% + \kern-0.5\sh@dsh} \kern-0.5\sh@dsh}} +% +\def\Shadowbox#1#{\def\p@r@m{#1}\ShadowB@x} +\def\ShadowB@x#1{\vbox{\hbox{\Roundbox\p@r@m{#1}\global\sh@dsh\c@frwd + \kern-\t@mpwd \kern0.5\sh@dsh \lower0.5\sh@dsh + \hbox{\font\cf=lcirclew \RShB@x{.85pt}}% + \kern-0.5\sh@dsh} \kern-0.5\sh@dsh}} +% +% ------------------------------------------------------------------------ +% +\catcode`\@=12 +% +% ------------------------------------------------------------------------ +\endinput +% ------------------------------------------------------------------------ +% END OF ROUNDBOX.TEX +% ------------------------------------------------------------------------ diff --git a/Master/texmf-dist/tex/plain/gustlib/tp-crf.tex b/Master/texmf-dist/tex/plain/gustlib/tp-crf.tex new file mode 100644 index 00000000000..164c86d2fed --- /dev/null +++ b/Master/texmf-dist/tex/plain/gustlib/tp-crf.tex @@ -0,0 +1,115 @@ +% ------------------------------------------------------------------ +% TP-CRF: cross-reference generic macros. +% Author: Tomasz Przechlewski <ekotp@halina.univ.gda.pl>. +% Date: 02.01.1997. Version 0.5 +% +% This macros are described in detail in the article ,,Odsy{\l}acze'', +% GUST bulletin, number 5, 1995 +% -------------- +% User commands: +% -------------- +% \ref, \pageref = insert cross-reference, insert page number. +% \defreference = define cross-reference. +% \makecrfile = write references to auxilliary (*.crf) file. +% \nocrfile = suppress writing to auxilliary file. +% \nocrwarnings = suppress warning messages. +% +% ------------------------------------------------------------------ + +\catcode`@=11 + +\def\@crwrn#1{\if@crwrns\immediate\write16{#1}\fi} +\def\@markmissingcr{\relax} +%\def\@markmissingcr{{\bf ??}\@marginmarker} +%\def\@marginmarker{\vadjust{\vbox to0pt{% +%\kern-.77\normalbaselineskip +%\hbox{{\it\kern\hsize\kern15pt?}}\vss}}} + +\newif\if@crwrns \global\@crwrnstrue % default + +\def\nocrfile{\global\@crfilefalse} +\def\nocrwarnings{\global\@crwrnsfalse} + +\def\@car#1#2{#1} \def\@cdr#1#2{#2} + +\long\def\@ifundefined#1#2#3{\expandafter\ifx\csname + #1\endcsname\relax#2\else#3\fi} + +\def\namedef#1{\expandafter \def\csname #1\endcsname} + +\def\newlabel#1#2{\@ifundefined{#1}{}% +{\@crwrn{!WARNING: LABEL #1 REPEATED}}% +\global\namedef{#1}{#2}} + +\newread\crfile + +\openin\crfile=\jobname.crf +\ifeof\crfile + \@crwrn{FILE \jobname.crf NOT FOUND} + \else + \@crwrn{READING REFS FROM \jobname.crf} + \input \jobname.crf +\fi + +\closein\crfile +\newwrite\crfile + +\def\makecrfile{\@crwrn{STARTING CR-FILE: \jobname.crf}% +\immediate \openout\crfile=\jobname.crf} +\def\nocrfile{\@crwrn{CR-FILE \jobname.crf NOT CREATED}\def\crfile{-1}} + +\def\ref#1{\@nextcrf\@ifundefined{#1}{\@markmissingcr +\@crwrn{!WARNING: UNDEFINED REFERENCE \string#1}}% +{\edef\@tempa{\csname #1\endcsname}\expandafter \@car\@tempa}} + +\def\pageref#1{\@nextpcrf \@ifundefined{#1}{\@markmissingcr +\@crwrn{!WARNING: UNDEFINED REFERENCE \string#1}}% +{\edef\@tempa{\csname #1\endcsname}\expandafter \@cdr\@tempa}} + +\def\defreference#1#2{\@nextdrf +\edef\save{\string\newlabel{#1}% +{{#2}{\noexpand\folio}}}\write\crfile\expandafter{\save}% +\ignorespaces} + +\newcount\@crfC \newcount\@pcrfC \newcount\@dcrfC + +\def\@nextdrf{\global\advance\@dcrfC1\relax} +\def\@nextcrf{\global\advance\@crfC1} +\def\@nextpcrf{\global\advance\@pcrfC1} +\def\crstatistics{% +\@crwrn{==============================} +\@crwrn{= REFERENCE STATISTICS =======} +\@crwrn{= refs defined.... \the\@dcrfC} +\@crwrn{= refs used....... \the\@crfC} +\@crwrn{= page refs used.. \the\@pcrfC} +\@crwrn{==============================}} + +\outer\def\bye{\crstatistics\end} +\catcode`@=12 + +\endinput +%% +%% Example: +%% ======= +%\input tp-crf +%\makecrfile +% +%\newcount\SecC +%\def\label#1{\defreference{#1}{\the\SecC}} +%\def\sec#1{\vskip\baselineskip\global\advance\SecC1 +%\leftline{\bf\the\SecC.~#1}\par\nobreak\smallskip} +% +%\sec{First section} +%\label{sec:first} +%This is section~\ref{sec:first} on page~\pageref{sec:first}. +%Compare section~\ref{sec:second} on page~\pageref{sec:second}. +% +%\vfill\eject +% +%\sec{Second section} +%\label{sec:second} +%This is section~\ref{sec:second} on page~\pageref{sec:second}. +%Compare section~\ref{sec:first} on page~\pageref{sec:first}. +% +%\bye +%% diff --git a/Master/texmf-dist/tex/plain/gustlib/verbatim.tex b/Master/texmf-dist/tex/plain/gustlib/verbatim.tex new file mode 100644 index 00000000000..ed2aa700b9c --- /dev/null +++ b/Master/texmf-dist/tex/plain/gustlib/verbatim.tex @@ -0,0 +1,48 @@ +% F I L E V E R B A T I M . T E X +% +% THIS SET OF MACROs IS TAKEN FROM D.E.K.'s TeXBook +% AND PROVIDES AN EASY WAY OF TYPESETTING TEXTS VERBATIM: +% +% 1. \verbatim<character><text without that character><character> +% causes the text to be set verbatim using \tt font; +% 2. if the text uses up all the alphabet, \doubleverbatim macro +% can be used instead; this is similar to the previous one but +% a pair of characters is now used as a delimiter; +% 3. in case of emergency \tripleverbatim macro may be of help... +% +%--------------------------------------------- +\def\uncatcodespecials % see D.E.K., pp. 344 and 380 + {\def\do##1{\catcode`##1=12}\dospecials}% +%--------------------------------------------- +{\catcode`\^^I=\active \gdef^^I{\ \ \ \ }% TAB character is replaced by + % 4 spaces; it is better than + % nothing, but it does not mimic + % true tabbing satisfactorily---maybe + % some nice day... + \catcode`\`=\active\gdef`{\relax\lq}}% this line inhibits Spanish + % ligatures ?` and !` of \tt font +\def\setupverbatim % see D.E.K., p. 381 + {\tt % + \spaceskip=0pt \xspaceskip=0pt % just in case... + \catcode`\^^I=\active % + \catcode`\`=\active % + \def\par{\leavevmode\endgraf}% this causes that empty lines aren't + % skipped + \obeylines \uncatcodespecials \obeyspaces}% +{\obeyspaces \global\let =\ }% this causes that leading blanks aren't + % skipped; cf. also def's of \space, \endgraf, + % \lq, \obeyspaces, and \obeylines, + % D.E.K., pp. 351--352 +%--------------------------------------------- +% see D.E.K., p. 382 +\def\doverbatim#1{\def\next##1#1{##1\endgroup}\next}% +\def\verbatim{\begingroup\setupverbatim\doverbatim}% +%---------- +\def\dodoubleverbatim#1#2{\def\next##1#1#2{##1\endgroup}\next}% +\def\doubleverbatim{\begingroup\setupverbatim\dodoubleverbatim}% +%---------- +\def\dotripleverbatim#1#2#3{\def\next##1#1#2#3{##1\endgroup}\next}% +\def\tripleverbatim{\begingroup\setupverbatim\dotripleverbatim}% +%--------------------------------------------- +\endinput + diff --git a/Master/texmf-dist/tex/plain/harvmac/harvmac.tex b/Master/texmf-dist/tex/plain/harvmac/harvmac.tex new file mode 100644 index 00000000000..17d8809d9ea --- /dev/null +++ b/Master/texmf-dist/tex/plain/harvmac/harvmac.tex @@ -0,0 +1,324 @@ +%%%%%%%%%%%%%%%%%% tex macros for preprints, cm version %%%%%%%%%%%%%% +% (P. Ginsparg, last updated 9/91) +% if confused, type `b' in response to query +% +%---------------------------------------------------------------------% +%% site dependent options: +%% \unredoffs and \redoffs define horizontal and vertical offsets +%% respectively for unreduced and reduced modes. \speclscape defines +%% the \special{} call that sets printer to landscape (sideways) mode. +%% from standard set below, leave uncommented as appropriate or redefine +% +%%% next 400dpi +%\def\unredoffs{} \def\redoffs{\voffset=-.31truein\hoffset=-.48truein} +%\def\speclscape{\special{landscape}} +% +%%% apple lw +\def\unredoffs{} \def\redoffs{\voffset=-.31truein\hoffset=-.59truein} +\def\speclscape{\special{ps: landscape}} +% +%%% qms lasergrafix: +%\def\unredoffs{} \def\redoffs{\voffset=-.4truein\hoffset=.125truein} +%\def\speclscape{\special{qms: landscape}} +% +%%% saclay A4 paper: +%\def\unredoffs{\hoffset-.14truein\voffset-.2truein} +%\def\redoffs{\voffset=-.45truein\hoffset=-.21truein} +%\def\speclscape{\special{landscape}} +% +%---------------------------------------------------------------------% +% +\newbox\leftpage \newdimen\fullhsize \newdimen\hstitle \newdimen\hsbody +\tolerance=1000\hfuzz=2pt\def\fontflag{cm} +% +\catcode`\@=11 % This allows us to modify PLAIN macros. +\def\bigans{b } +\message{ big or little (b/l)? }\read-1 to\answ +% +\ifx\answ\bigans\message{(This will come out unreduced.} +\magnification=1200\unredoffs\baselineskip=16pt plus 2pt minus 1pt +\hsbody=\hsize \hstitle=\hsize %take default values for unreduced format +% +\else\message{(This will be reduced.} \let\l@r=L +\magnification=1000\baselineskip=16pt plus 2pt minus 1pt \vsize=7truein +\redoffs \hstitle=8truein\hsbody=4.75truein\fullhsize=10truein\hsize=\hsbody +% +\output={\ifnum\pageno=0 %%% This is the HUTP version + \shipout\vbox{\speclscape{\hsize\fullhsize\makeheadline} + \hbox to \fullhsize{\hfill\pagebody\hfill}}\advancepageno + \else + \almostshipout{\leftline{\vbox{\pagebody\makefootline}}}\advancepageno + \fi} +\def\almostshipout#1{\if L\l@r \count1=1 \message{[\the\count0.\the\count1]} + \global\setbox\leftpage=#1 \global\let\l@r=R + \else \count1=2 + \shipout\vbox{\speclscape{\hsize\fullhsize\makeheadline} + \hbox to\fullhsize{\box\leftpage\hfil#1}} \global\let\l@r=L\fi} +\fi +%--------------------------------------------------------------------- +% +\newcount\yearltd\yearltd=\year\advance\yearltd by -1900 +\def\HUTP#1#2{\Title{HUTP-\number\yearltd/A#1}{#2}} +\def\Title#1#2{\nopagenumbers\abstractfont\hsize=\hstitle\rightline{#1}% +\vskip 1in\centerline{\titlefont #2}\abstractfont\vskip .5in\pageno=0} +% +\def\Date#1{\vfill\leftline{#1}\tenpoint\supereject\global\hsize=\hsbody% +\footline={\hss\tenrm\folio\hss}}% restores pagenumbers +% +% use following instead of \Date on the preliminary draft, +% puts date/time on each page in big mode, writes labels in margins +\def\draft{\draftmode\Date{\draftdate}} +\def\draftmode{\message{ DRAFTMODE }\def\draftdate{{\rm preliminary draft: +\number\month/\number\day/\number\yearltd\ \ \hourmin}}% +\headline={\hfil\draftdate}\writelabels\baselineskip=20pt plus 2pt minus 2pt + {\count255=\time\divide\count255 by 60 \xdef\hourmin{\number\count255} + \multiply\count255 by-60\advance\count255 by\time + \xdef\hourmin{\hourmin:\ifnum\count255<10 0\fi\the\count255}}} +% use \nolabels to get rid of eqn, ref, and fig labels in draft mode +\def\nolabels{\def\wrlabeL##1{}\def\eqlabeL##1{}\def\reflabeL##1{}} +\def\writelabels{\def\wrlabeL##1{\leavevmode\vadjust{\rlap{\smash% +{\line{{\escapechar=` \hfill\rlap{\sevenrm\hskip.03in\string##1}}}}}}}% +\def\eqlabeL##1{{\escapechar-1\rlap{\sevenrm\hskip.05in\string##1}}}% +\def\reflabeL##1{\noexpand\llap{\noexpand\sevenrm\string\string\string##1}}} +\nolabels +% +% tagged sec numbers +\global\newcount\secno \global\secno=0 +\global\newcount\meqno \global\meqno=1 +% +\def\newsec#1{\global\advance\secno by1\message{(\the\secno. #1)} +%\ifx\answ\bigans \vfill\eject \else \bigbreak\bigskip \fi %if desired +\global\subsecno=0\eqnres@t\noindent{\bf\the\secno. #1} +\writetoca{{\secsym} {#1}}\par\nobreak\medskip\nobreak} +\def\eqnres@t{\xdef\secsym{\the\secno.}\global\meqno=1\bigbreak\bigskip} +\def\sequentialequations{\def\eqnres@t{\bigbreak}}\xdef\secsym{} +% +\global\newcount\subsecno \global\subsecno=0 +\def\subsec#1{\global\advance\subsecno by1\message{(\secsym\the\subsecno. #1)} +\ifnum\lastpenalty>9000\else\bigbreak\fi +\noindent{\it\secsym\the\subsecno. #1}\writetoca{\string\quad +{\secsym\the\subsecno.} {#1}}\par\nobreak\medskip\nobreak} +% +\def\appendix#1#2{\global\meqno=1\global\subsecno=0\xdef\secsym{\hbox{#1.}} +\bigbreak\bigskip\noindent{\bf Appendix #1. #2}\message{(#1. #2)} +\writetoca{Appendix {#1.} {#2}}\par\nobreak\medskip\nobreak} +% +% \eqn\label{a+b=c} gives displayed equation, numbered +% consecutively within sections. +% \eqnn and \eqna define labels in advance (of eqalign?) +% +\def\eqnn#1{\xdef #1{(\secsym\the\meqno)}\writedef{#1\leftbracket#1}% +\global\advance\meqno by1\wrlabeL#1} +\def\eqna#1{\xdef #1##1{\hbox{$(\secsym\the\meqno##1)$}} +\writedef{#1\numbersign1\leftbracket#1{\numbersign1}}% +\global\advance\meqno by1\wrlabeL{#1$\{\}$}} +\def\eqn#1#2{\xdef #1{(\secsym\the\meqno)}\writedef{#1\leftbracket#1}% +\global\advance\meqno by1$$#2\eqno#1\eqlabeL#1$$} +% +% footnotes +\newskip\footskip\footskip14pt plus 1pt minus 1pt %sets footnote baselineskip +\def\footnotefont{\ninepoint}\def\f@t#1{\footnotefont #1\@foot} +\def\f@@t{\baselineskip\footskip\bgroup\footnotefont\aftergroup\@foot\let\next} +\setbox\strutbox=\hbox{\vrule height9.5pt depth4.5pt width0pt} +% +\global\newcount\ftno \global\ftno=0 +\def\foot{\global\advance\ftno by1\footnote{$^{\the\ftno}$}} +% +%say \footend to put footnotes at end +%will cause problems if \ref used inside \foot, instead use \nref before +\newwrite\ftfile +\def\footend{\def\foot{\global\advance\ftno by1\chardef\wfile=\ftfile +$^{\the\ftno}$\ifnum\ftno=1\immediate\openout\ftfile=foots.tmp\fi% +\immediate\write\ftfile{\noexpand\smallskip% +\noexpand\item{f\the\ftno:\ }\pctsign}\findarg}% +\def\footatend{\vfill\eject\immediate\closeout\ftfile{\parindent=20pt +\centerline{\bf Footnotes}\nobreak\bigskip\input foots.tmp }}} +\def\footatend{} +% +% \ref\label{text} +% generates a number, assigns it to \label, generates an entry. +% To list the refs on a separate page, \listrefs +% +\global\newcount\refno \global\refno=1 +\newwrite\rfile +% +\def\ref{[\the\refno]\nref} +\def\nref#1{\xdef#1{[\the\refno]}\writedef{#1\leftbracket#1}% +\ifnum\refno=1\immediate\openout\rfile=refs.tmp\fi +\global\advance\refno by1\chardef\wfile=\rfile\immediate +\write\rfile{\noexpand\item{#1\ }\reflabeL{#1\hskip.31in}\pctsign}\findarg} +% horrible hack to sidestep tex \write limitation +\def\findarg#1#{\begingroup\obeylines\newlinechar=`\^^M\pass@rg} +{\obeylines\gdef\pass@rg#1{\writ@line\relax #1^^M\hbox{}^^M}% +\gdef\writ@line#1^^M{\expandafter\toks0\expandafter{\striprel@x #1}% +\edef\next{\the\toks0}\ifx\next\em@rk\let\next=\endgroup\else\ifx\next\empty% +\else\immediate\write\wfile{\the\toks0}\fi\let\next=\writ@line\fi\next\relax}} +\def\striprel@x#1{} \def\em@rk{\hbox{}} +% +\def\lref{\begingroup\obeylines\lr@f} +\def\lr@f#1#2{\gdef#1{\ref#1{#2}}\endgroup\unskip} +% +\def\semi{;\hfil\break} +\def\addref#1{\immediate\write\rfile{\noexpand\item{}#1}} %now unnecessary +% +\def\listrefs{\footatend\vfill\supereject\immediate\closeout\rfile\writestoppt +\baselineskip=14pt\centerline{{\bf References}}\bigskip{\frenchspacing% +\parindent=20pt\escapechar=` \input refs.tmp\vfill\eject}\nonfrenchspacing} +% +\def\startrefs#1{\immediate\openout\rfile=refs.tmp\refno=#1} +% +\def\xref{\expandafter\xr@f}\def\xr@f[#1]{#1} +\def\refs#1{\count255=1[\r@fs #1{\hbox{}}]} +\def\r@fs#1{\ifx\und@fined#1\message{reflabel \string#1 is undefined.}% +\nref#1{need to supply reference \string#1.}\fi% +\vphantom{\hphantom{#1}}\edef\next{#1}\ifx\next\em@rk\def\next{}% +\else\ifx\next#1\ifodd\count255\relax\xref#1\count255=0\fi% +\else#1\count255=1\fi\let\next=\r@fs\fi\next} +% +\def\figures{\centerline{{\bf Figure Captions}}\medskip\parindent=40pt% +\def\fig##1##2{\medskip\item{Fig.~##1. }##2}} +% +% this is ugly, but moore insists +\newwrite\ffile\global\newcount\figno \global\figno=1 +% +\def\fig{fig.~\the\figno\nfig} +\def\nfig#1{\xdef#1{fig.~\the\figno}% +\writedef{#1\leftbracket fig.\noexpand~\the\figno}% +\ifnum\figno=1\immediate\openout\ffile=figs.tmp\fi\chardef\wfile=\ffile% +\immediate\write\ffile{\noexpand\medskip\noexpand\item{Fig.\ \the\figno. } +\reflabeL{#1\hskip.55in}\pctsign}\global\advance\figno by1\findarg} +% +\def\listfigs{\vfill\eject\immediate\closeout\ffile{\parindent40pt +\baselineskip14pt\centerline{{\bf Figure Captions}}\nobreak\medskip +\escapechar=` \input figs.tmp\vfill\eject}} +% +\def\xfig{\expandafter\xf@g}\def\xf@g fig.\penalty\@M\ {} +\def\figs#1{figs.~\f@gs #1{\hbox{}}} +\def\f@gs#1{\edef\next{#1}\ifx\next\em@rk\def\next{}\else +\ifx\next#1\xfig #1\else#1\fi\let\next=\f@gs\fi\next} +% +\newwrite\lfile +{\escapechar-1\xdef\pctsign{\string\%}\xdef\leftbracket{\string\{} +\xdef\rightbracket{\string\}}\xdef\numbersign{\string\#}} +\def\writedefs{\immediate\openout\lfile=labeldefs.tmp \def\writedef##1{% +\immediate\write\lfile{\string\def\string##1\rightbracket}}} +% +\def\writestop{\def\writestoppt{\immediate\write\lfile{\string\pageno% +\the\pageno\string\startrefs\leftbracket\the\refno\rightbracket% +\string\def\string\secsym\leftbracket\secsym\rightbracket% +\string\secno\the\secno\string\meqno\the\meqno}\immediate\closeout\lfile}} +% +\def\writestoppt{}\def\writedef#1{} +% +\def\seclab#1{\xdef #1{\the\secno}\writedef{#1\leftbracket#1}\wrlabeL{#1=#1}} +\def\subseclab#1{\xdef #1{\secsym\the\subsecno}% +\writedef{#1\leftbracket#1}\wrlabeL{#1=#1}} +% +\newwrite\tfile \def\writetoca#1{} +\def\leaderfill{\leaders\hbox to 1em{\hss.\hss}\hfill} +% use this to write file with table of contents +\def\writetoc{\immediate\openout\tfile=toc.tmp + \def\writetoca##1{{\edef\next{\write\tfile{\noindent ##1 + \string\leaderfill {\noexpand\number\pageno} \par}}\next}}} +% and this lists table of contents on second pass +\def\listtoc{\centerline{\bf Contents}\nobreak\medskip{\baselineskip=12pt + \parskip=0pt\catcode`\@=11 \input toc.tex \catcode`\@=12 \bigbreak\bigskip}} +% +\catcode`\@=12 % at signs are no longer letters +% +% Unpleasantness in calling in abstract and title fonts +\edef\tfontsize{\ifx\answ\bigans scaled\magstep3\else scaled\magstep4\fi} +\font\titlerm=cmr10 \tfontsize \font\titlerms=cmr7 \tfontsize +\font\titlermss=cmr5 \tfontsize \font\titlei=cmmi10 \tfontsize +\font\titleis=cmmi7 \tfontsize \font\titleiss=cmmi5 \tfontsize +\font\titlesy=cmsy10 \tfontsize \font\titlesys=cmsy7 \tfontsize +\font\titlesyss=cmsy5 \tfontsize \font\titleit=cmti10 \tfontsize +\skewchar\titlei='177 \skewchar\titleis='177 \skewchar\titleiss='177 +\skewchar\titlesy='60 \skewchar\titlesys='60 \skewchar\titlesyss='60 +% +\def\titlefont{\def\rm{\fam0\titlerm}% switch to title font +\textfont0=\titlerm \scriptfont0=\titlerms \scriptscriptfont0=\titlermss +\textfont1=\titlei \scriptfont1=\titleis \scriptscriptfont1=\titleiss +\textfont2=\titlesy \scriptfont2=\titlesys \scriptscriptfont2=\titlesyss +\textfont\itfam=\titleit \def\it{\fam\itfam\titleit}\rm} +% +\font\authorfont=cmcsc10 \ifx\answ\bigans\else scaled\magstep1\fi +% +\ifx\answ\bigans\def\abstractfont{\tenpoint}\else +\font\abssl=cmsl10 scaled \magstep1 +\font\absrm=cmr10 scaled\magstep1 \font\absrms=cmr7 scaled\magstep1 +\font\absrmss=cmr5 scaled\magstep1 \font\absi=cmmi10 scaled\magstep1 +\font\absis=cmmi7 scaled\magstep1 \font\absiss=cmmi5 scaled\magstep1 +\font\abssy=cmsy10 scaled\magstep1 \font\abssys=cmsy7 scaled\magstep1 +\font\abssyss=cmsy5 scaled\magstep1 \font\absbf=cmbx10 scaled\magstep1 +\skewchar\absi='177 \skewchar\absis='177 \skewchar\absiss='177 +\skewchar\abssy='60 \skewchar\abssys='60 \skewchar\abssyss='60 +% +\def\abstractfont{\def\rm{\fam0\absrm}% switch to abstract font +\textfont0=\absrm \scriptfont0=\absrms \scriptscriptfont0=\absrmss +\textfont1=\absi \scriptfont1=\absis \scriptscriptfont1=\absiss +\textfont2=\abssy \scriptfont2=\abssys \scriptscriptfont2=\abssyss +\textfont\itfam=\bigit \def\it{\fam\itfam\bigit}\def\footnotefont{\tenpoint}% +\textfont\slfam=\abssl \def\sl{\fam\slfam\abssl}% +\textfont\bffam=\absbf \def\bf{\fam\bffam\absbf}\rm}\fi +% +\def\tenpoint{\def\rm{\fam0\tenrm}% switch back to 10-point type +\textfont0=\tenrm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm +\textfont1=\teni \scriptfont1=\seveni \scriptscriptfont1=\fivei +\textfont2=\tensy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy +\textfont\itfam=\tenit \def\it{\fam\itfam\tenit}\def\footnotefont{\ninepoint}% +\textfont\bffam=\tenbf \def\bf{\fam\bffam\tenbf}\def\sl{\fam\slfam\tensl}\rm} +% +\font\ninerm=cmr9 \font\sixrm=cmr6 \font\ninei=cmmi9 \font\sixi=cmmi6 +\font\ninesy=cmsy9 \font\sixsy=cmsy6 \font\ninebf=cmbx9 +\font\nineit=cmti9 \font\ninesl=cmsl9 \skewchar\ninei='177 +\skewchar\sixi='177 \skewchar\ninesy='60 \skewchar\sixsy='60 +% +\def\ninepoint{\def\rm{\fam0\ninerm}% switch to footnote font +\textfont0=\ninerm \scriptfont0=\sixrm \scriptscriptfont0=\fiverm +\textfont1=\ninei \scriptfont1=\sixi \scriptscriptfont1=\fivei +\textfont2=\ninesy \scriptfont2=\sixsy \scriptscriptfont2=\fivesy +\textfont\itfam=\ninei \def\it{\fam\itfam\nineit}\def\sl{\fam\slfam\ninesl}% +\textfont\bffam=\ninebf \def\bf{\fam\bffam\ninebf}\rm} +% +%--------------------------------------------------------------------- +% +\def\noblackbox{\overfullrule=0pt} +\hyphenation{anom-aly anom-alies coun-ter-term coun-ter-terms} +% +\def\inv{^{\raise.15ex\hbox{${\scriptscriptstyle -}$}\kern-.05em 1}} +\def\dup{^{\vphantom{1}}} +\def\Dsl{\,\raise.15ex\hbox{/}\mkern-13.5mu D} %this one can be subscripted +\def\dsl{\raise.15ex\hbox{/}\kern-.57em\partial} +\def\del{\partial} +\def\Psl{\dsl} +\def\tr{{\rm tr}} \def\Tr{{\rm Tr}} +\font\bigit=cmti10 scaled \magstep1 +\def\biglie{\hbox{\bigit\$}} %pound sterling +\def\lspace{\ifx\answ\bigans{}\else\qquad\fi} +\def\lbspace{\ifx\answ\bigans{}\else\hskip-.2in\fi} % $$\lbspace...$$ +\def\boxeqn#1{\vcenter{\vbox{\hrule\hbox{\vrule\kern3pt\vbox{\kern3pt + \hbox{${\displaystyle #1}$}\kern3pt}\kern3pt\vrule}\hrule}}} +\def\mbox#1#2{\vcenter{\hrule \hbox{\vrule height#2in + \kern#1in \vrule} \hrule}} %e.g. \mbox{.1}{.1} +% matters of taste +%\def\tilde{\widetilde} \def\bar{\overline} \def\hat{\widehat} +% +% some sample definitions +\def\CAG{{\cal A/\cal G}} \def\CO{{\cal O}} % curly letters +\def\CA{{\cal A}} \def\CC{{\cal C}} \def\CF{{\cal F}} \def\CG{{\cal G}} +\def\CL{{\cal L}} \def\CH{{\cal H}} \def\CI{{\cal I}} \def\CU{{\cal U}} +\def\CB{{\cal B}} \def\CR{{\cal R}} \def\CD{{\cal D}} \def\CT{{\cal T}} +\def\e#1{{\rm e}^{^{\textstyle#1}}} +\def\grad#1{\,\nabla\!_{{#1}}\,} +\def\gradgrad#1#2{\,\nabla\!_{{#1}}\nabla\!_{{#2}}\,} +\def\ph{\varphi} +\def\psibar{\overline\psi} +\def\om#1#2{\omega^{#1}{}_{#2}} +\def\vev#1{\langle #1 \rangle} +\def\lform{\hbox{$\sqcup$}\llap{\hbox{$\sqcap$}}} +\def\darr#1{\raise1.5ex\hbox{$\leftrightarrow$}\mkern-16.5mu #1} +\def\lie{\hbox{\it\$}} %pound sterling +\def\ha{{1\over2}} +\def\half{{\textstyle{1\over2}}} %puts a small half in a displayed eqn +\def\roughly#1{\raise.3ex\hbox{$#1$\kern-.75em\lower1ex\hbox{$\sim$}}} diff --git a/Master/texmf-dist/tex/plain/iwona/iwona-math.tex b/Master/texmf-dist/tex/plain/iwona/iwona-math.tex new file mode 100644 index 00000000000..e689c684aa5 --- /dev/null +++ b/Master/texmf-dist/tex/plain/iwona/iwona-math.tex @@ -0,0 +1,251 @@ +\catcode`@=11 +% roman text +\font\seventeenrm= rm-iwonar at17.28pt +\font\fourteenrm= rm-iwonar at14.4pt +\font\twelverm= rm-iwonar at12pt +\font\elevenrm= rm-iwonar at11pt +\font\tenrm= rm-iwonar +\font\ninerm= rm-iwonar at9pt +\font\eightrm= rm-iwonar at8pt +\font\sevenrm= rm-iwonar at7pt +\font\sixrm= rm-iwonar at6pt +\font\fiverm= rm-iwonar at5pt +% math italic +\font\seventeeni= mi-iwonari at17.28pt +\font\fourteeni= mi-iwonari at14.4pt +\font\twelvei= mi-iwonari at12pt +\font\eleveni= mi-iwonari at11pt +\font\teni= mi-iwonari +\font\ninei= mi-iwonari at9pt +\font\eighti= mi-iwonari at8pt +\font\seveni= mi-iwonari at7pt +\font\sixi= mi-iwonari at6pt +\font\fivei= mi-iwonari at5pt +% math symbols +\font\seventeensy= sy-iwonarz at17.28pt +\font\fourteensy= sy-iwonarz at14.4pt +\font\twelvesy= sy-iwonarz at12pt +\font\elevensy= sy-iwonarz at11pt +\font\tensy= sy-iwonarz +\font\ninesy= sy-iwonarz at9pt +\font\eightsy= sy-iwonarz at8pt +\font\sevensy= sy-iwonarz at7pt +\font\sixsy= sy-iwonarz at6pt +\font\fivesy= sy-iwonarz at5pt +% math extension +\font\seventeenex= ex-iwonar at17.28pt +\font\fourteenex= ex-iwonar at14.4pt +\font\twelveex= ex-iwonar at12pt +\font\elevenex= ex-iwonar at11pt +\font\tenex= ex-iwonar +\font\nineex= ex-iwonar at9pt +\font\eightex= ex-iwonar at8pt +\font\sevenex= ex-iwonar at7pt +\font\sixex= ex-iwonar at6pt +\font\fiveex= ex-iwonar at5pt +% boldface +\font\seventeenbf= qx-iwonab at17.28pt +\font\fourteenbf= qx-iwonab at14.4pt +\font\twelvebf= qx-iwonab at12pt +\font\elevenbf= qx-iwonab at11pt +\font\tenbf= qx-iwonab +\font\ninebf= qx-iwonab at9pt +\font\eightbf= qx-iwonab at8pt +\font\sevenbf= qx-iwonab at7pt +\font\sixbf= qx-iwonab at6pt +\font\fivebf= qx-iwonab at5pt +% typewriter +\font\seventeentt= qx-lmtt12 at17.28pt +\font\fourteentt= qx-lmtt12 at14.4pt +\font\twelvett= qx-lmtt12 +\font\eleventt= qx-lmtt10 at11pt +\font\tentt= qx-lmtt10 +\font\ninett= qx-lmtt9 +\font\eighttt= qx-lmtt8 +\font\seventt= qx-lmtt8 at7pt +\font\sixtt= qx-lmtt8 at6pt +\font\fivett= qx-lmtt8 at5pt +% text italic +\font\seventeenit= qx-iwonari at17.28pt +\font\fourteenit= qx-iwonari at14.4pt +\font\twelveit= qx-iwonari at12pt +\font\elevenit= qx-iwonari at11pt +\font\tenit= qx-iwonari +\font\nineit= qx-iwonari at9pt +\font\eightit= qx-iwonari at8pt +\font\sevenit= qx-iwonari at7pt +\font\sixit= qx-iwonari at6pt +\font\fiveit= qx-iwonari at5pt +% +\skewchar\seventeeni='177 \skewchar\fourteeni='177 \skewchar\twelvei='177 +\skewchar\eleveni='177 \skewchar\teni='177 \skewchar\ninei='177 +\skewchar\eighti='177 \skewchar\seveni='177 \skewchar\sixi='177 +\skewchar\fivei='177 +\skewchar\seventeensy='60 \skewchar\fourteensy='60 \skewchar\twelvesy='60 +\skewchar\elevensy='60 \skewchar\tensy='60 \skewchar\ninesy='60 +\skewchar\eightsy='60 \skewchar\sevensy='60 \skewchar\sixsy='60 +\skewchar\fivesy='60 +% +\let\usereightpointmacro=\relax +\def\eightpoint{\let\pointsize=\eightpoint + \textfont0=\eightrm \scriptfont0=\sixrm \scriptscriptfont0=\fiverm + \def\rm{\fam\z@\eightrm}% + \textfont1=\eighti \scriptfont1=\sixi \scriptscriptfont1=\fivei + \def\mit{\fam\@ne}\def\oldstyle{\fam\@ne\eighti}% + \textfont2=\eightsy \scriptfont2=\sixsy \scriptscriptfont2=\fivesy + \def\cal{\fam\tw@}% + \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex + \textfont\itfam=\eightit + \def\it{\fam\itfam\eightit}% + \textfont\bffam=\eightbf \scriptfont\bffam=\sixbf + \scriptscriptfont\bffam=\fivebf + \def\bf{\fam\bffam\eightbf}% + \textfont\ttfam=\eighttt \def\tt{\fam\ttfam\eighttt}% + \def\big##1{{\hbox{$\left##1\vbox to8.5\p@{}\right.\n@space$}}}% + \def\Big##1{{\hbox{$\left##1\vbox to11.5\p@{}\right.\n@space$}}}% + \def\bigg##1{{\hbox{$\left##1\vbox to14.5\p@{}\right.\n@space$}}}% + \def\Bigg##1{{\hbox{$\left##1\vbox to17.5\p@{}\right.\n@space$}}}% + \setnormalsp@cing \usereightpointmacro} +% +\let\userninepointmacro=\relax +\def\ninepoint{\let\pointsize=\ninepoint + \textfont0=\ninerm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm + \def\rm{\fam\z@\ninerm}% + \textfont1=\ninei \scriptfont1=\seveni \scriptscriptfont1=\fivei + \def\mit{\fam\@ne}\def\oldstyle{\fam\@ne\ninei}% + \textfont2=\ninesy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy + \def\cal{\fam\tw@}% + \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex + \textfont\itfam=\nineit + \def\it{\fam\itfam\nineit}% + \textfont\bffam=\ninebf \scriptfont\bffam=\sevenbf + \scriptscriptfont\bffam=\fivebf + \def\bf{\fam\bffam\ninebf}% + \textfont\ttfam=\ninett \def\tt{\fam\ttfam\ninett}% + \def\big##1{{\hbox{$\left##1\vbox to8.5\p@{}\right.\n@space$}}}% + \def\Big##1{{\hbox{$\left##1\vbox to11.5\p@{}\right.\n@space$}}}% + \def\bigg##1{{\hbox{$\left##1\vbox to14.5\p@{}\right.\n@space$}}}% + \def\Bigg##1{{\hbox{$\left##1\vbox to17.5\p@{}\right.\n@space$}}}% + \setnormalsp@cing \userninepointmacro} +% +\let\usertenpointmacro=\relax +\def\tenpoint{\let\pointsize=\tenpoint + \textfont0=\tenrm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm + \def\rm{\fam\z@\tenrm}% + \textfont1=\teni \scriptfont1=\seveni \scriptscriptfont1=\fivei + \def\mit{\fam\@ne}\def\oldstyle{\fam\@ne\teni}% + \textfont2=\tensy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy + \def\cal{\fam\tw@}% + \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex + \textfont\itfam=\tenit + \def\it{\fam\itfam\tenit}% + \textfont\bffam=\tenbf \scriptfont\bffam=\sevenbf + \scriptscriptfont\bffam=\fivebf + \def\bf{\fam\bffam\tenbf}% + \textfont\ttfam=\tentt \def\tt{\fam\ttfam\tentt}% + \def\big##1{{\hbox{$\left##1\vbox to8.5\p@{}\right.\n@space$}}}% + \def\Big##1{{\hbox{$\left##1\vbox to11.5\p@{}\right.\n@space$}}}% + \def\bigg##1{{\hbox{$\left##1\vbox to14.5\p@{}\right.\n@space$}}}% + \def\Bigg##1{{\hbox{$\left##1\vbox to17.5\p@{}\right.\n@space$}}}% + \setnormalsp@cing \usertenpointmacro} +% +\let\userelevenpointmacro=\relax +\def\elevenpoint{\let\pointsize=\elevenpoint + \textfont0=\elevenrm \scriptfont0=\eightrm \scriptscriptfont0=\fiverm + \def\rm{\fam\z@\elevenrm}% + \textfont1=\eleveni \scriptfont1=\eighti \scriptscriptfont1=\fivei + \def\mit{\fam\@ne}\def\oldstyle{\fam\@ne\eleveni}% + \textfont2=\elevensy \scriptfont2=\eightsy \scriptscriptfont2=\fivesy + \def\cal{\fam\tw@}% + \textfont3=\elevenex \scriptfont3=\elevenex \scriptscriptfont3=\elevenex% + \textfont\itfam=\elevenit + \def\it{\fam\itfam\elevenit}% + \textfont\bffam=\elevenbf \scriptfont\bffam=\eightbf + \scriptscriptfont\bffam=\fivebf + \def\bf{\fam\bffam\elevenbf}% + \textfont\ttfam=\eleventt \def\tt{\fam\ttfam\eleventt}% + \def\big##1{{\hbox{$\left##1\vbox to9.3\p@{}\right.\n@space$}}}% + \def\Big##1{{\hbox{$\left##1\vbox to12.6\p@{}\right.\n@space$}}}% + \def\bigg##1{{\hbox{$\left##1\vbox to16\p@{}\right.\n@space$}}}% + \def\Bigg##1{{\hbox{$\left##1\vbox to19.2\p@{}\right.\n@space$}}}% + \setnormalsp@cing \userelevenpointmacro} +% +\let\usertwelvepointmacro=\relax +\def\twelvepoint{\let\pointsize=\twelvepoint + \textfont0=\twelverm \scriptfont0=\ninerm \scriptscriptfont0=\sixrm + \def\rm{\fam\z@\twelverm}% + \textfont1=\twelvei \scriptfont1=\ninei \scriptscriptfont1=\sixi + \def\mit{\fam\@ne}\def\oldstyle{\fam\@ne\twelvei}% + \textfont2=\twelvesy \scriptfont2=\ninesy \scriptscriptfont2=\sixsy + \def\cal{\fam\tw@}% + \textfont3=\twelveex \scriptfont3=\twelveex \scriptscriptfont3=\twelveex% + \textfont\itfam=\twelveit + \def\it{\fam\itfam\twelveit}% + \textfont\bffam=\twelvebf \scriptfont\bffam=\ninebf + \scriptscriptfont\bffam=\sixbf + \def\bf{\fam\bffam\twelvebf}% + \textfont\ttfam=\twelvett \def\tt{\fam\ttfam\twelvett}% + \def\big##1{{\hbox{$\left##1\vbox to10.2\p@{}\right.\n@space$}}}% + \def\Big##1{{\hbox{$\left##1\vbox to13.8\p@{}\right.\n@space$}}}% + \def\bigg##1{{\hbox{$\left##1\vbox to17.4\p@{}\right.\n@space$}}}% + \def\Bigg##1{{\hbox{$\left##1\vbox to21\p@{}\right.\n@space$}}}% + \setnormalsp@cing \usertwelvepointmacro} +% +\let\userfourteenpointmacro=\relax +\def\fourteenpoint{\let\pointsize=\fourteenpoint + \textfont0=\fourteenrm \scriptfont0=\tenrm \scriptscriptfont0=\sevenrm + \def\rm{\fam\z@\fourteenrm}% + \textfont1=\fourteeni \scriptfont1=\teni \scriptscriptfont1=\seveni + \def\mit{\fam\@ne}\def\oldstyle{\fam\@ne\fourteeni}% + \textfont2=\fourteensy \scriptfont2=\tensy \scriptscriptfont2=\sevensy + \def\cal{\fam\tw@}% + \textfont3=\fourteenex \scriptfont3=\fourteenex \scriptscriptfont3=\fourteenex% + \textfont\itfam=\fourteenit + \def\it{\fam\itfam\fourteenit}% + \textfont\bffam=\fourteenbf \scriptfont\bffam=\tenbf + \scriptscriptfont\bffam=\sixbf + \def\bf{\fam\bffam\fourteenbf}% + \textfont\ttfam=\fourteentt \def\tt{\fam\ttfam\fourteentt}% + \def\big##1{{\hbox{$\left##1\vbox to11.9\p@{}\right.\n@space$}}}% + \def\Big##1{{\hbox{$\left##1\vbox to16.1\p@{}\right.\n@space$}}}% + \def\bigg##1{{\hbox{$\left##1\vbox to20.3\p@{}\right.\n@space$}}}% + \def\Bigg##1{{\hbox{$\left##1\vbox to24.5\p@{}\right.\n@space$}}}% + \setnormalsp@cing \userfourteenpointmacro} +% +\newcount\antttext \antttext=10 +\let\userseventeenpointmacro=\relax +\def\seventeenpoint{\let\pointsize=\seventeenpoint + \textfont0=\seventeenrm \scriptfont0=\twelverm \scriptscriptfont0=\ninerm + \textfont1=\seventeeni \scriptfont1=\twelvei \scriptscriptfont1=\ninei + \def\mit{\fam\@ne}\def\oldstyle{\fam\@ne\seventeeni}% + \textfont2=\seventeensy \scriptfont2=\twelvesy \scriptscriptfont2=\ninesy + \def\cal{\fam\tw@}% + \textfont3=\seventeenex \scriptfont3=\seventeenex \scriptscriptfont3=\seventeenex% + \textfont\itfam=\seventeenit + \textfont\bffam=\seventeenbf \scriptfont\bffam=\twelvebf + \scriptscriptfont\bffam=\ninebf + \textfont\ttfam=\seventeentt + \def\rm{\fam\z@\seventeenrm}% + \def\bf{\fam\bffam\seventeenbf}% + \def\it{\fam\itfam\seventeenit}% + \def\tt{\fam\ttfam\seventeentt}% + \def\big##1{{\hbox{$\left##1\vbox to15.3\p@{}\right.\n@space$}}}% + \def\Big##1{{\hbox{$\left##1\vbox to20.7\p@{}\right.\n@space$}}}% + \def\bigg##1{{\hbox{$\left##1\vbox to26.1\p@{}\right.\n@space$}}}% + \def\Bigg##1{{\hbox{$\left##1\vbox to31.5\p@{}\right.\n@space$}}}% + \setnormalsp@cing \userseventeenpointmacro} +% +\newtoks\baselinefactor \baselinefactor={1.2} +\def\setnormalsp@cing{% + \rm % set the em properly + \normalbaselineskip=\the\baselinefactor em\relax + \normalbaselines + \abovedisplayskip=1.2em plus .3em minus .9em% + \abovedisplayshortskip=0em plus .3em% + \belowdisplayskip=1.2em plus .3em minus .9em% + \belowdisplayshortskip=.7em plus .3em minus .4em% + \setbox\strutbox=\hbox{\vrule height .7\baselineskip + depth .3\baselineskip width\z@}} +% +\catcode`@=12 % at signs are no longer letters +\endinput diff --git a/Master/texmf-dist/tex/plain/jsmisc/cassette.tex b/Master/texmf-dist/tex/plain/jsmisc/cassette.tex new file mode 100644 index 00000000000..828260153bf --- /dev/null +++ b/Master/texmf-dist/tex/plain/jsmisc/cassette.tex @@ -0,0 +1,166 @@ +% $Id: cassette.tex,v 1.2 1995/03/16 01:17:54 schrod Exp $ +%-------------------------------------------------------- +% Written by Joachim Schrod <schrod@iti.informatik.th-darmstadt.de>. +% Put into public domain. + + +\catcode`\@=11 + +\font\norm=cmss8 +\font\intfont=cmssi8 +\font\titfont@page=cmcsc10 scaled 800 +\font\titfont=cmss10 +\font\titintfont=cmssi10 +\font\cassfont=cmcsc10 + +\newdimen\colwidth \colwidth=50 true mm +\newdimen\backheight \backheight=10 true mm +\newdimen\titheight \titheight=14 true mm +\newdimen\pagheight \pagheight=66 true mm + +\def\@seite#1{% + \global\setbox\@page=\vbox{\hsize=\colwidth + \everypar={\global\hangindent=1em }% + \vskip \tw@\p@ + #1\endgraf + \vfil + }% + } + +\def\cnt#1:{[#1]} +\def\von#1:{{\intfont #1\/}:\penalty -100 } % <== Space! +\def\nl{\hfill\break} + +\def\@titel#1{% + \global\setbox\@title=\vbox{\hsize=\colwidth + \let\intfont=\titintfont % Font fuer Interpret + \vfill + \unvbox\@title + \titfont #1\endgraf + \vfill + }% + {\titfont@page + \def\von##1:{\uppercase{##1}:\penalty -100 }% % <== Space! + #1% + }} + + +\newbox\@seitea +\newbox\@seiteb +\newbox\@titela +\newbox\@titelb +\def\seitea{\let\@page=\@seitea \let\titel=\titela \obeylines \@seite} +\def\seiteb{\let\@page=\@seiteb \let\titel=\titelb \obeylines \@seite} +\def\titela{\let\@title=\@titela \@titel} +\def\titelb{\let\@title=\@titelb \@titel} + +\def\titelcass#1{% + \global\setbox\@titela=\vbox{\hsize=\colwidth + \vfill + \unvbox\@titela + \titfont #1\endgraf + \vfill + }% + } + + + + +\def\begincassette#1{% + \def\cassname{#1}% + \setbox\@seitea\vbox{\hrule width\colwidth height\z@ depth\z@ \vfil}% + \setbox\@seiteb\vbox{\hrule width\colwidth height\z@ depth\z@ \vfil}% + \setbox\@titela\vbox{\hrule width\colwidth height\z@ depth\z@ \vfil}% + \setbox\@titelb\vbox{\hrule width\colwidth height\z@ depth\z@ \vfil}% + \splittopskip\baselineskip + } + +\newif\if@text@left@ +\def\endcassette{% + \hbox{% + \vrule + \vbox{% + \hrule + \vbox to \backheight{\hsize2\colwidth \advance\hsize by 4.4\p@ + \vfill + \centerline{\cassfont \cassname}% + \vfill + }% + \hrule + \col{\titheight}{@titel}% + \hrule + \loop + \global\@text@left@false + \one@page + \if@text@left@ \repeat + }% + \vrule + }% + } +\def\one@page{% + \col{\pagheight}{@seite}% + \hrule + }% +\def\col#1#2{% + \hbox{% + \hskip \p@ + \split@col{#2a}{#1}% + \hskip \p@ + \vrule + \hskip \p@ + \split@col{#2b}{#1}% + \hskip \p@ + }% + } +\def\split@col#1#2{% + \expandafter \ifvoid \csname #1\endcsname + \vbox to #2{\hrule width\colwidth height\z@ depth\z@ \vfil}% + \else + \vbox to #2{\hsize\colwidth + \setbox\z@ \vsplit \csname #1\endcsname to #2\relax + \unvbox\z@ + \vskip 2pt plus 1fil minus 2pt + }% + \expandafter \ifvoid \csname #1\endcsname + \else \global\@text@left@true + \fi + \fi + } + + +\norm \baselineskip=9pt \lineskip=0pt \lineskiplimit=0pt +\parindent=\z@ \parskip=\tw@\p@ minus \tw@\p@ +\rightskip=\z@ plus 0.7\colwidth \linepenalty=100 +\r@ggedbottomtrue +\frenchspacing +\nopagenumbers + + +\endinput + + + +% ============================================================ +% +% $Log: cassette.tex,v $ +% Revision 1.2 1995/03/16 01:17:54 schrod +% Support for magnified typesetting. +% Might be more changes as well, they looked sensible. +% +% Revision 1.1 1995/03/13 23:18:10 schrod +% Started to manage this package with CVS. Made minor code cleanup. +% + +% +% Pre-CVS Log: +% +% 87-09-20 js Initial revision + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Local Variables: +mode: plain-TeX +TeX-master: t +TeX-brace-indent-level: 4 +End: diff --git a/Master/texmf-dist/tex/plain/jsmisc/idverb.tex b/Master/texmf-dist/tex/plain/jsmisc/idverb.tex new file mode 100644 index 00000000000..f40dbf860cb --- /dev/null +++ b/Master/texmf-dist/tex/plain/jsmisc/idverb.tex @@ -0,0 +1,215 @@ +% $Id: idverb.doc,v 1.1 1995/03/13 23:18:11 schrod Exp $ +%---------------------------------------------------------------------- +% Written by Joachim Schrod <schrod@iti.informatik.th-darmstadt.de>. +% Copyright conditions see below. + +% +% idverb.doc --- typeset identifiers verbatim +% +% [plain TeX in MAKEPROG] +% (history at end) + + +%%%% +%%%% +%%%% These TeX macros were documented with the documentation system +%%%% MAKEPROG and automatically converted to the current form. +%%%% If you have MAKEPROG available you may transform it back to +%%%% the original input: Remove every occurence of three percents +%%%% and one optional blank from the beginning of a line and remove +%%%% every line which starts with four percents. The following lex +%%%% program will do this: +%%%% +%%%% %% +%%%% +%%%% ^%%%\ ? ; +%%%% ^%%%%.*\n ; +%%%% +%%%% If you just want to print the documentation you may fetch +%%%% the archive print-makeprog.tar.Z from ftp.th-darmstadt.de (directory +%%%% pub/tex/latex). It contains *all* used styles -- but beware, they +%%%% may not be in a documented form... +%%%% +%%%% +%%% \input progdoc + +%%% \input names.sty +%%% \def\v{{\tt \vbar\/}} + + + +%%% \title{Identifiers Verbatim \`a la {\ttitlefont WEB}} + + + +%%% \chap Introduction. + +%%% This macro files allows to write identifiers in a \WEB{} like style, +%%% i.e.\ as {\tt \origvert identifier\origvert\/}. The identifiers are +%%% typeset verbatim in the monospace type face. The macros +%%% |\makevertother| and |\makevertactive| are available to activate and +%%% deactivate the special behaviour of the vertical bar. + + +%%% \sect This macro file uses the namespace |idv|. + +%%% \beginprog +\ifx \IdvLoaded\undefined + \def\IdvLoaded{$Revision: 1.1 $} +\else \endinput \fi % <-- one line! +%%% \endprog + + +%%% \sect These macros are supported. Send bug reports, comments and +%%% repairs. + +%%% The reference version may be retrieved via anonymous ftp from +%%% |ftp.th-darmstadt.de| [130.83.47.112], directory |pub/tex/plain|. It's +%%% placed there as a gzipped tar file. (The information on the +%%% IP~number is dated March 13, 1995. It might have changed, also this is very +%%% unlikely. Use your friendly nameserver.) + + +%%% \sect This is freely distributable software; you can redistribute it +%%% and/or modify it under the terms of the GNU General Public License as +%%% published by the Free Software Foundation; either version~2 of the +%%% License, or (at your option) any later version. + +%%% This software is distributed in the hope that it will be useful, but +%%% {\bf without any warranty\/}; without even the implied warranty of +%%% {\bf merchantability\/} or {\bf fitness for a particular purpose}. See +%%% the GNU General Public License for more details. + +%%% You should have received a copy of the GNU General Public License in +%%% the file |License| along with this package; if not, write to the Free +%%% Software Foundation, Inc., 675~Mass Ave, Cambridge, MA~02139,~USA. + + +%%% \sect But before we start we declare some shorthands for category +%%% codes. By declaring the at sign~(`|@|') as well as the +%%% underscore~`(|_|)' as letters we can use them in our macros. (I agree +%%% with D.~Knuth that |\identifier_several_words_long| is more readable +%%% than |\IdentifierSeveralWordsLong| and in every case better than +%%% |\p@@@s|.) With the at sign we can use the ``private'' Plain macros +%%% and with the underscore we can make our own macros more readable. But +%%% as we have to restore these category codes at the end of this macro +%%% file we store their former values in control sequences. This method is +%%% better than to use a group because not all macros have to be defined +%%% global this way. + +%%% Only the first macro file read in defines the |Cat| cseqs. + +%%% \beginprog +\ifx \CatEscape\undefined + \chardef\CatEscape=0 + \chardef\CatOpen=1 + \chardef\CatClose=2 + \chardef\CatIgnore=9 + \chardef\CatLetter=11 + \chardef\CatOther=12 + \chardef\CatActive=13 % \active of plain.tex + \chardef\CatInvalid=15 + + \chardef\CatAtCode=\catcode`\@ + \chardef\CatUsCode=\catcode`\_ +\fi + +\catcode`\@=\CatLetter % top level macro file +\catcode`\_=\CatLetter +%%% \endprog + + +%%% \sect Let's identify this macro file against the user and in the Log file. + +%%% \beginprog +\begingroup + \catcode`\$=\CatIgnore + \catcode`\:=\CatIgnore + \message{Verbatim identifiers, $Revision: 1.1 $} +\endgroup +%%% \endprog + + +%%% \sect The usual verbatim macros use |\dospecials| to change the +%%% catcode of all special characters. We have to add `\v' to this list. +%%% The old meaning is stored in |\idv_OrigDospecials|. + +%%% \beginprog +\let\idv_OrigDospecials=\dospecials +\begingroup + \def\do#1{\noexpand\do\noexpand#1} + \xdef\dospecials{\idv_OrigDospecials\do\|} +\endgroup +\let\idv_dospecials=\dospecials + +\def\makevertactive{\catcode`\|\CatActive \let\dospecials\idv_dospecials} +\def\makevertother{\catcode`\|\CatOther \let\dospecials\idv_OrigDospecials} + +\makevertactive +%%% \endprog + + +%%% \sect Now we can define `\v'. This definition is a little bit tricky, +%%% as it redefines itself to |\egroup| to close the hbox. But if the hbox +%%% is ended, `\v' is restored to its original meaning. |\origvert| is +%%% given the original meaning of `\v'. |\vbar| is the character from the +%%% current font that has the ASCII code of a vertical bar, sometimes this +%%% {\it is\/} a vertical bar. + +%%% \beginprog +\let\origvert=| +\chardef\vbar=`\| + +\def\idv_setup_verbatim{% + \def\do##1{\catcode`##1\CatOther}\idv_OrigDospecials + \parskip\z@skip \parindent\z@ + \obeylines \obeyspaces \frenchspacing + \tt + } + +\def|{% + \leavevmode + \hbox\bgroup + \let\par\space \idv_setup_verbatim + \let|\egroup + } +%%% \endprog + + +%%% \sect We are finished; +%%% restore the catcodes and prevent from following garbage. + +%%% \beginprog +\catcode`\@=\CatAtCode +\catcode`\_=\CatUsCode + +\endinput +%%% \endprog + + +%%% %% \sect {\it Acknowledgements:}\quad I would like to thank XXX + + +%%% \bye + +%%% +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% % +%%% % $Log: idverb.doc,v $ +%%% % Revision 1.1 1995/03/13 23:18:11 schrod +%%% % Started to manage this package with CVS. Made minor code cleanup. +%%% % + +%%% % +%%% % Pre-CVS Log: +%%% % +%%% % 27 Jul 89 js Initial revision. + + +%%% +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Local Variables: +%%% mode: plain-TeX +%%% TeX-master: t +%%% TeX-brace-indent-level: 4 +%%% End: diff --git a/Master/texmf-dist/tex/plain/jsmisc/js-misc.tex b/Master/texmf-dist/tex/plain/jsmisc/js-misc.tex new file mode 100644 index 00000000000..c39e7c257f5 --- /dev/null +++ b/Master/texmf-dist/tex/plain/jsmisc/js-misc.tex @@ -0,0 +1,244 @@ +% $Id: js-misc.tex,v 1.1 1995/03/13 23:18:12 schrod Exp $ +%-------------------------------------------------- +% Written by Joachim Schrod <schrod@iti.informatik.th-darmstadt.de>. + +% This is a german description for cassette.tex & schild.tex. + + +% Manual fuer ``Kleine TeX-Makros, aufbauend auf PLAIN'': +% Tonbandkassetten-Schilder +% Buecherruecken-Schilder +% +% [Formate] + + +\berichtformat + +\input idverb +\def\.{$\bullet$} + + + + +\titel{}{Kleine \TeX{}-Makros}{, aufbauend auf {\tt PLAIN}} +\autor{Joachim Schrod} +\datum{Rödermark, den 08.02.88} + + + + + +\kapitel{Beschriftung von Tonband-Kassetten}{} + +Die Beschriftung von Tonband-Kassetten wird durch +|\input cassette| geladen. +Durch diese Makros werden Schilder erzeugt, die +in eine Kassettenhülle gelegt werden können. +%Jedes Schild wird auf eine einzelne Seite gedruckt. +Das Layout eines Schildes ist in Abb.~1.1 zu sehen. +Das Schild wird an den äußeren Rändern ausgeschnitten +und entlang der horizontalen Linien gefaltet. + +\abbvoll{ +{\input cassette +\let\eject=\relax +\begincassette{Kassettenname} +\titelcass{Frontseite mit Titeln} +\seitea{Musikstücke der Seite A} +\seiteb{Musikstücke der Seite B} +\endcassette +}}{Layout eines Kassettenschildes} + +\noindent Folgende Befehle erzeugen das gewünschte Layout: + +\beginitemize + +\item{\.} |\begincassette|\quad (1 Parameter)\nl +Mit diesem Befehl beginnt die Beschreibung eines Kassettenschilds. +Der Parameter ist der Name der Kassette, der in |\cassfont| +(Kapitälchen, 10pt) gesetzt wird. + +\item{\.} |\titelcass|\quad (1 Parameter)\nl +Dieser Befehl gibt den Titel der Kassette an, der auf die +Frontseite gesetzt wird. +Der Titel wird in |\titfont| (Serifenlose, 10pt) gesetzt. +Dieser Befehl ist optional, da Titel auch durch |\titel| (s.u.)\ +angegeben werden können. + +\item{\.} |\seitea|\quad (1 Parameter)\nl +Durch den Parameter von |\seitea| wird die Seite~A der +Kassette beschrieben. +Diese Beschreibung umfaßt einen optionalen Titel und eine +Folge von Musikstücken. +Sie ist zeilenorientiert, d.h.\ jeweils ein Musikstück +(mit eventuellem Interpret) steht auf einer Eingabezeile. +Wenn der Text zu lang wird, kann durch die Angabe von |%| +am Zeilenende die Folgezeile mitbenutzt werden. +Innerhalb eines Musikstücks kann durch |\nl| gezielt +umgebrochen werden, wenn man mit dem von \TeX{} gewähltem +Umbruch nicht zufrieden ist. +Die Musikstücke werden in |\norm| (Serifenlose, 8pt) gesetzt. +Dieser Befehl ist optional. +\itempar +Folgende Hilfsbefehle stehen zur Beschreibung zur Verfügung: + +{\nextitemlevel\itemskip=0pt +\item{--} |\cnt|\quad (1 Parameter, beendet durch |:|)\nl +Mit |\cnt| kann die Zählerstellung des Beginns eines +Musikstücks angegeben werden. +Die angegebene Zahl wird in eckige Klammern gesetzt. + +\item{--} |\von|\quad (1 Parameter, beendet durch |:|)\nl +Durch |\von| kann ein Interpret dem Musikstück vorgestellt werden. +Ein Beispiel für eine vollständige Angabe eines Musikstücks +kann also +$$ + \hbox{|\von Led Zeppelin: Stairway to heaven|} +$$ +sein. +Der Interpret wird in |\intfont| (Serifenlose Kursiv, 8pt) gesetzt. + +\item{--} |\titel|\quad (1 Parameter)\nl +Mit diesem Befehl kann in die Seite eine Angabe eines Titels +(z.B.~einer Schallplatte) übernommen werden. +Dieser Titel wird gleichzeitig auf die Frontseite gesetzt. +Innerhalb des Titels kann |\von| zur Angabe eines Interpreten +benutzt werden. +Dieser Befehl kann mehrmals vorkommen. +Der Titel wird auf der Seite in |\titfont@page| (Kapitälchen, 8pt) +gesetzt, wobei der Interpret in Versalien gesetzt wird. +Auf der Frontseite wird der Titel in |\titfont| (Serifenlose, 10pt) +gesetzt, wobei der Interpret in |\titintfont| (Serifenlose Kursiv, 10pt) +gesetzt wird. +\par} + +\item{\.} |\seiteb|\quad (1 Parameter)\nl +Dieser Befehl beschreibt die Seite~B der Kassette. +Die Beschreibungsmöglichkeiten sind mit denen von |\seitea| +identisch. + +\item{\.} |\endcassette|\nl +Durch diesen Befehl wird die Beschreibung des Kassettenschildes +beendet und das Kassettenschild gesetzt. +Gleichzeitig wird eine neue Seite begonnen. + +\enditemize + + + + + +\kapitel{Beschriftung von Bücherrücken}{} + +Die Beschriftung von Bücherrücken wird durch +|\input schild| geladen. +Durch diese Makrodatei ist es möglich Schilder für +Bücherrücken zu erzeugen, die anschließend auf die Bücher +geklebt werden können. +Das Layout eines Schildes ist in der Abb.~2.1 gezeigt, +es wird an den äußeren Rändern ausgeschnitten. + +\def\schild{% + \vbox{% + \hrule + \hbox{% + \vrule + \vbox to 10mm{% + \vfill + \hbox{\kern 25mm \svtnrm Name des Buches\kern 25mm}% + \vfill + }% + \vrule + }% + \hrule + }% + } + +\def\vertlen{% + \llap{% + \vbox to 10mm{% + \vfill + \hbox{{\tt \#1\/} mm }% + \vfill + } + }% + } +\def\vertmass{% + \vbox{% + \hrule width 4mm + \hbox{% + \vertlen + \kern 2mm + \vrule height 10mm + }% + \hrule width 4mm + }% + } + +\def\horizmass{% + \hbox{% + \vrule height 2mm depth 2mm + \vtop{% + \hrule width 25mm + \kern 2mm + \hbox to 25mm{\ctr{\tt \char`\\rand}}% + }% + \vrule height 2mm depth 2mm + }% + } + +\abbvoll{ + \offinterlineskip + \hbox{% + \llap{% + \vertmass + \hskip 2mm + }% + \schild + }% + \vskip 2mm + \hbox{% + \horizmass + \phantom{\svtnrm Name des Buches}% + \horizmass + }% +}{Layout eines Buchrückenschildes} + +\noindent Um das Buchrückenschild zu erzeugen, existieren +folgende Makros und Parameter: + +\beginitemize + +\item{\.} |\schild|\quad (2 Parameter)\nl +Durch dieses Makro wird ein Schild erzeugt. +Der erste Parameter ist die Höhe des Schildes, der zweite +der Text, der auf das Buchrückenschild soll. + +\item{\.} |\rand|\nl +|\rand| ist eine Dimensionsangabe, die beschreibt, wieviel +Platz zwischen dem Buchnamen und dem Rand des Schildes +horizontal verbleibt. + +\item{\.} |\namfont|\nl +In |\namfont| wird der Buchname gesetzt. + +\enditemize + + + + + +\bye + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% $Log: js-misc.tex,v $ +% Revision 1.1 1995/03/13 23:18:12 schrod +% Started to manage this package with CVS. Made minor code cleanup. +% + +% +% Pre-CVS Log: +% +% 88-02-08 js Initial revision diff --git a/Master/texmf-dist/tex/plain/jsmisc/schild.tex b/Master/texmf-dist/tex/plain/jsmisc/schild.tex new file mode 100644 index 00000000000..9bc3ef237b3 --- /dev/null +++ b/Master/texmf-dist/tex/plain/jsmisc/schild.tex @@ -0,0 +1,84 @@ +% $Id: schild.tex,v 1.1 1995/03/13 23:18:13 schrod Exp $ +%-------------------------------------------------------- + + +% Rueckenschild fuer ein gelumbacktes Buch: +% +% \buchschild#1#2 #1 == Breite in mm #2 == Name des Buches +% +% +% Tuerschilder ITI: +% +% \tuerschild#1 #1 == Text (ueblicherweise in Grossbuchstaben) +% falls zu lang, Font auf magstep3 reduzieren + + +\newdimen\rand +\rand=25mm + +\let\buchfont=\svtnrm +\font\tuerfont=cmssdc10 scaled \magstep4 % magstep3, falls zu lang +\let\tuerschildfont=\tuerfont + + + +\def\buchschild#1#2{% + \vbox{% + \offinterlineskip + \hrule + \hbox{% + \vrule + \vbox to #1mm{% + \vfill + \hbox{\kern\rand \buchfont #2\kern\rand}% + \vfill + }% + \vrule + }% + \hrule + }% + \vskip 2cm + } + +\def\tuerschild#1{% + \vbox{% + \offinterlineskip + \hrule + \hbox{% + \vrule + \vbox to 10mm{% + \rand=15mm + \vfill + \hbox to 155mm{\kern\rand \tuerschildfont #1\hfill}% + \vfill + }% + \vrule + }% + \hrule + }% + \vskip 2cm + } + + + +\raggedbottom +\nopagenumbers + + +\endinput + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% $Log: schild.tex,v $ +% Revision 1.1 1995/03/13 23:18:13 schrod +% Started to manage this package with CVS. Made minor code cleanup. +% + +% +% Pre-CVS Log: +% +% 92-04-15 cd renamed \schild to \buchschild +% introduced \tuerschild +% 88-02-08 js first release diff --git a/Master/texmf-dist/tex/plain/jsmisc/sperr.tex b/Master/texmf-dist/tex/plain/jsmisc/sperr.tex new file mode 100644 index 00000000000..4e6b0902301 --- /dev/null +++ b/Master/texmf-dist/tex/plain/jsmisc/sperr.tex @@ -0,0 +1,116 @@ +% $Id: sperr.tex,v 1.2 1995/04/16 23:27:04 schrod Exp $ +%--------------------------------------------------------- +% Written by Joachim Schrod <schrod@iti.informatik.th-darmstadt.de>. +% This file is distributed without any copyright restriction. + + +% +% Makro-Datei zum Sperren von Zeichenfolgen. +% +% Bitte sperrt damit keine Gemeinen. +% +% Joachim Schrod +% + +% +% Benutzung: \sperr{TEXT}{KERNING} +% Wenn in TEXT mehrere Token als eines behandelt werden sollen +% (z.B. Umlaute), m\"ussen diese Tokens geklammert werden. +% + + +\ifx \CatEscape\undefined + \chardef\CatEscape=0 + \chardef\CatOpen=1 + \chardef\CatClose=2 + \chardef\CatIgnore=9 + \chardef\CatLetter=11 + \chardef\CatOther=12 + \chardef\CatActive=13 % \active of plain.tex + \chardef\CatInvalid=15 + + \chardef\CatAtCode=\catcode`\@ + \chardef\CatUsCode=\catcode`\_ +\fi + +\catcode`\@=\CatLetter % top level macro file +\catcode`\_=\CatLetter + +\begingroup + \catcode`\$=\CatIgnore + \catcode`\:=\CatIgnore + \message{Text sperren, $Revision: 1.2 $} +\endgroup + + +\let\end_list=\relax +\edef\empty_list{\end_list} + +\def\split#1#2\end_list{% + \edef\sec_char{#1}% + \toks@={#2\end_list}% + } + +\def\do_split{% + \expandafter \split \the\toks@ \end_list + } + +\def\next_char{% + \edef\first_char{\sec_char}% + \do_split + } + + + +\newdimen\sperr_width + +\def\sperr#1#2{% % Text, Sperrbreite + \toks@={#1\end_list}% + \sperr_width=#2\relax + \do_split + \next_char % initialize pipeline + \ifx \sec_char\empty_list #1% % nur 1 Zeichen + \else \do_sperr + \fi + } + + +\newif \if@loop + +\def\do_sperr{% + \loop + \set_char % Zeichen und nachfolgendes Kerning setzen + \next_char + \ifx \sec_char\empty_list + \first_char + \@loopfalse + \else \@looptrue + \fi + \if@loop + \repeat + } + + + + +\newbox\kern_box +\newdimen\kern_width + +\def\set_char{% + \setbox\kern_box=\hbox{\first_char\sec_char}% + \kern_width=\wd\kern_box + \setbox\kern_box=\hbox{\hbox{\first_char}\hbox{\sec_char}}% + \advance \kern_width by -\wd\kern_box + \advance \kern_width by \sperr_width + \first_char \kern\kern_width + } + + + + +\catcode`\@=\CatAtCode +\catcode`\_=\CatUsCode + + + +\endinput diff --git a/Master/texmf-dist/tex/plain/jsmisc/xfig.tex b/Master/texmf-dist/tex/plain/jsmisc/xfig.tex new file mode 100644 index 00000000000..95a86cff5e9 --- /dev/null +++ b/Master/texmf-dist/tex/plain/jsmisc/xfig.tex @@ -0,0 +1,626 @@ +% $Id: xfig.tex,v 1.4 1995/05/07 16:52:05 schrod Exp $ +%------------------------------------------------------------ +% Hacked together by Joachim Schrod <schrod@iti.informatik.th-darmstadt.de> +% Put into public domain. + +% +% Support for xfig pictures in plain TeX +% orginally written for transfig 2.1.7 +% support last checked for transfig 3.1.3 +% + + +% USAGE: +% +% To include xfig figures in plain TeX documents, just input these +% macros and then input the (La)TeX file you got by exporting your +% figure as `LaTeX picture' or by calling fig2dev with option `-L +% latex'. No other ``language'' is supported by these macros; in +% particular, `Combined PS/LaTeX' is not supported. + +% You can select the used types for text by redefining some macros: +% \FigFontType<type> (with <type> equal `rm', `bf', `it', `sf', or +% `tt') must expand to the external font name that's used for the +% respective xfig font selection. +% \FigFontDefault specifies the font that's used for the `Default' +% font selection. That macro is only accessed if you use the new xfig, +% or if you repaired the no-NFSS code of fig2dev (in texfonts.h, see +% comments at \xfig@bindSetFigFont implementation below). +% +% At the start of each figure \pictureHook is evaluated, you might +% want to bind that to some code that does document-specific setup. +% Each figure is set in a group, so you can rebind other control +% sequences in that hook. + + +% ------------------------------------------------------------ + +% IMPLEMENTATION NOTES: +% +% The macros might not work in all circumstances, it's updated and improved +% by need... +% +% In particular: +% -- The font selection in \SetFigFont could be improved. +% -- The environment code (\begin/\end) is very rough and should +% check for erroneous input. + + +% Code structure: +% +% After general setup, code from DEK that implements most parts of +% LaTeX's picture environment is used. Then we add definitions for the +% missing and xfig-specific tags. +% +% In Emacs, each section starts on a new page. + + +% ============================================================ + +% standard setup: + +\ifx \CatEscape\undefined + \chardef\CatEscape=0 + \chardef\CatOpen=1 + \chardef\CatClose=2 + \chardef\CatIgnore=9 + \chardef\CatLetter=11 + \chardef\CatOther=12 + \chardef\CatActive=13 % \active of plain.tex + \chardef\CatInvalid=15 + + \chardef\CatAtCode=\catcode`\@ + \chardef\CatUsCode=\catcode`\_ +\fi + +\catcode`\@=\CatLetter % top level macro file + +\begingroup + \catcode`\$=\CatIgnore + \catcode`\:=\CatIgnore + \message{xfig pictures, $Revision: 1.4 $} +\endgroup + + +% This macro file allocates registers and might be read in multiple +% times, in groups. (Actually, this occured for the first time when we +% wanted to use xfig pictures in Texinfo documents. There they are +% typeset in a `tex' environment, and xfig is read in anew for each +% figure.) As all register allocations are globally, we define some +% macros that help us to define them only once. + +\def\xfig@newskip#1{% + \ifx #1\undefined \csname newskip\endcsname #1\fi + } +\def\xfig@newdimen#1{% + \ifx #1\undefined \csname newdimen\endcsname #1\fi + } +\def\xfig@newcount#1{% + \ifx #1\undefined \csname newcount\endcsname #1\fi + } +\def\xfig@newbox#1{% + \ifx #1\undefined \csname newbox\endcsname #1\fi + } + + +% ============================================================ + +%% First comes an implementation of the picture environment's features, +%% by the Grand Wizard of TeX Arcana himself. This is from picture.tex, +%% I deleted the \cpic macro and the squines. \makebox did not support +%% position specifiers, I substituted the definition by the one from +%% LaTeX2e. In addition, all register allocations are made with the +%% macros defined above. + +% -------------------------------------------------- + +% Pictures (a subset of \LaTeX's conventions, plus squines) + +%% [start of change to DEK's code] +%% +%% At's catcode is changed above already. +%% Allocation info for registers should go to log file. + +% \chardef\CatcodeAt=\catcode`\@ +% \catcode`\@=11 % enable private control sequences +% \def\wlog#1{} % don't put allocation info into the log + +%% [end of change] + +\xfig@newskip\hsssglue \hsssglue=0pt plus 1fill minus 1fill +\def\hsss{\hskip\hsssglue} + +\xfig@newdimen\unitlength \xfig@newdimen\linethickness +\xfig@newdimen\@picheight \xfig@newdimen\@xdim \xfig@newdimen\@ydim \xfig@newdimen\@len +\xfig@newdimen\@save +\xfig@newcount\@multicount \xfig@newcount\@xarg \xfig@newcount\@yarg +\xfig@newbox\@picbox \xfig@newbox\@mpbox + +\font\tenln=line10 \font\tenlnw=linew10 +\font\tencirc=lcircle10 \font\tencircw=lcirclew10 + +\xfig@newdimen\@halfwidth + +\def\thinlines{\let\linefont=\tenln \let\circlefont=\tencirc + \linethickness=\fontdimen8\linefont \@halfwidth .5\linethickness} +\def\thicklines{\let\linefont=\tenlnw \let\circlefont=\tencircw + \linethickness=\fontdimen8\linefont \@halfwidth .5\linethickness} +\thinlines + +\def\beginpicture(#1,#2)(#3,#4){\@picheight=#2\unitlength + \setbox\@picbox=\hbox to#1\unitlength\bgroup \let\line=\@line + \kern-#3\unitlength \lower#4\unitlength\hbox\bgroup\ignorespaces} +\def\endpicture{\egroup\hss\egroup + \ht\@picbox=\@picheight \dp\@picbox=\z@ + \leavevmode\box\@picbox} + +\def\put(#1,#2)#3{\raise#2\unitlength\rlap{\kern#1\unitlength #3}\ignorespaces} + +\def\multiput(#1,#2)(#3,#4)#5#6{\@multicount=#5\relax + \@xdim=#1\unitlength \@ydim=#2\unitlength \setbox\@mpbox=\hbox{#6}% + \loop\ifnum\@multicount>0 + \raise\@ydim\rlap{\kern\@xdim \unhcopy\@mpbox}% + \advance\@xdim#3\unitlength \advance\@ydim#4\unitlength + \advance\@multicount\m@ne \repeat\ignorespaces} + +\def\@ifnextchar#1#2#3{\let\@tempe=#1\def\@tempa{#2}\def\@tempb{#3}\futurelet + \@tempc\@ifnch} +\def\@ifnch{\ifx \@tempc \@sptoken \let\@tempd\@xifnch + \else \ifx \@tempc \@tempe\let\@tempd\@tempa\else\let\@tempd\@tempb\fi + \fi \@tempd} + +%% [start of change to DEK's code] +%% +%% \makebox is called with an optional argument, the position +%% specifier. The code below is copied from the LaTeX2e beta-test +%% release. + +\def\makebox(#1,#2){% + \@ifnextchar[{\@makebox(#1,#2)}{\@makebox(#1,#2)[]}} + +\def\@nnil{\@nil} +\def\@fornoop#1\@@#2#3{} +\def\@tfor#1:=#2\do#3{\def\@fortmp{#2}\ifx\@fortmp\empty \else + \@tforloop#2\@nil\@nil\@@#1{#3}\fi} +\def\@tforloop#1#2\@@#3#4{\def#3{#1}\ifx #3\@nnil + \let\@nextwhile\@fornoop \else + #4\relax\let\@nextwhile\@tforloop\fi\@nextwhile#2\@@#3{#4}} + +\long\def\@makebox(#1,#2)[#3]#4{% + \vbox to#2\unitlength + {\let\mb@b\vss \let\mb@l\hss\let\mb@r\hss + \let\mb@t\vss + \@tfor\@tempa :=#3\do{% + \if s\@tempa + \let\mb@l\relax\let\mb@r\relax + \else + \expandafter\let\csname mb@\@tempa\endcsname\relax + \fi}% + \mb@t + \hbox to #1\unitlength{\mb@l #4\mb@r}% + \mb@b + \kern\z@}} + +%% [end of change] + +\newif\ifneg +\def\@line(#1,#2)#3{\@xarg=#1 \@yarg=#2 \@len=#3\unitlength \leavevmode + \ifnum\@xarg<0 \reverseline \else \negfalse \@ydim=\z@\fi + \ifnum\@xarg=0 \@vline + \else\ifnum\@yarg=0 \@hline \else\@sline\fi\fi + \ifneg\kern-\@len\else\@save=\@ydim\fi} +\def\reverseline{\negtrue \kern-\@len \@xarg=-\@xarg + \@ydim=\@len \multiply\@ydim\@yarg \divide\@ydim\@xarg \@yarg=-\@yarg} + +\def\@hline{\vrule height.5\linethickness depth.5\linethickness width\@len} +\def\@vline{\kern-.5\linethickness\vrule width\linethickness + \ifnum\@yarg<0 height\z@ depth\else depth\z@ height\fi\@len + \kern-.5\linethickness} + +\def\@sline{\setbox\@picbox=\hbox{\linefont \count@=\@xarg \multiply\count@ 8 + \ifnum\@yarg>0 \advance\count@\@yarg \advance\count@-9 + \else \advance\count@-\@yarg \advance\count@ 55 \fi \char\count@}% + \ifnum\@yarg<0 \@picheight=-\ht\@picbox \advance\@ydim\@picheight + \else \@picheight=\ht\@picbox \fi + \@xdim=\wd\@picbox \@save=\@ydim + \loop\ifdim\@xdim<\@len \raise\@ydim\copy\@picbox + \advance\@xdim\wd\@picbox \advance\@ydim\@picheight \repeat + \advance\@xdim-\@len \kern-\@xdim + \multiply\@xdim\@yarg \divide\@xdim\@xarg \advance\@ydim-\@xdim + \raise\@ydim\box\@picbox} + +\def\vector(#1,#2)#3{\@line(#1,#2){#3}% + \ifnum\@xarg=0 \@vvector \else\ifnum\@yarg=0 \@hvector \else\@svector\fi\fi} +\def\@hvector{\ifneg\rlap{\linefont\char27}\else + \smash{\llap{\linefont\char45}}\fi} % we have to smash because of font bug +\def\@vvector{\ifnum\@yarg<0 \raise-\@len\rlap{\linefont\char63}% + \else\setbox\@picbox=\rlap{\linefont\char54}\advance\@len-\ht\@picbox + \raise\@len\box\@picbox\fi} + +\def\@svector{\setbox\@picbox=\hbox to\z@{\linefont + \ifnum\@yarg<0 \count@=55 \@yarg=-\@yarg \else\count@=-9 \fi + \ifneg\multiply\@xarg16 \multiply\@yarg2 + \else\hss % \llap + \ifnum\@xarg>2 \multiply\@xarg9 \multiply\@yarg2 \advance\count@29 + \else\ifnum\@yarg>2 \multiply\@xarg16 \multiply\@yarg9 \advance\count@-20 + \else\multiply\@xarg24 \multiply\@yarg3 \fi\fi\fi + \advance\count@\@xarg \advance\count@\@yarg \char\count@ + \ifneg\hss\fi}% \rlap + \raise\@save\box\@picbox} + +\def\disk#1{\@len=#1\unitlength \count@='160 \@diskcirc} +\def\circle#1{\@len=#1\unitlength \count@='140 \@diskcirc} +\def\@diskcirc{\setbox\@picbox=\hbox{\circlefont\char\count@}\@xdim=\wd\@picbox + \leavevmode \ifdim\@len>15.499\@xdim \@bigdc \else \@smalldc\fi} +\def\@bigdc{\ifnum\count@<'160 \@bigcirc + \else \@len=15\@xdim \@diskcirc\fi} +\def\@smalldc{{\advance\@len-.5\@xdim + \loop\ifdim\@xdim<\@len \advance\count@\@ne \advance\@xdim\wd\@picbox\repeat + \hbox{\circlefont\char\count@}}} +\def\@bigcirc{{\circlefont\count@=15 + \setbox\@picbox=\hbox{\char\count@}\@xdim=\wd\@picbox + \ifdim\@len>2.5\@xdim \@len=2.5\@xdim\fi + \advance\@len-.125\wd\@picbox + \loop\ifdim\@xdim<\@len \advance\count@ 4 \advance\@xdim.25\wd\@picbox\repeat + \@ydim=.5\@xdim \advance\@ydim.5\linethickness + \setbox\@picbox=\vbox{\hbox{\char\count@\advance\count@-3\char\count@}% + \nointerlineskip + \hbox{\advance\count@\m@ne\char\count@\advance\count@\m@ne\char\count@}}% + \kern-\@ydim\lower\@ydim\box\@picbox}} + +\newif\ifovaltl \newif\ifovaltr \newif\ifovalbl \newif\ifovalbr +\ovaltltrue \ovaltrtrue \ovalbltrue \ovalbrtrue +\def\oval(#1,#2){\@xdim=#1\unitlength \@ydim=#2\unitlength + {\circlefont \setbox\@picbox=\hbox{\char0} + \ifdim\@xdim<\wd\@picbox \@xdim=\wd\@picbox\fi + \ifdim\@ydim<\wd\@picbox \@ydim=\wd\@picbox\fi + \@save=\@xdim \ifdim\@ydim<\@save \@save=\@ydim \fi + \count@=39 + \loop \setbox\@picbox=\hbox{\char\count@}\ifdim\@save<\wd\@picbox + \advance\count@-4 \repeat + \setbox\strutbox=\hbox{\vrule height\ht\@picbox depth\dp\@picbox width\z@ + \kern\wd\@picbox}% + \@save=.5\wd\@picbox \advance\@save-.5\linethickness + \setbox0=\hbox to\@xdim{\ifovaltl\char\count@\else\strut\fi + \kern-\@save\leaders\hrule height\ifovaltl\linethickness\else\z@\fi\hfil + \leaders\hrule height\ifovaltr\linethickness\else\z@\fi\hfil\kern\@save + \ifovaltr\advance\count@-3\char\count@\else\strut\fi\kern-\wd\@picbox}% + \advance\count@\m@ne + \setbox2=\hbox to\@xdim{\ifovalbl\char\count@\else\strut\fi + \kern-\@save\leaders\hrule height\ifovalbl\linethickness\else\z@\fi\hfil + \leaders\hrule height\ifovalbr\linethickness\else\z@\fi\hfil\kern\@save + \ifovalbr\advance\count@\m@ne\char\count@\else\strut\fi\kern-\wd\@picbox}% + \@save=\@ydim \advance\@save-\wd\@picbox \divide\@save 2 + \setbox\@picbox=\vbox{\box0\nointerlineskip + \hbox to\@xdim{\vrule height\@save width\ifovaltl\linethickness\else\z@\fi + \hfil\ifovaltr\vrule width\linethickness\kern-\linethickness\fi}% + \nointerlineskip + \hbox to\@xdim{\vrule height\@save width\ifovalbl\linethickness\else\z@\fi + \hfil\ifovalbr\vrule width\linethickness\kern-\linethickness\fi}% + \nointerlineskip\box2}% + \@save=.5\@ydim \advance\@save.5\linethickness \leavevmode + \kern-.5\@xdim \kern-.5\linethickness \lower\@save\box\@picbox}} + +% ============================================================ + +%% More picture environment tags, output by fig2dev + + +%% The framebox tag was missing in DEK's code. Below is a copy from +%% the 1994/06/01 version of ltboxes.dtx. Actually, we need only the +%% \@framepicbox tag. + +% \DescribeMacro\framebox +% |\framebox| ... : like |\makebox|, except it puts a `frame' around +% the box. The frame is made of lines of thickness +% |\fboxrule|, separated by space |\fboxsep| from the +% text -- except for |\framebox(X,Y)| ... , where the +% thickness of the lines is as for the picture environment, +% and there is no separation added. + +\def\framebox(#1,#2){% + \@ifnextchar[{\@framebox(#1,#2)}{\@framebox(#1,#2)[]}% ] (Emacs) + } +\long\def\@framebox(#1,#2)[#3]#4{% + \frame{\makebox(#1,#2)[#3]{#4}}} + +\long\def\frame#1{% + \leavevmode + \hbox{% + \hskip-\linethickness + \vbox{% + \vskip-\linethickness + \hrule height\linethickness + \hbox{% + \vrule width\linethickness + #1% + \vrule width\linethickness}% + \hrule height\linethickness + \vskip -\linethickness}% + \hskip -\linethickness}} + + +%% The dashbox tag was also missing. We copy it from ltpictur.dtx, +%% 1994/05/22 v1.0e LaTeX Kernel (Picture Mode). The (missing) +%% indentation is from there, not introduced by me. Sorry, but this +%% must be emphasized. + +% \@wholewidth -> \linethickness +% \@makepicbox -> \makebox + +\xfig@newdimen\@dashdim +\xfig@newbox\@dashbox +\xfig@newcount\@dashcnt + +\def\@whilenoop#1{} +\def\@whilenum#1\do #2{\ifnum #1\relax #2\relax\@iwhilenum{#1\relax + #2\relax}\fi} +\def\@iwhilenum#1{\ifnum #1\let\@nextwhile\@iwhilenum + \else\let\@nextwhile\@whilenoop\fi\@nextwhile{#1}} + +\def\dashbox#1(#2,#3){\leavevmode\hbox to\z@{\baselineskip \z@skip +\lineskip \z@skip +\@dashdim #2\unitlength +\@dashcnt \@dashdim \advance\@dashcnt 200 +\@dashdim #1\unitlength\divide\@dashcnt \@dashdim +\ifodd\@dashcnt\@dashdim \z@ +\advance\@dashcnt \@ne \divide\@dashcnt \tw@ +\else \divide\@dashdim \tw@ \divide\@dashcnt \tw@ +\advance\@dashcnt \m@ne +\setbox\@dashbox \hbox{\vrule height \@halfwidth depth \@halfwidth +width \@dashdim}\put(0,0){\copy\@dashbox}% +\put(0,#3){\copy\@dashbox}% +\put(#2,0){\hskip-\@dashdim\copy\@dashbox}% +\put(#2,#3){\hskip-\@dashdim\box\@dashbox}% +\multiply\@dashdim \thr@@ +\fi +\setbox\@dashbox \hbox{\vrule height \@halfwidth depth \@halfwidth +width #1\unitlength\hskip #1\unitlength}\count@\z@ +\put(0,0){\hskip\@dashdim \@whilenum \count@ <\@dashcnt +\do{\copy\@dashbox\advance\count@ \@ne }}\count@\z@ +\put(0,#3){\hskip\@dashdim \@whilenum \count@ <\@dashcnt +\do{\copy\@dashbox\advance\count@ \@ne }}% +\@dashdim #3\unitlength +\@dashcnt \@dashdim \advance\@dashcnt 200 +\@dashdim #1\unitlength\divide\@dashcnt \@dashdim +\ifodd\@dashcnt \@dashdim \z@ +\advance\@dashcnt \@ne \divide\@dashcnt \tw@ +\else +\divide\@dashdim \tw@ \divide\@dashcnt \tw@ +\advance\@dashcnt \m@ne +\setbox\@dashbox\hbox{\hskip -\@halfwidth +\vrule width \linethickness +height \@dashdim}\put(0,0){\copy\@dashbox}% +\put(#2,0){\copy\@dashbox}% +\put(0,#3){\lower\@dashdim\copy\@dashbox}% +\put(#2,#3){\lower\@dashdim\copy\@dashbox}% +\multiply\@dashdim \thr@@ +\fi +\setbox\@dashbox\hbox{\vrule width \linethickness +height #1\unitlength}\count@\z@ +\put(0,0){\hskip -\@halfwidth \vbox{\@whilenum \count@ <\@dashcnt +\do{\vskip #1\unitlength\copy\@dashbox\advance\count@ \@ne }% +\vskip\@dashdim}}\count@\z@ +\put(#2,0){\hskip -\@halfwidth \vbox{\@whilenum \count@<\@dashcnt +\do{\vskip #1\unitlength\copy\@dashbox\advance\count@ \@ne }% +\vskip\@dashdim}}}\makebox(#2,#3)} + + +% ============================================================ + +%% Then we must supply the LaTeX tags that are inserted by fig2dev. + +% \setlength is the LaTeX PC way of setting a register. +\def\setlength#1#2{#1=#2\relax} + +% -------------------------------------------------- + +% \makeatletter is called to access private macros in the \SetFigFont +% definition. Since we never expand that definition, we could ignore +% the catcode change. But we should not define a macro with a nonsense +% name... +\ifx \makeatletter\undefined + \def\makeatletter{\catcode`\@=11 } % <-- Space +\fi + +% -------------------------------------------------- + +% The real hassle in that macro file is the font switch code. Once +% there was an interface, in transfig 2.1.7 & 2.1.8: A macro named +% \SetFigFont was used to select the type for texts. The macro +% definition itself is written by fig2dev, it is part of the figure +% code. +% +% Then transfig 3 was released and the interface disappeared. There's +% still the macro \SetFigFont and the macro definition is still +% written by fig2dev, but it may be defined with 3 arguments or with 5 +% arguments, one cannot determine what's used. The second form is used +% when NFSS is added to the defines of fig2dev and should be the +% default. (After all, LaTeX2e subsumed NFSS.) The first form must be +% used for LaTeX 2.09 w/OFSS. +% +% \SetFigFont is not defined if it is defined already when the figure +% code is read. OK, one might think, let's define a plain TeX version. +% (Actually, xfig.tex up to revision 1.3 did so.) But which interface +% shall we use for our definition? In a typical installation one has +% old documents with xfig pictures that were created with an old +% fig2dev, we must therefore support the three-arg-variant. Newly +% created figures will use the five-arg-variant, though. There is no +% obvious way to determine which variant will be used in the +% respective figure. + +% Please note that the information above -- and the one below about +% the actual possible interfaces of \SetFigFont -- was determined by +% looking at the output of example files and the code in setfigfont.c +% and texfonts.h, as not even the comments in these files got updated +% when the new \SetFigFont interface was introduced. (Sigh.) +% +% The changes were not even marked in the list of changes, I learned +% about them when folks from the Net sent me complaints about revision +% 1.1 of xfig.tex. (I hadn't installed xfig 3 at this time.) +% +% Do I really have to tell you what I think about these kinds of +% changes, in terms of software quality? (Don't ask me when I'm in a +% bad mood if you want polite answers.) + +% Well, here's the solution: As told above, I've analyzed the possible +% expansions of \SetFigFont. I'll define macros for every cseq that's +% in the expansion, one of these macros will bind \SetFigFont to +% \SetFigFontOFSS or \SetFigFontNFSS, respectively. Let's have a look: +% +% OFSS: evaluates \@setsize. This macro has supposed to have 4 +% arguments (type, baselineskip, font-setup, font-setup). Then the +% type specifier is evaluated by a \csname. Passing nothing there will +% effectively be a nop. +% +% NFSS: The \SetFigfont expansion uses more cseqs, but is more +% regular, too. We may supply empty expansions for everything that +% shall setup the font parameters: \reset@font, \fontsize (2 args), +% \fontfamily & \fontseries & \fontshape (each 1 arg). Then +% \selectfont is evaluated, here we bind the appropriate expansion of +% \SetFigFont. + +% Now we may setup the macro definitions, evaluate one pseudo +% \SetFigFont and \SetFigFont will be bound to the correct expansion. +% +% The first argument must be a number, as the OFSS \SetFigFont version +% assigns it to a count register. +\def\xfig@bindSetFigFont{% + % OFSS + \def\@setsize##1##2##3##4{\let\SetFigFont\SetFigFontOFSS}% + % NFSS + \let\reset@font\relax + \def\fontsize##1##2{}% + \def\fontfamily##1{}% + \def\fontseries##1{}% + \def\fontshape##1{}% + \def\selectfont{\let\SetFigFont\SetFigFontNFSS}% + % Now bind correct \SetFigFont by evaluating \SetFigFont. + \SetFigFont{0}{}{}{}{}% + } + +% -------------------------------------------------- + +% The interface of \SetFigFontOFSS: +% #1 is the size (w/o pt), +% #2 the baselineskip (w/o pt), +% #3 a plain TeX type specifier. +% If #3 is empty we assume that a default font should be taken. +% This default font can be named by \FigFontDefault. Note, that +% this parameter is not empty if you choose the font `Default' in +% xfig. You have to chang texfonts.h accordingly. I did it +% already for 2.1.7 and sent the diffs to the maintainer, but +% obviously he dumped them since they did not appear in 3.x. +% +% It's a pity, that we can't use the plain TeX type specifier. We +% demand an appropriate font scaled to the correct size. This is not +% the best solution, but nowadays most DVI drivers generate the fonts on +% the fly anyhow. + +\def\FigFontDefault{cmr10} +\def\FigFontType{\FigFontDefault\space} +\def\FigFontTyperm{cmr10} +\def\FigFontTypebf{cmbx10} +\def\FigFontTypeit{cmti10} +\def\FigFontTypesf{cmss10} +\def\FigFontTypett{cmtt10} +\def\SetFigFontOFSS#1#2#3{% + \font\FigFont \csname FigFontType#3\endcsname\space at #1pt + \FigFont + \baselineskip #2pt\relax + } + +% The interface of \SetFigFontNFSS: +% #1 is the size (w/o pt), +% #2 the baselineskip (w/o pt), +% #3 the NFSS font family (as a cseq), +% #4 the NFSS font series (as a cseq), and +% #5 the NFSS font shape (as a cseq). +% +% The current font state is reset before the arguments take effect. +% The call to \SetFigFont doesn't use the full possibilities of NFSS; +% only fixed combinations of arguments are supplied, as xfig itself +% knows only about a fixed set of fonts (default, roman, bold, italic, +% sans serif, and typewriter). + +% We map that interface back to the one of \SetFigFontOFSS. To do that +% we redefine the NFSS font specifiers locally to create plain TeX +% font specifiers. That's mostly easy, medium density (`md') series +% and upright (`up') shape are ignored in plain anyhow. The default is +% explicitely specified by \familydefault, we don't need to infer it. +% But there is one exception: bold is specified as `roman bold', ie, +% as `rmbf'. For that exception we just define a new FigFontType macro. + +\def\FigFontTypermbf{\FigFontTypebf} +\def\SetFigFontNFSS#1#2#3#4#5{% + \begingroup + \let\familydefault\empty + \def\rmdefault{rm}% + \def\sfdefault{sf}% + \def\ttdefault{tt}% + \let\mddefault\empty + \def\bfdefault{bf}% + \let\updefault\empty + \def\itdefault{it}% + \xdef\FigFontSpec{#3#4#5}% + \endgroup + \SetFigFontOFSS{#1}{#2}{\FigFontSpec}% + } + +% -------------------------------------------------- + +% Environments are enclosed in \begin{foo} ... \end{foo}. +% I don't check if the call is ok -- this file is specific for +% machine-generated code, that shall be correct by definition. +% +% We need to setup the correct \SetFigFont binding, as explained above. +% And let's evaluate a hook to enable document specific adaptions. + +\def\begin#1{% + \begingroup + \def\end##1{% + \csname end##1\endcsname + \endgroup + }% + \xfig@bindSetFigFont + \csname #1Hook\endcsname + \csname begin#1\endcsname + } + + +% ============================================================ + +\catcode`\@=\CatAtCode + +\endinput + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% $Log: xfig.tex,v $ +% Revision 1.4 1995/05/07 16:52:05 schrod +% Determine \SetFigFont variant automatically. \OldXfig is not +% looked at any more, \SetFigFontOld and \SetFigFontNew are renamed to +% \SetFigFontOFSS and \SetFigFontNFSS. +% +% Revision 1.3 1995/04/17 00:01:08 schrod +% Don't allocate registers anew if xfig.tex is read in the second +% time. +% +% Revision 1.2 1995/03/16 01:15:51 schrod +% Support output of transfig 3.1.1. +% +% Revision 1.1 1995/03/13 23:18:15 schrod +% Started to manage this package with CVS. Made minor code cleanup. +% + +% 94-06-10 js Initial revision. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Local Variables: +mode: plain-tex +TeX-master: t +TeX-brace-indent-level: 4 +page-delimiter: "^% ==*$" +End: diff --git a/Master/texmf-dist/tex/plain/kdgreek/greek.tex b/Master/texmf-dist/tex/plain/kdgreek/greek.tex new file mode 100644 index 00000000000..db5745d5802 --- /dev/null +++ b/Master/texmf-dist/tex/plain/kdgreek/greek.tex @@ -0,0 +1,366 @@ +% +% GREEK.TEX +% --------- +% +% K J Dryllerakis +% +% Dec 7, 1992 +% +% VERSION: 3.1 +% +% This is the source file for building the greek format for the +% kd fsmily of fonts. +% Note that PLAIN.TEX must exist and bare a fmtversion 3.0 or +% higher (to ensure existence of language definitions). +% Greek is defined to be language 1 or actually last_language+1. +% +% Pleaaaaaaaaase don't modify this file +% +% Note: Used in conjunction with KD Fonts +% Load the standard macro package +\input plain +% +\message{Greek Definitions:} +% +\message{general definitions,} +% +\catcode`\@=11 % We will access TeX private macros +\newwrite\@screen % Define a screen ouput +\def\showstring#1{\immediate\write\@screen{#1}} +\def\sp@{ }\def\sp@s{\sp@\sp@\sp@\sp@\sp@\sp@\sp@\sp@\sp@} +\def\c@p{\showstring{}\showstring{\sp@s\sp@s\sp@s GreekTeX -- Version 3.1}% +\showstring{\sp@s\sp@s\sp@s ---------------------------} +\showstring{\sp@s GreekTeX is a macro package for typesetting greek texts.} +\showstring{\sp@s It is maily compatible with the haralambous package,} +\showstring{\sp@s from which it inherits the top level macros.} +\showstring{\sp@s GreekTeX includes easy access to font families, a choise} +\showstring{\sp@s of delimiters, and makes typesetting scientific papers} +\showstring{\sp@s in greek as easy as in TeX itself.} +\showstring{\sp@s} +\showstring{\sp@s\sp@s\sp@s Copyright K J Dryllerakis 1991-1992} +\showstring{\sp@s\sp@s\sp@s ------------------------------}% +} +\c@p +% +% A List of Reserved Keywords that should not be redefined +% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +% +% a. accesible from the document +% +% \| The character | +% \begingreek Begin a group of greek text +% \endgreek End a group of greek text +% \greek A new language definition +% \gr switch to classical greek font +% \gbf switch to classical boldface font +% \git switch to classical italics font +% \gsl switch to classical slanted font +% \gtt switch to classical typewritter font +% \gt Greater than > symbol +% \lt Less than < symbol +% \math If we are using $ as del. it is equiv to $ +% \setgreek Select greek mode to be the primary mode +% \setlatin Restore standard mode (at any stage) +% \showstring Log a string on the terminal +% +% b. Internal Control Sequences +% +% \gr@@kdelimsbar Use | as begin- and end-greek +% \gr@@kdelimsdol Use $ as begin- and end-greek +% \@ldend A copy of plain TeX's \end +% \@screen Screen Output for messages +% \t@f@nt Remembers greek font used last +% \t@f@m Remembers greek family used last +% \t@size Remembers greek point size used last +% \c@p Product Copyright Notice +% \grfam Greek classic font family register +% \grslfam Greek slanted font family register +% \grttfam Greek typewriter font family register +% \grbffam Greek boldface font family register +% \grifam Greek italics font family register +% \l@tinm@de Definition to restore plain TeX's mode +% +% Start Up Definitions +% -------------------- +% +\ifx\gr@@kformatloaded\relax\catcode`\@=\active + \endinput\else\let\gr@@kformatloaded\relax\fi +\newif\ifdelimsbar\delimsbarfalse % Check for | as delimiter +\chardef\|=`\| % A way to access | +\gdef\t@f@nt{\tengr} % Remember font used last +\gdef\t@size{\grtenpoint} % Remember size used last +\gdef\t@f@m{\fam\grfam} % Remember family used last +% ^ THESE ARE INITIAL VALUES. DO NOT ALTER! +\newlanguage\greek % Define Greek as a new language +\def\lt{<} % Remember Less than +\def\gt{>} % and greater than signs +\language0 % Switch to default language +% +\message{fonts,} +% +% Greek Font Bits +% _______________ +% +% First we load the greek fonts and declare the families +% Then we define point sizes for typesetting greek texts +% +% Classic Greek Family +% ^^^^^^^^^^^^^^^^^^^^ +\newfam\grfam +\font\tengr=kdgr10 % 10 point Classic Greek Font +\font\ninegr=kdgr9 % 9 point Classic Greek Font +\font\eightgr=kdgr8 % 8 point Classic Greek Font +\font\sixgr=kdgr8 at 6truept % 6 point simulated Classic Greek (x.75) +\def\gr{\tengr\fam\grfam} +% +% Slanted Greek Family +% ^^^^^^^^^^^^^^^^^^^^ +\newfam\grslfam +\font\tengrsl=kdsl10 % 10 Point Slanted Greek Font +\font\ninegrsl=kdsl10 at 9truept% 9 point (sim.) Slanted Greek +\font\eightgrsl=kdsl10 at 8truept%8 point (sim.) Slanted Greek +\def\gsl{\tengrsl\fam\grslfam} +% +% Boldface Greek Family +% ^^^^^^^^^^^^^^^^^^^^^ +\newfam\grbffam +\font\tengrbf=kdbf10 % 10 Point Boldface Greek Font +\font\ninegrbf=kdbf9 % 9 Point Boldface Greek +\font\eightgrbf=kdbf8 % 8 Point (sim.) Boldface Greek +\def\gbf{\tengrbf\fam\grbffam} +% +% Italic Greek Family +% ^^^^^^^^^^^^^^^^^^^ +\newfam\grifam +\font\tengri=kdti10 % 10 Point Italic Greek Font +\font\ninegri=kdti10 at 9truept % 9 Point (sim.) Italic Greek +\font\eightgri=kdti10 at 8truept% 8 Point (sim.) Italic Greek +\def\git{\tengri\fam\grifam} +% +% Typerwriter Greek Family +% ^^^^^^^^^^^^^^^^^^^^^^^^ +\newfam\grttfam +\font\tengrtt=kdtt10 % 10 Point Typewritter Greek Font +\font\ninegrtt=kdtt10 at 9truept% 9 Point (sim.) Typewritter Greek +\font\eightgrtt=kdtt10 at 8truept% 8 Point (sim.) Typewritter Greek +\hyphenchar\eightgrtt=-1 \hyphenchar\tengrtt=-1 +\hyphenchar\ninegrtt=-1 % Supress Hyphenation +\def\gtt{\tengrtt\fam\grttfam} +% +% Greek Point Size Conventions +% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +% +\def\grtenpoint{% GREEK TENPOINT +\gdef\t@size{\grtenpoint}% Make a note of the font size +\textfont\grfam=\tengr\scriptfont\grfam=\eightgr\scriptscriptfont\grfam=\sixgr% +\textfont\grbffam=\tengrbf\scriptfont\grbffam=\ninegrbf% +\textfont\grifam=\tengri\scriptfont\grbffam=\ninegri% +\textfont\grttfam=\tengrtt% +\textfont\grslfam=\tengrsl% +\def\gr{\fam\grfam\tengr}% Switch for classic greek +\let\rg\gr% Also rg for compatibility +\def\it{\fam\grifam\tengri}% Switch for Greek Italics +\def\sl{\fam\grslfam\tengrsl}% Switch for Greek Slanted +\def\tt{\fam\grttfam\tengrtt}% Switch for Greek Typerwriter +\def\bf{\fam\grbffam\tengrbf}% Switch for Greek Boldface +\let\git\it\let\gsl\sl% +\let\gbf\bf\let\gtt\tt% Retain LaTeX compatibility +\def\rm{\fam0\tenrm}% Switch For latin roman +\def\lit{\fam\itfam\tenit}% Switch for latin italics +\def\lsl{\fam\slfam\tensl}% Switch for latin slanted +\def\ltt{\fam\ttfam\tentt}% Switch for latin typewriter +\def\lbf{\fam\bffam\tenbf}% Switch for latin boldface +\normalbaselineskip=.6cm% Normal Base Line distance +\setbox\strutbox=\hbox{\vrule height8.5pt width0pt depth4.5pt}% +\normalbaselines\gr% +} +\def\grninepoint{% GREEK NINEPOINT +\gdef\t@size{\grninepoint}% Make a note of the font size +\textfont\grfam=\ninegr\scriptfont\grfam=\eightgr\scriptscriptfont\grfam=\sixgr% +\textfont\grbffam=\ninegrbf\scriptfont\grbffam=\eightgrbf% +\textfont\grifam=\ninegri\scriptfont\grbffam=\eightgri% +\textfont\grttfam=\ninegrtt% +\textfont\grslfam=\ninegrsl% +\def\gr{\fam\grfam\ninegr}% Switch for classic greek +\let\rg\gr% Also rg for compatibility +\def\it{\fam\grifam\ninegri}% Switch for Greek Italics +\def\sl{\fam\grslfam\ninegrsl}% Switch for Greek Slanted +\def\tt{\fam\grttfam\ninegrtt}% Switch for Greek Typerwriter +\def\bf{\fam\grbffam\ninegrbf}% Switch for Greek Boldface +\let\git\it\let\gsl\sl% +\let\gbf\bf\let\gtt\tt% Retain LaTeX compatibility +\def\rm{\fam0\tenrm}% Switch For latin roman +\def\lit{\fam\itfam\nineit}% Switch for latin italics +\def\lsl{\fam\slfam\ninesl}% Switch for latin slanted +\def\ltt{\fam\ttfam\ninett}% Switch for latin typewriter +\def\lbf{\fam\bffam\ninebf}% Switch for latin boldface +\normalbaselineskip=.52cm% Normal Base Line distance +\setbox\strutbox=\hbox{\vrule height8pt width0pt depth3pt}% +\normalbaselines\gr% +} +\def\greightpoint{% GREEK EIGHTPOINT +\gdef\t@size{\greightpoint}% Make a note of the font size +\textfont\grfam=\eightgr\scriptfont\grfam=\sixgr\scriptscriptfont\grfam=\sixgr% +\textfont\grbffam=\eightgrbf\scriptfont\grbffam=\eightgrbf% +\textfont\grifam=\eightgri\scriptfont\grbffam=\eightgri% +\textfont\grttfam=\eightgrtt% +\textfont\grslfam=\eightgrsl% +\def\gr{\fam\grfam\eightgr}% Switch for classic greek +\let\rg\gr% Also rg for compatibility +\def\it{\fam\grifam\eightgri}% Switch for Greek Italics +\def\sl{\fam\grslfam\eightgrsl}% Switch for Greek Slanted +\def\tt{\fam\grttfam\eightgrtt}% Switch for Greek Typerwriter +\def\bf{\fam\grbffam\eightgrbf}% Switch for Greek Boldface +\let\git\it\let\gsl\sl% +\let\gbf\bf\let\gtt\tt% Retain LaTeX compatibility +\def\rm{\fam0\eightrm}% Switch For latin roman +\def\lit{\fam\itfam\eightit}% Switch for latin italics +\def\lsl{\fam\slfam\eightsl}% Switch for latin slanted +\def\ltt{\fam\ttfam\eighttt}% Switch for latin typewriter +\def\lbf{\fam\bffam\eightbf}% Switch for latin boldface +\normalbaselineskip=.35cm% Normal Base Line distance +\setbox\strutbox=\hbox{\vrule height7pt width0pt depth2pt}% +\normalbaselines\gr% +} +% +% Hyphenation Patterns +% ^^^^^^^^^^^^^^^^^^^^ +\message{hyphenation,} +% +{\language\greek +\lefthyphenmin=2 \righthyphenmin=2 % disallow x- or -x breaks +\def\lt{<}% +\def\gt{>}% +\catcode`\|=11% +\catcode`\<=11% +\catcode`\>=11% +\catcode`\'=11% +\catcode`\~=11% +\catcode`\"=11% +\lccode`\<=`\<% +\lccode`\>=`\>% +\lccode`\'=`\'% +\lccode`\~=`\~% +\lccode`\"=`\"% +\lccode`\|=`\|% +% +\input grkhyphen% +\catcode`\~=13% +} +% +\def\showgreekhyphens#1{{\setbox0\vbox{\parfillskip\z@skip\hsize\maxdimen% +\language\greek\tengr\pretolerance\m@ne\hbadness0\showboxdepth0\ #1}}} +% +% +\message{miscellaneous macros} +% +% Macros For entering greek mode, +% and delimiter preferences. +% ------------------------------- +% +% \begingreek : Begin a group of Greek Text. +% ^^^^^^^^^^^^ Everything is enclosed in a group to keep +% changes local. Then we switch to greek hyphenation +% and iniciate the greekmode. This assigns the correct +% \catcode values to punctuation and accentuation marks. +% We then reload the information of the point +% size used last and switch to the family needed. +% The \t@f@nt and \t@f@m macro is used to ensure that +% or fonts and families are remembered. +% +% \endgreek : Ends a group of Greek Text. +% ^^^^^^^^^^ Before ending the group we save information +% about the current font, to be used when we re-enter +% greek mode. +% +% \gr@@km@de : Switches to greek interpretation of ascii characters +% ^^^^^^^^^^^ Normally changes are kept local but can be used +% as a general macro to obtain a global greek mode. +% Note the different use of | if this is chosen +% to be a delimiter. +% +\def\begingreek{\bgroup\language\greek\gr@@km@de% +\t@size\t@f@m\t@f@nt\ignorespaces} +% +\def\endgreek{\xdef\t@f@nt{\the\font}\xdef\t@f@m{\noexpand\fam\the\fam}\egroup} +% +\def\gr@@km@de{% +\ifdelimsbar\else\catcode`\|=11\fi% +\catcode`\<=11% Turn Everything to letters! +\catcode`\>=11% All accents are done through ligatures +\catcode`\'=11% +\catcode`\`=11% +\catcode`\~=11% +\catcode`\"=11% +\lccode`\<=`\<% +\lccode`\>=`\>% +\lccode`\'=`\'% +\lccode`\~=`\~% +\lccode`\"=`\"% +} +% +\def\l@tinm@de{% +\catcode`\|=12% +\catcode`\<=12% Turn Everything to what plain tex has +\catcode`\>=12% +\catcode`\'=12% +\catcode`\`=12% +\catcode`\~=13% +\catcode`\"=12% +\catcode`\$=3% % Restore the math symbol! +} +% +% Switch Permenantly do greek mode +% +\def\setgreek{\delimsbarfalse\gr@@km@de\language\greek} +% +% and to latin as well +% +\def\setlatin{\l@tinm@de\language0} +% +% It is very frequent that the user will ask to \end the document +% before a greek group was closed. In order to prevent this we +% redefine the \end command after saving the old one in \@ldend. +% The new \end checks for un-ended greek groups and if it is found +% a warning message is issued and the group is automatically closed. +% +\let\@ldend=\end +\gdef\end{\ifnum\language=\greek\endgreek% +\showstring{GreekTeX Warning: A group of greek text was automatically closed}% +\fi\@ldend} +% +% Since it is possible that switching from one language to +% the other is very frequent, a special way to avoid \begingreek +% and \endgreek is defined. This is done through the definition of +% delimiters; available delims are | and $. If \greekdelims{bar} +% is chosen then a greek block is marked as | ..greek text.. | +% In order to access |, use \|. +% If $ is used, use \math for math mode and \math\math for +% display mode. +% +\gdef\greekdelims#1{\edef\c@mp@re{#1}\def\t@st@a{bar}\def\t@st@b{dollar}% +\ifx\c@mp@re\t@st@a\gr@@kdelimsbar\else% +\ifx\c@mp@re\t@st@b\gr@@kdelimsdol\fi\fi} +% +% Bar as delimeter +% +{\catcode`\|=13\gdef\gr@@kdelimsbar{\catcode`\|=13\delimsbartrue% +\def|{\ifnum\language=\greek\endgreek\else\begingreek\fi}} +} +% +% Dollar as delimiter +% +\let\m@thm@de=$ +{\catcode`\$=13% +\gdef\gr@@kdelimsdol{\catcode`\$=13% +\def${\ifnum\language=\greek\endgreek\else\begingreek\fi}% +\global\let\math=\m@thm@de% +\gdef\display{\math\math}\gdef\enddisplay{\math\math}}% +} +% +\catcode`\@=12 % at signs are no longer letters +% +\def\fmtname{greek}\def\fmtversion{3.1} % identifies the current format + +\message{version \fmtversion .)} + diff --git a/Master/texmf-dist/tex/plain/kdgreek/greektex.tex b/Master/texmf-dist/tex/plain/kdgreek/greektex.tex new file mode 100644 index 00000000000..1a801c26926 --- /dev/null +++ b/Master/texmf-dist/tex/plain/kdgreek/greektex.tex @@ -0,0 +1,329 @@ +% +% GREEKTEX.TEX +% --------- +% +% K J Dryllerakis +% +% Dec 7, 1992 +% +% VERSION: 3.1 +% +% This is the macro file for GreekTeX. If this file is used +% and not the greek.tex (FMT) no hyphenation patterns for greek +% are loaded. IT can be used for short greek text inside english text. +% Note that PLAIN must be preloaded and bare a fmtversion 3.0 or +% higher (to ensure existence of language definitions). +% Greek is defined to be language 1 or actually last_language+1. +% +% Pleaaaaaaaaase don't modify this file +% +% Note: Used in conjunction with KD Fonts +% +\catcode`\@=11 % We will access TeX private macros +\newwrite\@screen % Define a screen ouput +\def\showstring#1{\immediate\write\@screen{#1}} +\def\sp@{ }\def\sp@s{\sp@\sp@\sp@\sp@\sp@\sp@\sp@\sp@\sp@} +\def\c@p{\showstring{}\showstring{\sp@s\sp@s\sp@s GreekTeX -- Version 3.1}% +\showstring{\sp@s\sp@s\sp@s ---------------------------} +\showstring{\sp@s GreekTeX is a macro package for typesetting greek texts.} +\showstring{\sp@s It is maily compatible with the haralambous package,} +\showstring{\sp@s from which it inherits the top level macros.} +\showstring{\sp@s GreekTeX includes easy access to font families, a choise} +\showstring{\sp@s of delimiters, and makes typesetting scientific papers} +\showstring{\sp@s in greek as easy as in TeX itself.} +\showstring{\sp@s} +\showstring{\sp@s\sp@s\sp@s Copyright K J Dryllerakis 1991-1992} +\showstring{\sp@s\sp@s\sp@s ------------------------------}% +} +\c@p +% +% A List of Reserved Keywords that should not be redefined +% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +% +% a. accesible from the document +% +% \| The character | +% \begingreek Begin a group of greek text +% \endgreek End a group of greek text +% \greek A new language definition +% \gr switch to classical greek font +% \gbf switch to classical boldface font +% \git switch to classical italics font +% \gsl switch to classical slanted font +% \gtt switch to classical typewritter font +% \gt Greater than > symbol +% \lt Less than < symbol +% \math If we are using $ as del. it is equiv to $ +% \setgreek Select greek mode to be the primary mode +% \setlatin Restore standard mode (at any stage) +% \showstring Log a string on the terminal +% +% b. Internal Control Sequences +% +% \gr@@kdelimsbar Use | as begin- and end-greek +% \gr@@kdelimsdol Use $ as begin- and end-greek +% \@ldend A copy of plain TeX's \end +% \@screen Screen Output for messages +% \t@f@nt Remembers greek font used last +% \t@f@m Remembers greek family used last +% \t@size Remembers greek point size used last +% \c@p Product Copyright Notice +% \grfam Greek classic font family register +% \grslfam Greek slanted font family register +% \grttfam Greek typewriter font family register +% \grbffam Greek boldface font family register +% \grifam Greek italics font family register +% \l@tinm@de Definition to restore plain TeX's mode +% +% Start Up Definitions +% -------------------- +% +\ifx\gr@@kformatloaded\relax\catcode`\@=\active + \endinput\else\let\gr@@kformatloaded\relax\fi +\newif\ifdelimsbar\delimsbarfalse % Check for | as delimiter +\chardef\|=`\| % A way to access | +\gdef\t@f@nt{\tengr} % Remember font used last +\gdef\t@size{\grtenpoint} % Remember size used last +\gdef\t@f@m{\fam\grfam} % Remember family used last +% ^ THESE ARE INITIAL VALUES. DO NOT ALTER! +\newlanguage\greek % Define Greek as a new language +\def\lt{<} % Remember Less than +\def\gt{>} % and greater than signs +\language0 % Switch to default language +% +% Greek Font Bits +% _______________ +% +% First we load the greek fonts and declare the families +% Then we define point sizes for typesetting greek texts +% +% Classic Greek Family +% ^^^^^^^^^^^^^^^^^^^^ +\newfam\grfam +\font\tengr=kdgr10 % 10 point Classic Greek Font +\font\ninegr=kdgr9 % 9 point Classic Greek Font +\font\eightgr=kdgr8 % 8 point Classic Greek Font +\font\sixgr=kdgr8 at 6truept % 6 point simulated Classic Greek (x.75) +\def\gr{\tengr\fam\grfam} +% +% Slanted Greek Family +% ^^^^^^^^^^^^^^^^^^^^ +\newfam\grslfam +\font\tengrsl=kdsl10 % 10 Point Slanted Greek Font +\font\ninegrsl=kdsl10 at 9truept% 9 point (sim.) Slanted Greek +\font\eightgrsl=kdsl10 at 8truept%8 point (sim.) Slanted Greek +\def\gsl{\tengrsl\fam\grslfam} +% +% Boldface Greek Family +% ^^^^^^^^^^^^^^^^^^^^^ +\newfam\grbffam +\font\tengrbf=kdbf10 % 10 Point Boldface Greek Font +\font\ninegrbf=kdbf9 % 9 Point Boldface Greek +\font\eightgrbf=kdbf8 % 8 Point Boldface Greek +\def\gbf{\tengrbf\fam\grbffam} +% +% Italic Greek Family +% ^^^^^^^^^^^^^^^^^^^ +\newfam\grifam +\font\tengri=kdti10 % 10 Point Italic Greek Font +\font\ninegri=kdti10 at 9truept % 9 Point (sim.) Italic Greek +\font\eightgri=kdti10 at 8truept% 8 Point (sim.) Italic Greek +\def\git{\tengri\fam\grifam} +% +% Typerwriter Greek Family +% ^^^^^^^^^^^^^^^^^^^^^^^^ +\newfam\grttfam +\font\tengrtt=kdtt10 % 10 Point Typewritter Greek Font +\font\ninegrtt=kdtt10 at 9truept% 9 Point (sim.) Typewritter Greek +\font\eightgrtt=kdtt10 at 8truept% 8 Point (sim.) Typewritter Greek +\hyphenchar\eightgrtt=-1 \hyphenchar\tengrtt=-1 +\hyphenchar\ninegrtt=-1 % Supress Hyphenation +\def\gtt{\tengrtt\fam\grttfam} +% +% Greek Point Size Conventions +% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +% +\def\grtenpoint{% GREEK TENPOINT +\gdef\t@size{\grtenpoint}% Make a note of the font size +\textfont\grfam=\tengr\scriptfont\grfam=\eightgr\scriptscriptfont\grfam=\sixgr% +\textfont\grbffam=\tengrbf\scriptfont\grbffam=\ninegrbf% +\textfont\grifam=\tengri\scriptfont\grbffam=\ninegri% +\textfont\grttfam=\tengrtt% +\textfont\grslfam=\tengrsl% +\def\gr{\fam\grfam\tengr}% Switch for classic greek +\let\rg\gr% Also rg for compatibility +\def\it{\fam\grifam\tengri}% Switch for Greek Italics +\def\sl{\fam\grslfam\tengrsl}% Switch for Greek Slanted +\def\tt{\fam\grttfam\tengrtt}% Switch for Greek Typerwriter +\def\bf{\fam\grbffam\tengrbf}% Switch for Greek Boldface +\let\git\it\let\gsl\sl% +\let\gbf\bf\let\gtt\tt% Retain LaTeX compatibility +\def\rm{\fam0\tenrm}% Switch For latin roman +\def\lit{\fam\itfam\tenit}% Switch for latin italics +\def\lsl{\fam\slfam\tensl}% Switch for latin slanted +\def\ltt{\fam\ttfam\tentt}% Switch for latin typewriter +\def\lbf{\fam\bffam\tenbf}% Switch for latin boldface +\normalbaselineskip=.6cm% Normal Base Line distance +\setbox\strutbox=\hbox{\vrule height8.5pt width0pt depth4.5pt}% +\normalbaselines\gr% +} +\def\grninepoint{% GREEK NINEPOINT +\gdef\t@size{\grninepoint}% Make a note of the font size +\textfont\grfam=\ninegr\scriptfont\grfam=\eightgr\scriptscriptfont\grfam=\sixgr% +\textfont\grbffam=\ninegrbf\scriptfont\grbffam=\eightgrbf% +\textfont\grifam=\ninegri\scriptfont\grbffam=\eightgri% +\textfont\grttfam=\ninegrtt% +\textfont\grslfam=\ninegrsl% +\def\gr{\fam\grfam\ninegr}% Switch for classic greek +\let\rg\gr% Also rg for compatibility +\def\it{\fam\grifam\ninegri}% Switch for Greek Italics +\def\sl{\fam\grslfam\ninegrsl}% Switch for Greek Slanted +\def\tt{\fam\grttfam\ninegrtt}% Switch for Greek Typerwriter +\def\bf{\fam\grbffam\ninegrbf}% Switch for Greek Boldface +\let\git\it\let\gsl\sl% +\let\gbf\bf\let\gtt\tt% Retain LaTeX compatibility +\def\rm{\fam0\tenrm}% Switch For latin roman +\def\lit{\fam\itfam\nineit}% Switch for latin italics +\def\lsl{\fam\slfam\ninesl}% Switch for latin slanted +\def\ltt{\fam\ttfam\ninett}% Switch for latin typewriter +\def\lbf{\fam\bffam\ninebf}% Switch for latin boldface +\normalbaselineskip=.52cm% Normal Base Line distance +\setbox\strutbox=\hbox{\vrule height8pt width0pt depth3pt}% +\normalbaselines\gr% +} +\def\greightpoint{% GREEK EIGHTPOINT +\gdef\t@size{\greightpoint}% Make a note of the font size +\textfont\grfam=\eightgr\scriptfont\grfam=\sixgr\scriptscriptfont\grfam=\sixgr% +\textfont\grbffam=\eightgrbf\scriptfont\grbffam=\eightgrbf% +\textfont\grifam=\eightgri\scriptfont\grbffam=\eightgri% +\textfont\grttfam=\eightgrtt% +\textfont\grslfam=\eightgrsl% +\def\gr{\fam\grfam\eightgr}% Switch for classic greek +\let\rg\gr% Also rg for compatibility +\def\it{\fam\grifam\eightgri}% Switch for Greek Italics +\def\sl{\fam\grslfam\eightgrsl}% Switch for Greek Slanted +\def\tt{\fam\grttfam\eightgrtt}% Switch for Greek Typerwriter +\def\bf{\fam\grbffam\eightgrbf}% Switch for Greek Boldface +\let\git\it\let\gsl\sl% +\let\gbf\bf\let\gtt\tt% Retain LaTeX compatibility +\def\rm{\fam0\eightrm}% Switch For latin roman +\def\lit{\fam\itfam\eightit}% Switch for latin italics +\def\lsl{\fam\slfam\eightsl}% Switch for latin slanted +\def\ltt{\fam\ttfam\eighttt}% Switch for latin typewriter +\def\lbf{\fam\bffam\eightbf}% Switch for latin boldface +\normalbaselineskip=.35cm% Normal Base Line distance +\setbox\strutbox=\hbox{\vrule height7pt width0pt depth2pt}% +\normalbaselines\gr% +} +% +% Macros For entering greek mode, +% and delimiter preferences. +% ------------------------------- +% +% \begingreek : Begin a group of Greek Text. +% ^^^^^^^^^^^^ Everything is enclosed in a group to keep +% changes local. Then we switch to greek hyphenation +% and iniciate the greekmode. This assigns the correct +% \catcode values to punctuation and accentuation marks. +% We then reload the information of the point +% size used last and switch to the family needed. +% The \t@f@nt and \t@f@m macro is used to ensure that +% or fonts and families are remembered. +% +% \endgreek : Ends a group of Greek Text. +% ^^^^^^^^^^ Before ending the group we save information +% about the current font, to be used when we re-enter +% greek mode. +% +% \gr@@km@de : Switches to greek interpretation of ascii characters +% ^^^^^^^^^^^ Normally changes are kept local but can be used +% as a general macro to obtain a global greek mode. +% Note the different use of | if this is chosen +% to be a delimiter. +% +\def\begingreek{\bgroup\language\greek\gr@@km@de% +\t@size\t@f@m\t@f@nt\ignorespaces} +% +\def\endgreek{\xdef\t@f@nt{\the\font}\xdef\t@f@m{\noexpand\fam\the\fam}\egroup} +% +\def\gr@@km@de{% +\ifdelimsbar\else\catcode`\|=11\fi% +\catcode`\<=11% Turn Everything to letters! +\catcode`\>=11% All accents are done through ligatures +\catcode`\'=11% +\catcode`\`=11% +\catcode`\~=11% +\catcode`\"=11% +\lccode`\<=`\<% +\lccode`\>=`\>% +\lccode`\'=`\'% +\lccode`\~=`\~% +\lccode`\"=`\"% +} +% +\def\l@tinm@de{% +\catcode`\|=12% +\catcode`\<=12% Turn Everything to what plain tex has +\catcode`\>=12% +\catcode`\'=12% +\catcode`\`=12% +\catcode`\~=13% +\catcode`\"=12% +\catcode`\$=3% % Restore the math symbol! +} +% +% Switch Permenantly do greek mode +% +\def\setgreek{\delimsbarfalse\gr@@km@de\language\greek} +% +% and to latin as well +% +\def\setlatin{\l@tinm@de\language0} +% +% It is very frequent that the user will ask to \end the document +% before a greek group was closed. In order to prevent this we +% redefine the \end command after saving the old one in \@ldend. +% The new \end checks for un-ended greek groups and if it is found +% a warning message is issued and the group is automatically closed. +% +\let\@ldend=\end +\gdef\end{\ifnum\language=\greek\endgreek% +\showstring{GreekTeX Warning: A group of greek text was automatically closed}% +\fi\@ldend} +% +% Since it is possible that switching from one language to +% the other is very frequent, a special way to avoid \begingreek +% and \endgreek is defined. This is done through the definition of +% delimiters; available delims are | and $. If \greekdelims{bar} +% is chosen then a greek block is marked as | ..greek text.. | +% In order to access |, use \|. +% If $ is used, use \math for math mode and \math\math for +% display mode. +% +\gdef\greekdelims#1{\edef\c@mp@re{#1}\def\t@st@a{bar}\def\t@st@b{dollar}% +\ifx\c@mp@re\t@st@a\gr@@kdelimsbar\else% +\ifx\c@mp@re\t@st@b\gr@@kdelimsdol\fi\fi} +% +% Bar as delimeter +% +{\catcode`\|=13\gdef\gr@@kdelimsbar{\catcode`\|=13\delimsbartrue% +\def|{\ifnum\language=\greek\endgreek\else\begingreek\fi}} +} +% +% Dollar as delimiter +% +\let\m@thm@de=$ +{\catcode`\$=13% +\gdef\gr@@kdelimsdol{\catcode`\$=13% +\def${\ifnum\language=\greek\endgreek\else\begingreek\fi}% +\global\let\math=\m@thm@de% +\gdef\display{\math\math}\gdef\enddisplay{\math\math}}% +} +% +\catcode`\@=12 % at signs are no longer letters +% +\def\fmtname{greek}\def\fmtversion{3.1} % identifies the current format + +\endinput + + diff --git a/Master/texmf-dist/tex/plain/kdgreek/grkhyphen.tex b/Master/texmf-dist/tex/plain/kdgreek/grkhyphen.tex new file mode 100644 index 00000000000..38880ecc1ab --- /dev/null +++ b/Master/texmf-dist/tex/plain/kdgreek/grkhyphen.tex @@ -0,0 +1,1181 @@ +% +% +% Hyphenation patterns for modern greek language +% ********************************************** +% +\patterns{% +.>a4 +.>'a4 +.>~a4 +.<a4 +.<'a4 +.<~a4 +.'a4 +.>e4 +.>'e4 +.>~e4 +.<e4 +.<'e4 +.<~e4 +.'e4 +.>h4 +.>'h4 +.>~h4 +.<h4 +.<'h4 +.<~h4 +.'h4 +.>i4 +.>'i4 +.>~i4 +.<i4 +.<'i4 +.<~i4 +.'i4 +.>o4 +.>'o4 +.>~o4 +.<o4 +.<'o4 +.<~o4 +.'o4 +.<u4 +.<'u4 +.<~u4 +.'u4 +.>w4 +.>'w4 +.>~w4 +.<w4 +.<'w4 +.<~w4 +.'w4 +a1 +a2i +a2'i +a2~i +a2>i +a2>'i +a2>~i +a2<i +a2<'i +a2<~i +'a3i +a3" +a2u +a2'u +a2~u +a2>u +a2>'u +a2>~u +a2<u +a2<'u +a2<~u +'a3u +e1 +e2i +e2'i +e2~i +e2>i +e2>'i +e2>~i +e2<i +e2<'i +e2<~i +'e3i +e3" +e2u +e2'u +e2~u +e2>u +e2>'u +e2>~u +e2<u +e2<'u +e2<~u +'e3u +h1 +h2u +h2'u +h2~u +h2>u +h2>'u +h2>~u +h2<u +h2<'u +h2<~u +'h3u +h3" +i1 +i2a +i2'a +i2~a +'i3a +~i3a +u2'a +i2e +i2'e +'i3e +~i3e +u2'e +i2o +i2'o +'i3o +~i3o +u2'o +i2w +i2'w +i2~w +'i3w +~i3w +u2'w +'4' +''4' +''4> +''4< +'''a4 +''>a'4 +''<a'4 +''>~a4 +''<~a4 +'''e4 +'''>e'4 +'''<e'4 +'''h4 +''>h'4 +''<h'4 +''>~h4 +''<~h4 +'''i4 +''>i'4 +''<i'4 +''>~i4 +''<~i4 +'''o4 +''>o'4 +''<o'4 +'''u4 +''>u'4 +''<u'4 +''>~u4 +''<~u4 +'''w4 +''>w'4 +''<w'4 +''>~w4 +''<~w4 +o1 +o2i +o2'i +o2~i +o2>i +o2>'i +o2>~i +o2<i +o2<'i +o2<~i +'o3i +o3" +o2u +o2'u +o2~u +o2>u +o2>'u +o2>~u +o2<u +o2<'u +o2<~u +'o3u +u1 +u2i +u2'i +u2~i +u2>i +u2>'i +u2>~i +u2<i +u2<'i +u2<~i +u3" +w1 +~a3i +~a3u +~h3u +a1b +a1g +a1d +a1z +a1j +a1k +a1l +a1m +a1n +a1x +a1p +a1r +a1s +a1t +a1f +a1q +a1y +e1b +e1g +e1d +e1z +e1j +e1k +e1l +e1m +e1n +e1x +e1p +e1r +e1s +e1t +e1f +e1q +e1y +h1b +h1g +h1d +h1z +h1j +h1k +h1l +h1m +h1n +h1x +h1p +h1r +h1s +h1t +h1f +h1q +h1y +i1b +i1g +i1d +i1z +i1j +i1k +i1l +i1m +i1n +i1x +i1p +i1r +i1s +i1t +i1f +i1q +i1y +o1b +o1g +o1d +o1z +o1j +o1k +o1l +o1m +o1n +o1x +o1p +o1r +o1s +o1t +o1f +o1q +o1y +u1b +u1g +u1d +u1z +u1j +u1k +u1l +u1m +u1n +u1x +u1p +u1r +u1s +u1t +u1f +u1q +u1y +w1b +w1g +w1d +w1z +w1j +w1k +w1l +w1m +w1n +w1x +w1p +w1r +w1s +w1t +w1f +w1q +w1y +2b1b +2b1z +2b1j +2b1k +2b1m +2b1n +2b1x +2b1s +2b1t +2b1f +2b1q +2b1y +2g1b +2g1g +2g1z +2g1j +2g1m +2g1x +2g1s +2g1t +2g1f +2g1q +2g1y +2d1b +2d1g +2d1d +2d1z +2d1j +2d1k +2d1l +2d1m +2d1n +2d1x +2d1p +2d1s +2d1t +2d1f +2d1q +2d1y +2z1b +2z1g +2z1d +2z1z +2z1j +2z1k +2z1l +2z1m +2z1n +2z1x +2z1p +2z1r +2z1s +2z1t +2z1f +2z1q +2z1y +2j1b +2j1g +2j1d +2j1z +2j1j +2j1k +2j1m +2j1n +2j1x +2j1p +2j1s +2j1t +2j1f +2j1q +2j1y +2k1b +2k1g +2k1d +2k1z +2k1j +2k1k +2k1m +2k1n +2k1x +2k1p +2k1s +2k1f +2k1q +2k1y +2l1b +2l1g +2l1d +2l1z +2l1j +2l1k +2l1l +2l1m +2l1n +2l1x +2l1p +2l1r +2l1s +2l1t +2l1f +2l1q +2l1y +2m1b +2m1g +2m1d +2m1z +2m1j +2m1k +2m1l +2m1m +2m1x +2m1r +2m1s +2m1t +2m1f +2m1q +2m1y +2n1b +2n1g +2n1d +2n1z +2n1j +2n1k +2n1l +2n1m +2n1n +2n1x +2n1p +2n1r +2n1s +2n1f +2n1q +2n1y +2x1b +2x1g +2x1d +2x1z +2x1j +2x1k +2x1l +2x1m +2x1n +2x1x +2x1p +2x1r +2x1s +2x1t +2x1f +2x1q +2x1y +2p1b +2p1g +2p1d +2p1z +2p1j +2p1k +2p1m +2p1x +2p1p +2p1s +2p1f +2p1q +2p1y +2r1b +2r1g +2r1d +2r1z +2r1j +2r1k +2r1l +2r1m +2r1n +2r1x +2r1p +2r1r +2r1s +2r1t +2r1f +2r1q +2r1y +2s1b +2s1d +2s1z +sj2m +2s1l +2s1n +2s1x +2s1r +2s1s +2s1y +2t1b +2t1g +2t1d +2t1z +2t1j +2t1k +2t1l +2t1m +2t1n +2t1x +2t1p +2t1t +2t1f +2t1q +2t1y +2f1b +2f1g +2f1d +2f1z +2f1k +2f1m +2f1n +2f1x +2f1p +2f1s +2f1f +2f1y +2q1b +2q1g +2q1d +2q1z +2q1j +2q1k +2q1m +2q1n +2q1x +2q1p +2q1s +2q1f +2q1q +2q1y +2y1b +2y1g +2y1d +2y1z +2y1j +2y1k +2y1l +2y1m +2y1n +2y1x +2y1p +2y1r +2y1s +2y1t +2y1f +2y1q +2y1y +a1"'i +e1"'i +o1"'i +a1"'u +e1"'u +o1"'u +h1"'u +a1"~1 +e1"~i +o1"~i +a1"~u +e1"~u +o1"~u +h1"~u +4'a. +4~a. +4'e. +4~e. +4'h. +4~h. +4'i. +4~i. +4'u. +4~u. +4'o. +4~o. +4'w. +4~w. +4'aa. +4'ab. +4'ag. +4'ad. +4'ae. +4'az. +4'ah. +4'aj. +4'ai. +4'ak. +4'al. +4'am. +4'an. +4'ax. +4'ao. +4'ap. +4'ar. +4'ac. +4'at. +4'au. +4'af. +4'aq. +4'ay. +4'aw. +4'ea. +4'eb. +4'eg. +4'ed. +4'ee. +4'ez. +4'eh. +4'ej. +4'ei. +4'ek. +4'el. +4'em. +4'en. +4'ex. +4'eo. +4'ep. +4'er. +4'ec. +4'et. +4'eu. +4'ef. +4'eq. +4'ey. +4'ew. +4'ha. +4'hb. +4'hg. +4'hd. +4'he. +4'hz. +4'hh. +4'hj. +4'hi. +4'hk. +4'hl. +4'hm. +4'hn. +4'hx. +4'ho. +4'hp. +4'hr. +4'hc. +4'ht. +4'hu. +4'hf. +4'hq. +4'hy. +4'hw. +4'ia. +4'ib. +4'ig. +4'id. +4'ie. +4'iz. +4'ih. +4'ij. +4'ii. +4'ik. +4'il. +4'im. +4'in. +4'ix. +4'io. +4'ip. +4'ir. +4'ic. +4'it. +4'iu. +4'if. +4'iq. +4'iy. +4'iw. +} +\endinput +% Problem on number of patterns on TeX's memory! +4'oa. +4'ob. +4'og. +4'od. +4'oe. +4'oz. +4'oh. +4'oj. +4'oi. +4'ok. +4'ol. +4'om. +4'on. +4'ox. +4'oo. +4'op. +4'or. +4'oc. +4'ot. +4'ou. +4'of. +4'oq. +4'oy. +4'ow. +4'ua. +4'ub. +4'ug. +4'ud. +4'ue. +4'uz. +4'uh. +4'uj. +4'ui. +4'uk. +4'ul. +4'um. +4'un. +4'ux. +4'uo. +4'up. +4'ur. +4'uc. +4'ut. +4'uu. +4'uf. +4'uq. +4'uy. +4'uw. +4'wa. +4'wb. +4'wg. +4'wd. +4'we. +4'wz. +4'wh. +4'wj. +4'wi. +4'wk. +4'wl. +4'wm. +4'wn. +4'wx. +4'wo. +4'wp. +4'wr. +4'wc. +4'wt. +4'wu. +4'wf. +4'wq. +4'wy. +4'ww. +4~aa. +4~ab. +4~ag. +4~ad. +4~ae. +4~az. +4~ah. +4~aj. +4~ai. +4~ak. +4~al. +4~am. +4~an. +4~ax. +4~ao. +4~ap. +4~ar. +4~ac. +4~at. +4~au. +4~af. +4~aq. +4~ay. +4~aw. +4~ha. +4~hb. +4~hg. +4~hd. +4~he. +4~hz. +4~hh. +4~hj. +4~hi. +4~hk. +4~hl. +4~hm. +4~hn. +4~hx. +4~ho. +4~hp. +4~hr. +4~hc. +4~ht. +4~hu. +4~hf. +4~hq. +4~hy. +4~hw. +4~ia. +4~ib. +4~ig. +4~id. +4~ie. +4~iz. +4~ih. +4~ij. +4~ii. +4~ik. +4~il. +4~im. +4~in. +4~ix. +4~io. +4~ip. +4~ir. +4~ic. +4~it. +4~iu. +4~if. +4~iq. +4~iy. +4~iw. +4~ua. +4~ub. +4~ug. +4~ud. +4~ue. +4~uz. +4~uh. +4~uj. +4~ui. +4~uk. +4~ul. +4~um. +4~un. +4~ux. +4~uo. +4~up. +4~ur. +4~uc. +4~ut. +4~uu. +4~uf. +4~uq. +4~uy. +4~uw. +4~wa. +4~wb. +4~wg. +4~wd. +4~we. +4~wz. +4~wh. +4~wj. +4~wi. +4~wk. +4~wl. +4~wm. +4~wn. +4~wx. +4~wo. +4~wp. +4~wr. +4~wc. +4~wt. +4~wu. +4~wf. +4~wq. +4~wy. +4~ww. +4a'a. +4b'a. +4g'a. +4d'a. +4e'a. +4z'a. +4h'a. +4j'a. +4i'a. +4k'a. +4l'a. +4m'a. +4n'a. +4x'a. +4o'a. +4p'a. +4r'a. +4s'a. +4t'a. +4u'a. +4f'a. +4q'a. +4y'a. +4w'a. +4a'e. +4b'e. +4g'e. +4d'e. +4e'e. +4z'e. +4h'e. +4j'e. +4i'e. +4k'e. +4l'e. +4m'e. +4n'e. +4x'e. +4o'e. +4p'e. +4r'e. +4s'e. +4t'e. +4u'e. +4f'e. +4q'e. +4y'e. +4w'e. +4a'h. +4b'h. +4g'h. +4d'h. +4e'h. +4z'h. +4h'h. +4j'h. +4i'h. +4k'h. +4l'h. +4m'h. +4n'h. +4x'h. +4o'h. +4p'h. +4r'h. +4s'h. +4t'h. +4u'h. +4f'h. +4q'h. +4y'h. +4w'h. +4a'i. +4b'i. +4g'i. +4d'i. +4e'i. +4z'i. +4h'i. +4j'i. +4i'i. +4k'i. +4l'i. +4m'i. +4n'i. +4x'i. +4o'i. +4p'i. +4r'i. +4s'i. +4t'i. +4u'i. +4f'i. +4q'i. +4y'i. +4w'i. +4a'o. +4b'o. +4g'o. +4d'o. +4e'o. +4z'o. +4h'o. +4j'o. +4i'o. +4k'o. +4l'o. +4m'o. +4n'o. +4x'o. +4o'o. +4p'o. +4r'o. +4s'o. +4t'o. +4u'o. +4f'o. +4q'o. +4y'o. +4w'o. +4a'u. +4b'u. +4g'u. +4d'u. +4e'u. +4z'u. +4h'u. +4j'u. +4i'u. +4k'u. +4l'u. +4m'u. +4n'u. +4x'u. +4o'u. +4p'u. +4r'u. +4s'u. +4t'u. +4u'u. +4f'u. +4q'u. +4y'u. +4w'u. +4a'w. +4b'w. +4g'w. +4d'w. +4e'w. +4z'w. +4h'w. +4j'w. +4i'w. +4k'w. +4l'w. +4m'w. +4n'w. +4x'w. +4o'w. +4p'w. +4r'w. +4s'w. +4t'w. +4u'w. +4f'w. +4q'w. +4y'w. +4w'w. +4a~a. +4b~a. +4g~a. +4d~a. +4e~a. +4z~a. +4h~a. +4j~a. +4i~a. +4k~a. +4l~a. +4m~a. +4n~a. +4x~a. +4o~a. +4p~a. +4r~a. +4s~a. +4t~a. +4u~a. +4f~a. +4q~a. +4y~a. +4w~a. +4a~h. +4b~h. +4g~h. +4d~h. +4e~h. +4z~h. +4h~h. +4j~h. +4i~h. +4k~h. +4l~h. +4m~h. +4n~h. +4x~h. +4o~h. +4p~h. +4r~h. +4s~h. +4t~h. +4u~h. +4f~h. +4q~h. +4y~h. +4w~h. +4a~i. +4b~i. +4g~i. +4d~i. +4e~i. +4z~i. +4h~i. +4j~i. +4i~i. +4k~i. +4l~i. +4m~i. +4n~i. +4x~i. +4o~i. +4p~i. +4r~i. +4s~i. +4t~i. +4u~i. +4f~i. +4q~i. +4y~i. +4w~i. +4a~u. +4b~u. +4g~u. +4d~u. +4e~u. +4z~u. +4h~u. +4j~u. +4i~u. +4k~u. +4l~u. +4m~u. +4n~u. +4x~u. +4o~u. +4p~u. +4r~u. +4s~u. +4t~u. +4u~u. +4f~u. +4q~u. +4y~u. +4w~u. +4a~w. +4b~w. +4g~w. +4d~w. +4e~w. +4z~w. +4h~w. +4j~w. +4i~w. +4k~w. +4l~w. +4m~w. +4n~w. +4x~w. +4o~w. +4p~w. +4r~w. +4s~w. +4t~w. +4u~w. +4f~w. +4q~w. +4y~w. +4w~w. +} +\endinput + + diff --git a/Master/texmf-dist/tex/plain/kurier/kurier-math.tex b/Master/texmf-dist/tex/plain/kurier/kurier-math.tex new file mode 100644 index 00000000000..1e8cf5654d4 --- /dev/null +++ b/Master/texmf-dist/tex/plain/kurier/kurier-math.tex @@ -0,0 +1,251 @@ +\catcode`@=11 +% roman text +\font\seventeenrm= rm-kurierr at17.28pt +\font\fourteenrm= rm-kurierr at14.4pt +\font\twelverm= rm-kurierr at12pt +\font\elevenrm= rm-kurierr at11pt +\font\tenrm= rm-kurierr +\font\ninerm= rm-kurierr at9pt +\font\eightrm= rm-kurierr at8pt +\font\sevenrm= rm-kurierr at7pt +\font\sixrm= rm-kurierr at6pt +\font\fiverm= rm-kurierr at5pt +% math italic +\font\seventeeni= mi-kurierri at17.28pt +\font\fourteeni= mi-kurierri at14.4pt +\font\twelvei= mi-kurierri at12pt +\font\eleveni= mi-kurierri at11pt +\font\teni= mi-kurierri +\font\ninei= mi-kurierri at9pt +\font\eighti= mi-kurierri at8pt +\font\seveni= mi-kurierri at7pt +\font\sixi= mi-kurierri at6pt +\font\fivei= mi-kurierri at5pt +% math symbols +\font\seventeensy= sy-kurierrz at17.28pt +\font\fourteensy= sy-kurierrz at14.4pt +\font\twelvesy= sy-kurierrz at12pt +\font\elevensy= sy-kurierrz at11pt +\font\tensy= sy-kurierrz +\font\ninesy= sy-kurierrz at9pt +\font\eightsy= sy-kurierrz at8pt +\font\sevensy= sy-kurierrz at7pt +\font\sixsy= sy-kurierrz at6pt +\font\fivesy= sy-kurierrz at5pt +% math extension +\font\seventeenex= ex-kurierr at17.28pt +\font\fourteenex= ex-kurierr at14.4pt +\font\twelveex= ex-kurierr at12pt +\font\elevenex= ex-kurierr at11pt +\font\tenex= ex-kurierr +\font\nineex= ex-kurierr at9pt +\font\eightex= ex-kurierr at8pt +\font\sevenex= ex-kurierr at7pt +\font\sixex= ex-kurierr at6pt +\font\fiveex= ex-kurierr at5pt +% boldface +\font\seventeenbf= qx-kurierb at17.28pt +\font\fourteenbf= qx-kurierb at14.4pt +\font\twelvebf= qx-kurierb at12pt +\font\elevenbf= qx-kurierb at11pt +\font\tenbf= qx-kurierb +\font\ninebf= qx-kurierb at9pt +\font\eightbf= qx-kurierb at8pt +\font\sevenbf= qx-kurierb at7pt +\font\sixbf= qx-kurierb at6pt +\font\fivebf= qx-kurierb at5pt +% typewriter +\font\seventeentt= qx-lmtt12 at17.28pt +\font\fourteentt= qx-lmtt12 at14.4pt +\font\twelvett= qx-lmtt12 +\font\eleventt= qx-lmtt10 at11pt +\font\tentt= qx-lmtt10 +\font\ninett= qx-lmtt9 +\font\eighttt= qx-lmtt8 +\font\seventt= qx-lmtt8 at7pt +\font\sixtt= qx-lmtt8 at6pt +\font\fivett= qx-lmtt8 at5pt +% text italic +\font\seventeenit= qx-kurierri at17.28pt +\font\fourteenit= qx-kurierri at14.4pt +\font\twelveit= qx-kurierri at12pt +\font\elevenit= qx-kurierri at11pt +\font\tenit= qx-kurierri +\font\nineit= qx-kurierri at9pt +\font\eightit= qx-kurierri at8pt +\font\sevenit= qx-kurierri at7pt +\font\sixit= qx-kurierri at6pt +\font\fiveit= qx-kurierri at5pt +% +\skewchar\seventeeni='177 \skewchar\fourteeni='177 \skewchar\twelvei='177 +\skewchar\eleveni='177 \skewchar\teni='177 \skewchar\ninei='177 +\skewchar\eighti='177 \skewchar\seveni='177 \skewchar\sixi='177 +\skewchar\fivei='177 +\skewchar\seventeensy='60 \skewchar\fourteensy='60 \skewchar\twelvesy='60 +\skewchar\elevensy='60 \skewchar\tensy='60 \skewchar\ninesy='60 +\skewchar\eightsy='60 \skewchar\sevensy='60 \skewchar\sixsy='60 +\skewchar\fivesy='60 +% +\let\usereightpointmacro=\relax +\def\eightpoint{\let\pointsize=\eightpoint + \textfont0=\eightrm \scriptfont0=\sixrm \scriptscriptfont0=\fiverm + \def\rm{\fam\z@\eightrm}% + \textfont1=\eighti \scriptfont1=\sixi \scriptscriptfont1=\fivei + \def\mit{\fam\@ne}\def\oldstyle{\fam\@ne\eighti}% + \textfont2=\eightsy \scriptfont2=\sixsy \scriptscriptfont2=\fivesy + \def\cal{\fam\tw@}% + \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex + \textfont\itfam=\eightit + \def\it{\fam\itfam\eightit}% + \textfont\bffam=\eightbf \scriptfont\bffam=\sixbf + \scriptscriptfont\bffam=\fivebf + \def\bf{\fam\bffam\eightbf}% + \textfont\ttfam=\eighttt \def\tt{\fam\ttfam\eighttt}% + \def\big##1{{\hbox{$\left##1\vbox to8.5\p@{}\right.\n@space$}}}% + \def\Big##1{{\hbox{$\left##1\vbox to11.5\p@{}\right.\n@space$}}}% + \def\bigg##1{{\hbox{$\left##1\vbox to14.5\p@{}\right.\n@space$}}}% + \def\Bigg##1{{\hbox{$\left##1\vbox to17.5\p@{}\right.\n@space$}}}% + \setnormalsp@cing \usereightpointmacro} +% +\let\userninepointmacro=\relax +\def\ninepoint{\let\pointsize=\ninepoint + \textfont0=\ninerm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm + \def\rm{\fam\z@\ninerm}% + \textfont1=\ninei \scriptfont1=\seveni \scriptscriptfont1=\fivei + \def\mit{\fam\@ne}\def\oldstyle{\fam\@ne\ninei}% + \textfont2=\ninesy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy + \def\cal{\fam\tw@}% + \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex + \textfont\itfam=\nineit + \def\it{\fam\itfam\nineit}% + \textfont\bffam=\ninebf \scriptfont\bffam=\sevenbf + \scriptscriptfont\bffam=\fivebf + \def\bf{\fam\bffam\ninebf}% + \textfont\ttfam=\ninett \def\tt{\fam\ttfam\ninett}% + \def\big##1{{\hbox{$\left##1\vbox to8.5\p@{}\right.\n@space$}}}% + \def\Big##1{{\hbox{$\left##1\vbox to11.5\p@{}\right.\n@space$}}}% + \def\bigg##1{{\hbox{$\left##1\vbox to14.5\p@{}\right.\n@space$}}}% + \def\Bigg##1{{\hbox{$\left##1\vbox to17.5\p@{}\right.\n@space$}}}% + \setnormalsp@cing \userninepointmacro} +% +\let\usertenpointmacro=\relax +\def\tenpoint{\let\pointsize=\tenpoint + \textfont0=\tenrm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm + \def\rm{\fam\z@\tenrm}% + \textfont1=\teni \scriptfont1=\seveni \scriptscriptfont1=\fivei + \def\mit{\fam\@ne}\def\oldstyle{\fam\@ne\teni}% + \textfont2=\tensy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy + \def\cal{\fam\tw@}% + \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex + \textfont\itfam=\tenit + \def\it{\fam\itfam\tenit}% + \textfont\bffam=\tenbf \scriptfont\bffam=\sevenbf + \scriptscriptfont\bffam=\fivebf + \def\bf{\fam\bffam\tenbf}% + \textfont\ttfam=\tentt \def\tt{\fam\ttfam\tentt}% + \def\big##1{{\hbox{$\left##1\vbox to8.5\p@{}\right.\n@space$}}}% + \def\Big##1{{\hbox{$\left##1\vbox to11.5\p@{}\right.\n@space$}}}% + \def\bigg##1{{\hbox{$\left##1\vbox to14.5\p@{}\right.\n@space$}}}% + \def\Bigg##1{{\hbox{$\left##1\vbox to17.5\p@{}\right.\n@space$}}}% + \setnormalsp@cing \usertenpointmacro} +% +\let\userelevenpointmacro=\relax +\def\elevenpoint{\let\pointsize=\elevenpoint + \textfont0=\elevenrm \scriptfont0=\eightrm \scriptscriptfont0=\fiverm + \def\rm{\fam\z@\elevenrm}% + \textfont1=\eleveni \scriptfont1=\eighti \scriptscriptfont1=\fivei + \def\mit{\fam\@ne}\def\oldstyle{\fam\@ne\eleveni}% + \textfont2=\elevensy \scriptfont2=\eightsy \scriptscriptfont2=\fivesy + \def\cal{\fam\tw@}% + \textfont3=\elevenex \scriptfont3=\elevenex \scriptscriptfont3=\elevenex% + \textfont\itfam=\elevenit + \def\it{\fam\itfam\elevenit}% + \textfont\bffam=\elevenbf \scriptfont\bffam=\eightbf + \scriptscriptfont\bffam=\fivebf + \def\bf{\fam\bffam\elevenbf}% + \textfont\ttfam=\eleventt \def\tt{\fam\ttfam\eleventt}% + \def\big##1{{\hbox{$\left##1\vbox to9.3\p@{}\right.\n@space$}}}% + \def\Big##1{{\hbox{$\left##1\vbox to12.6\p@{}\right.\n@space$}}}% + \def\bigg##1{{\hbox{$\left##1\vbox to16\p@{}\right.\n@space$}}}% + \def\Bigg##1{{\hbox{$\left##1\vbox to19.2\p@{}\right.\n@space$}}}% + \setnormalsp@cing \userelevenpointmacro} +% +\let\usertwelvepointmacro=\relax +\def\twelvepoint{\let\pointsize=\twelvepoint + \textfont0=\twelverm \scriptfont0=\ninerm \scriptscriptfont0=\sixrm + \def\rm{\fam\z@\twelverm}% + \textfont1=\twelvei \scriptfont1=\ninei \scriptscriptfont1=\sixi + \def\mit{\fam\@ne}\def\oldstyle{\fam\@ne\twelvei}% + \textfont2=\twelvesy \scriptfont2=\ninesy \scriptscriptfont2=\sixsy + \def\cal{\fam\tw@}% + \textfont3=\twelveex \scriptfont3=\twelveex \scriptscriptfont3=\twelveex% + \textfont\itfam=\twelveit + \def\it{\fam\itfam\twelveit}% + \textfont\bffam=\twelvebf \scriptfont\bffam=\ninebf + \scriptscriptfont\bffam=\sixbf + \def\bf{\fam\bffam\twelvebf}% + \textfont\ttfam=\twelvett \def\tt{\fam\ttfam\twelvett}% + \def\big##1{{\hbox{$\left##1\vbox to10.2\p@{}\right.\n@space$}}}% + \def\Big##1{{\hbox{$\left##1\vbox to13.8\p@{}\right.\n@space$}}}% + \def\bigg##1{{\hbox{$\left##1\vbox to17.4\p@{}\right.\n@space$}}}% + \def\Bigg##1{{\hbox{$\left##1\vbox to21\p@{}\right.\n@space$}}}% + \setnormalsp@cing \usertwelvepointmacro} +% +\let\userfourteenpointmacro=\relax +\def\fourteenpoint{\let\pointsize=\fourteenpoint + \textfont0=\fourteenrm \scriptfont0=\tenrm \scriptscriptfont0=\sevenrm + \def\rm{\fam\z@\fourteenrm}% + \textfont1=\fourteeni \scriptfont1=\teni \scriptscriptfont1=\seveni + \def\mit{\fam\@ne}\def\oldstyle{\fam\@ne\fourteeni}% + \textfont2=\fourteensy \scriptfont2=\tensy \scriptscriptfont2=\sevensy + \def\cal{\fam\tw@}% + \textfont3=\fourteenex \scriptfont3=\fourteenex \scriptscriptfont3=\fourteenex% + \textfont\itfam=\fourteenit + \def\it{\fam\itfam\fourteenit}% + \textfont\bffam=\fourteenbf \scriptfont\bffam=\tenbf + \scriptscriptfont\bffam=\sixbf + \def\bf{\fam\bffam\fourteenbf}% + \textfont\ttfam=\fourteentt \def\tt{\fam\ttfam\fourteentt}% + \def\big##1{{\hbox{$\left##1\vbox to11.9\p@{}\right.\n@space$}}}% + \def\Big##1{{\hbox{$\left##1\vbox to16.1\p@{}\right.\n@space$}}}% + \def\bigg##1{{\hbox{$\left##1\vbox to20.3\p@{}\right.\n@space$}}}% + \def\Bigg##1{{\hbox{$\left##1\vbox to24.5\p@{}\right.\n@space$}}}% + \setnormalsp@cing \userfourteenpointmacro} +% +\newcount\antttext \antttext=10 +\let\userseventeenpointmacro=\relax +\def\seventeenpoint{\let\pointsize=\seventeenpoint + \textfont0=\seventeenrm \scriptfont0=\twelverm \scriptscriptfont0=\ninerm + \textfont1=\seventeeni \scriptfont1=\twelvei \scriptscriptfont1=\ninei + \def\mit{\fam\@ne}\def\oldstyle{\fam\@ne\seventeeni}% + \textfont2=\seventeensy \scriptfont2=\twelvesy \scriptscriptfont2=\ninesy + \def\cal{\fam\tw@}% + \textfont3=\seventeenex \scriptfont3=\seventeenex \scriptscriptfont3=\seventeenex% + \textfont\itfam=\seventeenit + \textfont\bffam=\seventeenbf \scriptfont\bffam=\twelvebf + \scriptscriptfont\bffam=\ninebf + \textfont\ttfam=\seventeentt + \def\rm{\fam\z@\seventeenrm}% + \def\bf{\fam\bffam\seventeenbf}% + \def\it{\fam\itfam\seventeenit}% + \def\tt{\fam\ttfam\seventeentt}% + \def\big##1{{\hbox{$\left##1\vbox to15.3\p@{}\right.\n@space$}}}% + \def\Big##1{{\hbox{$\left##1\vbox to20.7\p@{}\right.\n@space$}}}% + \def\bigg##1{{\hbox{$\left##1\vbox to26.1\p@{}\right.\n@space$}}}% + \def\Bigg##1{{\hbox{$\left##1\vbox to31.5\p@{}\right.\n@space$}}}% + \setnormalsp@cing \userseventeenpointmacro} +% +\newtoks\baselinefactor \baselinefactor={1.2} +\def\setnormalsp@cing{% + \rm % set the em properly + \normalbaselineskip=\the\baselinefactor em\relax + \normalbaselines + \abovedisplayskip=1.2em plus .3em minus .9em% + \abovedisplayshortskip=0em plus .3em% + \belowdisplayskip=1.2em plus .3em minus .9em% + \belowdisplayshortskip=.7em plus .3em minus .4em% + \setbox\strutbox=\hbox{\vrule height .7\baselineskip + depth .3\baselineskip width\z@}} +% +\catcode`@=12 % at signs are no longer letters +\endinput diff --git a/Master/texmf-dist/tex/plain/levy/greekmacros.tex b/Master/texmf-dist/tex/plain/levy/greekmacros.tex new file mode 100644 index 00000000000..8e88c6a645b --- /dev/null +++ b/Master/texmf-dist/tex/plain/levy/greekmacros.tex @@ -0,0 +1,51 @@ +\def\ifnextchar#1#2#3{\let\tempe #1\def\tempa{#2}\def\tempb{#3}\futurelet + \tempc\ifnch} +\def\ifnch{\ifx\tempc\tempe\let\tempd\tempa\else\let\tempd\tempb\fi\tempd} +\def\gobble#1{} +\font\tengr=grreg10 +\font\tengrbf=grbld10 +\font\tengrtt=grtt10 +\def\greekmode{% +\catcode`\<=13 +\catcode`\>=13 +\catcode`\'=11 +\catcode`\`=11 +\catcode`\~=11 +\catcode`\"=11 +\catcode`\|=11 +\lccode`\<=`\<% +\lccode`\>=`\>% +\lccode`\'=`\'% +\lccode`\`=`\`% +\lccode`\~=`\~% +\lccode`\"=`\"% +\lccode`\|=`\|% +\tengr\def\bf{\tengrbf}\def\tt{\tengrtt}} +\newcount\vwl +\newcount\acct +\def\lt{<} +\def\gt{>} +{ + \greekmode + \gdef>{\ifnextchar `{\expandafter\smoothgrave\gobble}{\char\lq\>}} + \gdef<{\ifnextchar `{\expandafter\roughgrave\gobble}{\char\lq\<}} + \gdef\smoothgrave#1{\acct=\rq137 \vwl=\lq#1 \dobreathinggrave} + \gdef\roughgrave#1{\acct=\rq103 \vwl=\lq#1 \dobreathinggrave} + \gdef\dobreathinggrave{\ifnum\vwl\lt\rq140 %if uppercase + \char\the\acct\char\the\vwl\else\expandafter\testiota\fi} + \gdef\testiota{\ifnextchar |{\addiota\doaccent\gobble}{\doaccent}} + \gdef\addiota{\ifnum\vwl=\lq a\vwl=\rq370 + \else\ifnum\vwl=\lq h\vwl=\rq371 \else\vwl=\rq372 \fi\fi} + \gdef\doaccent{\accent\the\acct \char\the\vwl\relax} +} + +\newif\ifgreek\greekfalse + +\def\begingreek{\bgroup\greektrue\greekmode} +\def\endgreek{\egroup} + +\let\math=$ +{\catcode`\$=13 +\gdef\greekdelims{\catcode`\$=13 +\def${\ifgreek\endgreek\else\begingreek\fi} +\def\display{\math\math}\def\enddisplay{\math\math}}} diff --git a/Master/texmf-dist/tex/plain/metatex/metatex.tex b/Master/texmf-dist/tex/plain/metatex/metatex.tex new file mode 100644 index 00000000000..bb35b5368cc --- /dev/null +++ b/Master/texmf-dist/tex/plain/metatex/metatex.tex @@ -0,0 +1,205 @@ +% METATeX.TeX (RMCG19940730) + +% METATeX.TeX communicates TeX and METAFONT +% Copyright (C) 2003, 2004 Ram\'on Casares +% +% This program is free software; you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation; either version 2 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the +% Free Software Foundation, Inc., +% 59 Temple Place, Suite 330, +% Boston, MA 02111-1307 USA + +%\message{V1.0 by RMCG 20031002} +\message{V1.1 by RMCG 20040812} % mptopdf -> mtmp2pdf + +\chardef\MToldatcatcode=\catcode`\@\catcode`\@=11 + +\newif\ifMTf@le % true if auxiliar.mf is found (second pass) +\newif\ifMTmf % true if second pass and MF (not MPost) has drawn the figures +\newwrite\MToutf@le +\newread\MTinf@le +\newbox\MTbox +\newbox\MTb@x +\newcount\MTn@ +\newdimen\MTxpos@ +\newdimen\MTypos@ + +\openin\MTinf@le=auxiliar.mf % First see if the mf file exists +\ifeof\MTinf@le \MTf@lefalse \else \MTf@letrue \fi +\closein\MTinf@le + +\def\MTendmark{} +{\obeylines\gdef\MTign@re#1 + {\def\next{#1}\ifx\next\MTendmark \let\next\endgroup \else % + \let\next\MTign@re\fi \next}} +{\obeylines\gdef\MTc@py#1 + {\def\next{#1}\ifx\next\MTendmark \let\next\endgroup \else % + \immediate\write\MToutf@le{\next}\let\next\MTc@py\fi \next}} + +{\obeylines\gdef\MTign@reline#1 + {\endgroup}} +{\obeylines\gdef\MTc@pyline#1 + {\immediate\write\MToutf@le{#1}\endgroup}} + +\def\MTsetupc@py{\def\do##1{\catcode`##1=12 }\dospecials + \catcode`\\=0 \let\\=\MTbackslash \obeyspaces\obeylines} + +\def\MTmf@mp{\ifeof\MTinf@le + \errhelp={It seems to me that file auxiliar.mf has not been processed, + or that file auxiliar.log was deleted.}% + \errmessage{File auxiliar.log not found}% + \else + \read\MTinf@le to \next % reads METAXXXX banner + \def\MT@mf{METAFONT}% + \def\MT@##1 ##2 ##3,##4\MT@@{##3}% #1 = This, #2 = is, #3 = METAFONT ? + \edef\MTmeta{\expandafter\MT@\next\MT@@}% + \message{(Drawings made by \MTmeta)}% + \ifx\MTmeta\MT@mf \MTmftrue \else \MTmffalse \fi + \fi} + +\def\MTl@gl@b{\MTloglabel } +\def\MTgetl@g{\ifeof\MTinf@le \let\next\relax + \errhelp={I was expecting to read a label location.}% + \errmessage{Unexpected end of auxiliar.log}% + \else \read\MTinf@le to \next + \ifx\next\MTl@gl@b \let\next\relax + {\catcode`\>=9 + \global\read\MTinf@le to \MTxpos@text + \global\read\MTinf@le to \MTypos@text }% + \else \let\next\MTgetl@g \fi\fi \next} + +\escapechar=-1 \edef\MTbackslash{\string\\}\escapechar=`\\ +\def\MTslashing{\begingroup \escapechar=-1 \edef\\{\string\\}% + \edef\{{\string\{}\edef\}{\string\}}\edef\#{\string\#}% + \edef\${\string\$}\edef\^{\string\^}\edef\_{\string\_}% + \edef\&{\string\&}\edef\~{\string\~}\edef\%{\string\%}% + \escapechar=`\\} +\let\MTendslashing=\endgroup + +\def\MTf@rst#1#2#3/{#1}\def\MTsec@nd#1#2#3/{#2} + +\ifMTf@le \message{Second TeX pass} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \openin\MTinf@le=auxiliar.log + \MTmf@mp + \ifMTmf % METAFONT has written auxiliar.log + \font\MTfont=auxiliar \def\MTchar{\MTfont\char\MTn@}% + \else % MetaPost has written auxiliar.log + \ifx\pdfliteral\undefined + \def\MTchar{\special{psfile=auxiliar.\number\MTn@}}% + \else + \input mtmp2pdf + \def\MTchar{\MPtoPDF{auxiliar.\number\MTn@}}% + %\input supp-pdf.tex % Context + %\let\oldfinMPgrap=\finishMPgraphic % to avoid centering + %\def\finishMPgraphic{\xdef\MPxoffset{0}\xdef\MPyoffset{0}\oldfinMPgrap}% + %\def\MTchar{\convertMPtoPDF{auxiliar.\number\MTn@}{1}{1}}% + \fi + \fi + \def\MTcode{\begingroup\MTsetupc@py\MTign@re{ }} + \def\MT:{\begingroup\MTsetupc@py\MTign@reline} + \def\MTline#1{} + \def\MTbeginchar(#1,#2,#3);{\setbox\MTb@x=\hbox{\MTchar}% + \wd\MTb@x=#1\ht\MTb@x=#2\dp\MTb@x=#3\setbox\MTbox=\vtop{\box\MTb@x}} + \def\MTlabel#1(#2)#3"#4";{\setbox\MTb@x\hbox{#4}\MTgetl@g + \MTxpos@=\MTxpos@text pt \MTypos@=\MTypos@text pt \dimen@=\dp\MTbox + \setbox\MTbox=\vtop{\unvbox\MTbox\nointerlineskip + \def\1{\MTf@rst#3cc/}\def\2{\MTsec@nd#3cc/}% + \vbox to 0pt{\advance\dimen@\MTypos@ \kern-\dimen@ + \if b\1\kern-\ht\MTb@x \else \if c\1\kern-0.5\ht\MTb@x \fi\fi + \hbox to 0pt{\kern\MTxpos@ + \if r\2\kern-\wd\MTb@x \else \if c\2\kern-0.5\wd\MTb@x \fi\fi + \box\MTb@x\hss}\vss}}} + \def\MTendchar;{\global\advance\MTn@1 } +\else \message{First TeX pass} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \let\MTfont=\nullfont + \let\MTchar=\relax + \tracinglostchars=0 + \immediate\openout\MToutf@le=auxiliar.mf + \def\MTcode{\begingroup\MTsetupc@py\MTc@py{ }} + \def\MT:{\begingroup\MTsetupc@py\MTc@pyline} + \def\MTline#1{\MTslashing\immediate\write\MToutf@le{#1}\MTendslashing} + \def\MTbeginchar(#1,#2,#3);{% + \MTline{beginchar(\number\MTn@,#1\#,#2\#,#3\#); \% line \the\inputlineno}% + \global\setbox\MTbox=\vtop{}\wd\MTbox=#1\ht\MTbox=#2\dp\MTbox=#3} + \def\MTlabel#1(#2)#3"#4";{{\setbox0=\hbox{#4}% + \def\1{\MTf@rst#3cc/}\def\2{\MTsec@nd#3cc/}% + \MTline{ MTlabel(#2)("\1","\2","#1",\the\wd0,\the\ht0,\the\dp0);}}} + \def\MTendchar;{\MTline{endchar;}\MTline{}\global\advance\MTn@1 } +\fi + +\MT:% Generated by METATeX +\MT: +\MT: mag:=\number\mag/1000; +\MT: +\MT: truept = pt/mag; truept# = pt#/mag; +\MT: truepc = pc/mag; truepc# = pc#/mag; +\MT: truein = in/mag; truein# = in#/mag; +\MT: truebp = bp/mag; truebp# = bp#/mag; +\MT: truecm = cm/mag; truecm# = cm#/mag; +\MT: truemm = mm/mag; truemm# = mm#/mag; +\MT: truedd = dd/mag; truedd# = dd#/mag; +\MT: truecc = cc/mag; truecc# = cc#/mag; +\MT: +\MT:if known prologues: % if mpost: +\MT: +\MT: mm#=2.84528; pt#=1; dd#=1.07001; bp#=1.00375; +\MT: cm#=28.45276; pc#=12; cc#=12.84010; in#=72.27; +\MT: +\MT: string extra_setup, extra_beginchar, extra_endchar; +\MT: extra_setup = extra_beginchar = extra_endchar = ""; +\MT: +\MT: def mode_setup = +\MT: proofing:=0; % no, we're not making proofs +\MT: fontmaking:=0; % no, we're not making a font +\MT: tracingtitles:=0; % no, don't show titles at all +\MT: scantokens extra_setup; +\MT: enddef; +\MT: +\MT: def beginchar(expr c,w_sharp,h_sharp,d_sharp) = +\MT: begingroup +\MT: charcode:=c; +\MT: w:=w_sharp*pt; h:=h_sharp*pt; d:=d_sharp*pt; +\MT: clearxy; clearit; clearpen; +\MT: pickup defaultpen; +\MT: drawoptions(); +\MT: scantokens extra_beginchar; +\MT: enddef; +\MT: +\MT: def endchar = +\MT: scantokens extra_endchar; +\MT: shipit; +\MT: endgroup +\MT: enddef; +\MT: +\MT:else: % mf +\MT: mode:=localfont; +\MT:fi +\MT: +\MT:mode_setup; +\MT: +\MT:def MTlabel(suffix i)(expr v,h,add,wd,ht,dp) = +\MT: x.i.l = x.i if h="c": - wd/2 elseif h="r": - wd fi; +\MT: y.i.t = y.i if v="c": + ht/2 elseif v="b": + ht fi; +\MT: x.i.r = x.i.l + wd; y.i.b = y.i.t - ht - dp; +\MT: if not (add=""): erase fill (x.i.l,y.i.t) -- +\MT: (x.i.l,y.i.b) -- (x.i.r,y.i.b) -- (x.i.r,y.i.t) -- cycle; fi +\MT: message"\\MTloglabel"; show x\\i/pt; show y\\i/pt; message""; +\MT:enddef; +\MT: + +\let\texbye=\bye +\outer\def\bye{\ifMTf@le \closein\MTinf@le \else + \MTline{end.}\immediate\closeout\MToutf@le \fi + \par\vfill\supereject\end} + +\catcode`\@=\MToldatcatcode diff --git a/Master/texmf-dist/tex/plain/misc/idxmac.tex b/Master/texmf-dist/tex/plain/misc/idxmac.tex new file mode 100644 index 00000000000..3782293b690 --- /dev/null +++ b/Master/texmf-dist/tex/plain/misc/idxmac.tex @@ -0,0 +1,200 @@ +% +% idxmac.tex +% +% Most of the code in this file are excerpts from latex.tex and manmac.tex. +% The actual style of the index environment \beginindex ... \endindex +% at the end of this file is left empty. +% +% +\def\makeatletter{\catcode`\@=11\relax} +\def\makeatother{\catcode`\@=12\relax} +\makeatletter +\newif\if@filesw \@fileswtrue +\newif\if@nobreak \@nobreakfalse +\def\@makeother#1{\catcode`#112\relax} +\def\newwrite{\alloc@7\write\chardef\sixt@@n} +\newwrite\@unused +\def\typeout#1{{\let\protect\string\immediate\write\@unused{#1}}} + +% **************************************** +% * PAGE NUMBERING * +% **************************************** +% +% Page numbers are produced by a page counter, used just like any other +% counter. The only difference is that \c@page contains the number of +% the next page to be output (the one currently being produced), rather +% than one minus it. Thus, it is normally initialized to 1 rather than +% 0. \c@page is defined to be \count0, rather than a count assigned by +% \newcount. +% +% The user sets the pagenumber style with the \pagenumbering{FOO} +% command, which sets the page counter to 1 and defines \thepage to be +% \FOO. For example, \pagenumbering{roman} causes pages to be numbered +% i, ii, etc. + +% Numbering commands for definitions of \theCOUNTER and \list arguments. +% \fnsymbol produces the standard footnoting symbols: asterisk, dagger, etc. +% They can be used only in math mode. + +\def\arabic#1{\@arabic{\@nameuse{c@#1}}} +\def\roman#1{\@roman{\@nameuse{c@#1}}} +\def\Roman#1{\@Roman{\@nameuse{c@#1}}} +\def\alph#1{\@alph{\@nameuse{c@#1}}} +\def\Alph#1{\@Alph{\@nameuse{c@#1}}} +\def\fnsymbol#1{\@fnsymbol{\@nameuse{c@#1}}} + +\def\@arabic#1{\ifnum #1>0 \number #1\fi} +\def\@roman#1{\romannumeral #1} +\def\@Roman#1{\expandafter\uppercase\expandafter{\romannumeral #1}} +\def\@alph#1{\ifcase#1\or a\or b\or c\or d\else\@ialph{#1}\fi} +\def\@ialph#1{\ifcase#1\or \or \or \or \or e\or f\or g\or h\or i\or j\or + k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or + z\else\@ctrerr\fi} +\def\@Alph#1{\ifcase#1\or A\or B\or C\or D\else\@Ialph{#1}\fi} +\def\@Ialph#1{\ifcase#1\or \or \or \or \or E\or F\or G\or H\or I\or J\or + K\or L\or M\or N\or O\or P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or + Z\else\@ctrerr\fi} +\def\@fnsymbol#1{\ifcase#1\or *\or \dagger\or \ddagger\or + \mathchar "278\or \mathchar "27B\or \|\or **\or \dagger\dagger + \or \ddagger\ddagger \else\@ctrerr\fi\relax} + +\countdef\c@page=0 \c@page=1 +\def\cl@page{} +\def\pagenumbering#1{\global\c@page \@ne \gdef\thepage{\csname @#1\endcsname + \c@page}} +\pagenumbering{arabic} + +% \@bsphack ... \@esphack +% used by macros such as \index and \begin{@float} ... \end{@float} +% that want to be invisible -- i.e., +% not leave any extra space when used in the middle of text. Such +% a macro should begin with \@bsphack and end with \@esphack +% The macro in question should not create any text, nor change the +% mode. +% +% \@bsphack == +% BEGIN +% \dimen\@savsk := \lastskip +% if hmode then \@savsf := \spacefactor fi +% END +% +% \@esphack == +% BEGIN +% if hmode +% then \spacefactor := \@savsf +% if \dimen\@savsk > 0pt then \ignorespaces +% \global\ignoretrue fi +% fi +% END +% + +\newdimen\@savsk +\newcount\@savsf + +\def\@bsphack{\@savsk\lastskip + \ifhmode\@savsf\spacefactor\fi} + +\def\@esphack{\relax\ifhmode\spacefactor\@savsf + {}\ifdim \@savsk >\z@ \global\ignoretrue \ignorespaces + \fi \fi} + +% The command \@sanitize changes the catcode of all special characters +% except for braces to 'other'. It can be used for commands like +% \index that want to write their arguments verbatim. Needless to +% say, this command should only be executed within a group, or chaos +% will ensue. + +\def\@sanitize{\@makeother\ \@makeother\\\@makeother\$\@makeother\&% +\@makeother\#\@makeother\^\@makeother\^^K\@makeother\_\@makeother\^^A% +\@makeother\%\@makeother\~} + +% **************************************** +% * INDEX COMMANDS * +% **************************************** +% +% \makeindex == +% BEGIN +% if \@filesw = T +% then open file \jobname.IDX as \indexfile +% \index == BEGIN \@bsphack +% \begingroup +% re-\catcode special characters to 'other' +% \wrindex +% fi +% END +% +% \wrindex{ITEM} == +% BEGIN +% write of {\indexentry{ITEM}{page number}} +% \endgroup +% \@esphack +% END + +% INITIALIZATION: +% +% \index == BEGIN \@bsphack +% \begingroup +% re-\catcode special characters (in case '%' there) +% \index +% END +% +% \index{ITEM} == BEGIN \endgroup \@esphack END +% +\def\makeindex{\if@filesw \newwrite\@indexfile + \immediate\openout\@indexfile=\jobname.idx + \def\index{\@bsphack\begingroup\@sanitize\@wrindex\@indexfile} + \typeout{Writing index file \jobname.idx }\fi} + +\def\@wrindex#1#2{\let\thepage\relax + \xdef\gtempa{\write#1{\string + \indexentry{#2}{\thepage}}}\endgroup\gtempa + \if@nobreak \ifvmode\@nobreak\fi\fi\@esphack} + +\def\index{\@bsphack\begingroup\@sanitize\@index} +\def\@index#1{\endgroup\@esphack} + +\def\makeglossary{\if@@filesw \newwrite\@glossaryfile + \immediate\openout\@glossaryfile=\jobname.glo + \def\glossary{\@bsphack\begingroup\@sanitize\@wrindex\@glossaryfile}\typeout + {Writing glossary file \jobname.glo }\fi} + +\def\glossary{\@bsphack\begingroup\@sanitize\index} + +\newdimen\pagewidth +\pagewidth=\hsize +\newbox\partialpage +\def\begindoublecolumns{\begingroup + \output={\global\setbox\partialpage=\vbox{\unvbox255\bigskip}}\eject + \output={\doublecolumnout} \hsize=14pc \vsize=89pc + \let\item\@idxitem} +\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} + +\def\@idxitem{\par\hangindent 40pt} +\def\subitem{\par\hangindent 40pt \hskip 20pt} +\def\subsubitem{\par\hangindent 40pt \hskip 30pt} +\def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax} + +\def\beginindex{\begingroup\let\item\@idxitem +% Output opening routines go here +} +\def\endindex{ +% Output closing routines go here. +\endgroup} +\makeatother diff --git a/Master/texmf-dist/tex/plain/misc/pdfcolor.tex b/Master/texmf-dist/tex/plain/misc/pdfcolor.tex new file mode 100644 index 00000000000..f09ecbcb750 --- /dev/null +++ b/Master/texmf-dist/tex/plain/misc/pdfcolor.tex @@ -0,0 +1,158 @@ +% Very simple macros to show how to use colors with pdftex + +\def\cmykGreenYellow{0.15 0 0.69 0} +\def\cmykYellow{0 0 1 0} +\def\cmykGoldenrod{0 0.10 0.84 0} +\def\cmykDandelion{0 0.29 0.84 0} +\def\cmykApricot{0 0.32 0.52 0} +\def\cmykPeach{0 0.50 0.70 0} +\def\cmykMelon{0 0.46 0.50 0} +\def\cmykYellowOrange{0 0.42 1 0} +\def\cmykOrange{0 0.61 0.87 0} +\def\cmykBurntOrange{0 0.51 1 0} +\def\cmykBittersweet{0 0.75 1 0.24} +\def\cmykRedOrange{0 0.77 0.87 0} +\def\cmykMahogany{0 0.85 0.87 0.35} +\def\cmykMaroon{0 0.87 0.68 0.32} +\def\cmykBrickRed{0 0.89 0.94 0.28} +\def\cmykRed{0 1 1 0} +\def\cmykOrangeRed{0 1 0.50 0} +\def\cmykRubineRed{0 1 0.13 0} +\def\cmykWildStrawberry{0 0.96 0.39 0} +\def\cmykSalmon{0 0.53 0.38 0} +\def\cmykCarnationPink{0 0.63 0 0} +\def\cmykMagenta{0 1 0 0} +\def\cmykVioletRed{0 0.81 0 0} +\def\cmykRhodamine{0 0.82 0 0} +\def\cmykMulberry{0.34 0.90 0 0.02} +\def\cmykRedViolet{0.07 0.90 0 0.34} +\def\cmykFuchsia{0.47 0.91 0 0.08} +\def\cmykLavender{0 0.48 0 0} +\def\cmykThistle{0.12 0.59 0 0} +\def\cmykOrchid{0.32 0.64 0 0} +\def\cmykDarkOrchid{0.40 0.80 0.20 0} +\def\cmykPurple{0.45 0.86 0 0} +\def\cmykPlum{0.50 1 0 0} +\def\cmykViolet{0.79 0.88 0 0} +\def\cmykRoyalPurple{0.75 0.90 0 0} +\def\cmykBlueViolet{0.86 0.91 0 0.04} +\def\cmykPeriwinkle{0.57 0.55 0 0} +\def\cmykCadetBlue{0.62 0.57 0.23 0} +\def\cmykCornflowerBlue{0.65 0.13 0 0} +\def\cmykMidnightBlue{0.98 0.13 0 0.43} +\def\cmykNavyBlue{0.94 0.54 0 0} +\def\cmykRoyalBlue{1 0.50 0 0} +\def\cmykBlue{1 1 0 0} +\def\cmykCerulean{0.94 0.11 0 0} +\def\cmykCyan{1 0 0 0} +\def\cmykProcessBlue{0.96 0 0 0} +\def\cmykSkyBlue{0.62 0 0.12 0} +\def\cmykTurquoise{0.85 0 0.20 0} +\def\cmykTealBlue{0.86 0 0.34 0.02} +\def\cmykAquamarine{0.82 0 0.30 0} +\def\cmykBlueGreen{0.85 0 0.33 0} +\def\cmykEmerald{1 0 0.50 0} +\def\cmykJungleGreen{0.99 0 0.52 0} +\def\cmykSeaGreen{0.69 0 0.50 0} +\def\cmykGreen{1 0 1 0} +\def\cmykForestGreen{0.91 0 0.88 0.12} +\def\cmykPineGreen{0.92 0 0.59 0.25} +\def\cmykLimeGreen{0.50 0 1 0} +\def\cmykYellowGreen{0.44 0 0.74 0} +\def\cmykSpringGreen{0.26 0 0.76 0} +\def\cmykOliveGreen{0.64 0 0.95 0.40} +\def\cmykRawSienna{0 0.72 1 0.45} +\def\cmykSepia{0 0.83 1 0.70} +\def\cmykBrown{0 0.81 1 0.60} +\def\cmykTan{0.14 0.42 0.56 0} +\def\cmykGray{0 0 0 0.50} +\def\cmykBlack{0 0 0 1} +\def\cmykWhite{0 0 0 0} + +\def\GreenYellow{\pdfsetcolor{\cmykGreenYellow}} +\def\Yellow{\pdfsetcolor{\cmykYellow}} +\def\Goldenrod{\pdfsetcolor{\cmykGoldenrod}} +\def\Dandelion{\pdfsetcolor{\cmykDandelion}} +\def\Apricot{\pdfsetcolor{\cmykApricot}} +\def\Peach{\pdfsetcolor{\cmykPeach}} +\def\Melon{\pdfsetcolor{\cmykMelon}} +\def\YellowOrange{\pdfsetcolor{\cmykYellowOrange}} +\def\Orange{\pdfsetcolor{\cmykOrange}} +\def\BurntOrange{\pdfsetcolor{\cmykBurntOrange}} +\def\Bittersweet{\pdfsetcolor{\cmykBittersweet}} +\def\RedOrange{\pdfsetcolor{\cmykRedOrange}} +\def\Mahogany{\pdfsetcolor{\cmykMahogany}} +\def\Maroon{\pdfsetcolor{\cmykMaroon}} +\def\BrickRed{\pdfsetcolor{\cmykBrickRed}} +\def\Red{\pdfsetcolor{\cmykRed}} +\def\OrangeRed{\pdfsetcolor{\cmykOrangeRed}} +\def\RubineRed{\pdfsetcolor{\cmykRubineRed}} +\def\WildStrawberry{\pdfsetcolor{\cmykWildStrawberry}} +\def\Salmon{\pdfsetcolor{\cmykSalmon}} +\def\CarnationPink{\pdfsetcolor{\cmykCarnationPink}} +\def\Magenta{\pdfsetcolor{\cmykMagenta}} +\def\VioletRed{\pdfsetcolor{\cmykVioletRed}} +\def\Rhodamine{\pdfsetcolor{\cmykRhodamine}} +\def\Mulberry{\pdfsetcolor{\cmykMulberry}} +\def\RedViolet{\pdfsetcolor{\cmykRedViolet}} +\def\Fuchsia{\pdfsetcolor{\cmykFuchsia}} +\def\Lavender{\pdfsetcolor{\cmykLavender}} +\def\Thistle{\pdfsetcolor{\cmykThistle}} +\def\Orchid{\pdfsetcolor{\cmykOrchid}} +\def\DarkOrchid{\pdfsetcolor{\cmykDarkOrchid}} +\def\Purple{\pdfsetcolor{\cmykPurple}} +\def\Plum{\pdfsetcolor{\cmykPlum}} +\def\Violet{\pdfsetcolor{\cmykViolet}} +\def\RoyalPurple{\pdfsetcolor{\cmykRoyalPurple}} +\def\BlueViolet{\pdfsetcolor{\cmykBlueViolet}} +\def\Periwinkle{\pdfsetcolor{\cmykPeriwinkle}} +\def\CadetBlue{\pdfsetcolor{\cmykCadetBlue}} +\def\CornflowerBlue{\pdfsetcolor{\cmykCornflowerBlue}} +\def\MidnightBlue{\pdfsetcolor{\cmykMidnightBlue}} +\def\NavyBlue{\pdfsetcolor{\cmykNavyBlue}} +\def\RoyalBlue{\pdfsetcolor{\cmykRoyalBlue}} +\def\Blue{\pdfsetcolor{\cmykBlue}} +\def\Cerulean{\pdfsetcolor{\cmykCerulean}} +\def\Cyan{\pdfsetcolor{\cmykCyan}} +\def\ProcessBlue{\pdfsetcolor{\cmykProcessBlue}} +\def\SkyBlue{\pdfsetcolor{\cmykSkyBlue}} +\def\Turquoise{\pdfsetcolor{\cmykTurquoise}} +\def\TealBlue{\pdfsetcolor{\cmykTealBlue}} +\def\Aquamarine{\pdfsetcolor{\cmykAquamarine}} +\def\BlueGreen{\pdfsetcolor{\cmykBlueGreen}} +\def\Emerald{\pdfsetcolor{\cmykEmerald}} +\def\JungleGreen{\pdfsetcolor{\cmykJungleGreen}} +\def\SeaGreen{\pdfsetcolor{\cmykSeaGreen}} +\def\Green{\pdfsetcolor{\cmykGreen}} +\def\ForestGreen{\pdfsetcolor{\cmykForestGreen}} +\def\PineGreen{\pdfsetcolor{\cmykPineGreen}} +\def\LimeGreen{\pdfsetcolor{\cmykLimeGreen}} +\def\YellowGreen{\pdfsetcolor{\cmykYellowGreen}} +\def\SpringGreen{\pdfsetcolor{\cmykSpringGreen}} +\def\OliveGreen{\pdfsetcolor{\cmykOliveGreen}} +\def\RawSienna{\pdfsetcolor{\cmykRawSienna}} +\def\Sepia{\pdfsetcolor{\cmykSepia}} +\def\Brown{\pdfsetcolor{\cmykBrown}} +\def\Tan{\pdfsetcolor{\cmykTan}} +\def\Gray{\pdfsetcolor{\cmykGray}} +\def\Black{\pdfsetcolor{\cmykBlack}} +\def\White{\pdfsetcolor{\cmykWhite}} + +\def\pdfsetcolor#1{\pdfliteral{#1 k}} +\def\setcolor#1{\mark{#1}\pdfsetcolor{#1}} + +\pdfoutput=1 +\def\maincolor{\cmykBlack} +\pdfsetcolor{\maincolor} + +\def\makefootline{ + \baselineskip24pt + \line{\pdfsetcolor{\maincolor}\the\footline}} + +\def\makeheadline{% + \edef\M{\topmark} + \ifx\M\empty\let\M=\maincolor\fi + \vbox to 0pt{\vskip-22.5pt + \line{\vbox to8.5pt{}% + \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\M}}\vss}% + \nointerlineskip} diff --git a/Master/texmf-dist/tex/plain/misc/placeins.tex b/Master/texmf-dist/tex/plain/misc/placeins.tex new file mode 100644 index 00000000000..1f3a7211c47 --- /dev/null +++ b/Master/texmf-dist/tex/plain/misc/placeins.tex @@ -0,0 +1,135 @@ +% P L A C E I N S . T E X ver 2.0 Mar 3, 1995 +% +% By Donald Arseneau <asnd@reg.triumf.ca> +% +% Insertions that keep their place. +% +% This TeX file provides various mechanisms (for plain TeX and close +% relatives) to let insertions (footnotes, topins, pageins, etc.) float +% within their appropriate section, but to prevent them from intruding +% into the following section, even when sections do not normally begin +% a new page. (If your sections normally begin a new page, just use +% \supereject to flush out insertions.) +% +% Different combinations of insertions can be controlled with different +% commands: +% +% \par\penalty-20029 +% If there are any insertions that will not fit on the current page, +% a \supereject is performed and the following text will continue at +% the top of a page after all insertions. If all insertions do fit +% on the current page, then the following text will continue +% immediately on this page. +% \par\penalty-20030 +% Like above, except that if there are any footnotes at all on the +% current page, the section must begin on the next page. (This is so +% no footnote text from section 1 will appear beneath the beginning +% of section 2.) +% \par\penalty-10029 +% If any insertions cannot fit on the current page, eject them, and +% then allow the following section to begin immediately on the same +% page as the last insert. If all insertions do fit on the current +% page, then the following text will continue immediately on this +% page. +% \barrier{\eject}{\topins} +% If there are any pageinserts or topinserts that do not fit on the +% current page, eject them, and then allow the following section to +% begin immediately on the same page as the last insert. Split +% footnotes or other insertions are allowed to intrude into the next +% section. +% \barrier{\supereject}{\topins} +% Like the \barrier command above, but if any inserts are ejected +% the following section will begin at the top of a new page (like +% \supereject). +% \barrier{...}{\footins} +% *** NOT ALLOWED *** You will get spurious space and footnote-rules +% at the bottom of pages! +% \barrier{...}{\margins} +% If you define other insertion classes, such as marginal notes, you +% can use \barrier for them too. But only if \skip\margins=0pt. +% You must also add any new insertion classes to the definition of +% \placerestoreoutput +% +% How to use: First, \input this file (of course!). Then, at the beginning +% of a new section, or at any boundary that insertions should not cross, put +% one of the commands listed above. Presumably, you will actually put these +% commands at the start of your own \section or \startsection macro; that is +% why they are non mnemonic! +% +% There is a slight chance that a footnote may be separated from its reference +% in the text after \penalty-xxxxx when there are no split insertions. (LaTeX +% has the same possibility at every float!) + +\chardef\noplaceoutput\catcode`\@ +\catcode`\@=11 + +\edef\zero@skip{\the\z@skip} + +\def\barrier#1#2{\par\begingroup + \ifdim\skip#2>\z@{\newlinechar10\errhelp{\barrier#2may produce some spurious + extra material on the page, ^^J but I will try anyway.}\errmessage{Bad use + of \string\barrier}}% + \fi + \skip@\lastskip \edef\next{\the\skip@}\ifx\next\zero@skip\else\vskip-\skip@\fi + \penalty\z@ % update page parameters + \fam-\insertpenalties + \insert#2{\floatingpenalty\@ne}% + \ifx\next\zero@skip\else\vskip\skip@\fi + \advance\fam\insertpenalties % 0: no held; 1: held over + \expandafter\endgroup + \ifnum\fam=\@ne % then do eject +% \message{There are held-over \string#2 inserts; performing \string#1. }% + \ifdim\pagetotal<\topskip \leftline{}\kern-\topskip\fi % avoid empty list + {\dimen@\pagetotal \advance\dimen@\pagedepth + \ifdim\dimen@<\pagegoal\vfill\fi}% + #1\@barrier{#1}{#2}\else +% \message{There are no held-over \string#2 inserts. \space}% +\fi +} + +\def\placeinsoutput{% +\ifnum\outputpenalty=-20030\relax % eject if any footnotes + \ifvoid\footins\else + \fam\insertpenalties \advance\fam\@ne \insertpenalties\fam + \fi \outputpenalty=-20029\relax +\fi +\ifnum\outputpenalty=-20029\relax % Check for `supereject' flag + \ifnum\insertpenalties>\z@ % something is being held over, must get it out +% \message{Forcing insertions on their own pages. \space}% + \ifvoid\footins \r@ggedbottomtrue \else \advance\skip\footins 0ptplus1fil\fi + \noplaceoutput % performs \supereject + \else % must rejoin seamlessly: + \placerestoreoutput + \fi +\else % check for other flag... + \ifnum\outputpenalty=-10028 % in the middle of ejecting + \ifnum\insertpenalties=\z@ \global\setbox\@cclv\vbox{}\fi + \outputpenalty=-10029 + \fi + \ifnum\outputpenalty=-10029\relax % section start + \ifnum\insertpenalties>\z@ % something is being held over, must get it out +% \message{Forcing insertions. \space}% + \ifvoid\footins \r@ggedbottomtrue \else \advance\skip\footins 0ptplus1fil\fi + \noplaceoutput % performs \eject, perhaps repeatedly: + \leftline{}\kern-\topskip \penalty-10028\relax % (like \dosupereject) + \else % must rejoin seamlessly: + \placerestoreoutput + \fi + \else % just a regular page break + \noplaceoutput + \fi +\fi +} + +% there is a slim chance that footnotes may lose their place. +\def\placerestoreoutput{% + \ifvoid\footins\else\insert\footins{\unvbox\footins}\fi + \ifvoid\topins\else\insert\topins{\unvbox\topins}\fi +% If you have other floating insertion classes, do the same here. + \unvbox\@cclv +} + +\catcode`\@=\noplaceoutput + +\edef\noplaceoutput{\the\output} +\output{\placeinsoutput} diff --git a/Master/texmf-dist/tex/plain/misc/tugboat.def b/Master/texmf-dist/tex/plain/misc/tugboat.def new file mode 100644 index 00000000000..de9957b5526 --- /dev/null +++ b/Master/texmf-dist/tex/plain/misc/tugboat.def @@ -0,0 +1,1164 @@ +% -*-tex-*- +% The following macros are used in TUGboat tables of contents. +% This file may be automatically extended by tugboat.awk. +% It may be used by plain TeX, LaTeX, or AmSTeX. +% [04-Jun-1999] + +\ifx\makeatletter\undefined + \def\makeatletter{\catcode`\@=11\relax} + \def\makeatother{\catcode`\@=12\relax} +\fi + +\makeatletter + +\font\manual=manfnt %logo10 doesn't have what we need +\hyphenchar\manual=-1 + +\chardef\bs=`\\ + +\newbox\T@stBox \newbox\TestBox +\newcount\T@stCount \newcount\TestCount +\newdimen\T@stDimen \newdimen\TestDimen +\newif\ifT@stIf \newif\ifTestIf + +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\AMS{American Mathematical Society} +\def\AmS{{\the\textfont2 A}\kern-.1667em\lower.5ex\hbox + {\the\textfont2 M}\kern-.125em{\the\textfont2 S}} +\def\AMSTeX{\leavevmode\hbox{$\cal A\kern-.2em\lower.376ex + \hbox{$\cal M$}\kern-.2em\cal S$-\TeX}} +\let\AmSTeX=\AMSTeX +\def\archiTeX{\lower.5ex\hbox{A}\kern-.18em rch\i\kern-.1em \TeX} +\def\bull{\vrule height 1ex width .8ex depth -.2ex } % square bullet +\def\cents{{\rm\raise.2ex\rlap{\kern.05em$\scriptstyle/$}c}} +\def\comment#1\endcomment{} % AMS-TeX not loaded +\def\BaSiX{{B\kern-.18em\lower.45ex\hbox{A}\kern-.15em S + \kern-.4em\lower.45ex\hbox{I}\kern-.1em X}} +\def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025emb}\kern-.08em\TeX}} +\def\Dash{\d@sh{---}} +\def\d@sh#1{\nobreak\thinspace#1\penalty0\thinspace} +\def\dash{\d@sh{--}} +\def\DVItoVDU{DVIto\kern-.12em VDU} +\font\eightrm=cmr8 +\def\JemTeX{J\kern-.15em {\it{em}}\kern-.1em\TeX} +\def\JoT{{\sl The Joy of \TeX}} +\def\JTeX{\leavevmode\hbox{\lower.5ex\hbox{J}\kern-.18em\TeX}} +\def\La{{\rm L\kern-.36em\raise.3ex\hbox{\sc a}\kern-.15em}} +\def\latex{\LaTeX} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\MF{{\manual META}\-{\manual FONT}} +\def\mtex{T\kern-.1667em\lower.5ex\hbox{\^E}\kern-.125emX} +\def\MTH{$} +\def\otr{{\sc otr}} +\def\plain{{\tt plain}} +\def\POBox{P.\thinspace O.~Box } +\def\POBoxTUG{\POBox\unskip~9506, Providence, RI~02940} +\def\Pas{Pascal} +\def\PiCTeX{\PiC\kern-.11em\TeX} +\def\PiC{P\kern-.12em\lower.5ex\hbox{I}\kern-.075emC} +\def\PS{Post\-Script} +\def\sb{_} +\def\SC{Steering Committee} +\def\SliTeX{{\rm S\kern-.06em{\smc l\kern-.035emi}\kern-.06em\TeX}} +\let\sltt=\tt +\let\smc=\sc +\def\sp{^} +\def\SP{{\tt\char"20 }} % "visible" space +\def\tex{\TeX} +\def\TeXMaG{\TeX M\kern-.1667em\lower.5ex\hbox{A}\kern-.2267emG} +\def\TeXtures{\TestCount=\the\fam\TeX\kern-.1em$\fam\TestCount\scriptstyle + TURES$} +\def\Tib{\TestCount=\the\fam \leavevmode T\kern-.1667em + $\fam\TestCount\scriptstyle I$b} +\def\TUB{TUGboat} +\ifx\tugstyloaded@\plaintubstyle + \def\tubissue#1(#2){\TUB~#1, no.~#2} +\else + \def\tubissue#1#2{\TUB~#1, no.~#2} +\fi +\def\TUG{\TeX\ \UG} +\def\UG{Users Group} +\def\UNIX{{\sc unix}} +\def\VAX{\leavevmode\hbox{V\kern-.12em A\kern-.1em X}} +\def\VorTeX{V\kern-2.7pt\lower.5ex\hbox{O\kern-1.4pt R}\kern-2.6pt\TeX} +\def\vrt{{\tt\char`\|}} +\def\WEB{{\tt WEB}} +% +% Define \SMC to work with plain TeX, LaTeX, and AmSTeX. +\ifx\small\undefined + \ifx\ninerm\undefined + \def\SMC{\tenrm} + \else + \def\SMC{\ninerm} + \fi +\else + \def\SMC{\small} +\fi +% +\ifx \ssf \undefined \let \ssf = \sf \fi +\ifx \slMF \undefined \let \slMF = \MF \fi +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\BaSiX{{B\kern-.18em\lower.45ex\hbox{A}\kern-.15em S + \kern-.4em\lower.45ex\hbox{I}\kern-.1em X}} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\otr{{\smc otr}} +\def\postissno{1989 Conference Proceedings} +\def\postissno{1991 TUG Conference Proceedings} +\def\postissno{1992 Annual Meeting Proceedings} +\def\postissno{1993 Annual Meeting Proceedings} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{\TeX90 Conference Proceedings} +\def\otr{{\smc otr}} +\def\LaTeXe{\LaTeX{}\kern.05em2$_{\textstyle\varepsilon}$} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +% \tensy is unknown in LaTeX-2e; this is a temporary workaround +\ifx \undefined \tensy \font \tensy = cmsy10 \fi +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\CTAN{{\SMC CTAN}\spacefactor1000 } +\def\HTML{{\SMC HTML}\spacefactor1000 } +\def\MF{{\manual META}\-{\manual FONT}\spacefactor1000 } +\def\MP{{\manual META}\-{\manual POST}\spacefactor1000 } +\def\NTS{{\sc NTS}} +\def\PDF{{\sc PDF}} +\def\SGML{{\SMC SGML}\spacefactor1000 } +\def\uktug{UK\,TUG} +\def\XYMTeX{% + X\kern-.25em\smash{\raise.50ex\hbox{$\Upsilon$}}\kern-.25em{M}\kern-.1em\TeX} +\def\acro#1{{\sc #1}} +\ifx \undefined \tenss \let \tenss = \sf \fi +%======================================================================= +% End of hand-generated list of definitions. Additional ones are +% appended here by tugboat.awk; most need to be eliminated manually, +% and the remainder moved before the === line above. +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\uktug{UK\,TUG} +\def\postissno{1991 TUG Conference Proceedings} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\postissno{1992 Annual Meeting Proceedings} +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\postissno{1993 Annual Meeting Proceedings} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1996 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\uktug{UK\,TUG} +\def\postissno{1991 TUG Conference Proceedings} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\postissno{1992 Annual Meeting Proceedings} +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\postissno{1993 Annual Meeting Proceedings} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1996 Annual Meeting Proceedings} +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\uktug{UK\,TUG} +\def\postissno{1991 TUG Conference Proceedings} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\postissno{1992 Annual Meeting Proceedings} +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\postissno{1993 Annual Meeting Proceedings} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1996 Annual Meeting Proceedings} +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\uktug{UK\,TUG} +\def\postissno{1991 TUG Conference Proceedings} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\postissno{1992 Annual Meeting Proceedings} +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\postissno{1993 Annual Meeting Proceedings} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1996 Annual Meeting Proceedings} +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\uktug{UK\,TUG} +\def\postissno{1991 TUG Conference Proceedings} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\postissno{1992 Annual Meeting Proceedings} +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\postissno{1993 Annual Meeting Proceedings} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1996 Annual Meeting Proceedings} +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\uktug{UK\,TUG} +\def\postissno{1991 TUG Conference Proceedings} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\postissno{1992 Annual Meeting Proceedings} +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\postissno{1993 Annual Meeting Proceedings} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1996 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\uktug{UK\,TUG} +\def\postissno{1991 TUG Conference Proceedings} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\postissno{1992 Annual Meeting Proceedings} +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\postissno{1993 Annual Meeting Proceedings} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1996 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\uktug{UK\,TUG} +\def\postissno{1991 TUG Conference Proceedings} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\postissno{1992 Annual Meeting Proceedings} +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\postissno{1993 Annual Meeting Proceedings} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1996 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\uktug{UK\,TUG} +\def\postissno{1991 TUG Conference Proceedings} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\postissno{1992 Annual Meeting Proceedings} +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\postissno{1993 Annual Meeting Proceedings} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1996 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\uktug{UK\,TUG} +\def\postissno{1991 TUG Conference Proceedings} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\postissno{1992 Annual Meeting Proceedings} +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\postissno{1993 Annual Meeting Proceedings} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1996 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\uktug{UK\,TUG} +\def\postissno{1991 TUG Conference Proceedings} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\postissno{1992 Annual Meeting Proceedings} +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\postissno{1993 Annual Meeting Proceedings} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1996 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\uktug{UK\,TUG} +\def\postissno{1991 TUG Conference Proceedings} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\postissno{1992 Annual Meeting Proceedings} +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\postissno{1993 Annual Meeting Proceedings} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1996 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1997 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1998 Annual Meeting Proceedings} +\def\postissno{} +\def\NTG{{\smc NTG}} +\def\Xy{{\smc Xy}} +\def\TeXLive{\TeX{}Live} +\def\eTeX{e\TeX{}} +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\uktug{UK\,TUG} +\def\postissno{1991 TUG Conference Proceedings} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\postissno{1992 Annual Meeting Proceedings} +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\postissno{1993 Annual Meeting Proceedings} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1996 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1997 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1998 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\uktug{UK\,TUG} +\def\postissno{1991 TUG Conference Proceedings} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\postissno{1992 Annual Meeting Proceedings} +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\postissno{1993 Annual Meeting Proceedings} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1996 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1997 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1998 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\uktug{UK\,TUG} +\def\postissno{1991 TUG Conference Proceedings} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\postissno{1992 Annual Meeting Proceedings} +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\postissno{1993 Annual Meeting Proceedings} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1996 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1997 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1998 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\uktug{UK\,TUG} +\def\postissno{1991 TUG Conference Proceedings} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\postissno{1992 Annual Meeting Proceedings} +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\postissno{1993 Annual Meeting Proceedings} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1996 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1997 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1998 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\uktug{UK\,TUG} +\def\postissno{1991 TUG Conference Proceedings} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\postissno{1992 Annual Meeting Proceedings} +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\postissno{1993 Annual Meeting Proceedings} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1996 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1997 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1998 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\uktug{UK\,TUG} +\def\postissno{1991 TUG Conference Proceedings} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\postissno{1992 Annual Meeting Proceedings} +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\postissno{1993 Annual Meeting Proceedings} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1996 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1997 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1998 Annual Meeting Proceedings} +\def\postissno{} +% End of Volume 19 +%======================================================================= +% Start Volume 20 +% Adapted from c.t.t posting by Donald Arseneau, 26 May 93. +\def\nth#1{\TestCount=#1\relax + \ifnum\TestCount <0 \multiply\TestCount by\m@ne \fi % subdue negatives + \T@stCount=\TestCount + \divide\T@stCount by 100 \multiply\T@stCount by 100 + \advance\TestCount by-\T@stCount % n mod 100 + \ifnum\TestCount >20 \T@stCount=\TestCount + \divide\T@stCount by 10 \multiply\T@stCount by 10 + \advance\TestCount by-\T@stCount % n mod 10 + \fi + \T@stCount=\the\fam\relax + $\fam\T@stCount#1^{\fam\T@stCount + \ifcase\TestCount th% 0th + \or st% 1st + \or nd% 2nd + \or rd% 3rd + \else th% nth + \fi + }$} +%======================================================================= +\makeatother +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\uktug{UK\,TUG} +\def\postissno{1991 TUG Conference Proceedings} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\postissno{1992 Annual Meeting Proceedings} +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\postissno{1993 Annual Meeting Proceedings} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1996 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1997 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1998 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1999 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\uktug{UK\,TUG} +\def\postissno{1991 TUG Conference Proceedings} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\postissno{1992 Annual Meeting Proceedings} +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\postissno{1993 Annual Meeting Proceedings} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1996 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1997 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1998 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1999 Annual Meeting Proceedings} +\def\postissno{} +%======================================================================= +\def\acro#1{{\small #1}} +\def\CONTEXT% The \CONTEXT\ logo from the \CONTEXT\ sources + {C% + \kern-.0333emo% + \kern-.0333emn% + \kern-.0333em\-\TeX% + \kern-.0333emt} +\def\Java{\acro{JAVA}} +\def\NetBibTeX{{\smc Net}\BibTeX} +\def\ninesmc{\small\sc} +\def\PreTeX{Pre\kern -0.11em\-\TeX} +\def\TeXML{\TeX\-\acro{ML}} +\def\WARMreader{{\small\texttt{WARM}}\texttt{reader}} +\def\XML{\acro{XML}} +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\uktug{UK\,TUG} +\def\postissno{1991 TUG Conference Proceedings} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\postissno{1992 Annual Meeting Proceedings} +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\postissno{1993 Annual Meeting Proceedings} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1996 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1997 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1998 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1999 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\uktug{UK\,TUG} +\def\postissno{1991 TUG Conference Proceedings} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\postissno{1992 Annual Meeting Proceedings} +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\postissno{1993 Annual Meeting Proceedings} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1996 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1997 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1998 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1999 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{2000 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} + +\def \Abstract {{\rm[}Abstract\/{\rm]}} +\def \FDNTeX {\acro{FDN}\TeX} +\def \GeX {G\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX} +\def \mathsPIC {\ssf maths\acro{PIC}} +\def \NTS {$\cal{N}$\lower.5ex\hbox{$\cal{T}$}$\cal{S}$} +\def \PDF {\acro{PDF}} +\def \TeXLive {{\bf\TeX{} Live}} +\def \UPSILON {$\Upsilon$} +\def \XML {\acro{XML}} +\def \XyM {X\kern-.25em\smash{\raise.50ex\hbox{\UPSILON}}\kern-.25em{M}} +\def \XyMTeX {\XyM\kern-.1em\TeX} +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\uktug{UK\,TUG} +\def\postissno{1991 TUG Conference Proceedings} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\postissno{1992 Annual Meeting Proceedings} +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\postissno{1993 Annual Meeting Proceedings} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1996 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1997 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1998 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1999 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{2000 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\uktug{UK\,TUG} +\def\postissno{1991 TUG Conference Proceedings} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\postissno{1992 Annual Meeting Proceedings} +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\postissno{1993 Annual Meeting Proceedings} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1996 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1997 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1998 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1999 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{2000 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\uktug{UK\,TUG} +\def\postissno{1991 TUG Conference Proceedings} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\postissno{1992 Annual Meeting Proceedings} +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\postissno{1993 Annual Meeting Proceedings} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1996 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1997 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1998 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1999 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{2000 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{2001 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{2002 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\uktug{UK\,TUG} +\def\postissno{1991 TUG Conference Proceedings} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\postissno{1992 Annual Meeting Proceedings} +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\postissno{1993 Annual Meeting Proceedings} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1996 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1997 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1998 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1999 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{2000 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{2001 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{2002 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{1989 Conference Proceedings} +\def\otr{{\smc otr}} +\def\postissno{1990 Annual Meeting Proceedings} +\def\postissno{} +\def\postissno{\TeX90 Conference Proceedings} +\def\gaelmhodh#1{% +\if a#1\'a\else\if A#1\'A% +\else\if e#1\'e\else\if E#1\'E% +\else\if i#1\'{\char16}\else\if I#1\'I% +\else\if o#1\'o\else\if O#1\'O% +\else\if u#1\'u\else\if U#1\'U% +\else\if .#1/\else\.#1% +\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\postissno{{\TUG} Resource Directory} +\def\CSTUG{{\tensy C\kern-.1emS\kern-.05em}TUG} +\def\uktug{UK\,TUG} +\def\postissno{1991 TUG Conference Proceedings} +\def\Mc{\setbox0=\hbox{M}\leavevmode\hbox{M\/\vbox to \ht0{\hbox{c}\vfil}}} +\def\postissno{1992 Annual Meeting Proceedings} +\def\<#1>{$\langle\hbox{\rm#1}\rangle$} +\def\LexiTeX{{\rm\ \unskip\hbox{L% + \kern-.06em\hbox{\smc e}% + \kern-.05em\hbox{\smc x}% + \kern-.05em\lower.5ex\hbox{I}% + \kern-.18em\TeX}}} +\def\NexTeX{N\kern-.2em\lower0.5ex\hbox{E}\kern-0.1emX\kern-0.2em\TeX} +\def\postissno{1993 Annual Meeting Proceedings} +\def\postissno{1994 Annual Meeting Proceedings} +\def\postissno{1995 Annual Meeting Proceedings} +\def\postissno{1996 Annual Meeting Proceedings} +\def\postissno{1997 Annual Meeting Proceedings} +\def\postissno{1998 Annual Meeting Proceedings} +\def\postissno{1999 Annual Meeting Proceedings} +\def\postissno{2000 Annual Meeting Proceedings} +\def\postissno{2001 Annual Meeting Proceedings} +\def\postissno{2002 Annual Meeting Proceedings} +\def\AllTeX{(\La)\TeX} +\def\THANH{H{\'a}n Th\^e\llap{\raise 0.5ex\hbox{\'{\relax}}} Th{\'a}nh} +\def\ConTeXt{Con{\TeX}t} +\def\Xypic{\Xy-pic} +\def\LyX{L\kern-.1667em\lower.25em\hbox{Y}\kern-.125emX\spacefactor1000} +\def\mathsPIC{\ssf maths\acro{PIC}} +\def\curve{{\bf C}\kern-.32ex\raise-.3ex\hbox{u}\kern-.2ex r\kern-.25ex{\bf V}\kern-.6ex\raise-.3ex\hbox{e}} diff --git a/Master/texmf-dist/tex/plain/misc/wasyfont.tex b/Master/texmf-dist/tex/plain/misc/wasyfont.tex new file mode 100644 index 00000000000..7109ce06971 --- /dev/null +++ b/Master/texmf-dist/tex/plain/misc/wasyfont.tex @@ -0,0 +1,172 @@ +% this is wasyfont.tex version 2.01--92/10 +\font\tenwasy = wasy10 +\font\wasyb = wasyb10 +\font\ninewasy = wasy9 +\font\eightwasy = wasy8 +\font\sevenwasy = wasy7 +\font\fivewasy = wasy5 +\newfam\wasyfam +\newcount\wasyfamcount +\wasyfamcount=\wasyfam \multiply\wasyfamcount by 256 +\def\wasy{\fam\wasyfam\tenwasy} +\textfont\wasyfam=\tenwasy +\scriptfont\wasyfam=\sevenwasy +\scriptscriptfont\wasyfam=\fivewasy +%%%%%% special macro +\def\overstrike#1#2{{\setbox0\hbox{$#2$}\hbox to \wd0{\hss + $#1$\hss}\kern-\wd0\box0}} +%%%%%% special symbols +\def\male{\hbox{\wasy\char"1A}} +\def\female{\hbox{\wasy\char"19}} +\def\currency{{\wasy\char"1B}} +\def\phone{{\wasy\char"07}} +\def\recorder{{\wasy\char"06}} +\def\clock{{\wasy\char"1C}} +\def\lightning{{\wasy\char"12}} +\def\pointer{{\wasy\char"09}} +\def\RIGHTarrow{{\wasy\char"11}} +\def\LEFTarrow{{\wasy\char"10}} +\def\UParrow{{\wasy\char"4B}} +\def\DOWNarrow{{\wasy\char"4C}} +\def\AC{\hbox{\kern0.5pt\wasy\char"3A\kern0.5pt}} +\def\HF{\lower0.9pt\hbox to 0pt{\kern0.5pt\wasy\char"3A\hss}% + \raise0.9pt\hbox{\kern0.5pt\wasy\char"3A\kern0.5pt}} +\def\VHF{\hbox{\wasy\char"40}} +\def\Box{\hbox{\wasy\char"32}}\let\Square\Box +\def\XBox{\hbox{\wasy\char"34}} +\def\Diamond{\hbox{\wasy\char"33}} +\def\hexagon{\hbox{\wasy\char"37}} +\def\pentagon{\hbox{\wasy\char"44}} +\def\octagon{\hbox{\wasy\char"38}} +\def\varhexagon{\hbox{\wasy\char"39}} +\def\hexstar{\hbox{\wasy\char"41}} +\def\varhexstar{\hbox{\wasy\char"42}} +\def\davidsstar{\hbox{\wasy\char"43}} +\def\diameter{\hbox{\wasy\char"1F}} +\def\invdiameter{\hbox{\wasy\char"15}} +\def\varangle{\hbox{\wasy\char"1E}} +\def\lozenge{\hbox{\wasy\char"35}} +\def\kreuz{\hbox{\wasy\char"36}} +\def\smiley{\hbox{\wasy\char"2C}} +\def\frownie{\hbox{\wasy\char"2F}} +\def\blacksmiley{\hbox{\wasy\char"2D}} +\def\sun{\hbox{\wasy\char"2E}} +\def\checked{\hbox{\wasy\char"08}} +\def\bell{\hbox{\wasy\char"0A}} +\def\eighthnote{\hbox{\wasy\char"0B}} +\def\quarternote{\hbox{\wasy\char"0C}} +\def\halfnote{\hbox{\wasy\char"0D}} +\def\fullnote{\hbox{\wasy\char"0E}} +\def\twonotes{\hbox{\wasy\char"0F}} +\def\brokenvert{\hbox{\wasy\char"7C}} +\def\therefore{\hbox{\wasy\char"05}} +\def\ataribox{\hbox{\wasy\char"6D}} +\def\Circle{\hbox{\wasy\char"23}} +\def\CIRCLE{\hbox{\wasy\char"20}} +\def\Leftcircle{\hbox{\wasy\char"49}} +\def\LEFTCIRCLE{\hbox{\wasy\char"47}} +\def\Rightcircle{\hbox{\wasy\char"4A}} +\def\RIGHTCIRCLE{\hbox{\wasy\char"48}} +\def\LEFTcircle{\hbox to 0pt{\wasy\char"47\hss}\hbox{\wasy\char"23}} +\def\RIGHTcircle{\hbox to 0pt{\wasy\char"48\hss}\hbox{\wasy\char"23}} +%%%%%% astronomy +\def\vernal{\hbox{\wasy\char"17}} +\def\ascnode{\hbox{\wasy\char"13}} +\def\descnode{\hbox{\wasy\char"14}} +\def\fullmoon{\hbox{\wasy\char"23}} +\def\newmoon{\hbox{\wasy\char"20}} +\def\leftmoon{\hbox{\wasy\char"24}} +\def\rightmoon{\hbox{\wasy\char"25}} +\def\astrosun{\hbox{\tensy\char"0C}} +\def\mercury{\hbox{\wasy\char"27}} +\def\venus{\raise0.2ex\hbox{\wasy\char"19}} +\def\earth{\lower0.3ex\hbox{\wasy\char"26}} +\def\mars{\lower0.2ex\hbox{\wasy\char"1A}} +\def\jupiter{\hbox{\wasy\char"58}} +\def\saturn{\hbox{\wasy\char"59}} +\def\uranus{\hbox{\wasy\char"5A}} +\def\neptune{\hbox{\wasy\char"5B}} +\def\pluto{\hbox{\wasy\char"5C}} +\def\conjunction{\hbox{\wasy\char"56}} +\def\opposition{\hbox{\wasy\char"57}} +%%%%%% the zodiac +\def\aries{\hbox{\wasy\char"17}} +\def\taurus{\hbox{\wasy\char"5D}} +\def\gemini{\hbox{\wasy\char"5E}} +\def\cancer{\hbox{\wasy\char"5F}} +\def\leo{\hbox{\wasy\char"13}} +\def\virgo{\hbox{\wasy\char"60}} +\def\libra{\hbox{\wasy\char"61}} +\def\scorpio{\hbox{\wasy\char"62}} +\def\sagittarius{\hbox{\wasy\char"63}} +\def\capricornus{\hbox{\wasy\char"64}} +\def\aquarius{\hbox{\wasy\char"65}} +\def\pisces{\hbox{\wasy\char"66}} +%%%%%% APL characters +\def\APLstar{{\hbox{\wasy\char"45}}} +\def\APLlog{{\hbox{\wasy\char"16}}} +\def\APLbox{{\hbox{\wasy\char"7E}}} +\def\APLup{{\hbox{\wasy\char"00}}} +\def\APLdown{{\hbox{\wasy\char"46}}} +\def\APLinput{{\hbox{\wasy\char"7D}}} +\def\APLcomment{{\hbox{\wasy\char"7F}}} +\def\APLinv{{\hbox to 0pt{\tensy\char"04\hss}\APLbox}} +\def\APLuparrowbox{{\hbox{\wasy\char"6E}}} +\def\APLdownarrowbox{{\hbox{\wasy\char"6F}}} +\def\APLleftarrowbox{{\hbox{\wasy\char"70}}} +\def\APLrightarrowbox{{\hbox{\wasy\char"71}}} +\def\notbackslash{\overstrike{\backslash}{-}} +\def\notslash{\overstrike{/}{-}} +\def\APLnot#1{\overstrike{\sim}{#1}} +\def\APLcirc#1{\overstrike{\circ}{#1}} +\def\APLvert#1{\overstrike{\vert}{#1}} +\def\APLminus{\raise0.7ex\hbox{$-$}} +%%%%%% diagrams +\def\photon{\hbox{\wasy\char"3A\char"3A\char"3A\char"3A}} +\def\gluon{\hbox{\wasy\char"51\char"50\char"50\char"50% + \char"50\char"50\char"50\char"52}} +%%%%%% math characters +\def\Bowtie{\hbox{\wasy\char"31}} +\def\leftturn{\hbox{\wasy\char"22}} +\def\rightturn{\hbox{\wasy\char"21}} +%%%%%% special characters +\def\cent{\hbox{\wasy\char"67}} +\def\permil{\hbox{\wasy\char"68}} +\def\agemO{{\wasy\char"30}} +\def\thorn{{\wasy\char"69}} +\def\Thorn{{\wasy\char"6A}} +\def\dh{{\wasy\char"6B}} +\def\Dh{\leavevmode{\rm\setbox0\hbox{D}% + \hbox to\wd0{\kern 0.04em\char32\hss D}}} +\def\openo{{\wasy\char"6C}} +\def\inve{{\wasy\char"55}} +%%%%%% math operators as mathchars +\def\wasymathchardef#1#2{% + \count255=\wasyfamcount + \advance\count255 by"#1 + \mathchardef#2\count255} +\wasymathchardef{3001}{\lhd} +\wasymathchardef{3003}{\rhd} +\wasymathchardef{3010}{\LHD} +\wasymathchardef{3011}{\RHD} +\wasymathchardef{3002}{\unlhd} +\wasymathchardef{3004}{\unrhd} +\wasymathchardef{303C}{\sqsubset} +\wasymathchardef{303D}{\sqsupset} +\wasymathchardef{303E}{\apprle} +\wasymathchardef{303F}{\apprge} +\wasymathchardef{301D}{\varpropto} +\wasymathchardef{0018}{\invneg} +\wasymathchardef{303B}{\leadsto} +\wasymathchardef{2023}{\ocircle} +\wasymathchardef{3016}{\logof} +\wasymathchardef{1072}{\varint} +\wasymathchardef{1073}{\iint} +\wasymathchardef{1074}{\iiint} +\wasymathchardef{1075}{\varoint} +\wasymathchardef{1076}{\oiint} +% +%%%%%% new definitions +% +\def\newpropto{\let\propto\varpropto} +\def\newint{\let\int\varint \let\oint\varoint} % default limits diff --git a/Master/texmf-dist/tex/plain/misc/xepsf.tex b/Master/texmf-dist/tex/plain/misc/xepsf.tex new file mode 100644 index 00000000000..b2b1a4605c2 --- /dev/null +++ b/Master/texmf-dist/tex/plain/misc/xepsf.tex @@ -0,0 +1,219 @@ +% XEPSF.TEX macro file: +% Same as EPSF.TEX except that it uses the ExactBoundingBox put out by +% MetaPost under appropriate coding. +% +% (I made this unnecessary on 22 Jan 97 by changing MetaPost to +% output the exact bounding box when prologues<0. But I retain this +% file for compatibility with older uses of MetaPost, e.g. gbmac.tex.) +% +% Written by Tomas Rokicki of Radical Eye Software, 29 Mar 1989. +% Revised by Don Knuth, 3 Jan 1990. +% Revised by Tomas Rokicki to accept bounding boxes with no +% space after the colon, 18 Jul 1990. +% +% TeX macros to include an Encapsulated PostScript graphic. +% Works by finding the bounding box comment, +% calculating the correct scale values, and inserting a vbox +% of the appropriate size at the current position in the TeX document. +% +% To use with the center environment of LaTeX, preface the \epsffile +% call with a \leavevmode. (LaTeX should probably supply this itself +% for the center environment.) +% +% To use, simply say +% \input epsf % somewhere early on in your TeX file +% \epsfbox{filename.ps} % where you want to insert a vbox for a figure +% +% Alternatively, you can type +% +% \epsfbox[0 0 30 50]{filename.ps} % to supply your own BB +% +% which will not read in the file, and will instead use the bounding +% box you specify. +% +% The effect will be to typeset the figure as a TeX box, at the +% point of your \epsfbox command. By default, the graphic will have its +% `natural' width (namely the width of its bounding box, as described +% in filename.ps). The TeX box will have depth zero. +% +% You can enlarge or reduce the figure by saying +% \epsfxsize=<dimen> \epsfbox{filename.ps} +% (or +% \epsfysize=<dimen> \epsfbox{filename.ps}) +% instead. Then the width of the TeX box will be \epsfxsize and its +% height will be scaled proportionately (or the height will be +% \epsfysize and its width will be scaled proportiontally). The +% width (and height) is restored to zero after each use. +% +% A more general facility for sizing is available by defining the +% \epsfsize macro. Normally you can redefine this macro +% to do almost anything. The first parameter is the natural x size of +% the PostScript graphic, the second parameter is the natural y size +% of the PostScript graphic. It must return the xsize to use, or 0 if +% natural scaling is to be used. Common uses include: +% +% \epsfxsize % just leave the old value alone +% 0pt % use the natural sizes +% #1 % use the natural sizes +% \hsize % scale to full width +% 0.5#1 % scale to 50% of natural size +% \ifnum#1>\hsize\hsize\else#1\fi % smaller of natural, hsize +% +% If you want TeX to report the size of the figure (as a message +% on your terminal when it processes each figure), say `\epsfverbosetrue'. +% +\newread\epsffilein % file to \read +\newif\ifepsffileok % continue looking for the bounding box? +\newif\ifepsfbbfound % success? +\newif\ifepsfverbose % report what you're making? +\newdimen\epsfxsize % horizontal size after scaling +\newdimen\epsfysize % vertical size after scaling +\newdimen\epsftsize % horizontal size before scaling +\newdimen\epsfrsize % vertical size before scaling +\newdimen\epsftmp % register for arithmetic manipulation +\newdimen\pspoints % conversion factor +% +\pspoints=1bp % Adobe points are `big' +\epsfxsize=0pt % Default value, means `use natural size' +\epsfysize=0pt % ditto +% +\def\epsfbox#1{\global\def\epsfllx{72}\global\def\epsflly{72}% + \global\def\epsfurx{540}\global\def\epsfury{720}% + \def\lbracket{[}\def\testit{#1}\ifx\testit\lbracket + \let\next=\epsfgetlitbb\else\let\next=\epsfnormal\fi\next{#1}}% +% +\def\epsfgetlitbb#1#2 #3 #4 #5]#6{\epsfgrab #2 #3 #4 #5 .\\% + \epsfsetgraph{#6}}% +% +\def\epsfnormal#1{\epsfgetbb{#1}\epsfsetgraph{#1}}% +% +\def\epsfgetbb#1{% +% +% The first thing we need to do is to open the +% PostScript file, if possible. +% +\openin\epsffilein=#1 +\ifeof\epsffilein\errmessage{I couldn't open #1, will ignore it}\else +% +% Okay, we got it. Now we'll scan lines until we find one that doesn't +% start with %. We're looking for the bounding box comment. +% + {\epsffileoktrue \chardef\other=12 + \def\do##1{\catcode`##1=\other}\dospecials \catcode`\ =10 + \loop + \read\epsffilein to \epsffileline + \ifeof\epsffilein\epsffileokfalse\else +% +% We check to see if the first character is a % sign; +% if not, we stop reading (unless the line was entirely blank); +% if so, we look further and stop only if the line begins with +% `%%%ExactBoundingBox:'. +% + \expandafter\epsfaux\epsffileline:. \\% + \fi + \ifepsffileok\repeat + \ifepsfbbfound\else + \ifepsfverbose\message{No bounding box comment in #1; using defaults}\fi\fi + }\closein\epsffilein\fi}% +% +% Now we have to calculate the scale and offset values to use. +% First we compute the natural sizes. +% +\def\epsfclipstring{}% do we clip or not? If so, +\def\epsfclipon{\def\epsfclipstring{ clip}}% +\def\epsfclipoff{\def\epsfclipstring{}}% +% +\def\epsfsetgraph#1{% + \epsfrsize=\epsfury\pspoints + \advance\epsfrsize by-\epsflly\pspoints + \epsftsize=\epsfurx\pspoints + \advance\epsftsize by-\epsfllx\pspoints +% +% If `epsfxsize' is 0, we default to the natural size of the picture. +% Otherwise we scale the graph to be \epsfxsize wide. +% + \epsfxsize\epsfsize\epsftsize\epsfrsize + \ifnum\epsfxsize=0 \ifnum\epsfysize=0 + \epsfxsize=\epsftsize \epsfysize=\epsfrsize + \epsfrsize=0pt +% +% We have a sticky problem here: TeX doesn't do floating point arithmetic! +% Our goal is to compute y = rx/t. The following loop does this reasonably +% fast, with an error of at most about 16 sp (about 1/4000 pt). +% + \else\epsftmp=\epsftsize \divide\epsftmp\epsfrsize + \epsfxsize=\epsfysize \multiply\epsfxsize\epsftmp + \multiply\epsftmp\epsfrsize \advance\epsftsize-\epsftmp + \epsftmp=\epsfysize + \loop \advance\epsftsize\epsftsize \divide\epsftmp 2 + \ifnum\epsftmp>0 + \ifnum\epsftsize<\epsfrsize\else + \advance\epsftsize-\epsfrsize \advance\epsfxsize\epsftmp \fi + \repeat + \epsfrsize=0pt + \fi + \else \ifnum\epsfysize=0 + \epsftmp=\epsfrsize \divide\epsftmp\epsftsize + \epsfysize=\epsfxsize \multiply\epsfysize\epsftmp + \multiply\epsftmp\epsftsize \advance\epsfrsize-\epsftmp + \epsftmp=\epsfxsize + \loop \advance\epsfrsize\epsfrsize \divide\epsftmp 2 + \ifnum\epsftmp>0 + \ifnum\epsfrsize<\epsftsize\else + \advance\epsfrsize-\epsftsize \advance\epsfysize\epsftmp \fi + \repeat + \epsfrsize=0pt + \else + \epsfrsize=\epsfysize + \fi + \fi +% +% Finally, we make the vbox and stick in a \special that dvips can parse. +% + \ifepsfverbose\message{#1: width=\the\epsfxsize, height=\the\epsfysize}\fi + \epsftmp=10\epsfxsize \divide\epsftmp\pspoints + \vbox to\epsfysize{\vfil\hbox to\epsfxsize{% + \ifnum\epsfrsize=0\relax + \special{PSfile=#1 llx=\epsfllx\space lly=\epsflly\space + urx=\epsfurx\space ury=\epsfury\space rwi=\number\epsftmp + \epsfclipstring}% + \else + \epsfrsize=10\epsfysize \divide\epsfrsize\pspoints + \special{PSfile=#1 llx=\epsfllx\space lly=\epsflly\space + urx=\epsfurx\space ury=\epsfury\space rwi=\number\epsftmp\space + rhi=\number\epsfrsize \epsfclipstring}% + \fi + \hfil}}% +\global\epsfxsize=0pt\global\epsfysize=0pt}% +% +% We still need to define the tricky \epsfaux macro. This requires +% a couple of magic constants for comparison purposes. +% +{\catcode`\%=12 \global\let\epsfpercent=%\global\def\epsfbblit{%%ExactBoundingBox}}% +% +% So we're ready to check for `%%ExactBoundingBox:' and to grab the +% values if they are found. +% +\long\def\epsfaux#1#2:#3\\{\ifx#1\epsfpercent + \def\testit{#2}\ifx\testit\epsfbblit + \epsfgrab #3 . . . \\% + \epsffileokfalse + \global\epsfbbfoundtrue + \fi\else\ifx#1\par\else\epsffileokfalse\fi\fi}% +% +% Here we grab the values and stuff them in the appropriate definitions. +% +\def\epsfempty{}% +\def\epsfgrab #1 #2 #3 #4 #5\\{% +\global\def\epsfllx{#1}\ifx\epsfllx\epsfempty + \epsfgrab #2 #3 #4 #5 .\\\else + \global\def\epsflly{#2}% + \global\def\epsfurx{#3}\global\def\epsfury{#4}\fi}% +% +% We default the epsfsize macro. +% +\def\epsfsize#1#2{\epsfxsize} +% +% Finally, another definition for compatibility with older macros. +% +\let\epsffile=\epsfbox diff --git a/Master/texmf-dist/tex/plain/mnras/mn.tex b/Master/texmf-dist/tex/plain/mnras/mn.tex new file mode 100644 index 00000000000..cf6b0cbedcd --- /dev/null +++ b/Master/texmf-dist/tex/plain/mnras/mn.tex @@ -0,0 +1,3034 @@ +% MN.TEX (Computer Modern version) +% +% plain TeX single / double column macros for the +% Monthly Notices of Royal Astronomical Society +% +% v1.5 (mn.tex) --- released 25th August 1994 (M. Reed) +% v1.4 " --- released 22nd February 1994 +% v1.3 (mnd.tex) --- released 28th November 1992 +% v1.26 " --- released 1st August 1992 +% v1.25 " --- released 25th February 1992 +% +% Copyright Cambridge University Press +% +% > Incorporating special symbol code from laa.sty v1.1 (25th Feb 1991) +% used with the permission of Springer Verlag. +% > Incorporating parts of mssymb.tex (8th July 1987). +% > Incorporating NewFont.sty v ALPHA patchlevel 8 (16th August 1994). + +\catcode `\@=11 % @ signs are letters + +\def\@version{1.5} +\def\@verdate{25th Aug 1994} + + +% Fonts: Computer Modern / Monotype Times (CUP only) +% +% Font family sizes available: +% 8pt, 9pt, 10pt, 11pt, 14pt and 17pt. +% +% Faces available: +% \rm, math italic, symbol, \it, \bf, \sl, \tt, \sc, \sf, \cal, \em, +% \mit and \oldstyle. + +% define the typeface in use + +\newif\ifprod@font + +\ifx\@typeface\undefined + \def\@typeface{Comp. Modern}\prod@fontfalse +\else + \prod@fonttrue % We want Times +\fi + +\def\newfam{\alloc@8\fam\chardef\sixt@@n} % made not outer + +\ifprod@font +% +\font\fiverm=mtr10 at 5pt +\font\fivebf=mtbx10 at 5pt +\font\fiveit=mtti10 at 5pt +\font\fivesl=mtsl10 at 5pt +\font\fivett=cmtt8 at 5pt \hyphenchar\fivett=-1 +\font\fivecsc=mtcsc10 at 5pt +\font\fivesf=mtss10 at 5pt +\font\fivei=mtmi10 at 5pt \skewchar\fivei='177 +\font\fivesy=mtsy10 at 5pt \skewchar\fivesy='60 + +\font\sixrm=mtr10 at 6pt +\font\sixbf=mtbx10 at 6pt +\font\sixit=mtti10 at 6pt +\font\sixsl=mtsl10 at 6pt +\font\sixtt=cmtt8 at 6pt \hyphenchar\sixtt=-1 +\font\sixcsc=mtcsc10 at 6pt +\font\sixsf=mtss10 at 6pt +\font\sixi=mtmi10 at 6pt \skewchar\sixi='177 +\font\sixsy=mtsy10 at 6pt \skewchar\sixsy='60 + +\font\sevenrm=mtr10 at 7pt +\font\sevenbf=mtbx10 at 7pt +\font\sevenit=mtti10 at 7pt +\font\sevensl=mtsl10 at 7pt +\font\seventt=cmtt8 at 7pt \hyphenchar\seventt=-1 +\font\sevencsc=mtcsc10 at 7pt +\font\sevensf=mtss10 at 7pt +\font\seveni=mtmi10 at 7pt \skewchar\seveni='177 +\font\sevensy=mtsy10 at 7pt \skewchar\sevensy='60 + +\font\eightrm=mtr10 at 8pt +\font\eightbf=mtbx10 at 8pt +\font\eightit=mtti10 at 8pt +\font\eighti=mtmi10 at 8pt \skewchar\eighti='177 +\font\eightsy=mtsy10 at 8pt \skewchar\eightsy='60 +\font\eightsl=mtsl10 at 8pt +\font\eighttt=cmtt8 \hyphenchar\eighttt=-1 +\font\eightcsc=mtcsc10 at 8pt +\font\eightsf=mtss10 at 8pt + +\font\ninerm=mtr10 at 9pt +\font\ninebf=mtbx10 at 9pt +\font\nineit=mtti10 at 9pt +\font\ninei=mtmi10 at 9pt \skewchar\ninei='177 +\font\ninesy=mtsy10 at 9pt \skewchar\ninesy='60 +\font\ninesl=mtsl10 at 9pt +\font\ninett=cmtt9 \hyphenchar\ninett=-1 +\font\ninecsc=mtcsc10 at 9pt +\font\ninesf=mtss10 at 9pt + +\font\tenrm=mtr10 +\font\tenbf=mtbx10 +\font\tenit=mtti10 +\font\teni=mtmi10 \skewchar\teni='177 +\font\tensy=mtsy10 \skewchar\tensy='60 +\font\tenex=cmex10 +\font\tensl=mtsl10 +\font\tentt=cmtt10 \hyphenchar\tentt=-1 +\font\tencsc=mtcsc10 +\font\tensf=mtss10 + +\font\elevenrm=mtr10 at 11pt +\font\elevenbf=mtbx10 at 11pt +\font\elevenit=mtti10 at 11pt +\font\eleveni=mtmi10 at 11pt \skewchar\eleveni='177 +\font\elevensy=mtsy10 at 11pt \skewchar\elevensy='60 +\font\elevensl=mtsl10 at 11pt +\font\eleventt=cmtt10 at 11pt \hyphenchar\eleventt=-1 +\font\elevencsc=mtcsc10 at 11pt +\font\elevensf=mtss10 at 11pt + +\font\twelverm=mtr10 at 12pt +\font\twelvebf=mtbx10 at 12pt +\font\twelveit=mtti10 at 12pt +\font\twelvesl=mtsl10 at 12pt +\font\twelvett=cmtt12 \hyphenchar\twelvett=-1 +\font\twelvecsc=mtcsc10 at 12pt +\font\twelvesf=mtss10 at 12pt +\font\twelvei=mtmi10 at 12pt \skewchar\twelvei='177 +\font\twelvesy=mtsy10 at 12pt \skewchar\twelvesy='60 + +\font\fourteenrm=mtr10 at 14pt +\font\fourteenbf=mtbx10 at 14pt +\font\fourteenit=mtti10 at 14pt +\font\fourteeni=mtmi10 at 14pt \skewchar\fourteeni='177 +\font\fourteensy=mtsy10 at 14pt \skewchar\fourteensy='60 +\font\fourteensl=mtsl10 at 14pt +\font\fourteentt=cmtt12 at 14pt \hyphenchar\fourteentt=-1 +\font\fourteencsc=mtcsc10 at 14pt +\font\fourteensf=mtss10 at 14pt + +\font\seventeenrm=mtr10 at 17pt +\font\seventeenbf=mtbx10 at 17pt +\font\seventeenit=mtti10 at 17pt +\font\seventeeni=mtmi10 at 17pt \skewchar\seventeeni='177 +\font\seventeensy=mtsy10 at 17pt \skewchar\seventeensy='60 +\font\seventeensl=mtsl10 at 17pt +\font\seventeentt=cmtt12 at 17pt \hyphenchar\seventeentt=-1 +\font\seventeencsc=mtcsc10 at 17pt +\font\seventeensf=mtss10 at 17pt +% +\else +% +\font\fiverm=cmr5 +\font\fivei=cmmi5 \skewchar\fivei='177 +\font\fivesy=cmsy5 \skewchar\fivesy='60 +\font\fivebf=cmbx5 + +\font\sixrm=cmr6 +\font\sixi=cmmi6 \skewchar\sixi='177 +\font\sixsy=cmsy6 \skewchar\sixsy='60 +\font\sixbf=cmbx6 + +\font\sevenrm=cmr7 +\font\sevenit=cmti7 +\font\seveni=cmmi7 \skewchar\seveni='177 +\font\sevensy=cmsy7 \skewchar\sevensy='60 +\font\sevenbf=cmbx7 + +\font\eightrm=cmr8 +\font\eightbf=cmbx8 +\font\eightit=cmti8 +\font\eighti=cmmi8 \skewchar\eighti='177 +\font\eightsy=cmsy8 \skewchar\eightsy='60 +\font\eightsl=cmsl8 +\font\eighttt=cmtt8 \hyphenchar\eighttt=-1 +\font\eightcsc=cmcsc10 at 8pt +\font\eightsf=cmss8 + +\font\ninerm=cmr9 +\font\ninebf=cmbx9 +\font\nineit=cmti9 +\font\ninei=cmmi9 \skewchar\ninei='177 +\font\ninesy=cmsy9 \skewchar\ninesy='60 +\font\ninesl=cmsl9 +\font\ninett=cmtt9 \hyphenchar\ninett=-1 +\font\ninecsc=cmcsc10 at 9pt +\font\ninesf=cmss9 + +\font\tenrm=cmr10 +\font\tenbf=cmbx10 +\font\tenit=cmti10 +\font\teni=cmmi10 \skewchar\teni='177 +\font\tensy=cmsy10 \skewchar\tensy='60 +\font\tenex=cmex10 +\font\tensl=cmsl10 +\font\tentt=cmtt10 \hyphenchar\tentt=-1 +\font\tencsc=cmcsc10 +\font\tensf=cmss10 + +\font\elevenrm=cmr10 scaled \magstephalf +\font\elevenbf=cmbx10 scaled \magstephalf +\font\elevenit=cmti10 scaled \magstephalf +\font\eleveni=cmmi10 scaled \magstephalf \skewchar\eleveni='177 +\font\elevensy=cmsy10 scaled \magstephalf \skewchar\elevensy='60 +\font\elevensl=cmsl10 scaled \magstephalf +\font\eleventt=cmtt10 scaled \magstephalf \hyphenchar\eleventt=-1 +\font\elevencsc=cmcsc10 scaled \magstephalf +\font\elevensf=cmss10 scaled \magstephalf + +\font\twelverm=cmr10 scaled \magstep1 +\font\twelvebf=cmbx10 scaled \magstep1 +\font\twelvei=cmmi10 scaled \magstep1 \skewchar\twelvei='177 +\font\twelvesy=cmsy10 scaled \magstep1 \skewchar\twelvesy='60 + +\font\fourteenrm=cmr10 scaled \magstep2 +\font\fourteenbf=cmbx10 scaled \magstep2 +\font\fourteenit=cmti10 scaled \magstep2 +\font\fourteeni=cmmi10 scaled \magstep2 \skewchar\fourteeni='177 +\font\fourteensy=cmsy10 scaled \magstep2 \skewchar\fourteensy='60 +\font\fourteensl=cmsl10 scaled \magstep2 +\font\fourteentt=cmtt10 scaled \magstep2 \hyphenchar\fourteentt=-1 +\font\fourteencsc=cmcsc10 scaled \magstep2 +\font\fourteensf=cmss10 scaled \magstep2 + +\font\seventeenrm=cmr10 scaled \magstep3 +\font\seventeenbf=cmbx10 scaled \magstep3 +\font\seventeenit=cmti10 scaled \magstep3 +\font\seventeeni=cmmi10 scaled \magstep3 \skewchar\seventeeni='177 +\font\seventeensy=cmsy10 scaled \magstep3 \skewchar\seventeensy='60 +\font\seventeensl=cmsl10 scaled \magstep3 +\font\seventeentt=cmtt10 scaled \magstep3 \hyphenchar\seventeentt=-1 +\font\seventeencsc=cmcsc10 scaled \magstep3 +\font\seventeensf=cmss10 scaled \magstep3 +% +\fi + +\def\hexnumber#1{\ifcase#1 0\or1\or2\or3\or4\or5\or6\or7\or8\or9\or + A\or B\or C\or D\or E\or F\fi} + +\def\makestrut{% + \setbox\strutbox=\hbox{% + \vrule height.7\baselineskip depth.3\baselineskip width \z@}% +} + +\def\baselinestretch{1} +\newskip\tmp@bls + +\def\b@ls#1{% set baseline using \baselinestretch as a scale factor + \tmp@bls=#1\relax + \baselineskip=#1\relax\makestrut + \normalbaselineskip=\baselinestretch\tmp@bls + \normalbaselines +} + +\def\nostb@ls#1{% set baseline skip ignoring \baselinestretch + \normalbaselineskip=#1\relax + \normalbaselines + \makestrut +} + + +% families \itfam, \slfam, \bffam, \ttfam defined in PLAIN. +% +% \itfam is \fam4 +% \slfam is \fam5 +% \bffam is \fam6 +% \ttfam is \fam7 + +\newfam\scfam % \fam8 +\newfam\sffam % \fam9 + +\def\mit{\fam\@ne} +\def\cal{\fam\tw@} +\def\em{\ifdim\fontdimen1\font>\z@ \rm\else\it\fi} + +\textfont3=\tenex +\scriptfont3=\tenex +\scriptscriptfont3=\tenex + +\setbox0=\hbox{\tenex B} \p@renwd=\wd0 % width of the big left ( + +\def\eightpoint{% 8^6^5 on 10pt + \def\rm{\fam0\eightrm}% + \textfont0=\eightrm \scriptfont0=\sixrm \scriptscriptfont0=\fiverm% + \textfont1=\eighti \scriptfont1=\sixi \scriptscriptfont1=\fivei% + \textfont2=\eightsy \scriptfont2=\sixsy \scriptscriptfont2=\fivesy% + \textfont\itfam=\eightit\def\it{\fam\itfam\eightit}% + \ifprod@font + \scriptfont\itfam=\sixit + \scriptscriptfont\itfam=\fiveit + \else + \scriptfont\itfam=\eightit + \scriptscriptfont\itfam=\eightit + \fi + \textfont\bffam=\eightbf% + \scriptfont\bffam=\sixbf% + \scriptscriptfont\bffam=\fivebf% + \def\bf{\fam\bffam\eightbf}% + \textfont\slfam=\eightsl\def\sl{\fam\slfam\eightsl}% + \ifprod@font + \scriptfont\slfam=\sixsl + \scriptscriptfont\slfam=\fivesl + \else + \scriptfont\slfam=\eightsl + \scriptscriptfont\slfam=\eightsl + \fi + \textfont\ttfam=\eighttt\def\tt{\fam\ttfam\eighttt}% + \ifprod@font + \scriptfont\ttfam=\sixtt + \scriptscriptfont\ttfam=\fivett + \else + \scriptfont\ttfam=\eighttt + \scriptscriptfont\ttfam=\eighttt + \fi + \textfont\scfam=\eightcsc\def\sc{\fam\scfam\eightcsc}% + \ifprod@font + \scriptfont\scfam=\sixcsc + \scriptscriptfont\scfam=\fivecsc + \else + \scriptfont\scfam=\eightcsc + \scriptscriptfont\scfam=\eightcsc + \fi + \textfont\sffam=\eightsf\def\sf{\fam\sffam\eightsf}% + \ifprod@font + \scriptfont\sffam=\sixsf + \scriptscriptfont\sffam=\fivesf + \else + \scriptfont\sffam=\eightsf + \scriptscriptfont\sffam=\eightsf + \fi + \def\oldstyle{\fam\@ne\eighti}% + \b@ls{10pt}\rm\@viiipt% +} +\def\@viiipt{} + +\def\ninepoint{% 9^6^5 on 11pt (two col) / 12 (single col) + \def\rm{\fam0\ninerm}% + \textfont0=\ninerm \scriptfont0=\sixrm \scriptscriptfont0=\fiverm% + \textfont1=\ninei \scriptfont1=\sixi \scriptscriptfont1=\fivei% + \textfont2=\ninesy \scriptfont2=\sixsy \scriptscriptfont2=\fivesy% + \textfont\itfam=\nineit\def\it{\fam\itfam\nineit}% + \ifprod@font + \scriptfont\itfam=\sixit + \scriptscriptfont\itfam=\fiveit + \else + \scriptfont\itfam=\nineit + \scriptscriptfont\itfam=\nineit + \fi + \textfont\bffam=\ninebf% + \scriptfont\bffam=\sixbf% + \scriptscriptfont\bffam=\fivebf% + \def\bf{\fam\bffam\ninebf}% + \textfont\slfam=\ninesl\def\sl{\fam\slfam\ninesl}% + \ifprod@font + \scriptfont\slfam=\sixsl + \scriptscriptfont\slfam=\fivesl + \else + \scriptfont\slfam=\ninesl + \scriptscriptfont\slfam=\ninesl + \fi + \textfont\ttfam=\ninett\def\tt{\fam\ttfam\ninett}% + \ifprod@font + \scriptfont\ttfam=\sixtt + \scriptscriptfont\ttfam=\fivett + \else + \scriptfont\ttfam=\ninett + \scriptscriptfont\ttfam=\ninett + \fi + \textfont\scfam=\ninecsc\def\sc{\fam\scfam\ninecsc}% + \ifprod@font + \scriptfont\scfam=\sixcsc + \scriptscriptfont\scfam=\fivecsc + \else + \scriptfont\scfam=\ninecsc + \scriptscriptfont\scfam=\ninecsc + \fi + \textfont\sffam=\ninesf\def\sf{\fam\sffam\ninesf}% + \ifprod@font + \scriptfont\sffam=\sixsf + \scriptscriptfont\sffam=\fivesf + \else + \scriptfont\sffam=\ninesf + \scriptscriptfont\sffam=\ninesf + \fi + \def\oldstyle{\fam\@ne\ninei}% + \b@ls{\TextLeading plus \Feathering}\rm\@ixpt% +} +\def\@ixpt{} + +\def\tenpoint{% 10^7^5 on 11pt + \def\rm{\fam0\tenrm}% + \textfont0=\tenrm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm% + \textfont1=\teni \scriptfont1=\seveni \scriptscriptfont1=\fivei% + \textfont2=\tensy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy% + \textfont\itfam=\tenit\def\it{\fam\itfam\tenit}% + \ifprod@font + \scriptfont\itfam=\sevenit + \scriptscriptfont\itfam=\fiveit + \else + \scriptfont\itfam=\tenit + \scriptscriptfont\itfam=\tenit + \fi + \textfont\bffam=\tenbf% + \scriptfont\bffam=\sevenbf% + \scriptscriptfont\bffam=\fivebf% + \def\bf{\fam\bffam\tenbf}% + \textfont\slfam=\tensl\def\sl{\fam\slfam\tensl}% + \ifprod@font + \scriptfont\slfam=\sevensl + \scriptscriptfont\slfam=\fivesl + \else + \scriptfont\slfam=\tensl + \scriptscriptfont\slfam=\tensl + \fi + \textfont\ttfam=\tentt\def\tt{\fam\ttfam\tentt}% + \ifprod@font + \scriptfont\ttfam=\seventt + \scriptscriptfont\ttfam=\fivett + \else + \scriptfont\ttfam=\tentt + \scriptscriptfont\ttfam=\tentt + \fi + \textfont\scfam=\tencsc\def\sc{\fam\scfam\tencsc}% + \ifprod@font + \scriptfont\scfam=\sevencsc + \scriptscriptfont\scfam=\fivecsc + \else + \scriptfont\scfam=\tencsc + \scriptscriptfont\scfam=\tencsc + \fi + \textfont\sffam=\tensf\def\sf{\fam\sffam\tensf}% + \ifprod@font + \scriptfont\sffam=\sevensf + \scriptscriptfont\sffam=\fivesf + \else + \scriptfont\sffam=\tensf + \scriptscriptfont\sffam=\tensf + \fi + \def\oldstyle{\fam\@ne\teni}% + \b@ls{11pt}\rm\@xpt% +} +\def\@xpt{} + +\def\elevenpoint{% 11^8^6 on 13pt + \def\rm{\fam0\elevenrm}% + \textfont0=\elevenrm \scriptfont0=\eightrm \scriptscriptfont0=\sixrm% + \textfont1=\eleveni \scriptfont1=\eighti \scriptscriptfont1=\sixi% + \textfont2=\elevensy \scriptfont2=\eightsy \scriptscriptfont2=\sixsy% + \textfont\itfam=\elevenit\def\it{\fam\itfam\elevenit}% + \ifprod@font + \scriptfont\itfam=\eightit + \scriptscriptfont\itfam=\sixit + \else + \scriptfont\itfam=\elevenit + \scriptscriptfont\itfam=\elevenit + \fi + \textfont\bffam=\elevenbf% + \scriptfont\bffam=\eightbf% + \scriptscriptfont\bffam=\sixbf% + \def\bf{\fam\bffam\elevenbf}% + \textfont\slfam=\elevensl\def\sl{\fam\slfam\elevensl}% + \ifprod@font + \scriptfont\slfam=\eightsl + \scriptscriptfont\slfam=\sixsl + \else + \scriptfont\slfam=\elevensl + \scriptscriptfont\slfam=\elevensl + \fi + \textfont\ttfam=\eleventt\def\tt{\fam\ttfam\eleventt}% + \ifprod@font + \scriptfont\ttfam=\eighttt + \scriptscriptfont\ttfam=\sixtt + \else + \scriptfont\ttfam=\eleventt + \scriptscriptfont\ttfam=\eleventt + \fi + \textfont\scfam=\elevencsc\def\sc{\fam\scfam\elevencsc}% + \ifprod@font + \scriptfont\scfam=\eightcsc + \scriptscriptfont\scfam=\sixcsc + \else + \scriptfont\scfam=\elevencsc + \scriptscriptfont\scfam=\elevencsc + \fi + \textfont\sffam=\elevensf\def\sf{\fam\sffam\elevensf}% + \ifprod@font + \scriptfont\sffam=\eightsf + \scriptscriptfont\sffam=\sixsf + \else + \scriptfont\sffam=\elevensf + \scriptscriptfont\sffam=\elevensf + \fi + \def\oldstyle{\fam\@ne\eleveni}% + \b@ls{13pt}\rm\@xipt% +} +\def\@xipt{} + +\def\fourteenpoint{% 14^10^7 on 17pt + \def\rm{\fam0\fourteenrm}% + \textfont0\fourteenrm \scriptfont0\tenrm \scriptscriptfont0\sevenrm% + \textfont1\fourteeni \scriptfont1\teni \scriptscriptfont1\seveni% + \textfont2\fourteensy \scriptfont2\tensy \scriptscriptfont2\sevensy% + \textfont\itfam=\fourteenit\def\it{\fam\itfam\fourteenit}% + \ifprod@font + \scriptfont\itfam=\tenit + \scriptscriptfont\itfam=\sevenit + \else + \scriptfont\itfam=\fourteenit + \scriptscriptfont\itfam=\fourteenit + \fi + \textfont\bffam=\fourteenbf% + \scriptfont\bffam=\tenbf% + \scriptscriptfont\bffam=\sevenbf% + \def\bf{\fam\bffam\fourteenbf}% + \textfont\slfam=\fourteensl\def\sl{\fam\slfam\fourteensl}% + \ifprod@font + \scriptfont\slfam=\tensl + \scriptscriptfont\slfam=\sevensl + \else + \scriptfont\slfam=\fourteensl + \scriptscriptfont\slfam=\fourteensl + \fi + \textfont\ttfam=\fourteentt\def\tt{\fam\ttfam\fourteentt}% + \ifprod@font + \scriptfont\ttfam=\tentt + \scriptscriptfont\ttfam=\seventt + \else + \scriptfont\ttfam=\fourteentt + \scriptscriptfont\ttfam=\fourteentt + \fi + \textfont\scfam=\fourteencsc\def\sc{\fam\scfam\fourteencsc}% + \ifprod@font + \scriptfont\scfam=\tencsc + \scriptscriptfont\scfam=\sevencsc + \else + \scriptfont\scfam=\fourteencsc + \scriptscriptfont\scfam=\fourteencsc + \fi + \textfont\sffam=\fourteensf\def\sf{\fam\sffam\fourteensf}% + \ifprod@font + \scriptfont\sffam=\tensf + \scriptscriptfont\sffam=\sevensf + \else + \scriptfont\sffam=\fourteensf + \scriptscriptfont\sffam=\fourteensf + \fi + \def\oldstyle{\fam\@ne\fourteeni}% + \b@ls{17pt}\rm\@xivpt% +} +\def\@xivpt{} + +\def\seventeenpoint{% 17^12^10 on 20pt + \def\rm{\fam0\seventeenrm}% + \textfont0\seventeenrm \scriptfont0\twelverm \scriptscriptfont0\tenrm% + \textfont1\seventeeni \scriptfont1\twelvei \scriptscriptfont1\teni% + \textfont2\seventeensy \scriptfont2\twelvesy \scriptscriptfont2\tensy% + \textfont\itfam=\seventeenit\def\it{\fam\itfam\seventeenit}% + \ifprod@font + \scriptfont\itfam=\twelveit + \scriptscriptfont\itfam=\tenit + \else + \scriptfont\itfam=\seventeenit + \scriptscriptfont\itfam=\seventeenit + \fi + \textfont\bffam=\seventeenbf% + \scriptfont\bffam=\twelvebf% + \scriptscriptfont\bffam=\tenbf% + \def\bf{\fam\bffam\seventeenbf}% + \textfont\slfam=\seventeensl\def\sl{\fam\slfam\seventeensl}% + \ifprod@font + \scriptfont\slfam=\twelvesl + \scriptscriptfont\slfam=\tensl + \else + \scriptfont\slfam=\seventeensl + \scriptscriptfont\slfam=\seventeensl + \fi + \textfont\ttfam=\seventeentt\def\tt{\fam\ttfam\seventeentt}% + \ifprod@font + \scriptfont\ttfam=\twelvett + \scriptscriptfont\ttfam=\tentt + \else + \scriptfont\ttfam=\seventeentt + \scriptscriptfont\ttfam=\seventeentt + \fi + \textfont\scfam=\seventeencsc\def\sc{\fam\scfam\seventeencsc}% + \ifprod@font + \scriptfont\scfam=\twelvecsc + \scriptscriptfont\scfam=\tencsc + \else + \scriptfont\scfam=\seventeencsc + \scriptscriptfont\scfam=\seventeencsc + \fi + \textfont\sffam=\seventeensf\def\sf{\fam\sffam\seventeensf}% + \ifprod@font + \scriptfont\sffam=\twelvesf + \scriptscriptfont\sffam=\tensf + \else + \scriptfont\sffam=\seventeensf + \scriptscriptfont\sffam=\seventeensf + \fi + \def\oldstyle{\fam\@ne\seventeeni}% + \b@ls{20pt}\rm\@xviipt% +} +\def\@xviipt{} + +\lineskip=1pt \normallineskip=\lineskip +\lineskiplimit=\z@ \normallineskiplimit=\lineskiplimit + + +% BOLD MATH SYMBOLS + +\def\loadboldmathnames{% + \def\balpha{{\bmath{\alpha}}}% + \def\bbeta{{\bmath{\beta}}}% + \def\bgamma{{\bmath{\gamma}}}% + \def\bdelta{{\bmath{\delta}}}% + \def\bepsilon{{\bmath{\epsilon}}}% + \def\bzeta{{\bmath{\zeta}}}% + \def\boldeta{{\bmath{\eta}}}% + \def\btheta{{\bmath{\theta}}}% + \def\biota{{\bmath{\iota}}}% + \def\bkappa{{\bmath{\kappa}}}% + \def\blambda{{\bmath{\lambda}}}% + \def\bmu{{\bmath{\mu}}}% + \def\bnu{{\bmath{\nu}}}% + \def\bxi{{\bmath{\xi}}}% + \def\bpi{{\bmath{\pi}}}% + \def\brho{{\bmath{\rho}}}% + \def\bsigma{{\bmath{\sigma}}}% + \def\btau{{\bmath{\tau}}}% + \def\bupsilon{{\bmath{\upsilon}}}% + \def\bphi{{\bmath{\phi}}}% + \def\bchi{{\bmath{\chi}}}% + \def\bpsi{{\bmath{\psi}}}% + \def\bomega{{\bmath{\omega}}}% + \def\bvarepsilon{{\bmath{\varepsilon}}}% + \def\bvartheta{{\bmath{\vartheta}}}% + \def\bvarpi{{\bmath{\varpi}}}% + \def\bvarrho{{\bmath{\varrho}}}% + \def\bvarsigma{{\bmath{\varsigma}}}% + \def\bvarphi{{\bmath{\varphi}}}% + \def\baleph{{\bmath{\aleph}}}% + \def\bimath{{\bmath{\imath}}}% + \def\bjmath{{\bmath{\jmath}}}% + \def\bell{{\bmath{\ell}}}% + \def\bwp{{\bmath{\wp}}}% + \def\bRe{{\bmath{\Re}}}% + \def\bIm{{\bmath{\Im}}}% + \def\bpartial{{\bmath{\partial}}}% + \def\binfty{{\bmath{\infty}}}% + \def\bprime{{\bmath{\prime}}}% + \def\bemptyset{{\bmath{\emptyset}}}% + \def\bnabla{{\bmath{\nabla}}}% + \def\btop{{\bmath{\top}}}% + \def\bbot{{\bmath{\bot}}}% + \def\btriangle{{\bmath{\triangle}}}% + \def\bforall{{\bmath{\forall}}}% + \def\bexists{{\bmath{\exists}}}% + \def\bneg{{\bmath{\neg}}}% + \def\bflat{{\bmath{\flat}}}% + \def\bnatural{{\bmath{\natural}}}% + \def\bsharp{{\bmath{\sharp}}}% + \def\bclubsuit{{\bmath{\clubsuit}}}% + \def\bdiamondsuit{{\bmath{\diamondsuit}}}% + \def\bheartsuit{{\bmath{\heartsuit}}}% + \def\bspadesuit{{\bmath{\spadesuit}}}% + \def\bsmallint{{\bmath{\smallint}}}% + \def\btriangleleft{{\bmath{\triangleleft}}}% + \def\btriangleright{{\bmath{\triangleright}}}% + \def\bbigtriangleup{{\bmath{\bigtriangleup}}}% + \def\bbigtriangledown{{\bmath{\bigtriangledown}}}% + \def\bwedge{{\bmath{\wedge}}}% + \def\bvee{{\bmath{\vee}}}% + \def\bcap{{\bmath{\cap}}}% + \def\bcup{{\bmath{\cup}}}% + \def\bddagger{{\bmath{\ddagger}}}% + \def\bdagger{{\bmath{\dagger}}}% + \def\bsqcap{{\bmath{\sqcap}}}% + \def\bsqcup{{\bmath{\sqcup}}}% + \def\buplus{{\bmath{\uplus}}}% + \def\bamalg{{\bmath{\amalg}}}% + \def\bdiamond{{\bmath{\diamond}}}% + \def\bbullet{{\bmath{\bullet}}}% + \def\bwr{{\bmath{\wr}}}% + \def\bdiv{{\bmath{\div}}}% + \def\bodot{{\bmath{\odot}}}% + \def\boslash{{\bmath{\oslash}}}% + \def\botimes{{\bmath{\otimes}}}% + \def\bominus{{\bmath{\ominus}}}% + \def\boplus{{\bmath{\oplus}}}% + \def\bmp{{\bmath{\mp}}}% + \def\bpm{{\bmath{\pm}}}% + \def\bcirc{{\bmath{\circ}}}% + \def\bbigcirc{{\bmath{\bigcirc}}}% + \def\bsetminus{{\bmath{\setminus}}}% + \def\bcdot{{\bmath{\cdot}}}% + \def\bast{{\bmath{\ast}}}% + \def\btimes{{\bmath{\times}}}% + \def\bstar{{\bmath{\star}}}% + \def\bpropto{{\bmath{\propto}}}% + \def\bsqsubseteq{{\bmath{\sqsubseteq}}}% + \def\bsqsupseteq{{\bmath{\sqsupseteq}}}% + \def\bparallel{{\bmath{\parallel}}}% + \def\bmid{{\bmath{\mid}}}% + \def\bdashv{{\bmath{\dashv}}}% + \def\bvdash{{\bmath{\vdash}}}% + \def\bnearrow{{\bmath{\nearrow}}}% + \def\bsearrow{{\bmath{\searrow}}}% + \def\bnwarrow{{\bmath{\nwarrow}}}% + \def\bswarrow{{\bmath{\swarrow}}}% + \def\bLeftrightarrow{{\bmath{\Leftrightarrow}}}% + \def\bLeftarrow{{\bmath{\Leftarrow}}}% + \def\bRightarrow{{\bmath{\Rightarrow}}}% + \def\bleq{{\bmath{\leq}}}% + \def\bgeq{{\bmath{\geq}}}% + \def\bsucc{{\bmath{\succ}}}% + \def\bprec{{\bmath{\prec}}}% + \def\bapprox{{\bmath{\approx}}}% + \def\bsucceq{{\bmath{\succeq}}}% + \def\bpreceq{{\bmath{\preceq}}}% + \def\bsupset{{\bmath{\supset}}}% + \def\bsubset{{\bmath{\subset}}}% + \def\bsupseteq{{\bmath{\supseteq}}}% + \def\bsubseteq{{\bmath{\subseteq}}}% + \def\bin{{\bmath{\in}}}% + \def\bni{{\bmath{\ni}}}% + \def\bgg{{\bmath{\gg}}}% + \def\bll{{\bmath{\ll}}}% + \def\bnot{{\bmath{\not}}}% + \def\bleftrightarrow{{\bmath{\leftrightarrow}}}% + \def\bleftarrow{{\bmath{\leftarrow}}}% + \def\brightarrow{{\bmath{\rightarrow}}}% + \def\bmapstochar{{\bmath{\mapstochar}}}% + \def\bsim{{\bmath{\sim}}}% + \def\bsimeq{{\bmath{\simeq}}}% + \def\bperp{{\bmath{\perp}}}% + \def\bequiv{{\bmath{\equiv}}}% + \def\basymp{{\bmath{\asymp}}}% + \def\bsmile{{\bmath{\smile}}}% + \def\bfrown{{\bmath{\frown}}}% + \def\bleftharpoonup{{\bmath{\leftharpoonup}}}% + \def\bleftharpoondown{{\bmath{\leftharpoondown}}}% + \def\brightharpoonup{{\bmath{\rightharpoonup}}}% + \def\brightharpoondown{{\bmath{\rightharpoondown}}}% + \def\blhook{{\bmath{\lhook}}}% + \def\brhook{{\bmath{\rhook}}}% + \def\bldotp{{\bmath{\ldotp}}}% + \def\bcdotp{{\bmath{\cdotp}}}% +} + +% Make \, work in non-math mode +\def\,{\relax\ifmmode \mskip\thinmuskip\else \thinspace\fi} +\let\protect=\relax + +\long\def\@ifundefined#1#2#3{\expandafter\ifx\csname + #1\endcsname\relax#2\else#3\fi} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% NewFont.sty: ALPHA VERSION patchlevel 8, 16th August 1994, M. Reed + +% \addtom@thgroup{math font loading info} +% Adds to internal \math@groups definition, which is executed at the end +% of each size changing command. It is called by \NewSymbolFont. + +\newtoks\math@groups \math@groups={} +\def\addtom@thgroup#1#2{#1\expandafter{\the#1#2}} % \mac={new\the\mac} + + +% Make TeX change the values of \s@ze, \ss@ze, \sss@ze when \@npt is +% executed. This makes it possible for math characters to be loaded +% at the correct size automatically when the size is changed. + +% \addtosizeh@ok{x}{10}{7}{5} + +\def\addtosizeh@ok#1#2#3#4{% + \expandafter\def\csname @#1pt\endcsname{% + \def\s@ze{#2}\def\ss@ze{#3}\def\sss@ze{#4}\the\math@groups% + }% +} + + +% \resetsizehook allows the size parameters to be reset after \addtosizeh@ok +% has been called (it re-defines \@npt). +% e.g JFM which requires \xpt to have 10.5pt instead of 10pt. +% Note: \resetsizehook must be used in the preamble BEFORE any +% \New... commands. + +% e.g. \resetsizehook{x}{10.5}{7}{5} + +\let\resetsizehook=\addtosizeh@ok + + +% Standard LaTeX sizes + +\ifprod@font +% \addtosizeh@ok{v} {5} {5} {5} +% \addtosizeh@ok{vi} {6} {6} {6} +% \addtosizeh@ok{vii} {7} {6} {5} + \addtosizeh@ok{viii} {8} {6} {5} + \addtosizeh@ok{ix} {9} {6} {5} + \addtosizeh@ok{x} {10}{7} {5} + \addtosizeh@ok{xi} {11}{8} {6} +% \addtosizeh@ok{xii} {12}{8} {6} + \addtosizeh@ok{xiv} {14}{10} {7} + \addtosizeh@ok{xvii} {17}{12}{10} +% \addtosizeh@ok{xx} {20}{14}{12} +% \addtosizeh@ok{xxv} {25}{20}{17} +\else +% \addtosizeh@ok{v} {5} {5} {5} +% \addtosizeh@ok{vi} {6} {6} {6} +% \addtosizeh@ok{vii} {7} {6} {5} + \addtosizeh@ok{viii} {8} {6} {5} + \addtosizeh@ok{ix} {9} {6} {5} + \addtosizeh@ok{x} {10} {7} {5} + \addtosizeh@ok{xi} {10.95} {8} {6} +% \addtosizeh@ok{xii} {12} {8} {6} + \addtosizeh@ok{xiv} {14.4} {10} {7} + \addtosizeh@ok{xvii} {17.28} {12} {10} +% \addtosizeh@ok{xx} {20.74} {14.4} {12} +% \addtosizeh@ok{xxv} {24.88} {20.74} {17.28} +\fi + + +\def\get@font#1#2#3{% + \edef\fonts@ze{\romannumeral#3}% 10 -> x + \edef\fontn@me{\fonts@ze#1}% AMSa -> xAMSa + \@ifundefined{\fontn@me}% + {%%\typeout{defining \fontn@me}% + \global\expandafter\font\csname \fontn@me\endcsname=#2 at #3pt}% + {}% +} + +\def\ass@tfont#1#2{% + \xdef\fam@name{\csname #1\endcsname}% + \xdef\font@name{\csname #2\endcsname}% + \let\textfont@name\font@name + \textfont\fam@name\textfont@name +} + +\def\ass@sfont#1#2{% + \xdef\fam@name{\csname #1\endcsname}% + \xdef\font@name{\csname #2\endcsname}% + \let\textfont@name\font@name + \scriptfont\fam@name\textfont@name +} + +\def\ass@ssfont#1#2{% + \xdef\fam@name{\csname #1\endcsname}% + \xdef\font@name{\csname #2\endcsname}% + \let\textfont@name\font@name + \scriptscriptfont\fam@name\textfont@name +} + + +% fam name base font (allocates a \newfam) +% \NewSymbolFont {AMSa} {mtxm10} + +\def\NewSymbolFont#1#2{% + \expandafter\ifx\csname sym#1fam\endcsname\relax % if not defined + \expandafter\newfam\csname sym#1fam\endcsname + \expandafter\edef\csname sym#1fam\endcsname{\the\allocationnumber}% + \addtom@thgroup\math@groups{% + \get@font{#1}{#2}{\s@ze}% + \ass@tfont{sym#1fam}{\fontn@me}% + \get@font{#1}{#2}{\ss@ze}% + \ass@sfont{sym#1fam}{\fontn@me}% + \get@font{#1}{#2}{\sss@ze}% + \ass@ssfont{sym#1fam}{\fontn@me}% + }% + \else + \errmessage{Family `#1' already defined}% + \fi +} + + +% symbol type fam pos (hex) +% \NewMathSymbol {\blacksquare} {0} {AMSa} {04} + +\def\NewMathSymbol#1#2#3#4{% + \edef\f@mly{\expandafter\hexnumber{\csname sym#3fam\endcsname}}% + \mathchardef#1="#2\f@mly#4\relax +} + + +% macro name type fam1 pos fam2 pos +% \NewMathDelimiter{\ulcorner} {4} {AMSa} {70} {AMSb} {70} + +\newif\ifd@f + +\def\NewMathDelimiter#1#2#3#4#5#6{% + \d@ftrue + \expandafter\ifx\csname sym#3fam\endcsname\relax + \d@ffalse \errmessage{Family `#3' is not defined}% + \fi + \expandafter\ifx\csname sym#5fam\endcsname\relax + \d@ffalse \errmessage{Family `#5' is not defined}% + \fi + \ifd@f + \edef\f@mly{\expandafter\hexnumber{\csname sym#3fam\endcsname}}% + \edef\f@mlytw@{\expandafter\hexnumber{\csname sym#5fam\endcsname}}% + \xdef#1{\delimiter"#2\f@mly #4\f@mlytw@ #6\relax}% + \fi +} + + +% macro name base font skewchar setting e.g '60 (octal) +% \NewMathAlphabet {mathbssi} {mtmisb10} {} + +\def\setboxz@h{\setbox\z@\hbox} +\def\wdz@{\wd\z@} +\def\boxz@{\box\z@} +\def\setbox@ne{\setbox\@ne} +\def\wd@ne{\wd\@ne} + +\def\math@atom#1#2{% + \binrel@{#1}\binrel@@{#2}} +\def\binrel@#1{\setboxz@h{\thinmuskip0mu + \medmuskip\m@ne mu\thickmuskip\@ne mu$#1\m@th$}% + \setbox@ne\hbox{\thinmuskip0mu\medmuskip\m@ne mu\thickmuskip + \@ne mu${}#1{}\m@th$}% + \setbox\tw@\hbox{\hskip\wd@ne\hskip-\wdz@}} +\def\binrel@@#1{\ifdim\wd2<\z@\mathbin{#1}\else\ifdim\wd\tw@>\z@ + \mathrel{#1}\else{#1}\fi\fi} + +\def\m@thit{1} + +\def\set@skchar#1{\global\expandafter\skewchar + \csname\fontn@me\endcsname=#1\relax} + +\def\NewMathAlphabet#1#2#3{% + \def\tst{#3}% + \ifx\tst\empty\else % if a \skewchar setting is present + \expandafter\gdef\csname #1@sc\endcsname{}% \def\cmd@sc{..} + \fi + % + \expandafter\def\csname #1\endcsname{% \def\cmd{\protect\@cmd} + \protect\csname @#1\endcsname}% + % + \expandafter\def\csname @#1\endcsname##1{% \def\@cmd{..} + {% + \begingroup + \get@font{#1}{#2}{\s@ze}% + \@ifundefined{#1@sc}{}{\set@skchar{#3}}% + \ass@tfont{m@thit}{\fontn@me}% + \get@font{#1}{#2}{\ss@ze}% + \@ifundefined{#1@sc}{}{\set@skchar{#3}}% + \ass@sfont{m@thit}{\fontn@me}% + \get@font{#1}{#2}{\sss@ze}% + \@ifundefined{#1@sc}{}{\set@skchar{#3}}% + \ass@ssfont{m@thit}{\fontn@me}% + % + \math@atom{##1}{% + \mathchoice% + {\hbox{$\m@th\displaystyle##1$}}% + {\hbox{$\m@th\textstyle##1$}}% + {\hbox{$\m@th\scriptstyle##1$}}% + {\hbox{$\m@th\scriptscriptstyle##1$}}}% + \endgroup + }% + }% +} + + +% macro name base font hyphenchar setting e.g -1 (off) +% \NewTextAlphabet {textbfit} {mtbxti10} {} + +% save a family if \NewTextAlphabet is not used. +\newif\iffirstta \firsttatrue + +\def\set@hchar#1{\global\expandafter\hyphenchar + \csname\fontn@me\endcsname=#1\relax} + +\def\NewTextAlphabet#1#2#3{% + \iffirstta + \global\firsttafalse + \newfam\scratchfam + \edef\scrt@fam{\the\allocationnumber}% + \fi + \def\tst{#3}% + \ifx\tst\empty\else % if a \hyphenchar setting is required + \expandafter\gdef\csname #1@hc\endcsname{}% \def\cmd@sc{..} + \fi + % + \expandafter\def\csname #1\endcsname{% \def\cmd{\protect\t@cmd} + \protect\csname t@#1\endcsname}% + % + \long\expandafter\def\csname t@#1\endcsname##1{% \def\t@cmd{..} + \ifmmode + \typeout{Warning: do not use \expandafter\string\csname #1\endcsname + \space in math mode}\fi% + {% + \get@font{#1}{#2}{\s@ze}\let\t@xtfnt=\fontn@me\relax + \@ifundefined{#1@hc}{}{\set@hchar{#3}}% + \ass@tfont{scrt@fam}{\fontn@me}% + \get@font{#1}{#2}{\ss@ze}% + \@ifundefined{#1@hc}{}{\set@hchar{#3}}% + \ass@sfont{scrt@fam}{\fontn@me}% + \get@font{#1}{#2}{\sss@ze}% + \@ifundefined{#1@hc}{}{\set@hchar{#3}}% + \ass@ssfont{scrt@fam}{\fontn@me}% + \fam\scratchfam\csname\t@xtfnt\endcsname + ##1% + }% + }% + % + \expandafter\def\csname #1shape% \def\cmdshape{\protect\@cmdshape} + \endcsname{\protect\csname @#1shape\endcsname}% + % + \expandafter\def\csname @#1shape\endcsname{% \def\@cmdshape + \ifmmode + \typeout{Warning: do not use \expandafter\string\csname + #1shape\endcsname \space in math mode}\fi + % + \get@font{#1}{#2}{\s@ze}\let\t@xtfnt=\fontn@me\relax + \@ifundefined{#1@hc}{}{\set@hchar{#3}}% + \ass@tfont{scrt@fam}{\fontn@me}% + \get@font{#1}{#2}{\ss@ze}% + \@ifundefined{#1@hc}{}{\set@hchar{#3}}% + \ass@sfont{scrt@fam}{\fontn@me}% + \get@font{#1}{#2}{\sss@ze}% + \@ifundefined{#1@hc}{}{\set@hchar{#3}}% + \ass@ssfont{scrt@fam}{\fontn@me}% + \fam\scratchfam\csname\t@xtfnt\endcsname + }% +} + + +% \bmath{math text} + +\ifprod@font + \def\math@itfnt{mtmib10} + \def\math@syfnt{mtbsy10} +\else + \def\math@itfnt{cmmib10} + \def\math@syfnt{cmbsy10} +\fi + +\def\m@thsy{2} + +\def\bmath{\protect\@bmath} +\def\@bmath#1{% + {% + \begingroup + \get@font{mthit}{\math@itfnt}{\s@ze}\set@skchar{'177}% + \ass@tfont{m@thit}{\fontn@me}% + \get@font{mthit}{\math@itfnt}{\ss@ze}\set@skchar{'177}% + \ass@sfont{m@thit}{\fontn@me}% + \get@font{mthit}{\math@itfnt}{\sss@ze}\set@skchar{'177}% + \ass@ssfont{m@thit}{\fontn@me}% + % + \get@font{mthsy}{\math@syfnt}{\s@ze}\set@skchar{'60}% + \ass@tfont{m@thsy}{\fontn@me}% + \get@font{mthsy}{\math@syfnt}{\ss@ze}\set@skchar{'60}% + \ass@sfont{m@thsy}{\fontn@me}% + \get@font{mthsy}{\math@syfnt}{\sss@ze}\set@skchar{'60}% + \ass@ssfont{m@thsy}{\fontn@me}% + % + \math@atom{#1}{% + \mathchoice% + {\hbox{$\m@th\displaystyle#1$}}% + {\hbox{$\m@th\textstyle#1$}}% + {\hbox{$\m@th\scriptstyle#1$}}% + {\hbox{$\m@th\scriptscriptstyle#1$}}}% + \endgroup + }% +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +% Astronomy and Astrophysics symbol macros + +\def\la{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr<\cr\sim\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr +<\cr\sim\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr +<\cr\sim\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +<\cr\sim\cr}}}}} + +\def\ga{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr>\cr\sim\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr +>\cr\sim\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr +>\cr\sim\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +>\cr\sim\cr}}}}} + +\def\getsto{\mathrel{\mathchoice {\vcenter{\offinterlineskip +\halign{\hfil +$\displaystyle##$\hfil\cr\gets\cr\to\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr\gets +\cr\to\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr\gets +\cr\to\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +\gets\cr\to\cr}}}}} + +\def\cor{\mathrel{\mathchoice {\hbox{$\widehat=$}}{\hbox{$\widehat=$}} +{\hbox{$\scriptstyle\hat=$}} +{\hbox{$\scriptscriptstyle\hat=$}}}} + +\def\lid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr<\cr\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr<\cr +\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr<\cr +\noalign{\vskip1pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +<\cr +\noalign{\vskip0.9pt}=\cr}}}}} + +\def\gid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr>\cr\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr>\cr +\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr>\cr +\noalign{\vskip1pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +>\cr +\noalign{\vskip0.9pt}=\cr}}}}} + +\def\sol{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr\sim\cr<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr\sim\cr +<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr\sim\cr +<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +\sim\cr<\cr}}}}} + +\def\sog{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr\sim\cr>\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr\sim\cr +>\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr +\sim\cr>\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +\sim\cr>\cr}}}}} + +\def\lse{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr<\cr\simeq\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr +<\cr\simeq\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr +<\cr\simeq\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +<\cr\simeq\cr}}}}} + +\def\gse{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr>\cr\simeq\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr +>\cr\simeq\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr +>\cr\simeq\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +>\cr\simeq\cr}}}}} + +\def\grole{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr>\cr\noalign{\vskip-1.5pt}<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr +>\cr\noalign{\vskip-1.5pt}<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr +>\cr\noalign{\vskip-1pt}<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +>\cr\noalign{\vskip-0.5pt}<\cr}}}}} + +\def\leogr{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr<\cr\noalign{\vskip-1.5pt}>\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr +<\cr\noalign{\vskip-1.5pt}>\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr +<\cr\noalign{\vskip-1pt}>\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +<\cr\noalign{\vskip-0.5pt}>\cr}}}}} + +\def\loa{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr<\cr\approx\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr +<\cr\approx\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr +<\cr\approx\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +<\cr\approx\cr}}}}} + +\def\goa{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr>\cr\approx\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr +>\cr\approx\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr +>\cr\approx\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +>\cr\approx\cr}}}}} + +\def\sun{\hbox{$\odot$}} +\def\degr{\hbox{$^\circ$}} +\def\diameter{{\ifmmode\mathchoice +{\ooalign{\hfil\hbox{$\displaystyle/$}\hfil\crcr +{\hbox{$\displaystyle\mathchar"20D$}}}} +{\ooalign{\hfil\hbox{$\textstyle/$}\hfil\crcr +{\hbox{$\textstyle\mathchar"20D$}}}} +{\ooalign{\hfil\hbox{$\scriptstyle/$}\hfil\crcr +{\hbox{$\scriptstyle\mathchar"20D$}}}} +{\ooalign{\hfil\hbox{$\scriptscriptstyle/$}\hfil\crcr +{\hbox{$\scriptscriptstyle\mathchar"20D$}}}} +\else{\ooalign{\hfil/\hfil\crcr\mathhexbox20D}}% +\fi}} + +\def\sq{\ifmmode\squareforqed\else{\unskip\nobreak\hfil +\penalty50\hskip1em\null\nobreak\hfil\squareforqed +\parfillskip=0pt\finalhyphendemerits=0\endgraf}\fi} +\def\squareforqed{\hbox{\rlap{$\sqcap$}$\sqcup$}} + +\def\fd{\hbox{$.\!\!^{\rm d}$}} +\def\fh{\hbox{$.\!\!^{\rm h}$}} +\def\fm{\hbox{$.\!\!^{\rm m}$}} +\def\fs{\hbox{$.\!\!^{\rm s}$}} +\def\fdg{\hbox{$.\!\!^\circ$}} +\def\farcm{\hbox{$.\mkern-4mu^\prime$}} +\def\farcs{\hbox{$.\!\!^{\prime\prime}$}} +\def\fp{\hbox{$.\!\!^{\scriptscriptstyle\rm p}$}} +\def\arcmin{\hbox{$^\prime$}} +\def\arcsec{\hbox{$^{\prime\prime}$}} + +% Simulated Blackboard Bold symbols + +\def\bbbr{{\rm I\!R}} +\def\bbbm{{\rm I\!M}} +\def\bbbn{{\rm I\!N}} +\def\bbbf{{\rm I\!F}} +\def\bbbh{{\rm I\!H}} +\def\bbbk{{\rm I\!K}} +\def\bbbp{{\rm I\!P}} +\def\bbbone{{\mathchoice {\rm 1\mskip-4mu l} {\rm 1\mskip-4mu l} +{\rm 1\mskip-4.5mu l} {\rm 1\mskip-5mu l}}} +\def\bbbc{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}}} +\def\bbbq{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm +Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle\rm Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle\rm Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}}}} +\def\bbbt{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm +T$}\hbox{\hbox to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle\rm T$}\hbox{\hbox +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle\rm T$}\hbox{\hbox +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm T$}\hbox{\hbox +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}}} +\def\bbbs{{\mathchoice +{\setbox0=\hbox{$\displaystyle \rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox +to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle \rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox +to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle \rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox +to0pt{\kern0.5\wd0\vrule height0.45\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.4\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox +to0pt{\kern0.55\wd0\vrule height0.45\ht0\hss}\box0}}}} +\def\bbbz{{\mathchoice {\hbox{$\sf\textstyle Z\kern-0.4em Z$}} +{\hbox{$\sf\textstyle Z\kern-0.4em Z$}} +{\hbox{$\sf\scriptstyle Z\kern-0.3em Z$}} +{\hbox{$\sf\scriptscriptstyle Z\kern-0.2em Z$}}}} + + +% NUMBER THE DESIGN ELEMENTS + +\def\Nulle{0} % null element +\def\Afe{1} % author affiliation +\def\Hae{2} % heading A +\def\Hbe{3} % heading B +\def\Hce{4} % heading C +\def\Hde{5} % heading D + + +% TEMPORARY REGISTERS + +\newcount\LastMac \LastMac=\Nulle + +\newskip\half \half=5.5pt plus 1.5pt minus 2.25pt +\newskip\one \one=11pt plus 3pt minus 5.5pt +\newskip\onehalf \onehalf=16.5pt plus 5.5pt minus 8.25pt +\newskip\two \two=22pt plus 5.5pt minus 11pt + +\def\Half{\addvspace{\half}} +\def\One{\addvspace{\one}} +\def\OneHalf{\addvspace{\onehalf}} +\def\Two{\addvspace{\two}} + +\def\Referee{% produce version for refereeing + \def\baselinestretch{2}% + \ninepoint +} + +\def\Raggedright{% set lines unjustified + \rightskip=\z@ plus \hsize\relax +} + +\def\Fullout{% set lines justified + \rightskip=\z@\relax +} + +\def\Hang#1#2{% set hanging indentation + \hangindent=#1% + \hangafter=#2\relax +} + +\def\makeatletter{\catcode `\@=11\relax} +\def\makeatother{\catcode `\@=12\relax} + + +% Pagestyles + +\newif\ifsp@page +\def\pagestyle#1{\csname ps@#1\endcsname} +\def\thispagestyle#1{\global\sp@pagetrue\gdef\sp@type{#1}} + +\def\ps@titlepage{% + \def\@oddhead{\eightpoint\noindent \the\CatchLine + \ifprod@font\else\qquad Printed\ \today\qquad + (MN plain \TeX\ macros\ v\@version)\fi \hfil}% + \let\@evenhead=\@oddhead +} + +\def\ps@headings{% + \def\@oddhead{\elevenpoint\it\noindent + \hfill\the\RightHeader\hskip1.5em\rm\folio}% + \def\@evenhead{\elevenpoint\noindent + \folio\hskip1.5em\it\the\LeftHeader\hfill}% +} + +\def\ps@plate{% + \def\@oddhead{\eightpoint\noindent\plt@cap\hfil}% + \def\@evenhead{\eightpoint\noindent\plt@cap\hfil}% +} + + +% DESIGN ELEMENT DEFINITIONS + +% Article opening + +\def\title#1{% article title + \bgroup + \vbox to 8pt{\vss}% + \seventeenpoint + \Raggedright + \noindent \strut{\bf #1}\par + \egroup +} + +\def\author#1{% article author(s) + \bgroup + \ifnum\LastMac=\Afe \OneHalf\else \vskip 21pt\fi + \fourteenpoint + \Raggedright + \noindent \strut #1\par + \vskip 3pt% + \egroup +} + +\def\affiliation#1{% author(s) affiliation + \bgroup + \vskip -4pt% + \eightpoint + \Raggedright + \noindent \strut {\it #1}\par + \egroup + \LastMac=\Afe\relax +} + +\def\acceptedline#1{% acceptance date + \bgroup + \Two + \eightpoint + \Raggedright + \noindent \strut #1\par + \egroup +} + +\long\def\abstract#1{% + \bgroup + \vskip 20pt% + \everypar{\Hang{11pc}{0}}% + \noindent{\ninebf ABSTRACT}\par + \tenpoint + \Fullout + \noindent #1\par + \egroup +} + +\long\def\keywords#1{% keywords + \bgroup + \Half + \everypar{\Hang{11pc}{0}}% + \tenpoint + \Fullout + \noindent\hbox{\bf Key words:}\ #1\par + \egroup +} + + +% The \maketitle macro ensures that the two spanning material appears +% at the top of the first page, and that it has two lines of space +% underneath it. If you forget this in you input, no output will be produced. +% The \BeginOpening (alias \begintopmatter) macro should be called at the +% very start of the input file, so that it is in force when the document +% starts. This ensures that when \maketitle is called that the group is +% closed, and the material gets printed. + +\def\maketitle{% + \EndOpening + \ifsinglecol \else \MakePage\fi +} + + +% Page offset + +\def\pageoffset#1#2{\hoffset=#1\relax\voffset=#2\relax} + + +% Counter setup + +\def\@nameuse#1{\csname #1\endcsname} +\def\arabic#1{\@arabic{\@nameuse{#1}}} +\def\alph#1{\@alph{\@nameuse{#1}}} +\def\Alph#1{\@Alph{\@nameuse{#1}}} +\def\@arabic#1{\number #1} +\def\@Alph#1{\ifcase#1\or A\or B\or C\or D\else\@Ialph{#1}\fi} +\def\@Ialph#1{\ifcase#1\or \or \or \or \or E\or F\or G\or H\or I\or J\or + K\or L\or M\or N\or O\or P\or Q\or R\or S\or T\or U\or V\or W\or X\or + Y\or Z\else\errmessage{Counter out of range}\fi} +\def\@alph#1{\ifcase#1\or a\or b\or c\or d\else\@ialph{#1}\fi} +\def\@ialph#1{\ifcase#1\or \or \or \or \or e\or f\or g\or h\or i\or j\or + k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or + z\else\errmessage{Counter out of range}\fi} + + +% Equation auto-numbering + +\newcount\Eqnno +\newcount\SubEqnno + +\def\theeq{\arabic{Eqnno}} +\def\thesubeq{\alph{SubEqnno}} + +\def\stepeq{\relax + \global\SubEqnno \z@ + \global\advance\Eqnno \@ne\relax + {\rm (\theeq)}% +} + +\def\startsubeq{\relax + \global\SubEqnno \z@ + \global\advance\Eqnno \@ne\relax + \stepsubeq +} + +\def\stepsubeq{\relax + \global\advance\SubEqnno \@ne\relax + {\rm (\theeq\thesubeq)}% +} + + +% Headings + +\newcount\Sec % heading auto number counters +\newcount\SecSec +\newcount\SecSecSec + +\def\thesection{\arabic{Sec}} +\def\thesubsection{\thesection.\arabic{SecSec}} +\def\thesubsubsection{\thesubsection.\arabic{SecSecSec}} + + +\Sec=\z@ + +\def\:{\let\@sptoken= } \: % this makes \@sptoken a space token +\def\:{\@xifnch} \expandafter\def\: {\futurelet\@tempc\@ifnch} + +\def\@ifnextchar#1#2#3{% + \let\@tempMACe #1% + \def\@tempMACa{#2}% + \def\@tempMACb{#3}% + \futurelet \@tempMACc\@ifnch% +} + +\def\@ifnch{% +\ifx \@tempMACc \@sptoken% + \let\@tempMACd\@xifnch% +\else% + \ifx \@tempMACc \@tempMACe% + \let\@tempMACd\@tempMACa% + \else% + \let\@tempMACd\@tempMACb% + \fi% +\fi% +\@tempMACd% +} + +\def\@ifstar#1#2{\@ifnextchar *{\def\@tempMACa*{#1}\@tempMACa}{#2}} + +\newskip\@tempskipb + +\def\addvspace#1{% + \ifvmode\else \endgraf\fi% + \ifdim\lastskip=\z@% + \vskip #1\relax% + \else% + \@tempskipb#1\relax\@xaddvskip% + \fi% +} + +\def\@xaddvskip{% + \ifdim\lastskip<\@tempskipb% + \vskip-\lastskip% + \vskip\@tempskipb\relax% + \else% + \ifdim\@tempskipb<\z@% + \ifdim\lastskip<\z@ \else% + \advance\@tempskipb\lastskip% + \vskip-\lastskip\vskip\@tempskipb% + \fi% + \fi% + \fi% +} + +\newskip\@tmpSKIP + +\def\addpen#1{% + \ifvmode + \if@nobreak + \else + \ifdim\lastskip=\z@ + \penalty#1\relax + \else + \@tmpSKIP=\lastskip + \vskip -\lastskip + \penalty#1\vskip\@tmpSKIP + \fi + \fi + \fi +} + +\newcount\@clubpen \@clubpen=\clubpenalty +\newif\if@nobreak \@nobreakfalse + +\def\@noafterindent{% + \global\@nobreaktrue + \everypar{\if@nobreak + \global\@nobreakfalse + \clubpenalty \@M + {\setbox\z@\lastbox}% + \LastMac=\Nulle\relax% + \else + \clubpenalty \@clubpen + \everypar{}% + \fi}% +} + +\newcount\gds@cbrk \gds@cbrk=-300 + +\def\@nohdbrk{\interlinepenalty \@M\relax} + +\let\@par=\par +\def\@restorepar{\def\par{\@par}} + +\newif\if@endpe \@endpefalse + +\def\@doendpe{\@endpetrue \@nobreakfalse \LastMac=\Nulle\relax% + \def\par{\@restorepar\everypar{}\par\@endpefalse}% + \everypar{\setbox\z@\lastbox\everypar{}\@endpefalse}% +} + +\def\section{\@ifstar{\@ssection}{\@section}} + +\def\@section#1{% heading A (\section{....}) + \if@nobreak + \everypar{}% + \ifnum\LastMac=\Hae \addvspace{\half}\fi + \else + \addpen{\gds@cbrk}% + \addvspace{\two}% + \fi + \bgroup + \ninepoint\bf + \Raggedright + \global\advance\Sec \@ne + \ifappendix + \global\Eqnno=\z@ \global\SubEqnno=\z@\relax + \def\ch@ck{#1}% + \ifx\ch@ck\empty \def\c@lon{}\else\def\c@lon{:}\fi + \noindent\@nohdbrk APPENDIX\ \thesection\c@lon\hskip 0.5em% + \uppercase{#1}\par + \else + \noindent\@nohdbrk\thesection\hskip 1pc \uppercase{#1}\par + \fi + \global\SecSec=\z@ + \egroup + \nobreak + \vskip\half + \nobreak + \@noafterindent + \LastMac=\Hae\relax +} + +\def\@ssection#1{% main section heading (\section*{....}) + \if@nobreak + \everypar{}% + \ifnum\LastMac=\Hae \addvspace{\half}\fi + \else + \addpen{\gds@cbrk}% + \addvspace{\two}% + \fi + \bgroup + \ninepoint\bf + \Raggedright +% \ifappendix +% \global\Eqnno=\z@ \global\SubEqnno=\z@\relax % mh in apps dont reset +% \noindent\@nohdbrk APPENDIX:\hskip 0.5em% +% \uppercase{#1}\par +% \else + \noindent\@nohdbrk\uppercase{#1}\par +% \fi + \egroup + \nobreak + \vskip\half + \nobreak + \@noafterindent + \LastMac=\Hae\relax +} + +\def\subsection{\@ifstar{\@ssubsection}{\@subsection}} + +\def\@subsection#1{% heading B + \if@nobreak + \everypar{}% + \ifnum\LastMac=\Hae \addvspace{1pt plus 1pt minus .5pt}\fi + \else + \addpen{\gds@cbrk}% + \addvspace{\onehalf}% + \fi + \bgroup + \ninepoint\bf + \Raggedright + \global\advance\SecSec \@ne + \noindent\@nohdbrk\thesubsection \hskip 1pc\relax #1\par + \global\SecSecSec=\z@ + \egroup + \nobreak + \vskip\half + \nobreak + \@noafterindent + \LastMac=\Hbe\relax +} + +\def\@ssubsection#1{% heading B* + \if@nobreak + \everypar{}% + \ifnum\LastMac=\Hae \addvspace{1pt plus 1pt minus .5pt}\fi + \else + \addpen{\gds@cbrk}% + \addvspace{\onehalf}% + \fi + \bgroup + \ninepoint\bf + \Raggedright + \noindent\@nohdbrk #1\par + \egroup + \nobreak + \vskip\half + \nobreak + \@noafterindent + \LastMac=\Hbe\relax +} + +\def\subsubsection{\@ifstar{\@ssubsubsection}{\@subsubsection}} + +\def\@subsubsection#1{% heading C + \if@nobreak + \everypar{}% + \ifnum\LastMac=\Hbe \addvspace{1pt plus 1pt minus .5pt}\fi + \else + \addpen{\gds@cbrk}% + \addvspace{\onehalf}% + \fi + \bgroup + \ninepoint\it + \Raggedright + \global\advance\SecSecSec \@ne + \noindent\@nohdbrk\thesubsubsection \hskip 1pc\relax #1\par + \egroup + \nobreak + \vskip\half + \nobreak + \@noafterindent + \LastMac=\Hce\relax +} + +\def\@ssubsubsection#1{% heading C* + \if@nobreak + \everypar{}% + \ifnum\LastMac=\Hbe \addvspace{1pt plus 1pt minus .5pt}\fi + \else + \addpen{\gds@cbrk}% + \addvspace{\onehalf}% + \fi + \bgroup + \ninepoint\it + \Raggedright + \noindent\@nohdbrk #1\par + \egroup + \nobreak + \vskip\half + \nobreak + \@noafterindent + \LastMac=\Hce\relax +} + +\def\paragraph#1{% heading D + \if@nobreak + \everypar{}% + \else + \addpen{\gds@cbrk}% + \addvspace{\one}% + \fi% + \bgroup% + \ninepoint\it + \noindent #1\ \nobreak% + \egroup + \LastMac=\Hde\relax + \ignorespaces +} + + +% Appendix + +\newif\ifappendix + +\def\appendix{% + \global\appendixtrue + \def\thesection{\Alph{Sec}}% + \def\thesubsection{\thesection\arabic{SecSec}}% + \def\theeq{\thesection\arabic{Eqnno}}% + \Sec=\z@ \SecSec=\z@ \SecSecSec=\z@ \Eqnno=\z@ \SubEqnno=\z@\relax +} + + +% Text + +\let\tx=\relax % provided for backward compatibility + + +% Lists + +\def\beginlist{% + \par\if@nobreak \else\addvspace{\half}\fi% + \bgroup% + \ninepoint + \let\item=\list@item% +} + +\def\list@item{% + \par\noindent\hskip 1em\relax% + \ignorespaces% +} + +\def\endlist{\par\egroup\addvspace{\half}\@doendpe} + + +% References + +\def\beginrefs{% + \par + \bgroup + \eightpoint + \Fullout + \let\bibitem=\bib@item +} + +\def\bib@item{% + \par\parindent=1.5em\Hang{1.5em}{1}% + \everypar={\Hang{1.5em}{1}\ignorespaces}% + \noindent\ignorespaces +} + +\def\endrefs{\par\egroup\@doendpe} + + +% Page heads + +\newtoks\CatchLine + +\def\@journal{Mon.\ Not.\ R.\ Astron.\ Soc.\ } % The journal title string +\def\@pubyear{1994} % Assign a default publication year +\def\@pagerange{000--000} % Assign a default page-range +\def\@volume{000} % Assign a default volume number +\def\@microfiche{} % + +\def\pubyear#1{\gdef\@pubyear{#1}\@makecatchline} +\def\pagerange#1{\gdef\@pagerange{#1}\@makecatchline} +\def\volume#1{\gdef\@volume{#1}\@makecatchline} +\def\microfiche#1{\gdef\@microfiche{and Microfiche\ #1}\@makecatchline} + +\def\@makecatchline{% + \global\CatchLine{% + {\rm \@journal {\bf \@volume},\ \@pagerange\ (\@pubyear)\ \@microfiche}}% +} + +\@makecatchline % Assign a catchline, using the above defaults + +\newtoks\LeftHeader +\def\shortauthor#1{% left page head + \global\LeftHeader{#1}% +} + +\newtoks\RightHeader +\def\shorttitle#1{% right page head + \global\RightHeader{#1}% +} + +\def\PageHead{% recto/verso running heads + \begingroup + \ifsp@page + \csname ps@\sp@type\endcsname + \global\sp@pagefalse + \fi + \ifodd\pageno + \let\the@head=\@oddhead + \else + \let\the@head=\@evenhead + \fi + \vbox to \z@{\vskip-22.5\p@% + \hbox to \PageWidth{\vbox to8.5\p@{}% + \the@head + }% + \vss}% + \endgroup + \nointerlineskip +} + +\def\today{% + \number\day\space + \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\year% +} + +\def\PageFoot{} % No page footer as default + +\def\authorcomment#1{% + \gdef\PageFoot{% + \nointerlineskip% + \vbox to 22pt{\vfil% + \hbox to \PageWidth{\elevenpoint\noindent \hfil #1 \hfil}}% + }% +} + + +% Plate pages + +\newif\ifplate@page +\newbox\plt@box + +\def\beginplatepage{% + \let\plate=\plate@head + \let\caption=\fig@caption + \global\setbox\plt@box=\vbox\bgroup + \TEMPDIMEN=\PageWidth % For \fig@caption test + \hsize=\PageWidth\relax +} + +\def\endplatepage{\par\egroup\global\plate@pagetrue} +\def\plate@head#1{\gdef\plt@cap{#1}} + +% Letters option + +\def\letters{% + \gdef\folio{\ifnum\pageno<\z@ L\romannumeral-\pageno + \else L\number\pageno \fi}% +} + + +% Math setup + +% The standard math indentation +\newdimen\mathindent + +\global\mathindent=\z@ +\global\everydisplay{\global\@dspwd=\displaywidth\displaysetup} + +% New versions of \displaylines, \eqalign, \eqalignno for +% when non-centered math is in use. + +\def\@displaylines#1{% (for non-centered math) + {}$\displ@y\hbox{\vbox{\halign{$\@lign\hfil\displaystyle##\hfil$\crcr + #1\crcr}}}${}% +} + +\def\@eqalign#1{\null\vcenter{\openup\jot\m@th% (for non-centered math) + \ialign{\strut\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil + \crcr#1\crcr}}% +} + +\def\@eqalignno#1{% (for non-centered math) + \global\advance\@dspwd by -\mathindent% + {}$\displ@y\hbox{\vbox{\halign to\@dspwd% + {\hfil$\@lign\displaystyle{##}$\tabskip\z@skip + &$\@lign\displaystyle{{}##}$\hfil\tabskip\centering + &\llap{$\@lign##$}\tabskip\z@skip\crcr + #1\crcr}}}${}% +} + +% When equations are flushleft ensure, that \displaylines, +% \eqalign, \eqalignno and \leqalignno point to the new versions of +% the macros. Also make \leqalignno act like \eqalignno, otherwise the +% equation text would `crash' into the equation number. + +\global\let\displaylines=\@displaylines +\global\let\eqalign=\@eqalign +\global\let\eqalignno=\@eqalignno +\global\let\leqalignno=\@eqalignno + +\newdimen\@dspwd \@dspwd=\z@ +\newif\if@eqno +\newif\if@leqno +\newtoks\@eqn +\newtoks\@eq + +\def\displaysetup#1$${\displaytest#1\eqno\eqno\displaytest} + +\def\displaytest#1\eqno#2\eqno#3\displaytest{% + \if!#3!\ldisplaytest#1\leqno\leqno\ldisplaytest + \else\@eqnotrue\@leqnofalse\@eqn={#2}\@eq={#1}\fi + \generaldisplay$$} + +\def\ldisplaytest#1\leqno#2\leqno#3\ldisplaytest{% +\@eq={#1}% + \if!#3!\@eqnofalse\else\@eqnotrue\@leqnotrue + \@eqn={#2}\fi} + +\def\generaldisplay{% + \if@eqno + \if@leqno + \hbox to \displaywidth{\noindent + \rlap{$\displaystyle\the\@eqn$}% + \hskip\mathindent$\displaystyle\the\@eq$\hfil}% + \else + \hbox to \displaywidth{\noindent + \hskip\mathindent + $\displaystyle\the\@eq$\hfil$\displaystyle\the\@eqn$}% + \fi + \else + \hbox to \displaywidth{\noindent + \hskip\mathindent$\displaystyle\the\@eq$\hfil}% + \fi +} + + +% Finishing notice + +\def\@notice{% + \par\Two% + \noindent{\b@ls{11pt}\ninerm This paper has been produced using the + Royal Astronomical Society/Blackwell Science \TeX\ macros.\par}% +} + +% redefine \bye to output our identification notice : +\outer\def\bye{\@notice\par\vfill\supereject\end} + + +% define a sign on : + +\def\start@mess{% + Monthly notices of the RAS journal style (\@typeface)\space + v\@version,\space \@verdate.% +} + +\everyjob{\Warn{\start@mess}} + + +% Two-column macros + +%--------------------------------------------------------% +% INITIALISATION % +%--------------------------------------------------------% + +\newif\if@debug \@debugfalse % when false, only warnings displayed + +\def\Print#1{\if@debug\immediate\write16{#1}\else \fi} +\def\Warn#1{\immediate\write16{#1}} +\def\wlog#1{} + +\newcount\Iteration % temporary loop counter + +\def\Single{0} \def\Double{1} % ItemSPAN's +\def\Figure{0} \def\Table{1} % ItemTYPE's + +\def\InStack{0} % ItemSTATUS +\def\InZoneA{1} +\def\InZoneB{2} +\def\InZoneC{3} + +\newcount\TEMPCOUNT % temporary count register +\newdimen\TEMPDIMEN % temporary dimen register +\newbox\TEMPBOX % temporary box register +\newbox\VOIDBOX % a box which is permenately void + +\newcount\LengthOfStack % number of items currently in stack +\newcount\MaxItems % maximum number of items allowed in stack +\newcount\StackPointer +\newcount\Point % used in calculation for generating the + % physical address of an item in the stack. +\newcount\NextFigure % number of next figure to be output +\newcount\NextTable % number of next table to be output +\newcount\NextItem % Next item to consider by order in stack + +\newcount\StatusStack % set to point to top of STATUS stack +\newcount\NumStack % set to point to top of NUMBER stack +\newcount\TypeStack % set to point to top of TYPE stack +\newcount\SpanStack % set to point to top of SPAN stack +\newcount\BoxStack % set to point to top of BOX stack + +\newcount\ItemSTATUS % status of present item +\newcount\ItemNUMBER % number of present item +\newcount\ItemTYPE % type of present item +\newcount\ItemSPAN % span of present item +\newbox\ItemBOX % box of present item +\newdimen\ItemSIZE % size of present item + % (calculated by GetItemBOX) + +\newdimen\PageHeight % vertical measure of full page +\newdimen\TextLeading % distance between baselines of body text +\newdimen\Feathering % amount of interline stretch +\newcount\LinesPerPage % height of page in text lines +\newdimen\ColumnWidth % width of 1 column of text +\newdimen\ColumnGap % size of gap between columns +\newdimen\PageWidth % = \ColumnWidth * 2 + \ColumnGap +\newdimen\BodgeHeight % Bodge to align figures and tables with text +\newcount\Leading % Set to same as \TextLeading above + +\newdimen\ZoneBSize % size of items in ZoneB +\newdimen\TextSize % size of text in ZoneB +\newbox\ZoneABOX % contains Zone A material +\newbox\ZoneBBOX % contains Zone B material +\newbox\ZoneCBOX % contains Zone C material + +\newif\ifFirstSingleItem +\newif\ifFirstZoneA +\newif\ifMakePageInComplete +\newif\ifMoreFigures \MoreFiguresfalse % set true in join stack +\newif\ifMoreTables \MoreTablesfalse % set true in join stack + +\newif\ifFigInZoneB % used to determine in which zone an item +\newif\ifFigInZoneC % will be placed based on what is in other +\newif\ifTabInZoneB % zones already for a given page. +\newif\ifTabInZoneC + +\newif\ifZoneAFullPage + +\newbox\MidBOX % = LeftBOX+gap+RightBOX +\newbox\LeftBOX +\newbox\RightBOX +\newbox\PageBOX % complete made-up page + +\newif\ifLeftCOL % flags first pass through output routine +\LeftCOLtrue + +\newdimen\ZoneBAdjust + +\newcount\ItemFits +\def\Yes{1} +\def\No{2} + +\def\LineAdjust#1{\global\ZoneBAdjust=#1\TextLeading\relax} + + +% Setup file. + +\MaxItems=15 +\NextFigure=\z@ % used for article opening +\NextTable=\@ne + +\BodgeHeight=6pt +\TextLeading=11pt % baselineskip of body text +\Leading=11 +\Feathering=\z@ % amount of interline stretch +\LinesPerPage=61 % number of text lines per full page -1 +\topskip=\TextLeading +\ColumnWidth=20pc % width of text columns +\ColumnGap=2pc % gap between columns + +\newskip\ItemSepamount % space between floats +\ItemSepamount=\TextLeading plus \TextLeading minus 4pt + +\parskip=\z@ plus .1pt +\parindent=18pt +\widowpenalty=\z@ +\clubpenalty=10000 +\tolerance=1500 +\hbadness=1500 +\abovedisplayskip=6pt plus 2pt minus 1pt +\belowdisplayskip=6pt plus 2pt minus 1pt +\abovedisplayshortskip=6pt plus 2pt minus 1pt +\belowdisplayshortskip=6pt plus 2pt minus 1pt + +\frenchspacing + +\ninepoint % start main text size + +\PageHeight=682pt +\PageWidth=2\ColumnWidth +\advance\PageWidth by \ColumnGap + +\pagestyle{headings} + + +%--------------------------------------------------------% +% STACKS % +%--------------------------------------------------------% + +% THE ITEM STACK +% The item stack contains contains figures and tables +% in the order in which they appear in the article source +% code. + +% allocate stack space + +\newcount\DUMMY \StatusStack=\allocationnumber +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY + +\newcount\DUMMY \NumStack=\allocationnumber +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY + +\newcount\DUMMY \TypeStack=\allocationnumber +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY + +\newcount\DUMMY \SpanStack=\allocationnumber +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY +\newcount\DUMMY \newcount\DUMMY \newcount\DUMMY + +\newbox\DUMMY \BoxStack=\allocationnumber +\newbox\DUMMY \newbox\DUMMY \newbox\DUMMY +\newbox\DUMMY \newbox\DUMMY \newbox\DUMMY +\newbox\DUMMY \newbox\DUMMY \newbox\DUMMY +\newbox\DUMMY \newbox\DUMMY \newbox\DUMMY +\newbox\DUMMY \newbox\DUMMY \newbox\DUMMY + +\def\wlog{\immediate\write\m@ne} + +% \GetItemSTATUS, \GetItemNUMBER, \GetItemTYPE, \GetItemSPAN, +% \GetItemBox +% are used to get details of a particular item from the item +% stack. The argument to each of these is the items position +% in the stack (usually \StackPointer)...not the items number. + +\def\GetItemAll#1{% + \GetItemSTATUS{#1} + \GetItemNUMBER{#1} + \GetItemTYPE{#1} + \GetItemSPAN{#1} + \GetItemBOX{#1} +} + +% Note: \LeaveStack uses this routine. Do not destroy \Point +\def\GetItemSTATUS#1{% + \Point=\StatusStack + \advance\Point by #1 + \global\ItemSTATUS=\count\Point +} + +% Note: \LeaveStack uses this routine. Do not destroy \Point +\def\GetItemNUMBER#1{% + \Point=\NumStack + \advance\Point by #1 + \global\ItemNUMBER=\count\Point +} + +% Note: \LeaveStack uses this routine. Do not destroy \Point +\def\GetItemTYPE#1{% + \Point=\TypeStack + \advance\Point by #1 + \global\ItemTYPE=\count\Point +} + +% Note: \LeaveStack uses this routine. Do not destroy \Point +\def\GetItemSPAN#1{% + \Point\SpanStack + \advance\Point by #1 + \global\ItemSPAN=\count\Point +} + +% Note: \LeaveStack uses this routine. Do not destroy \Point +\def\GetItemBOX#1{% + \Point=\BoxStack + \advance\Point by #1 + \global\setbox\ItemBOX=\vbox{\copy\Point} + \global\ItemSIZE=\ht\ItemBOX + \global\advance\ItemSIZE by \dp\ItemBOX + \TEMPCOUNT=\ItemSIZE + \divide\TEMPCOUNT by \Leading + \divide\TEMPCOUNT by 65536 + \advance\TEMPCOUNT \@ne + \ItemSIZE=\TEMPCOUNT pt + \global\multiply\ItemSIZE by \Leading +} + +% item joins stack + +\def\JoinStack{% + \ifnum\LengthOfStack=\MaxItems % stack is full of items + \Warn{WARNING: Stack is full...some items will be lost!} + \else + \Point=\StatusStack + \advance\Point by \LengthOfStack + \global\count\Point=\ItemSTATUS + \Point=\NumStack + \advance\Point by \LengthOfStack + \global\count\Point=\ItemNUMBER + \Point=\TypeStack + \advance\Point by \LengthOfStack + \global\count\Point=\ItemTYPE + \Point\SpanStack + \advance\Point by \LengthOfStack + \global\count\Point=\ItemSPAN + \Point=\BoxStack + \advance\Point by \LengthOfStack + \global\setbox\Point=\vbox{\copy\ItemBOX} + \global\advance\LengthOfStack \@ne + \ifnum\ItemTYPE=\Figure % used in \MakePage + \global\MoreFigurestrue + \else + \global\MoreTablestrue + \fi + \fi +} + +% item leaves stack +% #1=physical position of the item to be removed + +\def\LeaveStack#1{% + {\Iteration=#1 + \loop + \ifnum\Iteration<\LengthOfStack + \advance\Iteration \@ne + \GetItemSTATUS{\Iteration} + \advance\Point by \m@ne + \global\count\Point=\ItemSTATUS + \GetItemNUMBER{\Iteration} + \advance\Point by \m@ne + \global\count\Point=\ItemNUMBER + \GetItemTYPE{\Iteration} + \advance\Point by \m@ne + \global\count\Point=\ItemTYPE + \GetItemSPAN{\Iteration} + \advance\Point by \m@ne + \global\count\Point=\ItemSPAN + \GetItemBOX{\Iteration} + \advance\Point by \m@ne + \global\setbox\Point=\vbox{\copy\ItemBOX} + \repeat} + \global\advance\LengthOfStack by \m@ne +} + +% clean stack +% This routine scans through the stack and removes anything +% that does not have STATUS=\InStack. + +\newif\ifStackNotClean + +\def\CleanStack{% + \StackNotCleantrue + {\Iteration=\z@ + \loop + \ifStackNotClean + \GetItemSTATUS{\Iteration} + \ifnum\ItemSTATUS=\InStack + \advance\Iteration \@ne + \else + \LeaveStack{\Iteration} + \fi + \ifnum\LengthOfStack<\Iteration + \StackNotCleanfalse + \fi + \repeat} +} + +% Find item. +% This macro searches from the top to the bottom of the +% stack for an item of a specified type and number. +% #1=type, #2=number +% If the specified item is found, then \StackPointer is set +% to point to it, else \StackPointer=-1. +% This routine is used to find the next figure or table +% by number. + +\def\FindItem#1#2{% + \global\StackPointer=\m@ne % assume item isn't in stack for now + {\Iteration=\z@ + \loop + \ifnum\Iteration<\LengthOfStack + \GetItemSTATUS{\Iteration} + \ifnum\ItemSTATUS=\InStack + \GetItemTYPE{\Iteration} + \ifnum\ItemTYPE=#1 + \GetItemNUMBER{\Iteration} + \ifnum\ItemNUMBER=#2 + \global\StackPointer=\Iteration + \Iteration=\LengthOfStack % terminate loop + \fi + \fi + \fi + \advance\Iteration \@ne + \repeat} +} + +% Find next type +% This macro searches from the top to the bottom of the stack +% looking for the first item which has STATUS=\InStack. +% If it is a figure then a figure is what will be considered +% next by \MakePage else table. + +\def\FindNext{% + \global\StackPointer=\m@ne % assume stack is empty for now + {\Iteration=\z@ + \loop + \ifnum\Iteration<\LengthOfStack + \GetItemSTATUS{\Iteration} + \ifnum\ItemSTATUS=\InStack + \GetItemTYPE{\Iteration} + \ifnum\ItemTYPE=\Figure + \ifMoreFigures + \global\NextItem=\Figure + \global\StackPointer=\Iteration + \Iteration=\LengthOfStack % terminate loop + \fi + \fi + \ifnum\ItemTYPE=\Table + \ifMoreTables + \global\NextItem=\Table + \global\StackPointer=\Iteration + \Iteration=\LengthOfStack % terminate loop + \fi + \fi + \fi + \advance\Iteration \@ne + \repeat} +} + +% Change status +% Macro to change the status of a specified item in stack. +% #1=item, #2=new status + +\def\ChangeStatus#1#2{% + \Point=\StatusStack + \advance\Point by #1 + \global\count\Point=#2 +} + + +%--------------------------------------------------------% +% MAKEPAGE % +%--------------------------------------------------------% + +% This macro is called at the start of every new page +% including the first. It scans through the stack picking +% out items which should be placed on this page. It then +% leaves space for the items to be placed later. The routine +% terminates when either there is no room on the page to +% fit the next figure or table, or there are no more items +% in the stack. + +\def\Zone{\InZoneA} + +\ZoneBAdjust=\z@ + +\def\MakePage{% allocate space on this page for stack items + \global\ZoneBSize=\PageHeight + \global\TextSize=\ZoneBSize + \global\ZoneAFullPagefalse + \global\topskip=\TextLeading + \MakePageInCompletetrue + \MoreFigurestrue + \MoreTablestrue + \FigInZoneBfalse + \FigInZoneCfalse + \TabInZoneBfalse + \TabInZoneCfalse + \global\FirstSingleItemtrue + \global\FirstZoneAtrue + \global\setbox\ZoneABOX=\box\VOIDBOX + \global\setbox\ZoneBBOX=\box\VOIDBOX + \global\setbox\ZoneCBOX=\box\VOIDBOX + \loop + \ifMakePageInComplete + \FindNext + \ifnum\StackPointer=\m@ne + \NextItem=\m@ne + \MoreFiguresfalse + \MoreTablesfalse + \fi + \ifnum\NextItem=\Figure + \FindItem{\Figure}{\NextFigure} + \ifnum\StackPointer=\m@ne \global\MoreFiguresfalse + \else + \GetItemSPAN{\StackPointer} + \ifnum\ItemSPAN=\Single \def\Zone{\InZoneB}\relax + \ifFigInZoneC \global\MoreFiguresfalse\fi + \else + \def\Zone{\InZoneA} + \ifFigInZoneB \def\Zone{\InZoneC}\fi + \fi + \fi + \ifMoreFigures\Print{}\FigureItems\fi + \fi +\ifnum\NextItem=\Table + \FindItem{\Table}{\NextTable} + \ifnum\StackPointer=\m@ne \global\MoreTablesfalse + \else + \GetItemSPAN{\StackPointer} + \ifnum\ItemSPAN=\Single\relax + \ifTabInZoneC \global\MoreTablesfalse\fi + \else + \def\Zone{\InZoneA} + \ifTabInZoneB \def\Zone{\InZoneC}\fi + \fi + \fi + \ifMoreTables\Print{}\TableItems\fi + \fi + \MakePageInCompletefalse % assume page is complete + \ifMoreFigures\MakePageInCompletetrue\fi + \ifMoreTables\MakePageInCompletetrue\fi + \repeat +%\Print{TextSize=\the\TextSize} +%\Print{ZoneBSize=\the\ZoneBSize} + \ifZoneAFullPage + \global\TextSize=\z@ + \global\ZoneBSize=\z@ + \global\vsize=\z@\relax + \global\topskip=\z@\relax + \vbox to \z@{\vss} + \eject + \else + \global\advance\ZoneBSize by -\ZoneBAdjust + \global\vsize=\ZoneBSize + \global\hsize=\ColumnWidth + \global\ZoneBAdjust=\z@ + \ifdim\TextSize<23pt + \Warn{} + \Warn{* Making column fall short: TextSize=\the\TextSize *} + \vskip-\lastskip\eject\fi + \fi +} + +\def\MakeRightCol{% allocate space for the right column of text + \global\TextSize=\ZoneBSize + \MakePageInCompletetrue + \MoreFigurestrue + \MoreTablestrue + \global\FirstSingleItemtrue + \global\setbox\ZoneBBOX=\box\VOIDBOX + \def\Zone{\InZoneB} + \loop + \ifMakePageInComplete + \FindNext + \ifnum\StackPointer=\m@ne + \NextItem=\m@ne + \MoreFiguresfalse + \MoreTablesfalse + \fi + \ifnum\NextItem=\Figure + \FindItem{\Figure}{\NextFigure} + \ifnum\StackPointer=\m@ne \MoreFiguresfalse + \else + \GetItemSPAN{\StackPointer} + \ifnum\ItemSPAN=\Double\relax + \MoreFiguresfalse\fi + \fi + \ifMoreFigures\Print{}\FigureItems\fi + \fi + \ifnum\NextItem=\Table + \FindItem{\Table}{\NextTable} + \ifnum\StackPointer=\m@ne \MoreTablesfalse + \else + \GetItemSPAN{\StackPointer} + \ifnum\ItemSPAN=\Double\relax + \MoreTablesfalse\fi + \fi + \ifMoreTables\Print{}\TableItems\fi + \fi + \MakePageInCompletefalse % assume page is complete + \ifMoreFigures\MakePageInCompletetrue\fi + \ifMoreTables\MakePageInCompletetrue\fi + \repeat + \ifZoneAFullPage + \global\TextSize=\z@ + \global\ZoneBSize=\z@ + \global\vsize=\z@\relax + \global\topskip=\z@\relax + \vbox to \z@{\vss} + \eject + \else + \global\vsize=\ZoneBSize + \global\hsize=\ColumnWidth + \ifdim\TextSize<23pt + \Warn{} + \Warn{* Making column fall short: TextSize=\the\TextSize *} + \vskip-\lastskip\eject\fi +\fi +} + +\def\FigureItems{% Stack pointer points to next figure + \Print{Considering...} + \ShowItem{\StackPointer} + \GetItemBOX{\StackPointer} % auto calculates ItemSIZE + \GetItemSPAN{\StackPointer} + \CheckFitInZone % check to see if item fits + \ifnum\ItemFits=\Yes + \ifnum\ItemSPAN=\Single + \ChangeStatus{\StackPointer}{\InZoneB} % flag to be output + \global\FigInZoneBtrue + \ifFirstSingleItem + \hbox{}\vskip-\BodgeHeight + \global\advance\ItemSIZE by \TextLeading + \fi + \unvbox\ItemBOX\ItemSep + \global\FirstSingleItemfalse + \global\advance\TextSize by -\ItemSIZE% allocate space + \global\advance\TextSize by -\TextLeading + \else + \ifFirstZoneA + \global\advance\ItemSIZE by \TextLeading + \global\FirstZoneAfalse\fi + \global\advance\TextSize by -\ItemSIZE + \global\advance\TextSize by -\TextLeading + \global\advance\ZoneBSize by -\ItemSIZE + \global\advance\ZoneBSize by -\TextLeading + \ifFigInZoneB\relax + \else + \ifdim\TextSize<3\TextLeading + \global\ZoneAFullPagetrue + \fi + \fi + \ChangeStatus{\StackPointer}{\Zone} + \ifnum\Zone=\InZoneC \global\FigInZoneCtrue\fi + \fi + \Print{TextSize=\the\TextSize} + \Print{ZoneBSize=\the\ZoneBSize} + \global\advance\NextFigure \@ne + \Print{This figure has been placed.} + \else + \Print{No space available for this figure...holding over.} + \Print{} + \global\MoreFiguresfalse + \fi +} + +\def\TableItems{% Stack pointer points to next table + \Print{Considering...} + \ShowItem{\StackPointer} + \GetItemBOX{\StackPointer} % auto calculates ItemSIZE + \GetItemSPAN{\StackPointer} + \CheckFitInZone % check to see of item fits in Zone + \ifnum\ItemFits=\Yes + \ifnum\ItemSPAN=\Single + \ChangeStatus{\StackPointer}{\InZoneB} + \global\TabInZoneBtrue + \ifFirstSingleItem + \hbox{}\vskip-\BodgeHeight + \global\advance\ItemSIZE by \TextLeading + \fi + \unvbox\ItemBOX\ItemSep + \global\FirstSingleItemfalse + \global\advance\TextSize by -\ItemSIZE + \global\advance\TextSize by -\TextLeading + \else + \ifFirstZoneA + \global\advance\ItemSIZE by \TextLeading + \global\FirstZoneAfalse\fi + \global\advance\TextSize by -\ItemSIZE + \global\advance\TextSize by -\TextLeading + \global\advance\ZoneBSize by -\ItemSIZE + \global\advance\ZoneBSize by -\TextLeading + \ifFigInZoneB\relax + \else + \ifdim\TextSize<3\TextLeading + \global\ZoneAFullPagetrue + \fi + \fi + \ChangeStatus{\StackPointer}{\Zone} + \ifnum\Zone=\InZoneC \global\TabInZoneCtrue\fi + \fi +% \Print{TextSize=\the\TextSize} +% \Print{ZoneBSize=\the\ZoneBSize} + \global\advance\NextTable \@ne + \Print{This table has been placed.} + \else + \Print{No space available for this table...holding over.} + \Print{} + \global\MoreTablesfalse + \fi +} + +% These macros check to see if an item of ItemSIZE will +% fit in a particular zone. If it will, then ItemFits +% will be set true else false. + +\def\CheckFitInZone{% +{\advance\TextSize by -\ItemSIZE + \advance\TextSize by -\TextLeading + \ifFirstSingleItem + \advance\TextSize by \TextLeading + \fi + \ifnum\Zone=\InZoneA\relax + \else \advance\TextSize by -\ZoneBAdjust + \fi + \ifdim\TextSize<3\TextLeading \global\ItemFits=\No + \else \global\ItemFits=\Yes\fi} +} + +\def\BeginOpening{% + % start 9pt a.s.a.p. so that \New.. commands get a chance to init. + \ninepoint + \thispagestyle{titlepage}% + \global\setbox\ItemBOX=\vbox\bgroup% + \hsize=\PageWidth% + \hrule height \z@ + \ifsinglecol\vskip 6pt\fi % Bodge, to get same pos. as two-column! +} + +\let\begintopmatter=\BeginOpening % alias for \BeginOpening + +\def\EndOpening{% + \One% 1 line fixed space below opening + \egroup + \ifsinglecol + \box\ItemBOX% + \vskip\TextLeading plus 2\TextLeading% var. space: min 1, max 3 lines + \@noafterindent + \else + \ItemNUMBER=\z@% + \ItemTYPE=\Figure + \ItemSPAN=\Double + \ItemSTATUS=\InStack + \JoinStack + \fi +} + + +% Figures + +\newif\if@here \@herefalse + +\def\no@float{\global\@heretrue} +\let\nofloat=\relax % only enabled for one column + +\def\beginfigure{% + \@ifstar{\global\@dfloattrue \@bfigure}{\global\@dfloatfalse \@bfigure}% +} + +\def\@bfigure#1{% + \par + \if@dfloat + \ItemSPAN=\Double + \TEMPDIMEN=\PageWidth + \else + \ItemSPAN=\Single + \TEMPDIMEN=\ColumnWidth + \fi + \ifsinglecol + \TEMPDIMEN=\PageWidth + \else + \ItemSTATUS=\InStack + \ItemNUMBER=#1% + \ItemTYPE=\Figure + \fi + \bgroup + \hsize=\TEMPDIMEN + \global\setbox\ItemBOX=\vbox\bgroup + \eightpoint\nostb@ls{10pt}% + \let\caption=\fig@caption + \ifsinglecol \let\nofloat=\no@float\fi +} + +\def\fig@caption#1{% + \vskip 5.5pt plus 6pt% + \bgroup % grouping and size change needed for plate pages + \eightpoint\nostb@ls{10pt}% + \setbox\TEMPBOX=\hbox{#1}% + \ifdim\wd\TEMPBOX>\TEMPDIMEN + \noindent \unhbox\TEMPBOX\par + \else + \hbox to \hsize{\hfil\unhbox\TEMPBOX\hfil}% + \fi + \egroup +} + +\def\endfigure{% + \par\egroup % end \vbox + \egroup + \ifsinglecol + \if@here \midinsert\global\@herefalse\else \topinsert\fi + \unvbox\ItemBOX + \endinsert + \else + \JoinStack + \Print{Processing source for figure \the\ItemNUMBER}% + \fi +} + + +% Tables + +\newbox\tab@cap@box +\def\tab@caption#1{\global\setbox\tab@cap@box=\hbox{#1\par}} + +\newtoks\tab@txt@toks +\long\def\tab@txt#1{\global\tab@txt@toks={#1}\global\table@txttrue} + +\newif\iftable@txt \table@txtfalse +\newif\if@dfloat \@dfloatfalse + +\def\begintable{% + \@ifstar{\global\@dfloattrue \@btable}{\global\@dfloatfalse \@btable}% +} + +\def\@btable#1{% + \par + \if@dfloat + \ItemSPAN=\Double + \TEMPDIMEN=\PageWidth + \else + \ItemSPAN=\Single + \TEMPDIMEN=\ColumnWidth + \fi + \ifsinglecol + \TEMPDIMEN=\PageWidth + \else + \ItemSTATUS=\InStack + \ItemNUMBER=#1% + \ItemTYPE=\Table + \fi + \bgroup + \eightpoint\nostb@ls{10pt}% + \global\setbox\ItemBOX=\vbox\bgroup + \let\caption=\tab@caption + \let\tabletext=\tab@txt + \ifsinglecol \let\nofloat=\no@float\fi +} + +\def\endtable{% + \par\egroup % end \vbox + \egroup + \setbox\TEMPBOX=\hbox to \TEMPDIMEN{% + \eightpoint\nostb@ls{10pt}% + \hss + \vbox{% + \hsize=\wd\ItemBOX + \ifvoid\tab@cap@box + \else + \noindent\unhbox\tab@cap@box + \vskip 5.5pt plus 6pt% + \fi + \box\ItemBOX + \iftable@txt + \vskip 10pt% + \noindent\the\tab@txt@toks + \global\table@txtfalse + \fi + }% + \hss + }% + \ifsinglecol + \if@here \midinsert\global\@herefalse\else \topinsert\fi + \box\TEMPBOX + \endinsert + \else + \global\setbox\ItemBOX=\box\TEMPBOX + \JoinStack + \Print{Processing source for table \the\ItemNUMBER}% + \fi +} + + +\def\UnloadZoneA{% +\FirstZoneAtrue + \Iteration=\z@ + \loop + \ifnum\Iteration<\LengthOfStack + \GetItemSTATUS{\Iteration} + \ifnum\ItemSTATUS=\InZoneA + \GetItemBOX{\Iteration} + \ifFirstZoneA \vbox to \BodgeHeight{\vfil}% + \FirstZoneAfalse\fi + \unvbox\ItemBOX\ItemSep + \LeaveStack{\Iteration} + \else + \advance\Iteration \@ne + \fi + \repeat +} + +\def\UnloadZoneC{% +\Iteration=\z@ + \loop + \ifnum\Iteration<\LengthOfStack + \GetItemSTATUS{\Iteration} + \ifnum\ItemSTATUS=\InZoneC + \GetItemBOX{\Iteration} + \ItemSep\unvbox\ItemBOX + \LeaveStack{\Iteration} + \else + \advance\Iteration \@ne + \fi + \repeat +} + + +%--------------------------------------------------------% +% DIAGNOSTICS % +%--------------------------------------------------------% + +\def\ShowItem#1{% Show details of on item entry in stack + {\GetItemAll{#1} + \Print{\the#1: + {TYPE=\ifnum\ItemTYPE=\Figure Figure\else Table\fi} + {NUMBER=\the\ItemNUMBER} + {SPAN=\ifnum\ItemSPAN=\Single Single\else Double\fi} + {SIZE=\the\ItemSIZE}}} +} + +\def\ShowStack{% + \Print{} + \Print{LengthOfStack = \the\LengthOfStack} + \ifnum\LengthOfStack=\z@ \Print{Stack is empty}\fi + \Iteration=\z@ + \loop + \ifnum\Iteration<\LengthOfStack + \ShowItem{\Iteration} + \advance\Iteration \@ne + \repeat +} + +\def\B#1#2{% +\hbox{\vrule\kern-0.4pt\vbox to #2{% +\hrule width #1\vfill\hrule}\kern-0.4pt\vrule} +} + + +%-------------------------------------------------------% +% SINGLE COLUMN OUTPUT ROUTINE % +%-------------------------------------------------------% + +\newif\ifsinglecol \singlecolfalse + +\def\onecolumn{% + \global\output={\singlecoloutput}% + \global\hsize=\PageWidth + \global\vsize=\PageHeight + \global\ColumnWidth=\hsize + \global\TextLeading=12pt + \global\Leading=12 + \global\singlecoltrue + \global\let\onecolumn=\relax% stop them using \onecolumn again + \global\let\footnote=\sing@footnote% enable footnotes + \global\let\vfootnote=\sing@vfootnote + \ninepoint % reset \baselineskip after leading change + \message{(Single column)}% +} + +\def\singlecoloutput{% + \shipout\vbox{\PageHead\pagebody\PageFoot}% + \advancepageno +% + \ifplate@page + \shipout\vbox{% + \sp@pagetrue + \def\sp@type{plate}% + \global\plate@pagefalse + \PageHead\vbox to \PageHeight{\unvbox\plt@box\vfil}\PageFoot% + }% + \message{[plate]}% + \advancepageno + \fi +% + \ifnum\outputpenalty>-\@MM \else\dosupereject\fi% +} + +\def\ItemSep{\vskip\ItemSepamount\relax} + +\def\ItemSepbreak{\par\ifdim\lastskip<\ItemSepamount + \removelastskip\penalty-200\ItemSep\fi% +} + +% Modify plain's \endinsert so that the mn's spacing is used + +\let\@@endinsert=\endinsert % save plain's original \endinsert + +\def\endinsert{\egroup % finish the \vbox + \if@mid \dimen@\ht\z@ \advance\dimen@\dp\z@ \advance\dimen@12\p@ + \advance\dimen@\pagetotal \advance\dimen@-\pageshrink + \ifdim\dimen@>\pagegoal\@midfalse\p@gefalse\fi\fi + \if@mid \ItemSep\box\z@\ItemSepbreak + \else\insert\topins{\penalty100 % floating insertion + \splittopskip\z@skip + \splitmaxdepth\maxdimen \floatingpenalty\z@ + \ifp@ge \dimen@\dp\z@ + \vbox to\vsize{\unvbox\z@\kern-\dimen@}% depth is zero + \else \box\z@\nobreak\ItemSep\fi}\fi\endgroup% +} + + +% Footnotes (only enabled in single column) + +\def\gobbleone#1{} +\def\gobbletwo#1#2{} +\let\footnote=\gobbletwo % Gobble footnote's unless enabled by \onecolumn +\let\vfootnote=\gobbleone + +\def\sing@footnote#1{\let\@sf\empty % parameter #2 (the text) is read later + \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi + \hbox{$^{\hbox{\eightpoint #1}}$}\@sf\sing@vfootnote{#1}% +} + +\def\sing@vfootnote#1{\insert\footins\bgroup\eightpoint\b@ls{9pt}% + \interlinepenalty\interfootnotelinepenalty + \splittopskip\ht\strutbox % top baseline for broken footnotes + \splitmaxdepth\dp\strutbox \floatingpenalty\@MM + \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip + \noindent $^{\scriptstyle\hbox{#1}}$\hskip 4pt% + \footstrut\futurelet\next\fo@t% +} + +% Kill footnote rule +\def\footnoterule{\kern-3\p@ \hrule height \z@ \kern 3\p@} + +\skip\footins=19.5pt plus 12pt minus 1pt +\count\footins=1000 +\dimen\footins=\maxdimen + + +% Landscape + +\def\landscape{% + \global\TEMPDIMEN=\PageWidth + \global\PageWidth=\PageHeight + \global\PageHeight=\TEMPDIMEN + \global\let\landscape=\relax% stop them using \landscape again. + \onecolumn + \message{(landscape)}% + \raggedbottom +} + + +%-------------------------------------------------------% +% TWO COLUMN OUTPUT ROUTINE % +%-------------------------------------------------------% + +\output{% + \ifLeftCOL + \global\setbox\LeftBOX=\vbox to \ZoneBSize{\box255\unvbox\ZoneBBOX}% + \global\LeftCOLfalse + \MakeRightCol + \else + \setbox\RightBOX=\vbox to \ZoneBSize{\box255\unvbox\ZoneBBOX}% + \setbox\MidBOX=\hbox{\box\LeftBOX\hskip\ColumnGap\box\RightBOX}% + \setbox\PageBOX=\vbox to \PageHeight{% + \UnloadZoneA\box\MidBOX\UnloadZoneC}% + \shipout\vbox{\PageHead\box\PageBOX\PageFoot}% + \advancepageno +% + \ifplate@page + \shipout\vbox{% + \sp@pagetrue + \def\sp@type{plate}% + \global\plate@pagefalse + \PageHead\vbox to \PageHeight{\unvbox\plt@box\vfil}\PageFoot% + }% + \message{[plate]}% + \advancepageno + \fi +% + \global\LeftCOLtrue + \CleanStack + \MakePage + \fi +} + + +% Startup message + +\Warn{\start@mess} + +\newif\ifCUPmtplainloaded % for use in documents +\ifprod@font + \global\CUPmtplainloadedtrue +\fi + +\def\mnmacrosloaded{} % so articles can see if a format file has been used. + +\catcode `\@=12 % @ signs are non-letters + +% \dump + +% end of mn.tex diff --git a/Master/texmf-dist/tex/plain/newsletr/italic.tex b/Master/texmf-dist/tex/plain/newsletr/italic.tex new file mode 100644 index 00000000000..6af739150aa --- /dev/null +++ b/Master/texmf-dist/tex/plain/newsletr/italic.tex @@ -0,0 +1,38 @@ +% Save file as: ITALIC.TEX Source: FILESERV@SHSU.BITNET +% +% File: ITALIC.TEX +% +% Author: Hunter Goatley +% goathunter@WKUVX1.BITNET +% +% Date: August 21, 1991 +% +% Abstract: +% +% The macros \ital and \slant are defined to typeset tex in italic +% (\it) and slanted (\sl) fonts, automatically inserting the italic +% correction (\/) if necessary. The correction is not inserted if +% the token following the parameter is a period or a comma, as +% suggested on page 14 of _The TeXbook_. +% +% Based on the \predict macro presented in _TeX for the Impatient_, +% p. 233. +% +% These macros use \toks0 as a temporary. +% +% The \futurelet\it@next in \ital and \slant defines \it@next to be +% whatever the character following the parameter is. \d@slant checks +% to see if \it@next is a comma or period; if it is neither, the +% italic correction (\/) is included. +% +\catcode`\@=11 % Temporarily make @ a letter +\def\ital#1{\toks0={#1}\let\slf@nt=\it\futurelet\it@next\d@slant} +\def\slant#1{\toks0={#1}\let\slf@nt=\sl\futurelet\it@next\d@slant} +\def\d@slant{{\slf@nt\the\toks0}% + \ifx\it@next,% % If \it@next is not a comma + \else\ifx\it@next.% % ... and is not a period + \else\/% % ... insert the correction (\/) + \fi\fi% % ... + \let\it@next=\relax% % "Undefine" \it@next + } +\catcode`\@=12 % Reset @ as other diff --git a/Master/texmf-dist/tex/plain/newsletr/lodriver.tex b/Master/texmf-dist/tex/plain/newsletr/lodriver.tex new file mode 100644 index 00000000000..f1e1149be41 --- /dev/null +++ b/Master/texmf-dist/tex/plain/newsletr/lodriver.tex @@ -0,0 +1,57 @@ +% Save file as: LODRIVER.TEX Source: FILESERV@SHSU.BITNET +% +% File: LODRIVER.TEX +% +% Functional description: +% +% This file is the TeX control file for the Robert R. McCammon newsletter +% published by Hunter Goatley. +% +% It depends on the file NEWSLETTER_FORMAT.TEX. +% +% Author: Hunter Goatley +% +% Date: May 26, 1990 +% +% Modified by: +% +% 01-000 Hunter Goatley 3-JUN-1989 14:56 +% Original version. +% +\ifx\undefined\eoa\input newsletr \fi % Include macro definitions if needed + +\def\LO{\book{Lights Out!\/}} +\def\POBox{P.\thinspace O.~Box 9609\relax} +\def\CityState{Bowling Green, KY\relax} +\def\ZipCode{42102-9609\relax} +\def\LOAddress{\POBox, \CityState \ZipCode\relax} +\def\RRM{Robert~R. McCammon\relax} +\def\RM{Rick McCammon\relax} +\def\McC{McCammon\relax} +\newspage +\begindoublequotes %Handle double-quotes + +\say{Producing Robert R. McCammon Newsletter: Vol. 2 No. 1, Issue 5} + +\pageheaderlinetrue \pagefooterlinetrue % Do head/foot lines +\evenpageheader{}{Lights Out!}{} % Header for even pages +\oddpageheader{}{The Robert R. McCammon Newsletter}{} % Header for odd pages +\evenpagefooter{Page\ \folio}{}{January 1991} % Footer for even pages +\oddpagefooter{Vol.\ 2\ \ No.\ 1}{}{Page\ \folio} % Footer for odd pages + +%\say{} +%\say{************* PROOF MODE IS SET ************} +%\say{} + +\ignoreunderfill +% +% Normally, I have separate files that I include. +% +%\include{TITLE.TEX} +%\include{EDITORIAL.TEX} +%\include{KAZUE.TEX} +%\include{NEXTTIME.TEX} + +\include{LOSAMPLE.TEX} + +\bye diff --git a/Master/texmf-dist/tex/plain/newsletr/newsletr.tex b/Master/texmf-dist/tex/plain/newsletr/newsletr.tex new file mode 100644 index 00000000000..d05c957c533 --- /dev/null +++ b/Master/texmf-dist/tex/plain/newsletr/newsletr.tex @@ -0,0 +1,1453 @@ +% Save file as: NEWSLETR.TEX Source: FILESERV@SHSU.BITNET + \def\IDENT{01-014} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright 1989--1991 by Hunter Goatley. This code may be freely % +% distributed and modified for non-commercial purposes as long as this % +% copyright notice is retained. Please notify the author of any fixes or % +% improvements you make. % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% File: NEWSLETTER_FORMAT.TEX +% +% Abstract: +% +% This file defines TeX control sequences required to produce a +% newsletter. It assumes plain.tex has been loaded. +% +% Author: Hunter Goatley +% VAX Systems Programmer +% Western Kentucky University +% Academic Computing, STH 226 +% Bowling Green, KY 42101 +% Voice: 502-745-5251 +% E-mail: goathunter@WKUVX1.BITNET +% +% Partially based on examples from _The TeXbook_, by +% Donald E. Knuth, and various other sources. Virtually +% all of the macros from other sources have been rewritten +% or at least modified. +% +% Date: June 3, 1989 +% +% Modified by: +% +% 01-014 Hunter Goatley 21-AUG-1991 10:47 +% Rewrote double-quote macros (they work now!). Cleaned up +% a little bit. Added \slant and \ital. +% +% 01-013 Hunter Goatley 25-JAN-1991 08:23 +% Added \newpage. Added \tt definitions to \*point macros. +% Fixed problem with \quotee (quotee name was getting split). +% Added setting of \hyphenpenalty and \emergencystretch to +% \newspage macro. +% +% 01-012 Hunter Goatley 15-JAN-1991 07:03 +% Added macro \round to help with keeping page & figure heights +% even. It helps some. Re-worked \beginquote and \endquote. +% Add \Quote and \quotee. Added \listindent and dimens. +% Modified \coltitle to include \noindent; changed amount of +% \vglue. Modified \beginlist and \endlist to check for +% a \parskip of 0pt; if 0, skip .5\baselineskip. Fixed +% \centerbox (was \vbox, now \hbox). +% +% 01-011 Hunter Goatley 5-JAN-1991 23:40 +% Changed \ednote macro so that \sl is redefined as \rm, not \ss. +% Changed \say macro to look like LaTeX's \typeout macro. +% +% 01-010 Hunter Goatley 6-OCT-1990 02:55 +% Commented out \ss calls at end of font macros. +% Placed newsletter hsize commands in a macro (\newspage) +% so that NEWTEX can be used like TeX normally is. +% +% 01-009 Hunter Goatley 10-MAR-1990 16:05 +% Added \par to the beginning of definition of \endlist. +% +% 01-008 Hunter Goatley 7-DEC-1989 22:07 +% Added \farright (place hbox flush right or on next line if it +% won't fit). Modified definition of \eoa to call \farright. +% Added \pmb -- "poor man's bold." Added font cmssxb. Added +% \eldots and \edots. +% +% 01-007 Hunter Goatley 1-OCT-1989 03:41 +% Added figure support for multiple column environment. +% Added \centerbox. +% +% 01-006 Hunter Goatley 17-AUG-1989 10:11 +% Modified so that "@" is an active character throughout the +% format file. Added new header/footer commands that are more +% flexible. Improved appearance of shadow box created by +% \leftshadowbox. +% +% 01-005 Hunter Goatley 10-AUG-1989 22:09 +% Modified \onepageout output routine so that it does not +% disable interline skip (commented out \offinterlineskip). +% This was causing the header and footer to appear flush +% with the main body of text on the page. Added routine +% \checkdqbalsub. Modified \include to automatically call +% \checkdqbalsub after the file has been read in. +% +% 01-004 Hunter Goatley 30-JUL-1989 03:10 +% Added macros to handle font size changes. Added code to +% let " be used. +% +% 01-003 Hunter Goatley 29-JUL-1989 19:26 +% Modified double column routines so that the number of columns +% can be specified. The routines now work for 2 to 6 columns +% of output. +% +% 01-002 Hunter Goatley 23-JUL-1989 22:21 +% Added more comments. Fixed double column routines so that +% page sizes are handled properly. +% +% 01-001 Hunter Goatley 2-JUL-1989 21:28 +% Added macros to handle bibliographies. +% +% 01-000 Hunter Goatley 3-JUN-1989 14:56 +% Original version. +% + +\def\say#1{{\let\protect\string\immediate\write10{#1}}} + +\say{TeX Input file for Newsletter format - version \IDENT} +\say{Copyright 1989-1991, Hunter Goatley} + +\everyjob{\say{TeX Newsletter version \IDENT. Copyright 1989-1991, Hunter Goatley}} + +% +% The \catcode command below lets us use "@" as a letter. It can therefore +% be used in command and variable names. PLAIN TeX uses this to avoid +% conflicts with user code, so we'll do it, too. +% +\catcode`@=11 % borrow the private macros of PLAIN (with care) + +\say{Loading fonts...} +% +% Load fonts and define commands to switch between fonts +% +\font\twelverm=cmr12 \font\tenrm=cmr10 \font\ninerm=cmr9 \font\eightrm=cmr8 +\font\twelvei=cmmi12 \font\teni=cmmi10 \font\ninei=cmmi9 \font\eighti=cmmi8 +%\font\twelvesy=cmsy12 \font\tensy=cmsy10 \font\ninesy=cmsy9 \font\eightsy=cmsy8 +\font\twelvebf=cmbx12 \font\tenbf=cmbx10 \font\ninebf=cmbx9 \font\eightbf=cmbx8 +\font\twelvett=cmtt12 \font\tentt=cmtt10 \font\ninett=cmtt9 \font\eighttt=cmtt8 +\font\twelveit=cmti12 \font\tenit=cmti10 \font\nineit=cmti9 \font\eightit=cmti8 +\font\twelvesl=cmsl12 \font\tensl=cmsl10 \font\ninesl=cmsl9 \font\eightsl=cmsl8 +\font\twelvess=cmss12 \font\tenss=cmss10 \font\niness=cmss9 \font\eightss=cmss8 +\font\twelvessi=cmssi12 \font\tenssi=cmssi10 \font\ninessi=cmssi9 +\font\eightssi=cmssi8 \font\tenssb=cmssbx10 +% +% 11-point font is scaled 10pt +% +\font\elevenrm=cmr10 scaled\magstephalf +\font\eleveni=cmmi10 scaled\magstephalf +\font\elevenbf=cmbx10 scaled\magstephalf +\font\eleventt=cmtt10 scaled\magstephalf +\font\elevenit=cmti10 scaled\magstephalf +\font\elevensl=cmsl10 scaled\magstephalf +\font\elevenss=cmss10 scaled\magstephalf +\font\elevenssi=cmssi10 scaled\magstephalf + +\font\seventeenrm=cmr17 \font\seventeenss=cmss17 \font\seventeenssi=cmssi17 + +\def\seventeenpoint{% + \def\sl{\seventeenssi}\def\it{\seventeenssi}\def\bf{\seventeenss}% + \def\rm{\seventeenrm}\def\ss{\seventeenss}\def\ssi{\seventeenssi}% + \baselineskip=19pt% % Change baselineskip + \rm% % By default, use sans serif +} +\def\twelvepoint{% + \def\sl{\twelvesl}\def\it{\twelveit}\def\bf{\twelvebf}% + \def\rm{\twelverm\let\sl=\twelvesl}\def\ss{\twelvess\let\sl=\ssi}% + \def\ssi{\twelvessi}\def\tt{\twelvett}% + \baselineskip=14pt% % Change baselineskip + \rm% % By default, use sans serif +} +\def\elevenpoint{% + \def\sl{\elevensl}\def\it{\elevenit}\def\bf{\elevenbf}% + \def\rm{\elevenrm\let\sl=\elevensl}\def\ss{\elevenss\let\sl=\ssi}% + \def\ssi{\elevenssi}% + \def\tt{\eleventt}% + \baselineskip=13pt% % Change baselineskip + \rm% % By default, use sans serif +} +\def\tenpoint{% + \def\sl{\tensl}\def\it{\tenit}\def\bf{\tenbf}% + \def\ssb{\tenssb}% + \def\rm{\tenrm\let\sl=\tensl}\def\ss{\tenss\let\sl=\ssi}% + \def\ssi{\tenssi}% + \def\tt{\tentt}% + \baselineskip=12pt% % Change baselineskip + \rm% % By default, use sans serif +} +\def\ninepoint{% + \def\sl{\ninesl}\def\it{\nineit}\def\bf{\ninebf}% + \def\rm{\ninerm\let\sl=\ninesl}\def\ss{\niness\let\sl=\ssi}% + \def\ssi{\ninessi}% + \def\tt{\ninett}% + \baselineskip=11pt% % Change baselineskip + \rm% % By default, use sans serif +} +\def\eightpoint{% + \def\sl{\eightsl}\def\it{\eightit}\def\bf{\eightbf}% + \def\rm{\eightrm\let\sl=\eightsl}\def\ss{\eightss\let\sl=\ssi}% + \def\ssi{\eightssi}% + \def\tt{\eighttt}% + \baselineskip=10pt% % Change baselineskip + \rm% % By default, use sans serif +} + +\font\HUGE=cmr17 %scaled\magstep2 +\font\verysmallrm=cmr5 % Used to make small copyright "C" +\font\smallsy=cmsy7 % Used to make small copyright circle +\def\tiny{\eightpoint\ss} % Equate \tiny to \eightpoint +\let\em=\eightssi +\font\quotefont=cmss12 at 14.4truept % Quotation font +\font\quoteefont=cmcsc10 % Font for quotee + +\say{Defining macros...} + +\newdimen\normalhsize % Create a new dimension +\newdimen\normalvsize % Create a new dimension + +\normalhsize=\hsize + +% +% \newspage +% +% Set up the page for a newsletter (7" by 9" of text, higher tolerance). +% +\def\newspage{% + \global\topskip=0pt % Set 1 inch top margin + \global\hoffset=-.25 true in % Move output .25 in to the left + \global\pretolerance=1000 % Set tolerance up (before hyphenation) + \global\tolerance=1500 % ... (after hyphenation) + \global\hyphenpenalty=500 % Discourage hyphenation + \global\emergencystretch=30pt + \global\normalhsize=7in + \global\hsize=\normalhsize % Pages are 7 inches wide + \global\vsize=9in % ... and 9 inches tall + \global\abovedisplayskip=\baselineskip + \global\belowdisplayskip=\baselineskip + \global\pagewidth=\hsize + \global\pageheight=\vsize +} + +\clubpenalty=500 %-1000 % Set penalties for club and widow lines +\widowpenalty=1000 % ... + +% +%=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +% Multiple Column Output +%=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +% +% Define macros to handle multiple column output +% +% These macros support figures, but the figures must be defined inside +% the multiple-column environment. Each column can have up to 3 figures +% of varying sizes; the figures are referred to as "top", "middle", and +% "bottom". Figures are identified via page number, column number, and +% the position. In addition, two special figures that span all columns +% can be specified using column 0 with "top" and "bottom". +% +% For example, {3}{2}{middle} refers to the middle figure in column 2 +% of output page 3. +% +% The figures are stored as temporary inserts (the inserts are freed +% after \endcolumns). The inserts are treated as an array whose first +% entry is \c@lfigstart. +% +% Note: column figures are not handled on the last page of column output. +% \balancecolumns does not understand how to deal with them. +% +% While in X column mode, the text is arranged as one column +% \columnwidth wide and \pageheight*X tall. This narrow column is +% then split into X boxes of equal height. +% +%*************************************** +% +% Allocate a bunch of dimens, boxes, and counts for use in multiple-column +% macros. +% +\newdimen\columnwidth % Width of a column +\newdimen\columnseprule % Width of rule between columns +\newdimen\columnsep % Width of whitespace between columns +\newdimen\pagewidth % Total width of page +\newdimen\pageheight % Total height of page +\newdimen\pageheightkeep % Total height of page +\newdimen\ruleht % Height of \hrules +\newif\ifcolfigs % Create a new \if (true if figures) +\newbox\partialpage % Box to hold partial page before cols. +\newbox\partialpagetop % Box to hold figure for top of page +\newbox\partialpagebottom % Box to hold figure for bottom of page +\newcount\mulc@lbegin % Allocate a counter +\newcount\mulc@lpart % Allocate a counter +\newcount\numberofcols % Number of columns +\newcount\c@lpageno % Current page # for column environment +\newcount\maxcolfigs % Maximum # of figures +\newcount\c@lfigstart % Starting array slot # for inserts +\newcount\c@lslot % Work counter to hold current slot # +\newcount\maxfigp@ges % Maximum # of pages of column output +\newcount\figsperp@ge % Number of figures on each page +% +% Allocate multi-column work counters and dimens. +% +\newdimen\tmp@ % Dimen used to calculate pageheights, etc. +\newdimen\tmp@one % Dimen used to calculate pageheights, etc. +\newcount\tmp@two % Usually # of cols * 2 +\newcount\tmp@three +\newcount\tmp@four +\newcount\tmp@five +\newcount\tmp@six +\newcount\tmp@seven +\newdimen\rtmp@ % Dimen used in rounding +% +% Initialize the \column* dimens. If \columnwidth is still 0pt when +% \begincolumns is called, the correct \columnwidth will be +% calculated from the current \hsize. This lets the user set a column +% width, without requiring that it be done. +% +\columnsep=20pt % Space between columns +\columnseprule=.4pt % Width of rule between columns +\columnwidth=0pt % Initialize columnwidth to 0pt +% +% Initialize pagewidth, pageheight, and ruleht +% +\pagewidth=\hsize \pageheight=\vsize \ruleht=.5pt +% +% Define constant values used to indicate type of figure stored in +% figure boxes. Probably inefficient to store them as macros, but it's +% easier that way (and they're not hardcoded in the macros below). +% +\def\TopFig@{500} % Figure is at top of page +\def\BotFig@{600} % Figure is at bottom of page +\def\RegFig@{321} % Figure is a corner figure +\def\topc@lpos{1} % The top figure position (1) +\def\middlec@lpos{2} % The middle figure position (2) +\def\bottomc@lpos{3} % The bottom figure position (3) + +% +% Macro \onepageout +% +% Output routine used to actually shipout pages to the DVI file. +% +\def\onepageout#1{\shipout\vbox{ % here we define one page of output + {\hsize=\pagewidth\makeheadline} % Do normal width headline + %\offinterlineskip % butt the boxes together + \vbox to \pageheightkeep{ % Create a vbox big enough + \boxmaxdepth=\maxdepth % Set boxmaxdepth + #1 % Now insert the information + } % \vbox to \pageheight + {\hsize=\pagewidth\makefootline} % Do normal width footline + } % End of \vbox + \advancepageno % Advance current page number + } % End of \def\onepageout + +%\output{\onepageout{\unvbox255}} % Send out any current output + +% +% When \begincolumns is called: +% +% \output is set to perform the following functions: +% Store the current vbox in the partialpage box (with some vskip) +% Eject the page (executing \output - page is not really ejected) +% Set new definition of output: +% Call \multiplecolumnout to output the columns +% Set \hsize = \columnwidth +% Set \vsize = (\pageheight * X) - (\ht\partialpage * X) --- each column will +% now be just as tall as the space below \partialpage +% +% Sometimes the first \output was executed twice in a row, which caused the +% first \partialpage to be lost. The code below includes a counter that is +% used to determine if the output routine is called a second time. If it +% is, the routine ships the previously stored partial page and then creates +% a new \partialpage. +% +% Originally, \begincolumns set \vsize = X * \pageheight (it did not +% take the height of the \partialpage into account). If the complete text +% would fit in the full \vsize, the balancing routine would have problems +% balancing and you'd end up with lots of whitespace on a page and the +% multiple columns would show up on the next page. Make sense? If not, +% just trust me; it caused problems. +% +% The solution to the problem was to set +% +% \vsize = (\pageheight * X) - (\ht\partialpage * X) +% +% and then set \vsize back to (X*\pageheight) after the first page had been +% ejected. This worked fine and dandy except for the fact that grouping was +% causing the changes to not hold. The solution (and it is a little +% dangerous) was to use \global\vsize so that the \vsize changes were never +% local to the group. \endcolumns then resets \vsize = \pageheight. +% Again, trust me; it seems to work OK. +% +\def\begincolumns#1{ + \ifnum#1<2 \errmessage{Invalid number of columns -- #1; must be 1 < X < 7}\fi + \ifnum#1>6 \errmessage{Invalid number of columns -- #1; must be 1 < X < 7}\fi + \begingroup % Begin a new group + \global\mulc@lbegin=1 % Set "first time" output counter + \global\mulc@lpart=1 % Set "first time" outputting dbl cols. + \global\pageheightkeep=\vsize % Initialize \pageheight + \global\pageheight=\vsize % Initialize \pageheight + \round{\pageheight}{\baselineskip}{<} % Round the pageheight down + \global\pagewidth=\hsize % Initialize \pagewidth + \global\tmp@two=#1 \global\advance\tmp@two by-1 + \global\numberofcols=#1 % Initialize number of columns + % Calculate column width unless user set a value + \ifdim\columnwidth=0pt % If user did not set \columnwidth + \columnwidth=\hsize % Set columnwidth = normal page width + \tmp@=-\columnsep % Copy neg. amount of columnsep to tmp@ + \multiply\tmp@ by\tmp@two % Multiply by X (total amount of colsep) + \advance\columnwidth by\tmp@ % Subtract width space between columns + \divide\columnwidth by\numberofcols % Divide by X to get X column output + \fi % End of \columnwidth calculation + \output={ + \ifnum\mulc@lbegin=1 % 1st time through? + \global\setbox\partialpage=\vbox{\unvbox255\bigskip} % Store partial + \global\mulc@lbegin=2 % Increment counter + \else % 2nd time through... + \onepageout{\vbox{\unvbox\partialpage}} % Ship previous partial + \global\setbox\partialpage=\vbox{\unvbox255\bigskip} % Make a new + \fi % ... partial + }\eject % Force the output routine to execute + \output={\multiplecolumnout} % Output X columns + \hsize=\columnwidth % Set hsize = col. width + % Set \vsize = (\pageheight * X) - (\ht\partialpage * X) + \global\vsize=\pageheight % Set \vsize=X*\pageht + \global\multiply\vsize by\numberofcols % Multiply by X + \tmp@=-\ht\partialpage \multiply\tmp@ by\numberofcols % Subtract (height of + \global\advance\vsize by\tmp@ % ... partial page * X) + \round{\vsize}{\baselineskip}{>} % Round it up + } % End of \begincolumns + +% +% \endcolumns performs the following functions: +% +% Sets \output to call \balancecolumns +% \vfills page and ejects it +% Terminates the group +% Resets vsize to original size +% Resets pagegoal = to original \vsize +% Skips parskip vertical space +% Signals that this is a good place for a break, if necessary +% +\def\endcolumns{\output={\balancecolumns} \eject + \endgroup \global\vsize=\pageheightkeep \pagegoal=\vsize \bigskip \goodbreak} +% +% \multiplecolumnout +% +% Sets splittopskip = topskip +% Sets splitmaxdepth = maxdepth +% Sets TeX register \dimen@ = to height of the page +% Subtracts the height of the partial page from \dimen@ +% Subtracts the heights of the top & bottom figures from \dimen@ +% Splits up the current output box into X boxes of size \dimen@, handling +% figures, if present +% Calls \onepageout to dump the new boxes +% Resets \vsize = (X * \pageheight) if first time through macro +% Frees up current output vbox (255) +% +\def\multiplecolumnout{\splittopskip=\topskip \splitmaxdepth=\maxdepth + \dimen@=\pageheight \advance\dimen@ by-\ht\partialpage + \advance\dimen@ by-\ht\partialpagetop % Subtract height of top figure + \advance\dimen@ by-\ht\partialpagebottom % Subtract height of bottom fig. + \tmp@four=\numberofcols \multiply\tmp@four by2 % Calculate upper box # + \tmp@five=0 % Start boxes with box 0 + \ifcolfigs % Are there figures defined? + \splitfigc@ls % Yes - go handle text & figures + \else % No - split \box255 into X cols + % + % Split box255 into a box of dimen@ height. Loop until X boxes created. + % + {\loop + \global\setbox\tmp@five=\vsplit255 to\dimen@ \advance\tmp@five by2 + \ifnum\tmp@five<\tmp@four \repeat} % Loop if not done + \fi % \ifcolfigs + \onepageout\pagesofar % Send this page to DVI file + \ifnum\mulc@lpart=1 % Does vsize need to be reset? + \global\mulc@lpart=2 % Yes - change counter + \global\vsize=\pageheight % Set \vsize = X * \pageheight + \global\multiply\vsize by\numberofcols % ... + \fi % ... + \ifcolfigs % If figures defined... + \global\advance\c@lpageno by\@ne % Bump column output page no. + \handlefigures % Handle next page's figures + \fi % \ifcolfigs + \unvbox255 \penalty\outputpenalty % Free current output vbox +} % End of \multiplcolumnout + +% +% \splitfigc@ls +% +% This macro splits \box255 into X columns, handling the figures. +% +% Get figure array slot number for figure 1, column 1 on current page +% Loop for each column (starting with column in \tmp@five) +% Make a copy of \dimen@ -> \tmp@ +% If a figure is defined for top of column +% Decrease \tmp@ by the height of the figure +% Set box 1 = the figure +% Else +% Set box 1 = null vbox +% Bump figure array slot number - now points to slot for middle figure +% If a figure is defined for middle of column +% Decrease \tmp@ by the height of the figure +% Set box 5 = the figure +% Else +% Set box 5 = null vbox +% Bump figure array slot number - now points to slot for bottom figure +% If a figure is defined for bottom of column +% Decrease \tmp@ by the height of the figure +% Set box 9 = the figure +% Else +% Set box 9 = null vbox +% Bump figure array slot number - now points to slot for next top figure +% Split \box255 into 1 or 2 pieces (2 if there is a middle figure) +% Set \box\tmp@five = \box1 + \box3 + \box5 + \box7 + \box9 +% Advance \tmp@five by 2 and loop until X "columns" created +% +\def\splitfigc@ls{ + % + % Split box255 into a box of dimen@ height. Loop until X boxes created. + % + \tmp@two=1 % Figure counter + \calcc@lslot{\c@lpageno}{1}{\tmp@two} % Get slot for figure 2 on current page + {\loop % Start loop + \tmp@=\dimen@ % Make a working copy of dimen@ + % + % Handle top figure + % + \ifnum\count\c@lslot=\RegFig@ % If this slot holds a single-column fig + \advance\tmp@ by-\ht\c@lslot % Subtract figure's height from \tmp@ + \setbox1=\vbox{\unvbox\c@lslot} % Copy figure to \box1 +\say{Figure \the\tmp@two\space on page \the\c@lpageno, document page \folio} + \else \setbox1=\vbox{} % Else set box 1 = null page + \fi % \ifnum + % + % Handle middle figure + % + \advance\c@lslot by\@ne % Point to next figure + \advance\tmp@two by\@ne % Advance figure counter + \ifnum\count\c@lslot=\RegFig@ % If this slot holds a single-column fig + \advance\tmp@ by-\ht\c@lslot % Subtract figure's height from \tmp@ + \setbox5=\vbox{\unvbox\c@lslot} % Copy figure to \box3 +\say{Figure \the\tmp@two\space on page \the\c@lpageno, document page \folio} + \else \setbox5=\vbox{} % Else set box 3 = null page + \fi % \ifnum + % + % Handle bottom figure + % + \advance\c@lslot by\@ne % Point to next figure + \advance\tmp@two by\@ne % Advance figure counter + \ifnum\count\c@lslot=\RegFig@ % If this slot holds a single-column fig + \advance\tmp@ by-\ht\c@lslot % Subtract figure's height from \tmp@ + \setbox9=\vbox{\unvbox\c@lslot} % Copy figure to \box3 +\say{Figure \the\tmp@two\space on page \the\c@lpageno, document page \folio} + \else \setbox9=\vbox{} % Else set box 3 = null page + \fi % \ifnum + \advance\c@lslot by\@ne % Point to next figure in array + \advance\tmp@two by\@ne % Advance figure counter + % + % Here, top figure is in \box1, middle figure is in \box5, and bottom + % figure is in \box9. + % Split \box255 to fill the remaining column space, splitting in + % half if there is a middle figure. + % Special case: if height of \box1 = \pageheight, \box\tmp@five=null + % + \ifdim\ht1=\pageheight % Is top = whole column? + \global\setbox3=\vbox{} % Yes - set \box3 to null + \global\setbox7=\vbox{} % Yes - set \box7 to null + \else % No - go ahead and do split + \ifdim\ht5>0pt % Is there a middle figure? + \divide\tmp@ by2 % Yes - break text to 2 pieces + \global\setbox3=\vsplit255 to\tmp@ % Set \box3 = 1st piece + \global\setbox7=\vsplit255 to\tmp@ % Set \box7 = 2nd piece + \else % No middle column... + \global\setbox3=\vsplit255 to\tmp@ % Put all text in \box3 + \global\setbox7=\vbox{} % Set \box7 to null + \fi % \ifdim\ht5... + \fi % \ifdim + % + % Now put the 5 pieces together as one vbox in \box\tmp@five + % + \global\setbox\tmp@five=\vbox to\dimen@{\offinterlineskip% + \ifdim\ht1=0pt\else\vbox{\unvbox1}\fi + \ifdim\ht3=0pt\else\vbox{\unvbox3}\fi + \ifdim\ht5=0pt\else\vbox{\unvbox5}\fi + \ifdim\ht7=0pt\else\vbox{\unvbox7}\fi + \ifdim\ht9=0pt\else\vbox{\unvbox9}\fi + \vfil\vfilneg % Cancels spurious vglue ???? (it works) + } + \advance\tmp@five by2 % Bump column box # + \ifnum\tmp@five<\tmp@four \repeat} % Loop if not done +} % End of \splitc@lfigs + +% +% \pagesofar +% +% Releases \partialpage box +% Sets width of X boxes (from box 0 to box X) = to \columnwidth +% Creates an hbox = pagewidth that consists of box0 + separator rule + box 2 +% + separator rule + box X +% This new hbox is \box255 and can be used to \shipout +% +\def\pagesofar{\unvbox\partialpage + \unvbox\partialpagetop % Include top figure + \tmp@four=\numberofcols \multiply\tmp@four by2 % Loop boundary number + \tmp@five=0 % Start with box 0 + % + % For each box, set the width equal to the column width + % + {\loop \wd\tmp@five=\columnwidth \advance\tmp@five by2 + \ifnum\tmp@five<\tmp@four \repeat} % Loop until X done + % + % Now put all the boxes together like this: + % + % box | box | ... | box + % + \tmp@five=0 % Start with box 0 again + \hbox to\pagewidth{\box\tmp@five\advance\tmp@five by2% Do the left column + \loop \hfil\vrule width\columnseprule \hfil \box\tmp@five% + \advance\tmp@five by2 % Bump box counter + \ifnum\tmp@five<\tmp@four \repeat % Loop if not done + } % End of hbox + \unvbox\partialpagebottom % Include bottom figure +} % End of \pagesofar + +% +% \balancecolumns - Balance both columns at end of X column page +% +% Sets box 0 = current page +% Sets dimen@ = height of the vbox in box 0 +% Adds topskip value to dimen@ +% Subtracts X * \baselineskip from dimen@ +% Divides dimen@ by X -- dimen@ now has target height of each column +% Sets splittopskip = to topskip so it can be added to all columns +% Loops +% Copies box 0 to box 3 +% Splits box 3 to dimen@ and stores in box 1 & 3 +% Increments dimen@ by 1pt and loops if column in box 3 exceeds dimen@ +% Note: Splitting of box is actually implemented as a loop that creates +% X boxes +% Moves columns in odd-numbered boxes to corresponding even-numbered boxes +% Calls pagesofar to make the hbox for it +% +\def\balancecolumns{\setbox0=\vbox{\unvbox255} \dimen@=\ht0 + % + % Subtract X * \baselineskip from dimen@ and divide dimen@ by X + % + \tmp@two=\numberofcols \advance\tmp@two by-1 + \tmp@=-\baselineskip \multiply\tmp@ by\tmp@two \advance\dimen@ by\tmp@ + \divide\dimen@ by\numberofcols \splittopskip=\topskip % Dimen@/X + % + % Split the column X times so we have X columns of equal height. If our + % last column is > dimen@, bump dimen@ by one and loop. + % + \tmp@four=\numberofcols \multiply\tmp@four by2 % X * 2 + \tmp@seven=\tmp@four \advance\tmp@seven by-1 % Work box: (X*2)-1 + {\vbadness=10000 \loop \global\setbox\tmp@seven=\copy0 + \tmp@five=0 \tmp@six=1 % Work box starts with 1 + {\loop % Loop for X boxes + \global\setbox\tmp@six=\vsplit\tmp@seven to\dimen@ % Vsplit box + \advance\tmp@six by2 % Bump box counter + \ifnum\tmp@six<\tmp@seven \repeat} % Loop if not done + \ifdim\ht\tmp@seven>\dimen@ \global\advance\dimen@ by1pt \repeat} + % + % Here we have X columns of equal height. Note that the last column may + % not be equal to the others. + % + % Copy the columns to the even-numbered boxes in preparation for \pagesofar + % + \tmp@five=0 \tmp@six=1 + {\loop \global\setbox\tmp@five=\vbox to\dimen@{\unvbox\tmp@six} + \advance\tmp@five by2 \advance\tmp@six by2 + \ifnum\tmp@five<\tmp@four \repeat} + \pagesofar} % Call \pagesofar to build page +% +% \c@lnewinsert +% +% This macro is used to perform a \newinsert for temporary usage (inside a grp) +% +\def\c@lnewinsert{\advance\insc@unt by\m@ne % Decrement insert counter + \ch@ck0\insc@unt\count % Make sure count is available + \ch@ck1\insc@unt\dimen % Make sure dimen is available + \ch@ck2\insc@unt\skip % Make sure skip is available + \ch@ck4\insc@unt\box % Make sure box is available +% NEED TO EMPTY BOX!!! + \count\insc@unt=0 % Set the count to 0 + \allocationnumber=\insc@unt % Set the allocation number +} % End of \c@lnewinsert + +% +% \definefigs +% +% This macro is called to establish the figure environment inside of the +% multiple-column environment. It allocates (until \endcolumns) an array +% of inserts (boxes, counts, dimens, and skips) to handle all of the +% figures per page for the given number of pages. When the figures +% are defined using \definefig, the proper box is filled with the figure. +% +% Inputs: +% +% #1 - Number of pages of multiple-column output (should be as large +% as the total number of pages between \begincolumns and +% \endcolumns) +% +\def\definefigs#1{ + \colfigstrue % Set column figure flag + \global\c@lpageno=1 % Get current page number + \maxfigp@ges=#1 % Set maximum # of pages with figures + \figsperp@ge=\numberofcols % Calculate # of figures per page + \multiply\figsperp@ge by3 % Figs/Page = 2 + (3 * number of cols) + \advance\figsperp@ge by2 % ... + \maxcolfigs=\maxfigp@ges % Figure out how many inserts are needed + \multiply\maxcolfigs by\figsperp@ge % ... for all of the figures + \tmp@two=\maxcolfigs % Start there and work down to first box + \loop \c@lnewinsert \advance\tmp@two by\m@ne + \ifnum\tmp@two>0 \repeat + \c@lfigstart=\insc@unt % Save starting array slot # + % We've allocated all boxes now + } % End of \definefigs + +% +% \definefig +% +% This macro stores figure information in the appropriate slot in the insert +% array. After calculating the proper slot number for the figure, it stores +% the figure in the corresponding box and sets the corresponding \count to +% a code identifying the box as holding a figure. +% +% Inputs: +% +% #1 Output page number +% #2 Column Number +% #3 Position (top, middle, bottom) +% #4 The vbox for the figure +% +\def\definefig#1#2#3#4{ + \ifcolfigs % Has \definefigs been called? + \else + \errmessage{Illegal use of \string\definefig\space before \string\definefigs} + \fi % \ifnum + \ifnum#2>\numberofcols % Illegal column number? + \errmessage{Column number #2 exceeds number of columns} + \fi % \ifnum + \calcc@lslot{#1}{#2}{\csname #3c@lpos\endcsname} % Calculate slot # + \ifcase\csname #3c@lpos\endcsname + \or\setbox\c@lslot=\vbox{#4\vskip\belowdisplayskip} + \or\setbox\c@lslot=\vbox{\vskip\abovedisplayskip#4% + \vskip\belowdisplayskip} + \or\setbox\c@lslot=\vbox{\vskip\abovedisplayskip#4} + \tmp@=\ht\c@lslot % Round up the size + \round{\tmp@}{\baselineskip}{>} % ... + \tmp@one=\tmp@ \advance\tmp@one by-\ht\c@lslot + \setbox\c@lslot=\vbox to\tmp@{\box\c@lslot} + \fi + \ifnum#2=0 % If column # is 0, special fig. + \ifnum\csname #3c@lpos\endcsname=1\count\c@lslot=\TopFig@ + \else\count\c@lslot=\BotFig@\fi % Top or Bottom figure that + \else % ... spans all columns + \count\c@lslot=\RegFig@ % Otherwise, identify the box + \fi % ... as containing a figure +\say{Processed #3 figure for column #2\space on page #1\space + - slot \the\c@lslot} + \say{The height is \the\ht\c@lslot} +} + +% +% \calcc@lslot +% +% This macro is called to calculate the array slot number for a figure. +% The formula for normal figures is: +% +% ((column# - 1) * 3figs/column) + Position +% +% This macro assumes there can be 3 figures per column (top, middle, & bottom) +% +% Inputs: +% +% #1 - Page number +% #2 - Column number (0 = special figure that spans all columns) +% #3 - Figure number (1 = top, 2 = middle, 3 = bottom) +% +% Returns: +% +% \c@lslot - Slot number for given figure. This slot number +% identifies the allocated insert for the figure. +% +\def\calcc@lslot#1#2#3{ + \tmp@seven=#1 % Start with page # + \advance\tmp@seven by\m@ne % (Page - 1) + \multiply\tmp@seven by\figsperp@ge % (Page - 1) * # of figs + \ifnum#2=0 % If column is 0, special one + \ifnum#3=1\tmp@six=1\else\tmp@six=\figsperp@ge\fi + \advance\tmp@six by\m@ne % Decrement for slot # + \else + \tmp@six=#2 % Column # + \advance\tmp@six by\m@ne % (Column# - 1) + \multiply\tmp@six by3 % (Column# - 1) * 3 + \advance\tmp@six by#3 % (Column# - 1) * 3 + Position + \fi % Really + 1, but -1 negates it + \advance\tmp@seven by\tmp@six % Add figure # to page # + \advance\tmp@seven by\c@lfigstart % Figure slot number + \global\c@lslot=\tmp@seven % Set the slot number + } % End of \calcc@lslot +% +% \handlefigures +% +% This macro is called to step through all of the figures for the current +% page and subtract the height of each from the total \vsize. +% +% The two special figures (top (1) and bottom (\figsperp@ge)) are handled +% differently; because each spans all of the columns on the page, the height +% of each is multiplied by the number of columns before subtracting it from +% \vsize. The top figure is then placed in \partialpagetop and the bottom +% figure is placed in \partialpagebottom. +% +% Returns: Adjusted \vsize. +% +\def\handlefigures{ + \global\vsize=\pageheight % \vsize to pageheight + \global\multiply\vsize by\numberofcols % Multiply by # of columns + \tmp@three=\figsperp@ge % Start with figure X + \calcc@lslot{\c@lpageno}{0}{3} % Start with last figure box + {\loop + \ifnum\count\c@lslot=\TopFig@ % If box is top section of page + \global\setbox\partialpagetop=\vbox{\unvbox\c@lslot} % Copy it + \tmp@=\ht\partialpagetop % Get the height + \multiply\tmp@ by\numberofcols % Multiply by number of columns + \global\advance\vsize by-\tmp@ % (vsize - figure size) + \else % Else + \ifnum\count\c@lslot=\BotFig@ % If box is bottom section + \global\setbox\partialpagebottom=\vbox{\unvbox\c@lslot} + \tmp@=\ht\partialpagebottom + \multiply\tmp@ by\numberofcols + \global\advance\vsize by-\tmp@ % (vsize - figure size) + \else % Else, see if regular figure + \ifdim\ht\c@lslot>0pt\all@wfigure{\ht\c@lslot}\fi % \vsize + \fi % End \ifnum + \fi % End \ifnum + \advance\tmp@three by\m@ne % Point to next box + \advance\c@lslot by\m@ne % Point to next box + \ifnum\tmp@three>0 \repeat} % Loop until done + } % End of \handlefigures + +\def\all@wfigure#1{ + \tmp@=#1 % Height of figure + \global\advance\vsize by-\tmp@ % Subtract figure size from vsize + } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Macro: \round#1#2#3 +% +% Purpose: Round a dimen parameter (#1) to the nearest even multiple of +% parameter #2. Primarily used to ensure that the page height +% or a figure height is an even multiple of the baselineskip. +% +% NOTE: this macro assumes there is no stretch or shrink to #2. +% +% Inputs: +% #1 Dimen variable to change (e.g., \pageheight) +% #2 Dimen variable to use as multiple (e.g., \baselineskip) +% #3 Symbol indicating round up (>) or round down (<) +% \tmp@ Work dimen (saved and restored) +% +% Example: +% \pageheight=598.213pt \baselineskip=12pt +% \round{\pageheight}{\baselineskip}{<} %yields \pageheight=588.0pt +% \round{\pageheight}{\baselineskip}{>} %yields \pageheight=600.0pt +% +\def\round#1#2#3{\bgroup% %Keep \tmp@ changes local + \rtmp@=0pt %Initialize \tmp@ + \loop %Begin a loop + \advance\rtmp@ by #2 %Bump \tmp@ by #2 + \ifdim#1>\rtmp@ \repeat %Loop until \tmp@ > #1 + \ifx<#3 %If #3 = "<" then + \advance\rtmp@ by-#2 %... subtract #2 from \tmp@ + \fi %... + \global#1=\rtmp@ %Reset parameter #1 + \egroup %End the group +} %End of macro +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Define list macros +% +% Dimens: +% +% \llistindent - Amount of left indent (0pt by default) +% \rlistindent - Amount of right indent (0pt by default) +% +% Macros: +% +% \beginlist - Begin list (skips space, sets indent) +% \endlist - Terminates a list +% \beginlistt - Begin list with glue (used for list headers) +% \endlistt - Terminates a \beginlistt +% \dotitem - Itemize with a dot "o" +% +\newdimen\llistindent \llistindent=0pt +\newdimen\rlistindent \rlistindent=0pt +\def\listindent#1{\llistindent=#1\rlistindent=#1} + +\def\beginlist{\begingroup% + \ifdim\parskip=0pt \vskip.5\baselineskip % Skip 1/2 line + \else \vskip\parskip % or the \parskip + \fi % + \parindent=10pt\parskip=0pt% % Reset parindent + \leftskip=\llistindent \rightskip=\rlistindent} % Indent margins + +\def\endlist{\par\endgroup% + \ifdim\parskip=0pt \vskip.5\baselineskip + \else \vskip\parskip\fi} + +\def\dotitem#1\par{\item{$\bullet$} #1 \par} + +\def\beginlistt#1{#1\vglue0pt\begingroup% + \divide\parskip by2\vskip\parskip\parindent=10pt\parskip=0pt% + \leftskip=\llistindent \rightskip=\rlistindent} +\def\endlistt{\par\endgroup} %\vskip\parskip} + +% +% Define a small copyright (for use with 8-point type). +% +\def\smallcir{\smallsy\char13} +\def\smallcopyright{\leavevmode\raise.25ex\hbox{ + \ooalign{\hfil\raise.03ex\hbox{\kern .16em\verysmallrm C} + \hfil\crcr\smallcir}}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Define macros to manipulate boxes +% +% Dimens: +% +% \boxitrule=Xpt - Width of rules used to draw boxes +% \boxitspace=Xpt - Space between box rules and box contents +% \boxshadowsize=Xpt - Width of shadow boxes +% +% Macros: +% +% \articletitle{Title}{byline} - Do article title in double box +% \coltitle{Title} - Do a title box in a column +% \shadowbox{some_box} - Draw a shadow box around an hbox or vbox +% \leftshadowbox{somebox} - Draw a left-hand shadow box around a box +% \centerbox{somebox} - Center a \vbox on a page +% \boxit{some_box} - Draw a box around an hbox or vbox +% \ednote - Do editor's note in a box +% +\newdimen\boxitspace \newdimen\boxitrule \newdimen\boxitwidth +\boxitspace=3pt \boxitrule=1.2pt +\boxitwidth=\boxitspace \advance\boxitwidth by\boxitspace +\advance\boxitwidth by\boxitrule \advance\boxitwidth by\boxitrule + +% +% Define macro to write an article title inside a double box +% +% Parameters: +% +% #1 - Title of article +% #2 - Byline +% +% For both \articletitle and \coltitle, the width of the box(es) must be +% subtracted from the current hsize in order for centering and justification +% to work right (otherwise the letters will run into the lines of the box). +% +\def\articletitle#1#2{ + \bestbreak{ % Say that this is best break + \advance\hsize by -\boxitwidth % Bring margin in before \center + \advance\hsize by -\boxitwidth % Do for both boxes! + \vskip 10pt plus 5pt % Skip some space + \boxit{ % Box the box + \divide\boxitrule by 2 % Make inside box lines thinner + \boxit{ % Box the text + \vbox{\noindent % Create a box + \centerline{\seventeenpoint\ss #1} % Print title of article + \centerline{\ninepoint\ss #2} % Print article byline + }}}}} % Create the text box + +\def\coltitle#1\par{{% % Swallow next paragraph + \advance\hsize by -\boxitwidth % Bring margins in + \boxit{% % Draw a box around the text + \vbox{\ss\noindent #1}}}% % Create a vbox that contains + \vglue.5\baselineskip% % Skip some non-breakable space + \noindent} % Don't indent next paragraph + +\def\ednote#1{{ + \sl % Switch to slanted font + \def\sl{\/\rm} % Redefine \sl + \advance\hsize by -\boxitwidth % Bring margins in + \boxit{ % Draw a box around the text + \vbox{\noindent Editor's note: #1}}} % Create a vbox that contains + \vglue 0pt} % Finish it up + +\def\boxit#1{\vbox{\tithrule\hbox{\titvrule\kern\boxitspace% + \vbox{\kern\boxitspace #1 \kern\boxitspace}% + \kern\boxitspace\titvrule}\tithrule}} + +\def\tithrule{\hrule height\boxitrule} +\def\titvrule{\vrule width\boxitrule} + +% +% \centerbox +% +% Create a \vbox that contains a centered \hbox. The centering is relative +% to the current \hsize. +% +% Inputs: +% +% #1 - \vbox to center -> \centerbox{\shadowbox{...}} +% +\def\centerbox#1{\hbox{\hfil#1\hfil}} % Create a \vbox containing a centered + + +\newdimen\oboxht \newdimen\oboxwd \newdimen\boxshadowsize +\boxshadowsize=4pt % Shadow box size is 4pt +% +% Draw a righthand shadow box. This is accomplished by building a vbox +% containing an hbox that is the boxed text and an hbox that is the right +% hand shadow. This vbox is then joined with a vbox that forms +% the bottom shadow. +% +\def\shadowbox#1{{ + \setbox0=\vbox{\boxit{#1}} % Set box after \boxit + \oboxht=\ht0 \oboxwd=\wd0 % Store the dimensions + \advance\oboxwd by-\boxshadowsize % Subtract shadow size from wd + \vbox{ % Put it all in one vbox + \offinterlineskip % Butt \vboxes together + \vbox{ % Create a vbox of whole thing + \hbox{\vbox{\unvbox0} % Create box with text box + + \hskip-\fontdimen2\font + \lower\boxshadowsize % Draw the right-hand boxshadowsize + \hbox{\vrule width\boxshadowsize height\oboxht}} % ... Finish off \hbox + } % End of the \vbox + \advance\boxshadowsize by\boxitrule + \vskip-\boxshadowsize % Back up to bottom of \vbox + \vbox{ % Start a new \vbox + \hbox{\kern\boxshadowsize\vbox{ % Create \hbox that is shadow + \hrule height\boxshadowsize width\oboxwd}} % ... + } % End of the \vbox + } % End of \vbox + }} % End of \shadowbox +% +% Draw a lefthand shadow box. This is accomplished by building a lowered +% vbox containing an hbox that is the left hand shadow and an hbox that +% contains the boxed text. This vbox is then joined with a vbox that forms +% the bottom shadow. +% +\def\leftshadowbox#1{{ + \setbox0=\vbox{\boxit{#1}} % Set box after \boxit + \oboxht=\ht0 \oboxwd=\wd0 % Store the dimensions + \advance\oboxwd by-\boxshadowsize % Subtract shadow size from wd + \vbox{ + \offinterlineskip % Butt \vboxes together + \vbox{ % Create a vbox of whole thing + \hbox{ % Create an hbox + \hskip-\fontdimen2\font % Move left one character width + \hskip-\boxshadowsize % Move left = size of shadow box + \advance\boxitrule by\boxshadowsize % Make shadow a tad bit wider + \lower\boxshadowsize % Move down the same amount + \hbox{\vrule width\boxitrule height\oboxht} % Draw the left box + } % ... Finish off \hbox + \vskip-\oboxht\vskip-\boxshadowsize % Move back up to top of box + \hbox{\vbox{\unvbox0} % Create box with text inside it + }} % End of vboxes + \advance\boxshadowsize by\boxitrule % Make box a little thicker + % ... so it overlaps bottom line + \vskip-\boxitrule % Move up height of bottom line + \vbox{ % Start a new \vbox + \hbox{\vbox{ % Create \hbox that is shadow + \hrule height\boxshadowsize width\oboxwd}} % ... + } % End of the \vbox + } % End of \vbox + }} % End of \shadowbox + +\def\bestbreak{\par\penalty-1000} + +% +% Begin a quotation. The quote is separated from the main text by two +% hrules and is indented from the normal text. +% +\def\beginquote{ + \begingroup % Define beginning of a group + \quotefont\baselineskip=16.8pt + \hrule height2pt % Draw a line + \parindent 5pt % Indent paragraphs by 5pt + \vglue\medskipamount % Use some glue so rule sticks + \narrower\narrower % Bring margins in (10pt) + \noindent % Don't indent + } % End of macro +% +% End a quotation. +% +\def\endquote{ + \vglue\medskipamount % Use some glue so rule sticks + \hrule height2pt % Draw a line + \endgroup % End the quote group + } + +\def\quotee#1{{\hfill\break\hbox{}\nobreak\hfill\hbox{\quoteefont #1} + \finalhyphendemerits=0}} +\def\Quote#1#2{\vbox{\vskip1.2pt\beginquote #1% + \quotee{#2}\endquote\vskip1.20003pt}} + +% +% Insert current month and year +% +\def\DATE{\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\year} +% +% Include a TeX file. +% +\def\include#1{\immediate\write10{Including TeX file #1} + \input #1 % Read the file in + % Things to do after formatting the file + } +% +% Separate articles with some vskip and an \hrule +% +\def\articlesep{ % Rule to separate articles + \vglue 10pt plus2pt minus4pt % Use vglue + \hrule %height.4pt % Draw a rule equal to \hsize + \vskip 10pt plus2pt minus2pt % Skip some vertical space + } + +% Put release flush right. If it won't fit, put it on the next line. +% From TeXbook, Chapter 14. +\def\farright#1{{\unskip\nobreak\hfill\penalty50\hskip2em + \hbox{}\nobreak\hfill \hbox{#1}\finalhyphendemerits=0}} + +% +% Define end-of-article marker. +% +\def\eoa{\farright{\vrule height1.5ex width1.5ex depth0pt}} +% +% Generate a blank page and a blank line. +% +\def\nullpage{\eject\line{}\vfil\eject} % Define an empty page +\def\nullline{\break\hbox{}\hfil\break} % Define an empty line +% +% Start on a new page. +% +\def\newpage{\vfill\eject} +% +% Get rid of underfill errors +% +\def\ignoreunderfill{\vbadness=10000\hbadness=10000\tolerance=2000} + +%=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +% Macros for bibliography entries +%=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +% +% Sample usage: +% +% \beginbibliography +% \bibbook{The Wolf's Hour} +% \ENUM New York: Pocket Books, March 1989 (paperback) +% \endbibliography +% +\newcount\enumno % New counter - item # +% +% \beginbibliography - Begin a bibliography +% +\def\beginbibliography{\begingroup\global\enumno=1 + \tiny % Use 8pt font + \parskip=1pt plus 1pt % Skip up to 2 points + } % End of \beginbibliography +\def\endbibliography{\par\endbiblist\endgroup} % End of bibliography +% +% \beginbiblist - Begin a list of bibliographic references +% +\def\beginbiblist{\begingroup + \vglue0pt\parindent=30pt\parskip=0pt} +% +% \beginanotherlist - Begin a list inside a list of bibliographic references +% +\def\beginanotherlist{\begingroup + \divide\parskip by 2 + \vglue\parskip\advance\parindent by10pt\parskip=0pt} +\def\endbiblist{\par\endgroup\vskip4pt} + +% ENUM - Number items in a list +% ENum - No number, but spaced as if number was present +% NoENUM - Only one reference is present. Start reference where number would +% normally start (hanging into left column). +% +% Examples: +% +% \ENUM First one 1. First one +% \ENUM Second one Yields 2. Second one +% \ENum Third one Third one +% \NoENUM Fourth one Fourth one +% +\def\ENUM#1\par{\item{\the\enumno.}\advance\enumno by 1 #1 \par } +\def\ENum#1\par{\item{}\advance\enumno by 1 #1 \par } +\def\NoENUM#1\par{\advance\enumno by 1\par\hang\hskip-10pt #1 \par } +% +% \bibshort, \bibbook, \bibview +% +% Macros to begin a new bibliography entry for a short story, a book, and +% and interviews. These macros will terminate the previous bibliography +% entry (if there is one) and begin a new entry. +% +\def\bibshort#1{\ifnum\enumno>1 \bestbreak\endbiblist\fi % Short story + \noindent{\story{#1}}\beginbiblist + } +\def\bibbook#1{\ifnum\enumno>1 \endbiblist\fi % Book + \noindent{\sl #1}\beginbiblist + } +\def\bibview#1{\ifnum\enumno>1 \endbiblist\fi % Interview + \noindent{#1}\beginbiblist + } +\def\subbib#1{\hskip-20pt #1\hfill} %Subheading for a bib entry +\def\bibsectitle#1{ %Title of bib section (BOOKS...) + \vskip 8pt plus1pt minus1pt % Skip some space + \hrule % Draw an hrule + {\tenss #1} % Add text in 10pt font + \vglue 10pt plus1pt minus1pt % Skip some more space + } +%=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +% +% File: QUOTE.TEX +% +% Author: Hunter Goatley +% +% Date: August 14, 1991 +% +% Abstract: +% +% This file defines the macros \begindoublequotes and \enddoublequotes, +% which let TeX replace the double-quote character (") with TeX's +% left double-quote and right double-quote. For example: +% +% "This is a test." ---> ``This is a test.'' +% +% The double-quote character is still available via \dq. (\" is still +% treated as the umlaut accent.) +% +% This macro makes a couple of assumptions about the double-quotes: +% +% 1. Double-quotes are assumed to come in pairs. When replacing +% double-quotes, the macro alternates between `` and ''. The only +% exception to this is noted in (2) below. +% 2. A double-quote at the beginning of a paragraph is always treated +% as ``. This correctly handles the case where a quotation is +% continued into a second paragraph: +% +% "This is the first paragraph.\par +% "This is the second paragraph of the same quote." +% +% Normal TeX spacing after `` and '' is maintained by saving and +% restoring the \spacefactor. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% HOW IT WORKS: +% +% The double-quote character (") is made active by \begindoublequotes. +% The " macro keeps track of left-quote/right-quote pairs and inserts +% the appropriate `` and '' in its place. +% +% Each character has a \spacefactor associated with it, which specifies +% the amount of stretch or shrink that a space following the character +% can have. Most characters have a factor of 1000, but some punctuation +% marks have higher spacefactors, most notably the period, which has a +% \spacefactor of 3000. This means the space following a period can +% stretch up to 3 times more than the space after a regular character, +% accounting for the increased space at the end of sentences. +% +% The `` and '' ligatures are assigned \spacefactor's of 0, so that the +% \spacefactor that is applied to the next character is the same as that +% of the character preceding the quotes. Because " has been redefined as +% a macro, any spaces following " are swallowed by TeX. It was necessary +% to have this macro re-insert any needed space so that the following +% cases worked correctly: +% +% "This is a test," she said. --> ``This is a test,'' she said. +% "This is in a list"; etc. --> ``This is in a list''; etc. +% +% Without the added space, the first example becomes: +% +% ``This is a test,''she said. +% +% The solution was to save the current \spacefactor before inserting a +% right double-quote, then resetting the \spacefactor after the +% insertion. The net effect was that the " macro has a \spacefactor +% of 0, which matches the way TeX treats `` and ''. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +{% % Begin a group for which " is active +\catcode`\"=\active % Make " an active character +\catcode`\@=11 % Make @ an active character +% +% \begindoublequotes +% +% This macro makes " an active character, resets the control sequence +% \dblqu@te to L (left), and defines \dq as a replacement for ". +% +\gdef\begindoublequotes{% % \begindoublequotes enables " + \global\catcode`\"=\active % Make " an active character + \global\chardef\dq=`\" % Double-quote char. via \dq + \global\let\dblqu@te=L % Always start with a left double-quote + } % End of macro +% +% Define the macro that will be executed whenever " is encountered. +% +\gdef"{% + % If the double-quote is the first character in a new paragraph, + % make sure it becomes a left double-quote. This case can be + % detected by checking to see if TeX is currently in vertical mode. + % If so, the double-quote is at the beginning of the paragraph + % (since " hasn't actually generated any horizontal mode tokens + % yet, TeX is still in vertical mode). If the mode is vertical, + % set \dblqu@te equal to L. + % + \ifinner\else\ifvmode\let\dblqu@te=L\fi\fi + % + % Now insert the appropriate left or right double-quote. + % + % If \dblqu@te is L, insert a `` and set \dblqu@te to R. + % + \if L\dblqu@te``\global\let\dblqu@te=R% + % + % Otherwise, save the current \spacefactor, insert '', set \dblqu@te + % to L, and reset the original \spacefactor. + % + \else + \let\xxx=\spacefactor % Save the \spacefactor + ''\global\let\dblqu@te=L% % Insert '' and reset \dblqu@te + \spacefactor\xxx % Reset the \spacefactor + \fi % End of \if L\dblqu@te... + } % End of " macro +} % End of group + +\gdef\enddoublequotes{% + \catcode`\"=12 %Set " back to other + } +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Header & Footer Macros +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% These macros implement the headers and footers for the newsletter format. +% The macros accept three parameters: text that is to appear flush-left on +% the line, text that should be centered, and text that should be flush-right +% on the line. Parameters can be omitted by specifying empty braces ({}). +% +% The following macros are defined for headers and footers: +% +% \evenpageheader{LEFT}{CENTER}{RIGHT} +% \oddpageheader{LEFT}{CENTER}{RIGHT} +% \evenpagefooter{LEFT}{CENTER}{RIGHT} +% \oddpagefooter{LEFT}{CENTER}{RIGHT} +% +% If the headers/footers are the same for even & odd pages, the following +% macros can be used instead of the four above: +% +% \pageheader{LEFT}{CENTER}{RIGHT} +% \pagefooter{LEFT}{CENTER}{RIGHT} +% +% Additional header/footer definitions: +% +% \pageheaderlinetrue - A line should extend below header text +% \pageheaderlinefalse - Header does NOT have a line +% \pagefooterlinetrue - A line should extend above footer text +% \pagefooterlinefalse - Footer does NOT have a line +% \headfootrule=Xpt - Thickness of header/footer lines +% \pageheaderskip=Xpt - \vskip between header and line +% \pagefooterskip=Xpt - \vskip between footer and line +% \headfont=\fontname - Font to use for header text +% \footfont=\fontname - Font to use for footer text +% +% Example: +% +% \pageheader{}{My Newsletter}{} +% \pagefooter{October 1989}{}{\pageno} +% +\newif\ifpageheaderline \pageheaderlinefalse % By default, no header line +\newif\ifpagefooterline \pagefooterlinefalse % By default, no footer line +\newdimen\headfootrule \headfootrule=0.50pt % Height of header & footer rule +\newdimen\pageheaderskip \pageheaderskip=4pt % Space between header and rule +\newdimen\pagefooterskip \pagefooterskip=4pt % Space between rule and footer + +\let\headfont=\twelverm \let\footfont=\twelverm % Assign fonts for head/foot + +\def\@pageheader#1#2#3{% + \ifpageheaderline % If headerline + \vbox{\hbox to\normalhsize{{\headfont\rlap{#1}\hss{#2}\hss\llap{#3}}}% + \vskip\pageheaderskip\hrule height\headfootrule}% Do hbox and hrule + \else + {\headfont\rlap{#1}\hss{#2}\hss\llap{#3}} + \fi + } + +\def\@pagefooter#1#2#3{% + \ifpagefooterline + \vbox{\hrule height\headfootrule\vskip\pagefooterskip + \hbox to\normalhsize{\footfont\rlap{#1}\hss{#2}\hss\llap{#3}}}% + \else + {\footfont\rlap{#1}\hss{#2}\hss\llap{#3}} + \fi + } +% +% Define default headers and footers - null lines of text +% +\def\@oddhead{\nullline} \def\@evenhead{\nullline} +\def\@oddfoot{\nullline} \def\@evenfoot{\nullline} + +\def\@newhead{\headline{\ifodd\pageno\@oddhead\else\@evenhead\fi}} +\def\@newfoot{\footline{\ifodd\pageno\@oddfoot\else\@evenfoot\fi}} + +\def\oddpageheader#1#2#3{\@newhead\def\@oddhead{\@pageheader{#1}{#2}{#3}}} +\def\evenpageheader#1#2#3{\@newhead\def\@evenhead{\@pageheader{#1}{#2}{#3}}} +\def\oddpagefooter#1#2#3{\@newfoot\def\@oddfoot{\@pagefooter{#1}{#2}{#3}}} +\def\evenpagefooter#1#2#3{\@newfoot\def\@evenfoot{\@pagefooter{#1}{#2}{#3}}} +% +% If no difference between even and odd pages, just define both to be the same. +% +\def\pageheader#1#2#3{\evenpageheader{#1}{#2}{#3}\oddpageheader{#1}{#2}{#3}} +\def\pagefooter#1#2#3{\evenpagefooter{#1}{#2}{#3}\oddpagefooter{#1}{#2}{#3}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Command for "poor man's bold": \pmb (use sparingly) +% +\def\pmb#1{\setbox0=\hbox{#1}% % Copy box to box0 + \leavevmode\hbox{% % Make an hbox that holds + \kern-.025em\copy0\kern-\wd0% % Move left 1/4 em and copy box0 + \kern.05em\copy0\kern-\wd0% % Move right 1/4 em and copy it + \kern-.025em\raise.0433em\box0 }} % Raise a little and copy again + +% +% Define dots for ending sentences (4 dots instead of 3) +% +\def\eldots{\mathinner{\ldotp\ldotp\ldotp\ldotp}} +\def\edots{\relax\ifmmode\eldots\else$\m@th\eldots\,$\fi} +\def\ellip{\hskip.2em\ifmmode\ldots\else$\ldots$\fi\hskip.25em} +% +% Define macros \ital and \slant to switch to italic (\it) and slanted (\sl) +% respectively. These macros automatically insert the italic correction +% unless the next character is a period or a comma. Based on the +% \predict macro presented in _TeX for the Impatient_, p. 233. +% +% These macros use \toks0 as a temporary. +% +% The \futurelet\it@next in \ital and \slant defines \it@next to be whatever +% the character following the parameter is. \d@slant checks to see if +% \it@next is a comma or period; if it is neither, the italic correction +% (\/) is included. +% +\def\ital#1{\toks0={#1}\let\slf@nt=\it\futurelet\it@next\d@slant} +\def\slant#1{\toks0={#1}\let\slf@nt=\sl\futurelet\it@next\d@slant} +\def\d@slant{{\slf@nt\the\toks0}% + \ifx\it@next,% % If \it@next not a comma + \else\ifx\it@next.% % ... and is not a period + \else\/% % ... insert the correction (\/) + \fi\fi% % ... + \let\it@next=\relax% % "Undefine" \it@next + } + +\def\book#1{\ital{#1}} %For ease, define \book too +% +% Important - make "@" a valid alphanumeric character again +% +\catcode`\@=12 % Follow TeX's lead on variable names + +\tenpoint % Default point size is 10pt diff --git a/Master/texmf-dist/tex/plain/newsletr/quote.tex b/Master/texmf-dist/tex/plain/newsletr/quote.tex new file mode 100644 index 00000000000..627dc44d627 --- /dev/null +++ b/Master/texmf-dist/tex/plain/newsletr/quote.tex @@ -0,0 +1,119 @@ +% Save file as: QUOTE.TEX Source: FILESERV@SHSU.BITNET +% +% File: QUOTE.TEX +% +% Author: Hunter Goatley +% goathunter@WKUVX1.BITNET +% +% Date: August 14, 1991 +% +% Abstract: +% +% This file defines the macros \begindoublequotes and \enddoublequotes, +% which let TeX replace the double-quote character (") with TeX's +% left double-quote and right double-quote. For example: +% +% "This is a test." ---> ``This is a test.'' +% +% The double-quote character is still available via \dq. (\" is still +% treated as the umlaut accent.) +% +% This macro makes a couple of assumptions about the double-quotes: +% +% 1. Double-quotes are assumed to come in pairs. When replacing +% double-quotes, the macro alternates between `` and ''. The only +% exception to this is noted in (2) below. +% 2. A double-quote at the beginning of a paragraph is always treated +% as ``. This correctly handles the case where a quotation is +% continued into a second paragraph: +% +% "This is the first paragraph.\par +% "This is the second paragraph of the same quote." +% +% Normal TeX spacing after `` and '' is maintained by saving and +% restoring the \spacefactor. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% HOW IT WORKS: +% +% The double-quote character (") is made active by \begindoublequotes. +% The " macro keeps track of left-quote/right-quote pairs and inserts +% the appropriate `` and '' in its place. +% +% Each character has a \spacefactor associated with it, which specifies +% the amount of stretch or shrink that a space following the character +% can have. Most characters have a factor of 1000, but some punctuation +% marks have higher spacefactors, most notably the period, which has a +% \spacefactor of 3000. This means the space following a period can +% stretch up to 3 times more than the space after a regular character, +% accounting for the increased space at the end of sentences. +% +% The `` and '' ligatures are assigned \spacefactor's of 0, so that the +% \spacefactor that is applied to the next character is the same as that +% of the character preceding the quotes. Because " has been redefined as +% a macro, any spaces following " are swallowed by TeX. It was necessary +% to have this macro re-insert any needed space so that the following +% cases worked correctly: +% +% "This is a test," she said. --> ``This is a test,'' she said. +% "This is in a list"; etc. --> ``This is in a list''; etc. +% +% Without the added space, the first example becomes: +% +% ``This is a test,''she said. +% +% The solution was to save the current \spacefactor before inserting a +% right double-quote, then resetting the \spacefactor after the +% insertion. The net effect was that the " macro has a \spacefactor +% of 0, which matches the way TeX treats `` and ''. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +{% % Begin a group for which " is active +\catcode`\"=\active % Make " an active character +\catcode`\@=11 % Make @ an active character +% +% \begindoublequotes +% +% This macro makes " an active character, resets the control sequence +% \dblqu@te to L (left), and defines \dq as a replacement for ". +% +\gdef\begindoublequotes{% % \begindoublequotes enables " + \global\catcode`\"=\active % Make " an active character + \global\chardef\dq=`\" % Double-quote char. via \dq + \global\let\dblqu@te=L % Always start with a left double-quote + } % End of macro +% +% Define the macro that will be executed whenever " is encountered. +% +\gdef"{% + % If the double-quote is the first character in a new paragraph, + % make sure it becomes a left double-quote. This case can be + % detected by checking to see if TeX is currently in vertical mode. + % If so, the double-quote is at the beginning of the paragraph + % (since " hasn't actually generated any horizontal mode tokens + % yet, TeX is still in vertical mode). If the mode is vertical, + % set \dblqu@te equal to L. + % + \ifinner\else\ifvmode\let\dblqu@te=L\fi\fi + % + % Now insert the appropriate left or right double-quote. + % + % If \dblqu@te is L, insert a `` and set \dblqu@te to R. + % + \if L\dblqu@te``\global\let\dblqu@te=R% + % + % Otherwise, save the current \spacefactor, insert '', set \dblqu@te + % to L, and reset the original \spacefactor. + % + \else + \let\xxx=\spacefactor % Save the \spacefactor + ''\global\let\dblqu@te=L% % Insert '' and reset \dblqu@te + \spacefactor\xxx % Reset the \spacefactor + \fi % End of \if L\dblqu@te... + } % End of " macro +} % End of group + +\gdef\enddoublequotes{% + \catcode`\"=12 %Set " back to other + } diff --git a/Master/texmf-dist/tex/plain/omega/grlccode.tex b/Master/texmf-dist/tex/plain/omega/grlccode.tex new file mode 100644 index 00000000000..b3a06ecaad4 --- /dev/null +++ b/Master/texmf-dist/tex/plain/omega/grlccode.tex @@ -0,0 +1,572 @@ +% 03ca est "i, 03cb est "u +\typeout{Greek lccodes...} +\catcode"0710=12 \lccode"0710=`\a +\catcode"0711=12 \lccode"0711=`\a +\catcode"0712=12 \lccode"0712=`\a +\catcode"0713=12 \lccode"0713=`\a +\catcode"0714=12 \lccode"0714=`\a +\catcode"0715=12 \lccode"0715=`\a +\catcode"0716=12 \lccode"0716=`\a +\catcode"0717=12 \lccode"0717=`\a +\catcode"0718=12 \lccode"0718=`\a +\catcode"0719=12 \lccode"0719=`\a +\catcode"071A=12 \lccode"071A=`\a +\catcode"071B=12 \lccode"071B=`\a +\catcode"071C=12 \lccode"071C=`\a +\catcode"071D=12 \lccode"071D=`\a +\catcode"071E=12 \lccode"071E=`\a +\catcode"071F=12 \lccode"071F=`\a +\catcode"0720=12 \lccode"0720=`\a +\catcode"0721=12 \lccode"0721=`\a +\catcode"0722=12 \lccode"0722=`\a +\catcode"0723=12 \lccode"0723=`\a +\catcode"0724=12 \lccode"0724=`\a +\catcode"0725=12 \lccode"0725=`\a +\catcode"0726=12 \lccode"0726=`\a +\catcode"0727=12 \lccode"0727=`\a +\catcode"0728=12 \lccode"0728=`\a +\catcode"0729=12 \lccode"0729=`\a +\catcode"072A=12 \lccode"072A=`\a +\catcode"072B=12 \lccode"072B=`\a +\catcode"072C=12 \lccode"072C=`\a +\catcode"072D=12 \lccode"072D=`\a +\catcode"072E=12 \lccode"072E=`\a +\catcode"072F=12 \lccode"072F=`\a +\catcode"07B0=12 \lccode"07B0=`\a +\catcode"07B8=12 \lccode"07B8=`\a +\catcode"07CD=12 \lccode"07CD=`\a +\catcode"07D0=12 \lccode"07D0=`\a +\catcode"07D1=12 \lccode"07D1=`\a +\catcode"07D2=12 \lccode"07D2=`\a +\catcode"0810=12 \lccode"0810=`\a +\catcode"0811=12 \lccode"0811=`\a +\catcode"0812=12 \lccode"0812=`\a +\catcode"0813=12 \lccode"0813=`\a +\catcode"0814=12 \lccode"0814=`\a +\catcode"0815=12 \lccode"0815=`\a +\catcode"0816=12 \lccode"0816=`\a +\catcode"0817=12 \lccode"0817=`\a +\catcode"0818=12 \lccode"0818=`\a +\catcode"0819=12 \lccode"0819=`\a +\catcode"081A=12 \lccode"081A=`\a +\catcode"081B=12 \lccode"081B=`\a +\catcode"081C=12 \lccode"081C=`\a +\catcode"081D=12 \lccode"081D=`\a +\catcode"081E=12 \lccode"081E=`\a +\catcode"081F=12 \lccode"081F=`\a +\catcode"0820=12 \lccode"0820=`\a +\catcode"0821=12 \lccode"0821=`\a +\catcode"0822=12 \lccode"0822=`\a +\catcode"0823=12 \lccode"0823=`\a +\catcode"0824=12 \lccode"0824=`\a +\catcode"0825=12 \lccode"0825=`\a +\catcode"0826=12 \lccode"0826=`\a +\catcode"0827=12 \lccode"0827=`\a +\catcode"0828=12 \lccode"0828=`\a +\catcode"0829=12 \lccode"0829=`\a +\catcode"082A=12 \lccode"082A=`\a +\catcode"082B=12 \lccode"082B=`\a +\catcode"082C=12 \lccode"082C=`\a +\catcode"082D=12 \lccode"082D=`\a +\catcode"0910=12 \lccode"0910=`\a +\catcode"0911=12 \lccode"0911=`\a +\catcode"0912=12 \lccode"0912=`\a +\catcode"0913=12 \lccode"0913=`\a +\catcode"0914=12 \lccode"0914=`\a +\catcode"0915=12 \lccode"0915=`\a +\catcode"0916=12 \lccode"0916=`\a +\catcode"0917=12 \lccode"0917=`\a +\catcode"0918=12 \lccode"0918=`\a +\catcode"0919=12 \lccode"0919=`\a +\catcode"091A=12 \lccode"091A=`\a +\catcode"091B=12 \lccode"091B=`\a +\catcode"091C=12 \lccode"091C=`\a +\catcode"091D=12 \lccode"091D=`\a +\catcode"091E=12 \lccode"091E=`\a +\catcode"091F=12 \lccode"091F=`\a +\catcode"0920=12 \lccode"0920=`\a +\catcode"0921=12 \lccode"0921=`\a +\catcode"0922=12 \lccode"0922=`\a +\catcode"0923=12 \lccode"0923=`\a +\catcode"0924=12 \lccode"0924=`\a +\catcode"0925=12 \lccode"0925=`\a +\catcode"0926=12 \lccode"0926=`\a +\catcode"0927=12 \lccode"0927=`\a +\catcode"0928=12 \lccode"0928=`\a +\catcode"0929=12 \lccode"0929=`\a +\catcode"092A=12 \lccode"092A=`\a +\catcode"092B=12 \lccode"092B=`\a +\catcode"092C=12 \lccode"092C=`\a +\catcode"092D=12 \lccode"092D=`\a +\catcode"0730=12 \lccode"0730=`\e +\catcode"0731=12 \lccode"0731=`\e +\catcode"0732=12 \lccode"0732=`\e +\catcode"0733=12 \lccode"0733=`\e +\catcode"0734=12 \lccode"0734=`\e +\catcode"0735=12 \lccode"0735=`\e +\catcode"0736=12 \lccode"0736=`\e +\catcode"0737=12 \lccode"0737=`\e +\catcode"0738=12 \lccode"0738=`\e +\catcode"0739=12 \lccode"0739=`\e +\catcode"073A=12 \lccode"073A=`\e +\catcode"073B=12 \lccode"073B=`\e +\catcode"073C=12 \lccode"073C=`\e +\catcode"073D=12 \lccode"073D=`\e +\catcode"073E=12 \lccode"073E=`\e +\catcode"073F=12 \lccode"073F=`\e +\catcode"07B1=12 \lccode"07B1=`\e +\catcode"07B9=12 \lccode"07B9=`\e +\catcode"0830=12 \lccode"0830=`\e +\catcode"0831=12 \lccode"0831=`\e +\catcode"0832=12 \lccode"0832=`\e +\catcode"0833=12 \lccode"0833=`\e +\catcode"0834=12 \lccode"0834=`\e +\catcode"0835=12 \lccode"0835=`\e +\catcode"0836=12 \lccode"0836=`\e +\catcode"0837=12 \lccode"0837=`\e +\catcode"0838=12 \lccode"0838=`\e +\catcode"0839=12 \lccode"0839=`\e +\catcode"083A=12 \lccode"083A=`\e +\catcode"083B=12 \lccode"083B=`\e +\catcode"083C=12 \lccode"083C=`\e +\catcode"083D=12 \lccode"083D=`\e +\catcode"0930=12 \lccode"0930=`\e +\catcode"0931=12 \lccode"0931=`\e +\catcode"0932=12 \lccode"0932=`\e +\catcode"0933=12 \lccode"0933=`\e +\catcode"0934=12 \lccode"0934=`\e +\catcode"0935=12 \lccode"0935=`\e +\catcode"0936=12 \lccode"0936=`\e +\catcode"0937=12 \lccode"0937=`\e +\catcode"0938=12 \lccode"0938=`\e +\catcode"0939=12 \lccode"0939=`\e +\catcode"093A=12 \lccode"093A=`\e +\catcode"093B=12 \lccode"093B=`\e +\catcode"093C=12 \lccode"093C=`\e +\catcode"093D=12 \lccode"093D=`\e +\catcode"0740=12 \lccode"0740=`\h +\catcode"0741=12 \lccode"0741=`\h +\catcode"0742=12 \lccode"0742=`\h +\catcode"0743=12 \lccode"0743=`\h +\catcode"0744=12 \lccode"0744=`\h +\catcode"0745=12 \lccode"0745=`\h +\catcode"0746=12 \lccode"0746=`\h +\catcode"0747=12 \lccode"0747=`\h +\catcode"0748=12 \lccode"0748=`\h +\catcode"0749=12 \lccode"0749=`\h +\catcode"074A=12 \lccode"074A=`\h +\catcode"074B=12 \lccode"074B=`\h +\catcode"074C=12 \lccode"074C=`\h +\catcode"074D=12 \lccode"074D=`\h +\catcode"074E=12 \lccode"074E=`\h +\catcode"074F=12 \lccode"074F=`\h +\catcode"0750=12 \lccode"0750=`\h +\catcode"0751=12 \lccode"0751=`\h +\catcode"0752=12 \lccode"0752=`\h +\catcode"0753=12 \lccode"0753=`\h +\catcode"0754=12 \lccode"0754=`\h +\catcode"0755=12 \lccode"0755=`\h +\catcode"0756=12 \lccode"0756=`\h +\catcode"0757=12 \lccode"0757=`\h +\catcode"0758=12 \lccode"0758=`\h +\catcode"0759=12 \lccode"0759=`\h +\catcode"075A=12 \lccode"075A=`\h +\catcode"075B=12 \lccode"075B=`\h +\catcode"075C=12 \lccode"075C=`\h +\catcode"075D=12 \lccode"075D=`\h +\catcode"075E=12 \lccode"075E=`\h +\catcode"075F=12 \lccode"075F=`\h +\catcode"07B2=12 \lccode"07B2=`\h +\catcode"07BA=12 \lccode"07BA=`\h +\catcode"07CE=12 \lccode"07CE=`\h +\catcode"07D3=12 \lccode"07D3=`\h +\catcode"07D4=12 \lccode"07D4=`\h +\catcode"07D5=12 \lccode"07D5=`\h +\catcode"0840=12 \lccode"0840=`\h +\catcode"0841=12 \lccode"0841=`\h +\catcode"0842=12 \lccode"0842=`\h +\catcode"0843=12 \lccode"0843=`\h +\catcode"0844=12 \lccode"0844=`\h +\catcode"0845=12 \lccode"0845=`\h +\catcode"0846=12 \lccode"0846=`\h +\catcode"0847=12 \lccode"0847=`\h +\catcode"0848=12 \lccode"0848=`\h +\catcode"0849=12 \lccode"0849=`\h +\catcode"084A=12 \lccode"084A=`\h +\catcode"084B=12 \lccode"084B=`\h +\catcode"084C=12 \lccode"084C=`\h +\catcode"084D=12 \lccode"084D=`\h +\catcode"084E=12 \lccode"084E=`\h +\catcode"084F=12 \lccode"084F=`\h +\catcode"0850=12 \lccode"0850=`\h +\catcode"0851=12 \lccode"0851=`\h +\catcode"0852=12 \lccode"0852=`\h +\catcode"0853=12 \lccode"0853=`\h +\catcode"0854=12 \lccode"0854=`\h +\catcode"0855=12 \lccode"0855=`\h +\catcode"0856=12 \lccode"0856=`\h +\catcode"0857=12 \lccode"0857=`\h +\catcode"0858=12 \lccode"0858=`\h +\catcode"0859=12 \lccode"0859=`\h +\catcode"085A=12 \lccode"085A=`\h +\catcode"085B=12 \lccode"085B=`\h +\catcode"085C=12 \lccode"085C=`\h +\catcode"085D=12 \lccode"085D=`\h +\catcode"0940=12 \lccode"0940=`\h +\catcode"0941=12 \lccode"0941=`\h +\catcode"0942=12 \lccode"0942=`\h +\catcode"0943=12 \lccode"0943=`\h +\catcode"0944=12 \lccode"0944=`\h +\catcode"0945=12 \lccode"0945=`\h +\catcode"0946=12 \lccode"0946=`\h +\catcode"0947=12 \lccode"0947=`\h +\catcode"0948=12 \lccode"0948=`\h +\catcode"0949=12 \lccode"0949=`\h +\catcode"094A=12 \lccode"094A=`\h +\catcode"094B=12 \lccode"094B=`\h +\catcode"094C=12 \lccode"094C=`\h +\catcode"094D=12 \lccode"094D=`\h +\catcode"094E=12 \lccode"094E=`\h +\catcode"094F=12 \lccode"094F=`\h +\catcode"0950=12 \lccode"0950=`\h +\catcode"0951=12 \lccode"0951=`\h +\catcode"0952=12 \lccode"0952=`\h +\catcode"0953=12 \lccode"0953=`\h +\catcode"0954=12 \lccode"0954=`\h +\catcode"0955=12 \lccode"0955=`\h +\catcode"0956=12 \lccode"0956=`\h +\catcode"0957=12 \lccode"0957=`\h +\catcode"0958=12 \lccode"0958=`\h +\catcode"0959=12 \lccode"0959=`\h +\catcode"095A=12 \lccode"095A=`\h +\catcode"095B=12 \lccode"095B=`\h +\catcode"095C=12 \lccode"095C=`\h +\catcode"095D=12 \lccode"095D=`\h +\catcode"0760=12 \lccode"0760=`\i +\catcode"0761=12 \lccode"0761=`\i +\catcode"0762=12 \lccode"0762=`\i +\catcode"0763=12 \lccode"0763=`\i +\catcode"0764=12 \lccode"0764=`\i +\catcode"0765=12 \lccode"0765=`\i +\catcode"0766=12 \lccode"0766=`\i +\catcode"0767=12 \lccode"0767=`\i +\catcode"0768=12 \lccode"0768=`\i +\catcode"0769=12 \lccode"0769=`\i +\catcode"076A=12 \lccode"076A=`\i +\catcode"076B=12 \lccode"076B=`\i +\catcode"076C=12 \lccode"076C=`\i +\catcode"076D=12 \lccode"076D=`\i +\catcode"076E=12 \lccode"076E=`\i +\catcode"076F=12 \lccode"076F=`\i +\catcode"07B3=12 \lccode"07B3=`\i +\catcode"07C0=12 \lccode"07C0=`\i +\catcode"07C1=12 \lccode"07C1=`\i +\catcode"07C2=12 \lccode"07C2=`\i +\catcode"07C3=12 \lccode"07C3=`\i +\catcode"0830=12 \lccode"0830=`\i +\catcode"0831=12 \lccode"0831=`\i +\catcode"0832=12 \lccode"0832=`\i +\catcode"0833=12 \lccode"0833=`\i +\catcode"0834=12 \lccode"0834=`\i +\catcode"0835=12 \lccode"0835=`\i +\catcode"0836=12 \lccode"0836=`\i +\catcode"0837=12 \lccode"0837=`\i +\catcode"0838=12 \lccode"0838=`\i +\catcode"0839=12 \lccode"0839=`\i +\catcode"083A=12 \lccode"083A=`\i +\catcode"083B=12 \lccode"083B=`\i +\catcode"083C=12 \lccode"083C=`\i +\catcode"083D=12 \lccode"083D=`\i +\catcode"0930=12 \lccode"0930=`\i +\catcode"0931=12 \lccode"0931=`\i +\catcode"0932=12 \lccode"0932=`\i +\catcode"0933=12 \lccode"0933=`\i +\catcode"0934=12 \lccode"0934=`\i +\catcode"0935=12 \lccode"0935=`\i +\catcode"0936=12 \lccode"0936=`\i +\catcode"0937=12 \lccode"0937=`\i +\catcode"0938=12 \lccode"0938=`\i +\catcode"0939=12 \lccode"0939=`\i +\catcode"093A=12 \lccode"093A=`\i +\catcode"093B=12 \lccode"093B=`\i +\catcode"093C=12 \lccode"093C=`\i +\catcode"093D=12 \lccode"093D=`\i +\catcode"0770=12 \lccode"0770=`\o +\catcode"0771=12 \lccode"0771=`\o +\catcode"0772=12 \lccode"0772=`\o +\catcode"0773=12 \lccode"0773=`\o +\catcode"0774=12 \lccode"0774=`\o +\catcode"0775=12 \lccode"0775=`\o +\catcode"0776=12 \lccode"0776=`\o +\catcode"0777=12 \lccode"0777=`\o +\catcode"0778=12 \lccode"0778=`\o +\catcode"0779=12 \lccode"0779=`\o +\catcode"077A=12 \lccode"077A=`\o +\catcode"077B=12 \lccode"077B=`\o +\catcode"077C=12 \lccode"077C=`\o +\catcode"077D=12 \lccode"077D=`\o +\catcode"077E=12 \lccode"077E=`\o +\catcode"077F=12 \lccode"077F=`\o +\catcode"07B4=12 \lccode"07B4=`\o +\catcode"0870=12 \lccode"0870=`\o +\catcode"0871=12 \lccode"0871=`\o +\catcode"0872=12 \lccode"0872=`\o +\catcode"0873=12 \lccode"0873=`\o +\catcode"0874=12 \lccode"0874=`\o +\catcode"0875=12 \lccode"0875=`\o +\catcode"0876=12 \lccode"0876=`\o +\catcode"0877=12 \lccode"0877=`\o +\catcode"0878=12 \lccode"0878=`\o +\catcode"0879=12 \lccode"0879=`\o +\catcode"087A=12 \lccode"087A=`\o +\catcode"087B=12 \lccode"087B=`\o +\catcode"087C=12 \lccode"087C=`\o +\catcode"087D=12 \lccode"087D=`\o +\catcode"0970=12 \lccode"0970=`\o +\catcode"0971=12 \lccode"0971=`\o +\catcode"0972=12 \lccode"0972=`\o +\catcode"0973=12 \lccode"0973=`\o +\catcode"0974=12 \lccode"0974=`\o +\catcode"0975=12 \lccode"0975=`\o +\catcode"0976=12 \lccode"0976=`\o +\catcode"0977=12 \lccode"0977=`\o +\catcode"0978=12 \lccode"0978=`\o +\catcode"0979=12 \lccode"0979=`\o +\catcode"097A=12 \lccode"097A=`\o +\catcode"097B=12 \lccode"097B=`\o +\catcode"097C=12 \lccode"097C=`\o +\catcode"097D=12 \lccode"097D=`\o +\catcode"07C8=12 \lccode"07C8=`\r +\catcode"07C9=12 \lccode"07C9=`\r +\catcode"07CA=12 \lccode"07CA=`\r +\catcode"07CB=12 \lccode"07CB=`\r +\catcode"0780=12 \lccode"0780=`\u +\catcode"0781=12 \lccode"0781=`\u +\catcode"0782=12 \lccode"0782=`\u +\catcode"0783=12 \lccode"0783=`\u +\catcode"0784=12 \lccode"0784=`\u +\catcode"0785=12 \lccode"0785=`\u +\catcode"0786=12 \lccode"0786=`\u +\catcode"0787=12 \lccode"0787=`\u +\catcode"0788=12 \lccode"0788=`\u +\catcode"0789=12 \lccode"0789=`\u +\catcode"078A=12 \lccode"078A=`\u +\catcode"078B=12 \lccode"078B=`\u +\catcode"078C=12 \lccode"078C=`\u +\catcode"078D=12 \lccode"078D=`\u +\catcode"078E=12 \lccode"078E=`\u +\catcode"078F=12 \lccode"078F=`\u +\catcode"07B5=12 \lccode"07B5=`\u +\catcode"07C4=12 \lccode"07C4=`\u +\catcode"07C5=12 \lccode"07C5=`\u +\catcode"07C6=12 \lccode"07C6=`\u +\catcode"07C7=12 \lccode"07C7=`\u +\catcode"0880=12 \lccode"0880=`\u +\catcode"0881=12 \lccode"0881=`\u +\catcode"0882=12 \lccode"0882=`\u +\catcode"0883=12 \lccode"0883=`\u +\catcode"0884=12 \lccode"0884=`\u +\catcode"0885=12 \lccode"0885=`\u +\catcode"0886=12 \lccode"0886=`\u +\catcode"0887=12 \lccode"0887=`\u +\catcode"0888=12 \lccode"0888=`\u +\catcode"0889=12 \lccode"0889=`\u +\catcode"088A=12 \lccode"088A=`\u +\catcode"088B=12 \lccode"088B=`\u +\catcode"088C=12 \lccode"088C=`\u +\catcode"088D=12 \lccode"088D=`\u +\catcode"0980=12 \lccode"0980=`\u +\catcode"0981=12 \lccode"0981=`\u +\catcode"0982=12 \lccode"0982=`\u +\catcode"0983=12 \lccode"0983=`\u +\catcode"0984=12 \lccode"0984=`\u +\catcode"0985=12 \lccode"0985=`\u +\catcode"0986=12 \lccode"0986=`\u +\catcode"0987=12 \lccode"0987=`\u +\catcode"0988=12 \lccode"0988=`\u +\catcode"0989=12 \lccode"0989=`\u +\catcode"098A=12 \lccode"098A=`\u +\catcode"098B=12 \lccode"098B=`\u +\catcode"098C=12 \lccode"098C=`\u +\catcode"098D=12 \lccode"098D=`\u +\catcode"0790=12 \lccode"0790=`\w +\catcode"0791=12 \lccode"0791=`\w +\catcode"0792=12 \lccode"0792=`\w +\catcode"0793=12 \lccode"0793=`\w +\catcode"0794=12 \lccode"0794=`\w +\catcode"0795=12 \lccode"0795=`\w +\catcode"0796=12 \lccode"0796=`\w +\catcode"0797=12 \lccode"0797=`\w +\catcode"0798=12 \lccode"0798=`\w +\catcode"0799=12 \lccode"0799=`\w +\catcode"079A=12 \lccode"079A=`\w +\catcode"079B=12 \lccode"079B=`\w +\catcode"079C=12 \lccode"079C=`\w +\catcode"079D=12 \lccode"079D=`\w +\catcode"079E=12 \lccode"079E=`\w +\catcode"079F=12 \lccode"079F=`\w +\catcode"07A0=12 \lccode"07A0=`\w +\catcode"07A1=12 \lccode"07A1=`\w +\catcode"07A2=12 \lccode"07A2=`\w +\catcode"07A3=12 \lccode"07A3=`\w +\catcode"07A4=12 \lccode"07A4=`\w +\catcode"07A5=12 \lccode"07A5=`\w +\catcode"07A6=12 \lccode"07A6=`\w +\catcode"07A7=12 \lccode"07A7=`\w +\catcode"07A8=12 \lccode"07A8=`\w +\catcode"07A9=12 \lccode"07A9=`\w +\catcode"07AA=12 \lccode"07AA=`\w +\catcode"07AB=12 \lccode"07AB=`\w +\catcode"07AC=12 \lccode"07AC=`\w +\catcode"07AD=12 \lccode"07AD=`\w +\catcode"07AE=12 \lccode"07AE=`\w +\catcode"07AF=12 \lccode"07AF=`\w +\catcode"07B6=12 \lccode"07B6=`\w +\catcode"07BE=12 \lccode"07BE=`\w +\catcode"07CF=12 \lccode"07CF=`\w +\catcode"07D6=12 \lccode"07D6=`\w +\catcode"07D7=12 \lccode"07D7=`\w +\catcode"07D8=12 \lccode"07D8=`\w +\catcode"0890=12 \lccode"0890=`\w +\catcode"0891=12 \lccode"0891=`\w +\catcode"0892=12 \lccode"0892=`\w +\catcode"0893=12 \lccode"0893=`\w +\catcode"0894=12 \lccode"0894=`\w +\catcode"0895=12 \lccode"0895=`\w +\catcode"0896=12 \lccode"0896=`\w +\catcode"0897=12 \lccode"0897=`\w +\catcode"0898=12 \lccode"0898=`\w +\catcode"0899=12 \lccode"0899=`\w +\catcode"089A=12 \lccode"089A=`\w +\catcode"089B=12 \lccode"089B=`\w +\catcode"089C=12 \lccode"089C=`\w +\catcode"089D=12 \lccode"089D=`\w +\catcode"089E=12 \lccode"089E=`\w +\catcode"089F=12 \lccode"089F=`\w +\catcode"08A0=12 \lccode"08A0=`\w +\catcode"08A1=12 \lccode"08A1=`\w +\catcode"08A2=12 \lccode"08A2=`\w +\catcode"08A3=12 \lccode"08A3=`\w +\catcode"08A4=12 \lccode"08A4=`\w +\catcode"08A5=12 \lccode"08A5=`\w +\catcode"08A6=12 \lccode"08A6=`\w +\catcode"08A7=12 \lccode"08A7=`\w +\catcode"08A8=12 \lccode"08A8=`\w +\catcode"08A9=12 \lccode"08A9=`\w +\catcode"08AA=12 \lccode"08AA=`\w +\catcode"08AB=12 \lccode"08AB=`\w +\catcode"08AC=12 \lccode"08AC=`\w +\catcode"08AD=12 \lccode"08AD=`\w +\catcode"0990=12 \lccode"0990=`\w +\catcode"0991=12 \lccode"0991=`\w +\catcode"0992=12 \lccode"0992=`\w +\catcode"0993=12 \lccode"0993=`\w +\catcode"0994=12 \lccode"0994=`\w +\catcode"0995=12 \lccode"0995=`\w +\catcode"0996=12 \lccode"0996=`\w +\catcode"0997=12 \lccode"0997=`\w +\catcode"0998=12 \lccode"0998=`\w +\catcode"0999=12 \lccode"0999=`\w +\catcode"099A=12 \lccode"099A=`\w +\catcode"099B=12 \lccode"099B=`\w +\catcode"099C=12 \lccode"099C=`\w +\catcode"099D=12 \lccode"099D=`\w +\catcode"099E=12 \lccode"099E=`\w +\catcode"099F=12 \lccode"099F=`\w +\catcode"09A0=12 \lccode"09A0=`\w +\catcode"09A1=12 \lccode"09A1=`\w +\catcode"09A2=12 \lccode"09A2=`\w +\catcode"09A3=12 \lccode"09A3=`\w +\catcode"09A4=12 \lccode"09A4=`\w +\catcode"09A5=12 \lccode"09A5=`\w +\catcode"09A6=12 \lccode"09A6=`\w +\catcode"09A7=12 \lccode"09A7=`\w +\catcode"09A8=12 \lccode"09A8=`\w +\catcode"09A9=12 \lccode"09A9=`\w +\catcode"09AA=12 \lccode"09AA=`\w +\catcode"09AB=12 \lccode"09AB=`\w +\catcode"09AC=12 \lccode"09AC=`\w +\catcode"09AD=12 \lccode"09AD=`\w +\catcode"0386=12 \lccode"0386=`\a +\catcode"0388=12 \lccode"0388=`\e +\catcode"0389=12 \lccode"0389=`\h +\catcode"038A=12 \lccode"038A=`\i +\catcode"038C=12 \lccode"038C=`\o +\catcode"038E=12 \lccode"038E=`\u +\catcode"038F=12 \lccode"038F=`\w +\catcode"0390=12 \lccode"0390="03CA +\catcode"0391=12 \lccode"0391=`\a +\catcode"0392=12 \lccode"0392=`\b +\catcode"0393=12 \lccode"0393=`\g +\catcode"0394=12 \lccode"0394=`\d +\catcode"0395=12 \lccode"0395=`\e +\catcode"0396=12 \lccode"0396=`\z +\catcode"0397=12 \lccode"0397=`\h +\catcode"0398=12 \lccode"0398=`\j +\catcode"0399=12 \lccode"0399=`\i +\catcode"039A=12 \lccode"039A=`\k +\catcode"039B=12 \lccode"039B=`\l +\catcode"039C=12 \lccode"039C=`\m +\catcode"039D=12 \lccode"039D=`\n +\catcode"039E=12 \lccode"039E=`\x +\catcode"039F=12 \lccode"039F=`\o +\catcode"03A0=12 \lccode"03A0=`\p +\catcode"03A1=12 \lccode"03A1=`\r +\catcode"03A3=12 \lccode"03A3=`\s +\catcode"03A4=12 \lccode"03A4=`\t +\catcode"03A5=12 \lccode"03A5=`\u +\catcode"03A6=12 \lccode"03A6=`\f +\catcode"03A7=12 \lccode"03A7=`\q +\catcode"03A8=12 \lccode"03A8=`\y +\catcode"03A9=12 \lccode"03A9=`\w +\catcode"03AA=12 \lccode"03AA="03CA +\catcode"03AB=12 \lccode"03AB="03CB +\catcode"03AC=12 \lccode"03AC=`\a +\catcode"03AD=12 \lccode"03AD=`\e +\catcode"03AE=12 \lccode"03AE=`\h +\catcode"03AF=12 \lccode"03AF=`\i +\catcode"03B0=12 \lccode"03B0="03CB +\catcode"03B1=12 \lccode"03B1=`\a +\catcode"03B2=12 \lccode"03B2=`\b +\catcode"03B3=12 \lccode"03B3=`\g +\catcode"03B4=12 \lccode"03B4=`\d +\catcode"03B5=12 \lccode"03B5=`\e +\catcode"03B6=12 \lccode"03B6=`\z +\catcode"03B7=12 \lccode"03B7=`\h +\catcode"03B8=12 \lccode"03B8=`\j +\catcode"03B9=12 \lccode"03B9=`\i +\catcode"03BA=12 \lccode"03BA=`\k +\catcode"03BB=12 \lccode"03BB=`\l +\catcode"03BC=12 \lccode"03BC=`\m +\catcode"03BD=12 \lccode"03BD=`\n +\catcode"03BE=12 \lccode"03BE=`\x +\catcode"03BF=12 \lccode"03BF=`\o +\catcode"03C0=12 \lccode"03C0=`\p +\catcode"03C1=12 \lccode"03C1=`\r +\catcode"03C2=12 \lccode"03C2=`\c +\catcode"03C3=12 \lccode"03C3=`\s +\catcode"03C4=12 \lccode"03C4=`\t +\catcode"03C5=12 \lccode"03C5=`\u +\catcode"03C6=12 \lccode"03C6=`\f +\catcode"03C7=12 \lccode"03C7=`\q +\catcode"03C8=12 \lccode"03C8=`\y +\catcode"03C9=12 \lccode"03C9=`\w +\catcode"03CA=12 \lccode"03CA="03CA +\catcode"03CB=12 \lccode"03CB="03CB +\catcode"03CC=12 \lccode"03CC=`\o +\catcode"03CD=12 \lccode"03CD=`\u +\catcode"03CE=12 \lccode"03CE=`\w +\catcode"03D0=12 \lccode"03D0=`\b +\catcode"03D1=12 \lccode"03D1=`\j +\catcode"03D2=12 \lccode"03D2=`\u +\catcode"03D3=12 \lccode"03D3=`\u +\catcode"03D4=12 \lccode"03D4="03CB +\catcode"03D5=12 \lccode"03D5=`\f +\catcode"03D6=12 \lccode"03D6=`\p +\catcode"03DC=12 \lccode"03DC=`\v +\catcode"03DD=12 \lccode"03DD=`\v +\catcode"03F0=12 \lccode"03F0=`\k +\catcode"03F1=12 \lccode"03F1=`\r +\catcode"03F2=12 \lccode"03F2=`\s +\catcode"03F3=12 \lccode"03F3=`\i +\endinput
\ No newline at end of file diff --git a/Master/texmf-dist/tex/plain/omega/omega.tex b/Master/texmf-dist/tex/plain/omega/omega.tex new file mode 100644 index 00000000000..4ac77eef1b5 --- /dev/null +++ b/Master/texmf-dist/tex/plain/omega/omega.tex @@ -0,0 +1,3 @@ +\ocp\OCPebcdic=ebcdic +\DefaultInputTranslation ebcdic \OCPebcdic +\input plain.tex diff --git a/Master/texmf-dist/tex/plain/patch/patch.tex b/Master/texmf-dist/tex/plain/patch/patch.tex new file mode 100644 index 00000000000..8f62a280654 --- /dev/null +++ b/Master/texmf-dist/tex/plain/patch/patch.tex @@ -0,0 +1,128 @@ +%% +%% This is file `patch.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% patch.doc +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% You are *not* allowed to modify this file. +%% +%% You are *not* allowed to distribute this file. +%% For distribution of the original source see +%% the terms for copying and modification in the file patch.doc. +%% +%% patch.doc/patch.tex +%% (c) 1994 by David Kastrup (dak@pool.informatik.rwth-aachen.de) +%% Version 0.91 +%% Redistribution of patch.doc is allowed, provided it is not modified +%% in any way. The stripped version patch.tex may only be distributed +%% as part of other packages, and only if the unstripped version +%% is distributed on demand. +\begingroup +\catcode`@=11 +\toks@={\endgroup} +\outer\def\endpatch{\the\toks@} +\def\futuredef#1#2{\begingroup + \aftergroup\afterassignment \aftergroup#2% + \aftergroup\def \aftergroup#1% + \futurelet\next\^^90} +\let\bgroup\relax \let\egroup\relax +\def\^^90{% + \ifcat\noexpand\next{% + \^^91{\aftergroup{\iffalse}\fi}% + \else\ifcat\noexpand\next}% + \^^91{\iffalse{\fi\aftergroup}}% + \else\ifcat\noexpand\next\space + \^^91{\expandafter\aftergroup\space}% + \else\ifcat\noexpand\next## + \^^91{\aftergroup########}% + \else + \let\next\^^93% + \fi\fi\fi\fi\next} +\def\^^91#1{\def\next@{\endgroup{#1}}% + \let\next\^^92} +\def\^^92{\afterassignment\next@ \let\next= } +\long\def\^^93#1{\endgroup{\aftergroup#1}} +\def\@ndp@tch{\aftergroup\@ndp@tch} +\def\gpatch{\ifnum\globaldefs<\z@ + \expandafter\patch + \else + \expandafter\^^98% + \fi} +\long\def\^^98#1#2#{\def\next{}% + \long\edef\next##1\@ndp@tch% + {\ifx\next\empty\else\long\fi\gdef##1}% + \^^a0#1{#2}} +\def\patch#1#2#{\def\next{}% + \long\edef\next##1\@ndp@tch + {\toks@ \noexpand\expandafter {\noexpand\the \toks@ + \ifx\next\empty\else\long\fi \def##1}}% + \^^a0#1{#2}} +\long\def\^^a0#1#2#3#4{\begingroup + \def\^^e0{#1}% + \toks@{\endgroup\next#1#2}% + \begingroup + \aftergroup\the\aftergroup\toks@ + \toks@{#4}% + \expandafter\p@check\expandafter{#1#3}\@ndp@tch} +\toksdef\p@match=\@ne +\toksdef\p@replace=\tw@ +\def\p@check{\edef\next@{\the\toks@}% + \ifx\empty\next@ \expandafter\endgroup + \else \expandafter\^^a1\fi} +\def\^^a1{\iffalse{\fi + \expandafter\futuredef \expandafter\p@first + \expandafter\^^a2\the\toks@}} +\def\^^a2#1#{\p@match{#1}\afterassignment\^^a3\p@replace} +\def\^^a3{\afterassignment\^^a4\toks@\expandafter{\iffalse}\fi} +\def\^^a4{\futuredef\next\^^a5} +\def\^^a5{\ifx\next\p@first + \begingroup \toks@{}\expandafter\^^a6% + \else\ifx\next\@ndp@tch \^^e1\fi + \next \expandafter \^^a4% + \fi} +\def\^^e1{\let\^^a4\endgroup + \newlinechar`\^^J + \toks@\expandafter{\next@}% + \errorcontextlines\m@ne + \errhelp{I am ignoring inapplicable patches. Go on.}% + \errmessage{When trying to patch + \expandafter\string\^^e0, which was defined as^^J% + \expandafter\meaning\^^e0^^J% + the following patches remained inapplicable:^^J% + \the\toks@^^J% + I will show the results of the succeeded patches as soon^^J% + as I can without further comment, so do not be surprised.}% + \aftergroup\show \expandafter\aftergroup\^^e0% +} +\def\^^a6{\edef\next{\the\p@match}% + \ifx\next\empty \endgroup\expandafter\^^ac% + \else \expandafter\^^a7\fi} +\def\^^a7{\iffalse{\fi + \expandafter\futuredef\expandafter\next@ + \expandafter\^^a8\the\p@match}} +\def\^^a8{\afterassignment\^^a9\p@match\expandafter{\iffalse}\fi} +\def\^^a9{\futuredef\next\^^aa} +\def\^^aa{\ifx\next@\next + \expandafter\^^ab% + \else \aftergroup\p@first + \aftergroup\^^a4% + \the\toks@\next\expandafter\endgroup\fi} +\def\^^ab{\toks@\expandafter\expandafter\expandafter{% + \expandafter\the\expandafter\toks@\next}% + \^^a6} +\def\^^ac{\expandafter\^^ad\the\p@replace\@ndp@tch} +\def\^^ad{\futuredef\next\^^ae} +\def\^^ae{\ifx\next\@ndp@tch + \expandafter\p@check + \else + \next \expandafter\^^ad% + \fi} +\endinput +%% +%% End of file `patch.tex'. diff --git a/Master/texmf-dist/tex/plain/pdcmac/ma55doc.tex b/Master/texmf-dist/tex/plain/pdcmac/ma55doc.tex new file mode 100644 index 00000000000..c22a178174f --- /dev/null +++ b/Master/texmf-dist/tex/plain/pdcmac/ma55doc.tex @@ -0,0 +1,70 @@ +% ma55doc.tex 1.2 1995/03/30 -- macros for short documents +%%%@TeX-definition-file { +%%% filename = "ma55doc.tex", +%%% version = "1.2", +%%% date = "1995/03/30", +%%% package = "pdcmac 1.0", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "TeX, plain TeX, style file", +%%% supported = "Maybe", +%%% abstract = "Top-level macro file for documents set in +%%% Malvern 55, 56 and 75 fonts. +%%% This macro file was generated by running plain +%%% TeX on pdcsty.dtx", +%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcsty.dtx only as part of the +%%% package it came in.", +%%% dependencies = "maamac.tex, pdcfmt2.tex, pdcfsel.tex, +%%% pdchyex.tex, pdcimth.tex, pdcmigr.tex, +%%% pdcoput5.tex, pdcdoc.def", +%%%} + +\message{1.2 <pdc 1995/03/30>} + +\input pdcimth +\input pdcmigr +\input pdcfmt2 +\input pdchyex +\input pdcoput5 +\input pdcfsel +\input maamac +\def\footnotetextmark#1{{\rmsy#1}} +\def\footnotenotemark#1{{\rmsy#1}} +\autoloadfonts +\def\STYheadingT{% + \m{rm}{ma75a}\@\m{mi}{cmmi10}\@\m{sy}{cmsy10}% + \f{it}{ma76a}\@\f{tt}{cmtt10}\@\f{mf}{logo10}\@\f{mfi}{logosl10}% +} +\fontset{subheading}\STYheadingT{12}{14pt}{subheading}{subheading} +\fontset{heading}\STYheadingT{18}{20pt}{subheading}{subheading} +\newfam\rmsyfam +\def\STYbodyT{% + \m{rm}{ma55a}\f{rmsy}{ma55b}\m{it}{ma56a}% + \m{bf}{ma75a}\f{bi}{ma76a}% + \m{mi}{cmmi}\m{sy}{cmsy}% + \@\f{mf}{logo10}\@\f{mfi}{logosl10}% + \f{tt}{cmtt}\f{tb}{cmsltt}% +} +\font\bodymi=cmmi10 scaled \magstep2 +\font\bodysy=cmsy10 scaled \magstep2 +\font\notemi=cmmi10 scaled \magstep1 +\font\notesy=cmsy10 scaled \magstep1 +\font\smallmi=cmmi10 scaled \magstephalf +\font\smallsy=cmsy10 scaled \magstephalf +\fontset{tiny}\STYbodyT{7}{9pt}{tiny}{tiny} +\fontset{small}\STYbodyT{9}{11pt}{tiny}{tiny} +\fontset{note}\STYbodyT{10}{12pt}{tiny}{tiny} +\fontset{body}\STYbodyT{12}{14pt}{small}{tiny} +\def\everyloadfont#1#2{\fontdimen3#1=0pt \fontdimen4#1=0pt} +\rightskip=0pt plus 2em \tolerance=1000 +\bodyfonts +{\tt \hyphenchar\font=-1 } +\def\PS{\csc{PostScript}} +\def\La{L\negthinspace\flushtop{\char"C1 }} +\input pdcdoc.def +\inputifexists{ma55doc.cfg} diff --git a/Master/texmf-dist/tex/plain/pdcmac/ma55lft.tex b/Master/texmf-dist/tex/plain/pdcmac/ma55lft.tex new file mode 100644 index 00000000000..0b72a6e99a4 --- /dev/null +++ b/Master/texmf-dist/tex/plain/pdcmac/ma55lft.tex @@ -0,0 +1,70 @@ +% ma55lft.tex 1.2 1995/03/30 -- macros for short documents +%%%@TeX-definition-file { +%%% filename = "ma55lft.tex", +%%% version = "1.2", +%%% date = "1995/03/30", +%%% package = "pdcmac 1.0", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "TeX, plain TeX, style file", +%%% supported = "Maybe", +%%% abstract = "Top-level macro file for documents set in +%%% Malvern 55, 56 and 75 fonts. +%%% This macro file was generated by running plain +%%% TeX on pdcsty.dtx", +%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcsty.dtx only as part of the +%%% package it came in.", +%%% dependencies = "maamac.tex, pdcfmt2.tex, pdcfsel.tex, +%%% pdchyex.tex, pdcimth.tex, pdcmigr.tex, +%%% pdcoput5.tex, pdclft.def", +%%%} + +\message{1.2 <pdc 1995/03/30>} + +\input pdcimth +\input pdcmigr +\input pdcfmt2 +\input pdchyex +\input pdcoput5 +\input pdcfsel +\input maamac +\def\footnotetextmark#1{{\rmsy#1}} +\def\footnotenotemark#1{{\rmsy#1}} +\autoloadfonts +\def\STYheadingT{% + \m{rm}{ma75a}\@\m{mi}{cmmi10}\@\m{sy}{cmsy10}% + \f{it}{ma76a}\@\f{tt}{cmtt10}\@\f{mf}{logo10}\@\f{mfi}{logosl10}% +} +\fontset{subheading}\STYheadingT{12}{14pt}{subheading}{subheading} +\fontset{heading}\STYheadingT{18}{20pt}{subheading}{subheading} +\newfam\rmsyfam +\def\STYbodyT{% + \m{rm}{ma55a}\f{rmsy}{ma55b}\m{it}{ma56a}% + \m{bf}{ma75a}\f{bi}{ma76a}% + \m{mi}{cmmi}\m{sy}{cmsy}% + \@\f{mf}{logo10}\@\f{mfi}{logosl10}% + \f{tt}{cmtt}\f{tb}{cmsltt}% +} +\font\bodymi=cmmi10 scaled \magstep2 +\font\bodysy=cmsy10 scaled \magstep2 +\font\notemi=cmmi10 scaled \magstep1 +\font\notesy=cmsy10 scaled \magstep1 +\font\smallmi=cmmi10 scaled \magstephalf +\font\smallsy=cmsy10 scaled \magstephalf +\fontset{tiny}\STYbodyT{7}{9pt}{tiny}{tiny} +\fontset{small}\STYbodyT{9}{11pt}{tiny}{tiny} +\fontset{note}\STYbodyT{10}{12pt}{tiny}{tiny} +\fontset{body}\STYbodyT{12}{14pt}{small}{tiny} +\def\everyloadfont#1#2{\fontdimen3#1=0pt \fontdimen4#1=0pt} +\rightskip=0pt plus 2em \tolerance=1000 +\bodyfonts +{\tt \hyphenchar\font=-1 } +\def\PS{\csc{PostScript}} +\def\La{L\negthinspace\flushtop{\char"C1 }} +\input pdclft.def +\inputifexists{ma55lft.cfg} diff --git a/Master/texmf-dist/tex/plain/pdcmac/maamac.tex b/Master/texmf-dist/tex/plain/pdcmac/maamac.tex new file mode 100644 index 00000000000..c3c2835eb10 --- /dev/null +++ b/Master/texmf-dist/tex/plain/pdcmac/maamac.tex @@ -0,0 +1,193 @@ +% maamac.tex 1.5 1995/04/06 -- Malvern A Macros + +%%%@TeX-definition-file { +%%% filename = "$texmf/tex/plain/pdcmac/maamac.tex", +%%% version = "1.5", +%%% date = "1995/04/06", +%%% package = "pdcmac 1.0", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "TeX, plain TeX, macros", +%%% supported = "Maybe", +%%% abstract = "Macros for using the Malvern-A font coding +%%% scheme in plain TeX documents. +%%% This file was generated by running +%%% plain TeX on maamac.dtx", +%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute maamac.dtx only as part of the +%%% package it came in.", +%%% dependencies = "", +%%% } + +\message{1.5 <pdc 1995/04/06>} + +\dimendef\dimena0 \dimendef\dimenb2 +\toksdef\toksa0 +\countdef\counta255 +\ifx\countb\UNDEFINED \csname newcount\endcsname\countb \fi +\ifx\countc\UNDEFINED \csname newcount\endcsname\countc \fi +\def\code#1{% + \ifcat#1a% + `#1 + \else\ifcat#1+% + `#1 + \else\ifx\char#1 + \else + #1% + \fi\fi\fi +} +\let\then=\iffalse +\def\ifcap#1\then{\expandafter\ifcapnum\code{#1}\then} +\def\ifcapnum#1\then{\ifnum\lccode#1=#1} +\def\iflower#1\then{\expandafter\iflowernum\code{#1}\then} +\def\iflowernum#1\then{\ifnum\uccode#1=#1} +\def\fontslant#1{\expandafter\stripPT\the\fontdimen1#1} +\begingroup \uccode`2=`p \uccode`3=`t \uppercase{\toksa{\endgroup + \def\\#123{#1} +}} \the\toksa +\let\stripPT=\\ +\def\putxy#1#2#3{\leavevmode\rlap{\hskip#1\raise#2\hbox{#3}}} +\def\putmarkxy#1#2#3#4{{% + \setbox0=\hbox{#4}#2\relax + \dimenb#1\wd0 \advance\dimenb\fontslant\font\dimena + \leavevmode + \putxy{\dimenb}{\dimena}{\hbox to 0pt{\hss\char#3\hss}}% + \box0 +}} +\def\putmarky{\putmarkxy{0.5}} +\def\typeImark#1#2{{% + \setbox2=\hbox{#2}% + \ifdim \ht2=1ex + \accent#1\relax#2% + \else + \counta\code{#2}% + \ifnum\counta>64 \ifnum\counta<96 + \advance\counta 128 + \fi \fi + \putmarky{\dimena0.5\ht0 \advance\dimena-0.5ex } + {#1}{\char\counta}% + \fi +}} +\chardef\dotglyph22 \def\.{\typeImark\dotglyph} +\chardef\twodotsglyph23 \def\"{\typeImark\twodotsglyph} +\chardef\macronglyph150 \def\={\typeImark\macronglyph} +\chardef\longmacronglyph151 + \def\longmacronmark{\typeImark\longmacronglyph} +\def\typeIImark#1#2{{% + \counta#1\relax \countb\code{#2}% + \ifcap{#2}\then + \ifnum \counta<128 \advance\counta 128 \fi + \ifnum \countb<128 \advance\countb 128 \fi + \fi + \accent\counta \char\countb +}} +\chardef\acuteglyph8 \def\'{\typeIImark\acuteglyph} +\chardef\graveglyph9 \def\`{\typeIImark\graveglyph} +\chardef\circumglyph10 \def\^{\typeIImark\circumglyph} +\chardef\tildeglyph11 \def\~{\typeIImark\tildeglyph} +\chardef\ringglyph12 \def\ringmark{\typeIImark\ringglyph} +\chardef\caronglyph13 \def\v{\typeIImark\caronglyph} +\chardef\breveglyph14 \def\u{\typeIImark\breveglyph} +\chardef\hungarglyph15 \def\H{\typeIImark\hungarglyph} +\def\cedillalike#1#2#3{{% + \setbox0=\hbox{#3}% + \ifdim\ht0>1ex + \ooalign{\hidewidth\char#2\relax\hidewidth\crcr\unhbox0 }% + \else + \accent#1 #3% + \fi +}} +\chardef\cedillaglyph6 \chardef\Cedillaglyph134 +\def\c{\cedillalike\cedillaglyph\Cedillaglyph} +\chardef\ogonekglyph7 \chardef\Ogonekglyph135 +\def\k{\cedillalike\ogonekglyph\Ogonekglyph} +\chardef\TH"00 \chardef\th"10 \chardef\DH"04 \chardef\dh"14 +\chardef\A "01 \chardef\a "11 \chardef\E "05 \chardef\e "15 +\chardef\NG"02 \chardef\ng"12 \chardef\L "03 \chardef\l "13 +\chardef\AE"5E \chardef\ae"7E \chardef\OE"5F \chardef\oe"7F +\chardef\O "5C \chardef\o "7C +\chardef\vd"9C \chardef\vt"9D \chardef\h "9E \chardef\vl"9F +\chardef\ss"18 \chardef\i "19 \chardef\j "1A +\def\aa{\ringmark a} \def\AA{\ringmark A} +\chardef\orda"98 \chardef\ordo"99 \def\No{N\ordo} \def\no{n\ordo} +\chardef\csuperior"98 \def\Mc{M\csuperior} +\chardef\trademark "22 +\chardef\copyright "FB \chardef\registered"FD +\chardef\careof "9A \chardef\Box "A0 +\chardef\cents "A2 \chardef\pounds "A3 +\chardef\currency "A4 \chardef\permille "A5 +\chardef\yen "A8 \chardef\florin "A9 +\chardef\dag "AA \chardef\ddag "AB +\chardef\gbdecimal "AE \chardef\minus "AF +\chardef\S "BA \chardef\P "BB +\chardef\degrees "C0 +\chardef\lguillemet"BC \chardef\rguillemet"BE +\mathcode`\,"602C \mathcode`\-"20AF +\mathcode`\."002E \mathcode`\/"002F +\mathchardef\bullet "2020 \mathchardef\times "20A6 +\mathchardef\backslash"005B \mathchardef\setminus "205B +\mathchardef\cdot "20AE \mathchardef\cdotp "60AE +\def\langle{\delimiter"40DB30A } \delcode`\<"0DB30A +\def\rangle{\delimiter"50DD30B } \delcode`\>"0DD30B +\def\lbrace{\delimiter"407B308 } \let\{\lbrace \mathcode`\{"407B +\def\rbrace{\delimiter"507D309 } \let\}\rbrace \mathcode`\}"407D +\uccode\th\TH \lccode\TH\th \uccode\TH\TH \lccode\th\th +\uccode\a \A \lccode\A \a \uccode\A \A \lccode\a \a +\uccode\ng\NG \lccode\NG\ng \uccode\NG\NG \lccode\ng\ng +\uccode\l \L \lccode\L \l \uccode\L \L \lccode\l \l +\uccode\dh\DH \lccode\DH\dh \uccode\DH\DH \lccode\dh\dh +\uccode\e \E \lccode\E \e \uccode\E \E \lccode\e \e +\uccode\o \O \lccode\O \o \uccode\O \O \lccode\o \o +\uccode\ae\AE \lccode\AE\ae \uccode\AE\AE \lccode\ae\ae +\uccode\oe\OE \lccode\OE\oe \uccode\OE\OE \lccode\oe\oe +\uccode\i`I \uccode\j`J \lccode\i\i \lccode\j\j +\uccode\csuperior`C +\def\changecodes#1#2#3#4{% + \counta#2\relax \countb#3\relax \countc#4\relax + \loop + \ifnum\countc>0 + #1\counta\countb + \advance\counta 1 + \advance\countb 1 + \advance\countc-1 + \repeat +} +\changecodes\uccode{"E1}{`A}{26} +\changecodes\uccode{"C1}{"C1}{26} +\changecodes\lccode{"E1}{"E1}{26} +\changecodes\lccode{"C1}{`a}{26} +\changecodes\lccode{"B0}{`0}{10} +\changecodes\uccode{`0}{"B0}{10} +\changecodes\mathcode{`a}{"7461}{26} +\changecodes\mathcode{`A}{"7441}{26} +\changecodes\mathcode{`0}{"70B0}{10} +\def\capspecials#1#2{% + \chardef\TH"#10 \chardef\A "#11 \chardef\NG"#12 + \chardef\L "#13 \chardef\DH"#14 \chardef\E "#15 + \chardef\O "#2C \chardef\AE"#2E \chardef\OE"#2F +} +\def\lcspecials#1#2#3{% + \chardef\th"#10 \chardef\a "#11 \chardef\ng"#12 + \chardef\l "#13 \chardef\dh"#14 \chardef\e "#15 + \chardef\o "#2C \chardef\ae"#2E \chardef\oe"#2F + \def\ss{\char"#23 \char"#23 }\chardef\i"#39 \chardef\j"#3A +} +\def\sc#1{{% + \changecodes\lccode{`A}{"E1}{26}\capspecials9F\lowercase{#1}% +}} +\def\mc#1{{% + \changecodes\lccode{`A}{"C1}{26}\capspecials8D\lowercase{#1}% +}} +\def\csc#1{{% + \changecodes\uccode{`a}{"E1}{26}\lcspecials9FE\uppercase{#1}% +}} +\def\allcaps#1{{% + \lcspecials054\uppercase{#1}% +}} +\def\alllc#1{{% + \capspecials17\lowercase{#1}% +}} diff --git a/Master/texmf-dist/tex/plain/pdcmac/magrmac.tex b/Master/texmf-dist/tex/plain/pdcmac/magrmac.tex new file mode 100644 index 00000000000..eebec3bdfac --- /dev/null +++ b/Master/texmf-dist/tex/plain/pdcmac/magrmac.tex @@ -0,0 +1,67 @@ +% magrmac.tex 1.3 1995/03/29 -- Malvern Greek Macros +%%%@TeX-definition-file { +%%% filename = "$texmf/tex/plain/pdcmac/magrmac.tex", +%%% version = "1.3", +%%% date = "1995/03/29", +%%% package = "pdcmac 1.0", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "TeX, plain TeX, Malvern, Greek, macros", +%%% supported = "Maybe", +%%% abstract = "Macros for using Malvern Greek fonts. +%%% This file was generated by running +%%% plain TeX on magrmac.dtx", +%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute magrmac.dtx only as part of the +%%% package it came in.", +%%% dependencies = "", +%%%} + +\message{1.3 1995/03/29} + +\newtoks\everygreek +\chardef\other=12 +\def\begingreek{% + \begingroup + \catcode`\~\other \catcode`\|\other \catcode`\"\other + \the\everygreek +} +\let\endgreek=\endgroup +\toksdef\toksa=0 +\begingroup \let\\=\toksa \catcode`\s=13 \catcode`\S=13 \\={\endgroup + \def\tmp{% + \catcode`\s\active \chardef s`c + \catcode`\S\active \chardef S`C + } +}\the\\ +\let\grlunatesigma=\tmp +\chardef\ninetytwo=92 +\begingroup \uccode`\~=`f \uppercase{\toksa={\endgroup + \def\grvarphi{% + \catcode`\f\active \chardef~\ninetytwo + } +}} \the\toksa +\begingroup \catcode`\<=\active \catcode`\>=\active + \catcode`\'=\active \catcode`\`=\active \toksa={\endgroup + \def\monotoniko{% + \catcode\lq\'\active \chardef'3 + \catcode\lq\`\active \chardef`3 + \catcode\lq\~\active \chardef~3 + \catcode\lq\<\active \let<\relax + \catcode\lq\>\active \let>\relax + \catcode\lq\|\active \let|\relax + } +}\the\toksa +\def\plutoniko{% + \catcode`\'\other \catcode`\`\other \catcode`\~\other + \catcode`\<\other \catcode`\>\other \catcode`\|\other +} +\def\grdelimiter#1{ + \begingroup \uccode`~=`#1 \uppercase{\toksa={\endgroup + \def~{\begingreek \let~\endgreek} + }} \the\toksa +} diff --git a/Master/texmf-dist/tex/plain/pdcmac/pdcadobe.tex b/Master/texmf-dist/tex/plain/pdcmac/pdcadobe.tex new file mode 100644 index 00000000000..909cec7dfd2 --- /dev/null +++ b/Master/texmf-dist/tex/plain/pdcmac/pdcadobe.tex @@ -0,0 +1,300 @@ +% pdcadobe.tex 1.3 1995/03/30 -- macros for Adobe style fonts + +%%%@TeX-definition-file { +%%% filename = "$texmf/tex/plain/pdcmac/pdcadobe.tex", +%%% version = "1.3", +%%% date = "1995/03/30", +%%% package = "pdcmac 1.0", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "TeX, plain TeX, macros", +%%% supported = "Maybe", +%%% abstract = "Formatting macros for Adobe-style fonts. +%%% This file was generated by running +%%% plain TeX on pdcadobe.dtx", +%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcadobe.dtx only as part of the +%%% package it came in.", +%%% dependencies = "", +%%% } + +\message{1.3 <pdc 1995/03/30>} + +\chardef\quotesingle="0D +\chardef\quotedouble="22 +\chardef\_="5F +\chardef\asciicircum="80 +\chardef\asciitilde="81 +\chardef\cents="A2 +\chardef\pounds="A3 +\chardef\fractionslash="A4 +\chardef\yen="A5 +\chardef\florin="A6 +\chardef\S="A7 +\chardef\currency="A8 +\chardef\lguillemet="AB +\chardef\dag="B2 +\chardef\ddag="B3 +\chardef\gbdecimal="B4 +\chardef\P="B6 +\chardef\bullet="B7 +\chardef\quotesinglebase="B8 +\chardef\quotedblbase="B9 +\chardef\rguillemet="BB +\chardef\ellipsis="BC \def\dots{\ellipsis\thinspace} +\chardef\permille="BD +\chardef\orda="E3 +\chardef\ordo="EB +\mathchardef\backslash="205C +\edef\lbrace{\delimiter"407B308} \let\{=\lbrace \mathcode`\{="407B +\mathcode`\|="707C \mathchardef\mid="307C +\edef\rbrace{\delimiter"507D309} \let\}=\rbrace \mathcode`\}="507D +\mathchardef\sim="3081 +\mathchardef\cdot="20B4 +\mathchardef\bullet="20B7 +\mathchardef\ldots="60BC +\chardef\graveglyph="12 +\chardef\acuteglyph="13 +\chardef\hookglyph="14 +\chardef\breveglyph="15 +\chardef\macronglyph="16 +\chardef\ringglyph="17 +\chardef\cedillaglyph="18 +\chardef\circumglyph="5E +\chardef\tildeglyph="7E +\chardef\twodotsglyph="7F +\chardef\dotglyph="C7 +\chardef\hungarianglyph="CD +\chardef\ogonekglyph="CE +\chardef\AA="C8 \chardef\aa="98 +\chardef\L="E8 \chardef\l="F8 +\def\.#1{\accent\dotglyph #1} +\def\H#1{\accent\hungarianglyph"CD #1} +\ifx\asyfam\UNDEFINED + \newfam\asyfam +\fi +\edef\\{\ifcase\asyfam 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or + 8\or 9\or A\or B\or C\or D\or E\or F\fi +} +\mathchardef\forall="0\\22 +\mathchardef\exists="0\\24 +\mathchardef\suchthat="0\\27 +\mathcode`*="2\\2A +\mathcode`,="6\\2C +\mathcode`-="2\\2D +\mathcode`.="2\\2E +\mathcode`/="2\\2F +\mathcode`<="3\\3C +\mathcode`>="3\\3E +\mathchardef\cong="3\\40 +\mathchardef\Alpha="0\\41 +\mathchardef\Beta="0\\42 +\mathchardef\Chi="0\\43 +\mathchardef\Delta="0\\44 +\mathchardef\Epsilon="0\\45 +\mathchardef\Phi="0\\46 +\mathchardef\Gamma="0\\47 +\mathchardef\Eta="0\\48 +\mathchardef\Iota="0\\49 +\mathchardef\vartheta="0\\4A +\mathchardef\Kappa="0\\4B +\mathchardef\Lambda="0\\4C +\mathchardef\Mu="0\\4D +\mathchardef\Ni="0\\4E +\mathchardef\Omicron="0\\4F +\mathchardef\Pi="0\\50 +\mathchardef\Theta="0\\51 +\mathchardef\Rho="0\\52 +\mathchardef\Sigma="0\\53 +\mathchardef\Tau="0\\54 +\mathchardef\varUpsilon="0\\55 +\mathchardef\varsigma="0\\56 +\mathchardef\Omega="0\\57 +\mathchardef\Xi="0\\58 +\mathchardef\Psi="0\\59 +\mathchardef\Zeta="0\\5A +\mathchardef\therefore="3\\5C +\mathchardef\perp="3\\5E +\mathchardef\alpha="0\\61 +\mathchardef\beta="0\\62 +\mathchardef\chi="0\\63 +\mathchardef\delta="0\\64 +\mathchardef\epsilon="0\\65 +\mathchardef\phi="0\\66 +\mathchardef\gamma="0\\67 +\mathchardef\eta="0\\68 +\mathchardef\iota="0\\69 +\mathchardef\varphi="0\\6A +\mathchardef\kappa="0\\6B +\mathchardef\lambda="0\\6C +\mathchardef\mu="0\\6D +\mathchardef\ni="0\\6E +\mathchardef\omicron="0\\6F +\mathchardef\pi="0\\70 +\mathchardef\theta="0\\71 +\mathchardef\rho="0\\72 +\mathchardef\sigma="0\\73 +\mathchardef\tau="0\\74 +\mathchardef\upsilon="0\\75 +\mathchardef\varpi="0\\76 +\mathchardef\omega="0\\77 +\mathchardef\xi="0\\78 +\mathchardef\psi="0\\79 +\mathchardef\zeta="0\\7A +\mathchardef\sim="3\\7E +\mathchardef\Upsilon="0\\A1 +\mathcode`'="0\\A2 \mathchardef\minutes="0\\A2 +\mathchardef\leq="3\\A3 \let\le=\leq +\mathchardef\fractionslash="0\\A4 +\mathchardef\infinity="0\\A5 +\mathchardef\clubsuit="0\\A7 +\mathchardef\diamondsuit="0\\A8 +\mathchardef\heartsuit="0\\A9 +\mathchardef\spadesuit="0\\AA +\mathchardef\leftrightarrow="3\\AB +\mathchardef\leftarrow="3\\AC \let\gets=\rightarrow +\mathchardef\uparrow="3\\AD +\mathchardef\rightarrow="3\\AE \let\to=\rightarrow +\mathchardef\downarrow="3\\AF +\mathchardef\degrees="0\\B0 +\mathchardef\pm="2\\B1 +\mathchardef\seconds="0\\B2 +\mathchardef\geq="3\\B3 \let\ge=\geq +\mathchardef\times="2\\B4 +\mathchardef\propto="3\\B5 +\mathchardef\partial="0\\B6 +\mathchardef\div="2\\B8 +\mathchardef\neq="3\\B9 \let\ne=\neq +\mathchardef\equiv="3\\BA +\mathchardef\approx="3\\BB +\mathchardef\ldots="6\\BC +\edef\arrowvert{\delimiter"0\\BD33C } +\mathchardef\relbar"3\\BE +\edef\crlf{\noexpand\mathexbox\\BF} +\mathchardef\aleph="0\\C0 +\mathchardef\Im="0\\C1 +\mathchardef\Re="0\\C2 +\mathchardef\wp="0\\C3 +\mathchardef\otimes="2\\C4 +\mathchardef\oplus="2\\C5 +\mathchardef\emptyset="0\\C6 +\mathchardef\cap="2\\C7 +\mathchardef\cup="2\\C8 +\mathchardef\supset="3\\C9 +\mathchardef\supseteq="3\\CA +\mathchardef\nsubset="3\\CB +\mathchardef\subset="3\\CC +\mathchardef\subseteq="3\\CD +\mathchardef\in="3\\CE +\mathchardef\nin="3\\CF +\mathchardef\angle="0\\D0 +\mathchardef\nabla="0\\D1 +\edef\registered{\noexpand\mathhexbox\\D2} +\edef\copyright{\noexpand\mathhexbox\\D3} +\edef\trademark{\noexpand\mathhexbox\\D4} +\mathchardef\prod="1\\D5 +\edef\sqrt{\radical"\\D6370 } +\mathchardef\cdot="2\\D7 +\mathchardef\neg="0\\D8 \let\lnot=\neg +\mathchardef\wedge="3\\D9 \let\land=\wedge +\mathchardef\vee="3\\DA \let\lor=\vee +\mathchardef\Leftrightarrow="3\\DB +\mathchardef\Leftarrow="3\\DC +\mathchardef\Uparrow="3\\DD +\mathchardef\Rightarrow="3\\DE +\mathchardef\Downarrow="3\\DF +\mathchardef\diamond="3\\E0 +\edef\langle{\delimiter"4\\E130A } +\mathchardef\sum="1\\E5 +\edef\rangle{\delimiter"5\\F130B } +\catcode`^^a0\active \let^^a0=~ +\catcode`^^a1\active \def^^a1{!`} +\catcode`^^a4\active \let^^a4=\currency +\catcode`^^a8\active \let^^a8=\twodotsglyph +\catcode`^^a9\active \let^^a9=\copyright +\catcode`^^aa\active \let^^aa=\orda +\catcode`^^ac\active \let^^ac=\lnot +\catcode`^^ad\active \let^^ad=\- +\catcode`^^ae\active \let^^ae=\registered +\catcode`^^af\active \let^^af=\macronglyph +\catcode`^^b0\active \let^^b0=\degrees +\catcode`^^b1\active \let^^b1=\pm +\catcode`^^b2\active \def^^b2{^2} +\catcode`^^b3\active \def^^b3{^3} +\catcode`^^b4\active \let^^b4=\acuteglyph +\catcode`^^b5\active \let^^b5=\mu +\catcode`^^b7\active \let^^b7=\gbdecimal +\catcode`^^b8\active \let^^b8=\cedillaglyph +\catcode`^^b9\active \def^^b9{^1} +\catcode`^^ba\active \let^^ba=\ordo +\catcode`^^bc\active \def^^bc{\frac14} +\catcode`^^bd\active \def^^bd{\frac12} +\catcode`^^be\active \def^^be{\frac34} +\catcode`^^bf\active \def^^bf{?`} +\catcode`^^d7\active \let^^d7=\times +\catcode`^^f7\active \let^^f7=\div +\catcode`^^c0\active \def^^c0{\graveglyph A} +\catcode`^^c1\active \def^^c1{\acuteglyph A} +\catcode`^^c2\active \def^^c2{\circumglyph A} +\catcode`^^c3\active \def^^c3{\tildeglyph A} +\catcode`^^c4\active \def^^c4{\twodotsglyph A} +\catcode`^^c5\active \def^^c5{\ringglyph A} +\catcode`^^c6\active \let^^c6=\AE +\catcode`^^c7\active \def^^c7{\cedillaglyph C} +\catcode`^^c8\active \def^^c8{\graveglyph E} +\catcode`^^c9\active \def^^c9{\acuteglyph E} +\catcode`^^ca\active \def^^ca{\circumglyph E} +\catcode`^^cb\active \def^^cb{\twodotsglyph E} +\catcode`^^cc\active \def^^cc{\graveglyph I} +\catcode`^^cd\active \def^^cd{\acuteglyph I} +\catcode`^^ce\active \def^^ce{\circumglyph I} +\catcode`^^cf\active \def^^cf{\twodotsglyph I} +\catcode`^^d1\active \def^^d1{\tildeglyph N} +\catcode`^^d2\active \def^^d2{\graveglyph O} +\catcode`^^d3\active \def^^d3{\acuteglyph O} +\catcode`^^d4\active \def^^d4{\circumglyph O} +\catcode`^^d5\active \def^^d5{\tildeglyph O} +\catcode`^^d6\active \def^^d6{\twodotsglyph O} +\catcode`^^d8\active \let^^d8=\O +\catcode`^^d9\active \def^^d9{\graveglyph U} +\catcode`^^da\active \def^^da{\acuteglyph U} +\catcode`^^db\active \def^^db{\circumglyph U} +\catcode`^^dc\active \def^^dc{\twodotsglyph U} +\catcode`^^dd\active \def^^dd{\acuteglyph Y} +\catcode`^^df\active \let^^df=\ss +\catcode`^^e0\active \def^^e0{\acuteglyph a} +\catcode`^^e1\active \def^^e1{\graveglyph a} +\catcode`^^e2\active \def^^e2{\circumglyph a} +\catcode`^^e3\active \def^^e3{\tildeglyph a} +\catcode`^^e4\active \def^^e4{\twodotsglyph a} +\catcode`^^e5\active \def^^e5{\ringglyph a} +\catcode`^^e6\active \let^^e6=\ae +\catcode`^^e7\active \def^^e7{\cedillaglyph c} +\catcode`^^e8\active \def^^e8{\graveglyph e} +\catcode`^^e9\active \def^^e9{\acuteglyph e} +\catcode`^^ea\active \def^^ea{\circumglyph e} +\catcode`^^eb\active \def^^eb{\twodotsglyph e} +\catcode`^^ec\active \def^^ec{\graveglyph i} +\catcode`^^ed\active \def^^ed{\acuteglyph i} +\catcode`^^ee\active \def^^ee{\circumglyph i} +\catcode`^^ef\active \def^^ef{\twodotsglyph i} +\catcode`^^f1\active \def^^f1{\tildeglyph n} +\catcode`^^f2\active \def^^f2{\graveglyph o} +\catcode`^^f3\active \def^^f3{\acuteglyph o} +\catcode`^^f4\active \def^^f4{\circumglyph o} +\catcode`^^f5\active \def^^f5{\tildeglyph o} +\catcode`^^f6\active \def^^f6{\twodotsglyph o} +\catcode`^^f8\active \let^^f8=\o +\catcode`^^f9\active \def^^f9{\graveglyph u} +\catcode`^^fa\active \def^^fa{\acuteglyph u} +\catcode`^^fb\active \def^^fb{\circumglyph u} +\catcode`^^fc\active \def^^fc{\twodotsglyph u} +\catcode`^^fd\active \def^^fd{\acuteglyph y} +\catcode`^^ff\active \def^^ff{\twodotsglyph y} +\def\ttminus{--{}} +\let\ttcircum=\asciicircum +\let\tttilde=\asciitilde diff --git a/Master/texmf-dist/tex/plain/pdcmac/pdccmdoc.tex b/Master/texmf-dist/tex/plain/pdcmac/pdccmdoc.tex new file mode 100644 index 00000000000..843a8c96361 --- /dev/null +++ b/Master/texmf-dist/tex/plain/pdcmac/pdccmdoc.tex @@ -0,0 +1,64 @@ +% pdccmdoc.tex 1.2 1995/03/30 -- macros for short documents +%%%@TeX-definition-file { +%%% filename = "pdccmdoc.tex", +%%% version = "1.2", +%%% date = "1995/03/30", +%%% package = "pdcmac 1.0", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "TeX, plain TeX, style file", +%%% supported = "Maybe", +%%% abstract = "Top-level macro file for documents set in +%%% Computer Modern fonts. +%%% This macro file was generated by running plain +%%% TeX on pdcsty.dtx", +%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcsty.dtx only as part of the +%%% package it came in.", +%%% dependencies = "pdcfmt2.tex, pdcfsel.tex, pdchyex.tex, +%%% pdcimth.tex, pdccmsub.tex, pdcmigr.tex, +%%% pdcoput5.tex, pdcdoc.def", +%%%} + +\message{1.2 <pdc 1995/03/30>} + +\input pdcimth +\input pdcmigr +\input pdcfmt2 +\input pdchyex +\input pdcoput5 +\input pdcfsel +\input pdccmsub +\autoloadfonts +\def\STYheadingT{% + \m{rm}{cmss}\m{mi}{cmmi}\m{sy}{cmsy}% + \f{it}{cmssi}\f{tt}{cmtt}\f{mf}{logo}\f{mfi}{logosl}% +} +\font\headingrm=cmss17 \font\headingit=cmssi17 +\fontset{subheading}\STYheadingT{10 scaled 1200}{14pt} + {small}{tiny} +\fontset{heading}\STYheadingT{10 scaled 1728}{20pt} + {subheading}{small} +\def\STYbodyT{\m{rm}{cmr}\m{it}{cmti}% + \m{bf}{cmbx}\@\f{bi}{cmbxti10}% + \m{mi}{cmmi}\m{sy}{cmsy}% + \@\f{mf}{logo10}\@\f{mfi}{logosl10}% + \f{tt}{cmtt}\@\f{ttb}{cmsltt10}% +} +\font\tinytt=cmtt8 at 7pt +\font\bodysy=cmsy10 at 12pt +\fontset{tiny}\STYbodyT{7}{9pt}{tiny}{tiny} +\fontset{small}\STYbodyT{9}{11pt}{tiny}{tiny} +\fontset{note}\STYbodyT{10}{12pt}{tiny}{tiny} +\fontset{body}\STYbodyT{12}{14pt}{small}{tiny} +\def\everyloadfont#1#2{\fontdimen3#1=0pt \fontdimen4#1=0pt} +\rightskip=0pt plus 2em \tolerance=1000 +\bodyfonts +{\tt \hyphenchar\font=-1 } +\def\PS{PostScript} +\input pdcdoc.def +\inputifexists{pdccmdoc.cfg} diff --git a/Master/texmf-dist/tex/plain/pdcmac/pdccmlft.tex b/Master/texmf-dist/tex/plain/pdcmac/pdccmlft.tex new file mode 100644 index 00000000000..905b7d04627 --- /dev/null +++ b/Master/texmf-dist/tex/plain/pdcmac/pdccmlft.tex @@ -0,0 +1,64 @@ +% pdccmlft.tex 1.2 1995/03/30 -- macros for short documents +%%%@TeX-definition-file { +%%% filename = "pdccmlft.tex", +%%% version = "1.2", +%%% date = "1995/03/30", +%%% package = "pdcmac 1.0", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "TeX, plain TeX, style file", +%%% supported = "Maybe", +%%% abstract = "Top-level macro file for documents set in +%%% Computer Modern fonts. +%%% This macro file was generated by running plain +%%% TeX on pdcsty.dtx", +%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcsty.dtx only as part of the +%%% package it came in.", +%%% dependencies = "pdcfmt2.tex, pdcfsel.tex, pdchyex.tex, +%%% pdcimth.tex, pdccmsub.tex, pdcmigr.tex, +%%% pdcoput5.tex, pdclft.def", +%%%} + +\message{1.2 <pdc 1995/03/30>} + +\input pdcimth +\input pdcmigr +\input pdcfmt2 +\input pdchyex +\input pdcoput5 +\input pdcfsel +\input pdccmsub +\autoloadfonts +\def\STYheadingT{% + \m{rm}{cmss}\m{mi}{cmmi}\m{sy}{cmsy}% + \f{it}{cmssi}\f{tt}{cmtt}\f{mf}{logo}\f{mfi}{logosl}% +} +\font\headingrm=cmss17 \font\headingit=cmssi17 +\fontset{subheading}\STYheadingT{10 scaled 1200}{14pt} + {small}{tiny} +\fontset{heading}\STYheadingT{10 scaled 1728}{20pt} + {subheading}{small} +\def\STYbodyT{\m{rm}{cmr}\m{it}{cmti}% + \m{bf}{cmbx}\@\f{bi}{cmbxti10}% + \m{mi}{cmmi}\m{sy}{cmsy}% + \@\f{mf}{logo10}\@\f{mfi}{logosl10}% + \f{tt}{cmtt}\@\f{ttb}{cmsltt10}% +} +\font\tinytt=cmtt8 at 7pt +\font\bodysy=cmsy10 at 12pt +\fontset{tiny}\STYbodyT{7}{9pt}{tiny}{tiny} +\fontset{small}\STYbodyT{9}{11pt}{tiny}{tiny} +\fontset{note}\STYbodyT{10}{12pt}{tiny}{tiny} +\fontset{body}\STYbodyT{12}{14pt}{small}{tiny} +\def\everyloadfont#1#2{\fontdimen3#1=0pt \fontdimen4#1=0pt} +\rightskip=0pt plus 2em \tolerance=1000 +\bodyfonts +{\tt \hyphenchar\font=-1 } +\def\PS{PostScript} +\input pdclft.def +\inputifexists{pdccmlft.cfg} diff --git a/Master/texmf-dist/tex/plain/pdcmac/pdccmsub.tex b/Master/texmf-dist/tex/plain/pdcmac/pdccmsub.tex new file mode 100644 index 00000000000..a2712d5c445 --- /dev/null +++ b/Master/texmf-dist/tex/plain/pdcmac/pdccmsub.tex @@ -0,0 +1,70 @@ +% pdcmisc.dtx 1.4 1995/03/30 -- CM subs for PS glyphs +%%%@TeX-definition-file { +%%% filename = "$texmf/tex/plain/pdcmac/pdcmigr.tex", +%%% version = "1.4", +%%% date = "1995/03/30", +%%% package = "pdcmac 1.0", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "TeX, plain TeX, macros", +%%% supported = "Maybe", +%%% abstract = "Macros for simulating some PostScript characters +%%% using glyphs form the Computer Modern family. +%%% This file was generated by running +%%% plain TeX on pdcmisc.dtx", +%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcmisc.dtx only as part of the +%%% package it came in.", +%%% dependencies = "", +%%% } + +\message{1.4 1995/03/30} + +\dimendef\dimena=0 +\def\pounds{{\it\char36 }} +\def\yen{{% + \ooalign{% + \hfil\raise0.25ex\hbox{$\scriptscriptstyle=$}\hfil\crcr + \hfil Y\hfil + }% +}} +\def\cents{\leavevmode\hbox{\rm\rlap/c}} +\def\currency{{% + \ooalign{% + \hskip-0.1em + \raise0.2ex \hbox{\mathhexbox202}\hskip-0.1em\crcr + \hfil \raise0.2ex \hbox{\mathhexbox20E}\hfil + }% +}} +\def\florin{{\it f\/}} +\def\circledletter#1#2{{% + \ooalign{% + \hfil\kern#1\raise0.00ex \hbox{$\scriptstyle\rm #2$}\hfil\crcr + \mathhexbox20D% + }% +}} +\def\registered{\circledletter{0.02em}R} +\def\copyright{\circledletter{-0.045em}C} +\def\lguillemet{% + \leavevmode + \raise0.5ex \hbox{$\scriptscriptstyle\langle\!\langle$}% +} +\def\rguillemet{% + \leavevmode + \raise0.5ex \hbox{$\scriptscriptstyle\rangle\!\rangle$}% +} +\def\permille{{% + \setbox0 \hbox{/}% + \flushtop{$\scriptstyle0\!$}/% + \lower\dp0 \hbox{$\!\scriptstyle00$}% +}} +\def\gbdecimal{\mathhexbox201} +\def\orda{\flushtop{\the\scriptfont\ifnum\fam>0 \fam\else 0\fi \b a}} +\def\ordo{\flushtop{\the\scriptfont\ifnum\fam>0 \fam\else 0\fi \b o}} +\let\sc=\relax +\let\csc=\relax +\let\mc=\relax diff --git a/Master/texmf-dist/tex/plain/pdcmac/pdcdoc.def b/Master/texmf-dist/tex/plain/pdcmac/pdcdoc.def new file mode 100644 index 00000000000..0061070fd79 --- /dev/null +++ b/Master/texmf-dist/tex/plain/pdcmac/pdcdoc.def @@ -0,0 +1,232 @@ +% pdcdoc.def 1.2 1995/03/30 -- macros for short documents +%%%@TeX-definition-file { +%%% filename = "pdcdoc.def", +%%% version = "1.2", +%%% date = "1995/03/30", +%%% package = "pdcmac 1.0", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "TeX, plain TeX, style file", +%%% supported = "Maybe", +%%% abstract = "Sectioning macros for style files. +%%% This macro file was generated by running plain +%%% TeX on pdcsty.dtx", +%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcsty.dtx only as part of the +%%% package it came in.", +%%% dependencies = "" +%%%} + +\message{1.2 <pdc 1995/03/30>} + +\topmg=297mm \advance\topmg-11in \advance\topmg7mm +\botmg=\topmg +\advance\topmg\ht\strutbox \advance\topmg\headlineskip +\ifdim \topmg<20mm \topmg=20mm \fi +\ifdim \botmg<27mm \botmg=27mm \fi +\setpaper{210mm}{297mm} +\setnkgrid{4}{3} +\colrule=0pt +\leftmargin=\gridwd \advance\leftmargin\colsep +\everypage={\ifdim\leftmargin>0pt + \setbox\leftbox=\hbox to \gridwd{}\fi} +\everyfootnote={\notefonts} +\everylinenum={\smallfonts} +\everylinenum={\smallfonts} +\everytag={\bf} +\newcount\partno +\def\thepartno{% + \ifcase\partno O\or I\or II\or III\or IV\or V\else + \expandafter\uppercase\expandafter{\romannumeral\partno}% + \fi +} +\newcount\secno \newcount\subsecno \newcount\subsubsecno +\def\thesecno{% + \n{% + \number\secno + \ifnum\subsecno>0 + .\number\subsecno + \ifnum\subsubsecno>0 + .\number\subsubsecno + \fi + \fi + }% +} +\newtoks\majorheadline +\expandafter\majorheadline + \expandafter{\expandafter\uppercase\expandafter{\jobname}} +\def\part#1{% + \global\advance\partno1 + \newpageheading{2\baselineskip}{\headingfonts} + {}{\thepartno.\quad#1} + \TOCwrite\TOCentrypart{\thepartno}{#1} +} +\newcount\sectionpenalty +\def\sectionheading#1{ + \par + \vskip 0pt plus 0.3\vsize + \penalty\sectionpenalty \sectionpenalty-200 + \vskip 1\bigskipamount plus -0.3\vsize + \begingroup \advance\leftskip-\leftmargin + \parskip=0pt \parindent=0pt + \hyphenpenalty=10000 \exhyphenpenalty=500 + \interlinepenalty=100 + \headingfonts \nointerlineskip + \hbox{\hskip-\leftmargin + \vrule height 2pt depth 0pt width \leftmargin + \vrule height 2pt depth 0pt width \hsize} + #1\par + \nobreak\smallskip + \endgroup + \global\noindenttrue +} +\newtoks\sectiontoks +\newif\ifsecno \secnotrue +\def\section#1{ + \ifsecno + \global\advance\secno1 \global\subsecno0 \global\subsubsecno0 + \fi + \toks0={#1} + \mark{{\the\sectiontoks}{\ifsecno\S\thesecno\space\fi\the\toks0 }} + \edef\tmp{\ifsecno\noexpand\S\the\secno\space\fi} + \global\sectiontoks\expandafter{\tmp#1} + \sectionheading{\ifsecno\thesecno\quad\fi #1} + \mark{{\the\sectiontoks}{\the\sectiontoks}} + \TOCwrite\TOCentrysection{\ifsecno\thesecno\fi}{#1} +} +\def\subsec#1{% + \ifsecno \global\advance\subsecno1 \global\subsubsecno0 \fi + \doheading\medskipamount{\subheadingfonts}{} + {\ifsecno\thesecno\quad\fi#1} + \TOCwrite\TOCentrysubsec{\ifsecno\thesecno\fi}{#1} +} +\def\subsubsec#1{% + \ifsecno \global\advance\subsubsecno+1 \fi + \doheading\smallskipamount{\rm}{}{\ifsecno\thesecno\quad\fi#1} + \TOCwrite\TOCentrysubsubsec{\ifsecno\thesecno\fi}{#1} +} +\newif\ifnoheadline +\newif\iftwosided +\footline={% + \ifnoheadline + \global\noheadlinefalse + \hfil\bodyfonts\n\folio\hfil + \else + \hfil + \fi +} +\headline={% + \ifnoheadline + \hfil + \else + \bodyfonts + \iftwosided + \ifodd\pageno + \hfil + \expandafter\firstoftwo\botmark\quad + {\bf\n\folio}% + \else + {\bf\n\folio}\quad + \the\majorheadline + \hfil + \fi + \else + \the\majorheadline + \hfil + \expandafter\secondoftwo\topmark\quad + {\bf\n\folio}% + \fi + \fi +} +\def\firstoftwo#1#2{#1} +\def\secondoftwo#1{} +\newwrite\TOCfile +\openout\TOCfile=\jobname.toc +\def\TOCwrite#1#2#3{% + \begingroup\def\n{\string\n} + \def\tmp{#3}% + \edef\tmp{\string#1{#2}{\expandafter\TOCtrim\meaning\tmp}} + \write\TOCfile\expandafter{\tmp{\folio}}\endgroup +} +\def\TOCtrim#1:->{} +\def\TOCentrypart#1#2#3{ + \smallskip + \dimen0=\hsize \advance\dimen0\leftmargin + \moveleft\leftmargin\hbox to\dimen0{\strut\bf #1. #2\hfil} + \smallskip +} +\def\TOCentrysection#1#2#3{ + \smallskip\noindent\llap{#1\kern1pc}% + {\bf \ignorespaces #2\quad\rm \n{#3}}\par +} +\def\TOCentrysubsec#1#2#3{ + \ifvmode \noindent \else \quad \fi + {#1}~{\ignorespaces #2} +} +\def\TOCentrysubsubsec#1#2#3{} +\def\frontmatter{ + \write\TOCfile{\string\endinput} + \write\TOCfile{\folio} + \closeout\TOCfile + \vfill\supereject + \ifvoid\partialpage\else \null\vfill\eject \fi + \beginthe{frontmatter} + \pageno=-1 \secnofalse \noheadlinetrue + \def\TOCwrite##1##2##3{} +} +\def\endfrontmatter{ + \section{Contents} + \input\jobname.toc + \vfill\supereject + \endthe{frontmatter} +} +\def\titlepage{ + \vfill\eject + \beginthe{titlepage} + \noheadlinetrue + \def\splittitlepage{ + \iftwosided \vfill\eject\null\vfill \else \vfill \fi + } +} +\def\endtitlepage{ + \eject + \endthe{titlepage} +} +\def\abstract{ + \smallskip + \beginthe{abstract} + \setbox\parbox\hbox to \gridwd{\subheadingfonts Abstract\hfil} + \noindenttrue \bodyfonts +} +\def\endabstract{ + \smallskip + \endthe{abstract} +} +\def\pt{\,{\rm pt}} +\def\mm{\,{\rm mm}} +\def\MF{{\ifdim\fontdimen1\font>0pt \mfi \else \mf \fi META}\-% + {\ifdim\fontdimen1\font>0pt \mfi \else \mf \fi FONT}} +\def\MSDOS{\leavevmode\hbox{MS-DOS}} +\def\TeX{T\kern-0.1em\lower0.5ex\hbox{E}X\spacefactor1000 } +\begingroup\catcode`\|=12 \toks0={\endgroup + \def\dfn#1{\ifx\index\UNDEFINED\else\index{#1|INDdfn}\fi{\bi #1}} +} \the\toks0 +\declareactivechar\* \def*#1*{{\it#1\/}} +\def\|{% + \relax\ifmmode + \Vert + \else + \begingroup + \ttb \setupverbatim + \catcode`\|=13 \let|\endgroup + \fi +} +\def\inputifexists#1{% + \openin15=#1 + \ifeof15 \else \input #1 \fi + \closein15 +} diff --git a/Master/texmf-dist/tex/plain/pdcmac/pdcfmt2.tex b/Master/texmf-dist/tex/plain/pdcmac/pdcfmt2.tex new file mode 100644 index 00000000000..a7d81d4b601 --- /dev/null +++ b/Master/texmf-dist/tex/plain/pdcmac/pdcfmt2.tex @@ -0,0 +1,398 @@ +% pdcfmt2.tex 2.4 1995/04/06 -- macros for formatting + +%%%@TeX-definition-file { +%%% filename = "$texmf/tex/plain/pdcmac/pdcfmt2.tex", +%%% version = "2.4", +%%% date = "1995/04/06", +%%% package = "pdcmac 1.0", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "TeX, plain TeX, macros", +%%% supported = "Maybe", +%%% abstract = "Formatting macros for plain TeX documents. +%%% This file was generated by running +%%% plain TeX on pdcfmt2.dtx", +%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcfmt2.dtx only as part of the +%%% package it came in.", +%%% dependencies = "", +%%% } + +\message{2.4 <pdc 1995/04/06>} + +\toksdef\toksa=0 +\chardef\other=12 +\def\declareactivechar#1{% + \toksa\expandafter{\verbatimplains\do#1}% + \edef\verbatimplains{\the\toksa }% + \catcode`#1\active +} +\def\verbatimplains{\do\\\do\{\do\}\do\_\do\$\do\#\do\&\do\%} +\def\verbatimactives{\do\-\do\`\do\'\do\~\do\^\do\ } +\chardef\other=12 +\newtoks\everyverbatim +\bgroup \catcode`\-=13\catcode`\^=13 \catcode`\'=13 \catcode`\`=13 \toksa={\egroup + \def\setupverbatim{% + \frenchspacing + \spaceskip0pt \xspaceskip0pt % use spacing of font + \def\do##1{\catcode\lq##112 }\verbatimplains + \def\do##1{\catcode\lq##1\active }\verbatimactives + \let`\ttlq \let'\ttrq + \let~\tttilde \let^\ttcircum \let-\ttminus + \the\everyverbatim + } +}\the\toksa +\def\ttlq{\lower0.125ex \hbox{\char18 }} +\def\ttrq{\lower0.125ex \hbox{\char19 }} +\def\tttilde{\lower0.5ex \hbox{\char`\~ }} +\def\ttcircum{\lower0.5ex \hbox{\char`\^ }} +\def\ttminus{-} +\def\defverbatim#1{% + \ifcat\noexpand#1\noexpand~\else \declareactivechar#1 \fi + \begingroup \uccode`\~=`#1 \uppercase{\toksa={\endgroup + \def~{% + \leavevmode + \begingroup \tt \setupverbatim + \catcode`#1\active \let~\endgroup + }% + }}\the\toksa +} +\defverbatim\| +\newtoks\everylisting +\def\listfile#1{ + \medskip + \begingroup + \parindent=0pt \parskip=0pt + \def\par{\null\endgraf}\obeylines + \setupverbatim \maketabstab + \tt \the\everylisting + \input#1 + \endgroup + \medskip\noindent\ignorespaces +} +{\catcode`\^^I=\active + \gdef\maketabstab{\catcode`\^^I\active \def^^I{\hskip 4em}} +} +\newif\ifnoindent +\newbox\parbox +\newdimen\parboxsep \parboxsep=1pc +\everypar={% + \ifvoid\parbox + \ifnoindent {\setbox0=\lastbox}\global\noindentfalse \fi + \else + {\setbox0=\lastbox}\global\noindentfalse + \dp\parbox=0pt + \hbox to 0pt{\hss \box\parbox \hskip\parboxsep}% + \fi +} +\def\beginthe#1{% + \begingroup\def\PDCFMTblockname{#1}% +} +\def\endthe#1{% + \def\tmp{#1}% + \ifx\tmp\PDCFMTblockname + \endgroup + \else + \errmessage{You should have said \string\endthe{\blockname}}% + \fi +} +\def\PDCFMTendenv#1{ + \smallskip + \endthe{#1} + \global\noindenttrue +} +\newdimen\envindent \envindent=1pc +\def\PDCFMTindent{% + \ifdim\parindent>0pt + \parindent + \else + \envindent + \fi +} +\newtoks\everyquotation +\def\quotation{ + \smallskip + \beginthe{quotation} + \advance\leftskip\PDCFMTindent + \noindenttrue + \the\everyquotation +} +\def\endquotation{\PDCFMTendenv{quotation}} +\newtoks\everytextlist +\newif\ifnumbered +\newcount\textlistdepth \textlistdepth=-1 +\newcount\textlistcount +\def\textlist{% + \par + \beginthe{textlist} + \advance\textlistdepth 1 + \textlistcount0 + \def\\{ + \smallskip\noindent + \advance\textlistcount1 + \llap{% + \ifnumbered + \numberfordepth\textlistdepth\textlistcount + \else + \bulletfordepth\textlistdepth + \fi\enspace}% + \ignorespaces + } + \advance\leftskip\PDCFMTindent + \the\everytextlist +} +\def\endtextlist{\PDCFMTendenv{textlist}} +\newtoks\everybullets +\def\bullets{\textlist \numberedfalse \the\everybullets} +\let\endbullets=\endtextlist +\def\bulletfordepth#1{% + \ifcase#1 $\bullet$\or --\or $\circ$\else $\cdot$\fi +} +\newtoks\everynumbered +\def\numbered{\textlist \numberedtrue \the\everynumbered} +\let\endnumbered=\endtextlist +\def\numberfordepth#1#2{% + \ifcase#1 \n{\number#2}.\or (\n{\number#2})\or + ({\it\alphabetletter#2\/})\else (\romannumeral#2)\fi +} +\let\n\relax +\def\alphabetletter#1{% + \ifcase#1 ??? \or a\or b\or c\or d\or e\else + \xxxalphabetletter#1\fi +} +\def\xxxalphabetletter#1{% + \ifcase#1 \or\or\or\or\or\or f\or g\or h\or i\or j\or + k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or + v\or w\or x\or y\or z\else !!!\fi +} +\newdimen\tagmaxwidth +\newtoks\everytagged +\def\tagged{% + \par + \beginthe{tagged} + \let\\\TAG + \ifdim\leftmargin=0pt + \tagmaxwidth\PDCFMTindent + \else + \tagmaxwidth\leftmargin + \fi + \the\everytagged + \ifdim\tagmaxwidth>\leftmargin + \leftskip\tagmaxwidth \advance\leftskip-\leftmargin + \fi +} +\def\endtagged{\PDCFMTendenv{tagged}} +\newtoks\everytag +\def\TAG{% + \smallskip\noindent + \setbox0=\hbox\bgroup % matched by \TAGfinish + \the\everytag\ignorespaces + \futurelet\next\TAGtest +} +\def\TAGtest{% + \ifcat\bgroup\noexpand\next + \let\next\TAGgotbrace + \else + \let\next\TAGnobrace + \fi \next +} +\def\TAGgotbrace{% + \bgroup\aftergroup\TAGfinish + \let\next +} +\def\TAGnobrace#1{% + #1\TAGfinish +} +\def\TAGfinish{% + \unskip\hskip0.5em\egroup % matches \TAG + \ifdim \wd0 < \tagmaxwidth + \wd0=\tagmaxwidth + \llap{\box0}% + \else + \hskip-\tagmaxwidth + \unhbox0 \unskip\quad + \fi + \ignorespaces +} +\newtoks\everylines +\def\lines{ + \par + \beginthe{lines} + \nobreak\smallskip\hrule\nobreak\smallskip + \obeylines + \parindent=0pt \parskip=0pt + \parfillskip=0pt plus 1fil + \the\everylines + \nobreak +} +\def\endlines{ + \nobreak\smallskip + \endthe{lines} + \hrule\smallskip + \global\noindenttrue +} +\newcount\linenumber +\newcount\PDCFMTcount +\def\startlinenumbering{% + \global\linenumber=0 \global\PDCFMTcount=5 + \everypar{\numberthisline}% +} +\def\continuelinenumbering{% + \everypar{\numberthisline}% +} +\newtoks\everylinenum \everylinenum{\the\scriptfont0 } +\def\numberthisline{% + \strut + \global\advance\linenumber1 \global\advance\PDCFMTcount-1 + \ifnum\PDCFMTcount>0 \else + \global\advance\PDCFMTcount 5 + \rlap{\the\everylinenum \kern\hsize\kern1em \the\linenumber}% + \fi +}% +\def\linesskipped#1{% + \strut \hskip20pt $\vdots$ \hskip20pt + {\rm(\it #1 lines omitted\rm)}\par + \advance\linenumber#1\relax +} +\outer\def\display{\obeylines\startdisplay} +\bgroup\obeylines \toksa={\egroup % + \def\startdisplay#1^^M{% + \catcode`\^^M=5 $$ #1 % matched by \enddisplay + \displayindent\PDCFMTindent % + \halign\bgroup##\hfil&&\quad##\hfil\cr % + } % +}\the\toksa % +\def\enddisplay{\crcr\egroup$$} +\def\table{% + $$ % matching $$ is in \endtable + \displayindent\PDCFMTindent + \halign \bgroup +} +\let\endtable=\enddisplay +\newtoks\everybnf +\def\bnf{ + \nobreak\smallskip + \beginthe{bnf} + \advance\leftskip2\parindent \parindent=-\parindent + \parskip0pt plus 1pt + \rightskip=1\rightskip plus 3em + \def\\{$\mid$} + \def\>{\unskip\enspace$::=$\enspace\ignorespaces} + \def|{`\begingroup\tt\setupverbatim\catcode`\|=13 + \def|{\endgroup'}} + \def\{{$\lbrace$} \def\}{$\rbrace$} + \the\everybnf +} +\def\endbnf{ + \smallskip + \endthe{bnf} + \global\noindenttrue +} +\def\<#1>{\leavevmode\hbox{$\langle${\it#1\/}$\rangle$}} +\newdimen\leftmargin +\newskip\headingtemp +\def\doheading#1#2#3#4{ + \ifdim\lastskip<#1\relax \removelastskip \vskip#1\relax \fi + \ifdim \leftmargin>0pt + \global\setbox\parbox=\vtop{% + \hsize=\leftmargin \advance\hsize-\parboxsep + \parindent=0pt + \leftskip=0pt \rightskip=0pt plus 3em + \hyphenpenalty=10000 \exhyphenpenalty=5000 + \strut#2#4#3 + } + \else + \begingroup + \parindent=0pt \parfillskip=0pt plus 1fil + \leftskip=0pt \rightskip=0pt plus0.25\hsize + \hyphenpenalty=10000 \exhyphenpenalty=5000 + \strut#2#4#3 + \global\headingtemp=\baselineskip + \par + \endgroup + \advance\headingtemp-\baselineskip + \ifdim\headingtemp>0pt \nobreak \vskip 1.0\headingtemp \fi + \smallskip + \noindenttrue + \fi +} +\def\newpageheading#1#2#3#4{ + \vfill\supereject % ensure no insertions still floating + \null\vskip#1\relax + \moveleft\leftmargin\vbox{ + \advance\hsize\leftmargin + \parindent=0pt \parfillskip=0pt plus 1fil + \leftskip=0pt \rightskip=0pt plus0.25\hsize + \hyphenpenalty=10000 \exhyphenpenalty=5000 + #2\strut#4#3 + \global\headingtemp=\baselineskip + \par + } + \advance\headingtemp-\baselineskip + \advance\headingtemp\smallskipamount + \vskip \headingtemp + \noindenttrue + \def\tmp{#4} + \message{*\expandafter\TOCtrim\meaning\tmp. } +} +\newcount\notecount +\def\note{% + \global\advance\notecount+1 + \footnote{\number\notecount}% +} +\newdimen\footnoteparindent +\footnoteparindent=\parindent +\newtoks\everyfootnote +\catcode`\@=11 +\def\footnote#1{\let\@sf\empty + \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi + \footnotetextmark{#1}\@sf\vfootnote{#1}} +\def\vfootnote#1{\insert\footins\bgroup % matched by \@foot + \interlinepenalty=\interfootnotelinepenalty + \parindent=\footnoteparindent + \leftskip=0pt + \the\everyfootnote + \splittopskip=\ht\strutbox \splitmaxdepth=\dp\strutbox + \floatingpenalty=20000 + \indent\footstrut + \ifdim\parindent>1em + \llap{\footnotenotemark{#1}\enspace}% + \else + \footnotenotemark{#1}\enspace + \fi + \futurelet\next\fo@t +} +\def\@foot{\smallskip\egroup} +\catcode`\@=12 +\def\footnotetextmark#1{$^{#1}$} +\def\footnotenotemark#1{$^{#1}$} +\def\today{\n{\number\day} \monthname\month\ \n{\number\year}} +\def\monthname#1{% + \ifcase#1\or + January\or February\or March\or April\or + May\or June\or July\or August\or + September\or October\or November\or December% + \fi +} +\def\isodate{\n{\number\year}--\twodigits\month--\twodigits\day} +\def\twodigits#1{% + \ifnum#1<10 0\fi \number#1% +} +\def\flushtop#1{% + \leavevmode + \begingroup + \setbox0\hbox{#1}\setbox2\hbox{X}% + \dimen0\ht2 \advance\dimen0-\ht0 + \raise\dimen0\box0 + \endgroup +} +\def\La{L\negthinspace\flushtop{a}} +\def\LaTeX{\La\TeX} +\def\superiorletter#1{% + \flushtop{\the\scriptfont\fam \vphantom{x}\smash{#1}}% +} +\def\Mc{M\flushtop{\the\scriptfont\fam \b{c}}} diff --git a/Master/texmf-dist/tex/plain/pdcmac/pdcfsel.tex b/Master/texmf-dist/tex/plain/pdcmac/pdcfsel.tex new file mode 100644 index 00000000000..3b68aada1ab --- /dev/null +++ b/Master/texmf-dist/tex/plain/pdcmac/pdcfsel.tex @@ -0,0 +1,110 @@ +% pdcfsel.tex -- macros for loading fonts -*-tex-*- + +%%%@TeX-document-file { +%%% title = "PDC Font Selection Scheme", +%%% filename = "$texmf/tex/plain/pdcmac/pdcfsel.tex", +%%% version = "3.5", +%%% Date = "1995/03/28", +%%% creator = "pdcfsel.dtx", +%%% package = "pdcmac 1.0", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory," +%%% Parks Road, Oxford OX1 3QD, UK", +%%% abstract = "A file of definitions for managing font +%%% selection in documents based on the plain +%%% TeX macros. +%%% This file was generated by running +%%% plain TeX on pdcfsel.dtx.", +%%% dependencies = "" +%%%} + +\message{3.5 <pdc 1995/03/28>} +\def\expcs#1#2{\expandafter#1\csname#2\endcsname} +\def\noexpcs{\expcs\noexpand} +\newif\ifFSELautoload +\def\autoloadfonts{ + \FSELautoloadtrue + \csname newwrite\endcsname \FSELfile + \immediate\openout\FSELfile=\jobname.fnt +} +\def\loadfont#1#2{% + \ifx#1\relax + \FSELloadfont#1{#2}% + \else\ifx#1\UNDEFINED + \FSELloadfont#1{#2}% + \fi\fi +} +\def\FSELloadfont#1#2{% + \ifFSELautoload + \edef#1{% + \write\FSELfile{#2}% + \def\noexpand\subfont{\global\font\noexpand#1cmr10 }% + \global\font\noexpand#1#2\relax + \noexpand\everyloadfont\noexpand#1{#2}% + \noexpand#1% + }% + \else + \global\font#1#2\relax \everyloadfont#1{#2}% + \fi +} +\def\everyloadfont#1#2{} +\def\xfontset#1#2#3{ + \def\f##1##2{\expcs\loadfont{#1##1}{##2#3}} + \let\m=\f \let\M=\f + \def\@##1##2##3{\expcs\loadfont{#1##2}{##3 at #3pt }} + #2 +} +% Set up a fontset -- define \#1fonts +\def\fontset#1#2#3#4#5#6{% + \xfontset{#1}{#2}{#3}% + \expcs\edef{#1fonts}{% + \ifFSELautoload \noexpcs{#1mathsfonts}\fi + \noexpand\FSELnicknames{#1}{#5}{#6}\noexpand#2% + \noexpand\setbaselineskip{#4}% + \noexpand\rm + }% + \ifFSELautoload + \expcs\def{#1mathsfonts}{\FSELloadmaths{#1}{#5}{#6}#2}% + \fi +} +\def\FSELnicknames#1#2#3{% + \let\@\relax + \def\f##1##2{% + \expcs\edef{##1}{\noexpcs{#1##1}}% + }% + \def\m##1##2{% + \expcs\textfont{##1fam}\csname#1##1\endcsname + \expcs\scriptfont{##1fam}\csname#2##1\endcsname + \expcs\edef{##1}{% + \fam\expcs\noexpand{##1fam}% + \expcs\noexpand{#1##1}% + }% + }% + \def\M##1{% + \expcs\scriptscriptfont{##1fam}\csname#3##1\endcsname + \m{##1}% + }% +} +\def\setbaselineskip#1{% + \baselineskip#1\relax \normalbaselineskip\baselineskip + \jot0.25\baselineskip + \smallskipamount 0.25\baselineskip plus 0.083\baselineskip + minus 0.083\baselineskip + \medskipamount 0.5\baselineskip plus 0.167\baselineskip + minus 0.167\baselineskip + \bigskipamount 1\baselineskip plus 0.333\baselineskip + minus 0.333\baselineskip + \abovedisplayskip\medskipamount + \abovedisplayshortskip\abovedisplayskip + \advance\abovedisplayshortskip-1\abovedisplayskip + \belowdisplayskip\medskipamount + \belowdisplayshortskip\smallskipamount +} +\def\FSELloadmaths#1#2#3{% + \let\@\relax \def\f##1##2{}% + \def\m##1##2{\csname#1##1\endcsname \csname#2##1\endcsname}% + \def\M##1{\csname#3##1\endcsname \m{##1}}% + \global\expcs\let{#1mathsfonts}\relax +} +\chardef\rmfam=0 \chardef\mifam=1 \chardef\syfam=2 diff --git a/Master/texmf-dist/tex/plain/pdcmac/pdchyex.tex b/Master/texmf-dist/tex/plain/pdcmac/pdchyex.tex new file mode 100644 index 00000000000..a83c61b95e6 --- /dev/null +++ b/Master/texmf-dist/tex/plain/pdcmac/pdchyex.tex @@ -0,0 +1,56 @@ +% pdchyex.tex 1.4 1995/03/30 -- some British hyphenations +%%%@TeX-definition-file { +%%% filename = "$texmf/tex/plain/pdcmac/pdchyex.tex", +%%% version = "1.4", +%%% date = "1995/03/30", +%%% package = "pdcmac 1.0", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "TeX, plain TeX, macros", +%%% supported = "Maybe", +%%% abstract = "A non-exhaustive set of hyphenation exceptions +%%% designed to make TeX with American hyphenation +%%% tables produce some British hyphenations. +%%% This file was generated by running +%%% plain TeX on pdcmisc.dtx", +%%% copyright = "Copyright (c) 1991, 1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcmisc.dtx only as part of the +%%% package it came in.", +%%% dependencies = "", +%%%} + +\message{1.4 <pdc 1995/03/30>} + +\lefthyphenmin=2 \righthyphenmin=3 \uchyph=0 +\hyphenation{ + le-gend le-gends re-adjust re-appear exact-ing + abs-cess abs-cess-es abs-cessed ana-lyse ana-lyses + ana-lysis ana-lyses appear-ance appear-ances bio-graphy + celeb-rate celeb-rates celeb-rations cor-respond-ence + depend-ent des-pise des-pises dis-pised dimin-ish + dimin-ish-es dimin-ish-ed dis-connect dis-connect-ed + dis-connects forget-ting gener-ally haemor-rhage + illus-trate immedi-ate immedi-ately immport-ance + inexplic-able inter-pret inter-est inter-ested + inter-est-ing minis-ter origin-ally philo-sophy + philo-sophic philo-sophic-ally prim-ary prob-ably + semb-lance + calm-est debt-ors fea-ther fea-thers post-humous lamb-like + poingn-ant tough-ish ach-ing archaeo-logy etymo-logy + philo-logist psycho-logist tauto-logy zoolo-gist + art-iest cig-ar-ette bio-logy bio-chem-is-try boy-friend + brit-ain brit-ish com-ic com-ics cug-ley dogs-body + dor-mouse gai-man graph-ic immedie-ate immedi-ate + immedi-ately issue mckean mis-hap mis-haps news-letter + news-paper night-crawler origin-ally origin-ator phys-ique + phys-iques porn-o-graphy porn-o-graphic rec-om-mend-ation + Ser-geant ser-geant Sien-kie-wicz spon-tan-e-ous + spon-tan-e-ously stop-ped strip-ped teen-ager teen-agers + tem-per-men-tal Thatch-er-ism Thatch-er-ite under-ground + under-grounds var-i-able venge-ance warp-smith warp-smiths + whirl-pool +} diff --git a/Master/texmf-dist/tex/plain/pdcmac/pdcimth.tex b/Master/texmf-dist/tex/plain/pdcmac/pdcimth.tex new file mode 100644 index 00000000000..fc42eb8365a --- /dev/null +++ b/Master/texmf-dist/tex/plain/pdcmac/pdcimth.tex @@ -0,0 +1,39 @@ +% pdcimth.tex 1.4 1995/03/30 - maths letters in text italic +\message{1.4 1995/03/30} + +\begingroup + \count0="7400 \count1=\count0 + \advance\count0 by`A \advance\count1 by`a + \count2=`A \count3=`a \count4=26 + \loop\ifnum\count4>0 + \advance\count4 by-1 + \global\mathcode\count2=\count0 + \global\mathcode\count3=\count1 + \advance\count0 by1 \advance\count1 by1 + \advance\count2 by1 \advance\count3 by1 + \repeat +\endgroup +\endinput +%%%@TeX-definition-file { +%%% filename = "$texmf/tex/plain/pdcmac/pdcimth.tex", +%%% version = "1.4", +%%% date = "1995/03/30", +%%% package = "pdcmac 1.0", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "TeX, plain TeX, macros", +%%% supported = "Maybe", +%%% abstract = "A definition file for TeX, which redefines +%%% mathcodes to use letters from the +%%% text italic font instead of math italic. +%%% This file was generated by running +%%% plain TeX on pdcmisc.dtx", +%%% copyright = "Copyright (c) 1991, 1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcmisc.dtx only as part of the +%%% package it came in.", +%%% dependencies = "", +%%% } diff --git a/Master/texmf-dist/tex/plain/pdcmac/pdcl1maa.tex b/Master/texmf-dist/tex/plain/pdcmac/pdcl1maa.tex new file mode 100644 index 00000000000..17f690c48d5 --- /dev/null +++ b/Master/texmf-dist/tex/plain/pdcmac/pdcl1maa.tex @@ -0,0 +1,117 @@ +% pdcl1maa.tex 1.3 1995/03/30 -- Latin-1 chars in Malvern-A + +%%%@TeX-definition-file { +%%% filename = "$texmf/tex/plain/pdcmac/pdcl1maa.tex", +%%% version = "1.3", +%%% date = "1995/03/30", +%%% package = "pdcmac 1.0", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "TeX, plain TeX, macros", +%%% supported = "Maybe", +%%% abstract = "ISO 8859-1 characters using Malvern-A fonts. +%%% This file was generated by running +%%% plain TeX on pdcl1maa.dtx", +%%% copyright = "Copyright (c) 1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcl1maa.dtx only as part of the +%%% package it came in.", +%%% dependencies = "", +%%% } + +\message{1.3 <pdc 1995/03/30>} + +\catcode`^^a0\active \let^^a0=~ +\catcode`^^a5\active \let^^a5=\yen +\catcode`^^a7\active \let^^a7=\S +\catcode`^^a8\active \let^^a8=\" +\catcode`^^a9\active \let^^a9=\copyright +\catcode`^^aa\active \let^^aa=\orda +\catcode`^^ab\active \def^^ab{<<} +\catcode`^^ac\active \let^^ac=\lnot +\catcode`^^ad\active \let^^ad=\- +\catcode`^^ae\active \let^^ae=\registered +\catcode`^^af\active \let^^af=\= +\catcode`^^b0\active \let^^b0=\degrees +\catcode`^^b1\active \let^^b1=\pm +\catcode`^^b2\active \def^^b2{^2} +\catcode`^^b3\active \def^^b3{^3} +\catcode`^^b4\active \let^^b4=\' +\catcode`^^b5\active \let^^b5=\mu +\catcode`^^b6\active \let^^b6=\P +\catcode`^^b7\active \let^^b7=\gbdecimal +\catcode`^^b8\active \let^^b8=\c +\catcode`^^b9\active \def^^b9{^1} +\catcode`^^ba\active \let^^ba=\ordo +\catcode`^^bb\active \def^^bb{>>} +\catcode`^^bc\active \def^^bc{\frac14} +\catcode`^^bd\active \def^^bd{\frac12} +\catcode`^^be\active \def^^be{\frac34} +\catcode`^^bf\active \def^^bf{?`} +\catcode`^^d7\active \let^^d7=\times +\catcode`^^f7\active \let^^f7=\div +\catcode`^^c0\active \def^^c0{\`A} +\catcode`^^c1\active \def^^c1{\'A} +\catcode`^^c2\active \def^^c2{\^A} +\catcode`^^c3\active \def^^c3{\~A} +\catcode`^^c4\active \def^^c4{\"A} +\catcode`^^c5\active \let^^c5=\AA +\catcode`^^c6\active \let^^c6=\AE +\catcode`^^c7\active \def^^c7{\c C} +\catcode`^^c8\active \def^^c8{\`E} +\catcode`^^c9\active \def^^c9{\'E} +\catcode`^^ca\active \def^^ca{\^E} +\catcode`^^cb\active \def^^cb{\"E} +\catcode`^^cc\active \def^^cc{\`I} +\catcode`^^cd\active \def^^cd{\'I} +\catcode`^^ce\active \def^^ce{\^I} +\catcode`^^cf\active \def^^cf{\"I} +\catcode`^^d0\active \let^^d0=\DH +\catcode`^^d1\active \def^^d1{\~N} +\catcode`^^d2\active \def^^d2{\`O} +\catcode`^^d3\active \def^^d3{\'O} +\catcode`^^d4\active \def^^d4{\^O} +\catcode`^^d5\active \def^^d5{\~O} +\catcode`^^d6\active \def^^d6{\"O} +\catcode`^^d8\active \let^^d8=\O +\catcode`^^d9\active \def^^d9{\`U} +\catcode`^^da\active \def^^da{\'U} +\catcode`^^db\active \def^^db{\^U} +\catcode`^^dc\active \def^^dc{\"U} +\catcode`^^dd\active \def^^dd{\'Y} +\catcode`^^de\active \let^^de=\TH +\catcode`^^df\active \let^^df=\ss +\catcode`^^e0\active \def^^e0{\'a} +\catcode`^^e1\active \def^^e1{\`a} +\catcode`^^e2\active \def^^e2{\^a} +\catcode`^^e3\active \def^^e3{\~a} +\catcode`^^e4\active \def^^e4{\"a} +\catcode`^^e5\active \let^^e5=\aa +\catcode`^^e6\active \let^^e6=\ae +\catcode`^^e7\active \def^^e7{\c c} +\catcode`^^e8\active \def^^e8{\`e} +\catcode`^^e9\active \def^^e9{\'e} +\catcode`^^ea\active \def^^ea{\^e} +\catcode`^^eb\active \def^^eb{\"e} +\catcode`^^ec\active \def^^ec{\`i} +\catcode`^^ed\active \def^^ed{\'i} +\catcode`^^ee\active \def^^ee{\^i} +\catcode`^^ef\active \def^^ef{\"i} +\catcode`^^f0\active \let^^f0=\dh +\catcode`^^f1\active \def^^f1{\~n} +\catcode`^^f2\active \def^^f2{\`o} +\catcode`^^f3\active \def^^f3{\'o} +\catcode`^^f4\active \def^^f4{\^o} +\catcode`^^f5\active \def^^f5{\~o} +\catcode`^^f6\active \def^^f6{\"o} +\catcode`^^f8\active \let^^f8=\o +\catcode`^^f9\active \def^^f9{\`u} +\catcode`^^fa\active \def^^fa{\'u} +\catcode`^^fb\active \def^^fb{\^u} +\catcode`^^fc\active \def^^fc{\"u} +\catcode`^^fd\active \def^^fd{\'y} +\catcode`^^fe\active \let^^fe=\th +\catcode`^^ff\active \def^^ff{\"y} diff --git a/Master/texmf-dist/tex/plain/pdcmac/pdclft.def b/Master/texmf-dist/tex/plain/pdcmac/pdclft.def new file mode 100644 index 00000000000..7ccd9172b55 --- /dev/null +++ b/Master/texmf-dist/tex/plain/pdcmac/pdclft.def @@ -0,0 +1,106 @@ +% pdclft.def 1.2 1995/03/30 -- macros for short documents +%%%@TeX-definition-file { +%%% filename = "pdclft.def", +%%% version = "1.2", +%%% date = "1995/03/30", +%%% package = "pdcmac 1.0", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "TeX, plain TeX, style file", +%%% supported = "Maybe", +%%% abstract = "Sectioning macros for style files. +%%% This macro file was generated by running plain +%%% TeX on pdcsty.dtx", +%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcsty.dtx only as part of the +%%% package it came in.", +%%% dependencies = "" +%%%} + +\message{1.2 <pdc 1995/03/30>} + +\topmg=297mm \advance\topmg-11in \advance\topmg7mm +\botmg=\topmg +\advance\topmg\ht\strutbox \advance\topmg\headlineskip +\ifdim \topmg<20mm \topmg=20mm \fi +\ifdim \botmg<27mm \botmg=27mm \fi +\setpaper{210mm}{297mm} +\setnkgrid{4}{3} +\colrule=0pt +\leftmargin=\gridwd \advance\leftmargin\colsep +\everypage={\ifdim\leftmargin>0pt + \setbox\leftbox=\hbox to \gridwd{}\fi} +\everyfootnote={\notefonts} +\everylinenum={\smallfonts} +\everylinenum={\smallfonts} +\everytag={\bf} +\newcount\secno \newcount\subsecno +\def\thesecno{% + \n{% + \number\secno + \ifnum\subsecno>0 + .\number\subsecno + \fi + }% +} +\def\section{ + \global\advance\secno1 \global\subsecno0 + \doheading\medskipamount{\subheadingfonts\thesecno\enspace}{} +} +\def\subsec{ + \global\advance\subsecno1 + \doheading\smallskipamount{\bodyfonts\thesecno\enspace}{} +} +\newtoks\majorheadline +\expandafter\majorheadline + \expandafter{\expandafter\uppercase\expandafter{\jobname}} +\newif\ifnoheadline \newif\iftwosided +\headline{% + \ifnoheadline + \hfil + \else\iftwosided + \ifodd\pageno + \hfil \the\majorheadline \quad{\bf\folio}% + \else + {\bf\folio}\quad \the\majorheadline\hfil + \fi + \else + \hfil \the\majorheadline \quad{\bf\folio}% + \fi\fi +} +\footline{% + \ifnoheadline + \global\noheadlinefalse + \hfil{\bf\folio}\hfil + \else + \hfil + \fi +} +\def\pt{\,{\rm pt}} +\def\mm{\,{\rm mm}} +\def\MF{{\ifdim\fontdimen1\font>0pt \mfi \else \mf \fi META}\-% + {\ifdim\fontdimen1\font>0pt \mfi \else \mf \fi FONT}} +\def\MSDOS{\leavevmode\hbox{MS-DOS}} +\def\TeX{T\kern-0.1em\lower0.5ex\hbox{E}X\spacefactor1000 } +\begingroup\catcode`\|=12 \toks0={\endgroup + \def\dfn#1{\ifx\index\UNDEFINED\else\index{#1|INDdfn}\fi{\bi #1}} +} \the\toks0 +\declareactivechar\* \def*#1*{{\it#1\/}} +\def\|{% + \relax\ifmmode + \Vert + \else + \begingroup + \ttb \setupverbatim + \catcode`\|=13 \let|\endgroup + \fi +} +\def\inputifexists#1{% + \openin15=#1 + \ifeof15 \else \input #1 \fi + \closein15 +} diff --git a/Master/texmf-dist/tex/plain/pdcmac/pdcmigr.tex b/Master/texmf-dist/tex/plain/pdcmac/pdcmigr.tex new file mode 100644 index 00000000000..a01860a53e3 --- /dev/null +++ b/Master/texmf-dist/tex/plain/pdcmac/pdcmigr.tex @@ -0,0 +1,37 @@ +% pdcmigr.tex 1.4 1995/03/30-- see end of file for more info +\message{1.4 <pdc 1995/03/30>} +\mathchardef\Gamma = "7100 +\mathchardef\Delta = "7101 +\mathchardef\Theta = "7102 +\mathchardef\Lambda = "7103 +\mathchardef\Xi = "7104 +\mathchardef\Pi = "7105 +\mathchardef\Sigma = "7106 +\mathchardef\Upsilon = "7107 +\mathchardef\Phi = "7108 +\mathchardef\Psi = "7109 +\mathchardef\Omega = "710A +\endinput +%%%@TeX-definition-file { +%%% filename = "$texmf/tex/plain/pdcmac/pdcmigr.tex", +%%% version = "1.4", +%%% date = "1995/03/30", +%%% package = "pdcmac 1.0", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "TeX, plain TeX, macros", +%%% supported = "Maybe", +%%% abstract = "A definition file for TeX, which redefines +%%% \Gamma, ..., \Omega to use letters from the +%%% maths italic font instead of the roman font. +%%% This file was generated by running +%%% plain TeX on pdcmisc.dtx", +%%% copyright = "Copyright (c) 1991, 1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcmisc.dtx only as part of the +%%% package it came in.", +%%% dependencies = "", +%%% } diff --git a/Master/texmf-dist/tex/plain/pdcmac/pdcoput5.tex b/Master/texmf-dist/tex/plain/pdcmac/pdcoput5.tex new file mode 100644 index 00000000000..30828ac9358 --- /dev/null +++ b/Master/texmf-dist/tex/plain/pdcmac/pdcoput5.tex @@ -0,0 +1,336 @@ +% pdcoput5.dtx 5.3 1995/04/06 -- output routine for zines + +%%%@TeX-definition-file { +%%% filename = "$texmf/tex/plain/pdcmac/pdcoput5.tex", +%%% version = "5.3", +%%% date = "1995/04/06", +%%% package = "pdcmac 1.0", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "TeX, plain TeX, macros", +%%% supported = "Maybe", +%%% abstract = "TeX output routine for magazine-style layout. +%%% This file was generated by running +%%% plain TeX on pdcoput5.dtx", +%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcoput5.dtx only as part of the +%%% package it came in.", +%%% dependencies = "", +%%% } + +\message{5.3 <pdc 1995/04/06>} + +\countdef\counta=255 +\dimendef\dimena=0 \dimendef\dimenb=2 +\toksdef\toksa=0 \toksdef\toksb=2 +\long\def\qappend#1#2{% + \toksa={\\{#2}}\toksb=\expandafter{#1}% + \xdef#1{\the\toksb\the\toksa}% +} +\def\qremove#1#2{% + \expandafter\glopoff#2\glopoff#1#2% +} +\long\def\glopoff\\#1#2\glopoff#3#4{% + \gdef#3{#1}\gdef#4{#2}% +} +\newdimen\paperwd \newdimen\paperht +\newdimen\bodywd \newdimen\bodyht +\newdimen\gridwd \newdimen\gridht +\newdimen\colwd \newdimen\colht +\newdimen\topmg \topmg=20mm +\newdimen\outermg \outermg=20mm +\newdimen\innermg \innermg=20mm +\newdimen\botmg \botmg=27mm +\newskip\headlineskip \headlineskip=10mm +\newskip\footlineskip \footlineskip=10mm +\newdimen\caprule \caprule=0.4pt +\newskip\capsep \capsep=5mm +\newdimen\colrule \colrule=0.4pt +\newdimen\colsep \colsep=5mm +\newcount\ncols \ncols=1 +\newbox\partialpage +\newbox\topbox \newbox\botbox +\newbox\leftbox \newbox\rightbox +\chardef\pagebox=255 +\let\pagelist\empty +\let\collist\empty +\newtoks\everypage +\newtoks\everycaption +\newdimen\toptotal \newdimen\bottotal +\def\xxxmakecolumn#1#2#3#4#5{\xmakecolumn + {\ifdim#1=0pt\else \kern#1 \fi + \def\tmp{#2}\ifx\tmp\empty\else #2 \fi} + {#3} + {\def\tmp{#2}\ifx\tmp\empty\else #2 \fi + \ifdim#1=0pt\else \kern#1 \fi}% +} +\def\xmakecolumn#1#2#3{% + \vbox to \colht{ + \dimena\colht + \setbox0=\vbox{#1}\advance\dimena-\ht0 + \ifdim\ht0>0pt + \advance\dimena-\capsep + \advance\dimena\topskip \advance\dimena-\baselineskip + \fi + \setbox4=\vbox{\prevdepth=0pt #3}% + \advance\dimena-\ht4 + \ifdim\ht4>0pt \advance\dimena-\capsep \fi + \ifvoid\footins\else + \advance\dimena-\ht\footins + \advance\dimena-\skip\footins + \fi + \ifvoid\topins\else + \advance\dimena-\ht\topins + \advance\dimena-\skip\topins + \fi + \splittopskip\topskip \splitmaxdepth\maxdepth + \setbox2=\vsplit#2to\dimena + \dimena=\ht0 \dimenb=\dp0 \unvbox0 + \ifdim\dimena>0pt + \prevdepth=\dimenb + \capseparator + \dimena\baselineskip \advance\dimena-\topskip + \kern\dimena + \nointerlineskip + \fi + \ifvoid\topins\else \unvbox\topins \vskip\skip\topins \fi + \dimena\dp2 + \ifvoid2 \vfil \else \unvbox2 \fi + \ifvoid\footins \else + \vskip\skip\footins \footnoterule + \dimena=\dp\footins \unvbox\footins + \fi + \ifdim\ht4>0pt + \prevdepth=\dimena + \capseparator \kern-\prevdepth \prevdepth0pt + \fi + \unvbox4 + }% +} +\def\capseparator{% + \hbox to \colwd{% + \dimena=0.5ex \advance\dimena-0.5\caprule + \dimenb=\dimena \advance\dimenb\caprule + \vrule height \dimenb depth-\dimena width\colwd + }% +} +\def\topillustration#1#2{% + \setbox0=\vbox{#2}% + \dimena\ht0 \dimenb\dp0 \unvbox0 + \counta\dimena \divide\counta\baselineskip + \advance\dimena-\counta\baselineskip \advance\dimena-\topskip + \kern-\dimena \prevdepth\dimenb + \hsize=\colwd \vskip-\parskip \noindent#1\par +} +\def\botillustration#1#2{% + \setbox0\vbox{\hsize=\colwd \vskip-\parskip \prevdepth=0pt #1} + \setbox2=\vbox{\prevdepth=\dp0 #2}% + \dimena=\ht0 \advance\dimena\dp0 \advance\dimena\ht2 + \unvbox0 + \counta\dimena \divide\counta\baselineskip + \advance\dimena-\counta\baselineskip + \advance\dimena-\baselineskip + \kern-\dimena + \unvbox2 +} +\def\makebody#1{% + \hbox to \bodywd{% + \ifvoid\leftbox\else + \box\leftbox + \colseparator + \fi + \makecolumnfromcollist{#1}% + \counta\ncols + \loop \ifnum\counta>1 + \colseparator + \makecolumnfromcollist{#1}% + \advance\counta -1 + \repeat + \ifvoid\rightbox\else + \colseparator + \box\rightbox + \fi + }% +} +\def\colseparator{% + \hfil \vrule width\colrule depth0pt \hfil +} +\def\makecolumnfromcollist#1{% + \ifx\collist\empty + \xmakecolumn{}{#1}{}% + \else + \qremove\temp\collist + \temp + \fi +} + +\def\makepage{% + \vbox{ + \papersizespecial + \colht\bodyht \advance\colht-\ht\partialpage + \advance\colht-\ht\topbox \advance\colht-\ht\botbox + \advance\colht-\dp\partialpage + \advance\colht-\dp\topbox + \the\everypage + \makeheadline \nointerlineskip + \box\partialpage \nointerlineskip + \box\topbox \nointerlineskip + \ifx\pagelist\empty + \makebody\pagebox + \else + \qremove\temp\pagelist + \temp + \fi + \unvbox\botbox + \makefootline + }% +} +\def\makeheadline{ + \vbox to 0pt { + \skip0=\topskip \advance\skip0-2\ht\strutbox + \advance\skip0-\headlineskip + \vskip\skip0 + \hbox to \bodywd{\the\headline} + \vss + } +} +\def\makefootline{{ + \baselineskip=\footlineskip + \hbox to \bodywd{\the\footline} +}} +\def\papersizespecial{{% + \dimena=0.001\paperwd \multiply\dimena\mag + \dimenb=0.001\paperht \multiply\dimenb\mag + \special{papersize=\the\dimena,\the\dimenb}% + \global\let\papersizespecial=\relax +}} + +\def\pdcoutput{% + \ifodd\pageno \hoffset=\innermg \else \hoffset=\outermg \fi + \advance\hoffset-1 true in + \voffset=\topmg + \advance\voffset-1truein + \shipout\makepage \advancepageno + \ifnum\outputpenalty>-20000 \else \dosupereject \fi + \unvbox\pagebox +} +\output={\pdcoutput} +\def\setpaper#1#2{% + \paperwd=#1\relax + \paperht=#2\relax + \OPUTcalcbodywdht + \OPUTcalctopskip +} +\def\OPUTcalcbodywdht{ + \bodywd=\paperwd \advance\bodywd-\outermg \advance\bodywd-\innermg + \bodyht=\paperht \advance\bodyht-\topmg \advance\bodyht-\botmg + \OPUTcalctopskip +} +\def\setpaperA#1{ + \ifcase#1 + \setpaper{841mm}{1189mm}\or + \setpaper{594mm}{841mm}\or + \setpaper{420mm}{594mm}\or + \setpaper{297mm}{420mm}\or + \setpaper{210mm}{297mm}\or + \setpaper{148mm}{210mm} + \else + \errmessage{Dunno how big DIN A#1 paper is, sorry.} + \fi +} +\def\OPUTcalctopskip{ + \setbox0=\hbox{AXbl()!gyJQ,} + \topskip=\ht0 \maxdepth=\dp0 + \advance\bodyht-\topskip \divide\bodyht\baselineskip + \multiply\bodyht\baselineskip \advance\bodyht\topskip +} +\def\OPUTcalchsizevsize{ + \hsize=\colwd + \vsize=\bodyht + \advance\vsize-\topskip \advance\vsize\baselineskip + \multiply\vsize\ncols + \advance\vsize-\baselineskip \advance\vsize\topskip +} +\def\setnkgrid#1#2{% + \gridwd=\bodywd + \advance\gridwd-#1\colsep \advance\gridwd\colsep \divide\gridwd#1 + \colwd#2\gridwd \advance\colwd#2\colsep \advance\colwd-\colsep + \ncols#1 \divide\ncols#2 + \gridht=\baselineskip + \capsep=\gridht + \OPUTcalchsizevsize +} +\def\setncolumns#1{% + \colwd=\bodywd + \advance\colwd-#1\colsep \advance\colwd\colsep \divide\colwd #1 + \gridwd=\colwd + \ncols=#1 + \OPUTcalchsizevsize +} +\setpaperA4 +\setncolumns1 +\newcount\RGDncols +\def\rigidbalance#1#2#3#4{% + \setbox0=\box#1\relax \RGDncols=#2\relax \toksa={#4}% + \begingroup\splittopskip#3\relax \vbadness=10000 + \valign{##\vfil\cr \RGDdosplits}% + \endgroup +} +\def\RGDdosplits{ + \dimena\ht0 \divide\dimena\RGDncols + \advance\dimena\splittopskip + \setbox1=\vsplit0 to\dimena + \unvbox1 + \global\advance\RGDncols-1 + \cr + \ifnum\RGDncols>0 + \noalign{\the\toksa} + \RGDdosplits + \fi +} +\def\makepartialpage#1#2{ + \maybepagebreak + \begingroup + \output{% + \message{[partial} + \setbox0=\vbox{\unvbox\pagebox}% + \global\setbox\partialpage\vbox{ + \box\partialpage \nointerlineskip + \the\everypage + \box\topbox \nointerlineskip + \hbox to \bodywd{% + \ifvoid\leftbox\else + \box\leftbox \colseparator + \fi + #1% + \ifvoid\rightbox\else + \colseparator \box\rightbox + \fi + }% \nointerlineskip + \box\botbox + #2 + \dimena\baselineskip \advance\dimena-\topskip + \kern\dimena + }% + \message{page]} + } + \eject + \endgroup +} +\def\rigidbalancepartialpage{ + \makepartialpage{\rigidbalance0\ncols\topskip\colseparator} +} +\def\maybepagebreak{% + \vskip0pt plus\baselineskip \penalty-100 + \loop + \dimena\vsize \advance\dimena-\ncols\ht\partialpage + \advance\dimena-\ncols\ht\topbox + \advance\dimena-\ncols\ht\botbox + \ifdim\pagetotal>\dimena + \eject\null + \repeat +} diff --git a/Master/texmf-dist/tex/plain/pdcmac/pdcpsdoc.tex b/Master/texmf-dist/tex/plain/pdcmac/pdcpsdoc.tex new file mode 100644 index 00000000000..59d64508a5e --- /dev/null +++ b/Master/texmf-dist/tex/plain/pdcmac/pdcpsdoc.tex @@ -0,0 +1,81 @@ +% pdcpsdoc.tex 1.2 1995/03/30 -- macros for short documents +%%%@TeX-definition-file { +%%% filename = "pdcpsdoc.tex", +%%% version = "1.2", +%%% date = "1995/03/30", +%%% package = "pdcmac 1.0", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "TeX, plain TeX, style file", +%%% supported = "Maybe", +%%% This macro file was generated by running plain +%%% TeX on pdcsty.dtx", +%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcsty.dtx only as part of the +%%% package it came in.", +%%% dependencies = "pdcadobe.tex, pdcfmt2.tex, pdcfsel.tex, +%%% pdchyex.tex, pdcimth.tex, pdcmigr.tex, +%%% pdcoput5.tex, pdcdoc.def", +%%%} + +\message{1.2 <pdc 1995/03/30>} + +\input pdcimth +\input pdcmigr +\input pdcfmt2 +\input pdchyex +\input pdcoput5 +\input pdcfsel +\input pdcadobe +\autoloadfonts +\def\KBcanonical#1{% + \expcs\ifx{KB#1}\relax #1\else\csname KB#1\endcsname \fi +} +\ifx\KBadobe\UNDEFINED \def\KBadobe#1{\KBcanonical{#10}} \fi +\def\KBit#1{\KBcanonical{#1i}} +\def\KBbi#1{\KBbf{#1i}} +\def\KBbf#1{\expandafter\KBbfx#1.} +\def\KBbfx#1#2#3#4#5.{\KBcanonical{#1#2#3b#5}} +\def\KBpagbr{pagdr} \def\KBpagbri{pagdro} +\def\KBpbkbr{pbkdr} \def\KBpbkbri{pbkdri} +\def\KBpagri{pagro} \def\KBpagbi{pagbo} +\def\KBphvri{phvro} \def\KBphvbi{phvbo} +\def\KBpcrri{pcrro} \def\KBpcrbi{pcrbo} +\def\KBphvrrni{phvron} \def\KBphvbrni{phvbon} +\def\KBphvrrn0{phvr0n} \def\KBphvbrn0{phvb0n} +\def\KBphvrrni0{phvro0n} \def\KBphvbrni0{phvbo0n} +\ifx\headingfontname\UNDEFINED \def\headingfontname{phvr} \fi +\ifx\headingttfontname\UNDEFINED \def\headingttfontname{pcrb} \fi +\def\STYheadingT{% + \@\f{rm}{\headingfontname}\@\m{mi}{cmmi10}\@\m{sy}{cmsy10}% + \@\f{asy}{psyr}% + \@\f{it}{\KBit\headingfontname}% + \@\f{tt}{\headingttfontname}\@\f{mf}{logo10}\@\f{mfi}{logosl10}% +} +\loadfont\bodysy{cmsy10 at 12pt} +\fontset{subheading}\STYheadingT{12}{14pt}{subheading}{subheading} +\fontset{heading}\STYheadingT{18}{20pt}{subheading}{subheading} +\ifx\bodyfontname\UNDEFINED \def\bodyfontname{ptmr} \fi +\ifx\bodyttfontname\UNDEFINED \def\bodyttfontname{pcrr} \fi +\def\STYbodyT{% + \@\m{rm}{\bodyfontname}\@\m{it}{\KBit\bodyfontname}% + \@\m{bf}{\KBbf\bodyfontname}\@\f{bi}{\KBbi\bodyfontname}% + \@\m{asy}{psyr}\m{mi}{cmmi}\m{sy}{cmsy}% + \@\f{mf}{logo10}\@\f{mfi}{logosl10}% + \@\f{tt}{\bodyttfontname}\@\f{tb}{\KBit\bodyttfontname}% +} +\let\sc=\relax \let\mc=\relax \let\csc=\relax +\fontset{tiny}\STYbodyT{7}{9pt}{tiny}{tiny} +\fontset{small}\STYbodyT{9}{11pt}{tiny}{tiny} +\fontset{note}\STYbodyT{10}{12pt}{tiny}{tiny} +\fontset{body}\STYbodyT{12}{14pt}{small}{tiny} +\def\everyloadfont#1#2{\fontdimen3#1=0pt \fontdimen4#1=0pt} +\rightskip=0pt plus 2em \tolerance=1000 +\bodyfonts +{\tt \hyphenchar\font=-1 } +\input pdcdoc.def +\inputifexists{pdcpsdoc.cfg} diff --git a/Master/texmf-dist/tex/plain/pdcmac/pdcpslft.tex b/Master/texmf-dist/tex/plain/pdcmac/pdcpslft.tex new file mode 100644 index 00000000000..9912b2544fb --- /dev/null +++ b/Master/texmf-dist/tex/plain/pdcmac/pdcpslft.tex @@ -0,0 +1,81 @@ +% pdcpslft.tex 1.2 1995/03/30 -- macros for short documents +%%%@TeX-definition-file { +%%% filename = "pdcpslft.tex", +%%% version = "1.2", +%%% date = "1995/03/30", +%%% package = "pdcmac 1.0", +%%% author = "P. Damian Cugley", +%%% email = "damian.cugley@comlab.ox.ac.uk", +%%% address = "Oxford University Computing Laboratory, +%%% Parks Road, Oxford OX1 3QD, UK", +%%% codetable = "USASCII", +%%% keywords = "TeX, plain TeX, style file", +%%% supported = "Maybe", +%%% This macro file was generated by running plain +%%% TeX on pdcsty.dtx", +%%% copyright = "Copyright (c) 1991-1995 P. Damian Cugley", +%%% copying = "DO NOT DISTRIBUTE THIS FILE. +%%% Distribute pdcsty.dtx only as part of the +%%% package it came in.", +%%% dependencies = "pdcadobe.tex, pdcfmt2.tex, pdcfsel.tex, +%%% pdchyex.tex, pdcimth.tex, pdcmigr.tex, +%%% pdcoput5.tex, pdclft.def", +%%%} + +\message{1.2 <pdc 1995/03/30>} + +\input pdcimth +\input pdcmigr +\input pdcfmt2 +\input pdchyex +\input pdcoput5 +\input pdcfsel +\input pdcadobe +\autoloadfonts +\def\KBcanonical#1{% + \expcs\ifx{KB#1}\relax #1\else\csname KB#1\endcsname \fi +} +\ifx\KBadobe\UNDEFINED \def\KBadobe#1{\KBcanonical{#10}} \fi +\def\KBit#1{\KBcanonical{#1i}} +\def\KBbi#1{\KBbf{#1i}} +\def\KBbf#1{\expandafter\KBbfx#1.} +\def\KBbfx#1#2#3#4#5.{\KBcanonical{#1#2#3b#5}} +\def\KBpagbr{pagdr} \def\KBpagbri{pagdro} +\def\KBpbkbr{pbkdr} \def\KBpbkbri{pbkdri} +\def\KBpagri{pagro} \def\KBpagbi{pagbo} +\def\KBphvri{phvro} \def\KBphvbi{phvbo} +\def\KBpcrri{pcrro} \def\KBpcrbi{pcrbo} +\def\KBphvrrni{phvron} \def\KBphvbrni{phvbon} +\def\KBphvrrn0{phvr0n} \def\KBphvbrn0{phvb0n} +\def\KBphvrrni0{phvro0n} \def\KBphvbrni0{phvbo0n} +\ifx\headingfontname\UNDEFINED \def\headingfontname{phvr} \fi +\ifx\headingttfontname\UNDEFINED \def\headingttfontname{pcrb} \fi +\def\STYheadingT{% + \@\f{rm}{\headingfontname}\@\m{mi}{cmmi10}\@\m{sy}{cmsy10}% + \@\f{asy}{psyr}% + \@\f{it}{\KBit\headingfontname}% + \@\f{tt}{\headingttfontname}\@\f{mf}{logo10}\@\f{mfi}{logosl10}% +} +\loadfont\bodysy{cmsy10 at 12pt} +\fontset{subheading}\STYheadingT{12}{14pt}{subheading}{subheading} +\fontset{heading}\STYheadingT{18}{20pt}{subheading}{subheading} +\ifx\bodyfontname\UNDEFINED \def\bodyfontname{ptmr} \fi +\ifx\bodyttfontname\UNDEFINED \def\bodyttfontname{pcrr} \fi +\def\STYbodyT{% + \@\m{rm}{\bodyfontname}\@\m{it}{\KBit\bodyfontname}% + \@\m{bf}{\KBbf\bodyfontname}\@\f{bi}{\KBbi\bodyfontname}% + \@\m{asy}{psyr}\m{mi}{cmmi}\m{sy}{cmsy}% + \@\f{mf}{logo10}\@\f{mfi}{logosl10}% + \@\f{tt}{\bodyttfontname}\@\f{tb}{\KBit\bodyttfontname}% +} +\let\sc=\relax \let\mc=\relax \let\csc=\relax +\fontset{tiny}\STYbodyT{7}{9pt}{tiny}{tiny} +\fontset{small}\STYbodyT{9}{11pt}{tiny}{tiny} +\fontset{note}\STYbodyT{10}{12pt}{tiny}{tiny} +\fontset{body}\STYbodyT{12}{14pt}{small}{tiny} +\def\everyloadfont#1#2{\fontdimen3#1=0pt \fontdimen4#1=0pt} +\rightskip=0pt plus 2em \tolerance=1000 +\bodyfonts +{\tt \hyphenchar\font=-1 } +\input pdclft.def +\inputifexists{pdcpslft.cfg} diff --git a/Master/texmf-dist/tex/plain/pgf/basiclayer/pgf.tex b/Master/texmf-dist/tex/plain/pgf/basiclayer/pgf.tex new file mode 100644 index 00000000000..e8f183447d3 --- /dev/null +++ b/Master/texmf-dist/tex/plain/pgf/basiclayer/pgf.tex @@ -0,0 +1,22 @@ +% Copyright 2005 by Till Tantau <tantau@cs.tu-berlin.de>. +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +\edef\pgfatcode{\the\catcode`\@} +\catcode`\@=11 + + +\input pgfrcs.code.tex +\ProvidesPackageRCS $Header: /cvsroot/pgf/pgf/plain/pgf/basiclayer/pgf.tex,v 1.3 2005/09/05 13:23:04 tantau Exp $ + +\input pgfcore.tex +\input pgfbaseshapes.tex +\input pgfbaseplot.tex +\input pgfbaseimage.tex +\input pgfbaselayers.tex +\input pgfbasesnakes.tex + +\catcode`\@=\pgfatcode + +\endinput diff --git a/Master/texmf-dist/tex/plain/pgf/basiclayer/pgfbaseimage.tex b/Master/texmf-dist/tex/plain/pgf/basiclayer/pgfbaseimage.tex new file mode 100644 index 00000000000..1748b35b7e6 --- /dev/null +++ b/Master/texmf-dist/tex/plain/pgf/basiclayer/pgfbaseimage.tex @@ -0,0 +1,17 @@ +% This file is pgfbaseshapes.tex + +% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>. +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. + +\edef\pgfbaseimageatcode{\the\catcode`\@} +\catcode`\@=11 + +\input pgfcore.tex +\input pgfbaseimage.code.tex + +\catcode`\@=\pgfbaseimageatcode + +\endinput diff --git a/Master/texmf-dist/tex/plain/pgf/basiclayer/pgfbaselayers.tex b/Master/texmf-dist/tex/plain/pgf/basiclayer/pgfbaselayers.tex new file mode 100644 index 00000000000..4a8db973c3a --- /dev/null +++ b/Master/texmf-dist/tex/plain/pgf/basiclayer/pgfbaselayers.tex @@ -0,0 +1,17 @@ +% This file is pgfbaselayers.tex + +% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>. +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. + +\edef\pgfbaselayersatcode{\the\catcode`\@} +\catcode`\@=11 + +\input pgfcore.tex +\input pgfbaselayers.code.tex + +\catcode`\@=\pgfbaselayersatcode + +\endinput diff --git a/Master/texmf-dist/tex/plain/pgf/basiclayer/pgfbaseplot.tex b/Master/texmf-dist/tex/plain/pgf/basiclayer/pgfbaseplot.tex new file mode 100644 index 00000000000..f2b7aa99c2b --- /dev/null +++ b/Master/texmf-dist/tex/plain/pgf/basiclayer/pgfbaseplot.tex @@ -0,0 +1,17 @@ +% This file is pgfbaseshapes.tex + +% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>. +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. + +\edef\pgfbaseplotatcode{\the\catcode`\@} +\catcode`\@=11 + +\input pgfcore.tex +\input pgfbaseplot.code.tex + +\catcode`\@=\pgfbaseplotatcode + +\endinput diff --git a/Master/texmf-dist/tex/plain/pgf/basiclayer/pgfbaseshapes.tex b/Master/texmf-dist/tex/plain/pgf/basiclayer/pgfbaseshapes.tex new file mode 100644 index 00000000000..99d0a3973d2 --- /dev/null +++ b/Master/texmf-dist/tex/plain/pgf/basiclayer/pgfbaseshapes.tex @@ -0,0 +1,17 @@ +% This file is pgfbaseshapes.tex + +% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>. +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. + +\edef\pgfbaseshapesatcode{\the\catcode`\@} +\catcode`\@=11 + +\input pgfcore.tex +\input pgfbaseshapes.code.tex + +\catcode`\@=\pgfbaseshapesatcode + +\endinput diff --git a/Master/texmf-dist/tex/plain/pgf/basiclayer/pgfbasesnakes.tex b/Master/texmf-dist/tex/plain/pgf/basiclayer/pgfbasesnakes.tex new file mode 100644 index 00000000000..29b0c3d9106 --- /dev/null +++ b/Master/texmf-dist/tex/plain/pgf/basiclayer/pgfbasesnakes.tex @@ -0,0 +1,17 @@ +% This file is pgfbasesnakes.tex + +% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>. +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. + +\edef\pgfbasesnakesatcode{\the\catcode`\@} +\catcode`\@=11 + +\input pgfcore.tex +\input pgfbasesnakes.code.tex + +\catcode`\@=\pgfbasesnakesatcode + +\endinput diff --git a/Master/texmf-dist/tex/plain/pgf/basiclayer/pgfcore.tex b/Master/texmf-dist/tex/plain/pgf/basiclayer/pgfcore.tex new file mode 100644 index 00000000000..d70e1030d93 --- /dev/null +++ b/Master/texmf-dist/tex/plain/pgf/basiclayer/pgfcore.tex @@ -0,0 +1,21 @@ +% This file is pgfcore.tex + +% Copyright 2005 by Till Tantau <tantau@cs.tu-berlin.de>. +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. + +\ifx\pgfcoreincluded\undefined +\def\pgfcoreincluded{} + +\edef\pgfcoreatcode{\the\catcode`\@} +\catcode`\@=11 + +\input pgfsys.tex +\input pgfcore.code.tex +\catcode`\@=\pgfcoreatcode + +\fi + +\endinput diff --git a/Master/texmf-dist/tex/plain/pgf/frontendlayer/tikz.tex b/Master/texmf-dist/tex/plain/pgf/frontendlayer/tikz.tex new file mode 100644 index 00000000000..2353f9370db --- /dev/null +++ b/Master/texmf-dist/tex/plain/pgf/frontendlayer/tikz.tex @@ -0,0 +1,20 @@ +% This file is tikz.tex + +% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>. +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. + +\edef\tikzatcode{\the\catcode`\@} +\catcode`\@=11 + +\input xkeyval.tex +\input pgf.tex +\input pgffor.tex +\input pgflibraryplothandlers.tex +\input tikz.code.tex + +\catcode`\@=\tikzatcode + +\endinput diff --git a/Master/texmf-dist/tex/plain/pgf/libraries/pgflibraryarrows.tex b/Master/texmf-dist/tex/plain/pgf/libraries/pgflibraryarrows.tex new file mode 100644 index 00000000000..3a3912c0ab3 --- /dev/null +++ b/Master/texmf-dist/tex/plain/pgf/libraries/pgflibraryarrows.tex @@ -0,0 +1,17 @@ +% This file is pgflibraryarrows.tex + +% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>. +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. + +\edef\pgflibraryarrowsatcode{\the\catcode`\@} +\catcode`\@=11 + +\input pgfcore.tex +\input pgflibraryarrows.code.tex + +\catcode`\@=\pgflibraryarrowsatcode + +\endinput diff --git a/Master/texmf-dist/tex/plain/pgf/libraries/pgflibraryautomata.tex b/Master/texmf-dist/tex/plain/pgf/libraries/pgflibraryautomata.tex new file mode 100644 index 00000000000..ee90303d2be --- /dev/null +++ b/Master/texmf-dist/tex/plain/pgf/libraries/pgflibraryautomata.tex @@ -0,0 +1,17 @@ +% This file is pgflibraryautomata.tex + +% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>. +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. + +\edef\pgflibraryautomataatcode{\the\catcode`\@} +\catcode`\@=11 + +\input pgfcore.tex +\input pgflibraryautomata.code.tex + +\catcode`\@=\pgflibraryautomataatcode + +\endinput diff --git a/Master/texmf-dist/tex/plain/pgf/libraries/pgflibraryplothandlers.tex b/Master/texmf-dist/tex/plain/pgf/libraries/pgflibraryplothandlers.tex new file mode 100644 index 00000000000..96b11c38e5b --- /dev/null +++ b/Master/texmf-dist/tex/plain/pgf/libraries/pgflibraryplothandlers.tex @@ -0,0 +1,17 @@ +% This file is pgflibraryplothandlers.tex + +% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>. +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. + +\edef\pgflibraryplothandlersatcode{\the\catcode`\@} +\catcode`\@=11 + +\input pgfcore.tex +\input pgflibraryplothandlers.code.tex + +\catcode`\@=\pgflibraryplothandlersatcode + +\endinput diff --git a/Master/texmf-dist/tex/plain/pgf/libraries/pgflibraryplotmarks.tex b/Master/texmf-dist/tex/plain/pgf/libraries/pgflibraryplotmarks.tex new file mode 100644 index 00000000000..fd91cad671a --- /dev/null +++ b/Master/texmf-dist/tex/plain/pgf/libraries/pgflibraryplotmarks.tex @@ -0,0 +1,17 @@ +% This file is pgflibraryplotmarks.tex + +% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>. +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. + +\edef\pgflibraryplotmarksatcode{\the\catcode`\@} +\catcode`\@=11 + +\input pgfcore.tex +\input pgflibraryplotmarks.code.tex + +\catcode`\@=\pgflibraryplotmarksatcode + +\endinput diff --git a/Master/texmf-dist/tex/plain/pgf/libraries/pgflibraryshapes.tex b/Master/texmf-dist/tex/plain/pgf/libraries/pgflibraryshapes.tex new file mode 100644 index 00000000000..7a47a37a6f5 --- /dev/null +++ b/Master/texmf-dist/tex/plain/pgf/libraries/pgflibraryshapes.tex @@ -0,0 +1,17 @@ +% This file is pgflibraryshapes.tex + +% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>. +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. + +\edef\pgflibraryshapesatcode{\the\catcode`\@} +\catcode`\@=11 + +\input pgfcore.tex +\input pgflibraryshapes.code.tex + +\catcode`\@=\pgflibraryshapesatcode + +\endinput diff --git a/Master/texmf-dist/tex/plain/pgf/libraries/pgflibrarysnakes.tex b/Master/texmf-dist/tex/plain/pgf/libraries/pgflibrarysnakes.tex new file mode 100644 index 00000000000..43e185d3cfe --- /dev/null +++ b/Master/texmf-dist/tex/plain/pgf/libraries/pgflibrarysnakes.tex @@ -0,0 +1,17 @@ +% This file is pgflibrarysnakes.tex + +% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>. +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. + +\edef\pgflibrarysnakesatcode{\the\catcode`\@} +\catcode`\@=11 + +\input pgfcore.tex +\input pgflibrarysnakes.code.tex + +\catcode`\@=\pgflibrarysnakesatcode + +\endinput diff --git a/Master/texmf-dist/tex/plain/pgf/libraries/pgflibrarytikzbackgrounds.tex b/Master/texmf-dist/tex/plain/pgf/libraries/pgflibrarytikzbackgrounds.tex new file mode 100644 index 00000000000..ba7f243ff42 --- /dev/null +++ b/Master/texmf-dist/tex/plain/pgf/libraries/pgflibrarytikzbackgrounds.tex @@ -0,0 +1,16 @@ +% This file is pgflibrarytikzbackgrounds.tex + +% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>. +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. + +\edef\pgflibrarytikzbackgroundsatcode{\the\catcode`\@} +\catcode`\@=11 + +\input pgflibrarytikzbackgrounds.code.tex + +\catcode`\@=\pgflibrarytikzbackgroundsatcode + +\endinput diff --git a/Master/texmf-dist/tex/plain/pgf/libraries/pgflibrarytikztrees.tex b/Master/texmf-dist/tex/plain/pgf/libraries/pgflibrarytikztrees.tex new file mode 100644 index 00000000000..c25a04c4e50 --- /dev/null +++ b/Master/texmf-dist/tex/plain/pgf/libraries/pgflibrarytikztrees.tex @@ -0,0 +1,16 @@ +% This file is pgflibrarytikztrees.tex + +% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>. +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. + +\edef\pgflibrarytikztreesatcode{\the\catcode`\@} +\catcode`\@=11 + +\input pgflibrarytikztrees.code.tex + +\catcode`\@=\pgflibrarytikztreesatcode + +\endinput diff --git a/Master/texmf-dist/tex/plain/pgf/systemlayer/pgfsys.tex b/Master/texmf-dist/tex/plain/pgf/systemlayer/pgfsys.tex new file mode 100644 index 00000000000..88d769b5c02 --- /dev/null +++ b/Master/texmf-dist/tex/plain/pgf/systemlayer/pgfsys.tex @@ -0,0 +1,26 @@ +% This file is pgfsys.tex + +% Copyright 2005 by Till Tantau <tantau@cs.tu-berlin.de>. +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. + +\ifx\pgfsysincluded\undefined +\def\pgfsysincluded{} + +\edef\pgfsysatcode{\the\catcode`\@} +\catcode`\@=11 + +\input pgfrcs.code.tex +\input pgf-latex-emulation.tex + +\input pgfsys.code.tex +\input pgfsyssoftpath.code.tex +\input pgfsysprotocol.code.tex + +\catcode`\@=\pgfsysatcode\relax + +\fi + +\endinput diff --git a/Master/texmf-dist/tex/plain/pgf/utilities/pgffor.tex b/Master/texmf-dist/tex/plain/pgf/utilities/pgffor.tex new file mode 100644 index 00000000000..2251e120c26 --- /dev/null +++ b/Master/texmf-dist/tex/plain/pgf/utilities/pgffor.tex @@ -0,0 +1,17 @@ +% This file is tikz.tex + +% Copyright 2003 by Till Tantau <tantau@cs.tu-berlin.de>. +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. + +\edef\pgfforatcode{\the\catcode`\@} +\catcode`\@=11 + +\input pgfrcs.code.tex +\input pgffor.code.tex + +\catcode`\@=\pgfforatcode + +\endinput diff --git a/Master/texmf-dist/tex/plain/plgraph/autopict.sty b/Master/texmf-dist/tex/plain/plgraph/autopict.sty new file mode 100644 index 00000000000..3c35e57b21b --- /dev/null +++ b/Master/texmf-dist/tex/plain/plgraph/autopict.sty @@ -0,0 +1,396 @@ +%% +%% This is file `autopict.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% ltpictur.dtx (with options: `def') +%% +%% This is a generated file. +%% +%% Copyright 1993 1994 1995 1996 +%% The LaTeX3 Project and any individual authors listed elsewhere +%% in this file. +%% +%% For further copyright information, and conditions for modification +%% and distribution, see the file legal.txt, and any other copyright +%% notices in this file. +%% +%% This file is part of the LaTeX2e system. +%% ---------------------------------------- +%% This system is distributed in the hope that it will be useful, +%% but WITHOUT ANY WARRANTY; without even the implied warranty of +%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +%% +%% For error reports concerning UNCHANGED versions of this file no +%% more than one year old, see bugs.txt. +%% +%% Please do not request updates from us directly. Primary +%% distribution is through the CTAN archives. +%% +%% +%% IMPORTANT COPYRIGHT NOTICE: +%% +%% You are NOT ALLOWED to distribute this file alone. +%% +%% You are allowed to distribute this file under the condition that it +%% is distributed together with all the files listed in manifest.txt. +%% +%% If you receive only some of these files from someone, complain! +%% +%% +%% Permission is granted to copy this file to another file with a +%% clearly different name and to customize the declarations in that +%% copy to serve the needs of your installation, provided that you +%% comply with the conditions in the file legal.txt. +%% +%% However, NO PERMISSION is granted to generate or to distribute a +%% modified version of this file under its original name. +%% +%% You are NOT ALLOWED to change this file. +%% +%% +%% MODIFICATION ADVICE: +%% +%% If you want to customize this file, it is best to make a copy of +%% the source file(s) from which it was produced. Use a different +%% name for your copy(ies) and modify the copy(ies); this will ensure +%% that your modifications do not get overwritten when you install a +%% new release of the standard system. You should also ensure that +%% your modified source file does not generate any modified file with +%% the same name as a standard file. +%% +%% You can then easily distribute your modifications by distributing +%% the modified and renamed copy of the source file, taking care to +%% observe the conditions in legal.txt; this will ensure that other +%% users can safely use your modifications. +%% +%% You will also need to produce your own, suitably named, .ins file to +%% control the generation of files from your source file; this file +%% should contain your own preambles for the files it generates, not +%% those in the standard .ins files. +%% +%% The names of the source files used are shown above. +%% +%% +%% +%%% From File: ltpictur.dtx +\ProvidesFile{autopict.sty} + [1995/10/27 v1.1f Picture mode autoload file] +\long\gdef\picture#1{\pictur@#1} +\gdef\pictur@(#1){% + \@ifnextchar({\@picture(#1)}{\@picture(#1)(0,0)}} +\gdef\@picture(#1,#2)(#3,#4){% + \@picht#2\unitlength + \setbox\@picbox\hb@xt@#1\unitlength\bgroup + \hskip -#3\unitlength + \lower #4\unitlength\hbox\bgroup + \ignorespaces} +\gdef\endpicture{% + \egroup\hss\egroup + \ht\@picbox\@picht\dp\@picbox\z@ + \mbox{\box\@picbox}} +\long\gdef\put(#1,#2)#3{% + \@killglue\raise#2\unitlength + \hb@xt@\z@{\kern#1\unitlength #3\hss}% + \ignorespaces} +\gdef\multiput(#1,#2)#3{% + \@xdim #1\unitlength + \@ydim #2\unitlength + \@multiput(} +\long\gdef\@multiput(#1,#2)#3#4{% + \@killglue\@multicnt #3\relax + \@whilenum \@multicnt >\z@\do + {\raise\@ydim\hb@xt@\z@{\kern\@xdim #4\hss}% + \advance\@multicnt\m@ne + \advance\@xdim#1\unitlength\advance\@ydim#2\unitlength}% + \ignorespaces} +\gdef\@killglue{\unskip\@whiledim \lastskip >\z@\do{\unskip}} +\gdef\thinlines{\let\@linefnt\tenln \let\@circlefnt\tencirc + \@wholewidth\fontdimen8\tenln \@halfwidth .5\@wholewidth} +\gdef\thicklines{\let\@linefnt\tenlnw \let\@circlefnt\tencircw + \@wholewidth\fontdimen8\tenlnw \@halfwidth .5\@wholewidth} +\gdef\linethickness#1{\@wholewidth #1\relax \@halfwidth .5\@wholewidth} +\gdef\shortstack{\@ifnextchar[\@shortstack{\@shortstack[c]}} +\gdef\@shortstack[#1]{% + \leavevmode + \vbox\bgroup + \baselineskip-\p@\lineskip 3\p@ + \let\mb@l\hss\let\mb@r\hss + \expandafter\let\csname mb@#1\endcsname\relax + \let\\\@stackcr + \@ishortstack} +\gdef\@ishortstack#1{\ialign{\mb@l {##}\unskip\mb@r\cr #1\crcr}\egroup} +\gdef\@stackcr{\@ifstar\@ixstackcr\@ixstackcr} +\gdef\@ixstackcr{\@ifnextchar[\@istackcr{\cr\ignorespaces}} +\gdef\@istackcr[#1]{\cr\noalign{\vskip #1}\ignorespaces} +\newif\if@negarg +\gdef\line(#1,#2)#3{\@xarg #1\relax \@yarg #2\relax + \@linelen #3\unitlength + \ifdim\@linelen<\z@\@badlinearg\else + \ifnum\@xarg =\z@ \@vline + \else \ifnum\@yarg =\z@ \@hline \else \@sline\fi + \fi + \fi} +\gdef\@sline{% + \ifnum\@xarg<\z@ \@negargtrue \@xarg -\@xarg \@yyarg -\@yarg + \else \@negargfalse \@yyarg \@yarg \fi +\ifnum \@yyarg >\z@ \@tempcnta\@yyarg \else \@tempcnta -\@yyarg \fi +\ifnum\@tempcnta>6 \@badlinearg\@tempcnta\z@ \fi +\ifnum\@xarg>6 \@badlinearg\@xarg \@ne \fi +\setbox\@linechar\hbox{\@linefnt\@getlinechar(\@xarg,\@yyarg)}% +\ifnum \@yarg >\z@ \let\@upordown\raise \@clnht\z@ + \else\let\@upordown\lower \@clnht \ht\@linechar\fi +\@clnwd \wd\@linechar +\if@negarg + \hskip -\wd\@linechar \def\reserved@a{\hskip -2\wd\@linechar}% +\else + \let\reserved@a\relax +\fi +\@whiledim \@clnwd <\@linelen \do + {\@upordown\@clnht\copy\@linechar + \reserved@a + \advance\@clnht \ht\@linechar + \advance\@clnwd \wd\@linechar}% +\advance\@clnht -\ht\@linechar +\advance\@clnwd -\wd\@linechar +\@tempdima\@linelen\advance\@tempdima -\@clnwd +\@tempdimb\@tempdima\advance\@tempdimb -\wd\@linechar +\if@negarg \hskip -\@tempdimb \else \hskip \@tempdimb \fi +\multiply\@tempdima \@m +\@tempcnta \@tempdima +\@tempdima \wd\@linechar \divide\@tempcnta \@tempdima +\@tempdima \ht\@linechar \multiply\@tempdima \@tempcnta +\divide\@tempdima \@m +\advance\@clnht \@tempdima +\ifdim \@linelen <\wd\@linechar + \hskip \wd\@linechar + \else\@upordown\@clnht\copy\@linechar\fi} +\gdef\@hline{\ifnum \@xarg <\z@ \hskip -\@linelen \fi +\vrule \@height \@halfwidth \@depth \@halfwidth \@width \@linelen +\ifnum \@xarg <\z@ \hskip -\@linelen \fi} +\gdef\@getlinechar(#1,#2){\@tempcnta#1\relax\multiply\@tempcnta 8% + \advance\@tempcnta -9\ifnum #2>\z@ \advance\@tempcnta #2\relax\else + \advance\@tempcnta -#2\relax\advance\@tempcnta 64 \fi + \char\@tempcnta} +\gdef\vector(#1,#2)#3{\@xarg #1\relax \@yarg #2\relax + \@tempcnta \ifnum\@xarg<\z@ -\@xarg\else\@xarg\fi + \ifnum\@tempcnta<5\relax + \@linelen #3\unitlength + \ifdim\@linelen<\z@\@badlinearg\else + \ifnum\@xarg =\z@ \@vvector + \else \ifnum\@yarg =\z@ \@hvector \else \@svector\fi + \fi + \fi + \else\@badlinearg\fi} +\gdef\@hvector{\@hline\hb@xt@\z@{\@linefnt + \ifnum \@xarg <\z@ \@getlarrow(1,0)\hss\else + \hss\@getrarrow(1,0)\fi}} +\gdef\@vvector{\ifnum \@yarg <\z@ \@downvector \else \@upvector \fi} +\gdef\@svector{\@sline + \@tempcnta\@yarg \ifnum\@tempcnta <\z@ \@tempcnta -\@tempcnta\fi + \ifnum\@tempcnta <5% + \hskip -\wd\@linechar + \@upordown\@clnht \hbox{\@linefnt \if@negarg + \@getlarrow(\@xarg,\@yyarg)\else \@getrarrow(\@xarg,\@yyarg)\fi}% + \else\@badlinearg\fi} +\gdef\@getlarrow(#1,#2){\ifnum #2=\z@ \@tempcnta'33 \else + \@tempcnta #1\relax\multiply\@tempcnta \sixt@@n \advance\@tempcnta + -9 \@tempcntb #2\relax\multiply\@tempcntb \tw@ + \ifnum \@tempcntb >\z@ \advance\@tempcnta \@tempcntb + \else\advance\@tempcnta -\@tempcntb\advance\@tempcnta 64 + \fi\fi\char\@tempcnta} +\gdef\@getrarrow(#1,#2){\@tempcntb #2\relax +\ifnum\@tempcntb <\z@ \@tempcntb -\@tempcntb\relax\fi +\ifcase \@tempcntb\relax \@tempcnta'55 \or +\ifnum #1<\thr@@ \@tempcnta #1\relax\multiply\@tempcnta +24\advance\@tempcnta -6 \else \ifnum #1=\thr@@ \@tempcnta 49 +\else\@tempcnta 58 \fi\fi\or +\ifnum #1<\thr@@ \@tempcnta=#1\relax\multiply\@tempcnta +24\advance\@tempcnta -\thr@@ \else \@tempcnta 51 \fi\or +\@tempcnta #1\relax\multiply\@tempcnta +\sixt@@n \advance\@tempcnta -\tw@ \else +\@tempcnta #1\relax\multiply\@tempcnta +\sixt@@n \advance\@tempcnta 7 \fi\ifnum #2<\z@ \advance\@tempcnta 64 \fi +\char\@tempcnta} +\gdef\@vline{\ifnum \@yarg <\z@ \@downline \else \@upline\fi} +\gdef\@upline{% + \hb@xt@\z@{\hskip -\@halfwidth \vrule \@width \@wholewidth + \@height \@linelen \@depth \z@\hss}} +\gdef\@downline{% + \hb@xt@\z@{\hskip -\@halfwidth \vrule \@width \@wholewidth + \@height \z@ \@depth \@linelen \hss}} +\gdef\@upvector{\@upline\setbox\@tempboxa\hbox{\@linefnt\char'66}\raise + \@linelen \hb@xt@\z@{\lower \ht\@tempboxa\box\@tempboxa\hss}} +\gdef\@downvector{\@downline\lower \@linelen + \hb@xt@\z@{\@linefnt\char'77\hss}} +\gdef\dashbox#1(#2,#3){\leavevmode\hb@xt@\z@{\baselineskip \z@skip +\lineskip \z@skip +\@dashdim #2\unitlength +\@dashcnt \@dashdim \advance\@dashcnt 200 +\@dashdim #1\unitlength\divide\@dashcnt \@dashdim +\ifodd\@dashcnt\@dashdim \z@ +\advance\@dashcnt \@ne \divide\@dashcnt \tw@ +\else \divide\@dashdim \tw@ \divide\@dashcnt \tw@ +\advance\@dashcnt \m@ne +\setbox\@dashbox \hbox{\vrule \@height \@halfwidth \@depth \@halfwidth +\@width \@dashdim}\put(0,0){\copy\@dashbox}% +\put(0,#3){\copy\@dashbox}% +\put(#2,0){\hskip-\@dashdim\copy\@dashbox}% +\put(#2,#3){\hskip-\@dashdim\box\@dashbox}% +\multiply\@dashdim \thr@@ +\fi +\setbox\@dashbox \hbox{\vrule \@height \@halfwidth \@depth \@halfwidth +\@width #1\unitlength\hskip #1\unitlength}\@tempcnta\z@ +\put(0,0){\hskip\@dashdim \@whilenum \@tempcnta <\@dashcnt +\do{\copy\@dashbox\advance\@tempcnta \@ne }}\@tempcnta\z@ +\put(0,#3){\hskip\@dashdim \@whilenum \@tempcnta <\@dashcnt +\do{\copy\@dashbox\advance\@tempcnta \@ne }}% +\@dashdim #3\unitlength +\@dashcnt \@dashdim \advance\@dashcnt 200 +\@dashdim #1\unitlength\divide\@dashcnt \@dashdim +\ifodd\@dashcnt \@dashdim \z@ +\advance\@dashcnt \@ne \divide\@dashcnt \tw@ +\else +\divide\@dashdim \tw@ \divide\@dashcnt \tw@ +\advance\@dashcnt \m@ne +\setbox\@dashbox\hbox{\hskip -\@halfwidth +\vrule \@width \@wholewidth +\@height \@dashdim}\put(0,0){\copy\@dashbox}% +\put(#2,0){\copy\@dashbox}% +\put(0,#3){\lower\@dashdim\copy\@dashbox}% +\put(#2,#3){\lower\@dashdim\copy\@dashbox}% +\multiply\@dashdim \thr@@ +\fi +\setbox\@dashbox\hbox{\vrule \@width \@wholewidth +\@height #1\unitlength}\@tempcnta\z@ +\put(0,0){\hskip -\@halfwidth \vbox{\@whilenum \@tempcnta <\@dashcnt +\do{\vskip #1\unitlength\copy\@dashbox\advance\@tempcnta \@ne }% +\vskip\@dashdim}}\@tempcnta\z@ +\put(#2,0){\hskip -\@halfwidth \vbox{\@whilenum \@tempcnta<\@dashcnt +\do{\vskip #1\unitlength\copy\@dashbox\advance\@tempcnta \@ne }% +\vskip\@dashdim}}}\@makepicbox(#2,#3)} +\newif\if@ovt +\newif\if@ovb +\newif\if@ovl +\newif\if@ovr +\gdef\@getcirc#1{\@tempdima #1\relax \advance\@tempdima 2\p@ + \@tempcnta\@tempdima + \@tempdima 4\p@ \divide\@tempcnta\@tempdima + \ifnum \@tempcnta >10\relax \@tempcnta 10\relax\fi + \ifnum \@tempcnta >\z@ \advance\@tempcnta\m@ne + \else \@latex@warning{Oval too small}\fi + \multiply\@tempcnta 4\relax + \setbox \@tempboxa \hbox{\@circlefnt + \char \@tempcnta}\@tempdima \wd \@tempboxa} +\gdef\@put#1#2#3{\raise #2\hb@xt@\z@{\hskip #1#3\hss}} +\gdef\oval(#1,#2){\@ifnextchar[{\@oval(#1,#2)}{\@oval(#1,#2)[]}} +\gdef\@oval(#1,#2)[#3]{\begingroup\boxmaxdepth \maxdimen + \@ovttrue \@ovbtrue \@ovltrue \@ovrtrue + \@tfor\reserved@a :=#3\do{\csname @ov\reserved@a false\endcsname}% + \@ovxx + #1\unitlength \@ovyy #2\unitlength + \@tempdimb \ifdim \@ovyy >\@ovxx \@ovxx\else \@ovyy \fi + \advance \@tempdimb -2\p@ + \@getcirc \@tempdimb + \@ovro \ht\@tempboxa \@ovri \dp\@tempboxa + \@ovdx\@ovxx \advance\@ovdx -\@tempdima \divide\@ovdx \tw@ + \@ovdy\@ovyy \advance\@ovdy -\@tempdima \divide\@ovdy \tw@ + \@circlefnt \setbox\@tempboxa + \hbox{\if@ovr \@ovvert32\kern -\@tempdima \fi + \if@ovl \kern \@ovxx \@ovvert01\kern -\@tempdima \kern -\@ovxx \fi + \if@ovt \@ovhorz \kern -\@ovxx \fi + \if@ovb \raise \@ovyy \@ovhorz \fi}\advance\@ovdx\@ovro + \advance\@ovdy\@ovro \ht\@tempboxa\z@ \dp\@tempboxa\z@ + \@put{-\@ovdx}{-\@ovdy}{\box\@tempboxa}% + \endgroup} +\gdef\@ovvert#1#2{\vbox to\@ovyy{% + \if@ovb \@tempcntb \@tempcnta \advance \@tempcntb #1\relax + \kern -\@ovro \hbox{\char \@tempcntb}\nointerlineskip + \else \kern \@ovri \kern \@ovdy \fi + \leaders\vrule \@width \@wholewidth\vfil \nointerlineskip + \if@ovt \@tempcntb \@tempcnta \advance \@tempcntb #2\relax + \hbox{\char \@tempcntb}% + \else \kern \@ovdy \kern \@ovro \fi}} +\gdef\@ovhorz{\hb@xt@\@ovxx{\kern \@ovro + \if@ovr \else \kern \@ovdx \fi + \leaders \hrule \@height \@wholewidth \hfil + \if@ovl \else \kern \@ovdx \fi + \kern \@ovri}} +\gdef\circle{\@inmatherr\circle\@ifstar\@dot\@circle} +\gdef\@circle#1{% + \begingroup \boxmaxdepth \maxdimen \@tempdimb #1\unitlength + \ifdim \@tempdimb >15.5\p@ \@getcirc\@tempdimb + \@ovro\ht\@tempboxa + \setbox\@tempboxa\hbox{\@circlefnt + \advance\@tempcnta\tw@ \char \@tempcnta + \advance\@tempcnta\m@ne \char \@tempcnta \kern -2\@tempdima + \advance\@tempcnta\tw@ + \raise \@tempdima \hbox{\char\@tempcnta}\raise \@tempdima + \box\@tempboxa}\ht\@tempboxa\z@ \dp\@tempboxa\z@ + \@put{-\@ovro}{-\@ovro}{\box\@tempboxa}% + \else \@circ\@tempdimb{96}\fi\endgroup} +\gdef\@dot#1{\@tempdimb #1\unitlength \@circ\@tempdimb{112}} +\gdef\@circ#1#2{\@tempdima #1\relax \advance\@tempdima .5\p@ + \@tempcnta\@tempdima \@tempdima \p@ + \divide\@tempcnta\@tempdima + \ifnum\@tempcnta >15\relax \@tempcnta 15\relax \fi + \ifnum \@tempcnta >\z@ \advance\@tempcnta\m@ne\fi + \advance\@tempcnta #2\relax + \@circlefnt \char\@tempcnta} +\ifx\qbeziermax\@undefined +\gdef\qbeziermax{500} +\fi +\newcommand\qbezier[2][0]{\bezier{#1}#2} +\gdef\bezier#1)#2(#3)#4({\@bezier#1)(#3)(} +\gdef\@bezier#1(#2,#3)(#4,#5)(#6,#7){% + \ifnum #1=\z@ + \@ovxx #4\unitlength + \advance\@ovxx -#2\unitlength + \ifdim \@ovxx<\z@ \@ovxx -\@ovxx \fi + \@ovdx #6\unitlength + \advance\@ovdx -#4\unitlength + \ifdim \@ovdx<\z@ \@ovdx -\@ovdx \fi + \ifdim \@ovxx<\@ovdx \@ovxx \@ovdx \fi + \@ovyy #5\unitlength + \advance\@ovyy -#3\unitlength + \ifdim \@ovyy<\z@ \@ovyy -\@ovyy \fi + \@ovdy #7\unitlength + \advance\@ovdy -#5\unitlength + \ifdim \@ovdy<\z@ \@ovdy -\@ovdy \fi + \ifdim \@ovyy<\@ovdy \@ovyy \@ovdy \fi + \@multicnt + \ifdim \@ovxx>\@ovyy \@ovxx \else \@ovyy \fi + \@ovxx .5\@halfwidth \divide\@multicnt\@ovxx + \ifnum \qbeziermax<\@multicnt \@multicnt\qbeziermax\relax \fi + \else \@multicnt#1\relax \fi + \@tempcnta\@multicnt \advance\@tempcnta\@ne + \@ovdx #4\unitlength \advance\@ovdx -#2\unitlength + \multiply\@ovdx \tw@ + \@ovxx #6\unitlength \advance\@ovxx -#2\unitlength + \advance\@ovxx -\@ovdx \divide\@ovxx\@multicnt + \@ovdy #5\unitlength \advance\@ovdy -#3\unitlength + \multiply\@ovdy \tw@ + \@ovyy #7\unitlength \advance\@ovyy -#3\unitlength + \advance\@ovyy -\@ovdy \divide\@ovyy\@multicnt + \setbox\@tempboxa\hbox{\vrule \@height\@halfwidth + \@depth \@halfwidth + \@width \@wholewidth}% + \put(#2,#3){% + \count@\z@ + \@whilenum{\count@<\@tempcnta}\do + {\@xdim\count@\@ovxx + \advance\@xdim\@ovdx + \divide\@xdim\@multicnt + \multiply\@xdim\count@ + \@ydim\count@\@ovyy + \advance\@ydim\@ovdy + \divide\@ydim\@multicnt + \multiply\@ydim\count@ + \raise \@ydim + \hb@xt@\z@{\kern\@xdim + \unhcopy\@tempboxa\hss}% + \advance\count@\@ne}}} +\endinput +%% +%% End of file `autopict.sty'. diff --git a/Master/texmf-dist/tex/plain/plgraph/color.tex b/Master/texmf-dist/tex/plain/plgraph/color.tex new file mode 100644 index 00000000000..933fba7a385 --- /dev/null +++ b/Master/texmf-dist/tex/plain/plgraph/color.tex @@ -0,0 +1,9 @@ +% Plain TeX interface to color package. +% David Carlisle + +\input miniltx +\makeatletter +\def\Gin@driver{dvips.def} +\input color.sty + +\resetatcatcode diff --git a/Master/texmf-dist/tex/plain/plgraph/graphicx.tex b/Master/texmf-dist/tex/plain/plgraph/graphicx.tex new file mode 100644 index 00000000000..0dd2b7f944d --- /dev/null +++ b/Master/texmf-dist/tex/plain/plgraph/graphicx.tex @@ -0,0 +1,13 @@ +% Plain TeX interface to graphicx package. +% David Carlisle + + +\input miniltx + +\def\Gin@driver{dvips.def} +\input graphicx.sty + + +\resetatcatcode + + diff --git a/Master/texmf-dist/tex/plain/plgraph/miniltx.tex b/Master/texmf-dist/tex/plain/plgraph/miniltx.tex new file mode 100644 index 00000000000..af4ee50f166 --- /dev/null +++ b/Master/texmf-dist/tex/plain/plgraph/miniltx.tex @@ -0,0 +1,438 @@ +%%% +%%% +%%% Parts of LaTeX: Slightly changed/simplified in places. +%%% Changes +%%% Copyright 1996 David Carlisle +%%% Original Code +%%% Copyright 1993-1996 LaTeX3 Project and original authors +%%% +%%% Under no circumstances should any problems relating to this file +%%% be sent to the LaTeX bugs address, or any other LaTeX related +%%% support address. +%%% +%%% Problems can be sent to me directly at carlisle@ma.man.ac.uk +%%% (but I don't promise to fix them). +%%% + +% 1996/01/29 initial version +% 1996/05/09 a few missing commands added +% 1996/11/21 fixed @ catcode handling + +\edef\resetatcatcode{\catcode`\noexpand\@\the\catcode`\@\relax} +\ifx\miniltx\undefined\else\endinput\fi +\let\miniltx\box + +\def\makeatletter{\catcode`\@11\relax} +\def\makeatother{\catcode`\@12\relax} +\makeatletter + +\def\@makeother#1{\catcode`#1=12\relax} + + +\def\@ifnextchar#1#2#3{% + \let\reserved@d=#1% + \def\reserved@a{#2}\def\reserved@b{#3}% + \futurelet\@let@token\@ifnch} +\def\@ifnch{% + \ifx\@let@token\@sptoken + \let\reserved@c\@xifnch + \else + \ifx\@let@token\reserved@d + \let\reserved@c\reserved@a + \else + \let\reserved@c\reserved@b + \fi + \fi + \reserved@c} +\begingroup +\def\:{\global\let\@sptoken= } \: % this makes \@sptoken a space token +\def\:{\@xifnch} \expandafter\gdef\: {\futurelet\@let@token\@ifnch} +\endgroup + + + +\def\@ifstar#1{\@ifnextchar *{\@firstoftwo{#1}}} +\long\def\@dblarg#1{\@ifnextchar[{#1}{\@xdblarg{#1}}} +\long\def\@xdblarg#1#2{#1[{#2}]{#2}} + +\long\def \@gobble #1{} +\long\def \@gobbletwo #1#2{} +\long\def \@gobblefour #1#2#3#4{} +\long\def\@firstofone#1{#1} +\long\def\@firstoftwo#1#2{#1} +\long\def\@secondoftwo#1#2{#2} + +\def\NeedsTeXFormat#1{\@ifnextchar[\@needsf@rmat\relax} +\def\@needsf@rmat[#1]{} +\def\ProvidesPackage#1{\@ifnextchar[% + {\@pr@videpackage{#1}}{\@pr@videpackage#1[]}} +\def\@pr@videpackage#1[#2]{\wlog{#1: #2}} +\let\ProvidesFile\ProvidesPackage +\def\PackageInfo#1#2{\wlog{#1: #2}} + +\let\DeclareOption\@gobbletwo +\let\ProcessOptions\relax + +\def\RequirePackage{% + \@fileswithoptions\@pkgextension} +\def\@fileswithoptions#1{% + \@ifnextchar[%] + {\@fileswith@ptions#1}% + {\@fileswith@ptions#1[]}} +\def\@fileswith@ptions#1[#2]#3{% + \@ifnextchar[%] + {\@fileswith@pti@ns#1[#2]#3}% + {\@fileswith@pti@ns#1[#2]#3[]}} + +\def\@fileswith@pti@ns#1[#2]#3[#4]{% + \def\reserved@b##1,{% + \ifx\@nil##1\relax\else + \ifx\relax##1\relax\else + \noexpand\@onefilewithoptions##1[#2][#4]\noexpand\@pkgextension + \fi + \expandafter\reserved@b + \fi}% + \edef\reserved@a{\zap@space#3 \@empty}% + \edef\reserved@a{\expandafter\reserved@b\reserved@a,\@nil,}% + \reserved@a} + +\def\zap@space#1 #2{% + #1% + \ifx#2\@empty\else\expandafter\zap@space\fi + #2} + +\let\@empty\empty +\def\@pkgextension{sty} + +\def\@onefilewithoptions#1[#2][#3]#4{% + \input #1.#4 } + + + +\def\typein{% + \let\@typein\relax + \@testopt\@xtypein\@typein} +\def\@xtypein[#1]#2{% + \message{#2}% + \advance\endlinechar\@M + \read\@inputcheck to#1% + \advance\endlinechar-\@M + \@typein} +\def\@namedef#1{\expandafter\def\csname #1\endcsname} +\def\@nameuse#1{\csname #1\endcsname} +\def\@cons#1#2{\begingroup\let\@elt\relax\xdef#1{#1\@elt #2}\endgroup} +\def\@car#1#2\@nil{#1} +\def\@cdr#1#2\@nil{#2} +\def\@carcube#1#2#3#4\@nil{#1#2#3} +\def\@preamblecmds{} + +\def\@star@or@long#1{% + \@ifstar + {\let\l@ngrel@x\relax#1}% + {\let\l@ngrel@x\long#1}} + +\let\l@ngrel@x\relax +\def\newcommand{\@star@or@long\new@command} +\def\new@command#1{% + \@testopt{\@newcommand#1}0} +\def\@newcommand#1[#2]{% + \@ifnextchar [{\@xargdef#1[#2]}% + {\@argdef#1[#2]}} +\long\def\@argdef#1[#2]#3{% + \@ifdefinable #1{\@yargdef#1\@ne{#2}{#3}}} +\long\def\@xargdef#1[#2][#3]#4{% + \@ifdefinable#1{% + \expandafter\def\expandafter#1\expandafter{% + \expandafter + \@protected@testopt + \expandafter + #1% + \csname\string#1\expandafter\endcsname + {#3}}% + \expandafter\@yargdef + \csname\string#1\endcsname + \tw@ + {#2}% + {#4}}} +\def\@testopt#1#2{% + \@ifnextchar[{#1}{#1[#2]}} +\def\@protected@testopt#1{%% + \ifx\protect\@typeset@protect + \expandafter\@testopt + \else + \@x@protect#1% + \fi} +\long\def\@yargdef#1#2#3{% + \@tempcnta#3\relax + \advance \@tempcnta \@ne + \let\@hash@\relax + \edef\reserved@a{\ifx#2\tw@ [\@hash@1]\fi}% + \@tempcntb #2% + \@whilenum\@tempcntb <\@tempcnta + \do{% + \edef\reserved@a{\reserved@a\@hash@\the\@tempcntb}% + \advance\@tempcntb \@ne}% + \let\@hash@##% + \l@ngrel@x\expandafter\def\expandafter#1\reserved@a} +\long\def\@reargdef#1[#2]#3{% + \@yargdef#1\@ne{#2}{#3}} +\def\renewcommand{\@star@or@long\renew@command} +\def\renew@command#1{% + {\escapechar\m@ne\xdef\@gtempa{{\string#1}}}% + \expandafter\@ifundefined\@gtempa + {\@latex@error{\string#1 undefined}\@ehc}% + {}% + \let\@ifdefinable\@rc@ifdefinable + \new@command#1} +\long\def\@ifdefinable #1#2{% + \edef\reserved@a{\expandafter\@gobble\string #1}% + \@ifundefined\reserved@a + {\edef\reserved@b{\expandafter\@carcube \reserved@a xxx\@nil}% + \ifx \reserved@b\@qend \@notdefinable\else + \ifx \reserved@a\@qrelax \@notdefinable\else + #2% + \fi + \fi}% + \@notdefinable} +\let\@@ifdefinable\@ifdefinable +\long\def\@rc@ifdefinable#1#2{% + \let\@ifdefinable\@@ifdefinable + #2} +\def\newenvironment{\@star@or@long\new@environment} +\def\new@environment#1{% + \@testopt{\@newenva#1}0} +\def\@newenva#1[#2]{% + \@ifnextchar [{\@newenvb#1[#2]}{\@newenv{#1}{[#2]}}} +\def\@newenvb#1[#2][#3]{\@newenv{#1}{[#2][#3]}} +\def\renewenvironment{\@star@or@long\renew@environment} +\def\renew@environment#1{% + \@ifundefined{#1}% + {\@latex@error{Environment #1 undefined}\@ehc + }{}% + \expandafter\let\csname#1\endcsname\relax + \expandafter\let\csname end#1\endcsname\relax + \new@environment{#1}} +\long\def\@newenv#1#2#3#4{% + \@ifundefined{#1}% + {\expandafter\let\csname#1\expandafter\endcsname + \csname end#1\endcsname}% + \relax + \expandafter\new@command + \csname #1\endcsname#2{#3}% + \l@ngrel@x\expandafter\def\csname end#1\endcsname{#4}} + +\def\providecommand{\@star@or@long\provide@command} +\def\provide@command#1{% + {\escapechar\m@ne\xdef\@gtempa{{\string#1}}}% + \expandafter\@ifundefined\@gtempa + {\def\reserved@a{\new@command#1}}% + {\def\reserved@a{\renew@command\reserved@a}}% + \reserved@a}% + +\def\@ifundefined#1{% + \expandafter\ifx\csname#1\endcsname\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} + +\chardef\@xxxii=32 +\mathchardef\@Mi=10001 +\mathchardef\@Mii=10002 +\mathchardef\@Miii=10003 +\mathchardef\@Miv=10004 + +\newcount\@tempcnta +\newcount\@tempcntb +\newif\if@tempswa\@tempswatrue +\newdimen\@tempdima +\newdimen\@tempdimb +\newdimen\@tempdimc +\newbox\@tempboxa +\newskip\@tempskipa +\newskip\@tempskipb +\newtoks\@temptokena + +\long\def\@whilenum#1\do #2{\ifnum #1\relax #2\relax\@iwhilenum{#1\relax + #2\relax}\fi} +\long\def\@iwhilenum#1{\ifnum #1\expandafter\@iwhilenum + \else\expandafter\@gobble\fi{#1}} +\long\def\@whiledim#1\do #2{\ifdim #1\relax#2\@iwhiledim{#1\relax#2}\fi} +\long\def\@iwhiledim#1{\ifdim #1\expandafter\@iwhiledim + \else\expandafter\@gobble\fi{#1}} +\long\def\@whilesw#1\fi#2{#1#2\@iwhilesw{#1#2}\fi\fi} +\long\def\@iwhilesw#1\fi{#1\expandafter\@iwhilesw + \else\@gobbletwo\fi{#1}\fi} +\def\@nnil{\@nil} +\def\@empty{} +\def\@fornoop#1\@@#2#3{} +\long\def\@for#1:=#2\do#3{% + \expandafter\def\expandafter\@fortmp\expandafter{#2}% + \ifx\@fortmp\@empty \else + \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}\fi} +\long\def\@forloop#1,#2,#3\@@#4#5{\def#4{#1}\ifx #4\@nnil \else + #5\def#4{#2}\ifx #4\@nnil \else#5\@iforloop #3\@@#4{#5}\fi\fi} +\long\def\@iforloop#1,#2\@@#3#4{\def#3{#1}\ifx #3\@nnil + \expandafter\@fornoop \else + #4\relax\expandafter\@iforloop\fi#2\@@#3{#4}} +\def\@tfor#1:={\@tf@r#1 } +\long\def\@tf@r#1#2\do#3{\def\@fortmp{#2}\ifx\@fortmp\space\else + \@tforloop#2\@nil\@nil\@@#1{#3}\fi} +\long\def\@tforloop#1#2\@@#3#4{\def#3{#1}\ifx #3\@nnil + \expandafter\@fornoop \else + #4\relax\expandafter\@tforloop\fi#2\@@#3{#4}} +\long\def\@break@tfor#1\@@#2#3{\fi\fi} +\def\@removeelement#1#2#3{% + \def\reserved@a##1,#1,##2\reserved@a{##1,##2\reserved@b}% + \def\reserved@b##1,\reserved@b##2\reserved@b{% + \ifx,##1\@empty\else##1\fi}% + \edef#3{% + \expandafter\reserved@b\reserved@a,#2,\reserved@b,#1,\reserved@a}} + +\let\ExecuteOptions\@gobble + +\def\PackageError#1#2#3{% + \errhelp{#3}\errmessage{#1: #2}} +\def\@latex@error#1#2{% + \errhelp{#2}\errmessage{#1}} + +\bgroup\uccode`\!`\%\uppercase{\egroup +\def\@percentchar{!}} + +\let\@@input\input +\def\input{\@ifnextchar\bgroup\@iinput\@@input} +\def\@iinput#1{\@@input#1 } + + \def\filename@parse#1{% + \let\filename@area\@empty + \expandafter\filename@simple#1.\\} + + \def\filename@simple#1.#2\\{% + \ifx\\#2\\% + \let\filename@ext\relax + \else + \edef\filename@ext{\filename@dot#2\\}% + \fi + \edef\filename@base{#1}} + \def\filename@dot#1.\\{#1} + +\long\def \IfFileExists#1#2#3{% + \openin\@inputcheck#1 % + \ifeof\@inputcheck + \ifx\input@path\@undefined + \def\reserved@a{#3}% + \else + \def\reserved@a{\@iffileonpath{#1}{#2}{#3}}% + \fi + \else + \closein\@inputcheck + \edef\@filef@und{#1 }% + \def\reserved@a{#2}% + \fi + \reserved@a} +\long\def\@iffileonpath#1{% + \let\reserved@a\@secondoftwo + \expandafter\@tfor\expandafter\reserved@b\expandafter + :\expandafter=\input@path\do{% + \openin\@inputcheck\reserved@b#1 % + \ifeof\@inputcheck\else + \edef\@filef@und{\reserved@b#1 }% + \let\reserved@a\@firstoftwo% + \closein\@inputcheck + \@break@tfor + \fi}% + \reserved@a} +\long\def \InputIfFileExists#1#2{% + \IfFileExists{#1}% + {#2\@addtofilelist{#1}\@@input \@filef@und}} + +\chardef\@inputcheck0 + +\let\@addtofilelist \@gobble + + +\def\@defaultunits{\afterassignment\remove@to@nnil} +\def\remove@to@nnil#1\@nnil{} + +\newdimen\leftmarginv +\newdimen\leftmarginvi + +\newdimen\@ovxx +\newdimen\@ovyy +\newdimen\@ovdx +\newdimen\@ovdy +\newdimen\@ovro +\newdimen\@ovri +\newdimen\@xdim +\newdimen\@ydim +\newdimen\@linelen +\newdimen\@dashdim + + +\long\def\mbox#1{\leavevmode\hbox{#1}} + + +\let\DeclareRobustCommand\newcommand +\let\@onlypreamble\@gobble + + +\def\AtBeginDocument#1{#1} +\let\protect\relax + + +\newdimen\fboxsep +\newdimen\fboxrule + +\fboxsep = 3pt +\fboxrule = .4pt + +\def\@height{height} \def\@depth{depth} \def\@width{width} +\def\@minus{minus} +\def\@plus{plus} +\def\hb@xt@{\hbox to} + + +\long\def\@begin@tempboxa#1#2{% + \begingroup + \setbox\@tempboxa#1{\color@begingroup#2\color@endgroup}% + \def\width{\wd\@tempboxa}% + \def\height{\ht\@tempboxa}% + \def\depth{\dp\@tempboxa}% + \let\totalheight\@ovri + \totalheight\height + \advance\totalheight\depth} +\let\@end@tempboxa\endgroup + +\let\set@color\relax +\let\color@begingroup\relax +\let\color@endgroup\relax +\let\color@setgroup\relax +\let\normalcolor\relax +\let\color@hbox\relax +\let\color@vbox\relax +\let\color@endbox\relax + +% 1996/05/09 \setlength and \strip@pt needed for some +% \includegraphics options (Thierry Bouche) + +\def\setlength#1#2{#1#2\relax} + +\begingroup + \catcode`P=12 + \catcode`T=12 + \lowercase{ + \def\x{\def\rem@pt##1.##2PT{##1\ifnum##2>\z@.##2\fi}}} + \expandafter\endgroup\x +\def\strip@pt{\expandafter\rem@pt\the} + +% 1996/11/13 \AtBeginDvi used in driver files for including headers. +% \@input added. + + +\def\AtBeginDvi#1{#1} + +\def\@input#1{% + \IfFileExists{#1}{\@@input\@filef@und}{\message{No file #1.}}} + +% 1996/11/21 +\def\@warning{\immediate\write16}
\ No newline at end of file diff --git a/Master/texmf-dist/tex/plain/plgraph/picture.tex b/Master/texmf-dist/tex/plain/plgraph/picture.tex new file mode 100644 index 00000000000..f17a7268ad5 --- /dev/null +++ b/Master/texmf-dist/tex/plain/plgraph/picture.tex @@ -0,0 +1,51 @@ +% Plain TeX interface to picture mode. +% David Carlisle + +\input miniltx + +\makeatletter +\let\@@line\line +\input autopict.sty +\let\LaTeX@line\line +\let\line\@@line + + +\newdimen\@wholewidth +\newdimen\@halfwidth +\newdimen\unitlength \unitlength =1pt +\newbox\@picbox +\newdimen\@picht +\newcount\@xarg +\newcount\@yarg +\newcount\@yyarg + +\font\tenln =line10 \font\tenlnw =linew10\relax +\font\tencirc=lcircle10 \font\tencircw=lcirclew10\relax +\newcount\@multicnt +\newdimen\@xdim +\newdimen\@ydim +\newbox\@linechar +\newdimen\@linelen +\newdimen\@clnwd +\newdimen\@clnht +\newdimen\@dashdim +\newbox\@dashbox +\newcount\@dashcnt +\let\@linefnt\tenln +\let\@circlefnt\tencirc +\@wholewidth\fontdimen8\tenln +\@halfwidth .5\@wholewidth + +\def\picture#1{% + \begingroup + \let\line\LaTeX@line + \def\end##1{\csname end##1\endcsname}% + \pictur@#1} + +\let\@@endpicture\endpicture +\def\endpicture{\@@endpicture\endgroup} + +\def\LaTeXbegin{\def\begin##1{\csname##1\endcsname}} + + +\resetatcatcode diff --git a/Master/texmf-dist/tex/plain/plgraph/psfrag.tex b/Master/texmf-dist/tex/plain/plgraph/psfrag.tex new file mode 100644 index 00000000000..27475c473a3 --- /dev/null +++ b/Master/texmf-dist/tex/plain/plgraph/psfrag.tex @@ -0,0 +1,49 @@ +% Plain TeX interface to psfrag. +% David Carlisle + +\input miniltx + +\makeatletter + +\ifx\@compatibilitytrue\@undefined + \csname newif\expandafter\endcsname + \csname if@compatibility\endcsname +\fi + + +\ifx\raisebox\@undefined +\def\raisebox#1#2{{% + \setbox0=\hbox{#2}\def\depth{\dp0}\leavevmode\raise#1\box\z@}} +\fi + +\ifx\@@underline\@undefined +\let\@@underline\underline +\def\underline{% + \ifmmode\expandafter\@@underline\else\expandafter\underbar\fi} +\fi + +\ifx\sbox\@undefined +\def\sbox#1{\setbox#1\hbox} +\fi + + +% psfrag loads the core graphics package, but only the extended +% graphicx interface is available from plain TeX so just intercept +% the call and ask for graphicx. +\let\savedRP\RequirePackage +\def\RequirePackage#1{% + \let\RequirePackage\savedRP + \ifx\includegraphics\@undefined + \input graphicx\fi\relax} +\input psfrag.sty + + + +\ifx\pfg@dp\@undefined +\csname newdimen\endcsname\pfg@dp +\csname newdimen\endcsname\pfg@wd +\csname newdimen\endcsname\pfg@dx +\csname newdimen\endcsname\pfg@dy +\fi + +\resetatcatcode diff --git a/Master/texmf-dist/tex/plain/plnfss/MIKmathf.tex b/Master/texmf-dist/tex/plain/plnfss/MIKmathf.tex new file mode 100644 index 00000000000..5dd335b41b6 --- /dev/null +++ b/Master/texmf-dist/tex/plain/plnfss/MIKmathf.tex @@ -0,0 +1,82 @@ +% plnfss-1.1 + +% Copyright 1996 Michal Konecny <mik@konecny.aow.cz>. +% This file is part of plnfss. License: LPPL, version 1.3 or newer, +% according to http://www.latex-project.org/lppl.txt + +% MIKmathf.tex, by Michal Konecny, 23.10.1996 +% +% A macro package to supplement math font sizing +% to Han The Thanh's package plnfss. + +\endlinechar=-1\catcode`@= 11 + +% macros provided: +\def\mathix{\mathsize{9}{6}{5}} +\def\mathx{\mathsize{10}{7}{5}} +\def\mathxii{\mathsize{12}{9}{6}} +\def\mathxiv{\mathsize{14}{10}{7}} +\def\mathxvii{\mathsize{17}{12}{9}} +\def\mathxx{\mathsize{20}{14}{10}} +\def\mathxxx{\mathsize{30}{20}{14}} +\def\mathlii{\mathsize{52}{30}{20}} +\def\nomathfonts{} +\expandafter\let\csname math9\endcsname\mathix +\expandafter\let\csname math10\endcsname\mathx +\expandafter\let\csname math12\endcsname\mathxii +\expandafter\let\csname math14\endcsname\mathxiv +\expandafter\let\csname math17\endcsname\mathxvii +\expandafter\let\csname math20\endcsname\mathxx + +\def\Bbb{\fam9\relax} +\def\Cal{\fam2\relax} +\def\bfam{5} +\def\mathb{\fam5} +\def\bxfam{6} +\def\mathbx{\fam6} +\def\Eurm{\fam10\relax} +\def\Eurb{\fam11\relax} +\def\Eusm{\fam12\relax} +\def\Eusb{\fam13\relax} +\def\Eufm{\fam14\relax} +\def\Eufb{\fam15\relax} + +% \mathfsize{textsize}{scriptsize}{scriptscriptsize} +\def\mathsize#1#2#3{ + \def\txtsz{#1} + \def\scrsz{#2} + \def\sscsz{#3} + % family assignment probably not acc. to convention + \setmathfam{0}{/cmr/m/n//}% + \setmathfam{1}{OML/cmmi/m/it//} + \setmathfam{2}{OMS/cmsy/m/n//}% incl CALIGRAPHIC + \setmathfam{3}{OMX/cmex/m/n//} + \setmathfam{5}{/cmr/b/n//} + \setmathfam{6}{/cmr/bx/n//} + \setmathfam{7}{/cmr/m/it//} + \setmathfam{8}{MSA/msam/m/n//}% ams symbols + \setmathfam{9}{MSB/msbm/m/n//}% further ams incl. BLACKBOARD + \setmathfam{10}{/euler/m/n//}% euler regular + \setmathfam{11}{/euler/b/n//}% euler regular bold + \setmathfam{12}{/euler/m/cal//}% euler cal + \setmathfam{13}{/euler/b/cal//}% euler cal bold + \setmathfam{14}{/euler/m/fib//}% euler fib + \setmathfam{15}{/euler/b/fib//}% euler fib bold +} + +% sets plnfss selected font into the special name \@arbfont +\def\set@arbfont{% + \global\expandafter\let\expandafter\@arbfont\csname\@selectedfont\endcsname} + +% \setmathfam{fam}{<coding>/<name>/<weight>/<slant>//} +% (sizes pre-set in macros \txtsz \scrsz \sscsz) +\def\setmathfam#1#2{ + {\setfont#2\fontsize\txtsz\selectfont\set@arbfont} + \expandafter\textfont#1=\@arbfont + {\setfont#2\fontsize\scrsz\selectfont\set@arbfont} + \expandafter\scriptfont#1=\@arbfont + {\setfont#2\fontsize\sscsz\selectfont\set@arbfont} + \expandafter\scriptscriptfont#1=\@arbfont +} + +\catcode`@= 12\endlinechar=13 diff --git a/Master/texmf-dist/tex/plain/plnfss/ams.pfd b/Master/texmf-dist/tex/plain/plnfss/ams.pfd new file mode 100644 index 00000000000..7441daf6821 --- /dev/null +++ b/Master/texmf-dist/tex/plain/plnfss/ams.pfd @@ -0,0 +1,21 @@ +% plnfss-1.1 + +% Copyright 2003-2005 Han The Thanh <hanthethanh@gmx.net>. +% This file is part of plnfss. License: LPPL, version 1.3 or newer, +% according to http://www.latex-project.org/lppl.txt + +\DeclareFont{OMS/cmsy/b/n} {cmbsy(10)} +\DeclareFont{OMX/cmex/m/n} {cmex(9,10)} +\DeclareFont{OML/cmmi/m/it} {cmmi(5,6,7,8,9,10,12)} +\DeclareFont{OML/cmmi/b/it} {cmmib(10)} +\DeclareFont{OMS/cmsy/m/n} {cmsy(5,6,7,8,9,10)} +\DeclareFont{U/cmtex/m/n} {cmtex(8,9,10)} + +\DeclareFont{MSA/msam/m/n} {msam(5,6,7,8,9,10)} +\DeclareFont{MSB/msbm/m/n} {msbm(5,6,7,8,9,10)} +\DeclareFont{OT1/euler/m/n} {eurm(5,6,7,8,9,10)} +\DeclareFont{OT1/euler/b/n} {eurb(5,6,7,8,9,10)} +\DeclareFont{OT1/euler/m/cal} {eusm(5,6,7,8,9,10)} +\DeclareFont{OT1/euler/b/cal} {eusb(5,6,7,8,9,10)} +\DeclareFont{OT1/euler/m/fib} {eufm(5,6,7,8,9,10)} +\DeclareFont{OT1/euler/b/fib} {eufb(5,6,7,8,9,10)} diff --git a/Master/texmf-dist/tex/plain/plnfss/il2cm.pfd b/Master/texmf-dist/tex/plain/plnfss/il2cm.pfd new file mode 100644 index 00000000000..397fa7bd3e0 --- /dev/null +++ b/Master/texmf-dist/tex/plain/plnfss/il2cm.pfd @@ -0,0 +1,49 @@ +% plnfss-1.1 + +% Copyright 2003-2005 Han The Thanh <hanthethanh@gmx.net>. +% This file is part of plnfss. License: LPPL, version 1.3 or newer, +% according to http://www.latex-project.org/lppl.txt + +\DeclareFont{IL2/cmr/b/n} {csb(5,6,7,8,9,10,12,17)} +\DeclareFont{IL2/cmr/bx/n} {csbx(5,6,7,8,9,10,12)} +\DeclareFont{IL2/cmr/bx/sl} {csbxsl(5,6,7,8,9,10,12)} +\DeclareFont{IL2/cmr/bx/it} {csbxti(10,12,17)} +\DeclareFont{IL2/cmr/m/sc} {cscsc(8,9,10,12,17)} +\DeclareFont{IL2/cmdh/m/n} {csdunh(5,6,7,8,9,10,12,17)} +\DeclareFont{IL2/cmfr/m/n} {csff(10)} +\DeclareFont{IL2/cmfr/m/it} {csfi(10)} +\DeclareFont{IL2/cmfib/m/n} {csfib(8,9,10,12)} +\DeclareFont{IL2/cmtt/m/it} {csitt(8,9,10,12,17)} +\DeclareFont{IL2/cmr/m/n} {csr(5,6,7,8,9,10,12,17)} +\DeclareFont{IL2/cmr/m/sl} {cssl(5,6,7,8,9,10,12,17)} +\DeclareFont{IL2/cmtt/m/sl} {cssltt(8,9,10,12)} +\DeclareFont{IL2/cmss/m/n} {csss(8,9,10,12,17)} +\DeclareFont{IL2/cmss/bx/n} {csssbx(9,10,12,17)} +\DeclareFont{IL2/cmss/sbc/n} {csssdc(10)} +\DeclareFont{IL2/cmss/m/sl} {csssi(8,9,10,12,17)} +\DeclareFont{IL2/cmssq/m/n} {csssq(8)} +\DeclareFont{IL2/cmssq/m/sl} {csssqi(8)} +\DeclareFont{IL2/cmtt/m/sc} {cstcsc(10,12,17)} +\DeclareFont{IL2/cmr/m/it} {csti(7,8,9,10,12,17)} +\DeclareFont{IL2/cmtt/m/n} {cstt(8,9,10,12)} +\DeclareFont{IL2/cmr/m/ui} {csu(7,8,9,10,12,17)} +\DeclareFont{IL2/cmvtt/m/n} {csvtt(8,9,10,12)} + +\SubstFont{IL2/cmfib/b/n} {IL2/cmfib/bx/n} +\SubstFont{IL2/cmr/b/it} {IL2/cmr/bx/it} +\SubstFont{IL2/cmr/b/sl} {IL2/cmr/bx/sl} +\SubstFont{IL2/cmr/b/ui} {IL2/cmr/bx/ui} +\SubstFont{IL2/cmr/bx/ui} {IL2/cmr/m/ui} +\SubstFont{IL2/cmss/b/n} {IL2/cmss/bx/n} +\SubstFont{IL2/cmss/b/ui} {IL2/cmss/bx/ui} +\SubstFont{IL2/cmss/bx/ui} {IL2/cmr/bx/ui} +\SubstFont{IL2/cmss/m/it} {IL2/cmss/m/sl} +\SubstFont{IL2/cmss/m/sc} {IL2/cmr/m/sc} +\SubstFont{IL2/cmss/m/ui} {IL2/cmr/m/ui} +\SubstFont{IL2/cmtt/b/it} {IL2/cmtt/bx/it} +\SubstFont{IL2/cmtt/b/n} {IL2/cmtt/bx/n} +\SubstFont{IL2/cmtt/b/ui} {IL2/cmtt/bx/ui} +\SubstFont{IL2/cmtt/bx/it} {IL2/cmtt/m/it} +\SubstFont{IL2/cmtt/bx/n} {IL2/cmtt/m/n} +\SubstFont{IL2/cmtt/bx/ui} {IL2/cmtt/m/it} +\SubstFont{IL2/cmtt/m/ui} {IL2/cmtt/m/it} diff --git a/Master/texmf-dist/tex/plain/plnfss/il2cmr.pfd b/Master/texmf-dist/tex/plain/plnfss/il2cmr.pfd new file mode 100644 index 00000000000..cd0db72ea12 --- /dev/null +++ b/Master/texmf-dist/tex/plain/plnfss/il2cmr.pfd @@ -0,0 +1,34 @@ +% plnfss-1.1 + +% Copyright 2003-2005 Han The Thanh <hanthethanh@gmx.net>. +% This file is part of plnfss. License: LPPL, version 1.3 or newer, +% according to http://www.latex-project.org/lppl.txt + +\DeclareFont{IL2/cmdh/m/n} {csdunh(5,6,7,8,9,10,12,17)} +\DeclareFont{IL2/cmfr/m/it} {csfi(10)} +\DeclareFont{IL2/cmfr/m/n} {csff(10)} +\DeclareFont{IL2/cmfib/b/n} {csfib(8,9,10,12)} +\DeclareFont{IL2/cmr/b/n} {csb(5,6,7,8,9,10,12,17)} +\DeclareFont{IL2/cmr/bx/it} {csbxti(10,12,17)} +\DeclareFont{IL2/cmr/bx/n} {csbx(5,6,7,8,9,10,12)} +\DeclareFont{IL2/cmr/bx/sl} {csbxsl(5,6,7,8,9,10,12)} +\DeclareFont{IL2/cmr/m/it} {csti(7,8,9,10,12,17)} +\DeclareFont{IL2/cmr/m/n} {csr(5,6,7,8,9,10,12,17)} +\DeclareFont{IL2/cmr/m/sc} {cscsc(10,12,17)} +\DeclareFont{IL2/cmr/m/sl} {cssl(5,6,7,8,9,10,12,17)} +\DeclareFont{IL2/cmr/m/ui} {csu(7,8,9,10,12,17)} +\DeclareFont{IL2/cmss/bx/n} {csssbx(9,10,12,17)} +\DeclareFont{IL2/cmss/dc/n} {csssdc(10)} +\DeclareFont{IL2/cmss/m/it} {csssi(8,9,10,12,17)} +\DeclareFont{IL2/cmss/n/n} {csss(8,9,10,12,17)} +\DeclareFont{IL2/cmss/q/it} {csssqi(8)} +\DeclareFont{IL2/cmss/q/n} {csssq(8)} +\DeclareFont{IL2/cmtt/m/it} {csitt(8,9,10,12,17)} +\DeclareFont{IL2/cmtt/m/n} {cstt(8,9,10,12)} +\DeclareFont{IL2/cmtt/m/sc} {cstcsc(10,12,17)} +\DeclareFont{IL2/cmtt/m/sl} {cssltt(8,9,10,12)} +\DeclareFont{IL2/cmvtt/m/n} {csvtt(8,9,10,12)} + +\SubstFont{IL2/cmr/b/it} {IL2/cmr/bx/it} +\SubstFont{IL2/cmr/b/sl} {IL2/cmr/bx/sl} +\SubstFont{IL2/cmss/b/n} {IL2/cmss/bx/n} diff --git a/Master/texmf-dist/tex/plain/plnfss/ly1lm.pfd b/Master/texmf-dist/tex/plain/plnfss/ly1lm.pfd new file mode 100644 index 00000000000..6c229e25f0f --- /dev/null +++ b/Master/texmf-dist/tex/plain/plnfss/ly1lm.pfd @@ -0,0 +1,51 @@ +% plnfss-1.1 + +% Copyright 2003-2005 Han The Thanh <hanthethanh@gmx.net>. +% This file is part of plnfss. License: LPPL, version 1.3 or newer, +% according to http://www.latex-project.org/lppl.txt + +\DeclareFont{LY1/lmr/b/n} {texnansi-lmb(10)} +\DeclareFont{LY1/lmr/b/sl} {texnansi-lmbo(10)} +\DeclareFont{LY1/lmr/bx/n} {texnansi-lmbx(5,6,7,8,9,10,12)} +\DeclareFont{LY1/lmr/bx/it} {texnansi-lmbxi(10)} +\DeclareFont{LY1/lmr/bx/sl} {texnansi-lmbxo(10)} +\DeclareFont{LY1/lmr/m/sc} {texnansi-lmcsc(10)} +\DeclareFont{LY1/lmr/m/scsl} {texnansi-lmcsco(10)} +\DeclareFont{LY1/lmr/m/n} {texnansi-lmr(5,6,7,8,9,10,12,17)} +\DeclareFont{LY1/lmr/m/it} {texnansi-lmri(7,8,9,10,12)} +\DeclareFont{LY1/lmr/m/sl} {texnansi-lmro(8,9,10,12)} +\DeclareFont{LY1/lmss/m/n} {texnansi-lmss(8,9,10,12,17)} +\DeclareFont{LY1/lmss/bx/sl} {texnansi-lmssbo(10)} +\DeclareFont{LY1/lmss/bx/n} {texnansi-lmssbx(10)} +\DeclareFont{LY1/lmss/sbc/n} {texnansi-lmssdc(10)} +\DeclareFont{LY1/lmss/sbc/sl} {texnansi-lmssdo(10)} +\DeclareFont{LY1/lmss/m/sl} {texnansi-lmsso(8,9,10,12,17)} +\DeclareFont{LY1/lmssq/m/n} {texnansi-lmssq(8)} +\DeclareFont{LY1/lmssq/bx/sl} {texnansi-lmssqbo(8)} +\DeclareFont{LY1/lmssq/bx/n} {texnansi-lmssqbx(8)} +\DeclareFont{LY1/lmssq/m/sl} {texnansi-lmssqo(8)} +\DeclareFont{LY1/lmtt/m/sc} {texnansi-lmtcsc(10)} +\DeclareFont{LY1/lmtt/m/n} {texnansi-lmtt(8,9,10,12)} +\DeclareFont{LY1/lmtt/m/it} {texnansi-lmtti(10)} +\DeclareFont{LY1/lmtt/m/sl} {texnansi-lmtto(10)} +\DeclareFont{LY1/lmvtt/m/n} {texnansi-lmvtt(10)} +\DeclareFont{LY1/lmvtt/m/sl} {texnansi-lmvtto(10)} + +\SubstFont{LY1/cmfib/b/n} {LY1/cmfib/bx/n} +\SubstFont{LY1/cmr/b/it} {LY1/cmr/bx/it} +\SubstFont{LY1/cmr/b/sl} {LY1/cmr/bx/sl} +\SubstFont{LY1/cmr/b/ui} {LY1/cmr/bx/ui} +\SubstFont{LY1/cmr/bx/ui} {LY1/cmr/m/ui} +\SubstFont{LY1/cmss/b/n} {LY1/cmss/bx/n} +\SubstFont{LY1/cmss/b/ui} {LY1/cmss/bx/ui} +\SubstFont{LY1/cmss/bx/ui} {LY1/cmr/bx/ui} +\SubstFont{LY1/cmss/m/it} {LY1/cmss/m/sl} +\SubstFont{LY1/cmss/m/sc} {LY1/cmr/m/sc} +\SubstFont{LY1/cmss/m/ui} {LY1/cmr/m/ui} +\SubstFont{LY1/cmtt/b/it} {LY1/cmtt/bx/it} +\SubstFont{LY1/cmtt/b/n} {LY1/cmtt/bx/n} +\SubstFont{LY1/cmtt/b/ui} {LY1/cmtt/bx/ui} +\SubstFont{LY1/cmtt/bx/it} {LY1/cmtt/m/it} +\SubstFont{LY1/cmtt/bx/n} {LY1/cmtt/m/n} +\SubstFont{LY1/cmtt/bx/ui} {LY1/cmtt/m/it} +\SubstFont{LY1/cmtt/m/ui} {LY1/cmtt/m/it} diff --git a/Master/texmf-dist/tex/plain/plnfss/ot1cm.pfd b/Master/texmf-dist/tex/plain/plnfss/ot1cm.pfd new file mode 100644 index 00000000000..03a9a5c261e --- /dev/null +++ b/Master/texmf-dist/tex/plain/plnfss/ot1cm.pfd @@ -0,0 +1,49 @@ +% plnfss-1.1 + +% Copyright 2003-2005 Han The Thanh <hanthethanh@gmx.net>. +% This file is part of plnfss. License: LPPL, version 1.3 or newer, +% according to http://www.latex-project.org/lppl.txt + +\DeclareFont{OT1/cmdh/m/n} {cmdunh(10)} +\DeclareFont{OT1/cmfr/m/it} {cmfi(10)} +\DeclareFont{OT1/cmfr/m/n} {cmff(10)} +\DeclareFont{OT1/cmfib/m/n} {cmfib(8)} +\DeclareFont{OT1/cmr/b/n} {cmb(10)} +\DeclareFont{OT1/cmr/bx/it} {cmbxti(10)} +\DeclareFont{OT1/cmr/bx/n} {cmbx(5,6,7,8,9,10,12)} +\DeclareFont{OT1/cmr/bx/sl} {cmbxsl(10)} +\DeclareFont{OT1/cmr/m/it} {cmti(7,8,9,10,12)} +\DeclareFont{OT1/cmr/m/n} {cmr(5,6,7,8,9,10,12,17)} +\DeclareFont{OT1/cmr/m/sc} {cmcsc(10)} +\DeclareFont{OT1/cmr/m/sl} {cmsl(8,9,10,12)} +\DeclareFont{OT1/cmr/m/ui} {cmu(10)} +\DeclareFont{OT1/cmss/bx/n} {cmssbx(10)} +\DeclareFont{OT1/cmss/sbc/n} {cmssdc(10)} +\DeclareFont{OT1/cmss/m/sl} {cmssi(8,9,10,12,17)} +\DeclareFont{OT1/cmss/m/n} {cmss(8,9,10,12,17)} +\DeclareFont{OT1/cmssq/m/sl} {cmssqi(8)} +\DeclareFont{OT1/cmssq/m/n} {cmssq(8)} +\DeclareFont{OT1/cmtt/m/it} {cmitt(10)} +\DeclareFont{OT1/cmtt/m/n} {cmtt(8,9,10,12)} +\DeclareFont{OT1/cmtt/m/sc} {cmtcsc(10)} +\DeclareFont{OT1/cmtt/m/sl} {cmsltt(10)} +\DeclareFont{OT1/cmvtt/m/n} {cmvtt(10)} + +\SubstFont{OT1/cmfib/b/n} {OT1/cmfib/bx/n} +\SubstFont{OT1/cmr/b/it} {OT1/cmr/bx/it} +\SubstFont{OT1/cmr/b/sl} {OT1/cmr/bx/sl} +\SubstFont{OT1/cmr/b/ui} {OT1/cmr/bx/ui} +\SubstFont{OT1/cmr/bx/ui} {OT1/cmr/m/ui} +\SubstFont{OT1/cmss/b/n} {OT1/cmss/bx/n} +\SubstFont{OT1/cmss/b/ui} {OT1/cmss/bx/ui} +\SubstFont{OT1/cmss/bx/ui} {OT1/cmr/bx/ui} +\SubstFont{OT1/cmss/m/it} {OT1/cmss/m/sl} +\SubstFont{OT1/cmss/m/sc} {OT1/cmr/m/sc} +\SubstFont{OT1/cmss/m/ui} {OT1/cmr/m/ui} +\SubstFont{OT1/cmtt/b/it} {OT1/cmtt/bx/it} +\SubstFont{OT1/cmtt/b/n} {OT1/cmtt/bx/n} +\SubstFont{OT1/cmtt/b/ui} {OT1/cmtt/bx/ui} +\SubstFont{OT1/cmtt/bx/it} {OT1/cmtt/m/it} +\SubstFont{OT1/cmtt/bx/n} {OT1/cmtt/m/n} +\SubstFont{OT1/cmtt/bx/ui} {OT1/cmtt/m/it} +\SubstFont{OT1/cmtt/m/ui} {OT1/cmtt/m/it} diff --git a/Master/texmf-dist/tex/plain/plnfss/ot1cmr.pfd b/Master/texmf-dist/tex/plain/plnfss/ot1cmr.pfd new file mode 100644 index 00000000000..13c28abbaf3 --- /dev/null +++ b/Master/texmf-dist/tex/plain/plnfss/ot1cmr.pfd @@ -0,0 +1,46 @@ +% plnfss-1.1 + +% Copyright 2003-2005 Han The Thanh <hanthethanh@gmx.net>. +% This file is part of plnfss. License: LPPL, version 1.3 or newer, +% according to http://www.latex-project.org/lppl.txt + +\DeclareFont{OT1/cmdh/m/n} {cmdunh(10)} +\DeclareFont{OT1/cmfr/m/it} {cmfi(10)} +\DeclareFont{OT1/cmfr/m/n} {cmff(10)} +\DeclareFont{OT1/cmfib/m/n} {cmfib(8)} +\DeclareFont{OT1/cmr/b/n} {cmb(10)} +\DeclareFont{OT1/cmr/bx/it} {cmbxti(10)} +\DeclareFont{OT1/cmr/bx/n} {cmbx(5,6,7,8,9,10,12)} +\DeclareFont{OT1/cmr/bx/sl} {cmbxsl(10)} +\DeclareFont{OT1/cmr/m/it} {cmti(7,8,9,10,12)} +\DeclareFont{OT1/cmr/m/n} {cmr(5,6,7,8,9,10,12,17)} +\DeclareFont{OT1/cmr/m/sc} {cmcsc(10)} +\DeclareFont{OT1/cmr/m/sl} {cmsl(8,9,10,12)} +\DeclareFont{OT1/cmr/m/ui} {cmu(10)} +\DeclareFont{OT1/cmss/bx/n} {cmssbx(10)} +\DeclareFont{OT1/cmss/sbc/n} {cmssdc(10)} +\DeclareFont{OT1/cmss/m/sl} {cmssi(8,9,10,12,17)} +\DeclareFont{OT1/cmss/m/n} {cmss(8,9,10,12,17)} +\DeclareFont{OT1/cmssq/m/sl} {cmssqi(8)} +\DeclareFont{OT1/cmssq/m/n} {cmssq(8)} +\DeclareFont{OT1/cmtt/m/it} {cmitt(10)} +\DeclareFont{OT1/cmtt/m/n} {cmtt(8,9,10,12)} +\DeclareFont{OT1/cmtt/m/sc} {cmtcsc(10)} +\DeclareFont{OT1/cmtt/m/sl} {cmsltt(10)} +\DeclareFont{OT1/cmvtt/m/n} {cmvtt(10)} + +\DeclareFont{OML/cmmi/b/it} {cmmib(10)} +\DeclareFont{OML/cmmi/m/it} {cmmi(5,6,7,8,9,10,12)} +\DeclareFont{OMS/cmsy/b/n} {cmbsy(10)} +\DeclareFont{OMS/cmsy/m/n} {cmsy(5,6,7,8,9,10)} +\DeclareFont{OMX/cmex/m/n} {cmex(10)} +\DeclareFont{U/cmtex/m/n} {cmtex(8,9,10)} + +\SubstFont{OT1/cmr/bx/ui} {OT1/cmr/m/ui} +\SubstFont{OT1/cmss/m/it} {OT1/cmss/m/sl} +\SubstFont{OT1/cmss/m/sc} {OT1/cmr/m/sc} +\SubstFont{OT1/cmss/m/ui} {OT1/cmr/m/ui} +\SubstFont{OT1/cmss/bx/ui} {OT1/cmr/bx/ui} +\SubstFont{OT1/cmtt/bx/n} {OT1/cmtt/m/n} +\SubstFont{OT1/cmtt/bx/it} {OT1/cmtt/m/it} +\SubstFont{OT1/cmtt/bx/ui} {OT1/cmtt/m/it} diff --git a/Master/texmf-dist/tex/plain/plnfss/ot4cm.pfd b/Master/texmf-dist/tex/plain/plnfss/ot4cm.pfd new file mode 100644 index 00000000000..d93c5eecc6c --- /dev/null +++ b/Master/texmf-dist/tex/plain/plnfss/ot4cm.pfd @@ -0,0 +1,49 @@ +% plnfss-1.1 + +% Copyright 2003-2005 Han The Thanh <hanthethanh@gmx.net>. +% This file is part of plnfss. License: LPPL, version 1.3 or newer, +% according to http://www.latex-project.org/lppl.txt + +\DeclareFont{OT4/cmr/b/n} {plb(10)} +\DeclareFont{OT4/cmr/bx/n} {plbx(5,6,7,8,9,10,12)} +\DeclareFont{OT4/cmr/bx/sl} {plbxsl(10)} +\DeclareFont{OT4/cmr/bx/it} {plbxti(10)} +\DeclareFont{OT4/cmr/m/sc} {plcsc(10)} +\DeclareFont{OT4/cmdh/m/n} {pldunh(10)} +\DeclareFont{OT4/cmfr/m/n} {plff(10)} +\DeclareFont{OT4/cmfr/m/it} {plfi(10)} +\DeclareFont{OT4/cmfib/m/n} {plfib(8)} +\DeclareFont{OT4/cmtt/m/it} {plitt(10)} +\DeclareFont{OT4/cmr/m/n} {plr(5,6,7,8,9,10,12,17)} +\DeclareFont{OT4/cmr/m/sl} {plsl(8,9,10,12)} +\DeclareFont{OT4/cmtt/m/sl} {plsltt(10)} +\DeclareFont{OT4/cmss/m/n} {plss(8,9,10,12,17)} +\DeclareFont{OT4/cmss/bx/n} {plssbx(10)} +\DeclareFont{OT4/cmss/sbc/n} {plssdc(10)} +\DeclareFont{OT4/cmss/m/sl} {plssi(8,9,10,12,17)} +\DeclareFont{OT4/cmssq/m/n} {plssq(8)} +\DeclareFont{OT4/cmssq/m/sl} {plssqi(8)} +\DeclareFont{OT4/cmtt/m/sc} {pltcsc(10)} +\DeclareFont{OT4/cmr/m/it} {plti(7,8,9,10,12)} +\DeclareFont{OT4/cmtt/m/n} {pltt(8,9,10,12)} +\DeclareFont{OT4/cmr/m/ui} {plu(10)} +\DeclareFont{OT4/cmvtt/m/n} {plvtt(10)} + +\SubstFont{OT4/cmfib/b/n} {OT4/cmfib/bx/n} +\SubstFont{OT4/cmr/b/it} {OT4/cmr/bx/it} +\SubstFont{OT4/cmr/b/sl} {OT4/cmr/bx/sl} +\SubstFont{OT4/cmr/b/ui} {OT4/cmr/bx/ui} +\SubstFont{OT4/cmr/bx/ui} {OT4/cmr/m/ui} +\SubstFont{OT4/cmss/b/n} {OT4/cmss/bx/n} +\SubstFont{OT4/cmss/b/ui} {OT4/cmss/bx/ui} +\SubstFont{OT4/cmss/bx/ui} {OT4/cmr/bx/ui} +\SubstFont{OT4/cmss/m/it} {OT4/cmss/m/sl} +\SubstFont{OT4/cmss/m/sc} {OT4/cmr/m/sc} +\SubstFont{OT4/cmss/m/ui} {OT4/cmr/m/ui} +\SubstFont{OT4/cmtt/b/it} {OT4/cmtt/bx/it} +\SubstFont{OT4/cmtt/b/n} {OT4/cmtt/bx/n} +\SubstFont{OT4/cmtt/b/ui} {OT4/cmtt/bx/ui} +\SubstFont{OT4/cmtt/bx/it} {OT4/cmtt/m/it} +\SubstFont{OT4/cmtt/bx/n} {OT4/cmtt/m/n} +\SubstFont{OT4/cmtt/bx/ui} {OT4/cmtt/m/it} +\SubstFont{OT4/cmtt/m/ui} {OT4/cmtt/m/it} diff --git a/Master/texmf-dist/tex/plain/plnfss/plnfss.tex b/Master/texmf-dist/tex/plain/plnfss/plnfss.tex new file mode 100644 index 00000000000..08d4b07db94 --- /dev/null +++ b/Master/texmf-dist/tex/plain/plnfss/plnfss.tex @@ -0,0 +1,403 @@ +% plnfss-1.1 + +% Copyright 2000-2005 Han The Thanh <HanTheThanh@gmx.net> +% and Michal Konecny <mik@konecny.aow.cz> +% This file is part of plnfss. License: LPPL, version 1.3 or newer, +% according to http://www.latex-project.org/lppl.txt + +% plnfss.tex - simple NFSS macros for plain TeX + + +\catcode`\@=11 \endlinechar=-1 % + +% general purpose accumulators and shortcuts +\newdimen\dimenA +\newcount\countA +\let\ex=\expandafter + +% how to set \baselineskip (and \strutbox) when switching to another font +\newif\ifupdatebaselineskip % update \baselineskip (and \strutbox) at all? +\updatebaselineskiptrue % do so by default +\def\baselineskipscale{1.2} % the factor \baselineskip : \@fontsize +\def\setbaselineskip{ + \baselineskip=\@fontsize + \baselineskip=\baselineskipscale\baselineskip + \setbox\strutbox=\hbox{\vrule + height .7\baselineskip depth .3\baselineskip width \z@} +} + +\newdimen\@fontsize +\def\setfontencoding#1{\if^^A#1^^A\else\edef\@fontencoding{#1}\fi} +\def\setfontfamily#1{\if^^A#1^^A\else\edef\@fontfamily{#1}\fi} +\def\setfontseries#1{\if^^A#1^^A\else\edef\@fontseries{#1}\fi} +\def\setfontshape#1{\if^^A#1^^A\else\edef\@fontshape{#1}\fi} +\def\setfontsize#1{\if^^A#1^^A\else\@fontsize=#1\fi} + + +\def\addfontsize#1{ + \add\@fontsize #1 + \selectfont +} + +\def\mulfontsize#1{ + \@fontsize=#1\@fontsize + \selectfont +} + +\def\setfont#1/#2/#3/#4/#5/{ + \setfontencoding{#1} + \setfontfamily{#2} + \setfontseries{#3} + \setfontshape{#4} + \setfontsize{#5} + \selectfont +} + +\def\usefont#1#2#3#4{ + \setfontencoding{#1} + \setfontfamily{#2} + \setfontseries{#3} + \setfontshape{#4} + \selectfont +} + +\def\excs#1#2{ + \ex#1\csname#2\endcsname +} + +\def\getsizelist #1(#2){ + \def\fontname{#1} + \def\sizelist{#2,END,} +} + +\def\endsizelist{END} +\def\finish#1END,{} + +\def\selectfontsize#1,{ + \def\cursize{#1} + \ifx\cursize\empty + \def\selectedsize{} + \let\next \finish + \else\ifx\cursize\endsizelist + \edef\selectedsize{\lastsize} + \let\next \relax + \else\ifdim\@fontsize > \cursize\p@ + \edef\lastsize{\cursize} + \let\next \selectfontsize + \else\ifx\lastsize\empty + \edef\selectedsize{\cursize} + \let\next \finish + \else + \dimenA=\@fontsize + \advance \dimenA \dimenA + \advance \dimenA -\cursize\p@ + \advance \dimenA -\lastsize\p@ + \relax + \ifdim\dimenA < \z@ + \edef\selectedsize{\lastsize} + \else + \edef\selectedsize{\cursize} + \fi + \let\next \finish + \fi\fi\fi\fi + \next +} + +\def\loadfontdecl{ + \excs\ifx\fontdecl\relax + \testprefix{cm}{\@fontfamily} + \ifisprefix \loadfd{cm}{pfd}\fi + \fi + \excs\ifx\fontdecl\relax + \testprefix{lm}{\@fontfamily} + \ifisprefix \loadfd{lm}{pfd}\fi + \fi + \excs\ifx\fontdecl\relax + \loadfd{\@fontfamily}{fd} + \fi +} + +\let\plaininput=\input +\let\plainlowercase=\lowercase + +\newread\testfd +\def\loadfd#1#2{ + \let\next=\relax + \edef\inputfd{\plainlowercase{\noexpand\openin\testfd=\@fontencoding#1.#2 }}\inputfd + \ifeof\testfd + \log{PLNFSS: cannot find font definition file for % + family \@fontencoding/#1} + \else + \closein\testfd + \edef\next{\plainlowercase{\noexpand\plaininput \@fontencoding#1.#2 }} + \fi +%% Temporarily set \endlinechar=-1 to prevent spurious spaces. +%% Fix provided by Hartmut Henkel. + \endlinechar=-1 + \next + \endlinechar=13 +} + +\def\selectfont{ + \edef\fontdecl{ + \@fontencoding/\@fontfamily/\@fontseries/\@fontshape + } + \edef\selectedfont{ + \fontdecl/\the\@fontsize/ + } + \excs\ifx\selectedfont\relax + \loadfontdecl + \excs\ifx\fontdecl\relax + \errmessage{Font \fontdecl\space not defined, restore the last font \lastfont} + \ex\setfont\lastfont\relax + \else + \edef\fontdef{\csname\fontdecl\endcsname} + \ex\getsizelist\fontdef + \def\lastsize{} + \ex\selectfontsize\sizelist + \global\ex\font\csname\selectedfont\endcsname + \fontname\selectedsize\space at \@fontsize + \edef\lastfont{\selectedfont} + \csname\selectedfont\endcsname + \ifupdatebaselineskip \setbaselineskip \fi + \relax + \fi + \else + \csname\selectedfont\endcsname + \ifupdatebaselineskip \setbaselineskip \fi + \relax + \fi +} + +\def\getcurfont{\csname\selectedfont\endcsname} + +\newcount\tracingplnfss + +\def\DeclareFont#1#2{ + \ex\gdef\csname#1\endcsname{#2} + \ifnum\tracingplnfss>0 + \log{PLNFSS: font #1 has been defined as #2} + \fi +} + +\def\SubstFont#1#2{ + \ex\ifx\csname#1\endcsname\relax + \global\ex\let\csname#1\ex\endcsname \csname#2\endcsname + \ifnum\tracingplnfss>0 + \log{PLNFSS: font #1 has been substituted by #2} + \fi + \else + \ifnum\tracingplnfss>0 + \log{PLNFSS: font #1 has been already defined, substitution ignored} + \fi + \fi +} + +\def\setrmdefault#1{\edef\rmdefault{#1}} +\def\setsfdefault#1{\edef\sfdefault{#1}} +\def\setttdefault#1{\edef\ttdefault{#1}} + +%% LaTeX PSNFSS support +\def\typeout{\immediate\write17} +\def\@makeother#1{\catcode`#1=12\relax} +\long\def\ProvidesFile#1{ + \begingroup + \endlinechar=-1 % + \catcode`\ 10 % + \@makeother\/% + \@makeother\&% + \checkoptarg +} +\def\checkoptarg#1{ + \global\let\curarg=#1 + \ifx [\curarg + \let\next=\ignoreoptarg + \else + \let\next=\nooptarg + \fi + \next +} +\def\ignoreoptarg#1]{\endgroup} +\def\nooptarg{\endgroup\curarg} +\def\DeclareFontFamily#1#2#3{} +\def\@ifundefined#1#2#3{#2} + +\ex\newcount\csname c:0\endcsname +\ex\newcount\csname c:1\endcsname +\ex\newcount\csname c:2\endcsname +\ex\newcount\csname c:3\endcsname +\ex\newcount\csname c:4\endcsname +\ex\newcount\csname c:5\endcsname +\ex\newcount\csname c:6\endcsname +\ex\newcount\csname c:7\endcsname +\ex\newcount\csname c:8\endcsname +\ex\newcount\csname c:9\endcsname +\chardef\maxprefixlength=10 + +\newif\ifisprefix +\newcount\charindex +\newcount\prefixlength + +\def\stripspaces #1{ + \if #1^^A + \let\next=\relax + \else + \let\next=\stripspaces + \edef\curparam{\curparam#1} + \fi + \next +} + +\def\readprefix#1{ + \if #1^^A + \let\next=\relax + \prefixlength=\charindex + \else + \let\next=\readprefix + \ex\csname c:\the\charindex \endcsname=`#1\relax + \advance\charindex 1\relax + \ifnum \charindex>\maxprefixlength + \errmessage{Prefix too long, try to increase `maxprefixlength'} + \let\next=\skipremain + \fi + \fi + \next +} + +\def\skipremain#1^^A{} +\def\storeremain#1^^A{\def\remain{#1}} + +\def\cmpprefix#1{ + \if #1^^A + \let\next=\relax + \else + \countA=`#1\relax + \ifnum \countA=\csname c:\the\charindex \endcsname + \advance\charindex 1\relax + \ifnum \charindex=\prefixlength + \isprefixtrue + \let\next=\storeremain + \else + \let\next=\cmpprefix + \fi + \else + \let\next=\skipremain + \isprefixfalse + \fi + \fi + \next +} + +\def\testprefix#1#2{ + \charindex=0 \ex\readprefix#1^^A + \charindex=0 \isprefixfalse \ex\cmpprefix#2^^A +} + +\newcount\fontresult % 0. cannot handle; 1. substituted; 2. TFM available + +\def\DeclareFontShape#1#2#3#4#5#6{ + \let\curparam=\empty + \let\next=\relax + \stripspaces #5^^A + \fontresult=-1\relax + \testprefix{<->sub*}{\curparam} + \ifisprefix \fontresult=1 \fi + \ifnum \fontresult<0 + \testprefix{<->ssub*}{\curparam} + \ifisprefix \fontresult=1 \fi + \fi + \ifnum \fontresult<0 + \testprefix{<->subf*}{\curparam} + \ifisprefix \fontresult=1 \fi + \fi + \ifnum \fontresult<0 + \testprefix{<->ssubf*}{\curparam} + \ifisprefix \fontresult=1 \fi + \fi + \ifnum \fontresult<0 + \testprefix{<->fixed*}{\curparam} + \ifisprefix \fontresult=0 \fi + \fi + \ifnum \fontresult<0 + \testprefix{<->sfixed*}{\curparam} + \ifisprefix \fontresult=0 \fi + \fi + \ifnum \fontresult<0 + \testprefix{<->s*}{\curparam} + \ifisprefix \fontresult=0 \fi + \fi + \ifnum \fontresult<0 + \testprefix{<->}{\curparam} + \ifisprefix \fontresult=2 \fi + \fi + \ifnum \fontresult=2 % TFM available + \def\fontshape{#1/#2/#3/#4^^A} + \edef\fontdef{\remain()^^A} + \ex\ex\ex\LaTeXDeclareFont \ex\fontshape \fontdef + \else \ifnum \fontresult=1 % substituted + \def\fontshape{#1/#2/#3/#4^^A} + \edef\fontdef{#1/\remain^^A} + \ex\ex\ex\LaTeXSubstFont \ex\fontshape \fontdef + \else % \fontresult <= 0 + \errmessage{PLNFSS cannot handle form `\curparam' of font declaration} + \fi \fi +} + +\def\LaTeXDeclareFont#1^^A#2^^A{\DeclareFont{#1}{#2}} +\def\LaTeXSubstFont#1^^A#2^^A{\SubstFont{#1}{#2}} + +\newlinechar`^^J +\def\log#1{\immediate \write 16 {^^J#1}} + +%% NFSS high-level commands + +\def\rmfamily{\setfontfamily{\rmdefault}\selectfont} +\def\sffamily{\setfontfamily{\sfdefault}\selectfont} +\def\ttfamily{\setfontfamily{\ttdefault}\selectfont} +\def\mdseries{\setfontseries{m}\selectfont} +\def\bfseries{\setfontseries{b}\selectfont} +\def\upshape{\setfontshape{ui}\selectfont} +\def\itshape{\setfontshape{it}\selectfont} +\def\slshape{\setfontshape{sl}\selectfont} +\def\scshape{\setfontshape{sc}\selectfont} +\def\normalfont{\setfontseries{m}\setfontshape{n}\selectfont} + +\def\textrm#1{{\rmfamily #1}} +\def\textsf#1{{\sffamily #1}} +\def\texttt#1{{\ttfamily #1}} +\def\textmd#1{{\mdseries #1}} +\def\textbf#1{{\bfseries #1}} +\def\textup#1{{\upshape #1}} +\def\textit#1{{\itshape #1\/}} +\def\textsl#1{{\slshape #1\/}} +\def\textsc#1{{\scshape #1}} + +\let\rm=\rmfamily +\let\sf=\sffamily +\let\tt=\ttfamily +\let\md=\mdseries +\let\bf=\bfseries +\let\up=\upshape +\let\it=\itshape +\let\sl=\slshape +\let\sc=\scshape + +%% Default settings + +\setfontencoding{OT1} +\setfontfamily{cmr} +\setfontseries{m} +\setfontshape{n} +\setfontsize{10pt} +\setrmdefault{cmr} +\setttdefault{cmtt} +\setsfdefault{cmss} +\edef\lastfont{ + \@fontencoding/ + \@fontfamily/ + \@fontseries/ + \@fontshape/ + \the\@fontsize/ +} + +\catcode`\@=12 \endlinechar=13 % diff --git a/Master/texmf-dist/tex/plain/plnfss/qxlm.pfd b/Master/texmf-dist/tex/plain/plnfss/qxlm.pfd new file mode 100644 index 00000000000..9a6acaca180 --- /dev/null +++ b/Master/texmf-dist/tex/plain/plnfss/qxlm.pfd @@ -0,0 +1,51 @@ +% plnfss-1.1 + +% Copyright 2003-2005 Han The Thanh <hanthethanh@gmx.net>. +% This file is part of plnfss. License: LPPL, version 1.3 or newer, +% according to http://www.latex-project.org/lppl.txt + +\DeclareFont{QX/lmr/b/n} {qx-lmb(10)} +\DeclareFont{QX/lmr/b/sl} {qx-lmbo(10)} +\DeclareFont{QX/lmr/bx/n} {qx-lmbx(5,6,7,8,9,10,12)} +\DeclareFont{QX/lmr/bx/it} {qx-lmbxi(10)} +\DeclareFont{QX/lmr/bx/sl} {qx-lmbxo(10)} +\DeclareFont{QX/lmr/m/sc} {qx-lmcsc(10)} +\DeclareFont{QX/lmr/m/scsl} {qx-lmcsco(10)} +\DeclareFont{QX/lmr/m/n} {qx-lmr(5,6,7,8,9,10,12,17)} +\DeclareFont{QX/lmr/m/it} {qx-lmri(7,8,9,10,12)} +\DeclareFont{QX/lmr/m/sl} {qx-lmro(8,9,10,12)} +\DeclareFont{QX/lmss/m/n} {qx-lmss(8,9,10,12,17)} +\DeclareFont{QX/lmss/bx/sl} {qx-lmssbo(10)} +\DeclareFont{QX/lmss/bx/n} {qx-lmssbx(10)} +\DeclareFont{QX/lmss/sbc/n} {qx-lmssdc(10)} +\DeclareFont{QX/lmss/sbc/sl} {qx-lmssdo(10)} +\DeclareFont{QX/lmss/m/sl} {qx-lmsso(8,9,10,12,17)} +\DeclareFont{QX/lmssq/m/n} {qx-lmssq(8)} +\DeclareFont{QX/lmssq/bx/sl} {qx-lmssqbo(8)} +\DeclareFont{QX/lmssq/bx/n} {qx-lmssqbx(8)} +\DeclareFont{QX/lmssq/m/sl} {qx-lmssqo(8)} +\DeclareFont{QX/lmtt/m/sc} {qx-lmtcsc(10)} +\DeclareFont{QX/lmtt/m/n} {qx-lmtt(8,9,10,12)} +\DeclareFont{QX/lmtt/m/it} {qx-lmtti(10)} +\DeclareFont{QX/lmtt/m/sl} {qx-lmtto(10)} +\DeclareFont{QX/lmvtt/m/n} {qx-lmvtt(10)} +\DeclareFont{QX/lmvtt/m/sl} {qx-lmvtto(10)} + +\SubstFont{QX/cmfib/b/n} {QX/cmfib/bx/n} +\SubstFont{QX/cmr/b/it} {QX/cmr/bx/it} +\SubstFont{QX/cmr/b/sl} {QX/cmr/bx/sl} +\SubstFont{QX/cmr/b/ui} {QX/cmr/bx/ui} +\SubstFont{QX/cmr/bx/ui} {QX/cmr/m/ui} +\SubstFont{QX/cmss/b/n} {QX/cmss/bx/n} +\SubstFont{QX/cmss/b/ui} {QX/cmss/bx/ui} +\SubstFont{QX/cmss/bx/ui} {QX/cmr/bx/ui} +\SubstFont{QX/cmss/m/it} {QX/cmss/m/sl} +\SubstFont{QX/cmss/m/sc} {QX/cmr/m/sc} +\SubstFont{QX/cmss/m/ui} {QX/cmr/m/ui} +\SubstFont{QX/cmtt/b/it} {QX/cmtt/bx/it} +\SubstFont{QX/cmtt/b/n} {QX/cmtt/bx/n} +\SubstFont{QX/cmtt/b/ui} {QX/cmtt/bx/ui} +\SubstFont{QX/cmtt/bx/it} {QX/cmtt/m/it} +\SubstFont{QX/cmtt/bx/n} {QX/cmtt/m/n} +\SubstFont{QX/cmtt/bx/ui} {QX/cmtt/m/it} +\SubstFont{QX/cmtt/m/ui} {QX/cmtt/m/it} diff --git a/Master/texmf-dist/tex/plain/plnfss/t1lm.pfd b/Master/texmf-dist/tex/plain/plnfss/t1lm.pfd new file mode 100644 index 00000000000..b8ab9e5ef71 --- /dev/null +++ b/Master/texmf-dist/tex/plain/plnfss/t1lm.pfd @@ -0,0 +1,51 @@ +% plnfss-1.1 + +% Copyright 2003-2005 Han The Thanh <hanthethanh@gmx.net>. +% This file is part of plnfss. License: LPPL, version 1.3 or newer, +% according to http://www.latex-project.org/lppl.txt + +\DeclareFont{T1/lmr/b/n} {ec-lmb(10)} +\DeclareFont{T1/lmr/b/sl} {ec-lmbo(10)} +\DeclareFont{T1/lmr/bx/n} {ec-lmbx(5,6,7,8,9,10,12)} +\DeclareFont{T1/lmr/bx/it} {ec-lmbxi(10)} +\DeclareFont{T1/lmr/bx/sl} {ec-lmbxo(10)} +\DeclareFont{T1/lmr/m/sc} {ec-lmcsc(10)} +\DeclareFont{T1/lmr/m/scsl} {ec-lmcsco(10)} +\DeclareFont{T1/lmr/m/n} {ec-lmr(5,6,7,8,9,10,12,17)} +\DeclareFont{T1/lmr/m/it} {ec-lmri(7,8,9,10,12)} +\DeclareFont{T1/lmr/m/sl} {ec-lmro(8,9,10,12)} +\DeclareFont{T1/lmss/m/n} {ec-lmss(8,9,10,12,17)} +\DeclareFont{T1/lmss/bx/sl} {ec-lmssbo(10)} +\DeclareFont{T1/lmss/bx/n} {ec-lmssbx(10)} +\DeclareFont{T1/lmss/sbc/n} {ec-lmssdc(10)} +\DeclareFont{T1/lmss/sbc/sl} {ec-lmssdo(10)} +\DeclareFont{T1/lmss/m/sl} {ec-lmsso(8,9,10,12,17)} +\DeclareFont{T1/lmssq/m/n} {ec-lmssq(8)} +\DeclareFont{T1/lmssq/bx/sl} {ec-lmssqbo(8)} +\DeclareFont{T1/lmssq/bx/n} {ec-lmssqbx(8)} +\DeclareFont{T1/lmssq/m/sl} {ec-lmssqo(8)} +\DeclareFont{T1/lmtt/m/sc} {ec-lmtcsc(10)} +\DeclareFont{T1/lmtt/m/n} {ec-lmtt(8,9,10,12)} +\DeclareFont{T1/lmtt/m/it} {ec-lmtti(10)} +\DeclareFont{T1/lmtt/m/sl} {ec-lmtto(10)} +\DeclareFont{T1/lmvtt/m/n} {ec-lmvtt(10)} +\DeclareFont{T1/lmvtt/m/sl} {ec-lmvtto(10)} + +\SubstFont{T1/cmfib/b/n} {T1/cmfib/bx/n} +\SubstFont{T1/cmr/b/it} {T1/cmr/bx/it} +\SubstFont{T1/cmr/b/sl} {T1/cmr/bx/sl} +\SubstFont{T1/cmr/b/ui} {T1/cmr/bx/ui} +\SubstFont{T1/cmr/bx/ui} {T1/cmr/m/ui} +\SubstFont{T1/cmss/b/n} {T1/cmss/bx/n} +\SubstFont{T1/cmss/b/ui} {T1/cmss/bx/ui} +\SubstFont{T1/cmss/bx/ui} {T1/cmr/bx/ui} +\SubstFont{T1/cmss/m/it} {T1/cmss/m/sl} +\SubstFont{T1/cmss/m/sc} {T1/cmr/m/sc} +\SubstFont{T1/cmss/m/ui} {T1/cmr/m/ui} +\SubstFont{T1/cmtt/b/it} {T1/cmtt/bx/it} +\SubstFont{T1/cmtt/b/n} {T1/cmtt/bx/n} +\SubstFont{T1/cmtt/b/ui} {T1/cmtt/bx/ui} +\SubstFont{T1/cmtt/bx/it} {T1/cmtt/m/it} +\SubstFont{T1/cmtt/bx/n} {T1/cmtt/m/n} +\SubstFont{T1/cmtt/bx/ui} {T1/cmtt/m/it} +\SubstFont{T1/cmtt/m/ui} {T1/cmtt/m/it} diff --git a/Master/texmf-dist/tex/plain/plnfss/t5cm.pfd b/Master/texmf-dist/tex/plain/plnfss/t5cm.pfd new file mode 100644 index 00000000000..7b0f8ce085f --- /dev/null +++ b/Master/texmf-dist/tex/plain/plnfss/t5cm.pfd @@ -0,0 +1,49 @@ +% plnfss-1.1 + +% Copyright 2003-2005 Han The Thanh <hanthethanh@gmx.net>. +% This file is part of plnfss. License: LPPL, version 1.3 or newer, +% according to http://www.latex-project.org/lppl.txt + +\DeclareFont{T5/cmdh/m/n} {vndunh(10)} +\DeclareFont{T5/cmfr/m/it} {vnfi(10)} +\DeclareFont{T5/cmfr/m/n} {vnff(10)} +\DeclareFont{T5/cmfib/m/n} {vnfib(8)} +\DeclareFont{T5/cmr/b/n} {vnb(10)} +\DeclareFont{T5/cmr/bx/it} {vnbxti(10)} +\DeclareFont{T5/cmr/bx/n} {vnbx(5,6,7,8,9,10,12)} +\DeclareFont{T5/cmr/bx/sl} {vnbxsl(10)} +\DeclareFont{T5/cmr/m/it} {vnti(7,8,9,10,12)} +\DeclareFont{T5/cmr/m/n} {vnr(5,6,7,8,9,10,12,17)} +\DeclareFont{T5/cmr/m/sc} {vncsc(10)} +\DeclareFont{T5/cmr/m/sl} {vnsl(8,9,10,12)} +\DeclareFont{T5/cmr/m/ui} {vnu(10)} +\DeclareFont{T5/cmss/bx/n} {vnssbx(10)} +\DeclareFont{T5/cmss/sbc/n} {vnssdc(10)} +\DeclareFont{T5/cmss/m/sl} {vnssi(8,9,10,12,17)} +\DeclareFont{T5/cmss/m/n} {vnss(8,9,10,12,17)} +\DeclareFont{T5/cmssq/m/sl} {vnssqi(8)} +\DeclareFont{T5/cmssq/m/n} {vnssq(8)} +\DeclareFont{T5/cmtt/m/it} {vnitt(10)} +\DeclareFont{T5/cmtt/m/n} {vntt(8,9,10,12)} +\DeclareFont{T5/cmtt/m/sc} {vntcsc(10)} +\DeclareFont{T5/cmtt/m/sl} {vnsltt(10)} +\DeclareFont{T5/cmvtt/m/n} {vnvtt(10)} + +\SubstFont{T5/cmfib/b/n} {T5/cmfib/bx/n} +\SubstFont{T5/cmr/b/it} {T5/cmr/bx/it} +\SubstFont{T5/cmr/b/sl} {T5/cmr/bx/sl} +\SubstFont{T5/cmr/b/ui} {T5/cmr/bx/ui} +\SubstFont{T5/cmr/bx/ui} {T5/cmr/m/ui} +\SubstFont{T5/cmss/b/n} {T5/cmss/bx/n} +\SubstFont{T5/cmss/b/ui} {T5/cmss/bx/ui} +\SubstFont{T5/cmss/bx/ui} {T5/cmr/bx/ui} +\SubstFont{T5/cmss/m/it} {T5/cmss/m/sl} +\SubstFont{T5/cmss/m/sc} {T5/cmr/m/sc} +\SubstFont{T5/cmss/m/ui} {T5/cmr/m/ui} +\SubstFont{T5/cmtt/b/it} {T5/cmtt/bx/it} +\SubstFont{T5/cmtt/b/n} {T5/cmtt/bx/n} +\SubstFont{T5/cmtt/b/ui} {T5/cmtt/bx/ui} +\SubstFont{T5/cmtt/bx/it} {T5/cmtt/m/it} +\SubstFont{T5/cmtt/bx/n} {T5/cmtt/m/n} +\SubstFont{T5/cmtt/bx/ui} {T5/cmtt/m/it} +\SubstFont{T5/cmtt/m/ui} {T5/cmtt/m/it} diff --git a/Master/texmf-dist/tex/plain/plnfss/t5cmr.pfd b/Master/texmf-dist/tex/plain/plnfss/t5cmr.pfd new file mode 100644 index 00000000000..73256dc3801 --- /dev/null +++ b/Master/texmf-dist/tex/plain/plnfss/t5cmr.pfd @@ -0,0 +1,49 @@ +% plnfss-1.1 + +% Copyright 2003-2005 Han The Thanh <hanthethanh@gmx.net>. +% This file is part of plnfss. License: LPPL, version 1.3 or newer, +% according to http://www.latex-project.org/lppl.txt + +\DeclareFont{T5/cmdh/m/n} {vndunh(10)} +\DeclareFont{T5/cmfr/m/it} {vnfi(10)} +\DeclareFont{T5/cmfr/m/n} {vnff(10)} +\DeclareFont{T5/cmfib/m/n} {vnfib(8)} +\DeclareFont{T5/cmr/b/n} {vnb(10)} +\DeclareFont{T5/cmr/bx/it} {vnbxti(10)} +\DeclareFont{T5/cmr/bx/n} {vnbx(5,6,7,8,9,10,12)} +\DeclareFont{T5/cmr/bx/sl} {vnbxsl(10)} +\DeclareFont{T5/cmr/m/it} {vnti(7,8,9,10,12)} +\DeclareFont{T5/cmr/m/n} {vnr(5,6,7,8,9,10,12,17)} +\DeclareFont{T5/cmr/m/sc} {vncsc(10)} +\DeclareFont{T5/cmr/m/sl} {vnsl(8,9,10,12)} +\DeclareFont{T5/cmr/m/ui} {vnu(10)} +\DeclareFont{T5/cmss/bx/n} {vnssbx(10)} +\DeclareFont{T5/cmss/sbc/n} {vnssdc(10)} +\DeclareFont{T5/cmss/m/sl} {vnssi(8,9,10,12,17)} +\DeclareFont{T5/cmss/m/n} {vnss(8,9,10,12,17)} +\DeclareFont{T5/cmssq/m/sl} {vnssqi(8)} +\DeclareFont{T5/cmssq/m/n} {vnssq(8)} +\DeclareFont{T5/cmtt/m/it} {vnitt(10)} +\DeclareFont{T5/cmtt/m/n} {vntt(8,9,10,12)} +\DeclareFont{T5/cmtt/m/sc} {vntcsc(10)} +\DeclareFont{T5/cmtt/m/sl} {vnsltt(10)} +\DeclareFont{T5/cmvtt/m/n} {vnvtt(10)} + +\SubstFont{T5/cmss/m/it} {T5/cmss/m/sl}{} +\SubstFont{T5/cmss/m/sc} {T5/cmr/m/sc}{} +\SubstFont{T5/cmss/m/ui} {T5/cmr/m/ui}{} +\SubstFont{T5/cmr/bx/ui} {T5/cmr/m/ui}{} +\SubstFont{T5/cmss/bx/ui} {T5/cmr/bx/ui}{} +\SubstFont{T5/cmtt/bx/n} {T5/cmtt/m/n}{} +\SubstFont{T5/cmtt/bx/it} {T5/cmtt/m/it}{} +\SubstFont{T5/cmtt/bx/ui} {T5/cmtt/m/it}{} + +\SubstFont{T5/cmfib/b/n} {T5/cmfib/bx/n} +\SubstFont{T5/cmr/b/it} {T5/cmr/bx/it} +\SubstFont{T5/cmr/b/sl} {T5/cmr/bx/sl} +\SubstFont{T5/cmss/b/n} {T5/cmss/bx/n} +\SubstFont{T5/cmr/b/ui} {T5/cmr/bx/ui} +\SubstFont{T5/cmss/b/ui} {T5/cmss/bx/ui} +\SubstFont{T5/cmtt/b/n} {T5/cmtt/bx/n} +\SubstFont{T5/cmtt/b/it} {T5/cmtt/bx/it} +\SubstFont{T5/cmtt/b/ui} {T5/cmtt/bx/ui} diff --git a/Master/texmf-dist/tex/plain/plnfss/t5lm.pfd b/Master/texmf-dist/tex/plain/plnfss/t5lm.pfd new file mode 100644 index 00000000000..33a36ca90df --- /dev/null +++ b/Master/texmf-dist/tex/plain/plnfss/t5lm.pfd @@ -0,0 +1,51 @@ +% plnfss-1.1 + +% Copyright 2003-2005 Han The Thanh <hanthethanh@gmx.net>. +% This file is part of plnfss. License: LPPL, version 1.3 or newer, +% according to http://www.latex-project.org/lppl.txt + +\DeclareFont{T5/lmr/b/n} {t5-lmb(10)} +\DeclareFont{T5/lmr/b/sl} {t5-lmbo(10)} +\DeclareFont{T5/lmr/bx/n} {t5-lmbx(5,6,7,8,9,10,12)} +\DeclareFont{T5/lmr/bx/it} {t5-lmbxi(10)} +\DeclareFont{T5/lmr/bx/sl} {t5-lmbxo(10)} +\DeclareFont{T5/lmr/m/sc} {t5-lmcsc(10)} +\DeclareFont{T5/lmr/m/scsl} {t5-lmcsco(10)} +\DeclareFont{T5/lmr/m/n} {t5-lmr(5,6,7,8,9,10,12,17)} +\DeclareFont{T5/lmr/m/it} {t5-lmri(7,8,9,10,12)} +\DeclareFont{T5/lmr/m/sl} {t5-lmro(8,9,10,12)} +\DeclareFont{T5/lmss/m/n} {t5-lmss(8,9,10,12,17)} +\DeclareFont{T5/lmss/bx/sl} {t5-lmssbo(10)} +\DeclareFont{T5/lmss/bx/n} {t5-lmssbx(10)} +\DeclareFont{T5/lmss/sbc/n} {t5-lmssdc(10)} +\DeclareFont{T5/lmss/sbc/sl} {t5-lmssdo(10)} +\DeclareFont{T5/lmss/m/sl} {t5-lmsso(8,9,10,12,17)} +\DeclareFont{T5/lmssq/m/n} {t5-lmssq(8)} +\DeclareFont{T5/lmssq/bx/sl} {t5-lmssqbo(8)} +\DeclareFont{T5/lmssq/bx/n} {t5-lmssqbx(8)} +\DeclareFont{T5/lmssq/m/sl} {t5-lmssqo(8)} +\DeclareFont{T5/lmtt/m/sc} {t5-lmtcsc(10)} +\DeclareFont{T5/lmtt/m/n} {t5-lmtt(8,9,10,12)} +\DeclareFont{T5/lmtt/m/it} {t5-lmtti(10)} +\DeclareFont{T5/lmtt/m/sl} {t5-lmtto(10)} +\DeclareFont{T5/lmvtt/m/n} {t5-lmvtt(10)} +\DeclareFont{T5/lmvtt/m/sl} {t5-lmvtto(10)} + +\SubstFont{T5/cmfib/b/n} {T5/cmfib/bx/n} +\SubstFont{T5/cmr/b/it} {T5/cmr/bx/it} +\SubstFont{T5/cmr/b/sl} {T5/cmr/bx/sl} +\SubstFont{T5/cmr/b/ui} {T5/cmr/bx/ui} +\SubstFont{T5/cmr/bx/ui} {T5/cmr/m/ui} +\SubstFont{T5/cmss/b/n} {T5/cmss/bx/n} +\SubstFont{T5/cmss/b/ui} {T5/cmss/bx/ui} +\SubstFont{T5/cmss/bx/ui} {T5/cmr/bx/ui} +\SubstFont{T5/cmss/m/it} {T5/cmss/m/sl} +\SubstFont{T5/cmss/m/sc} {T5/cmr/m/sc} +\SubstFont{T5/cmss/m/ui} {T5/cmr/m/ui} +\SubstFont{T5/cmtt/b/it} {T5/cmtt/bx/it} +\SubstFont{T5/cmtt/b/n} {T5/cmtt/bx/n} +\SubstFont{T5/cmtt/b/ui} {T5/cmtt/bx/ui} +\SubstFont{T5/cmtt/bx/it} {T5/cmtt/m/it} +\SubstFont{T5/cmtt/bx/n} {T5/cmtt/m/n} +\SubstFont{T5/cmtt/bx/ui} {T5/cmtt/m/it} +\SubstFont{T5/cmtt/m/ui} {T5/cmtt/m/it} diff --git a/Master/texmf-dist/tex/plain/plnfss/ts1lm.pfd b/Master/texmf-dist/tex/plain/plnfss/ts1lm.pfd new file mode 100644 index 00000000000..c41ead4a76c --- /dev/null +++ b/Master/texmf-dist/tex/plain/plnfss/ts1lm.pfd @@ -0,0 +1,51 @@ +% plnfss-1.1 + +% Copyright 2003-2005 Han The Thanh <hanthethanh@gmx.net>. +% This file is part of plnfss. License: LPPL, version 1.3 or newer, +% according to http://www.latex-project.org/lppl.txt + +\DeclareFont{TS1/lmr/b/n} {ts1-lmb(10)} +\DeclareFont{TS1/lmr/b/sl} {ts1-lmbo(10)} +\DeclareFont{TS1/lmr/bx/n} {ts1-lmbx(5,6,7,8,9,10,12)} +\DeclareFont{TS1/lmr/bx/it} {ts1-lmbxi(10)} +\DeclareFont{TS1/lmr/bx/sl} {ts1-lmbxo(10)} +\DeclareFont{TS1/lmr/m/sc} {ts1-lmcsc(10)} +\DeclareFont{TS1/lmr/m/scsl} {ts1-lmcsco(10)} +\DeclareFont{TS1/lmr/m/n} {ts1-lmr(5,6,7,8,9,10,12,17)} +\DeclareFont{TS1/lmr/m/it} {ts1-lmri(7,8,9,10,12)} +\DeclareFont{TS1/lmr/m/sl} {ts1-lmro(8,9,10,12)} +\DeclareFont{TS1/lmss/m/n} {ts1-lmss(8,9,10,12,17)} +\DeclareFont{TS1/lmss/bx/sl} {ts1-lmssbo(10)} +\DeclareFont{TS1/lmss/bx/n} {ts1-lmssbx(10)} +\DeclareFont{TS1/lmss/sbc/n} {ts1-lmssdc(10)} +\DeclareFont{TS1/lmss/sbc/sl} {ts1-lmssdo(10)} +\DeclareFont{TS1/lmss/m/sl} {ts1-lmsso(8,9,10,12,17)} +\DeclareFont{TS1/lmssq/m/n} {ts1-lmssq(8)} +\DeclareFont{TS1/lmssq/bx/sl} {ts1-lmssqbo(8)} +\DeclareFont{TS1/lmssq/bx/n} {ts1-lmssqbx(8)} +\DeclareFont{TS1/lmssq/m/sl} {ts1-lmssqo(8)} +\DeclareFont{TS1/lmtt/m/sc} {ts1-lmtcsc(10)} +\DeclareFont{TS1/lmtt/m/n} {ts1-lmtt(8,9,10,12)} +\DeclareFont{TS1/lmtt/m/it} {ts1-lmtti(10)} +\DeclareFont{TS1/lmtt/m/sl} {ts1-lmtto(10)} +\DeclareFont{TS1/lmvtt/m/n} {ts1-lmvtt(10)} +\DeclareFont{TS1/lmvtt/m/sl} {ts1-lmvtto(10)} + +\SubstFont{TS1/cmfib/b/n} {TS1/cmfib/bx/n} +\SubstFont{TS1/cmr/b/it} {TS1/cmr/bx/it} +\SubstFont{TS1/cmr/b/sl} {TS1/cmr/bx/sl} +\SubstFont{TS1/cmr/b/ui} {TS1/cmr/bx/ui} +\SubstFont{TS1/cmr/bx/ui} {TS1/cmr/m/ui} +\SubstFont{TS1/cmss/b/n} {TS1/cmss/bx/n} +\SubstFont{TS1/cmss/b/ui} {TS1/cmss/bx/ui} +\SubstFont{TS1/cmss/bx/ui} {TS1/cmr/bx/ui} +\SubstFont{TS1/cmss/m/it} {TS1/cmss/m/sl} +\SubstFont{TS1/cmss/m/sc} {TS1/cmr/m/sc} +\SubstFont{TS1/cmss/m/ui} {TS1/cmr/m/ui} +\SubstFont{TS1/cmtt/b/it} {TS1/cmtt/bx/it} +\SubstFont{TS1/cmtt/b/n} {TS1/cmtt/bx/n} +\SubstFont{TS1/cmtt/b/ui} {TS1/cmtt/bx/ui} +\SubstFont{TS1/cmtt/bx/it} {TS1/cmtt/m/it} +\SubstFont{TS1/cmtt/bx/n} {TS1/cmtt/m/n} +\SubstFont{TS1/cmtt/bx/ui} {TS1/cmtt/m/it} +\SubstFont{TS1/cmtt/m/ui} {TS1/cmtt/m/it} diff --git a/Master/texmf-dist/tex/plain/rsfs/scrload.tex b/Master/texmf-dist/tex/plain/rsfs/scrload.tex new file mode 100644 index 00000000000..ca38e676f77 --- /dev/null +++ b/Master/texmf-dist/tex/plain/rsfs/scrload.tex @@ -0,0 +1,14 @@ +% The following allows the use of Ralph Smith's Formal Script symbols +% in Plain TeX documents. Use \scr like \cal. +% Set the font sizes and restore the `at' clauses if you want them bigger. +% You can use this method in LaTeX, but only at one basic size. +% If you need symbols in LaTeX titles, captions, etc., work it out or ask +% a LaTeXpert. + +\font\tenscr=rsfs10 % scaled \magstep1 +\font\sevenscr=rsfs7 % scaled \magstep1 +\font\fivescr=rsfs5 % scaled \magstep1 +\skewchar\tenscr='177 \skewchar\sevenscr='177 \skewchar\fivescr='177 +\newfam\scrfam \textfont\scrfam=\tenscr \scriptfont\scrfam=\sevenscr +\scriptscriptfont\scrfam=\fivescr +\def\scr{\fam\scrfam} diff --git a/Master/texmf-dist/tex/plain/siam/docuptex.tex b/Master/texmf-dist/tex/plain/siam/docuptex.tex new file mode 100644 index 00000000000..2f673f9b7bf --- /dev/null +++ b/Master/texmf-dist/tex/plain/siam/docuptex.tex @@ -0,0 +1,456 @@ +%% +%% SIAM Plain TeX macro documentation. +%% Paul Duggan +%% 9-15-94 + +\input siamptex.sty + +% The definitions are to provide a verbatim text environment + +\def\uncatcodespecials{\def\do##1{\catcode`##1=12 }\dospecials} +\def\setupverbatim{\tt% + \def\par{\leavevmode\endgraf}% + \obeylines\uncatcodespecials\obeyspaces} +{\obeyspaces\global\let =\ } +\def\doverbatim#1{\def\next##1#1{##1\endgroup}\next} +\def\verbatim{\begingroup\setupverbatim\doverbatim} + + +\overfullrule=0pt + +\topmatter +\vol{1} +\no{1, pp.~000--000} +\SIMAC +\date{October 1994} +\copyyear{1994} +\code{000} + +\title Using SIAM's \TeX\ Macros\endtitle + +\shorttitle{USING SIAM'S \TeX\ MACROS} + +\recdate{*}{August 9, 1994. +This work was supported by the Society for Industrial +and Applied Mathematics} + +\author Paul Duggan\fnmark{$^{\dag}$}\endauthor + +\address{$^{\dag}$}{Society for Industrial and Applied Mathematics, +Philadelphia, Pennsylvania ({\tt duggan@siam.org}). Questions, comments, +or corrections to this document may be directed to that e-mail address} + +\abstract{Documentation is given for use of the SIAM \TeX\ macros. +Instructions and suggestions for compliance with SIAM style +standards are also included.} +\subjclass\endsubjclass +\keywords\endkeywords + + +\endtopmatter + + +\heading{1}{Introduction} +This file is documentation for the SIAM \TeX\ macros and provides +instruction for submission of files formatted in \TeX. + +To accommodate authors who electronically typeset their manuscripts, +SIAM supports the use of \TeX. To ensure quality typesetting according +to SIAM style standards, SIAM provides a \TeX\ macro style file. +Using \TeX\ to format a manuscript should simplify the editorial process +and lessen the author's proofreading burden. However, +it is still necessary to proofread the galley proofs with care. + +Electronic files should not be submitted until the paper has been +accepted, and then not until requested to do so by someone in the SIAM +office. Once an article is slated for an issue, +someone from the SIAM office will contact the author about any or all +of the following: editorial and stylistic queries, +supplying the source files (and any supplementary macros) +for the properly formatted article, and handling figures. + +When submitting electronic files (electronic submissions) +(to {\tt tex@siam.org}) write the journal, issue, and author's +name in the subject line of the message. +Authors are responsible for ensuring that the paper generated +from the source files exactly matches the paper that +was accepted for publication by the review editor. If it does not, +information on how it differs should be indicated in the transmission +of the file. When submitting a file, please be sure to include any +additional macros (other than those provided by SIAM) that will be +needed to run the paper. + +SIAM uses MS-DOS-based computers for \TeX\ processing. Therefore +all filenames should be restricted to eight characters or less, +plus a three character extension. + +Once the files are corrected here at SIAM, we will mail the revised +proofs to be read against the original edited hardcopy +manuscript. We are not +set up to shuttle back and forth varying electronic versions of each +paper, so we must rely on hard copy of the galleys. The author's proofreading +is an important but easily overlooked step. Even if SIAM were not +to introduce a single editorial change into your manuscript, there +would still be a need to check, because electronic transmission +can introduce errors. + + +This distribution contains the following items: {\tt siamptex.sty}, the +main macro package; this documentation file; and a sample file {\tt +pexample.tex}. The sample file is representative of the standard way +to apply the macros. The rest of this paper emphasizes some aspects +of applying the macros, points out options and special cases, and +describes the SIAM style standards. +The SIAM macros make use of the small caps font, {\tt cmcsc}, which +is not installed in some systems. This font along with other +AMS-\TeX\ fonts can be retrieved from the American Mathematical +Society via anonymous FTP to {\tt e-math.ams.com}. + +\heading{2}{Headings} +The top matter of a journal is in a standard format. The macro +and initial definitions should be included as follows. + +\verbatim: +\input siamptex.sty +\overfullrule=0pt + +: + +The \verbatim:\overfullrule: should be set wider than zero points +while still being edited by the author to assist in locating +lines that extend beyond the margins. + + +The ``slugline,'' which contains the journal and copyright information, is +created by special commands following the \verbatim:\topmatter:. + +\verbatim: +\SIMAX +\vol{0} +\no{0, pp.~000--000} +\date{April 1995} +\copyyear{1995} +\code{000} + +: +Because authors will probably not know exact +volume, number, date, or code, insert zeros in their place as +above. SIAM will place the appropriate information in +the commands in production; however, the commands must be used. +\verbatim:\SIMAX:, \verbatim:\SIAP:, \verbatim:\SICOMP:, +\verbatim:\SICON:, \verbatim:\SIDMA:, \verbatim:\SIMA:, +\verbatim:\SIMAX:, \verbatim:\SINUM:, \verbatim:\SIOPT:, +\verbatim:\SISC:, and \verbatim:\SIREV: are the commands provided +to include the journal title in the heading. + +The title and author(s) of the paper are indicated by the +\verbatim:\title\endtitle: and \verbatim:\author\endauthor: commands. +Author support and address information is indicated as follows. + +\verbatim: +\author A.~U. Thorone\fnmark{$^{\dag}$} + \and A.~U. Thortwo\fnmark{$^{\ddag}$}\endauthor + +\address{$^{\dag}$}{Address of the first author and support} +\address{$^{\ddag}$}{Address of the second author and support} + +: + +If more than two authors are included, each should be separated +by a comma after the \verbatim:\fnmark{}: command. If more than one +author shares common footnote information, then a common footnote +and footnote mark should be used. + +The commands \verbatim:\shorttitle{}: and \verbatim:\shortauthor{}: +are used to designate the running heads for the paper. + +The \verbatim:\abstract{}:, \verbatim:\keywords\endkeywords:, and +\verbatim:\subjclass\endsubjclass:\break commands are used to include the +abstract, key words, and AMS subject classification numbers, respectively. +If there is to be only one subject classification number, the +\verbatim:\subjclass: command should be preceded by +\verbatim:\oneclass:. (If the AMS numbers are unknown, leave that +information blank.) Authors are responsible for providing AMS numbers. +They can be found in the Annual Index of Math Reviews or +through {\tt e-Math} ({\tt telnet e-math.ams.com}; login +and password are both {\tt e-math}). +Complete the topmatter section by including \verbatim:\endtopmatter:. + + + +\heading{3}{Equations and mathematics} +Equations and mathematics +are handled by standard \TeX\ commands. SIAM style is +for numbered equations to appear flush with the left margin. The +\verbatim:\leqno: and \verbatim:\leqalignno{}: commands are used for +this purpose. If any letters indicating subequations are to be used +with the numbers, they should be set in roman type. + +Clear equation formatting using \TeX\ can be challenging. Aside from +the regular \TeX\ documentation, authors will find Nicholas +J. Higham's book {\it Handbook of Writing for the Mathematical +Sciences\/} [1] useful for guidelines and tips on formatting with +\TeX. The book covers many other topics related to article +writing as well. + +Authors commonly make mistakes by using + \verbatim:<:, \verbatim:>:, \verbatim:\mid:, and +\verbatim:\parallel: as delimiters, instead of +\verbatim:\langle:, \verbatim:\rangle:, \verbatim:|:, +and \verbatim:\|:. The incorrect symbols have particular +meanings distinct from the correct ones and should not be confused. + +\bigskip +\eightpoint +\halign{#\hfil\quad&&#\hfil\quad\cr +&{\bf Wrong} &&&& {\bf Right}&\cr +&\verbatim:<x, y>: & $<x, y>$ &&& + \verbatim:\langle x, y\rangle: & $\langle x, y\rangle$ \cr +&\verbatim:5 < \mid A \mid: & $5 < \mid A \mid$ &&& + \verbatim:5 < |A|: & $5 < |A|$ \cr +& \verbatim:6x = \parallel x: \cr +&\verbatim: - 1\parallel_{i}: & $6x = \parallel x - 1\parallel_{i}$ &&& + \verbatim:6x = \|x - 1\|_{i}: & $6x = \| x - 1\|_{i}$\cr} + \tenpoint\rm +\bigskip + +Another common author error is to put large (and even medium sized) +matrices in-line with the text, rather than displaying them. This +creates unattractive line spacing problems, and should be assiduously +avoided. Text-sized matrices (like $({a \atop b} {b \atop c})$) might +be used but anything much more complex than the example cited will +not be easy to read and should be displayed. + +More information on the formatting of equations and aligned +equations is found in Knuth [2]. Authors bear primary responsibility +for formatting their equations within margins and in an aesthetically +pleasing and informative manner. + +The SIAM macros include additional roman math words, or ``log-like" +functions, to those provided in standard \TeX. The following +commands are added: \verbatim:\const:, \verbatim:\diag:, \verbatim:\grad:, +\verbatim:\Range:, \verbatim:\rank:, and \verbatim:\supp:. +These commands produce the same word as the command name +in math mode, in roman type. + + +Groups of equations that are not directly related to each other +should normally be centered independently. This may be done through +the \TeX\ math command \verbatim:\displaylines{}:. Numbering +independently centered equations can be difficult, so Seroul and +Levy's [3] macro \verbatim:\ldisplaylinesno{}: has been included +in {\tt siamptex.sty}. \verbatim:\ldisplaylinesno{}: works just +like \verbatim:\leqalignno:, except no ampersand is used to align +the equations, since they are to be centered. + +\heading{4}{Text formatting} +Section and subsection headings are both included using the +\verbatim:\heading{}{}: command, which requires two arguments. The +first argument is for the number, and the second +is the title of the section or +subsection. + +No extra spacing should be placed between paragraphs. The +\verbatim:\heading: command inserts the required spacing between +sections. + +SIAM style does not normally make use of plain \TeX's +\verbatim:\item: command. The \verbatim:\meti: command is preferred for +lists of items beginning with, for instance, bullets ($\bullet$) or +roman numerals (iv). The \verbatim:\meti: command retains normal +paragraph shape but places all labels aligned flush right. For +example: + +\verbatim: +\meti{(i)} This is the first item. +\meti{(ii)} This is the second item of the series. + +: + +produces + +\meti{(i)} This is the first item. +\meti{(ii)} This is the second item of the series. +\medskip + +The \verbatim:\meti: macro was adapted from Seroul and Levy [3]. + +\heading{4.1}{Punctuation} +All standard punctuation and all numerals should be set in roman type +(upright) even within italic text. +The only exceptions are periods and commas. They may +be set to match the surrounding text. + +References to sections should use the symbol \S, generated by +\verbatim:\S:. (If the reference begins a sentence, the term ``Section'' +should be spelled out in full.) Authors should not redefine +\verbatim:\S:, say, to be a calligraphic S, because \verbatim:\S: +must be reserved for use as the section symbol. + +Authors sometimes confuse the use of various types of dashes. +Hyphens (\verbatim:-:, -) are used for some compound words (many +such words should have no hyphen but must be run together, +like ``nonzero,'' or split apart, like ``well defined.'' +Minus signs (\verbatim:$-$:, $-$) +should be used in math to represent subtraction or negative numbers. +En dashes (\verbatim:--:, --) are used for ranges (like 3--5, +June--August), or for joined names (like Runge--Kutta). Em dashes +(\verbatim:---:, ---) are used to set off a clause---such as this +one---from the rest of the sentence. + +\heading{4.2}{Theorems, lemmas, and proofs} +Theorems, lemmas, propositions, and so forth, have macros included +for correct formatting. Below is an example. + +\verbatim: +\thm{Theorem 4.1} +Sample theorem included for illustration. +Numbers and parentheses, like equation $(3.2)$, should be set +in roman type. Note that words in displayed equations, such as +$$ x^2 = Y^2 \sin z^2 \hbox{ for all } x $$ +will appear in italic type in a theorem, though normally +they should appear in roman.\endthm + +: + +This sample produces Theorem 4.1 below. + +\thm{Theorem 4.1} +Sample theorem included for illustration. +Numbers and parentheses, like equation $(3.2)$, should be set +in roman type. Note that words in displayed equations, such as +$$ x^2 = Y^2 \sin z^2 \hbox{ for all } x $$ +will appear in italic type in a theorem, though normally +they should appear in roman.\endthm + + +The \verbatim:\cor:, \verbatim:\dfn:, \verbatim:\lem:, and +\verbatim:\prop: commands +all work similarly. Named theorems should be designated with the +title in roman type, enclosed in parentheses. + +\verbatim: +\thm{Theorem 3.2 {\rm (sample theorem with title)}} + +: + +Proofs are illustrated in the following example: + +\verbatim: +\prf{Proof} +The body of the proof. +\qquad\endproof + +: + +If the proof ends with a displayed equation, the \verbatim:\endproof: +box \endproof\ should appear two ems (\verbatim:\qquad:) +from the end of the equation on line with it horizontally. + +\heading{5}{Figures and tables} +Figures and tables are best handled in \TeX\ by putting them within a +\verbatim:\topinsert \endinsert: or \verbatim:\midinsert \endinsert: +environment. The appropriate amount +of space should be left for the figure, and the caption should be +formatted to be centered or as a paragraph if more than one line. Text +should be italic, eight-point type, with the words ``Fig.~\#'' in small +caps. A sample follows. + +\verbatim: +\midinsert +\vskip 22pc +\centerline{\eightpoint{\smc Fig.~5.1}. \it Italic caption text.} +\endinsert + +: + +SIAM tables should be formatted in eight-point type, with enough +space left between entries and surrounding lines so that they do not +touch. Take particular care with super- and subscript characters. +See Knuth [2] or Seroul and Levy [3] for more information on +the formatting of tables in \TeX. Table captions are similar to +figure captions, but the word ``Table'' and the number appear on +a separate line from the caption text. + +SIAM supports the use of {\tt psfig} for including {\smc PostScript} +figures. All {\smc Post\-Script} figures should be sent in separate +files. See the {\tt psfig} documentation (from wherever you acquired +{\tt psfig}) for more details on the use +of this style option. It is a good idea to submit high-quality +hardcopy of all {\smc Post\-Script} figures just in case there +is difficulty in the reproduction of the figure. Figures produced +by other non-\TeX\ methods should be included as high-quality +hardcopy when the manuscript is submitted. + +\heading{6}{Bibliographies} +References are handled using the \verbatim:\Refs: command. +All names are to be keyed initial upper case cap and small +caps. Only the first and middle initials, followed by the +last name, are to be used. Last names should never be listed first. +Some representative sample entries are illustrated below: + +\verbatim| +\Refs + +\ref 1\\ {\smc A.~U Thorone}, {\it Title of paper with lower case +letters}, SIAM J. Abbrev. Correctly, 2 (1992), pp.~000--000.\endref + +\ref 2\\ \sameauthor, % generates a 3-em rule +{\it Title of paper appearing in book}, in Book Title: +With All Initial Caps, Publisher, Location, 1992.\endref + +\ref 3\\ {\smc W. Riter}, +{\it Title of another paper appearing in a book}, in The Book +Title, E.~D. One, E.~D. Two, and A.~N. Othereditor, eds., +Publisher, Location, 1992, pp.~000--000.\endref + +\ref 4\\ {\smc A.~U. Thorone, A.~U. Thortwo, and A.~U. Thorthree}, +{\it Title of Book{\rm III:} Note Initial Caps}, +Publisher, Location, pp.~000--000, 1994.\endref + +\ref 5\\ {\smc A. Notherauth}, {\it Title of paper that's not yet +published}, SIAM J. Abbrev. Correctly, to appear.\endref +| + +Other types of references fall into the same general pattern. See the +sample file or any SIAM journal for other examples. Authors must +correctly format their bibliography to be considered as having used +the macros correctly. An incorrectly formatted bibliography is not +only time-consuming for SIAM to process +but it is possible that errors may be introduced by +keyboarders/copy editors. + +As an alternative to the above style of reference, an alphanumeric +code may be used in place of the number (e.g., [AUTh90]). The same +\verbatim:\Refs: and \verbatim:\ref: commands are used, but the +command \verbatim:\resetrefindent{}: must be used before the +\verbatim:\Refs: command, with the widest expected alphanumeric code +as an argument. + +Another alternative is no number, simply the authors' names and +the year of publication following in parentheses. The rest of the +format is identical. To get an entry with no number in brackets +before it, use the \verbatim:\xref: command. This method is acceptable +but not encouraged. + +\heading{7}{Conclusion} Many other style suggestions and tips +could be given to help authors but are beyond the scope of this +document. Simple mistakes can be avoided by increasing your familiarity +with how \TeX\ functions. The books referred to throughout this document +are also useful to the author who wants clear, beautiful typography +with minimal mistakes. + +\Refs + +\ref 1\\ {\smc N.~J. Higham}, {\it Handbook of Writing for +the Mathematical Sciences}, Society for Industrial and Applied +Mathematics, Philadelphia, PA, 1993.\endref + +\ref 2\\ {\smc D.~E. Knuth}, {\it The \TeX book}, Addison Wesley, +Reading, MA, 1986.\endref + +\ref 3\\ {\smc R. Seroul and S. Levy}, {\it A Beginner's Book of +{\rm \TeX}}, Springer-Verlag, Berlin, New York, 1991.\endref + + +\bye diff --git a/Master/texmf-dist/tex/plain/siam/pexample.tex b/Master/texmf-dist/tex/plain/siam/pexample.tex new file mode 100644 index 00000000000..eb2c2f50101 --- /dev/null +++ b/Master/texmf-dist/tex/plain/siam/pexample.tex @@ -0,0 +1,523 @@ +% Sample file for SIAM's plain TeX macro package. +% 9-14-94 Paul Duggan +\input siamptex.sty + +% author defined macros included for illustrative purposes only. +% symbols for real numbers, complex, ... (\Bbb font from AMS-TeX +% fonts v2.x also usable) + +\def\fR{{\bf R}} +\def\fC{{\bf C}} +\def\fK{{\bf K}} + +% misc. operators +\def\Span {\mathop{\hbox{\rm span}}\nolimits} +\def\Range{\mathop{\hbox{\rm Range}}\nolimits} +\def\Det {\mathop{\hbox{\rm det}}} +\def\Re {\mathop{\hbox{\rm Re}}} +\def\Im {\mathop{\hbox{\rm Im}}} +\def\Deg {\mathop{\hbox{\rm deg}}} + +% misc. + +\def\Kr{\hbox{\bf K}} +\def\K { { K}} +\def\sT{\hbox{$\cal T$}} +\def\sB{\hbox{$\cal B$}} + +\def\bmatrix#1{\left[ \matrix{#1} \right]} + +% Each of the following commands have to be filled in with +% something. If the data is unknown, the arguments can be +% left blank. + +\topmatter +\journal{SIAM J. E{\smc XAMPLE} F{\smc ILES}} +\vol{1} +\no{1, pp.~000--000} +\date{October 1994} +\copyyear{1994} +\code{000} + + +\title SAMPLE FILE FOR SIAM PLAIN \TeX\ MACRO +PACKAGE\endtitle + +\shorttitle{SIAM MACRO EXAMPLE} + +\recdate{*}{October 1, 1994; accepted by the editors Month, x, +xxxx. This work was supported by the Society for Industrial +and Applied Mathematics, Philadelphia, Pennsylvania} + +\author Paul Duggan\fnmark{$^{\dag}$} \and Various A.~U. +Thors\fnmark{$^{\ddag}$}\endauthor + +\address{$^{\dag}$}{Composition Department, Society for +Industrial and Applied Mathematics, 3600 University City +Science Center, Philadelphia, Pennsylvania, 19104-2688 +({\tt duggan@siam.org})} + +\address{$^{\ddag}$}{Various affiliations, supported by +various foundation grants} + +\abstract{An example of SIAM \TeX\ macros is presented. +Various aspects of composing manuscripts for SIAM's journals +are illustrated with actual examples from accepted +manuscripts. SIAM's stylistic standards are adhered to +throughout, and illustrated.} + +\keywords polynomials, SI model\endkeywords + +\subjclass 33H40, 35C01\endsubjclass + +% if there is only one AMS subject number, the +% command \oneclass should precede the \subjclass command. + +\endtopmatter + +\heading{1}{Introduction and examples} +This paper presents a sample file for the use of SIAM's +\TeX\ macro package. It illustrates the features of the +macro package, using actual examples culled from various +papers published in SIAM's journals. This sample will provide +examples of how to use the +macros to generate standard elements of journal papers, +e.g., equations, theorems, or figures. This paper also +serves as an exmple of SIAM's stylistic preferences for the +formatting of such elements as bibliographic references, +displayed equations, and aligned equations, among others. +Some special circumstances are not dealt with this the +sample file; for that information, please see the +associated documentation file. + +{\it Note}. This paper is not to be read in any form for +content. The conglomeration of equations, lemmas, and other +text elements were put together solely for typographic +illustrative purposes. + +For theoretical reasons, it is desirable to find characterizations of the +conditions of breakdown of the algorithms that are based on the key {\it +spaces} $\Kr_n(r^{(0)},A)$ and $\Kr_n(\tilde r^{(0)},A^*)$ rather than +the {\it formulas} for the algorithms. In particular, we will +characterize breakdown of the three Lanczos algorithms in terms of the +{\it moment matrices} $\K_n(\tilde r^{(0)},A^*)^*\K_n(r^{(0)},A)$ and +$\K_n(\tilde r^{(0)},A^*)^*A\K_n(r^{(0)},A)$. Here we define the matrix +$\K_n(v,A)=\bmatrix{v&Av&\cdots&A^{n-1}v\cr}$, a matrix whose columns span +the Krylov space $\Kr_n(v,A)$. + +The following three theorems give exact conditions for breakdown of the +above algorithms. Detailed proofs may be found in [3]. A +result similar to Theorem 2 is found in [1]; see also [5]. + + +\thm{Theorem 1 {\rm (Lanczos--Orthodir breakdown)}} +Suppose Lanczos/Orthodir has successfully generated +$u^{(n-1)}\not=u$. Then the following are equivalent: + +\meti{$\bullet$} The algorithm does not break down at step $n$. + +\meti{$\bullet$} The matrix $\K_n(\tilde r^{(0)},A^*)^*A\K_n(r^{(0)},A)$ +is nonsingular. + +\meti{$\bullet$} There exists a unique iterate $u^{(n)}$ satisfying $(2)$. +\endthm + + +\thm{Theorem 2 {\rm (Lanczos--Orthomin breakdown)}} +Suppose Lanczos/Orthomin has successfully generated $u^{(n-1)}\not=u$. +Then the following are equivalent: + +\meti{$\bullet$} The algorithm breaks down at step $n$. + +\meti{$\bullet$} Either +$\K_{n-1}(\tilde r^{(0)},A^*)^*\K_{n-1}(r^{(0)},A)$ or +$\K_n(\tilde r^{(0)},A^*)^*A\K_n(r^{(0)},A)$ is singular. +\endthm + + +\prop{Proposition 3 {\rm (zero sets of polynomials)}} +Let $\fK=\fR$ or $\fC$. If $P$ is a complex nonzero polynomial in the +variables $x_1,x_2,\ldots ,x_N\in\fK$, then $P(x)\not=0$ for almost every +$x=(x_1,x_2,\ldots,x_N)\in \fK^N$. +\endprop + +\prf{Proof} +If $\fK=\fR$ and $P$ is nonzero, then either $\Re P(z)$ or $\Im P(z)$ +is a nonzero (real) polynomial; if $\fK=\fC$, we may decompose each $x_i$ +into real and imaginary parts, giving $2N$ variables, and consider the +real polynomial $P(x)^*P(x)$. In any case, we may assume without loss of +generality that $P$ is a nonzero real polynomial of real variables. + +We know that for any point $x$, the polynomial $P$ is the zero polynomial +if and only if the polynomial and all its derivatives are zero at $x$. +Let $V_0$ denote the set of zeros of $P$ in $\fR^N$. Suppose the set +$V_0$ has nonzero measure. We know from integration theory (see, for +example, [6, pp.\ 128f]) that almost every point of $V_0$ is +a point of density in each of the $N$ coordinate directions. We recall +that $x\in\fR$ is a point of density of a measurable subset +$S\subseteq\fR$ if for any sequence of intervals $I_n$ such that +$x\in I_n$ with measure $m(I_n)\rightarrow 0$ we have +$m(S\cap I_n)/m(I_n)\rightarrow 1$. + +It is easily seen that at such points in $V_0$, the first +partial derivatives of $P$ must necessarily be zero. Let $V_1$ be the +points of $V_0$ where all first derivatives are also zero. We have just +shown that $V_0$ and $V_1$ both have the same nonzero measure. The +argument +may be repeated for $V_1$ to show all second partial derivatives of $f$ +are zero at almost every point of $V_0$, and so forth, resulting in the +fact that $P$ and all its derivatives are zero on a set which has nonzero +measure. The proof is completed by selecting any one of these points. +\qquad\endproof + +\thm{Theorem 4 {\rm (Lanczos breakdown, iterate $n$)}} +Let $\fK=\fR$ or $\fC$, $A, \tilde Z\in\fK^{N\times N}$, and $n\leq d(A)$. +Then exactly one of the following three conditions holds for the Lanczos +method with $\tilde r^{(0)}=\tilde Z^* r^{(0)}$. + +\meti{\rm (i)} Hard breakdown at step $n$ occurs for every vector +$r^{(0)}\in\sT_n(A)\cap\fK^N$ $($and thus at least for almost every +$r^{(0)}\in\fK^N)$. + +\meti{\rm (ii)} Hard breakdown at step $n$ occurs for a nonempty measure-zero +set of vectors $r^{(0)}\in\sT_n(A)\cap\fK^N$ +$($and thus a nonempty measure-zero set of vectors in $\fK^N)$. + +\meti{\rm (iii)} Hard breakdown at step $n$ occurs for no vectors +$r^{(0)}\in\sT_n(A)\cap\fK^N$ $($and thus for at most a measure-zero set of +vectors in $\fK^N)$. + +Furthermore, the same result holds if ``hard breakdown'' is replaced by +``soft breakdown'' in the statement of this theorem. +\endthm + + +\prf{Proof} +For vectors $r^{(0)}\in\sT_n(A)\cap\fK^N$, breakdown is equivalent to +singularity of an appropriate moment matrix. The set $\sT_n(A)\cap\fK^N$ +amounts to almost +every vector in $\fK^N$. Now, by Corollary 5, the set $S_n$ of vectors in +$\fK^N$ for which the moment matrix of dimension $n$ is singular is either +the set of all vectors or a subset of measure zero. If the moment matrix +is singular for every vector (i.e., $S_n=\fK^N$), then it is singular for +every vector in $\sT_n(A)\cap\fK^N$, giving case (i) above. Otherwise the +set $S_n$ is measure zero in $\fK^N$. Thus +$\sB_n\equiv S_n\cap(\sT_n(A)\cap\fK^N)$ is of measure zero +and is either empty or nonempty. +\qquad\endproof + +\heading{2}{Tables and figures} +In Tables 1 and 2 we consider the unpreconditioned problem and also the (left) +ILU- and MILU-preconditioned problem (see [2] and [4]). Runs for which +convergence was not possible in ITMAX iterations are labeled by (--). + + +\topinsert +\hbox{\vbox{ \eightpoint +{\parindent 0pt +\centerline{\smc Table 1} +\centerline{\it Model problem, $h^{-1}=128$, {\rm ITMAX=3000}. + Number of iterations.}\vskip 6pt +\hfil\vbox{\offinterlineskip +\hrule +\halign{&\vrule#&\strut\ \hfil#\ \cr +height2pt&\omit&&\omit&&\omit&&\omit&&\omit + &&\omit&&\omit&&\omit&&\omit&&\omit&&\omit&\cr +&{\rm method $\backslash$ Dh: } & + &0&&2${}^{-3}$&&2${}^{-2}$&&2${}^{-1}$&&2${}^{0}$& + &2${}^{1}$&&2${}^{ 2}$&&2${}^{ 3}$&&2${}^{ 4}$&&2${}^{5}$&\cr +height2pt&\omit&&\omit&&\omit&&\omit&&\omit + &&\omit&&\omit&&\omit&&\omit&&\omit&&\omit&\cr +\noalign{\hrule} +height2pt&\omit&&\omit&&\omit&&\omit&&\omit + &&\omit&&\omit&&\omit&&\omit&&\omit&&\omit&\cr +&{GMRES}($\infty$) \hfill & +& 290&& 269&& 245&& 220&& 200&& 189&& 186&& 189&& 207&& 249&\cr +&{BCG} \hfill & +& 308&& 341&& 299&&1518&& -- && -- && -- && -- && 533&& -- &\cr +&{BCG}{\rm, random $u^{(0)}$} \hfill & +& 309&& 354&& 300&& 310&& 313&& 301&& 299&& 302&& 290&& 293&\cr +&{BCGNB} \hfill & +& 308&& 353&& 284&& 338&& 253&& 240&& 243&& 240&& 302&& 962&\cr +&{CGS} \hfill & +& 272&& 254&& 222&& -- && -- && -- && -- && -- && -- && -- &\cr +&{CGS}{\rm, random $u^{(0)}$} \hfill & +& 193&& 189&& 200&& 192&& 193&& 175&& 225&& 212&& 216&& 197&\cr +&{CGSNB} \hfill & +& 272&& 284&& 212&& 196&& 151&& 162&& 158&& 173&& 156&& 256&\cr +height1pt&\omit&&\omit&&\omit&&\omit&&\omit + &&\omit&&\omit&&\omit&&\omit&&\omit&&\omit&\cr +} \hrule}\hfil}}} +\endinsert + + +\topinsert + +\hbox{\vbox{ \eightpoint +{\parindent 0pt +\centerline{\smc Table 2} + +\centerline{\it Model Problem, $h^{-1}=128$,} +\centerline{\it {\rm MILU}-preconditioning, {\rm ITMAX=500.} +Number of iterations.} + +\medskip + +\hfil\vbox{\offinterlineskip +\hrule +\halign{&\vrule#&\strut\ \hfil#\ \cr +height2pt&\omit&&\omit&&\omit&&\omit&&\omit + &&\omit&&\omit&&\omit&&\omit&&\omit&&\omit&\cr +&{\rm Method $\backslash$ Dh: } & + &0&&2${}^{-3}$&&2${}^{-2}$&&2${}^{-1}$&&2${}^{0}$& + &2${}^{1}$&&2${}^{ 2}$&&2${}^{ 3}$&&2${}^{ 4}$&&2${}^{5}$&\cr +height2pt&\omit&&\omit&&\omit&&\omit&&\omit + &&\omit&&\omit&&\omit&&\omit&&\omit&&\omit&\cr +\noalign{\hrule} +height2pt&\omit&&\omit&&\omit&&\omit&&\omit + &&\omit&&\omit&&\omit&&\omit&&\omit&&\omit&\cr +&{\rm {GMRES}($\infty$)} \hfill & +& 27&& 25&& 24&& 26&& 28&& 28&& 25&& 19&& 14&& 10&\cr +&{\rm {GMRES}($\infty$), random $u^{(0)}$} \hfill & +& 33&& 29&& 28&& 29&& 31&& 31&& 29&& 24&& 19&& 14&\cr +&{\rm {BCG}} \hfill & +& 31&& 27&& 29&& 33&& 30&& 37&& 30&& 23&& 15&& 10&\cr +% &{BCG}, random $u^{(0)}$, $\gamma=.1$ \hfill & +% & 35&& 30&& 31&& 35&& 40&& 37&& 34&& 27&& 20&& 15&\cr +&{\rm {BCG}, random $u^{(0)}$} \hfill & +& 38&& 34&& 33&& 37&& 44&& 40&& 38&& 29&& 23&& 18&\cr +&{\rm {BCGNB}} \hfill & +& 28&& 27&& 29&& 30&& 34&& 35&& 30&& 23&& 15&& 10&\cr +&{\rm {CGS}} \hfill & +& 21&& 18&& 17&& 20&& 22&& 22&& 19&& 15&& 9&& 6&\cr +&{\rm {CGS}, random $u^{(0)}$} \hfill & +& 24&& 18&& 20&& 22&& 22&& 23&& 21&& 16&& 12&& 9&\cr +&{\rm {CGSNB}} \hfill & +& 21&& 18&& 17&& 20&& 22&& 27&& 20&& 15&& 9&& 6&\cr +height1pt&\omit&&\omit&&\omit&&\omit&&\omit + &&\omit&&\omit&&\omit&&\omit&&\omit&&\omit&\cr +} \hrule}\hfil}}} +\endinsert + +We make the following observations about these runs. + +\meti{$\bullet$} For the unpreconditioned problem, the standard +{BCG} and {CGS} algorithms break down in a number of cases, but the use +of random $u^{(0)}$ or the use of {BCGNB} or {CGSNB} +resulted in convergence. Furthermore, the iteration counts for the +algorithms {BCG} and {BCGNB} are in +general comparatively close to those of the ``best'' method, +{GMRES}($\infty$), while these algorithms have short economical +recurrences, unlike {GMRES}($\infty$). This underscores the +importance of the Lanczos algorithms as economical solution techniques. + +\meti{$\bullet$} For the ILU-preconditioned problems, in most cases +all methods worked well. For the case of $Dh=1$, {BCG} gave +an excessive number of iterations, but this was remedied significantly +by {BCGNB} and much more so +by the use of random $u^{(0)}$. Similarly, {CGS} could +not converge, but {CGSNB} and {CGS} with random +$u^{(0)}$ both converged. + +\meti{$\bullet$} For all of the MILU-preconditioned problems, all of +the Lanczos-type algorithms performed quite well. In particular, the +{BCG} algorithm gave approximately the same number of +iterations as {GMRES}($\infty$). + +Figures 1 and 2 give representative plots of the convergence behavior of the +algorithms for the case of $h^{-1}=128$, $Dh=4$, and no preconditioning. +These results show that the new algorithms keep the residual size +better behaved than the standard {BCG} and {CGS} +algorithms over the course of the run. + +\topinsert +\vskip 3.2in +\centerline{\eightpoint\smc Fig.~1. \it Residual +behavior: $h^{-1}=128$, $Dh=4$.} +\endinsert + + +\topinsert + \vskip 3.2in +\centerline{\eightpoint\smc Fig.~2. \it Residual +behavior: $h^{-1}=128$, $Dh=4$.} +\endinsert + +We now consider a more difficult class of finite difference problems, +namely, central finite differencing applied to the Dirichlet problem +$$ -u_{xx}(x,y) - u_{yy}(x,y) + + D[(y-\textstyle{1\over 2}\displaystyle) u_x(x,y) + + (x-\textstyle{1\over 3}\displaystyle) + (x-\textstyle{2\over 3}\displaystyle) u_y(x,y)], $$ +$$ - 43\pi^2u(x,y) = G(x,y) \quad {\rm on}\ \Omega=[0,1]^2,$$ +$$u(x,y) = 1 + xy \quad \hbox{\rm on}\ \partial\Omega,$$ +with $G(x,y)$ chosen as before so that the true solution is $u(x,y)=1+xy$. +Again, we let $h$ denote the mesh size in each direction. For $D=0$ +and $h$ small, the matrix generated by this problem is a symmetric +indefinite matrix with 16 distinct negative eigenvalues and the rest +of the spectrum positive. + +The standard conjugate residual algorithm applied to this problem with +$h^{-1}=128$ and $D=0$ requires 766 iterations to converge to +$||r^{(n)}||/||b||<\zeta=10^{-6}$. In any case, this is a difficult +problem to solve. + + \def\qed{\vrule height8pt width4pt depth0pt\par\medskip} + \def\Zero{{\bf 0}} + \def\dis{\displaystyle} + \def\b{\beta} + \def\r{\rho} + \def\X{{\bf X}} + \def\Y{{\bf Y}} + \def\bb{{\bar \beta}} + \def\tbcr{\theta\bb c_h \rho_h} + \def\ep{\varepsilon} + + + +Figures 3(a) and 3(b) show the compartmental diagrams for SI models without +and with deaths due to the disease, for the situation in which the infectious +period has only one stage. Figures 4(a) and 4(b) give the corresponding models +with $m$ stages of infection. Venereal +warts, caused by the human papilloma virus, and ordinary herpes are examples +of sexually transmitted diseases without deaths +due to the disease, although both are not quite SI diseases because of +partial immunity. AIDS is the example of an SI disease with death due to +the disease. Although our main focus is on the latter, we present results +on SI models without deaths due to the +disease because the simplification in the dynamics of such models + throws light on the case with disease-related deaths. + +\topinsert +\vskip 2in +\centerline{\eightpoint {\smc Fig.} 3(a). SI {\it model for subgroup $i$, without death +due to the disease.}} +\vskip 2in +\centerline{\eightpoint {\smc Fig.} 3(b). SI {\it model with death due to the disease.}} +\endinsert + +\topinsert +\vskip 2in +\centerline{\eightpoint {\smc Fig.} 4(a). SI {\it model without deaths due to the +disease with $m$ stages of infection.}} +\vskip 2in +\centerline{\eightpoint {\smc Fig.} 4(b). SI {\it model with deaths due to the disease, +with $m$ stages of infection.}} +\endinsert + +\heading{3}{Equations and alignments} +The equations for the system follow directly from the definitions and the +compartmental diagrams. For one infected stage with no disease-related +deaths, the equations are +$$ \dot X_i=-X_ig_i-\mu X_i+U_i, \leqno(1)$$ +$$ \dot Y_i=X_ig_i-\mu Y_i. \leqno(2)$$ +If there are multiple stages to the infection, (2) is replaced by +(3)--(5) as follows: +$$\leqalignno{\dot Y_{i1}&=X_ig_i-(k+\mu)Y_{i1}, &(3)\cr +\dot Y_{ir}&=kY_{i,r-1}-(k+\mu)Y_{ir},\qquad r=2,\ldots,m-1 &(4)\cr +\dot Y_{im}&=kY_{i,m-1}-\mu Y_{im}. &(5)\cr }$$ + + + +\heading{3.1}{The SI model with structured mixing} +In this subsection we write the equations for the SI model with +structured mixing, with one infected stage and with deaths due to the +disease. The equations for multiple infected stages follow easily, as do +those for SI models without death due to the disease. Recall that $f_{is}$ +gives the fraction of population subgroup $i$'s +contacts that are made in activity group $s$. The total contact rate of +susceptibles from population subgroup $i$ in activity group $s$ must be +$c_iX_if_{is}$. Let $\rho_{ij}(s)$ be the fraction of the contacts of group +$i$ that are with members of group $j$, within activity group $s$. +Assuming random allocation of the susceptibles and infecteds from each +population subgroup to the activity groups, the fraction infected in group +$j$ in activity group $s$ must be $Y_j/N_j$, giving +$$ c_iX_if_{is}\rho_{ij}(s)\beta_j{Y_j \over N_j}\leqno(6) $$ +for the rate at which susceptibles in $i$ are infected by contacts +with infecteds from $j$ in activity group $s$. Thus, in this case, $g_i$ is +given by +$$ + g_i=c_i\sum_sf_{is}\sum_j\rho_{ij}(s)\beta_j{Y_j \over N_j}, +\leqno(7) + $$ +and (1a) and (1b) become +$$ \dot X_i=-c_iX_i\sum_sf_{is}\sum_j\rho_{ij}(s)\beta_j{Y_j \over +N_j}-\mu X_i+U_i, \leqno(8) $$ +$$ \dot Y_i=c_iX_i\sum_sf_{is}\sum_j\rho_{ij}(s)\beta_j{Y_j \over +N_j}-(\mu+k)Y_i. \leqno(9) $$ + +\heading{3.2}{Structured mixing within activity groups} +If the mixing within activity groups is proportional mixing, then +$\rho_{ij}(s)$ is given by (10): +$$\rho_{ij}(s)={f_{js}c_jN_j\over \sum_pf_{ps}c_pN_p}, \leqno(10)$$ +and (8) and (9) become (11) and (12): +$$\dot X_i=-c_iX_i\sum_sf_{is}{\sum_jf_{js}c_j\beta_jY_j \over +\sum_jf_{js}c_jN_j}-\mu X_i+U_i \leqno(11)$$ +$$\dot Y_i=c_iX_i\sum_sf_{is}{\sum_jf_{js}c_j\beta_jY_j \over +\sum_jf_{js}c_jN_j}-(k+\mu)Y_i. \leqno(12)$$ + +Expressions (11) and (12) show an important consequence of death due +to the disease. If there are no deaths due to the disease, $N_j$ is +constant on the asymptotically stable invariant subspace $U_j=\mu +N_j$ for all $j$, and the first term, the nonlinear term, in +(11) and (12) is a sum of {\it quadratic} terms. If there are deaths +due to the disease, $N_j$ is no longer constant and the first term is +a sum of rational expressions, each homogeneous of degree one. This +observation extends to SIS, SIR, and SIRS models. + + + +\Refs + + +\ref 1\\ +{\smc R. Fletcher}, {\it Conjugate gradient methods for indefinite +systems}, in Numerical Analysis Dundee 1975, G.~A. Watson, ed., +Springer-Verlag, New York, Lecture Notes in Math. 506, +1976, pp. 73--89. +\endref + + +\ref 2\\ +{\smc I. Gustafsson}, {\it Stability and rate of convergence of +modified incomplete Cholesky factorization methods}, Ph.D. thesis, +Chalmers University of Technology and the University of Goteborg, +Goteborg, Sweden, 1979. +\endref + + +\ref 3\\ +{\smc W.~D. Joubert}, {\it Generalized conjugate gradient and +Lanczos methods for the solution of nonsymmetric systems of linear +equations}, Ph.D. thesis and Report +CNA-238, Center for Numerical Analysis, University of Texas, +Austin, TX, January 1990. +\endref + + +\ref 4\\ +{\smc J.~A. Meijerink and H.~A. van der Vorst}, {\it An iterative +solution method for linear systems of which the coefficient matrix is +a symmetric $M$-matrix}, Math. Comp., 31 (1977), pp.~148--162. +\endref + + + +\ref 5\\ +{\smc Y.~Saad}, {\it The Lanczos biorthogonalization algorithm and +other oblique projection methods for solving large unsymmetric systems}, +SIAM J. Numer. Anal., 19 (1982), pp. 485--506. +\endref + + +\ref 6\\ +{\smc S. Saks}, {\it The Theory of the Integral}, G.~E. Stechert, +New York, 1937. +\endref + +\ref 7\\ +{\smc M. Tinkham}, {\it Introduction to +Superconductivity}, McGraw-Hill, New York, 1975. +\endref + +\bye diff --git a/Master/texmf-dist/tex/plain/siam/siamptex.sty b/Master/texmf-dist/tex/plain/siam/siamptex.sty new file mode 100644 index 00000000000..3ffce26af64 --- /dev/null +++ b/Master/texmf-dist/tex/plain/siam/siamptex.sty @@ -0,0 +1,373 @@ +% SIAMPTEX.STY; 12-11-92; Paul Duggan, Society for Industrial +% and Applied Mathematics. From +% Ralph Youngen's siamtex.sty +% 9-14-94 ; Paul Duggan Revised. +% This file may be freely distributed but may not be altered in +% any way. +% +% This is a file of macros and definitions for creating an article +% for publication in a SIAM journal. +% +% Make the @ sign a letter for internal control sequences. +\catcode`\@=11 +% +% Report the version number of this package. +\message{ *** SIAM Plain TeX macro package, version + 2.1.1, SEPTEMBER-1994 ***} +% +%%% +%%% FONTS +%%% +\font\tenrm=cmr10 +\font\tenbf=cmbx10 +\font\tenit=cmti10 +\font\tentt=cmtt10 +\font\tensmc=cmcsc10 +\def\tenpoint{% + \def\rm{\fam0\tenrm}\def\bf{\fam\bffam\tenbf}% + \def\it{\fam\itfam\tenit}\def\smc{\tensmc}\def\tt{\tentt} + \textfont0=\tenrm \scriptfont0=\sevenrm + \textfont1=\teni \scriptfont1=\seveni + \textfont2=\tensy \scriptfont2=\sevensy + \textfont3=\tenex \scriptfont3=\tenex +\baselineskip=12pt\rm}% + +\font\ninerm=cmr9 +\font\ninebf=cmbx9 +\font\nineit=cmti9 +\def\ninepoint{% + \def\rm{\ninerm}\def\bf{\ninebf}% + \def\it{\nineit}\baselineskip=11pt\rm}% + +\font\eightrm=cmr8 +\font\eightbf=cmbx8 +\font\eightit=cmti8 +\font\eighti=cmmi8 +\font\eightsy=cmsy8 +\font\eightsmc=cmcsc10 at 8pt +\font\eighttt=cmtt8 + \def\eightpoint{% + \def\rm{\fam0\eightrm}\def\bf{\fam\bffam\eightbf}% + \def\it{\fam\itfam\eightit}\def\smc{\eightsmc}\def\tt{\eighttt} + \textfont0=\eightrm \scriptfont0=\sixrm + \textfont1=\eighti \scriptfont1=\sixi + \textfont2=\eightsy \scriptfont2=\sixsy +\textfont3=\tenex \scriptfont3=\tenex +\baselineskip=10pt\rm}% + +\font\sixrm=cmr6 +\font\sixbf=cmbx6 +\font\sixi=cmmi6 +\font\sixsmc=cmr5 +\font\sixsy=cmsy6 +\def\sixpoint{% + \def\rm{\sixrm}\def\bf{\sixbf}% + \def\smc{\sixsmc}\baselineskip=8pt\rm}% + +\fontdimen13\tensy=2.6pt +\fontdimen14\tensy=2.6pt +\fontdimen15\tensy=2.6pt +\fontdimen16\tensy=1.2pt +\fontdimen17\tensy=1.2pt +\fontdimen18\tensy=1.2pt + +\def\rheadfont{\eightpoint\rm} +\def\titlefont{\tenpoint\bf} +\def\authorfont{\eightpoint\smc} +\def\dedicatefont{\ninepoint\it} + + +%%% +%%% ROMAN PUNCTUATION +%%% (WARNING: may cause incompatibility with psfig) +%%% +\def\othersmcolon{;} +\catcode`\;= \active +\def;{\relax\ifmmode\othersmcolon + \else\ifdim\fontdimen1\the\font>0pt\/{\rm \othersmcolon}% + \else\othersmcolon\fi\fi} + + +%%% DIMENSIONS +%%% +\hsize=31pc +\vsize=50pc +\parindent=2em + + +%%% TOPMATTER MACROS +%%% +\newif\ifkeywords@ +\newif\ifsubjclass@ +\newif\ifdedicate@ +\newif\ifrecdate@ +\newif\ifoneclass@ + +\keywords@false +\subjclass@false +\dedicate@false +\recdate@false +\oneclass@false + +\def\title#1\endtitle{\def\thetitle{\uppercase{#1}}% + \def\\{\relax\ }\xdef\rightrh{\uppercase{#1}}} + +\def\shorttitle#1{\xdef\rightrh{\uppercase{#1}}} + +\let\protect\relax + +\def\author#1\endauthor{% + \def\and{\hbox{\sixrm AND }}\def\\{\break} + % prevent \uppercase when typesetting + \def\theauthor{\uppercase{#1}}% + {% + \def\\{\relax\ }% change \\ to be a space in the running head + \def\fnmark##1{}% turn address off in the running head + \def\and{and }% "and" is same size as names in running head + \def\protect{\noexpand\protect\noexpand} + \xdef\leftrh{\expandafter{\uppercase{#1}}}% + }} + +\def\shortauthor#1{\def\and{and }\xdef\leftrh{\uppercase{#1}}} + +\gdef\fnmark#1{#1} +\gdef\address#1#2{\makefootnote@{\textfont2=\eightsy #1}{#2\unskip.}} +\def\journal#1{\def\thejournal{#1}} +\def\SIMAC{\journal{SIAM J{\smc OURNAL} M{\smc ACRO}}} +\def\SIAP{\journal{SIAM J. A{\smc PPL.} M{\smc ATH.}}} +\def\SICOMP{\journal{SIAM J. C{\smc OMPUT.}}} +\def\SICON{\journal{SIAM J. C{\smc ONTROL} {\smc AND} O{\smc PTIMIZATION}}} +\def\SIDMA{\journal{SIAM J. D{\smc ISC.} M{\smc ATH.}}} +\def\SIMA{\journal{SIAM J. M{\smc ATH.} A{\smc NAL.}}} +\def\SIMAX{\journal{SIAM J. M{\smc ATRIX} A{\smc NAL.} A{\smc PPL.}}} +\def\SINUM{\journal{SIAM J. N{\smc UMER.} A{\smc NAL.}}} +\def\SIOPT{\journal{SIAM J. O{\smc PTIMIZATION}}} +\def\SISC{\journal{SIAM J. S{\smc CI.} C{\smc OMPUT.}}} +\def\SIREV{\journal{SIAM R{\smc EVIEW}}} + + +\def\copyyear#1{\def\thecopyyear{#1}} +\copyyear{1989} +\def\vol#1{\def\thevol{#1}} +\def\no#1{\def\theno{#1}} +\def\date#1{\def\thedate{#1}} +\def\code#1{\def\thecode{#1}} +\def\dedicate#1{\dedicate@true\def\thededicate{#1}} +\def\keywords#1\endkeywords{\keywords@true\def\thekeywords{#1}} +\def\subjclass#1\endsubjclass{\subjclass@true\def\thesubjclass{#1}} +\def\oneclass{\oneclass@true} +\long\def\abstract#1{\def\theabstract{#1}} + +\def\raggedcenter{\leftskip=0pt plus 1fill \rightskip=0pt plus 1fill} + +\def\copyright#1{{\ooalign{\hfil\raise.07ex\hbox{c}\hfil\crcr#1\char"0D}}} + +\def\recdate#1#2{\global\recdate@true + \gdef\recdate@{#1Received by the editors \ignorespaces#2\unskip.}% + \makefootnote@{}{\recdate@}} + +\let\topmatter=\relax +\def\endtopmatter{% + \global\headline={\hss\vtop to \z@ {% + \sixpoint\rm\noindent\thejournal \hfill% + \rm\copyright{\sevensy}\rm% + \ \thecopyyear\ Society for Industrial and Applied Mathematics\par + \noindent Vol. \thevol , No. \theno , \thedate\hfill\thecode\par + \vss}\hss}% + \leavevmode\vskip8pt + \vbox{\noindent\raggedcenter\let\\=\break\titlefont\thetitle + \ifrecdate@*\fi} + \vskip6pt + \vbox{\noindent\raggedcenter\let\\=\break\authorfont\theauthor} + \ifdedicate@ + \vskip6pt + \vbox{\noindent\raggedcenter\let\\=\break\dedicatefont + \thededicate} + \fi + \vskip14pt + {\eightpoint{\bf Abstract.\ }\theabstract\par + \ifkeywords@ + \vskip10pt + {\bf Key words.} \thekeywords\par + \fi + \ifsubjclass@ + \vskip10pt + {\bf AMS subject classification\ifoneclass@\else s\fi. }% + \thesubjclass\par + \fi} + \vskip8pt + \tenpoint} + + +%%% THEOREM AND OTHER MACROS +%%% +\def\heading#1#2{% + \vskip6pt{\bf #1.\enspace\ignorespaces#2.\enspace}\ignorespaces} + +\def\thm#1{{\smc #1.}\begingroup\it\enspace\ignorespaces} +\let\lem=\thm +\let\cor=\thm +\let\prop=\thm +\let\dfn=\thm + +\def\endthm{\endgroup} +\let\endlem=\endthm +\let\endcor=\endthm +\let\endprop=\endthm +\let\enddfn=\endthm + +\def\prf#1{{\it #1}.\rm\enspace\ignorespaces} +\let\rem=\prf +\let\case=\prf + +\def\endproof{\vbox{\hrule height0.8pt\hbox{% + \vrule height1.3ex width0.8pt\hskip0.8ex + \vrule width0.8pt}\hrule height0.8pt + }} + + +%%% FORMATTING AND MATH +%%% +%%% NEW ROMAN MATH OPERATORS +%%% +\def\const{\mathop{\rm const}\nolimits} +\def\diag{\mathop{\rm diag}\nolimits} +\def\grad{\mathop{\rm grad}\nolimits} +\def\Range{\mathop{\rm Range}\nolimits} +\def\rank{\mathop{\rm rank}\nolimits} +\def\supp{\mathop{\rm supp}\nolimits} + +%%% Centered displays, with numbering +%%% + +\def\ldisplaylinesno#1{\displ@y\halign{ + \hbox to\displaywidth{$\@lign\hfil\displaystyle##\hfil$}& + \kern-\displaywidth\rlap{$##$}\kern\displaywidth\crcr + #1\crcr}} + +%%% \meti to be used instead of \item +%%% +\def\meti#1{\parindent=2\parindent +\par\indent\llap{#1\enspace}\ignorespaces\parindent=.5\parindent} +\def\metimeti#1{\parindent=2\parindent +\par\indent\llap{#1\enspace}\ignorespaces\parindent=.5\parindent} + + +%%% Miscellaneous + +%%% REFERENCES + +\newdimen\refindent@ +\newdimen\refhangindent@ +\newbox\refbox@ +\setbox\refbox@=\hbox{\eightpoint\rm [00]}% Default 2 digits +\refindent@=\wd\refbox@ + +\def\resetrefindent#1{% + \setbox\refbox@=\hbox{\eightpoint\rm [#1]}% + \refindent@=\wd\refbox@} + +\def\Refs{% + \unskip\vskip2pc + \centerline{\eightpoint\rm REFERENCES}% + \penalty10000 + \vskip4pt + \penalty10000 + \refhangindent@=\refindent@ + \global\advance\refhangindent@ by 2em + \global\everypar{\hangindent\refhangindent@}% + \parindent=0pt\eightpoint\rm} + +\def\XRefs{% + \unskip\vskip2pc + \centerline{\eightpoint\rm REFERENCES}% + \penalty10000 + \vskip4pt + \penalty10000 + \refhangindent@=\refindent@ + \global\everypar{\hangindent\refhangindent@}% + \parindent=0pt\eightpoint\rm} + +\def\sameauthor{\leavevmode\vbox to 1ex{\vskip 0pt plus 100pt + \hbox to 3em{\leaders\hrule\hfil}\vskip 0pt plus 300pt}} + +\def\ref#1\\#2\endref{\leavevmode\hbox to \refindent@{\hfil[#1]}\enspace #2\par} + +\def\xref\\#1\endref{\leavevmode #1\par} + +%%% OUTPUT + +\global\footline={\hss\eightpoint\rm\folio\hss}% first page +\output{\plainoutput} +\def\plainoutput{\shipout\vbox{\makeheadline\pagebody\makefootline}% + \advancepageno + \ifnum\pageno>1 + \global\footline={\hfill}% + \fi + \ifodd\pageno + \global\headline={\hss\rightrh\hss{\tenpoint\rm\folio}}% + \else + \global\headline={\hskip-8pt{\tenpoint\rm\folio}\hss\leftrh\hss}% + \fi + \ifnum\outputpenalty>-\@MM \else\dosupereject\fi} +\def\pagebody{\vbox to\vsize{\boxmaxdepth\maxdepth \pagecontents}} +\def\makeheadline{\vbox to\z@{\vskip-22.5\p@ + \line{\vbox to8.5\p@{}\rheadfont\the\headline}\vss}% + \nointerlineskip} +\def\makefootline{\baselineskip24\p@\vskip-8\p@\line{\the\footline}} +\def\dosupereject{\ifnum\insertpenalties>\z@ % something is being held over + \line{}\kern-\topskip\nobreak\vfill\supereject\fi} + +\def\relaxnext@{\let\next\relax} +\def\footmarkform@#1{\ifmmode {}^{#1}\else$^{#1}$\fi } +\let\thefootnotemark\footmarkform@ +\def\makefootnote@#1#2{\insert\footins + {\interlinepenalty\interfootnotelinepenalty + \eightpoint \splittopskip=\ht\strutbox + \splitmaxdepth=\dp\strutbox + \floatingpenalty=\@MM + \leftskip=\z@ \rightskip=\z@ + \spaceskip=\z@ \xspaceskip=\z@ + \leavevmode{#1}\footstrut\ignorespaces#2\unskip + \lower\dp\strutbox\vbox to\dp\strutbox{}}} +\newcount\footmarkcount@ + \footmarkcount@=\z@ % Initialization +\def\footnotemark{\let\@sf=\empty \relaxnext@ + \ifhmode \edef\@sf{\spacefactor=\the\spacefactor}\/\fi + \def\next@{\ifx[\next \let\next=\nextii@ \else + \ifx"\next \let\next=\nextiii@ \else + \let\next=\nextiv@ \fi\fi\next}% + \def\nextii@[##1]{\footmarkform@{##1}\@sf}% + \def\nextiii@"##1"{{##1}\@sf}% + \def\nextiv@{\global\advance\footmarkcount@\@ne + \footmarkform@{\number\footmarkcount@}\@sf}% + \futurelet\next\next@} +\def\footnotetext{\relaxnext@ + \def\next@{\ifx[\next \let\next=\nextii@ \else + \ifx"\next \let\next=\nextiii@ \else + \let\next=\nextiv@ \fi\fi\next}% + \def\nextii@[##1]##2{\makefootnote@{\footmarkform@{##1}}{##2}}% + \def\nextiii@"##1"##2{\makefootnote@{##1}{##2}}% + \def\nextiv@##1{\makefootnote@{\footmarkform@{% + \number\footmarkcount@}}{##1}}% + \futurelet\next\next@} +\def\footnote{\let\@sf=\empty \relaxnext@ + \ifhmode \edef\@sf{\spacefactor\the\spacefactor}\/\fi + \def\next@{\ifx[\next \let\next=\nextii@ \else + \ifx"\next \let\next=\nextiii@ \else + \let\next=\nextiv@ \fi\fi\next}% + \def\nextii@[##1]##2{\footnotemark[##1]\footnotetext[##1]{##2}}% + \def\nextiii@"##1"##2{\footnotemark"##1"\footnotetext"##1"{##2}}% + \def\nextiv@##1{\footnotemark\footnotetext{##1}}% + \futurelet\next\next@} +\def\adjustfootnotemark#1{\advance\footmarkcount@#1\relax} + +\skip\footins=18\p@ plus6\p@ minus6\p@ + +\def\footnoterule{\kern -4\p@\hrule width 3pc \kern 3.6\p@ } % rule = .4 pt high + + + +% Turn off @ as being a letter. +% +\catcode`\@=12 diff --git a/Master/texmf-dist/tex/plain/treetex/classes.tex b/Master/texmf-dist/tex/plain/treetex/classes.tex new file mode 100644 index 00000000000..f9dbc98bb9c --- /dev/null +++ b/Master/texmf-dist/tex/plain/treetex/classes.tex @@ -0,0 +1,105 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Complete binary trees %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% The macro \b@nary{<number>} expands to the description of a complete +% binary tree with <number> many internal nodes, where each level is filled with +% the maximal number of internal nodes, and the last level of internal nodes +% is filled from left to right. + +\newcount\b@nno % number of nodes +\newcount\b@nlv % number of complete levels +\newcount\b@ndl % number of nodes on incomplete level + +\def\ld(#1,#2,#3){% #1, #2, and #3 must be counter registers. + % #1 is the input, #1 must be >= 1. + % \ld makes the following assignments: + % #2:=|_log_2(#1)_|, #3:=2^#2. + % The contents of #1 is destroyed during the computation. + #2=0 #3=1 + \loop\ifnum #1>\@ne\relax + \divide #1 by\tw@ % this is integer division + \advance #2 by\@ne + \multiply #3 by\tw@ + \repeat} + +\def\b@nary#1{% draws a complete binary tree with #1 internal nodes, + % a complete binary tree with N internal nodes has + % lv:=|_log_2(N+1)_| many + % complete level of binary nodes and dl:=N-2^{lv}+1 many internal + % nodes on an incomplete level. + \b@nno=#1\relax\advance\b@nno by \@ne + \ld(\b@nno,\b@nlv,\b@ndl)% + \b@ndl=-\b@ndl\advance\b@ndl by #1\advance\b@ndl by\@ne + \b@n} + +\def\b@n{% + \ifnum\b@nlv>\@ne + \advance\b@nlv by-\@ne + \b@n + \b@n + \advance\b@nlv by\@ne + \node{} + \else\ifnum\b@ndl>\@ne + \advance\b@ndl by-\tw@ + \node{\le@f\external}\node{\le@f\external}\node{}% + \node{\le@f\external}\node{\le@f\external}\node{}% + \node{}% + \else\ifnum\b@ndl=\@ne + \advance\b@ndl by-\@ne + \node{\le@f\external}\node{\le@f\external}\node{}% + \node{\le@f\external}% + \node{}% + \else\node{\le@f\external}\node{\le@f\external}\node{}% + \fi + \fi + \fi} + +\def\circleleaves{\def\le@f{\type{circle}}} +\def\squareleaves{\def\le@f{\type{square}}} + +\newcount\no@ +\def\no#1{\no@=#1\relax} + +\def\binary#1{% + \no{1}\circleleaves + #1% + \b@nary{\no@}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Fibonacci trees %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \f@b expands to the description of a Fibonacci tree +% of height \f@bht. + +\newcount\f@bht + +\def\f@b{% draws a Fibonacci tree of depth #1 + \ifnum\f@bht>1 + \advance\f@bht by-\@ne\f@b\advance\f@bht by\@ne + \advance\f@bht by-\tw@\f@b\advance\f@bht by\tw@ + \ifunn@des\node{\unary} + \fi + \node{\lefttop} + \else\ifnum\f@bht=1 + \node{\external\le@f} + \node{\external\le@f} + \node{} + \else\node{\external\le@f} + \fi + \fi} + +\newif\ifunn@des + +\let\unarynodes\unn@destrue +\def\hght#1{\f@bht=#1\relax} + +\def\fibonacci#1{% + \hght{0}\unn@desfalse\circleleaves + #1% + \f@b} + + +% + diff --git a/Master/texmf-dist/tex/plain/treetex/l_pic.tex b/Master/texmf-dist/tex/plain/treetex/l_pic.tex new file mode 100644 index 00000000000..e5b5c110b1f --- /dev/null +++ b/Master/texmf-dist/tex/plain/treetex/l_pic.tex @@ -0,0 +1,839 @@ +% All this stuff comes from latex.tex, most of it from the +% picture environment. No changes!!! +% It is needed if you want to use TreeTeX together with plain TeX. + +\catcode`\@=11 + +\def\@height{height} +\def\@depth{depth} +\def\@width{width} + +\font\tenln=line10 +\font\tencirc=lcircle10 +\font\tenlnw=linew10 +\font\tencircw=lcirclew10 + +\newcount\@tempcnta +\newcount\@tempcntb +\newdimen\@tempdima +\newdimen\@tempdimb +\newbox\@tempboxa + +\def\@whilenoop#1{} + +\def\@whiledim#1\do #2{\ifdim #1\relax#2\@iwhiledim{#1\relax#2}\fi} +\def\@iwhiledim#1{\ifdim #1\let\@nextwhile=\@iwhiledim + \else\let\@nextwhile=\@whilenoop\fi\@nextwhile{#1}} + +\def\@ifnextchar#1#2#3{\let\@tempe #1\def\@tempa{#2}\def\@tempb{#3}\futurelet + \@tempc\@ifnch} +\def\@ifnch{\ifx \@tempc \@sptoken \let\@tempd\@xifnch + \else \ifx \@tempc \@tempe\let\@tempd\@tempa\else\let\@tempd\@tempb\fi + \fi \@tempd} + +% NOTE: the following hacking must precede the definition of \: +% as math medium space. + +\def\:{\let\@sptoken= } \: % this makes \@sptoken a space token + +\def\:{\@xifnch} \expandafter\def\: {\futurelet\@tempc\@ifnch} + +\def\@ifstar#1#2{\@ifnextchar *{\def\@tempa*{#1}\@tempa}{#2}} + +\let\:=\> + +% **************************************** +% * THE PICTURE ENVIRONMENT * +% **************************************** +% +% \unitlength = value of dimension argument +% \@wholewidth = current line width +% \@halfwidth = half of current line width +% \@linefnt = font for drawing lines +% \@circlefnt = font for drawing circles +% +% \linethickness{DIM} : Sets the width of horizontal and vertical lines +% in a picture to DIM. Does not change width of slanted lines +% or circles. Width of all lines reset by \thinlines and +% \thicklines +% +% \picture(XSIZE,YSIZE)(XORG,YORG) +% BEGIN +% \@picht :=L YSIZE * \unitlength +% box \@picbox := +% \hbox to XSIZE * \unitlength +% {\hskip -XORG * \unitlength +% \lower YORG * \unitlength +% \hbox{ +% END +% +% \endpicture == +% BEGIN +% } \hss } +% heigth of \@picbox := \@picht +% depth of \@picbox := 0 +% leavevmode +% \box\@picbox +% END +% +% \put(X, Y){OBJ} == +% BEGIN +% \@killglue +% \raise Y * \unitlength \hbox to 0pt { \hskip X * \unitlength +% OBJ \hss } +% \ignorespaces +% END +% +% \multiput(X,Y)(DELX,DELY){N}{OBJ} == +% BEGIN +% \@killglue +% \@multicnt := N +% \@xdim := X * \unitlength +% \@ydim := Y * \unitlength +% while \@multicnt > 0 +% do \raise \@ydim \hbox to 0pt { \hskip \@xdim +% OBJ \hss } +% \@multicnt := \@multicnt - 1 +% \@xdim := \@xdim + DELX * \unitlength +% \@ydim := \@ydim + DELY * \unitlength +% od +% \ignorespaces +% END +% +% \shortstack[POS]{TEXT} : Makes a \vbox containing TEXT stacked as +% a one-column array, positioned l, r or c as indicated by POS. + +\newdimen\@wholewidth +\newdimen\@halfwidth +\newdimen\unitlength \unitlength =1pt +\newbox\@picbox +\newdimen\@picht + +\def\picture(#1,#2){\@ifnextchar({\@picture(#1,#2)}{\@picture(#1,#2)(0,0)}} + +\def\@picture(#1,#2)(#3,#4){\@picht #2\unitlength +\setbox\@picbox\hbox to #1\unitlength\bgroup +\hskip -#3\unitlength \lower #4\unitlength \hbox\bgroup} + +\def\endpicture{\egroup\hss\egroup\ht\@picbox\@picht +\dp\@picbox\z@\leavevmode\box\@picbox} + +\long\def\put(#1,#2)#3{\@killglue\raise#2\unitlength\hbox to \z@{\hskip +#1\unitlength #3\hss}\ignorespaces} + +\long\def\multiput(#1,#2)(#3,#4)#5#6{\@killglue\@multicnt=#5\relax +\@xdim=#1\unitlength +\@ydim=#2\unitlength +\@whilenum \@multicnt > 0\do +{\raise\@ydim\hbox to \z@{\hskip +\@xdim #6\hss}\advance\@multicnt \m@ne\advance\@xdim +#3\unitlength\advance\@ydim #4\unitlength}\ignorespaces} + +\def\@killglue{\unskip\@whiledim \lastskip >\z@\do{\unskip}} + +\def\thinlines{\let\@linefnt\tenln \let\@circlefnt\tencirc + \@wholewidth\fontdimen8\tenln \@halfwidth .5\@wholewidth} +\def\thicklines{\let\@linefnt\tenlnw \let\@circlefnt\tencircw + \@wholewidth\fontdimen8\tenlnw \@halfwidth .5\@wholewidth} + +\def\linethickness#1{\@wholewidth #1\relax \@halfwidth .5\@wholewidth} + +\def\shortstack{\@ifnextchar[{\@shortstack}{\@shortstack[c]}} + +\def\@shortstack[#1]{\leavevmode +\vbox\bgroup\baselineskip-1pt\lineskip 3pt\let\mb@l\hss +\let\mb@r\hss \expandafter\let\csname mb@#1\endcsname\relax +\let\\\@stackcr\@ishortstack} + +\def\@ishortstack#1{\halign{\mb@l ##\unskip\mb@r\cr #1\crcr}\egroup} + + +\def\@stackcr{\@ifstar{\@ixstackcr}{\@ixstackcr}} +\def\@ixstackcr{\@ifnextchar[{\@istackcr}{\cr\ignorespaces}} + +\def\@istackcr[#1]{\cr\noalign{\vskip #1}\ignorespaces} + + +% \line(X,Y){LEN} == +% BEGIN +% \@xarg := X +% \@yarg := Y +% \@linelen := LEN * \unitlength +% if \@xarg = 0 +% then \@vline +% else if \@yarg = 0 +% then \@hline +% else \@sline +% if +% if +% END +% +% \@sline == +% BEGIN +% if \@xarg < 0 +% then @negarg := T +% \@xarg := -\@xarg +% \@yyarg := -\@yarg +% else @negarg := F +% \@yyarg := \@yarg +% fi +% \@tempcnta := |\@yyarg| +% if \@tempcnta > 6 +% then error: 'LATEX ERROR: Illegal \line or \vector argument.' +% \@tempcnta := 0 +% fi +% \box\@linechar := \hbox{\@linefnt \@getlinechar(\@xarg,\@yyarg) } +% if \@yarg > 0 then \@upordown = \raise +% \@clnht := 0 +% else \@upordown = \lower +% \@clnht := height of \box\@linechar +% fi +% \@clnwd := width of \box\@linechar +% if @negarg +% then \hskip - width of \box\@linechar +% \@tempa == \hskip - 2* width of box \@linechar +% else \@tempa == \relax +% fi +% %% Put out integral number of line segments +% while \@clnwd < \@linelen +% do \@upordown \@clnht \copy\@linechar +% \@tempa +% \@clnht := \@clnht + ht of \box\@linechar +% \@clnwd := \@clnwd + width of \box\@linechar +% od +% +% %% Put out last segment +% \@clnht := \@clnht - height of \box\@linechar +% \@clnwd := \@clnwd - width of \box\@linechar +% \@tempdima := \@linelen - \@clnwd +% \@tempdimb := \@tempdima - width of \box\@linechar +% if @negarg then \hskip -\@tempdimb +% else \hskip \@tempdimb +% fi +% \@tempdima := 1000 * \@tempdima +% \@tempcnta := \@tempdima / width of \box\@linechar +% \@tempdima := (\@tempcnta * ht of \box\@linechar)/1000 +% \@clnht := \@clnht + \@tempdima +% if \@linelen < width of box\@linechar +% then \hskip width of box\@linechar +% else \hbox{\@upordown \@clnht \copy\@linechar} +% fi +% END +% +% \@hline == +% BEGIN +% if \@xarg < 0 then \hskip -\@linelen \fi +% \vrule height \@halfwidth depth \@halfwidth width \@linelen +% if \@xarg < 0 then \hskip -\@linelen \fi +% END +% +% \@vline == if \@yarg < 0 \@downline else \@upline fi +% +% +% \@getlinechar(X,Y) == +% BEGIN +% \@tempcnta := 8*X - 9 +% if Y > 0 +% then \@tempcnta := \@tempcnta + Y +% else \@tempcnta := \@tempcnta - Y + 64 +% fi +% \char\@tempcnta +% END +% +% \vector(X,Y){LEN} == +% BEGIN +% \@xarg := X +% \@yarg := Y +% \@linelen := LEN * \unitlength +% if \@xarg = 0 +% then \@vvector +% else if \@yarg = 0 +% then \@hvector +% else \@svector +% if +% if +% END +% +% \@hvector == +% BEGIN +% \@hline +% {\@linefnt if \@xarg < 0 then \@getlarrow(1,0) +% else \@getrarrow(1,0) +% fi} +% END +% +% \@vvector == if \@yarg < 0 \@downvector else \@upvector fi +% +% \@svector == +% BEGIN +% \@sline +% \@tempcnta := |\@yarg| +% if \@tempcnta < 5 +% then \hskip - width of \box\@linechar +% \@upordown \@clnht \hbox +% {\@linefnt +% if @negarg then \@getlarrow(\@xarg,\@yyarg) +% else \@getrarrow(\@xarg,\@yyarg) +% fi } +% else error: 'LATEX ERROR: Illegal \line or \vector argument.' +% fi +% END +% +% \@getlarrow(X,Y) == +% BEGIN +% if Y = 0 +% then \@tempcnta := '33 +% else \@tempcnta := 16 * X - 9 +% \@tempcntb := 2 * Y +% if \@tempcntb > 0 +% then \@tempcnta := \@tempcnta + \@tempcntb +% else \@tempcnta := \@tempcnta - \@tempcntb + 64 +% fi +% fi +% \char\@tempcnta +% END +% +% \@getrarrow(X,Y) == +% BEGIN +% \@tempcntb := |Y| +% case of \@tempcntb +% 0 : \@tempcnta := '55 +% 1 : if X < 3 +% then \@tempcnta := 24*X - 6 +% else if X = 3 +% then \@tempcnta := 49 +% else \@tempcnta := 58 fi +% fi +% 2 : if X < 3 +% then \@tempcnta := 24*X - 3 +% else \@tempcnta := 51 % X must = 3 +% fi +% 3 : \@tempcnta := 16*X - 2 +% 4 : \@tempcnta := 16*X + 7 +% endcase +% if Y < 0 +% then \@tempcnta := \@tempcnta + 64 +% fi +% \char\@tempcnta +% END + +\newif\if@negarg + +\def\line(#1,#2)#3{\@xarg #1\relax \@yarg #2\relax +\@linelen=#3\unitlength +\ifnum\@xarg =0 \@vline + \else \ifnum\@yarg =0 \@hline \else \@sline\fi +\fi} + +\def\@sline{\ifnum\@xarg< 0 \@negargtrue \@xarg -\@xarg \@yyarg -\@yarg + \else \@negargfalse \@yyarg \@yarg \fi +\ifnum \@yyarg >0 \@tempcnta\@yyarg \else \@tempcnta -\@yyarg \fi +\ifnum\@tempcnta>6 \@badlinearg\@tempcnta0 \fi +\setbox\@linechar\hbox{\@linefnt\@getlinechar(\@xarg,\@yyarg)}% +\ifnum \@yarg >0 \let\@upordown\raise \@clnht\z@ + \else\let\@upordown\lower \@clnht \ht\@linechar\fi +\@clnwd=\wd\@linechar +\if@negarg \hskip -\wd\@linechar \def\@tempa{\hskip -2\wd\@linechar}\else + \let\@tempa\relax \fi +\@whiledim \@clnwd <\@linelen \do + {\@upordown\@clnht\copy\@linechar + \@tempa + \advance\@clnht \ht\@linechar + \advance\@clnwd \wd\@linechar}% +\advance\@clnht -\ht\@linechar +\advance\@clnwd -\wd\@linechar +\@tempdima\@linelen\advance\@tempdima -\@clnwd +\@tempdimb\@tempdima\advance\@tempdimb -\wd\@linechar +\if@negarg \hskip -\@tempdimb \else \hskip \@tempdimb \fi +\multiply\@tempdima \@m +\@tempcnta \@tempdima \@tempdima \wd\@linechar \divide\@tempcnta \@tempdima +\@tempdima \ht\@linechar \multiply\@tempdima \@tempcnta +\divide\@tempdima \@m +\advance\@clnht \@tempdima +\ifdim \@linelen <\wd\@linechar + \hskip \wd\@linechar + \else\@upordown\@clnht\copy\@linechar\fi} + +\def\@hline{\ifnum \@xarg <0 \hskip -\@linelen \fi +\vrule \@height \@halfwidth \@depth \@halfwidth \@width \@linelen +\ifnum \@xarg <0 \hskip -\@linelen \fi} + +\def\@getlinechar(#1,#2){\@tempcnta#1\relax\multiply\@tempcnta 8 +\advance\@tempcnta -9 \ifnum #2>0 \advance\@tempcnta #2\relax\else +\advance\@tempcnta -#2\relax\advance\@tempcnta 64 \fi +\char\@tempcnta} + +\def\vector(#1,#2)#3{\@xarg #1\relax \@yarg #2\relax +\@linelen=#3\unitlength +\ifnum\@xarg =0 \@vvector + \else \ifnum\@yarg =0 \@hvector \else \@svector\fi +\fi} + +\def\@hvector{\@hline\hbox to 0pt{\@linefnt +\ifnum \@xarg <0 \@getlarrow(1,0)\hss\else + \hss\@getrarrow(1,0)\fi}} + +\def\@vvector{\ifnum \@yarg <0 \@downvector \else \@upvector \fi} + +\def\@svector{\@sline +\@tempcnta\@yarg \ifnum\@tempcnta <0 \@tempcnta=-\@tempcnta\fi +\ifnum\@tempcnta <5 + \hskip -\wd\@linechar + \@upordown\@clnht \hbox{\@linefnt \if@negarg + \@getlarrow(\@xarg,\@yyarg) \else \@getrarrow(\@xarg,\@yyarg) \fi}% +\else\@badlinearg\fi} + +\def\@getlarrow(#1,#2){\ifnum #2 =\z@ \@tempcnta='33\else +\@tempcnta=#1\relax\multiply\@tempcnta \sixt@@n \advance\@tempcnta +-9 \@tempcntb=#2\relax\multiply\@tempcntb \tw@ +\ifnum \@tempcntb >0 \advance\@tempcnta \@tempcntb\relax +\else\advance\@tempcnta -\@tempcntb\advance\@tempcnta 64 +\fi\fi\char\@tempcnta} + +\def\@getrarrow(#1,#2){\@tempcntb=#2\relax +\ifnum\@tempcntb < 0 \@tempcntb=-\@tempcntb\relax\fi +\ifcase \@tempcntb\relax \@tempcnta='55 \or +\ifnum #1<3 \@tempcnta=#1\relax\multiply\@tempcnta +24 \advance\@tempcnta -6 \else \ifnum #1=3 \@tempcnta=49 +\else\@tempcnta=58 \fi\fi\or +\ifnum #1<3 \@tempcnta=#1\relax\multiply\@tempcnta +24 \advance\@tempcnta -3 \else \@tempcnta=51\fi\or +\@tempcnta=#1\relax\multiply\@tempcnta +\sixt@@n \advance\@tempcnta -\tw@ \else +\@tempcnta=#1\relax\multiply\@tempcnta +\sixt@@n \advance\@tempcnta 7 \fi\ifnum #2<0 \advance\@tempcnta 64 \fi +\char\@tempcnta} + + + +\def\@vline{\ifnum \@yarg <0 \@downline \else \@upline\fi} + +\def\@upline{\hbox to \z@{\hskip -\@halfwidth \vrule \@width \@wholewidth + \@height \@linelen \@depth \z@\hss}} + +\def\@downline{\hbox to \z@{\hskip -\@halfwidth \vrule \@width \@wholewidth + \@height \z@ \@depth \@linelen \hss}} + +\def\@upvector{\@upline\setbox\@tempboxa\hbox{\@linefnt\char'66}\raise + \@linelen \hbox to\z@{\lower \ht\@tempboxa\box\@tempboxa\hss}} + +\def\@downvector{\@downline\lower \@linelen + \hbox to \z@{\@linefnt\char'77\hss}} + +% \dashbox{D}(X,Y) == +% BEGIN +% leave vertical mode +% \hbox to 0pt { +% \baselineskip := 0pt +% \lineskip := 0pt +% %% HORIZONTAL DASHES +% \@dashdim := X * \unitlength +% \@dashcnt := \@dashdim + 200 % to prevent roundoff error +% \@dashdim := D * \unitlength +% \@dashcnt := \@dashcnt / \@dashdim +% if \@dashcnt is odd +% then \@dashdim := 0pt +% \@dashcnt := (\@dashcnt + 1) / 2 +% else \@dashdim := \@dashdim / 2 +% \@dashcnt := \@dashcnt / 2 - 1 +% \box\@dashbox := \hbox{\vrule height \@halfwidth +% depth \@halfwidth width \@dashdim} +% \put(0,0){\copy\@dashbox} +% \put(0,Y){\copy\@dashbox} +% \put(X,0){\hskip -\@dashdim\copy\@dashbox} +% \put(X,Y){\hskip -\@dashdim\box\@dashbox} +% \@dashdim := 3 * \@dashdim +% fi +% \box\@dashbox := \hbox{\vrule height \@halfwidth +% depth \@halfwidth width D * \unitlength +% \hskip D * \unitlength} +% \@tempcnta := 0 +% \put(0,0){\hskip \@dashdim +% while \@tempcnta < \@dascnt +% do \copy\@dashbox +% \@tempcnta := \@tempcnta + 1 +% od +% } +% \@tempcnta := 0 +% put(0,Y){\hskip \@dashdim +% while \@tempcnta < \@dascnt +% do \copy\@dashbox +% \@tempcnta := \@tempcnta + 1 +% od +% } +% +% %% vertical dashes +% \@dashdim := Y * \unitlength +% \@dashcnt := \@dashdim + 200 % to prevent roundoff error +% \@dashdim := D * \unitlength +% \@dashcnt := \@dashcnt / \@dashdim +% if \@dashcnt is odd +% then \@dashdim := 0pt +% \@dashcnt := (\@dashcnt + 1) / 2 +% else \@dashdim := \@dashdim / 2 +% \@dashcnt := \@dashcnt / 2 - 1 +% \box\@dashbox := \hbox{\hskip -\@halfwidth +% \vrule width \@wholewidth +% height \@dashdim } +% \put(0,0){\copy\@dashbox} +% \put(X,0){\copy\@dashbox} +% \put(0,Y){\lower\@dashdim\copy\@dashbox} +% \put(X,Y){\lower\@dashdim\copy\@dashbox} +% \@dashdim := 3 * \@dashdim +% fi +% \box\@dashbox := \hbox{\vrule width \@wholewidth +% height D * \unitlength } +% \@tempcnta := 0 +% put(0,0){\hskip -\halfwidth +% \vbox{while \@tempcnta < \@dashcnt +% do \vskip D*\unitlength +% \copy\@dashbox +% \@tempcnta := \@tempcnta + 1 +% od +% \vskip \@dashdim +% } } +% \@tempcnta := 0 +% put(X,0){\hskip -\halfwidth +% \vbox{while \@tempcnta < \@dashcnt +% do \vskip D*\unitlength +% \copy\@dashbox +% \@tempcnta := \@tempcnta + 1 +% od +% \vskip \@dashdim +% } +% } +% } % END DASHES +% +% \@imakepicbox(X,Y) +% END + +\def\dashbox#1(#2,#3){\leavevmode\hbox to \z@{\baselineskip \z@% +\lineskip \z@% +\@dashdim=#2\unitlength% +\@dashcnt=\@dashdim \advance\@dashcnt 200 +\@dashdim=#1\unitlength\divide\@dashcnt \@dashdim +\ifodd\@dashcnt\@dashdim=\z@% +\advance\@dashcnt \@ne \divide\@dashcnt \tw@ +\else \divide\@dashdim \tw@ \divide\@dashcnt \tw@ +\advance\@dashcnt \m@ne +\setbox\@dashbox=\hbox{\vrule \@height \@halfwidth \@depth \@halfwidth +\@width \@dashdim}\put(0,0){\copy\@dashbox}% +\put(0,#3){\copy\@dashbox}% +\put(#2,0){\hskip-\@dashdim\copy\@dashbox}% +\put(#2,#3){\hskip-\@dashdim\box\@dashbox}% +\multiply\@dashdim 3 +\fi +\setbox\@dashbox=\hbox{\vrule \@height \@halfwidth \@depth \@halfwidth +\@width #1\unitlength\hskip #1\unitlength}\@tempcnta=0 +\put(0,0){\hskip\@dashdim \@whilenum \@tempcnta <\@dashcnt +\do{\copy\@dashbox\advance\@tempcnta \@ne }}\@tempcnta=0 +\put(0,#3){\hskip\@dashdim \@whilenum \@tempcnta <\@dashcnt +\do{\copy\@dashbox\advance\@tempcnta \@ne }}% +\@dashdim=#3\unitlength% +\@dashcnt=\@dashdim \advance\@dashcnt 200 +\@dashdim=#1\unitlength\divide\@dashcnt \@dashdim +\ifodd\@dashcnt \@dashdim=\z@% +\advance\@dashcnt \@ne \divide\@dashcnt \tw@ +\else +\divide\@dashdim \tw@ \divide\@dashcnt \tw@ +\advance\@dashcnt \m@ne +\setbox\@dashbox\hbox{\hskip -\@halfwidth +\vrule \@width \@wholewidth +\@height \@dashdim}\put(0,0){\copy\@dashbox}% +\put(#2,0){\copy\@dashbox}% +\put(0,#3){\lower\@dashdim\copy\@dashbox}% +\put(#2,#3){\lower\@dashdim\copy\@dashbox}% +\multiply\@dashdim 3 +\fi +\setbox\@dashbox\hbox{\vrule \@width \@wholewidth +\@height #1\unitlength}\@tempcnta0 +\put(0,0){\hskip -\@halfwidth \vbox{\@whilenum \@tempcnta < \@dashcnt +\do{\vskip #1\unitlength\copy\@dashbox\advance\@tempcnta \@ne }% +\vskip\@dashdim}}\@tempcnta0 +\put(#2,0){\hskip -\@halfwidth \vbox{\@whilenum \@tempcnta< \@dashcnt +\relax\do{\vskip #1\unitlength\copy\@dashbox\advance\@tempcnta \@ne }% +\vskip\@dashdim}}}\@makepicbox(#2,#3)} + +% CIRCLES AND OVALS +% +% USER COMMANDS: +% +% \circle{D} : Produces the circle with the diameter as close as +% possible to D * \unitlength. \put(X,Y){\circle{D}} +% puts the circle with its center at (X,Y). +% +% \oval(X,Y) : Makes an oval as round as possible that fits in the +% rectangle of width X * \unitlength and height +% Y * \unitlength. The reference point is the center. +% +% \oval(X,Y)[POS] : Save as \oval(X,Y) except it draws only the +% half or quadrant of the oval indicated by POS. +% E.G., \oval(X,Y)[t] draws just the top half +% and \oval(X,Y)[br] draws just the bottom right +% quadrant. In all cases, the reference point is +% the same as the unqualified \oval(X,Y) command. +% +% \@ovvert {DELTA1} {DELTA2} : Makes a vbox containing either the left side +% or the right side of the oval being constructed. The baseline +% will coincide with the outside bottom edge of the oval; the left +% side of the box will coincide with the left edge of the vertical +% rule. The width of the box will be \@tempdima. +% DELTA1 and DELTA2 are added to the character number in \@tempcnta +% to get the characters for the top and bottom quarter circle pieces. +% +% \@ovhorz : Makes an hbox containing the straight rule for either the +% top or the bottom of the oval being constructed. The baseline +% will coincide with bottom edge of the rule; the left side of +% the box will coincide with the left side of the oval. +% The width of the box will be \@ovxx. +% +% \@getcirc {DIAM} : Sets \@tempcnta to the character number +% of the top-right quarter circle with the largest +% diameter less than or equal to DIAM. +% Sets \@tempboxa to an hbox containing that character. +% Sets \@tempdima to \wd \@tempboxa, which is the distance +% from the circle's left outside edge to its right +% inside edge. +% (These characters are like those described in the +% TeXbook, pp. 389-90.) +% +% \@getcirc {DIAM} == +% BEGIN +% \@tempcnta := integer coercion of DIAM +% \@tempcnta := \@tempcnta / integer coercion of 4pt +% if \@tempcnta > 10 +% then \@tempcnta := 10 fi +% if \@tempcnta > 0 +% then \@tempcnta := \@tempcnta-1 +% else LaTeX Warning: Oval too small. +% fi +% \@tempcnta := 4 * \@tempcnta +% \@tempboxa := \hbox{\@circlefnt \char \@tempcnta} +% \@tempdima := \wd \@tempboxa +% END +% +% \@put{X}{Y}{OBJ} == +% BEGIN +% \raise Y \hbox to 0pt{\hskip X OBJ \hss} +% END +% +% \@oval(X,Y)[POS] == +% BEGIN +% \begingroup +% \boxmaxdepth := \maxdimen +% @ovt := @ovb := @ovl := @ovr := true +% for all E in POS +% do @ovE := false od +% \@ovxx := X * \unitlength +% \@ovyy := Y * \unitlength +% \@tempdimb := min(\@ovxx,\@ovyy) +% \@getcirc{\@tempdimb} +% \@ovro := \ht \@tempboxa +% \@ovri := \dp \@tempboxa +% \@ovdx := \@ovxx - \@tempdima +% \@ovdx := \@ovdx/2 +% \@ovdy := \@ovyy - \@tempdima +% \@ovdy := \@ovyy/2 +% \@circlefnt +% \@tempboxa := +% \hbox{ +% if @ovr +% then \@ovvert{3}{2} \kern -\@tempdima +% fi +% if @ovl +% then \kern \@ovxx \@ovvert{0}{1} \kern -\@tempdima +% \kern -\@ovxx +% fi +% if @ovt +% then \@ovhorz \kern -\@ovxx +% fi +% if @ovb +% then \raise \@ovyy \@ovhorz +% fi +% } +% \@ovdx := \@ovdx + \@ovro +% \@ovdy := \@ovdy + \@ovro +% \ht\@tempboxa := \dp\@tempboxa := 0 +% \@put{-\@ovdx}{-\@ovdy}{\box\@tempboxa} +% \endgroup +% END +% +% \@ovvert {DELTA1} {DELTA2} == +% BEGIN +% \vbox to \@ovyy { +% if @ovb +% then \@tempcntb := \@tempcnta + DELTA1 +% \kern -\@ovro +% \hbox { \char \@tempcntb } +% \nointerlineskip +% else \kern \@ovri \kern \@ovdy +% fi +% \leaders \vrule width \@wholewidth \vfil +% \nointerlineskip +% if @ovt +% then \@tempcntb := \@tempcnta + DELTA2 +% \hbox { \char \@tempcntb } +% else \kern \@ovdy \kern \@ovro +% fi +% } +% END +% +% \@ovhorz == +% BEGIN +% \hbox to \@ovxx{ +% \kern \@ovro +% if @ovr +% then +% else \kern \@ovdx +% fi +% \leaders \hrule height \@wholewidth \hfil +% if @ovl +% then +% else \kern \@ovdx +% fi +% \kern \@ovri +% } +% END +% +% \circle{DIAM} == +% BEGIN +% \begingroup +% \boxmaxdepth := maxdimen +% \@tempdimb := DIAM *\unitlength +% if \@tempdimb > 15.5pt +% then \@getcirc{\@tempdimb} +% \@ovro := \ht \@tempboxa +% \@tempboxa := \hbox{ +% \@circlefnt +% \@tempcnta := \@tempcnta + 2 +% \char \@tempcnta +% \@tempcnta := \@tempcnta - 1 +% \char \@tempcnta +% \kern -2\@tempdima +% \@tempcnta := \@tempcnta + 2 +% \raise \@tempdima \hbox { \char \@tempcnta } +% \raise \@tempdima \box\@tempboxa +% } +% \ht\@tempboxa := \dp\@tempboxa := 0 +% \@put{-\@ovro}{-\@ovro}{\@tempboxa} +% else +% \@circ{\@tempdimb}{96} +% fi +% \endgroup +% END +% +% \circle*{DIAM} == \@dot{DIAM} == \@circ{DIAM*\unitlength}{112} +% +% \@circ{DIAM}{CHAR} == +% BEGIN +% \@tempcnta := integer coercion of (DIAM + .5pt)/1pt. +% if \@tempcnta > 15 then \@tempcnta := 15 fi +% if \@tempcnta > 1 then \@tempcnta := \@tempcnta - 1 fi +% \@tempcnta := \@tempcnta + CHAR +% \@circlefnt +% \char \@tempcnta +% END +% + +\newif\if@ovt +\newif\if@ovb +\newif\if@ovl +\newif\if@ovr +\newdimen\@ovxx +\newdimen\@ovyy +\newdimen\@ovdx +\newdimen\@ovdy +\newdimen\@ovro +\newdimen\@ovri + +\def\@getcirc#1{\@tempdima #1\relax \@tempcnta\@tempdima + \@tempdima 4pt\relax \divide\@tempcnta\@tempdima + \ifnum \@tempcnta > 10\relax \@tempcnta 10\relax\fi + \ifnum \@tempcnta >\z@ \advance\@tempcnta\m@ne + \else \@warning{Oval too small}\fi + \multiply\@tempcnta 4\relax + \setbox \@tempboxa \hbox{\@circlefnt + \char \@tempcnta}\@tempdima \wd \@tempboxa} + +\def\@put#1#2#3{\raise #2\hbox to \z@{\hskip #1#3\hss}} + +\def\oval(#1,#2){\@ifnextchar[{\@oval(#1,#2)}{\@oval(#1,#2)[]}} + +\def\@oval(#1,#2)[#3]{\begingroup\boxmaxdepth \maxdimen + \@ovttrue \@ovbtrue \@ovltrue \@ovrtrue + \@tfor\@tempa :=#3\do{\csname @ov\@tempa false\endcsname}\@ovxx + #1\unitlength \@ovyy #2\unitlength + \@tempdimb \ifdim \@ovyy >\@ovxx \@ovxx\else \@ovyy \fi + \@getcirc \@tempdimb + \@ovro \ht\@tempboxa \@ovri \dp\@tempboxa + \@ovdx\@ovxx \advance\@ovdx -\@tempdima \divide\@ovdx \tw@ + \@ovdy\@ovyy \advance\@ovdy -\@tempdima \divide\@ovdy \tw@ + \@circlefnt \setbox\@tempboxa + \hbox{\if@ovr \@ovvert32\kern -\@tempdima \fi + \if@ovl \kern \@ovxx \@ovvert01\kern -\@tempdima \kern -\@ovxx \fi + \if@ovt \@ovhorz \kern -\@ovxx \fi + \if@ovb \raise \@ovyy \@ovhorz \fi}\advance\@ovdx\@ovro + \advance\@ovdy\@ovro \ht\@tempboxa\z@ \dp\@tempboxa\z@ + \@put{-\@ovdx}{-\@ovdy}{\box\@tempboxa}% + \endgroup} + +\def\@ovvert#1#2{\vbox to \@ovyy{% + \if@ovb \@tempcntb \@tempcnta \advance \@tempcntb by #1\relax + \kern -\@ovro \hbox{\char \@tempcntb}\nointerlineskip + \else \kern \@ovri \kern \@ovdy \fi + \leaders\vrule width \@wholewidth\vfil \nointerlineskip + \if@ovt \@tempcntb \@tempcnta \advance \@tempcntb by #2\relax + \hbox{\char \@tempcntb}% + \else \kern \@ovdy \kern \@ovro \fi}} + +\def\@ovhorz{\hbox to \@ovxx{\kern \@ovro + \if@ovr \else \kern \@ovdx \fi + \leaders \hrule height \@wholewidth \hfil + \if@ovl \else \kern \@ovdx \fi + \kern \@ovri}} + +\def\circle{\@ifstar{\@dot}{\@circle}} +\def\@circle#1{\begingroup \boxmaxdepth \maxdimen \@tempdimb #1\unitlength + \ifdim \@tempdimb >15.5pt\relax \@getcirc\@tempdimb + \@ovro\ht\@tempboxa + \setbox\@tempboxa\hbox{\@circlefnt + \advance\@tempcnta\tw@ \char \@tempcnta + \advance\@tempcnta\m@ne \char \@tempcnta \kern -2\@tempdima + \advance\@tempcnta\tw@ + \raise \@tempdima \hbox{\char\@tempcnta}\raise \@tempdima + \box\@tempboxa}\ht\@tempboxa\z@ \dp\@tempboxa\z@ + \@put{-\@ovro}{-\@ovro}{\box\@tempboxa}% + \else \@circ\@tempdimb{96}\fi\endgroup} + +\def\@dot#1{\@tempdimb #1\unitlength \@circ\@tempdimb{112}} + +\def\@circ#1#2{\@tempdima #1\relax \advance\@tempdima .5pt\relax + \@tempcnta\@tempdima \@tempdima 1pt\relax + \divide\@tempcnta\@tempdima + \ifnum\@tempcnta > 15\relax \@tempcnta 15\relax \fi + \ifnum \@tempcnta >\z@ \advance\@tempcnta\m@ne\fi + \advance\@tempcnta #2\relax + \@circlefnt \char\@tempcnta} + + +%INITIALIZATION +\thinlines + +\newcount\@xarg +\newcount\@yarg +\newcount\@yyarg +\newcount\@multicnt +\newdimen\@xdim +\newdimen\@ydim +\newbox\@linechar +\newdimen\@linelen +\newdimen\@clnwd +\newdimen\@clnht +\newdimen\@dashdim +\newbox\@dashbox +\newcount\@dashcnt + + + +% + diff --git a/Master/texmf-dist/tex/plain/treetex/treetex.tex b/Master/texmf-dist/tex/plain/treetex/treetex.tex new file mode 100644 index 00000000000..0a3ae04f26c --- /dev/null +++ b/Master/texmf-dist/tex/plain/treetex/treetex.tex @@ -0,0 +1,1187 @@ +% This is file treetex.tex of TreeTeX, Version 2.1 (May 23, 1989). +% For changes search for "vs. 2.1". +% +% TreeTeX is a public domain macro package for drawing +% trees with TeX. It may be freely distributed, provided +% that the following files are kept together: +% +% classes.tex, l_pic.tex, readme, tree_doc.aux, tree_doc.bbl +% tree_doc.dvi, tree_doc.tex, treetex.tex +% +% Copyright is with Anne Brueggemann-Klein and Derick Wood. +% Print tree_doc.dvi to get more information about TreeTeX. +% +% All remarks, bug reports etc. should be directed to +% +% Dr. Anne Brueggemann-Klein +% Institut fuer Informatik +% Rheinstr. 10--12 +% 7800 Freiburg, West Germany +% +% email: abk@sun1.ruf.uni-freiburg.dbp.de +% + +\catcode`\@=11 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Only for testing, delete later %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\tracingonline=2 % +% \showboxbreadth=100 % Only for testing +% \showboxdepth=100 % + +\newcount\cnta\newcount\cntb\newcount\cntc + +\def\showlasttree{% + \g\cnta\count\l@stdiminfo + \g\cntb\cnta + \g\advance\cntb 5 + \g\advance\cntb \count\l@sttreeheight + \g\advance\cntb \count\l@sttreeheight + \ifnum\count\l@sttreeheight=-1\relax + \g\advance\cntb by 2 + \immediate\write16{Tree contour for dummy node:} + \else\immediate\write16{Tree contour:}% + \fi + \for\cntc:=\cnta\to\cntb\do\immediate\write16{\the\dimen\cntc}\od} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% TeX vs. LaTeX %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\lplain{lplain} % Set \LaTeXtrue if TreeTeX is +\newif\ifLaTeX % used together with LaTeX, +\ifx\fmtname\lplain\LaTeXtrue % otherwise set \LaTeXfalse + \else\LaTeXfalse\fi % (LaTeX defines \fmtname=={lplain}). + +\immediate\write16{This is TreeTeX, Version 2.1, for use with \ifLaTeX LaTeX% + \else plain TeX\fi.} + +\ifLaTeX \let\lineseg\line % latex_picture is part of latex.tex, + \else \let\@line\line % so you don't need it if you use + \input l_pic % TreeTeX together with LaTeX. LaTeX + \let\lineseg\line % has the command \line for geometric + \let\line\@line % lines, and plain TeX has the same + \fi % command for lines of text. Because + % both versions of \line play an + % important role in the respective + % macro packages, we introduce a new + % command \lineseg in TreeTeX for the + % geometric lines, and \line will have + % the LaTeX-meaning if TreeTeX is used + % with LaTeX, and the plain \TeX + % meaning otherwise. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% General programming environment %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\catcode`\@=11 +\let\g\global +\def\gxdef{\global\xdef} + +% The command \newcount is redefined such that it can be used +% inside a definition (i.e. it is no longer an \outer-command). + +\def\newcount{\alloc@0\count\countdef\insc@unt} + +% Implementing a for-loop (first argument must be a counter). +% Usage: \for<counter>:=<start value>\to<stop value>\do<operations>\od +% Semantics: the same as a PASCAL for-loop +% Precautions: Don't change the counter-value inside the loop! +% for-loops cannot be nested (nor can the \loop-commands!). + +\def\for#1:=#2\to#3\do#4\od{% + \def\f@rcount{#1}\def\upp@rlimit{#3}\def\b@dy{#4}\f@rcount=#2\relax\dof@r} + +\def\dof@r{\ifnum\f@rcount>\upp@rlimit\relax\let\n@xt\relax + \else\b@dy\advance\f@rcount\@ne\let\n@xt\dof@r\fi + \n@xt} + +% \ex repeats a sequence of commands a predetermined number of times. +% Usage: \ex<number>\times<operations>\xe +% Semantics: <operations> is executed as often as <number> says +% Precautions: \ex commands cannot be nested. + +\newcount\@xcount +\newcount\t@mes + +\def\ex#1\times#2\xe{% + \@xcount1 \t@mes#1\def\b@dy{#2}\do@x} + +\def\do@x{\ifnum\@xcount>\t@mes\let\n@xt\relax + \else\b@dy\advance\@xcount\@ne\let\n@xt\do@x\fi + \n@xt} + +% \rect@ngle produces a rectangle with horizontal edge length #1, vertical +% edge length #2 and line thickness #3. The reference point is in the center of +% the rectangle. The width is 0pt. + +\newskip\thickn@ss +\newskip\@nner +\newskip\@uter + +\def\rect@ngle#1#2#3{\hbox to 0pt{% + \thickn@ss#3% + \g\@nner#2\g\advance\@nner-\thickn@ss + \g\divide\@nner\tw@ + \g\@uter#2\g\advance\@uter\thickn@ss + \g\divide\@uter\tw@ + \hskip 0pt minus .5fil% + \vrule height\@uter depth\@nner width\thickn@ss + \vrule height\@uter depth-\@nner width#1% + \hskip 0pt minus 1fil% + \vrule height-\@nner depth\@uter width#1% + \vrule height\@nner depth\@uter width\thickn@ss + \hskip 0pt minus .5fil% + }% \hbox + }% \def + +% \s@ries takes two arguments. The first one is a name, say XXX, and +% the second is a series of arguments, devided by two slashs (//). +% \s@ries assigns this last series of arguments one after another to the +% control sequences \XXXi, \XXXii, and so on. Furthermore, a control +% sequence \XXX is defined, which takes a number k as its argument and +% expands to \XXXk', where k' is the roman numeral equivalent to k. + +\def\s@ries#1#2{% + \g\t@mpcnta1 + \gdef\t@mp{#1}% + \@ssign#2/\l@st % \l@st is a sentinal element + \expandafter\gdef\csname#1\endcsname##1{% + \csname#1\romannumeral##1\endcsname}% + } + +\def\@ssign#1/#2{% + \expandafter\gdef\csname\t@mp\romannumeral\t@mpcnta\endcsname{#1}% + \g\advance\t@mpcnta\@ne + \ifx#2\l@st + \g\let\n@xt\relax + \else\g\let\n@xt\@ssign + \fi + \n@xt} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Allocation of internal registers %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newdimen\leftdist +\newdimen\rightdist +\newbox\TeXTree + +\newcount\sl@pe +\newcount\l@vels +\newcount\s@ze + +\newbox\circleb@x +\newbox\squareb@x +\newbox\dotb@x +\newbox\triangleb@x +\newbox\textb@x +\newbox\frameb@x + +\newdimen\circlew@dth +\newdimen\squarew@dth +\newdimen\dotw@dth +\newdimen\trianglew@dth +\newdimen\textw@dth +\newdimen\framew@dth + +\newdimen\vd@st +\newdimen\hd@st +\newdimen\based@st +\newdimen\dummyhalfcenterdim@n + +\newcount\t@mpcnta +\newcount\t@mpcntb +\newcount\t@mpcntc +\newcount\t@mpcntd +\newdimen\t@mpdima +\newdimen\t@mpdimb +\newdimen\t@mpdimc +\newbox\t@mpboxa +\newbox\t@mpboxb + +\newbox\leftb@x +\newbox\rightb@x +\newbox\centerb@x +\newbox\beneathb@x +\newtoks\typ@ +\newbox\centerb@@x +\newdimen\centerdim@n +\newdimen\halfcenterdim@n + +\newdimen\mins@p +\newdimen\halfmins@p +\newdimen\tots@p +\newdimen\halftots@p +\newdimen\currs@p +\newdimen\adds@p +\newcount\l@ftht +\newcount\r@ghtht +\newcount\l@ftinfo +\newcount\r@ghtinfo +\newbox\l@ftbox +\newbox\r@ghtbox + +\newif\ifr@ghthigher % true iff the right subtree is higher than the left one +\newif\ifadds@p + +\newcount\@larg +\newcount\@rarg + +\newif\ifl@fttop +\newif\ifl@ftonly +\newif\ifr@ghtonly +\newif\if@xt +\newif\ifl@ftedge +\newif\ifr@ghtedge +\newif\ifext@nded + +\newdimen\lm@ff +\newdimen\rm@ff +\newdimen\lb@ff +\newdimen\rb@ff +\newdimen\lt@p +\newdimen\rt@p + +\newcount\l@sttreebox % These four counter allocations have been copied +\newcount\l@sttreeheight % to this position from the \Tree command +\newcount\l@stdiminfo % (vs. 2.1). Previously each tree allocated its own +\newcount\l@sttreetype % counters, using up counters for nothing. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Slope handling for the edges %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% The picture environment of LaTeX gives us a choice of 24 positive +% slopes for lines (i.e. edges of trees in this context), +% including vertical ones. The slope of a line is +% given by an x- and an y-value, see L. Lamport, LaTeX, pp. 105f for +% further details. x/y can have the following values (decreasing amount +% of slope): 0/1 1/6 1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5 5/6 1/1 6/5 5/4 +% 4/3 3/2 5/3 2/1 5/2 3/1 4/1 5/1 6/1. +% The x-values are allocated to \xv@li, \xv@lii,..., \xv@lxxiv, and +% they can conveniently be accessed by the command \xv@l{<number>}. +% The same holds for the y-values. + +\s@ries{xv@l}{0//1//1//1//1//2//1//3//2//3//4//5//1//6//% + 5//4//3//5//2//5//3//4//5//6} +\s@ries{yv@l}{1//6//5//4//3//5//2//5//3//4//5//6//1//5//% + 4//3//2//3//1//2//1//1//1//1} + +% \hv@ldef calculates \hv@li, \hv@lii,..., \hv@lxxiv for a given dimen +% \vd@st according to the following picture: +% +% /-| +% / | +% / | +% / | +% / |\vd@st +% / | +% / | +% / -| | +% / |\yv@l| +% / _| _| +% +% |___| +% \xv@l +% |_________| +% .5\hv@l +% +% \hv@li,..., \hv@lxxiv are initialized in \beginTree, when the +% actual value for \vd@st is known (\vd@st will depend on the point size of +% the picture). As before, these values can conveniently be accessed by the +% command \hv@l{<number>}. + +\def\hv@ldef{% + \for\t@mpcnta:=1\to24% + \do\g\t@mpdima\vd@st\g\multiply\t@mpdima by\xv@l{\t@mpcnta}% + \g\divide\t@mpdima by\yv@l{\t@mpcnta}\g\multiply\t@mpdima by 2 + \expandafter\gxdef\csname hv@l\romannumeral\t@mpcnta\endcsname{% + \the\t@mpdima}% + \od} + +\def\hv@l#1{\csname hv@l\romannumeral#1\endcsname} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Naming trees %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% A TeXtree is stored in TeX's internal registers in the following way: +% A TeXtree of height h has associated to itself the following internal +% TeX registers: a box, holding the graphical appearance of the tree, +% a consecutive number of 6+2h internal dimen registers, holding the +% additional information about the contour of the tree, a counter +% holding the height h of the tree, a counter holding the first +% position of the additional information registers, and a toks register +% holding the type of the node (circle, square, dot, triangle, text, or frame). +% The height and position +% of additional information are stored in consecutive order for +% consecutive trees. The same is true for the boxes and toks. + +% Four key numbers, the register numbers (addresses) +% for the height, diminfo, box, and type +% of a tree, enable you to access all information which is stored about the +% tree. For the last tree on the stack, the four key numbers are stored in the +% counters \l@sttreeheight, \l@stdiminfo, \l@sttreebox, and \l@sttreetype, +% the key numbers for the next tree are \l@sttreeheight-2, \l@stdiminfo-2, +% \l@sttreebox-1, and \l@sttreetype-1, and so on. + +% The macro \n@metree gives names to some registers associated with the tree. +% The tree to be named is specified by its four key numbers. \n@metree takes +% five arguments, namely the keynumbers for height, info, box and type of the +% tree, and the name to be given to the tree. If the tree gets the name XXX and +% the key numbers are h, i, b, and t, the commands on the left side of the +% following list get the meaning on the right side. + +% \XXXht <--- \count h +% \XXXinfo <--- \count i +% \XXXbox <--- b +% \XXXtype <--- \toks t +% \XXXlmoff <--- \dimen f where f is the address stored +% in \count i +% \XXXrmoff <--- \dimen (f+1) +% \XXXlboff <--- \dimen (f+2) +% \XXXrboff <--- \dimen (f+3) +% \XXXltop <--- \dimen (f+4) +% \XXXrtop <--- \dimen (f+5) +% \XXXloff <--- \dimen (f+4+2g) where g is the height stored in +% \count h, i.e. \dimen (f+4+2g) +% holds loff(1) of the tree, if g>0 +% \XXXroff <--- \dimen (f+5+2g) + +% The macro \pr@vioustree sets \l@sttreeheight, \l@stdiminfo, +% \l@sttreebox and \l@sttreetype to the key numbers of the previous tree +% and gives the name `l@st' to this tree. + +% The macro \@ddname which has two names n1 and n2 as arguments, gives +% the tree with name n1 the additional name n2. + +% The macro \n@mel@st gives the name `l@st' to the tree with the +% key numbers \l@sttreeheight, \l@stdiminfo, \l@sttreebox and \l@sttreetype. + +% The macro \n@xttree sets \l@sttreebox, \l@sttreeheight, \l@stdiminfo, +% \count\l@stdiminfo, and \l@sttreetype to the next free position. + +% The macro \@ppenddummy pushs a dummy onto the stack and names it `l@st'. +% The dummy has height -1, its box is the empty box, its type is circle, +% and all dimensions are 0pt. + +% \p@s#1#2#3 sets counter #1 to position #2 of tree #3. #1 must be a counter, +% #3 must be a name for the tree. If the tree has the name XXX, \XXXinfo +% must be a number holding the first position of the dimen-parameters of +% the tree and \XXXht must hold the height of the tree. +% #2 must be one of the following control sequences indicating the +% desired position: \lmoff, \rmoff, \lboff, \rboff, \ltop, \rtop, \loff, or +% \roff. \loff and \roff give the left resp. right offset of the *top* +% level of the tree. + +\def\p@s#1#2#3{% + \g#1\csname#3info\endcsname + \gxdef\t@mp{\csname#3ht\endcsname}% + \ifnum\t@mp<0 \gxdef\t@mp{0}\fi + #2{#1}% + } + +\chardef\@lmoff0 \chardef\@rmoff1 \chardef\@ltop4 \chardef\@rtop5 +\chardef\@lboff2 \chardef\@rboff3 \chardef\@loff4 \chardef\@roff5 + +\def\lmoff#1{\g\advance#1 by\@lmoff} +\def\rmoff#1{\g\advance#1 by\@rmoff} +\def\lboff#1{\g\advance#1 by\@lboff} +\def\rboff#1{\g\advance#1 by\@rboff} +\def\ltop#1{\g\advance#1 by\@ltop} +\def\rtop#1{\g\advance#1 by\@rtop} +\def\loff#1{\g\advance#1 by\@loff\g\advance#1 by\t@mp + \g\advance#1 by\t@mp\relax} +\def\roff#1{\g\advance#1 by\@roff\g\advance#1 by\t@mp + \g\advance#1 by\t@mp\relax} + +% \n@meinfo#1 defines for an argument XXX (name of a tree) \XXXlmoff, +% \XXXrmoff, ... as lmoff(XXX), rmoff(XXX),... . +% The following arguments will be used: l@ft, r@ght, l@st, +% m@n, and m@x. + +\def\n@meinfo#1{% + \n@me@nfo{#1}{lmoff}\n@me@nfo{#1}{rmoff}% + \n@me@nfo{#1}{lboff}\n@me@nfo{#1}{rboff}% + \n@me@nfo{#1}{ltop}\n@me@nfo{#1}{rtop}% + \n@me@nfo{#1}{loff}\n@me@nfo{#1}{roff}% + } + +\def\n@me@nfo#1#2{% + \p@s\t@mpcnta{\csname#2\endcsname}{#1}% + \expandafter\gxdef\csname#1#2\endcsname{\dimen\the\t@mpcnta}} + +\def\n@metree#1#2#3#4#5{% + \expandafter\gxdef\csname#5ht\endcsname{\count\the#1}% + \expandafter\gxdef\csname#5info\endcsname{\count\the#2}% + \expandafter\gxdef\csname#5box\endcsname{\the#3}% + \expandafter\gxdef\csname#5type\endcsname{\toks\the#4}% + \n@meinfo{#5}% + } + +\chardef\@cntoff3 \chardef\@boxoff1 \chardef\@dimoff2 \chardef\@typeoff1 + +\def\pr@vioustree{% + \g\advance\l@sttreeheight by-\@cntoff + \g\advance\l@stdiminfo by-\@cntoff + \g\advance\l@sttreetype by-\@cntoff + \g\advance\l@sttreebox by-\@boxoff + \n@mel@st + } + +\def\@ddname#1#2{% + \expandafter\gxdef\csname#2ht\endcsname{\csname#1ht\endcsname}% + \expandafter\gxdef\csname#2info\endcsname{\csname#1info\endcsname}% + \expandafter\gxdef\csname#2type\endcsname{\csname#1type\endcsname}% + \expandafter\gxdef\csname#2box\endcsname{\csname#1box\endcsname}% + \n@meinfo{#2}% + } + +\def\n@xttree{% + \p@s\t@mpcnta\loff{l@st}\g\advance\t@mpcnta by\@dimoff + \g\advance\l@sttreeheight by\@cntoff + \g\advance\l@stdiminfo by\@cntoff + \g\advance\l@sttreetype by\@cntoff + \g\advance\l@sttreebox by\@boxoff + \g\count\l@stdiminfo\t@mpcnta + } + +\def\@ppenddummy{% pushs a dummy onto the stack and names it `l@st' + % The dummy has height -1, its box is the empty box, the type + % is circle, and all dimensions are 0pt. + \n@xttree \g\count\l@sttreeheight-\@ne\n@mel@st + \l@sttype{circle}% + \g\setbox\l@stbox\copy\voidb@x + \g\l@stlmoff=0pt\g\l@strmoff=0pt\g\l@stlboff=0pt\g\l@strboff=0pt% + \g\l@stltop=0pt\g\l@strtop=0pt\g\l@stloff=0pt\g\l@stroff=0pt% + } + +\def\g@tchildren{% enables us to talk about the left and the right child + % (names l@ft resp. r@ght) and the smaller and the larger + % child (names m@n resp. m@x) + \ifl@fttop\@ddname{l@st}{l@ft}% + \pr@vioustree + \@ddname{l@st}{r@ght}% + \else\@ddname{l@st}{r@ght}% + \pr@vioustree + \@ddname{l@st}{l@ft}% + \fi + \ifnum\r@ghtht>\l@ftht\relax + \r@ghthighertrue + \@ddname{r@ght}{m@x}% + \@ddname{l@ft}{m@n}% + \else\r@ghthigherfalse + \@ddname{l@ft}{m@x}% + \@ddname{r@ght}{m@n}% + \fi + } + +\def\n@mel@st{% + \n@metree\l@sttreeheight\l@stdiminfo\l@sttreebox\l@sttreetype{l@st}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Initialization of the tree environment %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\beginTree{% + \begingroup + \unitlength 1pt% + \divide\unitlength by 65536 + \l@sttreebox\count14 + \l@sttreeheight\count10 + \advance\l@sttreeheight by \@ne + \count\l@sttreeheight=-1 + \l@stdiminfo\l@sttreeheight + \advance\l@stdiminfo by \@ne + \count\l@stdiminfo\count11 + \advance\count\l@stdiminfo by -5 + \l@sttreetype\l@stdiminfo + \advance\l@sttreetype by\@ne + \count\l@sttreetype\count15 + \n@mel@st\ignorespaces + } + +\let\Tree\beginTree + +\def\endTree{% + \g\leftdist-\l@stlmoff\g\advance\leftdist by \l@stltop + \g\rightdist\l@strmoff\g\advance\rightdist by\l@strtop + \g\setbox\TeXTree\box\l@stbox\endgroup\ignorespaces} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Specification of nodes %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% A node is defined by the command \node{<specifications>}. +% <specifications> defines the labels, graphical appearence and the order +% of the node and the thickness of the edges. +% Labels are defined by the commands \lft, \rght, \cntr, +% and \bnth. The specification of empty labels may be omitted. +% The graphical appearence is defined by the command \type{<type>}. +% <type> can have the values `circle', `square', `dot', +% `triangle', 'text', or 'frame'. The thickness of the edges is defined by +% \leftthick and \rightthick that give thick edges instead of the +% normal thin ones. Furthermore, +% the order of the node is given by the following commands: +% \external (if the node is an external node), \leftonly (if the node has a +% left successor only), \rightonly (analogous), \unary (if the node is an +% unary one), and \lefttop (the +% node which has been defined before this one, is supposed to be the left +% successor instead of the right one). +% Default: two children, no labels, type circle, thin edges, +% left child has been entered first. + +\def\th@ck{\let\@linefnt\tenlnw + \@wholewidth\fontdimen8\tenlnw\@halfwidth.5\@wholewidth} + +\def\leftthick{\g\let\l@ftthick\th@ck} +\def\rightthick{\g\let\r@ghtthick\th@ck} +\def\lft#1{\g\setbox\leftb@x\hbox{#1\ }} +\def\rght#1{\g\setbox\rightb@x\hbox{\ #1}} +\def\cntr#1{\g\setbox\centerb@x\hbox{#1\strut}} +\def\bnth#1{\g\setbox\beneathb@x\hbox to0pt{\hss\strut#1\hss}} +\def\type#1{% + \g\setbox\centerb@@x\copy\csname#1b@x\endcsname + \g\centerdim@n\csname#1w@dth\endcsname + \typ@{#1}% + \g\halfcenterdim@n=.5\centerdim@n} + +\def\ext@nded{\g\ext@ndedfalse} % This definition must precede + % \input TreeTeX.sty (outdated now!) + +\def\node#1{% + %%% Initialization (node type and labels), defaults and actual values + \g\setbox\leftb@x\copy\voidb@x + \g\setbox\rightb@x\copy\voidb@x + \g\setbox\centerb@x\copy\voidb@x + \g\setbox\beneathb@x\copy\voidb@x + \type{circle}% + \g\l@fttopfalse\g\l@ftonlyfalse\g\l@ftedgetrue + \g\r@ghtonlyfalse\g\r@ghtedgetrue\g\@xtfalse\ext@nded\n@dummy + \g\let\l@ftthick\relax\g\let\r@ghtthick\relax + #1% + \@pdcenter + \d@mmy + \n@de + \ignorespaces + } + +\def\@pdcenter{\csname\the\typ@ @cntr\endcsname} + +\let\circle@cntr\relax +\let\square@cntr\relax +\let\triangle@cntr\relax +\let\dot@cntr\relax + +\def\text@cntr{% + \g\centerdim@n\wd\centerb@x + \g\halfcenterdim@n.5\centerdim@n} + +\def\frame@cntr{% + \g\setbox\centerb@x\hbox{\ \unhcopy\centerb@x\ } + \g\centerdim@n\wd\centerb@x + % \g\advance\centerdim@n\fontdimen2\font + \g\halfcenterdim@n.5\centerdim@n + \g\setbox\centerb@@x\rect@ngle{\centerdim@n}{\squarew@dth}{.4pt}} + +\def\leftonly{\g\l@ftonlytrue\g\r@ghtedgefalse\g\let\d@mmy\l@ftdummy} +\def\rightonly{\g\r@ghtonlytrue\g\l@ftedgefalse\g\let\d@mmy\r@ghtdummy} +\def\unary{\g\r@ghtedgefalse\g\let\d@mmy\@ndummy} +\def\external{\g\@xttrue\g\l@ftedgefalse\g\r@ghtedgefalse\g\let\d@mmy\@xtdummy} + +\def\lefttop{\g\l@fttoptrue} + +\def\@xtdummy{% + \@ppenddummy + \g\l@strtop-\halfmins@p + \@ppenddummy + \g\l@stltop-\halfmins@p + } + +\def\n@dummy{\g\let\d@mmy\relax} + +\def\l@ftdummy{% cf. \g@tposition + \@ppenddummy + \g\l@stltop=\dummyhalfcenterdim@n + \g\l@strtop=\dummyhalfcenterdim@n + } + +\def\r@ghtdummy{% cf. \g@tposition + \lefttop + \@ppenddummy + \g\l@stltop=\dummyhalfcenterdim@n + \g\l@strtop=\dummyhalfcenterdim@n + } + +\def\@ndummy{% + \g\t@mpdima\l@strtop\relax + \@ppenddummy + \g\l@stltop-\mins@p\g\advance\l@stltop by-\t@mpdima + \g\l@strtop=\t@mpdima + } + +\def\n@de{% + \g@tposition % naming children and calculating \sl@pe and \tots@p + \g@tlt@p\g@trt@p % calculating \lt@p and \rt@p + \g@tlm@ff\g@trm@ff % calculating \lm@ff and \rm@ff + \g@tlb@ff\g@trb@ff % calculating \lb@ff and \rb@ff + \@pdlroff % updating loff and roff for all levels but the top one + \@pdloffl\@pdroffl % updating loff(1) and roff(1) of the parent tree + \@pddim % updating ltop, rtop, lmoff, rmoff, lboff, and rboff + \@pdinfo\@pdht % updating diminfo and treeheight + \@pdbox % updating treebox + \@pdtype % updating type + \n@mel@st % giving the name `l@st' to the new tree + \ignorespaces + } + +\def\g@tposition{% naming children and calculating \sl@pe, \tots@p, and node offsets + \g@tchildren\c@lcsep\c@lcslope\c@lcoffsets + \ifext@nded\relax + \else\ifl@ftonly\g\r@ghtrtop=-\tots@p + \g\advance\r@ghtrtop by\l@ftrtop + \fi + \ifr@ghtonly\g\l@ftltop=-\tots@p + \g\advance\l@ftltop by\r@ghtltop + \fi + \fi % cf. \l@ftdummy and \r@ghtdummy + } + +\def\@pdinfo{% updating diminfo + \g\l@stinfo=\m@xinfo\relax + } + +\def\@pdht{% updating treeheight + \g\l@stht=\m@xht + \g\advance\l@stht by\@ne + } + +\def\@pdtype{% updating type + \g\l@sttype\typ@ + } + +\def\g@tlt@p{% calculating \lt@p + \g\lt@p\wd\leftb@x\g\advance\lt@p by\halfcenterdim@n + } + +\def\g@trt@p{% calculating \rt@p + \g\rt@p\wd\rightb@x\g\advance\rt@p by\halfcenterdim@n + } + +\def\g@tlm@ff{% calculating \lm@ff + % \lm@ff:=lmoff(left tree)-ltop(left tree) + % -.5\tots@p+\lt@p + \g\lm@ff\l@ftlmoff + \g\advance\lm@ff by-\l@ftltop + \g\advance\lm@ff by-\halftots@p + \g\advance\lm@ff by\lt@p\relax + % if ht(left tree) < ht(right tree) + % \t@mpdima:=lmoff(right tree)-ltop(right tree)+.5\tots@p+\lt@p + % \lm@ff:=min(\lm@ff,\t@mpdima) fi + \ifnum\l@ftht<\r@ghtht\relax + \g\t@mpdima\r@ghtlmoff + \g\advance\t@mpdima by-\r@ghtltop + \g\advance\t@mpdima by\halftots@p + \g\advance\t@mpdima by\lt@p\relax + \ifdim\t@mpdima<\lm@ff\relax + \g\lm@ff\t@mpdima + \fi + \fi + % \lm@ff:=min(\lm@ff,0pt) + \ifdim0pt<\lm@ff\relax + \g\lm@ff=0pt% + \fi + } + +\def\g@trm@ff{% calculating \rm@ff + % analog to lm@ff + % \rm@ff:=rmoff(right tree)+rtop(right tree) + % +.5\tots@p-\rt@p + \g\rm@ff\r@ghtrmoff + \g\advance\rm@ff by\r@ghtrtop + \g\advance\rm@ff by\halftots@p + \g\advance\rm@ff by-\rt@p\relax + % \t@mpdima:=rmoff(left tree)+rtop(left tree)-.5\tots@p-\rt@p + \ifnum\r@ghtht<\l@ftht\relax + \g\t@mpdima\l@ftrmoff + \g\advance\t@mpdima by\l@ftrtop + \g\advance\t@mpdima by-\halftots@p + \g\advance\t@mpdima by-\rt@p\relax + \ifdim\t@mpdima>\rm@ff\relax + \g\rm@ff\t@mpdima + \fi + \fi + % \rm@ff:=max(\rm@ff,0pt) + \ifdim0pt>\rm@ff\relax + \g\rm@ff=0pt + \fi + } + +\def\g@tlb@ff{% calculating \lb@ff + % \lb@ff:=lboff(right tree)-ltop(right tree)+.5\tots@p+\lt@p + % resp.:=lboff(left tree)-ltop(left tree) + % -.5\tots@p+\lt@p + \if@xt\g\lb@ff0pt% + \else\ifnum\l@ftht<\r@ghtht\relax + \g\lb@ff\r@ghtlboff + \g\advance\lb@ff by-\r@ghtltop + \g\advance\lb@ff by\halftots@p + \g\advance\lb@ff by\lt@p\relax + \else\g\lb@ff\l@ftlboff + \g\advance\lb@ff by-\l@ftltop + \g\advance\lb@ff by-\halftots@p + \g\advance\lb@ff by\lt@p\relax + \fi + \fi + } + +\def\g@trb@ff{% calculating \rb@ff + % \rb@ff:=rboff(left tree)+rtop(left tree)-.5\tots@p-\rt@p + % resp.:=rboff(right tree)+rtop(right tree) + % +.5\tots@p-\rt@p + \if@xt\g\rb@ff0pt% + \else\ifnum\r@ghtht<\l@ftht\relax + \g\rb@ff\l@ftrboff + \g\advance\rb@ff by\l@ftrtop + \advance\rb@ff by-\halftots@p + \g\advance\rb@ff by-\rt@p\relax + \else\g\rb@ff\r@ghtrboff + \g\advance\rb@ff by\r@ghtrtop + \g\advance\rb@ff by\halftots@p + \g\advance\rb@ff by-\rt@p\relax + \fi + \fi + } + +\def\@pdlroff{% updating loff and roff for all levels but the top one + % if right tree higher \t@mpdima:=-ltop(right tree) + % \t@mpdimb:=lboff(left tree)-ltop(left tree) + % % \t@mpdimb holds the offset between the node + % % and the left edge of the bottom of the left tree + % else \t@mpdima:=rtop(left tree) + % \t@mpdimb:=lboff(right tree)+rtop(right tree) + % % substitute left by right + % fi + \ifr@ghthigher\g\t@mpdima-\r@ghtltop\relax + \g\t@mpdimb\l@ftlboff + \g\advance\t@mpdimb by-\l@ftltop\relax + \else\g\t@mpdima\l@ftrtop\relax + \g\t@mpdimb\r@ghtlboff + \g\advance\t@mpdimb by\r@ghtrtop\relax + \fi + \ifr@ghthigher\p@s\t@mpcnta\loff{m@n}% pointer to loff(1) of smaller tree + \p@s\t@mpcntb\loff{m@x}% pointer to loff(1) of larger tree + \else\p@s\t@mpcnta\roff{m@n}% pointer to roff(1) of smaller tree + \p@s\t@mpcntb\roff{m@x}% pointer to roff(1) of larger tree + \fi % if the right tree is the higher one you have to shift + % the left profile of the smaller tree, otherwise the + % right one + % For every level, \t@mpdima contains the offset between the node of the + % higher tree and the inner edge of the next level. Furthermore, if the + % right tree is the higher one, the left profile of the left tree becomes + % the upper part of the left profile of the parent tree, otherwise + % substitute `left' by `right.' + \ex\m@nht\times + \g\advance\t@mpdima by\dimen\t@mpcntb + \g\dimen\t@mpcntb\dimen\t@mpcnta + \g\advance\t@mpcnta by-\@dimoff + \g\advance\t@mpcntb by-\@dimoff\relax + \xe + % The link between the last outer level of the smaller tree and the next + % level of the higher one: + % \dimen\t@mpcntb:=\dimen\t@mpcntb+\t@mpdima+\tots@p-\t@mpdimb + % if left tree is smaller than right tree + % resp.\dimen\t@mpcntb+\t@mpdima-\tots@p-\t@mpdimb + % if right tree is smaller than left tree + \ifnum\m@xht=\m@nht\relax + \else\g\advance\dimen\t@mpcntb by\t@mpdima + \ifnum\l@ftht<\r@ghtht\relax + \g\advance\dimen\t@mpcntb by\tots@p + \else\g\advance\dimen\t@mpcntb by-\tots@p + \fi + \g\advance\dimen\t@mpcntb by-\t@mpdimb + \fi + } + +\def\@pdloffl{% updating loff(1) of parent tree + % loff(1) of parent tree:=+\lt@p-.5\tots@p-ltop(left tree) + \p@s\t@mpcnta\loff{m@x}% + \g\advance\t@mpcnta by \@dimoff\relax % pointer to loff(0) of parent tree + \g\dimen\t@mpcnta\lt@p + \g\advance\dimen\t@mpcnta by-\halftots@p + \g\advance\dimen\t@mpcnta by-\l@ftltop\relax + } + +\def\@pdroffl{% updating roff(1) of parent tree + % roff(l) of parent tree:=-\rt@p+.5\tots@p+rtop(right tree) + \p@s\t@mpcnta\roff{m@x}% + \g\advance\t@mpcnta by \@dimoff\relax % pointer to roff(0) of parent tree + \g\dimen\t@mpcnta-\rt@p + \g\advance\dimen\t@mpcnta by\halftots@p + \g\advance\dimen\t@mpcnta by\r@ghtrtop\relax + } + +\def\@pddim{% updating ltop, rtop, lmoff, rmoff, lboff, and rboff + \g\m@xlmoff=\lm@ff\g\m@xrmoff=\rm@ff + \g\m@xlboff=\lb@ff\g\m@xrboff=\rb@ff + \g\m@xltop=\lt@p\g\m@xrtop=\rt@p + } + +\def\@pdbox{% pushing the nodebox on the stack: updating treebox + \g\@xarg\xv@l\sl@pe\g\@yarg\yv@l\sl@pe + \ifnum\sl@pe=1 % vertical edge + \g\t@mpdima\vd@st + \g\advance\t@mpdima by-\y@ff\typ@ + \g\advance\t@mpdima by-\y@ff\l@fttype + \g\@larg\t@mpdima % \@larg is a number register! + \g\t@mpdima\vd@st + \g\advance\t@mpdima by-\y@ff\typ@ + \g\advance\t@mpdima by-\y@ff\r@ghttype + \g\@rarg\t@mpdima % \@rarg is a number register! + \else\g\t@mpdima\halftots@p + \g\advance\t@mpdima by-\x@ff\typ@ + \g\advance\t@mpdima by-\x@ff\l@fttype + \g\@larg\t@mpdima % \@larg is a number register! + \g\t@mpdima\halftots@p + \g\advance\t@mpdima by-\x@ff\typ@ + \g\advance\t@mpdima by-\x@ff\r@ghttype + \g\@rarg\t@mpdima % \@rarg is a number register! + \fi + \g\setbox\l@sttreebox\hbox{% + \ifvoid\leftb@x\relax + \else\hskip-\halfcenterdim@n\hskip-\wd\leftb@x + \unhcopy\leftb@x\hskip\halfcenterdim@n + \fi + \ifvoid\centerb@x\relax + \else\g\t@mpdima-.5\wd\centerb@x\hskip\t@mpdima + \unhbox\centerb@x\hskip\t@mpdima + \fi + \ifvoid\rightb@x\relax + \else\g\t@mpdima-\wd\rightb@x\hskip\halfcenterdim@n + \unhbox\rightb@x\hskip\t@mpdima\hskip-\halfcenterdim@n + \fi + \raise\based@st\copy\centerb@@x + \if@xt\relax + \lower\s@ze pt\hbox to0pt{\hss\unhbox\beneathb@x\hss}% + \else\hskip-\halftots@p + \lower\vd@st\box\l@ftbox + \ifl@ftedge\drawl@ftedge\else\hskip\halftots@p\fi + \ifr@ghtedge\drawr@ghtedge\else\hskip\halftots@p\fi + \lower\vd@st\box\r@ghtbox + \hskip-\halftots@p + \fi + }% of hbox + } + +\def\drawl@ftedge{% + \hskip\x@ff\l@fttype + \g\t@mpdimc\y@ff\l@fttype\g\advance\t@mpdimc by\based@st + \g\advance\t@mpdimc-\vd@st + \raise\t@mpdimc + \hbox{\l@ftthick\lineseg(\@xarg,\@yarg){\@larg}}% + \hskip\x@ff\typ@ + } + +\def\drawr@ghtedge{% + \hskip\x@ff\typ@ + \g\t@mpdimc\vd@st + \g\advance\t@mpdimc by \based@st + \g\advance\t@mpdimc by -\y@ff\typ@\relax + \g\advance\t@mpdimc by- \vd@st + \raise\t@mpdimc + \hbox{\r@ghtthick\lineseg(\@xarg,-\@yarg){\@rarg}}% + \hskip\x@ff\r@ghttype + } + +\def\x@ff#1{% + \csname\the#1x@ff\endcsname\sl@pe + } + +\def\y@ff#1{% + \csname\the#1y@ff\endcsname\sl@pe + } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Calculating the separation of subtrees %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \c@lcslope will calculate the required slope of the edges +% when the nodes are to be \vd@st apart vertically +% and at least \tots@p apart horizontally. This slope is returned by +% the value of the counter \sl@pe (a number between 1 and 23). +% Furthermore, \tots@p is updated in order to fit to this slope. + +\def\c@lcslope{% + \g\sl@pe1 + \loop + \ifdim\hv@l\sl@pe < \tots@p + \g\advance\sl@pe by1 + \repeat + \g\tots@p\hv@l\sl@pe + \g\halftots@p.5\tots@p} + + +\def\c@lcsep{% + %%% \tots@p:=\mins@p + rtop(left tree) + ltop(right tree) + %%% \currs@p:=\mins@p + \g\tots@p\mins@p + \g\advance\tots@p by\l@ftrtop + \g\advance\tots@p by\r@ghtltop\relax + \g\currs@p\mins@p + %%% \t@mpcnta:= pointer to roff(0) of left tree + %%% \t@mpcntb:= pointer to loff(0) of right tree + \p@s\t@mpcnta\roff{l@ft}% + \p@s\t@mpcntb\loff{r@ght}% + %%% Calculate \currs@p and update \tots@p for each level of the + %%% smaller tree + %%% If at any level the subtrees are as close or closer than at + %%% the level of their roots, they will be moved apart by the additional + %%% amount of \adds@p + \g\adds@pfalse + \g\t@mpcntc\m@nht + \ex\t@mpcntc\times + \g\advance\currs@p by-\dimen\t@mpcnta + \g\advance\currs@p by \dimen\t@mpcntb + \ifdim\mins@p<\currs@p + \else\g\adds@ptrue + \fi + \ifdim\currs@p<\mins@p + \g\advance\tots@p by\mins@p + \g\advance\tots@p by -\currs@p + \g\currs@p\mins@p + \fi + \g\advance\t@mpcnta by -\@dimoff + \g\advance\t@mpcntb by -\@dimoff + \xe + \ifadds@p\g\advance\tots@p by\adds@p\fi} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Predefined trees %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \tri@ngle produces a triangle which covers \l@vels many level of a tree. +% The slope of the edges is given by \sl@pe, the reference point of the +% triangle is in the top, the width is 0pt. + +\def\tri@ngle{% + \vtop{\g\@xarg\xv@l\sl@pe \g\@yarg\yv@l\sl@pe + \g\t@mpdimc\l@vels\vd@st + \g\advance\t@mpdimc by .5\squarew@dth + \g\multiply\t@mpdimc\xv@l\sl@pe + \g\divide\t@mpdimc\yv@l\sl@pe + \g\@larg\t@mpdimc + \offinterlineskip + \vskip0pt% Force the reference point to the top + \hbox to0pt{\hss\lineseg(\@xarg,\@yarg){\@larg}% + \hskip\t@mpdimc\rlap{\lineseg(-\@xarg,\@yarg){\@larg}}% + \hss}% + \setbox\t@mpboxa + \hbox to0pt{\hss\vrule height.2pt depth.2pt width2\t@mpdimc\hss}% + \t@mpdimc-.5\squarew@dth\advance\t@mpdimc\based@st + \ht\t@mpboxa0pt\dp\t@mpboxa\t@mpdimc\copy\t@mpboxa + }% + } + +\def\lvls#1{\g\l@vels#1} +\def\slnt#1{\g\sl@pe#1} + +\def\treesymbol#1{% + \g\setbox\leftb@x\copy\voidb@x + \g\setbox\rightb@x\copy\voidb@x + \g\setbox\centerb@x\copy\voidb@x + \g\setbox\beneathb@x\copy\voidb@x + \lvls{1}\slnt{3}% + #1% + \g\centerdim@n\trianglew@dth + \g\halfcenterdim@n.5\trianglew@dth + \n@xttree + \g\count\l@sttreeheight\l@vels% \g\advance\count\l@sttreeheight by\tw@ + \g\toks\l@sttreetype{triangle}% + \n@mel@st + \g\hd@st\hv@l\sl@pe \g\divide\hd@st by\tw@ + \g\l@stltop=\halfcenterdim@n\g\advance\l@stltop by\wd\leftb@x + \g\l@strtop=\halfcenterdim@n\g\advance\l@strtop by\wd\rightb@x + \g\l@stlboff=-\hd@st \g\multiply\l@stlboff by\l@vels + \g\advance\l@stlboff by\wd\leftb@x + \g\l@strboff=\hd@st \g\multiply\l@strboff by\l@vels + \g\advance\l@strboff by-\wd\rightb@x + \g\l@stlmoff=\l@stlboff\relax + \ifdim\l@stlmoff>0pt\relax\g\l@stlmoff=0pt\fi + \g\l@strmoff=\l@strboff + \ifdim\l@strmoff<0pt\relax\g\l@strmoff=0pt\fi + \g\t@mpcnta\l@stinfo\g\advance\t@mpcnta by6% preliminary + \ex\l@vels\times + \g\dimen\t@mpcnta-\hd@st\g\advance\t@mpcnta by\@ne + \g\dimen\t@mpcnta\hd@st\g\advance\t@mpcnta by\@ne + \xe + \g\advance\t@mpcnta by-\tw@ + \g\advance\dimen\t@mpcnta by\wd\leftb@x + \g\advance\t@mpcnta by\@ne + \g\advance\dimen\t@mpcnta by-\wd\rightb@x + \g\setbox\l@stbox\vtop % to\l@vels\vd@st + {\offinterlineskip + \g\setbox\t@mpboxa + \hbox{\hskip-\halfcenterdim@n\hskip-\wd\leftb@x\unhbox\leftb@x + \hskip\halfcenterdim@n + \raise\based@st\tri@ngle + \hskip\halfcenterdim@n\t@mpdima-\wd\rightb@x + \unhbox\rightb@x\hskip\t@mpdima\hskip-\halfcenterdim@n} + \g\ht\t@mpboxa=0pt\box\t@mpboxa + \setbox\centerb@x\hbox to0pt{\hss\unhbox\centerb@x\hss}% + \ht\centerb@x0pt\dp\centerb@x0pt\box\centerb@x + \vskip\s@ze pt + \ht\beneathb@x0pt\box\beneathb@x + \vskip-\dp\beneathb@x\vskip-\ht\beneathb@x}% + \ignorespaces + } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Node sizes %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% The algorithm (macros \@pdbox, \drawl@ftedge, \drawr@ghtedge) accesses the +% horizontal and vertical offset fo any node type XXX (circle, square, +% dot, triangle, text, and frame) via the macros \XXXx@ff resp. \XXXy@ff. +% These two macros take the slope of the outgoing edges +% of the current node as their argument. Though horizontal offsets can +% be calculated from the vertical offsets and vice versa, there is no +% room to do so in the \XXXx@ff or \YYYy@ff macros, because these macros +% have to expand to a dimension! +% +% Let k be a <number>. Actually k will be the slope of the outgoing +% edges of the current node. +% +% There are three methods how, e.g., \XXXx@ff can be defined , depending +% on the node type and the x- or y-orientation. +% First, \XXXx@ff can be defined to expand to \XXXx@ffk', k' beeing +% the roman numeral representation of the value of k, that in turn +% expands to the appropriate dimension (example: \circley@ff). +% In this case, \XXXx@ffi,...,\XXXx@ffiv are predefined by a \s@ries +% command. +% Second, \XXXx@ff can be defined to expand to a fixed dimension, +% independent of its argument (example: \dotx@ff). +% Third, the value of \XXXx@ff can be defined by the macro +% \c@lcoffsets, when the slope k is already known. In this case, +% the computation of \XXXx@ff makes use of the actual value +% of k and possibly other offsets that are already predefined by method I +% (examples: \circlex@ff, \squarex@ff). + +\def\norm@ff{% everything set up for 10pt node size +\s@ries{circley@ff}{0.50000pt//0.49320pt//0.49029pt//0.48507pt//% + 0.47434pt//0.46424pt//0.44721pt//0.42875pt//% + 0.41603pt//0.40000pt//0.39043pt//0.38411pt//% + 0.35355pt//0.32009pt//0.31235pt//0.30000pt//% + 0.27735pt//0.25725pt//0.22361pt//0.18570pt//% + 0.15811pt//0.12127pt//0.09806pt//0.08220pt}% + } + +\def\dotx@ff#1{0pt} +\def\doty@ff#1{0pt} + +\def\trianglex@ff#1{0pt} +\def\triangley@ff#1{0pt} + +\def\c@lcoffsets{% + % \circlex@ff uses predefined \circley@ffi, \circley@ffii etc. + \ifnum\sl@pe=\@ne\relax + \xdef\circlex@ff##1{0pt}% + \else\g\t@mpcnta26 % number of slopes + 2 + \g\advance\t@mpcnta-\sl@pe + \xdef\circlex@ff##1{\circley@ff\t@mpcnta}% + \fi + % \squarex@ff and \squarey@ff are computed directly from \sl@pe and \squarew@dth + \ifnum\sl@pe<13\relax % incoming edge meets upper border of a square node + % (slope 13 corresponds to 45 degrees) + \g\t@mpdima.5\squarew@dth + \xdef\squarey@ff##1{\the\t@mpdima}% + \g\multiply\t@mpdima\xv@l\sl@pe + \g\divide\t@mpdima\yv@l\sl@pe + \xdef\squarex@ff##1{\the\t@mpdima}% + \else\g\t@mpdima.5\squarew@dth + \xdef\squarex@ff##1{\the\t@mpdima}% + \g\multiply\t@mpdima\yv@l\sl@pe + \g\divide\t@mpdima\xv@l\sl@pe + \xdef\squarey@ff##1{\the\t@mpdima}% + \fi + % \texty@ff is .5\squarew@dth, \textx@ff is adjusted accordingly + \g\t@mpdima.5\squarew@dth + \xdef\texty@ff##1{\the\t@mpdima}% + \g\multiply\t@mpdima\xv@l\sl@pe + \g\divide\t@mpdima\yv@l\sl@pe + \xdef\textx@ff##1{\the\t@mpdima}% + \let\framex@ff\textx@ff + \let\framey@ff\texty@ff + } + +\def\upds@ze#1{% + \for\t@mpcntc:=1\to24 + \do\g\t@mpdimc=\csname#1\romannumeral\t@mpcntc\endcsname\relax + \g\multiply\t@mpdimc by\s@ze + \expandafter\gxdef\csname#1\romannumeral\t@mpcntc\endcsname + {\the\t@mpdimc}% + \od} + +\def\nodes@ze{% + \begingroup + \unitlength 1pt% + \divide\unitlength by 65536 + \g\based@st\s@ze pt\g\divide\based@st by 10 % \based@st is 10 % of + % circle diameter + \g\dummyhalfcenterdim@n=\s@ze pt\g\divide\dummyhalfcenterdim@n by\tw@ + \g\circlew@dth=\s@ze pt% + \g\t@mpcntc\s@ze\g\multiply\t@mpcntc by 65536 + \g\setbox\circleb@x\hbox to0pt{\circle{\t@mpcntc}\hss}% + \upds@ze{circley@ff}% + \g\squarew@dth.9pt\g\multiply\squarew@dth by\s@ze + \g\setbox\squareb@x\rect@ngle{\squarew@dth}{\squarew@dth}{.4pt}% + \g\dotw@dth=\s@ze pt\g\divide\dotw@dth by 5 + \ifdim\dotw@dth < 1pt\relax + \g\dotw@dth1pt\relax + \fi + \g\t@mpcntc\dotw@dth + \g\setbox\dotb@x\hbox to 0pt{\circle*{\t@mpcntc}\hss}% + \g\trianglew@dth=\s@ze pt\g\multiply\trianglew@dth by \tw@ + \g\divide\trianglew@dth by 3 + \g\textw@dth=0pt% + \g\setbox\textb@x\copy\voidb@x + \g\framew@dth0pt% + \g\setbox\frameb@x\copy\voidb@x + \hv@ldef + \endgroup + } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Changing the style %%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\treefonts#1{#1} +\def\vdist#1{\g\vd@st=#1\relax} +\def\minsep#1{\g\mins@p=#1\relax\g\halfmins@p=.5\mins@p} +\def\addsep#1{\g\adds@p=#1\relax} +\def\extended{\def\ext@nded{\g\ext@ndedtrue}} +\def\noextended{\def\ext@nded{\g\ext@ndedfalse}} +\def\nodesize#1{\g\t@mpdima=#1\relax\g\s@ze=\t@mpdima + \g\divide\s@ze by 65536\relax} % conversion from dimension to number +\def\Treestyle#1{\norm@ff#1\nodes@ze\ignorespaces} + +\input classes + +\Treestyle{% + \ifLaTeX\treefonts{\normalsize\rm}% + \else\treefonts{\tenrm}% + \fi + \vdist{60pt}% + \minsep{20pt}% + \addsep{0pt}% + \nodesize{20pt}% + } + + +% + + diff --git a/Master/texmf-dist/tex/plain/tugboat/tugboat.cmn b/Master/texmf-dist/tex/plain/tugboat/tugboat.cmn new file mode 100644 index 00000000000..e8b7b771cae --- /dev/null +++ b/Master/texmf-dist/tex/plain/tugboat/tugboat.cmn @@ -0,0 +1,1070 @@ +%% @latexfile{ +%% filename = "tugboat.cmn", +%% version = "1.14", +%% date = "2004/07/12", +%% time = "13:43:50 EDT", +%% checksum = "02352 1070 2988 34579", +%% filetype = "common macros for TUGboat", +%% copyright = "Copyright (C) TeX Users Group. +%% Copying of this file is authorized only if either: +%% (1) you make absolutely no changes to your copy, OR +%% (2) if you do make changes, you first rename it to some +%% other name.", +%% author = "TeX Users Group", +%% address = "TeX Users Group, +%% P.O.Box 2311, +%% Portland, OR 97208-2311, +%% USA", +%% telephone = "415-982-8449", +%% FAX = "415-982-8559", +%% email = "TUGboat@tug.org", +%% codetable = "ISO/ASCII", +%% keywords = "tex users group, tugboat, common macros", +%% abstract = "This file contains macros common to both +%% the PLAIN and LaTeX style files for TUGboat, +%% the Communications of the TeX Users Group. +%% Among other things, it contains supplementary +%% definitions for abbreviations and logos that +%% appear in TUGboat.", +%% docstring = "The checksum field above contains a CRC-16 +%% checksum as the first value, followed by the +%% equivalent of the standard UNIX wc (word +%% count) utility output of lines, words, and +%% characters. This is produced by Robert +%% Solovay's checksum utility.", +%% } +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\fileversion{v1.14} +\def\filedate{2004/07/12} + +\message{File `TUGBOAT.CMN' \fileversion \space\space <\filedate>} + +% +% ***** TUGBOAT.CMN ***** +% +% See the bottom of the file (after \endinput) for a list of +% items defined. +% + +% ************************************************************************* + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% ***** helpful shorthand ***** +% + +% The following allow for easier changes of category. These require that +% the character be addressed as a control-sequence: e.g. \makeescape\/ will +% make the / an escape character. + +\def\makeescape#1{\catcode`#1=0 } +\def\makebgroup#1{\catcode`#1=1 } +\def\makeegroup#1{\catcode`#1=2 } +\def\makemath#1{\catcode`#1=3 } +\def\makealign#1{\catcode`#1=4 } +\def\makeeol#1{\catcode`#1=5 } +\def\makeparm#1{\catcode`#1=6 } +\def\makesup#1{\catcode`#1=7 } +\def\makesub#1{\catcode`#1=8 } +\def\makeignore#1{\catcode`#1=9 } +\def\makespace#1{\catcode`#1=10 } +\def\makeletter#1{\catcode`#1=11 } +\def\makeother#1{\catcode`#1=12 } +\def\makeactive#1{\catcode`#1=13 } +\def\makecomment#1{\catcode`#1=14 } + +\def\makeatletter{\catcode`\@=11 } % included for historical reasons +\chardef\other=12 +\def\makeatother{\catcode`\@=\other} + + % alternative to localization +\def\savecat#1{% + \expandafter\xdef\csname\string#1savedcat\endcsname{\the\catcode`#1}} +\def\restorecat#1{\catcode`#1=\csname\string#1savedcat\endcsname} + + +\savecat\@ +\makeletter\@ % used, as in PLAIN, in protected control sequences + + % for restoring meanings of global control sequences +\def\SaveCS#1{% + \def\scratch{\expandafter\let\csname saved@@#1\endcsname}% + \expandafter\scratch\csname#1\endcsname} +\def\RestoreCS#1{% + \def\scratch{\expandafter\let\csname#1\endcsname}% + \expandafter\scratch\csname saved@@#1\endcsname} + + +% To distinguish between macro files loaded + +\def\plaintubstyle{plain} +\def\latextubstyle{latex} +\ifx\tugstyloaded@\undefined\let\tugstyloaded@\plaintubstyle\fi + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% ***** abbreviations and logos ***** +% + +\def\acro#1{{\SMC #1}\spacefactor1000 } + +\def\AllTeX{(\La)\TeX} + +\def\AMS{American Mathematical Society} + +\def\AmS{{\the\textfont2 A}\kern-.1667em\lower.5ex\hbox + {\the\textfont2 M}\kern-.125em{\the\textfont2 S}} +\def\AmSLaTeX{\AmS-\LaTeX} +\def\AmSTeX{\AmS-\TeX} + +\def\aw{A\kern.1em-W} +\def\AW{Addison\kern.1em-\penalty\z@\hskip\z@skip Wesley} + +\def\BibTeX{{\rm B\kern-.05em{\smc i\kern-.025emb}\kern-.08em\TeX}} + +\def\CandT{{\sl Computers \& Typesetting}} +\def\ConTeXt{C\kern-.0333emon\-\kern-.0667em\TeX\kern-.0333emt} +\def\CTAN{\acro{CTAN}} + +\def\DVItoVDU{DVIto\kern-.12em VDU} + +\def\eTeX{$\varepsilon$-\kern-.125em\TeX} + +\def\Hawaii{Hawai`i} +\def\HTML{\acro{HTML}} + +\def\ISBN{\acro{ISBN} } +\def\ISSN{\acro{ISSN} } + +% Japanese TeX +\def\JTeX{\leavevmode\hbox{\lower.5ex\hbox{J}\kern-.18em\TeX}} + +\def\JoT{{\sl The Joy of \TeX}} + +\def\LAMSTeX{L\raise.42ex\hbox{\kern-.3em\the\scriptfont2 A}% + \kern-.2em\lower.376ex\hbox{\the\textfont2 M}\kern-.125em + {\the\textfont2 S}-\TeX} + +% note -- \LaTeX definition is from LATEX.TEX 2.09 of 7 Jan 86, +% adapted for additional flexibility in TUGboat +%\def\LaTeX{\TestCount=\the\fam \leavevmode L\raise.42ex +% \hbox{$\fam\TestCount\scriptstyle\kern-.3em A$}\kern-.15em\TeX} +% note -- broken in two parts, to permit separate use of La, +% as in (La)TeX +\def\La{\TestCount=\the\fam \leavevmode L% + \setbox\TestBox=\hbox{$\fam\TestCount\scriptstyle A$}% + \kern-.5\wd\TestBox\raise.42ex\box\TestBox} +\def\LaTeX{\La\kern-.15em\TeX} +\def\LaTeXe{\LaTeX{}\kern.05em2$_{\textstyle\varepsilon}$} + +\def\MathML{Math\acro{ML}} +\def\MacOSX{Mac\,\acro{OS\,X}} + +% for Robert McGaffey +\def\Mc{\setbox\TestBox=\hbox{M}M\vbox to\ht\TestBox{\hbox{c}\vfil}} + +\font\manual=logo10 % font used for the METAFONT logo, etc. +\def\MF{{\manual META}\-{\manual FONT}\spacefactor1000 } +\def\MP{{\manual META}\-{\manual POST}\spacefactor1000 } +\def\mf{{\smc Metafont}} +\def\MFB{{\sl The \slMF book}} + +% multilingual (INRS) TeX +\def\mtex{T\kern-.1667em\lower.5ex\hbox{\^E}\kern-.125emX\spacefactor1000 } + +\def\NTStext{N\mkern-4mu \lower.5ex\hbox{$\cal T$}\mkern-2mu S} +\def\NTS{{\ifmmode \cal\NTStext \else $\cal\NTStext $\fi}} + +\def\OCP{$\Omega$\acro{CP}} + +\def\PDF{\acro{PDF}} + +\def\pcMF{\leavevmode\raise.5ex\hbox{p\kern-.3ptc}MF\spacefactor1000 } +\def\PCTeX{PC\thinspace\TeX} +\def\pcTeX{\leavevmode\raise.5ex\hbox{p\kern-.3ptc}\TeX} + +\def\Pas{Pascal} + +\def\PiC{P\kern-.12em\lower.5ex\hbox{I}\kern-.075emC\spacefactor1000 } +\def\PiCTeX{\PiC\kern-.11em\TeX} + +\def\plain{{\tt plain}} + +\def\POBox{P.\thinspace O.~Box } +\def\POBoxTUG{\POBox\unskip~9506, Providence, RI~02940} + +\def\PS{{Post\-Script}} + +\def\SC{Steering Committee} + +\def\SGML{\acro{SGML}} + +\def\SliTeX{{\rm S\kern-.06em{\smc l\kern-.035emi}\kern-.06em\TeX}} + +\def\slMF{\MF} +% Use \font\manualsl=logosl10 instead, if it's available, +% for \def\slMF{{\manualsl META}\-{\manualsl FONT}\spacefactor1000 } + +% Atari ST (Klaus Guntermann) +\def\stTeX{{\smc st\rm\kern-0.13em\TeX}} + +\def\TANGLE{{\tt TANGLE}\spacefactor1000 } + +\def\TB{{\sl The \TeX book}} +\def\TP{{\sl \TeX\/}: {\sl The Program\/}} + +\def\TeX{T\kern-.1667em\lower.424ex\hbox{E}\kern-.125emX\spacefactor1000 } + +\def\TeXhax{\TeX hax} + +% Don Hosek +\def\TeXMaG{\TeX M\kern-.1667em\lower.5ex\hbox{A}\kern-.2267emG% + \spacefactor1000 } + +%\def\TeXtures{\TestCount=\the\fam +% \TeX\-\hbox{$\fam\TestCount\scriptstyle TURES$}} +\def\TeXtures{{\it Textures}} +\let\Textures=\TeXtures + +\def\TeXXeT{\TeX-{}-\XeT} + +\def\Thanh{H\`an~Th\^e\llap{\raise.5ex\hbox{\'{}}}~Th\`anh} + +\def\ttn{{\sl TTN}\spacefactor1000 } +\def\TTN{{\sl \TeX{} and TUG NEWS}\spacefactor1000 } + +\def\tubfont{\sl} % redefined in other situations +\def\TUB{{\tubfont TUGboat\/}} + +\def\TUG{\TeX\ \UG} + +\def\UG{Users Group} + +\def\UNIX{\acro{UNIX}} + +\def\VAX{V\kern-.12em A\kern-.1em X\spacefactor1000 } + +\def\VorTeX{V\kern-2.7pt\lower.5ex\hbox{O\kern-1.4pt R}\kern-2.6pt\TeX} + +\def\XeT{X\kern-.125em\lower.424ex\hbox{E}\kern-.1667emT\spacefactor1000 } +\def\XML{\acro{XML}} + +\def\WEB{{\tt WEB}\spacefactor1000 } +\def\WEAVE{{\tt WEAVE}\spacefactor1000 } + + + +%******************************************************************** + +\newlinechar=`\^^J +\normallineskiplimit=1pt + +\clubpenalty=10000 +\widowpenalty=10000 + +\def\NoParIndent{\parindent=\z@} +\newdimen\normalparindent \normalparindent=20pt % plain = 20pt +\def\NormalParIndent{\global\parindent=\normalparindent} +\NormalParIndent + +\def\BlackBoxes{\overfullrule=5pt } +\def\NoBlackBoxes{\overfullrule=\z@ } +\def\newline{\hskip\z@ plus \pagewd \break} +\def\nohyphens{\hyphenpenalty\@M\exhyphenpenalty\@M} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% ***** utility registers and definitions ***** +% + +% test registers for transient use; paired - internal/external +\newbox\T@stBox \newbox\TestBox +\newcount\T@stCount \newcount\TestCount +\newdimen\T@stDimen \newdimen\TestDimen +\newif\ifT@stIf \newif\ifTestIf + + +% \cs existence test, stolen from TeXbook exercise 7.7 +\def\ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax } + +% LaTeX conventions which are also useful here. +\ifx\tugstyloaded@\plaintubstyle + \let\@@input\input + \def\iinput#1{\@@input#1 } + \def\@inputcheck{\if\@nextchar\bgroup + \expandafter\iinput\else\expandafter\@@input\fi} + \def\input{\futurelet\@nextchar\@inputcheck} +\fi + +% Smashes repeated from AMS-TeX; PLAIN implements only full \smash . +\newif\iftop@ \newif\ifbot@ +\def\topsmash{\top@true\bot@false\smash@} +\def\botsmash{\top@false\bot@true\smash@} +\def\smash{\top@true\bot@true\smash@} +\def\smash@{\relax\ifmmode\def\next{\mathpalette\mathsm@sh}% + \else\let\next\makesm@sh\fi \next } +\def\finsm@sh{\iftop@\ht\z@\z@\fi\ifbot@\dp\z@\z@\fi\box\z@} + + +% Vertical `laps'; cf. \llap and \rlap +\long\def\ulap#1{\vbox to \z@{\vss#1}} +\long\def\dlap#1{\vbox to \z@{#1\vss}} + +% And centered horizontal and vertical `laps' +\def\xlap#1{\hbox to \z@{\hss#1\hss}} +\long\def\ylap#1{\vbox to \z@{\vss#1\vss}} +\long\def\zlap#1{\ylap{\xlap{#1}}} + + +% Avoid unwanted vertical glue when making up pages. +\def\basezero{\baselineskip\z@skip \lineskip\z@skip} + + +% Empty rules for special occasions +\def\nullhrule{\hrule height\z@ depth\z@ width\z@ } +\def\nullvrule{\vrule height\z@ depth\z@ width\z@ } + +% Support ad-hoc strut construction. +\def\makestrut[#1;#2]{\vrule height#1 depth#2 width\z@ } + +% Construct box for figure pasteup, etc. +% height = #1, width = #2, rule thickness = #3 +\def\drawoutlinebox[#1;#2;#3]{\T@stDimen=#3 + \vbox to#1{\hrule height\T@stDimen depth\z@ + \vss\hbox to#2{\vrule width\T@stDimen + \hfil\makestrut[#1;\z@]% + \vrule width\T@stDimen}\vss + \hrule height\T@stDimen depth\z@}} + + +% Today's date, to be printed on drafts. Based on TeXbook, p.406. + +\def\today{\number\day\space \ifcase\month\or + Jan \or Feb \or Mar \or Apr \or May \or Jun \or + Jul \or Aug \or Sep \or Oct \or Nov \or Dec \fi + \number\year} + +% Current time; this may be system dependent! +\newcount\hours +\newcount\minutes +\def\SetTime{\hours=\time + \global\divide\hours by 60 + \minutes=\hours + \multiply\minutes by 60 + \advance\minutes by-\time + \global\multiply\minutes by-1 } +\SetTime +\def\now{\number\hours:\ifnum\minutes<10 0\fi\number\minutes} + +\def\Now{\today\ \now} + +\newif\ifPrelimDraft \PrelimDraftfalse + +\def\midrtitle{\ifPrelimDraft {{\tensl preliminary draft, \Now}}\fi} + +% Section heads. The following set of macros is used to set the large +% TUGboat section heads (e.g. "General Delivery", "Fonts", etc.) + +\newdimen\PreTitleDrop \PreTitleDrop=\z@ + +\newskip\AboveTitleSkip \AboveTitleSkip=12pt +\newskip\BelowTitleSkip \BelowTitleSkip=8pt + +\newdimen\strulethickness \strulethickness=.6pt +\def\sthrule{\hrule height\strulethickness depth \z@ } +\def\stvrule{\vrule width\strulethickness } + +\newdimen\stbaselineskip \stbaselineskip=18pt + +\def\@sectitle #1{% + \par \SecTitletrue + \penalty-1000 + \secsep + \vbox{ + \sthrule + \hbox{% + \stvrule + \vbox{ + \advance\hsize by -2\strulethickness + \raggedcenter + \def\\{\unskip\break}% + \sectitlefont + \makestrut[2\stfontheight;\z@] + #1\unskip + \makestrut[\z@;\stfontheight]\endgraf + }% + \stvrule } + \sthrule } + \nobreak + \vskip\baselineskip } + +% distance between articles which are run together +\def\secsep{\vskip 5\baselineskip} + +\newif\ifSecTitle +\SecTitlefalse + + + +% Registration marks; permit them to be invisible + +\newdimen\RegRuleThickness \RegRuleThickness=0.2pt + +\def\HorzR@gisterRule{\vrule height\RegRuleThickness depth \z@ width 0.5in } +\def\DownShortR@gisterRule{% + \vrule height 0.2pt depth 1pc width\RegRuleThickness } +\def\UpShortR@gisterRule{\vrule height 1pc depth \z@ width\RegRuleThickness } + + +% ``T'' marks centered on top and bottom edges of paper + +\def\ttopregister{\dlap{% + \hbox to \trimwd{\HorzR@gisterRule \hfil \HorzR@gisterRule + \HorzR@gisterRule \hfil \HorzR@gisterRule}% + \hbox to \trimwd{\hfil \DownShortR@gisterRule \hfil}}} +\def\tbotregister{\ulap{% + \hbox to \trimwd{\hfil \UpShortR@gisterRule \hfil}% + \hbox to \trimwd{\HorzR@gisterRule \hfil \HorzR@gisterRule + \HorzR@gisterRule \hfil \HorzR@gisterRule}}} + +\def\topregister{\ttopregister} +\def\botregister{\tbotregister} + + + +% PLAIN's definition of \raggedright doesn't permit any stretch, and +% results in too many overfull boxes. We also turn off hyphenation. +\newdimen\raggedskip \raggedskip=\z@ +\newdimen\raggedstretch \raggedstretch=5em % ems of font set now (10pt) +\newskip\raggedparfill \raggedparfill=\z@ plus 1fil + +\def\raggedspaces{\spaceskip=.3333em \relax \xspaceskip=.5em \relax } +% Some applications may have to add stretch, in order to avoid +% all overfull boxes. + +\def\raggedright{% + \nohyphens + \rightskip=\raggedskip plus\raggedstretch \raggedspaces + \parfillskip=\raggedparfill } +\def\raggedleft{% + \nohyphens + \leftskip=\raggedskip plus\raggedstretch \raggedspaces + \parfillskip=\z@skip } +\def\raggedcenter{% + \nohyphens + \leftskip=\raggedskip plus\raggedstretch + \rightskip=\leftskip \raggedspaces + \parindent=\z@ \parfillskip=\z@skip } + +\def\normalspaces{\spaceskip\z@skip \xspaceskip\z@skip } + + +% Miscellaneous useful stuff + +\def\,{\relax\ifmmode\mskip\thinmuskip\else\thinspace\fi} + +%\def~{\penalty\@M \ } % tie -- this is PLAIN value; it is reset in AMS-TeX +\def~{\unskip\nobreak\ \ignorespaces} % AMS-TeX value + +\def\newbox{\alloc@4\box\chardef\insc@unt} % remove \outer +\def\boxcs#1{\box\csname#1\endcsname} +\def\setboxcs#1{\setbox\csname#1\endcsname} +\def\newboxcs#1{\expandafter\newbox\csname#1\endcsname} + +\def\gobble#1{} + +\def\vellipsis{% + \leavevmode\kern0.5em + \raise1pt\vbox{\baselineskip6pt\vskip7pt\hbox{.}\hbox{.}\hbox{.}} + } + +\def\bull{\vrule height 1ex width .8ex depth -.2ex } % square bullet +\def\cents{{\rm\raise.2ex\rlap{\kern.05em$\scriptstyle/$}c}} +\def\Dag{\raise .6ex\hbox{$\scriptstyle\dagger$}} + +\def\careof{\leavevmode\hbox{\raise.75ex\hbox{c}\kern-.15em + /\kern-.125em\smash{\lower.3ex\hbox{o}}} \ignorespaces} +\def\sfrac#1/#2{\leavevmode\kern.1em + \raise.5ex\hbox{\the\scriptfont\z@ #1}\kern-.1em + /\kern-.15em\lower.25ex\hbox{\the\scriptfont\z@ #2}} + +\def\thinskip{\hskip 0.16667em\relax} +\def\endash{--} +\def\emdash{\endash-} +\def\d@sh#1#2{\unskip#1\thinskip#2\thinskip\ignorespaces} +\def\dash{\d@sh\nobreak\endash} +\def\Dash{\d@sh\nobreak\emdash} +\def\ldash{\d@sh\empty{\hbox{\endash}\nobreak}} +\def\rdash{\d@sh\nobreak\endash} +\def\Ldash{\d@sh\empty{\hbox{\emdash}\nobreak}} +\def\Rdash{\d@sh\nobreak\emdash} + +% Hack to permit automatic hyphenation after an actual hyphen. + +\def\hyph{-\penalty\z@\hskip\z@skip } + +\def\slash{/\penalty\z@\hskip\z@skip } % "breakable" slash + +% Adapted from c.t.t posting by Donald Arseneau, 26 May 93. +\def\nth#1{\TestCount=#1\relax + \ifnum\TestCount <0 \multiply\TestCount by\m@ne \fi % subdue negatives + \T@stCount=\TestCount + \divide\T@stCount by 100 \multiply\T@stCount by 100 + \advance\TestCount by-\T@stCount % n mod 100 + \ifnum\TestCount >20 \T@stCount=\TestCount + \divide\T@stCount by 10 \multiply\T@stCount by 10 + \advance\TestCount by-\T@stCount % n mod 10 + \fi + \T@stCount=\the\fam\relax + $\fam\T@stCount#1^{\fam\T@stCount + \ifcase\TestCount th% 0th + \or st% 1st + \or nd% 2nd + \or rd% 3rd + \else th% nth + \fi + }$} + + +% Format information on reviewed items for book review articles. + +\def\Review:#1{\ifx[#1\@Rev[% + \else Book review:\enspace\sl #1% + \fi + } +\def\@Rev[#1]{\ignorespaces#1\unskip:\enspace\ignorespaces\sl} +\def\reviewitem{% + \def\revauth##1{\def\therevauth{##1, }\ignorespaces}% + \def\revtitle##1{\def\therevtitle{{\sl##1}. }\ignorespaces}% + \def\revpubinfo##1{\def\therevpubinfo{##1.}\ignorespaces}% + } +\def\endreviewitem{{\noindent\interlinepenalty=10000 + \therevauth\therevtitle\therevpubinfo\endgraf}% + \vskip\medskipamount + \ifx\tugstyloaded@\plaintubstyle + \DeleteOptionalSpacesandPars{\noindent\ignorespaces}% + \fi + } + +\def\booktitle#1{{\sl #1\/}} + + +% Dates and other items which identify the volume and issue + +% To use: \vol 5, 2. +% \issdate October 1984. +% \issueseqno=10 +% For production, these are set in a separate file, TUGBOT.DATES, +% which is issue-specific. + +\newcount\issueseqno \issueseqno=-1 + +\def\v@lx{\gdef\volx{Volume~\volno~(\volyr), No.~\issno}} +\def\volyr{} +\def\volno{} +\def\vol #1,#2.{\gdef\volno{#1\unskip}% + \gdef\issno{\ignorespaces#2\unskip}% + \setbox\TestBox=\hbox{\volyr}% + \ifdim \wd\TestBox > .2em \v@lx \fi } + +% Original issue date included month and year. +\def\issdate #1#2 #3.{\gdef\issdt{#1#2 #3}\gdef\volyr{#3}% + \gdef\bigissdt{#1{\smc\uppercase{#2}} #3}% + \setbox\TestBox=\hbox{\volno}% + \ifdim \wd\TestBox > .2em \v@lx \fi } +% Beginning in 2002, only year +\def\issyear #1.{\gdef\issdt{#1}\gdef\volyr{#1}% + \gdef\bigissdt{#1}% + \setbox\TestBox=\hbox{\volno}% + \ifdim \wd\TestBox > .2em \v@lx \fi } + +\vol 0, 0. % volume, issue. +\issdate Thermidor, 2001. % month, year of publication + + +\ifx\tugstyloaded@\plaintubstyle + \def\tubissue#1(#2){\TUB~#1, no.~#2} +\else + \def\tubissue#1#2{\TUB~#1, no.~#2} +\fi + +\def\xEdNote{{\tenuit Editor's note:\enspace }} + + +% TUGboat conventions include the issue number in the file name. +% Permit this to be incorporated into file names automatically. +% If issue number = 11, \Input filnam will read tb11filnam.tex. + + +\def\infil@{\jobname} +\def\Input #1 {\ifnum\issueseqno<0 \def\infil@{#1}% + \else \def\infil@{tb\number\issueseqno#1}\fi + \edef\jobname{\infil@}\@readFLN + \@@input \infil@\relax + \ifRMKopen\immediate\closeout\TBremarkfile\RMKopenfalse\fi} + +\newif\ifRMKopen \RMKopenfalse +\newwrite\TBremarkfile +\def\TBremarkON#1{% + \ifRMKopen\else\RMKopentrue\immediate\openout\TBremarkfile=\infil@.rmk \fi + \toks@={#1}% + \immediate\write\TBremarkfile{^^J\the\toks@}% + \immediate\write16{^^JTBremark:: \the\toks@^^J}} +\def\TBremarkOFF#1{} +\let\TBremark=\TBremarkOFF + +% for marking locations in articles that pertain to remarks +% in another file of editorial comments +\def\TUBedit#1{} + +% for using different filenames in Providence than those supplied +% by authors + +\def\TUBfilename#1#2{\expandafter\def\csname file@@#1\endcsname{#2}} +\newread\@altfilenames +\def\@readFLN{\immediate\openin\@altfilenames=\jobname.fln + \ifeof\@altfilenames\let\@result\relax\else + \def\@result{\@@input\jobname.fln }\fi + \immediate\closein\@altfilenames + \@result} +\@readFLN +\everyjob=\expandafter{\the\everyjob\@readFLN} + +% Following needs to work entirely in TeX's mouth +\def\@tubfilename#1{\expandafter\ifx\csname file@@#1\endcsname\relax + #1\else\csname file@@#1\endcsname\fi} + +\def\fileinput#1{\@@input\@tubfilename{#1} } + +% Write out (both to a file and to the log) the starting page number +% of an article, to be used for cross references and in contents. +% \pagexref is used for articles fully processed in the TUGboat run. +% \PageXref is used for "extra" pages, where an item is submitted +% as camera copy, and only running heads (at most) are run. + +\ifx\tugstyloaded@\plaintubstyle +\def\pagexrefON#1{% + \write-1{\def\expandafter\noexpand\csname#1\endcsname{\number\pageno}}% + \write\ppoutfile{% + \def\expandafter\noexpand\csname#1\endcsname{\number\pageno}}% + } +\def\PageXrefON#1{% + \immediate\write-1{\def\expandafter + \noexpand\csname#1\endcsname{\number\pageno}}% + \immediate\write\ppoutfile{\def\expandafter + \noexpand\csname#1\endcsname{\number\pageno}}} +\else +\def\pagexrefON#1{% + \write-1{\def\expandafter\noexpand\csname#1\endcsname{\number\c@page}}% + \write\ppoutfile{% + \def\expandafter\noexpand\csname#1\endcsname{\number\c@page}}% + } +\def\PageXrefON#1{% + \immediate\write-1{\def\expandafter + \noexpand\csname#1\endcsname{\number\c@page}}% + \immediate\write\ppoutfile{\def\expandafter + \noexpand\csname#1\endcsname{\number\c@page}}} +\fi + +\def\pagexrefOFF#1{} +\let\pagexref=\pagexrefOFF +\def\PageXrefOFF#1{} +\let\PageXref=\PageXrefOFF + +\def\xreftoON#1{% + \ifundefined{#1}% + ???\TBremark{Need cross reference for #1.}% + \else\csname#1\endcsname\fi} +\def\xreftoOFF#1{???} +\let\xrefto=\xreftoOFF + +\def\TBdriver#1{} + + +% Authors, addresses, signatures + +\def\theauthor#1{\csname theauthor#1\endcsname} +\def\theaddress#1{\csname theaddress#1\endcsname} +\def\thenetaddress#1{\csname thenetaddress#1\endcsname} + +\newcount\count@@ +\def\@defaultauthorlist{% % standard way of listing authors + \count@=\authornumber + \advance\count@ by -2 + \count@@=0 + \loop + \ifnum\count@>0 + \advance\count@@ by 1 + \ignorespaces\csname theauthor\number\count@@\endcsname\unskip, + \advance\count@ by -1 + \repeat + \count@=\authornumber + \advance\count@ by -\count@@ + \ifnum\authornumber>0 + \ifnum\count@>1 + \count@=\authornumber + \advance\count@ by -1 + \ignorespaces\csname theauthor\number\count@\endcsname\unskip\ and + \fi + \ignorespaces\csname theauthor\number\authornumber\endcsname\unskip + \fi + } + +\def\signature#1{\def\@signature{#1}} +\def\@signature{\@defaultsignature} + +\def\@defaultsignature{% + \count@=0 + \loop + \ifnum\count@<\authornumber + \medskip + \advance\count@ by \@ne + \signaturemark + \theauthor{\number\count@}\\ + \leavevmode\theaddress{\number\count@}\\ + \leavevmode\thenetaddress{\number\count@}\\ + \repeat + } + +\newdimen\signaturewidth \signaturewidth=12pc +\def\makesignature{% + \par + \penalty9000 + \vskip\medskipamount + \rightline{% + \vbox{\hsize\signaturewidth \ninepoint \raggedright + \parindent \z@ \everypar={\hangindent 1pc } + \parskip \z@skip + \netaddrat + \netaddrpercent + \def\|{\unskip\hfil\break}% + \def\\{\endgraf}% + \def\net{\tt}% + \def\phone{\rm Phone: } \rm + \@signature}} + } + +{\makeactive\@ + \gdef\signatureat{\makeactive\@\def@{\char"40\discretionary{}{}{}}} + \makeactive\% + \gdef\signaturepercent{\makeactive\%\def%{\char"25\discretionary{}{}{}}} +} + +\def\signaturemark{\leavevmode\llap{$\diamond$\enspace}} + + +% some hyphenation exceptions: +\hyphenation{Dijk-stra Eijk-hout Hara-lam-bous + Doc-Book Flor-i-da Ghost-script Ghost-view Open-Type Pfa-Edit + Post-Script True-Type + ap-pen-dix + bit-map bit-mapped bit-maps bool-ean + col-umns + data-base data-bases + fall-ing + half-way + long-est + ma-gyar man-u-script man-u-scripts + over-view + par-a-digm par-a-digm-atic par-a-digms + se-vere-ly spell-ing spell-ings stand-alone strong-est + time-stamp time-stamped + which-ever white-space white-spaces wide-spread wrap-around +} + + +\restorecat\@ + +\endinput + + +% ************************************************************************* + +Contents and Notes +------------------ + +\makeescape, ..., \makecomment allow users to change category +codes a little more easily. + +\savecat#1 and \restorecat#1 will save and restore the category +of a given character. These are useful in cases where one doesn't +wish to localize the settings and therefore be required to globally +define or set things. + +\SaveCS#1 and \RestoreCS#1 save and restore `meanings' of control +sequences. Again this is useful in cases where one doesn't want to +localize or where global definitions clobber a control sequence which +is needed later with its `old' definition. + +Abbreviations. Just a listing with indications of expansion where +that may not be obvious. For full definitions, see real code above. + +\AllTeX (\La)\TeX +\AMS American Mathematical Society +\AmSTeX +\aw A-W (abbreviation for Addison-Wesley) +\AW Addison-Wesley +\BibTeX +\CandT Computers \& Typesetting +\ConTeXt +\Cplusplus C++ +\DVItoVDU +\Hawaii Hawai`i +\HTML HTML +\ISBN ISBN +\JTeX +\JoT The Joy of \TeX +\LaTeX +\MacOSX Mac OS X +\MathML +\Mc M ``w/ raised c'' +\MF METAFONT +\mf Metafont (using small caps) +\MFB The Metafont book +\MP METAPOST +\mtex multilingual TeX +\NTS +\OCP \Omega CP +\pcMF pcMF +\PCTeX +\pcTeX +\Pas Pascal +\PDF PDF +\PiCTeX +\plain plain (in typewriter font) +\POBox P. O. Box +\POBoxTUG TUG PO Box +\PS PostScript +\SC Steering Committee +\SGML SGML +\SliTeX +\slMF Metafont (slanted) +\stTeX TeX for the Atari ST +\TANGLE +\TB The \TeX book +\TeX +\TeXhax +\TeXMaG +\TeXtures +\TeXXeT +\Thanh Han The Thanh +\TUB TUGboat +\TUG TeX Users Group +\UNIX +\VAX +\VorTeX +\XeT +\XML +\WEB +\WEAVE + +\NoBlackBoxes turns off marginal rules marking overfull boxes +\BlackBoxes turns them back on +\newline horizontal glue plus a break + +\ifundefined#1 checks argument with \csname against \relax + +\topsmash smashes above baseline (from AMSTeX) +\botsmash smashes below baseline (from AMSTeX) +\smash smashes both (from plain) + +\ulap lap upwards +\dlap lap downwards +\xlap reference point at center horizontally; 0 width +\ylap reference point at center vertically; 0 height, depth +\zlap combination \xlap and \ylap + +\basezero to avoid insertion of baselineskip and lineskip glue + +\nullhrule empty \hrule +\nullvrule empty \vrule + +\makestrut[#1;#2] ad hoc struts; #1=height, #2=depth + +\today today's date +\SetTime converts \time to hours, minutes +\now displays time in hours and minutes +\Now shows current date and time + +\ifPrelimDraft flag to indicate status as preliminary draft + +\rtitlex TUGboat volume and number info for running head +\midrtitle information for center of running head + +\HorzR@gisterRule pieces of registration marks ("trimmarks") +\DownShortR@gisterRule +\UpShortR@gisterRule + +\ttopregister top registration line with `T' in center +\tbotregister bottom registration line with inverted `T' in center +\topregister register actually used +\botregister + + +\raggedskip parameters used for ragged settings +\raggedstretch +\raggedparfill +\raggedspaces + +\raggedright +\raggedleft +\raggedcenter +\normalspaces +\raggedbottom + +\bull square bullet +\cents ``cents'' sign +\Dag superscripted dagger +\careof c/o +\sfrac slashed fraction + +\dash en-dash surrounded by thinspaces; only breakable AFTER +\Dash em-dash, as above + +\hyph permit automatic hyphenation after an actual hyphen + +\slash "breakable" slash +\nth for obtaining "1^{st}", "2^{nd}", 3^{rd}, etc. + +\tubissue gets \TUB followed by volume and issue numbers + +\xEdNote Editor's Note: + +\Review: Review: (for title of book review article) +\reviewitem begin data for item being reviewed + \revauth with one argument, author(s) of item being reviewed + \revtitle with one argument, title of ... + \revpubinfo with one argument, other info pertaining to ... +\endreviewitem end data for item being reviewed +\booktitle with one argument, format book title in text + +\Input \input with some other bookkeeping for + case where multiple articles are put together + +\TBremark reminder to TUGboat editorial staff +\TBremarkON +\TBremarkOFF + +\pagexref used to write out page numbers to screen and +\pagexrefON external files +\pagexrefOFF +\PageXref +\PageXrefON +\PageXrefOFF + +\xrefto used for symbolic cross-reference to other pages +\xreftoON in TUGboat +\xreftoOFF + +\TBdriver marks code which only takes effect when articles + are run together in a driver file + +\signatureat items for signatures +\signaturepercent +\signaturemark +\signaturewidth + + +% ************************************************************************* + +% Change history + +Version Date Changes +------- --------- --------------------------------------------------- +1.14 21 Jun 04 added numerous name macros and hyphenation exceptions + +1.13l 15 Nov 03 updated header address to Portland, OR + +1.13k 28 Jun 03 added \RegRuleThickness to allow easy modification + +1.13j 16 Feb 03 added \issyear to handle removal of month + +1.13i 14 Oct 96 updated header and installed CRC-16 checksum + +1.13h 10 Nov 95 added \acro and converted all \SMC entries to use it + added acronyms \HTML and \PDF + +1.13g 4 Nov 95 added \MP for METAPOST + +1.13f 15 Apr 94 added \@Rev[...] to permit variable text for reviews + +1.13e 14 Mar 94 revised definition of \La to use actual width of A + added \LaTeXe definition + +1.13d 5 Jan 94 added {} to \TeX-{}-\Xet + +1.13c 11 Nov 93 removed extraneous " from header + added \AmSLaTeX, \CTAN, \ISSN + +1.13b 4 Nov 93 added \hyphenation{Eijk-hout} + +1.13a 18 Aug 93 corrected \nth to produce ordinal in current font + +1.13 27 May 93 upgraded \nth based on algorithm by Donald Arseneau + in comp.text.tex, 26 May 93 + +1.12 19 Feb 93 added \spacefactor1000 to all replacement text that ends + with a capital letter, so that if these items end a + sentence, there will be a normal end-of-sentence space + removed \hbox from definitions of \TeX, etc.; no longer + needed + changed definition of \TeXXeT to use \XeT rather than + unique dimensions + installed new TUG address and phone number in header + reformatted change history, similar to tugboat.sty + +1.11c 29 Nov 92 added macros to format book review and related items for + review articles + added \SGML + changed def of \UNIX to use \SMC rather than \smc + +1.11b 20 Oct 92 added font code for \ISBN font ("big small caps") + added \Textures as the current form + +1.11a 6 Jun 92 added \drawoutlinebox + +1.11 15 Mar 92 added \ttn and \TTN + +1.10 8 Mar 92 added \AllTeX + changed file name from .COM to .CMN to avoid objection + that .COM files have a special significance on DOS + and other operating systems + added standard headers, prepared for archive installation + +1.09 5 May 91 inserted large penalty at top of \makesignature to + inhibit break between article and signature + +1.08 24 Oct 90 modified signature slightly (took \medskip out of box) + fixed bug in previous rendition of \@readFLN + +1.07 16 Oct 90 added \TUBedit to facilitate editorial marking + added \iinput variant from LaTeX; \input redefined now + as with LaTeX + added mechanism for local file names in Providence + (\TUBfilename, \fileinput, etc.) + \tugstyload@ defaults to plain if it's not defined + +1.06 3 Aug 90 added \leavevmode to \@defaultsignature so that + \everypar is not executed inside a group + dash routines modified and corrected (to suppress + insertion of discretionary node after -- and ---; + and to allow hyphenation of ensuing word) + changed \lDash to \Ldash and \rDash to \Rdash + +1.05 29 Mar 90 added \lDash and \rDash for `parenthetical' dashing + added \TP for TeX: The Program + added \relax after file input of \Input + added \relax before \ifmmode of \, + +1.04 28 Feb 90 modified pagexref macros to work in both plain and + latex styles (this should NOT affect authors) + +1.03 26 Feb 90 removed <tab>s and adjusted definition of \slMF + +1.02 25 Feb 90 added definitions of \plaintubissue, \latextubissue + added definition of \tubissue + +1.01 19 Feb 90 added \signaturewidth to allow for modification + added \nth to obtain 1^{st}, etc. diff --git a/Master/texmf-dist/tex/plain/tugboat/tugboat.sty b/Master/texmf-dist/tex/plain/tugboat/tugboat.sty new file mode 100644 index 00000000000..04cfc7237cb --- /dev/null +++ b/Master/texmf-dist/tex/plain/tugboat/tugboat.sty @@ -0,0 +1,2238 @@ +%% @texfile{ +%% filename = "tugboat.sty", +%% version = "1.14c", +%% date = "14 October 1996", +%% time = "14:26:08", +%% filetype = "Plain TeX macros for TUGboat", +%% copyright = "Copyright (C) TeX Users Group. +%% Copying of this file is authorized only if either: +%% (1) you make absolutely no changes to your copy, OR +%% (2) if you do make changes, you first rename it to some +%% other name.", +%% author = "TeX Users Group", +%% address = "TeX Users Group, +%% 1850 Union Street, \#1637, +%% San Francisco, CA 94123, +%% USA", +%% telephone = "415-982-8449", +%% FAX = "415-982-8559", +%% email = "Internet: TUGboat@ams.org", +%% codetable = "ISO/ASCII", +%% checksum = "2238 6284 69130", +%% keywords = "tex users group, tugboat, plain tex", +%% supported = "yes", +%% abstract = "This file contains the plain-based macros +%% for preparation of TUGboat, the Communications +%% of the TeX Users Group.", +%% docstring = "The checksum field above contains a CRC-16 +%% checksum as the first value, followed by the +%% equivalent of the standard UNIX wc (word +%% count) utility output of lines, words, and +%% characters. This is produced by Robert +%% Solovay's checksum utility.", +%% } +%% ********************************************************* +%% +%% TeXing with this file also requires the following files: +%% TUGBOAT.CMN (version 1.08+) +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% TUGBOAT.STY + +\def\thistubstyle{plain} +\def\fileversion{v1.14c} +\def\filedate{14 October 1996} + +% general items + +\def\makeatletter{\catcode`\@=11 } +\makeatletter % used, as in PLAIN, in protected control sequences + +% stop reading this file if it's been loaded already +\ifx\tugstyloaded@\thistubstyle\makeatother\initializearticle + \endinput\else\let\tugstyloaded@\thistubstyle\fi + +\message{File `TUGBOAT.STY' \fileversion \space\space <\filedate>} + +\input tugboat.cmn % macros common to tugboat.sty and + % ltugboat.sty (latex style file) + + +% some things with the same names as in, or reiterated from, AMS-TeX + +\def\document{} % override an AMS-TeX convention + +\output{\output@} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Directory. +% +% ** fonts +% ** page dimensions +% ** headers/footers +% ** page adjustment +% ** output +% ** general mechanism for tags +% ** titles, authors, addresses +% ** heads +% ** text and subtext +% ** lists +% ** verbatim +% ** figures +% ** utilities +% ** initialization + + + +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% ***** fonts ***** +% + + +% Struts give ascenders and descenders to assist in baseline alignment +% (e.g. of adjoining vertical boxes); useful only with text fonts. +% +% \strut is defined in PLAIN . The structure of \strutt is equivalent. + +\newbox\struttbox +\def\strutt{\relax\ifmmode\copy\struttbox\else\unhcopy\struttbox\fi} + +% Struts are given the following dimensions for use in TUGboat: +% +% \strut = height/depth of parenthesis in current font +% (not the same as PLAIN) +% \strutt height + depth = \normalbaselineskip, +% height = same as \strut +% (equivalent to PLAIN \strut ) + + +% The fonts below are sufficient for most ordinary TUGboat production. +% Additional titling fonts are defined elsewhere, and occasionally an +% extra font will be needed for a particular item (e.g. the device +% charts) and defined in that file. + +% All PLAIN CM fonts. + +\font\tenrm=cmr10 +\font\ninerm=cmr9 +\font\eightrm=cmr8 +\font\sevenrm=cmr7 +\font\sixrm=cmr6 +\font\fiverm=cmr5 + +\font\teni=cmmi10 \skewchar\teni='177 +\font\ninei=cmmi9 \skewchar\ninei='177 +\font\eighti=cmmi8 \skewchar\eighti='177 +\font\seveni=cmmi7 \skewchar\seveni='177 +\font\sixi=cmmi6 \skewchar\sixi='177 +\font\fivei=cmmi5 \skewchar\fivei='177 + +\font\tensy=cmsy10 \skewchar\tensy='60 +\font\ninesy=cmsy9 \skewchar\ninesy='60 +\font\eightsy=cmsy8 \skewchar\eightsy='60 +\font\sevensy=cmsy7 \skewchar\sevensy='60 +\font\sixsy=cmsy6 \skewchar\sixsy='60 +\font\fivesy=cmsy5 \skewchar\fivesy='60 + +\font\tenex=cmex10 + +\font\tenbf=cmbx10 +\font\ninebf=cmbx9 +\font\eightbf=cmbx8 +\font\sevenbf=cmbx7 +\font\sixbf=cmbx6 +\font\fivebf=cmbx5 + +\font\tentt=cmtt10 +\font\ninett=cmtt9 +\font\eighttt=cmtt8 + +\font\tensl=cmsl10 +\font\ninesl=cmsl9 +\font\eightsl=cmsl8 +\font\sevensl=cmti7 % Would use cmsl7 if it were standard. + % Currently needed only for \def of \LaTeX + +\font\tenit=cmti10 +\font\nineit=cmti9 +\font\eightit=cmti8 +\font\sevenit=cmti7 + +\font\tenuit=cmu10 +\font\tenbfsl=cmbxsl10 + +\font\tensmc=cmcsc10 +\font\ninesmc=cmcsc10 % redefine if cmcsc9 and/or cmcsc8 exist +\font\eightsmc=cmcsc10 + +\font\tentex=cmtex10 % for ASCII character set + +\def\mit{\fam\@ne} % from plain +\def\cal{\fam\tw@} % from plain +\def\sy{\cal} + +% cmss fonts are not needed all the time. Permit as-needed access. +\def\LoadSansFonts{% + \global\font\twelvess=cmss10 scaled \magstep1 + \global\font\tenss=cmss10 + \global\font\niness=cmss9 + \global\font\eightss=cmss8 + \addto\tenpoint{\def\ssf{\tenss}} + \addto\ninepoint{\def\ssf{\niness}} + \addto\eightpoint{\def\ssf{\eightss}} + \gdef\LoadSansFonts{}} + +% TUGboat section heads +\font \seventeenssb=cmssbx10 scaled \magstep3 +\font \twelvessb=cmssbx10 scaled \magstep1 + +\newfam\sectitlefam +\textfont\sectitlefam=\seventeenssb \scriptfont\sectitlefam=\twelvessb + +% \stbaselineskip set in tugboat.com +\def\sectitlefont{% + \fam\sectitlefam \seventeenssb \baselineskip=\stbaselineskip } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% ***** Definitions of \tenpoint, \ninepoint, etc. ***** +% + +% Following is a facility for adding commands to \tenpoint, \ninepoint +% and \eightpoint. \LoadSansFonts uses this technique above. +% Also used to add math families, as with: +% \addto\tenpoint{\textfont\frakfam...} +% to add a Fraktur family. +% +\def\addto#1#2{% + \csname @addsto\string#1\endcsname= + \expandafter{\the\csname @addsto\string#1\endcsname#2}} +\def\@additionsto#1{\expandafter\the\csname @addsto\string#1\endcsname} +\expandafter\newtoks\csname @addsto\string\tenpoint\endcsname +\expandafter\newtoks\csname @addsto\string\ninepoint\endcsname +\expandafter\newtoks\csname @addsto\string\eightpoint\endcsname + + +\newskip\ttglue +\def\setttglue{% + \edef\@thefont{\the\font}% to restore this font after the setting + \tt \ttglue=.5em plus .25em minus .15em + \@thefont} + +% We assume that \scriptscriptfonts remain the same throughout +\scriptscriptfont\z@=\fiverm +\scriptscriptfont\@ne=\fivei +\scriptscriptfont\tw@=\fivesy +\scriptscriptfont\thr@@=\tenex +\scriptscriptfont\bffam=\sixbf + +\newdimen\normaltenpointstretch \normaltenpointstretch=1.6667pt +\def\NormalTenPointSpacing{\AdjustNormalSpacing\tenpoint{}} +\def\StretchyTenPointSpacing{\AdjustNormalSpacing\tenpoint{2.4}} + +\def\tenpoint{% + \normalbaselineskip=12pt + \abovedisplayskip=3pt plus 3pt minus 1pt + \belowdisplayskip=3pt plus 3pt minus 1pt + \abovedisplayshortskip=0pt plus 3pt + \belowdisplayshortskip=1pt plus 3pt minus 1pt + \def\rm{\fam\z@\tenrm}% + \textfont\z@=\tenrm \scriptfont\z@=\sevenrm + \def\oldstyle{\fam\@ne\teni}% + \textfont\@ne=\teni \scriptfont\@ne=\seveni + \textfont\tw@=\tensy \scriptfont\tw@=\sevensy + \textfont\thr@@=\tenex \scriptfont\thr@@=\tenex + \def\it{\fam\itfam\tenit}% + \textfont\itfam=\tenit \scriptfont\itfam=\sevenit + \def\sl{\fam\slfam\tensl}% + \textfont\slfam=\tensl \scriptfont\slfam=\sevensl + \def\bf{\def\sl{\tenbfsl}\fam\bffam\tenbf}% + \textfont\bffam=\tenbf \scriptfont\bffam=\eightbf + \def\smc{\tensmc}% + \def\SMC{\ninerm}% + \def\tt{\tentt}% + \setttglue + \def\upright{\tenuit}% + \setbox\strutbox=\hbox{\vrule height7.5pt depth2.5pt width\z@}% + \setbox\struttbox=\hbox{\vrule height8.5pt depth3.5pt width\z@}% + \normalbaselines \rm + \@additionsto\tenpoint} + +\tenpoint % initialize -- default font + + +\newdimen\normalninepointstretch \normalninepointstretch=1.5pt +\def\NormalNinePointSpacing{\AdjustNormalSpacing\ninepoint{}} +\def\StretchyNinePointSpacing{\AdjustNormalSpacing\ninepoint{2.4}} + +\def\ninepoint{\normalbaselineskip=11pt + \abovedisplayskip=2.5pt plus 2.5pt minus 1pt + \belowdisplayskip=2.5pt plus 2.5pt minus 1pt + \abovedisplayshortskip=0pt plus 2.5pt + \belowdisplayshortskip=1pt plus 2.5pt minus 1pt + \def\rm{\fam\z@\ninerm}% + \textfont\z@=\ninerm \scriptfont\z@=\sevenrm + \def\oldstyle{\fam\@ne\ninei}% + \textfont\@ne=\ninei \scriptfont\@ne=\seveni + \textfont\tw@=\ninesy \scriptfont\tw@=\sevensy + \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=\sevenbf + \def\smc{\ninesmc}% + \def\SMC{\eightrm}% + \def\tt{\ninett}% + \setttglue + \setbox\strutbox=\hbox{\vrule height 6.75pt depth 2.25pt width\z@}% + \setbox\struttbox=\hbox{\vrule height 7.75pt depth 3.25pt width\z@}% + \normalbaselines \rm + \@additionsto\ninepoint } + +% The following setting can be used when baselineskip = 10pt +% \setbox\struttbox=\hbox{\vrule height 7.25pt depth 2.75pt width\z@}% + + +\newdimen\normaleightpointstretch \normaleightpointstretch=1.333pt +\def\NormalEightPointSpacing{\AdjustNormalSpacing\eightpoint{}} +\def\StretchyEightPointSpacing{\AdjustNormalSpacing\eightpoint{2.25}} + +\def\eightpoint{\normalbaselineskip=10pt + \abovedisplayskip=2pt plus 2pt minus 1pt + \belowdisplayskip=2pt plus 2pt minus 1pt + \abovedisplayshortskip=0pt plus 2pt + \belowdisplayshortskip=1pt plus 2pt minus 1pt + \def\rm{\fam\z@\eightrm}% + \textfont\z@=\eightrm \scriptfont\z@=\sixrm + \def\oldstyle{\fam\@ne\eighti}% + \textfont\@ne=\eighti \scriptfont\@ne=\sixi + \textfont\tw@=\eightsy \scriptfont\tw@=\sixsy +% \textfont\thr@@=\eightex \scriptfont\thr@@=\eightex + \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 + \def\smc{\eightsmc}% + \def\tt{\eighttt}% + \setttglue + \setbox\strutbox=\hbox{\vrule height 6pt depth 2pt width\z@}% + \setbox\struttbox=\hbox{\vrule height 7pt depth 3pt width\z@}% + \normalbaselines \rm + \@additionsto\eightpoint } + +% The 8pt cap/small cap font is not loaded. See a corresponding remark +% above for the 9pt csc font. + +% this is equivalent to baselineskip = 9pt +% \setbox\struttbox=\hbox{\vrule height 6.5pt depth 2.5pt width\z@}% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Following will allow text to be a bit stretchier than the built-in +% setting; TeXbook, page 433, 355 + +\def\@setstretch{\fontdimen3\the\font=} +\def\AdjustNormalSpacing#1#2{% #1=pointsize, #2=adjustment factor + {\T@stDimen=#2\csname normal\expandafter\gobble\string#1stretch\endcsname + #1% + \rm\@setstretch\T@stDimen + \it\@setstretch\T@stDimen + \bf\@setstretch\T@stDimen + }} + + + +% Anticipated changes to this font handling scheme: +% +% Dynamic loading of fonts, probably in groups according to size +% Removal of \rm, \bf, etc., from \*point expansions, replacement +% by generic \rm, \bf, etc. definitions +% Mechanism for switching neatly between serif and sans-serif + +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% ***** page dimensions ***** +% + + +% vertical dimensions + +\newdimen\trimlgt \trimlgt=11in % 10.5in (vols 7-9) +\newdimen\headmargin \headmargin=3.5pc % 2.5pc (vols 7-9) +\newdimen\pagelgt +\newdimen\rheadlgt \rheadlgt=2.5pc % + headmargin = 6pc = 1in +\newdimen\toplgt \toplgt=\z@ +\newdimen\normalcollgt \normalcollgt=54pc % 52pc for 5#2 +\newdimen\collgt \collgt=\normalcollgt +\newdimen\Collgt +\maxdepth=2pt +\newdimen\botlgt \botlgt=\z@ +\newdimen\rfootlgt \rfootlgt=2pc + +\newif\ifThisIsFirstPage \ThisIsFirstPagefalse + +\def\resetpagelgt{% + \pagelgt=\collgt \Collgt=\collgt + \advance\pagelgt by \rheadlgt + \ifThisIsFirstPage \advance\Collgt by-\toplgt + \advance\Collgt by-\botlgt \fi + \advance\pagelgt by \maxdepth + \global\advance\pagelgt by \rfootlgt + \global\vsize=\Collgt } + +\def\resetfpagelgt{% + \global\ThisIsFirstPagetrue + \resetpagelgt } % exclude special first page material + +\resetpagelgt +\raggedbottom + +% horizontal dimensions + +\newdimen\colwd +\newdimen\intercolwd \intercolwd=\z@ +\newdimen\pagewd \pagewd=39pc +\newdimen\trimwd \trimwd=\pagewd +\newdimen\oddleftindent \oddleftindent\z@ +\newdimen\evenleftindent \evenleftindent\z@ + +\def\onecol{\colwd=\pagewd \OneCol } + +\newdimen\onenarrowcolwd \onenarrowcolwd=30pc +\def\onenarrow{\colwd=\onenarrowcolwd \OneCol } + +% before 5#2, `narrow' was 34pc +\newdimen\onemediumcolwd \onemediumcolwd=34pc +\def\onemedium{\colwd=\onemediumcolwd \OneCol } + +\newdimen\twocolcolwd \twocolcolwd=18.75pc +\def\twocol{\colwd=\twocolcolwd \intercolwd=1.5pc \TwoCol } + +\newdimen\threecolcolwd \threecolcolwd=12pc +\def\threecol{\colwd=\threecolcolwd \intercolwd=1.5pc \ThreeCol } + +\def\CenterOneCol{% + \oddleftindent\pagewd + \advance\oddleftindent -\colwd + \divide\oddleftindent\tw@ + \evenleftindent\oddleftindent + \coloffset\ifodd\pageno\oddleftindent\else\evenleftindent\fi + } + +\def\OneCol{\hsize=\colwd \CenterOneCol \numcols=1 \resetmaxcols} +\def\ZeroLeftIndents{\oddleftindent\z@ \evenleftindent\z@ \coloffset\z@ } +\def\TwoCol{\hsize=\colwd \numcols=2 \resetmaxcols \ZeroLeftIndents} +\def\ThreeCol{\hsize=\colwd \numcols=3 \resetmaxcols \ZeroLeftIndents} + +\def\resetmaxcols{% + \ifnum\numcols>\maxcols + \ifOverlaysinTeX \maxcols=\numcols + \else \immediate\write\sixt@@n{% + The new setting of \string\numcols is greater than \string\maxcols.^^J + Either allow overlays in TeX or increase \string\maxcols.}\fi + \fi} + +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% ***** headers/footers ***** +% + + +\def\pagenoprefix{} + +\def\rtitlex{\def\tubfont{\tenpoint\rm}\TUB, \volx } +\def\rtitle{% + \hbox to \pagewd{% + \tenrm + \makestrut[10pt;\z@]% + \ifodd\pageno \rtitlex\qquad\midrtitle\hfil\pagenoprefix\number\pageno + \else \pagenoprefix\number\pageno\hfil\midrtitle\qquad\rtitlex \fi + }% + } + +\def\runhead{\vbox to \rheadlgt{\rtitle \vfil }} + +\def\rfoot{% + \hbox to \pagewd{% + \tenrm + \makestrut[\z@;0.5pc]% + \midrtitle\hfil\midrtitle + }% + } + +\def\runfoot{\vbox to \rfootlgt{\vfil \rfoot }} + +% Macros to produce extra running heads for stripping onto pages +% received as camera copy. Format must be preset to \OneCol, and +% start on a new page. + +% Generate 5 (4 + normal running head) per page. + +\def\DrawT@pLines{% + \vskip\topskip + \ulap{% + \line{% + \raise 1ex\rlap{\leaders\hrule\hskip\pagewd}% + \leaders\hrule\hfill + }} + \medskip} + +\def\r@nhead{% + \vbox to .23\vsize{% + \basezero \hsize=\pagewd \vfil + \topregister \vskip\headmargin \runhead \DrawT@pLines } + \medskip + \advancepageno } + +\def\nextrunner{% + \ifnum\T@stCount>0 + \ifnum\T@stCount>5 \TestCount=5 \else\TestCount=\T@stCount \fi + \advance\T@stCount by-\TestCount + \DrawT@pLines % always one at top of page + \loop\ifnum\TestCount>1 \r@nhead \advance\TestCount by\m@ne \repeat + \newpage + \def\@next{\nextrunner}% + \else \def\@next{}% + \fi + \@next } + +% Use \ExtraRunheads to generate running heads for stripping (e.g. for +% author-supplied camera-ready copy). E.g., ``\ExtraRunheads 12, {}.'' will +% generate 12 TUGboat running heads, up to 5 per page, starting with +% the current page number. + +\def\ExtraRunheads #1, #2.{% + \T@stCount=#1 + \gdef\pageprefix{#2}% % as in A-10 for appendices; not used just now + \nextrunner } + + +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% ***** insertions ***** +% + + +\newif\if@floatable \@floatabletrue % sometimes we don't want +\def\nofloat{\@floatablefalse} % midinsertions to float + +% redefine \@ins to avoid the \par of PLAIN +\def\@ins{\begingroup\setbox\z@\vbox\bgroup} + +\newinsert\botins +\newif\ifp@ge \newif\if@mid \newif\if@bot +\def\topinsert{\@midfalse\p@gefalse\@botfalse\@ins} +\def\botinsert{\@midfalse\p@gefalse\@bottrue\@ins} +\def\midinsert{\@midtrue\@botfalse\@ins} +\def\pageinsert{\@midfalse\@botfalse\p@getrue\@ins} +\skip\botins=\z@skip +\count\botins=1000 +\dimen\botins=\maxdimen +\def\endinsert{\egroup % finish the \vbox + \gdef\@next{}% + \if@mid \dimen@\ht\z@ \advance\dimen@\dp\z@ + \advance\dimen@12\p@ \advance\dimen@\pagetotal + \if@floatable + \ifdim\dimen@>\pagegoal\@midfalse\@botfalse\p@gefalse\fi\fi + \fi + \if@mid + \vskip\abovedisplayskip + \box\z@ + \vskip\belowdisplayskip + \gdef\@next{\@asifbelowdisplay}% + \else\insert\if@bot\botins\else\topins\fi + {\penalty100 % floating insertion + \if@bot\medskip\nobreak\fi + \splittopskip\z@skip + \splitmaxdepth\maxdimen \floatingpenalty\z@ + \ifp@ge \dimen@\dp\z@ + \vbox to\vsize{\unvbox\z@\kern-\dimen@}% depth is zero + \else \box\z@\fi + \if@bot\else\medskip\fi + }% + \fi\endgroup\@next} + +% Footnotes are mainly supported by PLAIN format, with these +% exceptions. + +\skip\footins=10pt +\def\footnoterule{\kern-5pt + \hrule width 5pc \kern 4.6pt } % the \hrule is .4pt high + +\newif\ifDelayFirstPar \DelayFirstParfalse +\def\vfootnote#1{\ifFirstPar \DelayFirstPartrue \fi + \insert\footins\bgroup + \interlinepenalty\interfootnotelinepenalty + \splittopskip\ht\strutbox % top baseline for broken footnotes + \splitmaxdepth\dp\strutbox \floatingpenalty\@MM + \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip + \rm \parindent=\normalparindent % always indent footnotes; added for TUGboat + \textindent{#1}\makestrut[10pt;\z@]\futurelet\next\fo@t} +\def\@foot{\strut\egroup + \ifDelayFirstPar \SetupFirstPar \global\DelayFirstParfalse \fi } +\newif\ifFirstPar \FirstParfalse +\def\SetupFirstPar{\global\parindent=\z@ \global\FirstPartrue } + + +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% ***** output ***** +% + + +% Reorganize \pagecontents from PLAIN to put footnotes at very +% bottom of page, even if \raggedbottom. Also add bottom insertions. + +\def\pagecontents{% + \ifvoid\topins\else\unvbox\topins\fi + \dimen@=\dp\@cclv \unvbox\@cclv % open up \box255 + \ifr@ggedbottom \kern-\dimen@ \vfil \fi + \ifvoid\footins\else % footnote info is present + \vskip\skip\footins + \footnoterule + \unvbox\footins\fi + \ifvoid\botins\else + \vskip\skip\botins + \unvbox\botins\fi } + + +% Trim (registration) marks may or may not be placed around the pages; +% Overlaying may or may not be done within TeX (as opposed +% to the device driver). + +\newif\ifTrimmarks \Trimmarksfalse +\newif\ifOverlaysinTeX \OverlaysinTeXtrue + + +% All columns containing data are formatted by \midpage. Trim marks +% are put on all columns, but running heads only on the last column +% (i.e. column number = \numcols) + +\def\midpage#1{% + \vbox{ + \basezero + \hrule height\z@ depth\z@ width\p@ + \ifTrimmarks + \vskip-1in % default offset for laser printers + % this puts top trim at edge of paper + \vbox to \trimlgt \bgroup + \topregister + \vskip \headmargin + \else + \vskip-\rheadlgt % this puts runhead above default offset + \fi + \vbox to \pagelgt{ + \ifnum\xcol=\numcols \runhead \else \vbox to \rheadlgt{}\fi + \ifThisIsFirstPage \firsthead \fi + \hbox to \pagewd{#1} % \vsize applied in \pagebody + \ifThisIsFirstPage \firstfoot \fi + \vfil % if no depth, avoid underfull box + \ifnum\xcol=\numcols \runfoot \else \vbox to \rfootlgt{}\fi + } + \ifTrimmarks \vfill \botregister \egroup \fi + }} + +% The production version includes trim marks, which are required +% on photographic paper, but are unsuitable for laser printer output +% (because they land at the edges of the page). For multiple +% column output, allowance is made for column overlays either +% within TeX or by the driver. The default is to have all +% overlays done within TeX, but large pages or matters of efficiency +% may dictate that driver-overlay is more appropriate. + +% When the overlaying is done within TeX, the .dvi contains just +% one page for each page to be printed. However, in the case +% that a driver is to do the overlaying we must anticipate that +% it will not be smart enough to properly overlay different numbers +% of .dvi pages for different printed pages (e.g. in the case that +% one job has both single- and double-column layout). Thus, for +% each printed page, TeX constructs a constant number (=\maxcols) +% of .dvi pages. Columns 1 through and including \numcols will +% be usual .dvi pages containing information for the typeset columns. +% Upon reaching column number \numcols, TeX will `fill out' the +% printed page with empty columns to \maxcols. + + +% set up auxiliary `page numbers' +% \pageno = \count0 as used in PLAIN + +% \xcol is the column number within a page; ranges from 1 to \maxcols +\countdef\xcol=1 \xcol=1 + +% \spoolno is the ordinal number of `.dvi' pages (i.e. the number +% of \shipouts performed) +\countdef\spoolno=2 \spoolno=0 + +\def\newcol{\endgraf\vfill\eject} + +\def\newpage{% + \vfill\eject + \loop + \ifnum\xcol>1 + {\leavevmode\endgraf\vfill\eject} % \xcol is advanced in the output routine + \repeat + } + +\newcount\numcols % `real' number of columns + +\newcount\@maxcolsofar % internal counter for box allocation +\@maxcolsofar=0 + +\newcount\maxcols % job-wide maximum number of columns +\maxcols=2 + + + % save the column or ship it out +\def\@saveorship{% + \ifOverlaysinTeX + \ifnum\xcol>\@maxcolsofar % if we need another column box allocated + \global\advance\@maxcolsofar\@ne + \newboxcs{column\number\xcol}% + \fi + \global\setboxcs{column\number\xcol}% + \else + \global\advance\spoolno\@ne + \shipout + \fi + } + +% horizontal offset of column from left edge of page +\newdimen\coloffset \coloffset\z@ +\def\incrcoloffset{% + \global\advance\coloffset\colwd + \global\advance\coloffset\intercolwd + } + +\def\output@{% + \@saveorship\midpage{\kern\coloffset\pagebody\hfil} + \incrcoloffset + \ifnum\xcol=\numcols % if at `real' last column, fill out page with + \loop % empty columns + \ifnum\xcol<\maxcols + \global\advance\xcol\@ne + \@saveorship\midpage{\vbox to \collgt{}\hfil} + \repeat + \fi + \ifnum\xcol=\maxcols % put page together if TeX is overlaying + \ifOverlaysinTeX + \global\advance\spoolno\@ne + \shipout\hbox{% + \xcol=1 + \loop \rlap{\boxcs{column\number\xcol}}% + \ifnum\xcol<\maxcols + \global\advance\xcol\@ne + \repeat + \hbox to \pagewd{}% + }% + \fi + \D@EndPage % possible shortening of next page + \global\coloffset\ifodd\pageno\oddleftindent\else\evenleftindent\fi + \global\xcol=1 + \else + \global\advance\xcol\@ne + \fi + \ExecuteNextDC % possible `Delayed Command' + } + + +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% ***** page adjustment ***** +% + + +% In the absence of automatic column-balancing, provide a mechanism +% for manually shortening a specified page. + +\newif\ifSh@rtPage \Sh@rtPagefalse +\newif\ifSh@rtPagePending \Sh@rtPagePendingfalse +\newcount\Sh@rtPageNo +\newdimen\Sh@rtPageLgt + +\def\@to{to} \def\@by{by} +% #1 = to/by; #2 = \dimen; #3 = <dimen>; #4 = * of Shorten*Page +\def\@toby#1#2#3#4{% + \def\@tb{#1}% + \ifx \@tb\@to \global #2=#3 + \else \ifx \@tb\@by \T@stDimen=#3 % accommodate negative #3 + #2=\normalcollgt \global\advance #2 by -\T@stDimen + \else \errmessage{#1 is invalid syntax; \string\Shorten#4Page + requires "to" or "by"}\fi + \fi } + +\def\@plusno#1#2;{% + \if +#1\T@stCount=\pageno \advance\T@stCount by #2 + \else \T@stCount=#1#2 \fi } + +\def\ShortenPage #1 #2 #3. {% + \global\Sh@rtPagePendingtrue + \@plusno#1;\global\Sh@rtPageNo=\T@stCount + \@toby{#2}{\Sh@rtPageLgt}{#3}{}} +\def\ShortenThisPage #1 #2. {% + \global\Sh@rtPagetrue + \@toby{#1}{\vsize}{#2}{This}} + +% Two cases: 0 = last page was nonstandard; reset \vsize +% 1 = do not reset \vsize: okay or length already reset +\def\D@EndPage{% + \global\advancepageno + \T@stCount=1 + \ifThisIsFirstPage \T@stCount=0 \global\ThisIsFirstPagefalse + \resetfirsthead \resetfirstfoot + \global\collgt=\normalcollgt \fi + \ifSh@rtPage \T@stCount=0 \global\Sh@rtPagefalse \fi + \ifSh@rtPagePending + \ifnum\pageno = \Sh@rtPageNo \T@stCount=1 + \global\vsize=\Sh@rtPageLgt + \global\Sh@rtPagePendingfalse + \global\Sh@rtPagetrue \fi + \fi + \ifcase \T@stCount \resetpagelgt \fi } + +% Add more powerful means of adjusting pages by keeping a list of +% commands to be executed prior to making up the next page. This +% technique will be expanded in the next version of the output +% routine. + +% "\DelayedCommand <page number> <column number> <command>\endCommand" +% places the token list <command> at the end of a list of "things to do". +% At the end of every column, the output routine checks this list to +% see whether the head of the list should be "executed" prior to +% building the next column. If so, the execution is performed. +% Right now, items must be placed in the execution list in order, +% and all items for a given column must be combined into a single +% token list. + +% Natural applications are double column figures and column size +% adjustments. E.g. +% \DelayedCommand +5 1 \global\advance\vsize by 2\baselineskip\endCommand +% will increase the \vsize of the first column of the page 5 pages from +% "now" by 2 baselines. To pull the \vsize back to normal would require +% another use of \DelayedCommand. Double column figures can be achieved +% with insertions called by \DelayedCommand. + +% Right now the technique is messy, but it can be used by those who know +% how it's implemented and know its limitations. + +\newtoks\@DelayedCommandList + +\def\DelayedCommand #1 #2 #3\endCommand{% + \@plusno#1;% + \edef\@temp{\the\@DelayedCommandList<\number\T@stCount>}% + \global\@DelayedCommandList=\expandafter{\@temp<#2>#3\endCommand}% + } + +\def\@FindNextDCPoint <#1><#2>#3\endList{% + \def\DCpage{#1}\def\DCcolumn{#2}} + +\def\FindNextDCPoint{% + \edef\@temp{\the\@DelayedCommandList}% + \ifx\@temp\empty \def\DCpage{\@M}\def\DCcolumn{0}% + \else + \edef\@form{% + \noexpand\@FindNextDCPoint\the\@DelayedCommandList\noexpand\endList}% + \@form + \fi} + +\def\@ExecuteNextDC <#1><#2>#3\endCommand#4\endList{% + \global\@DelayedCommandList={#4}% + #3} + +\def\ExecuteNextDC{% + \FindNextDCPoint + \ifnum \pageno=\DCpage \ifnum\xcol=\DCcolumn + \edef\@form{% + \noexpand\@ExecuteNextDC\the\@DelayedCommandList\noexpand\endList}% + \@form + \fi \fi} + + +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% ***** general mechanism for tags ***** +% + +% Upon sensing an opening tag (call it `\foo' here), the following process +% is set in motion: +% 1. \begingroup (so definitions and settings are localized); +% 2. the default situation for \foo is set up; +% 3. if appropriate, an \everyfoo list is read (this allows one +% to override the TUGboat.sty factory defaults); +% 4. optional commands are read. This involves looking ahead for +% a `[' and `normalizing' the optional environment so that +% backslashes and braces are interpreted as their standard selves. +% After the options are read, the `\',`{', and `}' are restored +% to their status appropriate to \foo; +% 5. the \@beginfoo macro is executed. This +% may involve branching dependent upon flags set by options. It may +% also be a place where spaces and carriage-returns are activated. +% 6. the `argument' to \foo is read and stored or processed on +% the fly (the method employed is generally fixed for each tag). +% The argument may be delimited by *...* (called the `short-form' +% here), or up to ...\endfoo (called the `long-form'). +% 7. a cleanup macro is executed which also ends the current group. +% This may do all the work if an argument has been read and stored. + +% Checking ahead. +% Often we check ahead to determine the next course of action. +% \@checknexttoken is used to check for optional commands, to check for the +% short-form argument-delimiter, and to ignore characters in certain +% situations. The macro is just a check; applications must do whatever +% is appropriate with the ensuing token. + +% \@checknexttoken checks the next token against argument #1. If the +% two are the same, #2 is executed, otherwise #3. The comparison is +% done with \ifx. Since we check ahead with \futurelet, the first +% argument is stored with \let as well. To include the case +% where #1 may be a space, we have to go through a small contortion +% to \let\@basetoken= that space. + +% At times, the \@nexttoken will be \outer and this will prevent its +% being incorporated in the definition of \@next below. For this reason, +% we store `\ifx\@basetoken\@nexttoken' away in a definition at a time +% when \@nexttoken is undefined and won't cause a problem. + +\def\if@baseis@next{\ifx\@basetoken\@nexttoken} + +\long\def\@checknexttoken #1#2#3{% + \futurelet\@basetoken\iffalse#1\fi + \long\def\@next{% +% \ifx \@basetoken\@nexttoken + \if@baseis@next + \long\def\@@next{#2}% + \else\long\def\@@next{#3}\fi + \@@next}% + \futurelet\@nexttoken\@next} + +% Eliminating characters from input. +% The following macros check ahead to see whether the next token is a +% token to be parsed from the input stream. \@ignoreall keeps +% checking to eliminate all such characters, whereas \@ignoreone drops +% at most one. Argument #2 is executed after characters are eliminated. + +% The token is removed by defining a control sequence whose +% contextual form includes the token. + + % execute #2 after ignoring (possibly) one occurrence of #1 +\long\def\@ignoreone#1#2{% + \def\@ignoreform#1{#2}% + \@checknexttoken{#1}{\@ignoreform}{#2}% + } + + % execute #2 after ignoring all occurrences of #1 +\long\def\@ignoreall#1#2{% + \def\@ignoreform#1{\@ignoretest}% + \def\@ignoretest{\@checknexttoken{#1}{\@ignoreform}{#2}}% + \@ignoretest + } + +% Particularly useful ignorances. + + % execute #1 after ignoring spaces +\def\DeleteOptionalSpaces#1{% + \@ignoreall{ }{#1}% + } + % execute #1 after ignoring spaces and \pars +\def\DeleteOptionalSpacesandPars#1{% + \@ignoreall{ }{\@ignoreall{\par}{#1}}% + } + + +% Checking and reading options. +% To check for the next optional argument, the macros must look +% ahead to the next character. If the next character is a `[', +% the option-reading mechanism is invoked. This check may be suppressed if +% the user has executed the \lastoption option. If \@lastoption is +% "true" or if the [ is NOT next, the macro goes on to reading any +% arguments and executing appropriately. + +\def\@checkoptions{% + \if@lastoption + \def\@next{\@executetoend}% + \else + \def\@next{\@checknexttoken {[}{\@readoptions}{\@executetoend}}% + \fi + \@next + } + +% Default "options" on start-up. Unless over-ridden, the situation +% will be: +% 1. there may be another option to check (i.e. \@lastoptionfalse); +% 2. it will be necessary to read the input file to determine the +% method of marking arguments (i.e. \@longformfalse); +% 3. arguments will be handled on the fly (i.e. \@savingargumentfalse); +% 4. the long-form ending delimiter will be \end... (where ... is +% the tag with which we're currently operating. + +\newif\if@lastoption \@lastoptionfalse +\def\lastoption{\@lastoptiontrue} + +\newif\if@longform \@longformfalse +\def\longform{\@longformtrue} + +\newif\if@savingargument \@savingargumentfalse + +\newtoks\enddelim + +\def\@defaultoptions{% + \@lastoptionfalse + \@longformfalse + \@savingargumentfalse + \enddelim=\expandafter{\csname end\CurrentTag\endcsname}% + \let\@long\empty + } + +% To read an optional command, \catcodes of \ { } are restored to their plain +% values, and the [...] form is parsed out by \@@readoptions. The argument +% to \@@readoptions is then executed, the 3 specials are restored and +% the we check again for [ after deleting spaces. One might, alternatively, +% parse out the initial `[' and activate the `]' to end options, but +% this would make it awkward to place options within other macros (since +% the `]' would have to be \catcoded properly for the definition). + +\def\@readoptions{% + \savecat\\\makeescape\\% + \savecat\{\makebgroup\{% + \savecat\}\makeegroup\}% + \@@readoptions} + +\def\@@readoptions[#1]{% + #1% + \restorecat\\\restorecat\{\restorecat\}% + \DeleteOptionalSpaces{\@checkoptions}% + } + + +% Short Form Tagging. +% We specify a character (*) to be used as a begin/end delimiter +% for the argument to most tags. This code could be copied and +% altered a bit to use another character. + +% The character will be encountered as either type `other' or as +% an `active' character. + +\newtoks\@otherSFD +\@otherSFD={*} +\let\@SFD=* % used in \@checknexttoken + +\newtoks\@activeSFD +{\makeactive\* + \global\@activeSFD={*}% +} + +\let\@plainast=\ast +\def\ast{\ifmmode\@plainast\else *\fi} + + +% Reading to the end-tag. +% Macros may just do their business after options have been +% read. In this case, there is no end-tag to worry about. +% Otherwise, the macros either read to the "long-form" of end-tag +% (e.g. \endtitle or \endauthor) or to the short-form (assumed to +% be * here). Unless an option has specified +% that the long-form is to be used, the macros look ahead to +% see whether the short-form delimiter occurs next. If so, +% it is assumed that the short-form is being used. In any case, +% the appropriate \@begin... macro is executed before the argument is +% handled. + +\newcount\@numarguments \@numarguments=1 + +\def\@executetoend{% + \ifnum\@numarguments>0 + \if@longform \def\@afterbegintag{\@longparse}% + \else + \def\@afterbegintag{\@checknexttoken + {\@SFD}{\@shortparse}{\@longparse}}% + \fi + \else + \def\@afterbegintag{}% + \fi + \csname @begin\CurrentTag\endcsname + \@afterbegintag + } + +% If the short-form is being used and an argument is to be saved, +% we must define a "form" which TeX may follow to pull out the +% tag's argument. The argument is stored away in the token register +% \@argument, and the appropriate end-operation is performed. +% Otherwise (the `argument' is processed on-the-fly), we parse out +% the initial short-form delimiter and activate the ending one. + +\newtoks\@argument + +\def\@shortparse{% + \if@savingargument + \edef\@form{% + \def\noexpand\@@shortparse\the\@otherSFD####1\the\@otherSFD}% + \@long\@form{\@argument{##1}\csname end\CurrentTag\endcsname}% + \else + \expandafter\makeactive\csname\the\@otherSFD\endcsname + \expandafter\def\the\@activeSFD + {\csname end\CurrentTag\endcsname + \expandafter\makeother\csname\the\@otherSFD\endcsname}% + \def\@@shortparse{% + \expandafter\@ignoreone\expandafter{\the\@otherSFD}% + {}% + }% + \fi + \@@shortparse} + +% On the other hand, if the long form is used, TeX must parse to +% the long-form ending tag. Ordinarily we know the ending-tag +% because it is just the \end... which corresponds to the tag +% which initiated the process. We do allow for the possibility, +% however, that we may want to switch this for some reason. E.g. +% the different \verbatim styles allow for \verbatim...\endverbatim +% and ||...||. The easiest way to implement the || style is +% to have the first || call \verbatim and have \verbatim know +% to look for || as the end-tag instead of \endverbatim. This may +% be accomplished by allowing for the possibility of different +% end-tags as below. + +\def\@longparse{% + \if@savingargument + \edef\@form{\def\noexpand\@@longparse####1\the\enddelim}% + \@long\@form{\@argument{##1}\csname end\CurrentTag\endcsname}% + \else \def\@@longparse{}\fi + \@@longparse + } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Macros generally available to tags. + +\def\longargument{\def\@long{\long}} + +\def\@authorstyle{\@@@a} +\def\@inlinestyle{\@@@i} +\def\@displaystyle{\@@@d} +\def\@altinlinestyle{} +\def\@altdisplaystyle{} + +\newif\if@removeprewhite \@removeprewhitefalse +\newif\if@removepostwhite \@removepostwhitefalse +\def\removeprewhite{\@removeprewhitetrue} +\def\removepostwhite{\@removepostwhitetrue} + +% Allow for line numbers on a listing as well as rules above and below. +\newif\if@ruled \@ruledfalse +\newif\if@numbered \@numberedfalse +\newcount\linenumber +\newcount\globallinenumber \globallinenumber = 0 +\newif\if@continuingnumbers \@continuingnumbersfalse +\def\continuenumbers{\numbered\@continuingnumberstrue} + +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% ***** title, section title, authors, addresses ***** +% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% title + +\def\title{% + \begingroup + \def\CurrentTag{title}% + \@defaultoptions + \@savingargumenttrue + \@checkoptions} + +\def\endtitle{% + \global\toks@=\expandafter{\the\@argument}% + \endgroup + \edef\thetitle{\ignorespaces\the\toks@\unskip}% + } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% section titles + +% Material mostly in tugboat.com now + +\setbox\T@stBox=\hbox{\sectitlefont O} +\newdimen\stfontheight \stfontheight=\ht\T@stBox + +\def\sectitle{% + \begingroup + \def\CurrentTag{sectitle}% + \@defaultoptions + \@savingargumenttrue + \global\SecTitletrue + \@checkoptions} + +\def\endsectitle{% + \@sectitle{\the\@argument}% + \endgroup + } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% authors + +\newcount\authornumber + +\def\author{% + \begingroup + \def\CurrentTag{author}% + \global\advance\authornumber by 1 + \@defaultoptions + \@savingargumenttrue + \@checkoptions} + +\def\endauthor{% + \global\toks@=\expandafter{\the\@argument}% + \endgroup + \expandafter\edef\csname theauthor\number\authornumber\endcsname + {\ignorespaces\the\toks@\unskip}% + \expandafter\let\csname theaddress\number\authornumber\endcsname\relax + \expandafter\let\csname thenetaddress\number\authornumber\endcsname\relax + } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% addresses + +\def\address{% + \begingroup + \def\CurrentTag{address}% + \@defaultoptions + \@savingargumenttrue + \let\@addressstyle=\@authorstyle + \def\inline{\let\@addressstyle=\@inlinestyle}% + \def\display{\let\@addressstyle=\@displaystyle}% + \@checkoptions} + +\def\endaddress{% + \ifx\@addressstyle\@inlinestyle + \def\\{, }\the\@argument + \endgroup + \def\@next{}% + \else\ifx\@addressstyle\@displaystyle + \endgraf\raggedright + \everypar={\hangindent 1.5\parindent}% + \def\\{\endgraf}% + \def\|{\unskip\hfil\break}% + \vskip\abovedisplayskip + \the\@argument\endgraf + \vskip\belowdisplayskip + \@asifbelowdisplay + \endgroup + \def\@next{\ignorespaces}% + \else + \global\toks@=\expandafter{\the\@argument}% + \endgroup + \expandafter\edef\csname theaddress\number\authornumber\endcsname + {\ignorespaces\the\toks@\unskip}% + \def\@next{}% + \fi \fi + \@next + } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% network addresses + +\def\netaddress{% + \begingroup + \def\CurrentTag{netaddress}% + \@defaultoptions + \@savingargumenttrue + \let\@network\relax + \def\network##1{\def\@network{##1: }}% + \@SpecialsGetOther + \makeescape\\% + \netaddrat + \netaddrpercent + \@checkoptions} + +{\makeactive\@ + \gdef\netaddrat{\makeactive\@\def@{\char"40\discretionary{}{}{}}} + \makeactive\% + \gdef\netaddrpercent{\makeactive\%\def%{\char"25\discretionary{}{}{}}} +} + +% We want the definition of \thenetaddress... to land at the right +% nesting level, so we have to first pull it to the top, then +% drop back to where we are. + +\def\endnetaddress{% + \global\toks@=\expandafter{\the\@argument}% + \ifx\@network\relax + \gdef\@@network{}% + \else + \xdef\@@network{\@network}% + \fi + \endgroup + \expandafter\edef\csname thenetaddress\number\authornumber\endcsname + {{\noexpand\rm\@@network}% + {\noexpand\netaddrat\noexpand\netaddrpercent\noexpand\net + \ignorespaces\the\toks@\unskip}}% + } + +\def\net{\tt} + +% Overrides to default author and signature formats + +\def\authorlist#1{\def\@authorlist{#1}} + +% Except for the first article in a section, beginnings of articles +% are announced by a horizontal rule the width of the column. +% In the case that this rule happens to fall at the top of a column, +% we have to make sure that it appears at the VERY top of the column +% and not just on the first baseline. To accomplish this, we insert +% an empty rule first and then jump back over it to place the rule that +% readers will see. + +\def\article{% + \@allowspanningfigsfalse + \ifSecTitle \global\SecTitlefalse + \else \vskip\AboveTitleSkip + \kern\topskip + \nullhrule + \kern-\topskip + \kern-\strulethickness + \hrule height\strulethickness depth\z@ + \nobreak + \kern\medskipamount + \fi + \ifx\thetitle\relax + \else + \nobreak + {\parskip\z@\interlinepenalty\@M + \noindent\def\\{\unskip\break}\raggedstretch=.3\colwd\raggedright\bf + \ignorespaces\thetitle\unskip\endgraf}% + \fi + \ifnum\authornumber>0 + \nobreak + \vskip4pt + {\parskip\z@\interlinepenalty\@M + \def\\{\unskip\hfil\break}\hangindent\parindent\raggedright + \@authorlist\endgraf} + \fi + \nobreak + \vskip \BelowTitleSkip + \vskip -\parskip + \tenpoint + \DeleteOptionalSpacesandPars{\noindent\ignorespaces}% + } + + +\def\endarticle{\vfil\end} % redefined in drivers + +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% ***** heads ***** +% + +% Heads are set by first saving the text of the head in \@argument +% and then operating appropriately depending upon the \headlevel. +% Selection among the different heads is made by an \ifcase. + +% To remove extra \par tokens between heads and ensuing text in the +% input file, we call \DeleteOptionalSpacesandPars. To do this outside +% the `head' group and just before TeX returns to the normal input stream +% following a call to \head, we must define (globally) a control sequence +% (\@next) and call it at the very end. + +\newcount\headlevel \headlevel=1 + +\def\head{% + \begingroup + \def\CurrentTag{head}% + \@allowindentfalse + \@defaultoptions + \@savingargumenttrue + \def\\{\break}% + \@checkoptions} + +\def\endhead{% + \endgraf + \ifcase\headlevel\or\@domainhead\or\@dosubhead\or\@dosubsubhead\fi + \endgroup + \@next + } + +\def\@domainhead{% + \if@removeprewhite\else\vskip\baselineskip\fi + \noindent{\raggedright\bf\ignorespaces\the\@argument\unskip\endgraf}% + \if@removepostwhite % usually we want the white space + \else\kern0.5\baselineskip\fi + \nobreak + \gdef\@next{% + \if@allowindent\def\@next{}% usually we don't want to indent here + \else\def\@next{\DeleteOptionalSpacesandPars{\noindent\ignorespaces}}\fi + \@next + }% + } + +\def\@dosubhead{% + \if@removeprewhite\else\medskip\fi + \noindent{\frenchspacing\bf\ignorespaces\the\@argument + \unskip\if@headpunctuation.\fi}% + \hskip 0.5em plus \fontdimen3\the\font + \gdef\@next{\DeleteOptionalSpacesandPars{}}% + } + +\def\@dosubsubhead{% + {\frenchspacing\bf\ignorespaces\the\@argument\unskip}% + \hskip 0.5em plus \fontdimen3\the\font + \gdef\@next{\DeleteOptionalSpacesandPars{}}% + } + +\def\subhead{\head[\headlevel=2]} +\def\subsubhead{\head[\headlevel=3]} + +\newif\if@headpunctuation \@headpunctuationtrue +\def\nopunctuation{\@headpunctuationfalse} + +\newif\if@allowindent +\def\allowindent{\global\@allowindenttrue} +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% ***** text and subtext ***** +% + +% The code here exists primarily to implement \subtext. The treatment +% is similar to that for \head in that an \ifcase statement is called +% to choose between the various text levels. Here, however, we handle +% the `text' on the fly instead of saving it as an argument. + +\newcount\textlevel \textlevel=1 + +\def\text{% + \begingroup + \def\CurrentTag{text}% + \@defaultoptions + \@savingargumentfalse + \@checkoptions} + +\def\@begintext{% + \endgraf + \ifcase\textlevel\or\or\@setupsubtext\fi + } + +\def\@setupsubtext{% + \vskip\abovedisplayskip + \advance\leftskip by 0.5\parindent + \advance\rightskip by 0.5\parindent + \ninepoint\rm + } + +\def\endtext{% + \gdef\@next{}% + \ifcase\textlevel\or\or\@dosubtext\fi + \endgroup + \@next + } + +\def\@dosubtext{% + \endgraf + \vskip\belowdisplayskip + \gdef\@next{\@asifbelowdisplay}% + } + +\def\subtext{\text[\textlevel=2]} + +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% ***** lists ***** +% + +\newcount\listlevel \listlevel=1 +\newif\if@itemized +\newcount\itemnumber +\newtoks\@itemtag +\newcount\@cols % number of columns in list +\newdimen\colsepwidth +\newdimen\@listindent +\newdimen\@listhangindent +\newif\if@firstitem % when first item is handled differently +\newtoks\everylist + +\def\list{% + \begingroup + \def\CurrentTag{list}% + \let\@liststyle=\@displaystyle + \def\inline{\let\@liststyle=\@inlinestyle}% + \def\display{\let\@liststyle=\@displaystyle}% + \def\displaystyle##1{\def\@altdisplaystyle{##1}}% + \def\inlinestyle##1{\def\@altinlinestyle{##1}}% + \def\item{% + \begingroup + \def\CurrentTag{item}% + \@numarguments=0 + \@checkoptions}% + \@itemtag={$\bullet$}% + \def\tag##1{\@itemtag{##1}}% + \def\tagform##1{\llap{##1\strutt\enspace}}% + \@itemizedtrue + \def\unitemized{\@itemizedfalse}% + \itemnumber=0 + \def\numbered{\@itemtag={\number\itemnumber.}}% + \def\romannumeraled{\@itemtag={\romannumeral\itemnumber.}}% + \def\Romannumeraled{\@itemtag= + {\uppercase\expandafter{\romannumeral\itemnumber.}}}% + \def\lettered{\itemnumber="60 \@itemtag={\char\itemnumber.}}% + \def\Lettered{\itemnumber="40 \@itemtag={\char\itemnumber.}}% + \def\ruled{\@ruledtrue}% + \@ruledfalse + \@cols=1 + \def\cols{\@cols}% + \@firstitemtrue + \def\@itemseparator{, }% + \def\itemseparator##1{\def\@itemseparator{##1}}% + \@defaultoptions + \@savingargumentfalse + \the\everylist + \@checkoptions} + +\def\@beginlist{% + \ifx\@liststyle\@displaystyle + \endgraf + \ifnum\listlevel=1 + \if@ruled \if@removeprewhite\else\medskip\fi \hrule\kern5pt \nobreak + \else \if@removeprewhite\else\vskip\abovedisplayskip \fi\fi + \fi + \advance\leftskip\parindent + \@listindent=\parindent + \@listhangindent=\@listindent + \parindent\@listindent + \lineskip\z@ + \if@itemized + \else + \parskip\z@skip + \parindent\z@ + \raggedright + \everypar={\advance\itemnumber\@ne + \tagform{\the\@itemtag}}% + \makeCtrlMendgraf + \fi + \def\colsep{% + \global\count@\itemnumber + \egroup\kern\colsepwidth + \vtop\bgroup + \@altdisplaystyle + \itemnumber=\count@\ignoreendline}% + \ifnum\@cols>1 + \dimen@\colsepwidth + \multiply\dimen@\@cols + \advance\dimen@-\colsepwidth + \advance\hsize-\dimen@ + \divide\hsize by\@cols + \hbox\bgroup\vtop\bgroup + \fi + \@altdisplaystyle + \else + \def\tagform##1{##1\strutt\ }% + \if@itemized + \else + \makeCtrlMseparator + \advance\itemnumber by \@ne + \tagform{\the\@itemtag}% + \fi + \def\colsep{}% + \@altinlinestyle + \fi + } + + +\def\endlist{% + \ifx\@liststyle\@displaystyle + \if@itemized\endgraf\fi + \ifnum\@cols>1 + \egroup % vtop + \egroup % hbox + \fi + \ifnum\listlevel=1 + \if@ruled \kern5pt\hrule\nobreak\vskip2\medskipamount + \else %\nobreak + \if@removepostwhite\else\vskip\belowdisplayskip\fi + \fi + \gdef\@next{\@asifbelowdisplay}% + \fi + \else \gdef\@next{}% + \fi + \endgroup % list + \@next + } + +\def\sublist{\list[\listlevel=2]} + + +\newtoks\everyitem \everyitem{} + + +\def\@beginitem{% + \ifx\@liststyle\@displaystyle + \endgraf + \if@firstitem\@firstitemfalse\else\vskip\smallskipamount\fi + \advance\itemnumber by \@ne + \noindent\leavevmode + \the\everyitem + \tagform{\the\@itemtag}% + \else + \def\item{\if@firstitem\@firstitemfalse\else\unskip\@itemseparator\fi + \advance\itemnumber by \@ne\the\@itemtag\enspace}% + \fi + \global\count@\itemnumber + \global\dimen@\hangindent + \endgroup + \itemnumber\count@ + \hangindent\dimen@ + } + +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% ***** verbatim ***** +% + +% Operation here is very similar to that for the other tags. +% The opening tag sets up the situation and looks for optional +% commands and the short-form delimiters. Since initial setup +% involves changing the special characters to characters of +% type other, some juggling must be done when optional commands +% are read. In addition, to allow for implementation of the +% |...| style using the more verbose \verbatim...\endverbatim, +% we parameterize the ending-delimiter. + + % sets default to display style +\def\verbatim{\@verbatim[\display]} + +\def\@verbatim{% + \begingroup + \setupverbatim + \@checkoptions + } + +\def\setupverbatim{% + \def\CurrentTag{verbatim}% + \@defaultoptions + \def\inline{\let\@verbstyle\@inlinestyle}% + \def\display{\let\@verbstyle\@displaystyle}% + \def\displaystyle##1{\def\@altdisplaystyle{##1}}% + \def\inlinestyle##1{\def\@altinlinestyle{##1}}% + \def\numbered{\@numberedtrue}% + \def\ruled{\@ruledtrue}% + \def\smallcode{\ninepoint\tt\baselineskip=10pt}% + \let\@verbinputvar\relax + \let\@verbinputfile\relax + \@SpecialsGetOther + \enddelim=\expandafter{\endverbdelimiter}% + \normalspaces\frenchspacing + \obeylines + \@savingargumenttrue + \the\everyverbatim + } + +\def\@SpecialsGetOther{% + \catcode`\\=\other + \catcode`\{=\other \catcode`\}=\other \catcode`\$=\other + \catcode`\&=\other \catcode`\#=\other \catcode`\%=\other + \catcode`\~=\other \catcode`\_=\other \catcode`\^=\other + \the\@AdditionsToSpecialsGetOther} + +% The \@Additions... register above should be used whenever another +% character is declared to be special for some purpose. E.g., +% we will use the | for the short-form |...| verbatim notation. +% Since the | is generally active for this purpose, it's category +% won't get changed to \other for use in \verbatim...\endverbatim +% unless we add it via this mechanism. + +\newtoks\@AdditionsToSpecialsGetOther + +\def\AddToSpecialsGetOther#1{% + \@AdditionsToSpecialsGetOther= + \expandafter{\the\@AdditionsToSpecialsGetOther#1}} + +% Altering the verbatim setup. +% Users can alter the setup to their purpose by +% putting tokens in the register \everyverbatim. + +\newtoks\everyverbatim + +% Ordinarily the end-tag would be the single token `\endverbatim'. +% The following allows us to `see' the tag when `\' is of type `other'. +{\catcode`\|=0 \catcode`\\=\other +|gdef|endverbdelimiter{\endverbatim}} + +% Input from an external variable or file + +\def\inputfromvar#1{\def\@verbinputvar{#1}}% +\def\inputfromfile#1{\def\@verbinputfile{#1}}% +\let\@verbinputvar\relax +\let\@verbinputfile\relax + +% Outputs + +\newif\if@outputtotype \@outputtotypetrue +\def\notype{\@outputtotypefalse} +\def\outputtovar#1{\def\@verboutputvar{#1}} +\def\outputtofile#1{\def\@verboutputfile{#1}} +\let\@verboutputvar\relax +\let\@verboutputfile\relax +\newwrite\verboutfile + +\def\@beginverbatim{\obeyspaces}%\obeylines} + +\def\endverbatim{% + \ifx\@verboutputvar\relax\else % output to `variable' + \expandafter\xdef\csname\@verboutputvar\endcsname{\the\@argument}% + \fi + \ifx\@verboutputfile\relax\else % output to file + \immediate\openout\verboutfile=\@verboutputfile + \makeCtrlMnewlinechar + \iffalse{\fi\expandafter\@setupverbwrite\the\@argument}% use \@setupwrite to + \immediate\closeout\verboutfile % get rid of initial ^^M + \fi + \gdef\@next{}% % in case following clause is false + \if@outputtotype % output typeset on page + \tt + \ifx\@verbstyle\@inlinestyle + \@beforeverbinline + \@altinlinestyle + \else + \@beforeverbdisplay + \@altdisplaystyle + \fi + \ifx\@verbinputvar\relax\else % input from `variable' + \csname\@verbinputvar\endcsname + \fi + \ifx\@verbinputfile\relax\else % input from file + \fileinput{\@verbinputfile}% + \@endverbatim + \fi + \expandafter\@ignoreCtrlMverbendline\the\@argument\@endverbatim + \ifx\@verbstyle\@inlinestyle + \@afterverbinline + \else + \@afterverbdisplay\gdef\@next{\@asifbelowdisplay}% + \fi + \fi + \endgroup + \@next + } + + +\def\@beforeverbinline{% + \makeCtrlMverbspace + \let\@endverbatim=\empty + } + +\def\@beforeverbdisplay{% + \def\@endverbatim{\verbendline}% + \if@ruled \medskip \hrule\kern5pt \nobreak + \else \vskip\abovedisplayskip + \fi + \makespaceverbspace + \makeCtrlMverbendline + \parskip=\z@skip + \if@numbered \parindent=\z@ + \if@continuingnumbers + \else \global\globallinenumber = \z@ \fi + \linenumber=\z@ \fi + \everypar={\global\advance\globallinenumber by\@ne + \advance\linenumber by\@ne + \ifnum\linenumber<3 \vadjust{\nobreak}\fi + \if@numbered \leavevmode + \hbox to\normalparindent{\hss\sevenrm\the\globallinenumber.\ }% + \fi}% + \frenchspacing\rightskip=-\ttrightskip \hyphenpenalty\@M + } + +% \ttrightskip is the permissible overhang beyond right margin; +% in MANMAC, this is 5pc, which is fine for the TeXbook, but too much here. + +\newdimen\ttrightskip \ttrightskip=1pc + +\def\@afterverbinline{} + +\def\@afterverbdisplay{% + \if@ruled \kern5pt\hrule\fi + \ifnum\linenumber<3 \penalty\z@ \fi + \if@removepostwhite\else + \if@ruled \vskip2\medskipamount \else \vskip\belowdisplayskip\fi + \fi + } + +\def\@asifbelowdisplay{% + \toks@=\expandafter{\the\everypar}% + \noindent + \everypar=\expandafter{\the\toks@}% + \ignorespaces} + + +% Definitions of spaces and ^^M +% \@ignoreCtrlMverbendline is used to lop off an initial ^^M in +% verbatim text and to remove an \@endverbatim (the latter in case the +% verbatim text is actually empty) + +\def\@ignoreendverbatim{\@ignoreone{\@endverbatim}{}} +\def\verbendline{\leavevmode\null\endgraf} +\def\makeCtrlMactive{\catcode`\^^M=\active} +{\makeCtrlMactive +\gdef\makeCtrlMverbendline{\makeCtrlMactive% + \def^^M{\@ignoreone{\@endverbatim}{\verbendline}}}% +\makeCtrlMverbendline% +\gdef\@ignoreCtrlMverbendline{\@ignoreone{ +}{\@ignoreendverbatim}}% +\gdef\@setupverbwrite{\@ignoreone{ +}{\immediate\write\verboutfile\bgroup}}% +\gdef\makeCtrlMverbspace{\makeCtrlMactive\def^^M{\verbatimspace}}% +\gdef\makeCtrlMnewlinechar{\newlinechar=`\^^M}% +\gdef\makeCtrlMendgraf{\makeCtrlMactive\def^^M{\strutt\endgraf}}% +\gdef\makeCtrlMseparator{\makeCtrlMactive% + \def^^M{% + \@checknexttoken {\endlist}{}{% + \@itemseparator\advance\itemnumber by \@ne \tagform{\the\@itemtag}% + \ignorespaces}}}% +} + +% to read a variable or file name properly, we must interpret +% spaces and ^^M as nothing or as spaces + +{\makeCtrlMactive\obeyspaces% +\gdef\makeCtrlMempty{\def^^M{}}% +\gdef\makespaceempty{\def {}}% +} +{\makeCtrlMactive\obeyspaces% +\gdef\makeCtrlMspace{\def^^M{\space}}% +\gdef\makespacespace{\def {\space}}% +} + +{\makeCtrlMactive% +\gdef\@ignoreCtrlM#1{\@ignoreone{^^M}{#1}}% +\gdef\ignoreendline{\@ignoreCtrlM{}}% +} + +% From David Eppstein's ``Trees'' paper (6#1), preserve initial spaces. +\def\verbatimspace{\ifvmode\indent\fi\space} +{\obeyspaces\gdef\makespaceverbspace{\def {\verbatimspace}}} + + + +% Options and variants. + +\def\verbinline{\verbatim[\inline]} +\def\verbdisplay{\verbatim[\display]} +\def\verbfile#1{\verbatim[\inputfromfile{#1}]} + + +% Verbatim with the other characters (e.g. |...|). +% Procedures are parameterized so that it is easy to allow +% different characters to perform this function. Any character +% that's chosen could cause problems if it occurs unexpectedly +% in the middle of what is supposed to be verbatim text. We call +% the current special character for this purpose the "verbchar" +% and store it in active form in the token register \@verbchar. + +\newtoks\@verbchar + +% On hitting a "verbchar" in the middle of text, TeX must look ahead +% to see whether the verbchar occurs again. Since this +% look-ahead fixes the category of the token examined, we must change +% the categories of all characters appropriately before looking +% (and we read \everyverbatim in case it contains a category change). +% We must also "gobble" the second verbchar if we hit one. +% Depending upon whether 1 or 2 verbchars are found, we call +% \verbatim with the appropriate style command. We also use an +% optional command to change the delimiter which ends this \verbatim +% block. We naturally localize the changes to category codes made on +% startup. It's easier to end this group here at the beginning and to +% restart everything in a standard \verbatim than it is to add an extra +% \endgroup after the verbatim text. + +\def\@firstverbchar{% + \begingroup + \setupverbatim +% \@SpecialsGetOther + \makeverbcharactive + \expandafter\@checknexttoken\expandafter{\the\@verbchar}% + {\expandafter\@ignoreone\expandafter{\the\@verbchar}% + {\endgroup\verbatim[\longform\maketwoendverb]}}% + {\endgroup\verbatim[\inline\longform\makeoneendverb]}% + } + +\def\setupverbchar{% + \def\makeoneendverb{\catcode\expandafter`\csname\expandafter + \string\the\@verbchar\endcsname= + \active\edef\endverbdelimiter{\the\@verbchar}% + \enddelim=\expandafter{\endverbdelimiter}}% + \def\maketwoendverb{\catcode\expandafter`\csname\expandafter + \string\the\@verbchar\endcsname= + \active\edef\endverbdelimiter{\the\@verbchar\the\@verbchar}% + \enddelim=\expandafter{\endverbdelimiter}}% + \expandafter\let\the\@verbchar\@firstverbchar + \makeverbcharactive + \AddToSpecialsGetOther{% + \catcode\expandafter`\csname + \expandafter\string\the\@verbchar\endcsname=\other}% + } + +\def\makeverbcharactive{% + \catcode\expandafter`\csname + \expandafter\string\the\@verbchar\endcsname=\active} + +{\makeother\| \gdef\VertChar{|}} +{\makeactive\| +\gdef\makevertverbchar{% + \@verbchar={|}% + \setupverbchar + } +} + +{\makeother\! \gdef\WowChar{!}} +{\makeactive\! +\gdef\makewowverbchar{% + \@verbchar={!}% + \setupverbchar + } +} + + +\def\MTH{$} +\def\sb{_} +\def\sp{^} +\def\SP{{\tt\char"20 }} % "visible" space +\chardef\bs=`\\ +\def\vrt{{\tt\char`\|}} +\def\brokenvert{\hbox to 5.24998pt{\hfill + \lower 1.5pt\vbox to 8.5pt{\hrule width .9pt height 3.25pt + \vfill\hrule width .9pt height 3.25pt}\hfill}} + + + +\def\@lt{$<$} +\def\@gt{$>$} +{\makeactive\< +\gdef\enablemetacode{% + \AddToSpecialsGetOther{\catcode`\<=\other}% + \makeactive\<% + \def<##1>{$\langle${\it\makeCtrlMspace\makespacespace##1\/}$\rangle$}% + } +} + + +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% ***** figures ***** +% + + +\newif\if@@mid \@@midfalse +\newif\if@@bot \@@botfalse +\def\@caption{} +\newif\if@fixed \@fixedfalse + + % items for top and bottom ``banners'' on first page +\def\resetfirsthead{\global\toplgt=\z@ \gdef\firsthead{}} +\resetfirsthead +\newbox\firsth@@d \newbox\firsth@ad + +\def\resetfirstfoot{\global\botlgt=\z@ \gdef\firstfoot{}} +\resetfirstfoot +\newbox\firstf@@t \newbox\firstf@ot + +\newif\if@allowspanningfigs + +\newcount\@figurepage +\newcount\@figurescol +\newcount\@figureecol + + +\def\figure{% + \begingroup + \def\CurrentTag{figure}% + \@defaultoptions + \@savingargumentfalse + \def\top{}% + \def\bot{\@@bottrue}% + \def\mid{\@@midtrue}% + \def\caption##1{\def\@caption{\ulap{\bigskip##1\smallskip}}}% + \def\fixed{\@fixedtrue}% + \def\scol{\@figurescol}% + \def\ecol{\@figureecol}% + \@figurepage=\pageno + \@figurescol=1 + \@figureecol=\numcols + \def\page{% + \@ignoreall{\space}% + {\@ignoreone{=}% + {\@ignoreall{\space}% + {\@checknexttoken{+}{\@ignoreone{+}{\advance\@figurepage by}}% + {\@figurepage=}% + }% + }% + }% + }% + \@checkoptions} + +\def\@beginfigure{% + \if@fixed + \global\ThisIsFirstPagetrue + \setbox\T@stBox=\vbox\bgroup \hsize\pagewd + \else + \if@@mid\midinsert\else\if@@bot\botinsert\else\topinsert\fi\fi + \fi + } + +\def\endfigure{% + \@caption + \if@fixed + \egroup + \if@allowspanningfigs + \ifnum\@figurepage>\pageno + \immediate\write\sixt@@n{^^J + Setting multiple column figures currently not allowed on pages^^J + other than the first of each article. Check your source file.^^J}% + \else + \if@@bot + \ifdim \botlgt=\z@ \global\botlgt=\ht\T@stBox \resetpagelgt \fi + \global\setbox\firstf@ot=\vbox to \botlgt{\box\T@stBox \vfil}% + \global\setbox\firstf@@t=\vbox to \botlgt{\vfil}% + \gdef\firstfoot{\ifnum \xcol=2 \copy\firstf@ot + \else \copy\firstf@@t \fi }% + \else + \ifdim \toplgt=\z@ \global\toplgt=\ht\T@stBox \resetpagelgt \fi +% assume that \firsth@ad ends with glue, hence no \dp + \global\setbox\firsth@ad=\vbox to \toplgt{\box\T@stBox \vfil}% + \global\setbox\firsth@@d=\vbox to \toplgt{\vfil}% + \gdef\firsthead{\ifnum \xcol=2 \box\firsth@ad + \else \copy\firsth@@d \fi }% + \fi + \fi + \else + \immediate\write\sixt@@n{^^J + Setting multiple column figures currently not allowed after^^J + article has begun.^^J}% + \fi + \else \endinsert + \fi + \endgroup + } + +\def\twocolfigure{% + \figure[\fixed]} + + + +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% ***** utilities ***** +% + + + +\def\linebreak{\unskip\break} % conflicts with LaTeX definition + +% Define a structure that will permit a list (using \obeylines) +% to be made into 2 columns, split by \vsplit, indented the +% normal \parindent + +\def\NormalizeBlockHeight{% + \TestCount=1 % \@ne + \TestDimen=\dimen0 \advance\TestDimen by-\topskip + \CutOneLine } +\def\CutOneLine{% + \advance\TestCount by 1 \advance\TestDimen by-\baselineskip + \ifdim\TestDimen < \baselineskip % \@ne + \def\result{% + \TestDimen=\baselineskip + \multiply\TestDimen by \TestCount + \advance\TestDimen by \topskip + \global\dimen0=\TestDimen }% + \else \def\result{\CutOneLine }\fi + \result } + +\def\twosplit{% + {\topskip=\baselineskip \splittopskip=\topskip + \setbox0=\copy\TestBox + \dimen0=\ht\TestBox + \NormalizeBlockHeight + \divide\dimen0 by 2 + \setbox\LeftHalf=\vsplit\TestBox to \dimen0 + \ifdim\ht\TestBox > \ht\LeftHalf + \advance\dimen0 by \baselineskip + \setbox\TestBox=\copy0 + \setbox\LeftHalf=\vsplit\TestBox to \dimen0 + \fi + \line{\kern\parindent\valign{##\vfil\cr + \unvbox\LeftHalf\cr\noalign{\hfil}\unvbox\TestBox\cr}}% + }% + \global\setbox0=\null} + +\newbox\LeftHalf +\newdimen\HalfWd +\HalfWd=\twocolcolwd +\advance\HalfWd by-\normalparindent +\divide\HalfWd by 2 + +{\obeylines +\gdef\twouplist #1{% + \topskip=\baselineskip \splittopskip=\topskip + \begingroup \parindent=\z@ \obeylines +% next line ends with intentional <cr> + \def\endtwouplist{ + \egroup % % end of \vbox + \endgroup % % end of \obeylines group + \twosplit }% + \global\setbox\TestBox=\vbox\bgroup\hsize=\HalfWd % + \indent\vrule height\topskip width \z@ #1}% +} + +% Tags for special formatting of editor's notes (See also TUGBOAT.COM) + +\def\Editor{\noindent To the Editor:\par} +\def\EdNote #1{% + \if #1[% + \ifvmode \smallskip\noindent \else \unskip\hskip1em \fi + [\thinspace\xEdNote\ignorespaces + \else \ifFirstPar \else \medskip\noindent \fi + \xEdNote #1\fi } + + + +% Draw a box around a whole page, e.g. announcements page; +% format must be \onenarrow or \onemedium, and start on a new page. + +\def\bigbox{\hrule \hbox\bgroup \vrule\kern 1pc + \vbox\bgroup \vskip 1pc } +\def\endbox{\endgraf \vskip 1pc \egroup \kern 1pc\vrule \egroup \hrule } + +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% ***** initialization ***** +% + + +\def\initializearticle{% + \let\thetitle=\relax + \authornumber=0 + \def\@signature{\@defaultsignature}% + \def\@authorlist{\@defaultauthorlist}% + \@allowspanningfigstrue + } + + +\makeother\@ + +% @ is prohibited in AMS-TeX, but should not be in TUGboat + + +\twocol +\maxcols=2 +\OverlaysinTeXtrue +\Trimmarksfalse +\PrelimDrafttrue +\initializearticle +\pageno=1001 % number of title page + +\StretchyTenPointSpacing +\StretchyNinePointSpacing +\StretchyEightPointSpacing + +\makevertverbchar + +\endinput + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% History of changes + +Version Date Changes +------- --------- --------------------------------------------------- +1.14c 14 Oct 96 lowered footnoterule by 3pt + +1.14b 14 Apr 94 added \interlinepenalty=10000 to avoid page breaks + in very long titles and author lists + +1.14a 8 Nov 93 removed extraneous " from header + +1.14 19 Feb 93 installed new TUG address and phone number in header + +1.13 13 Oct 92 Added \SMC in \ninepoint + +1.12 4 Jun 92 Added stretchability to \rightskip in ragged title + +1.11 8 Mar 92 Changed name of tugboat.com to tugboat.cmn to avoid + conflict with special meaning of .com with some + operating systems + Within verbatim, added \smallcode (from tugproc) + Added standard headers, prepared for archive installation + +1.10 21 Oct 91 Corrected font for \SMC in \tenpoint to \ninerm + (\ninesmc was used, but set to cmcsc10) + Changed \EdNote to detect \ifvmode when tag followed + by [ and to \smallskip and \noindent in that case + rather than performing \hskip1em + +1.09 11 Mar 91 Made \ an escape character in network addresses. + Added mechanism for saving \long arguments of + TUGboat macros (see uses of \@long). + +1.08 18 Oct 90 Incorporated redefinition of \sl within \bf + Changed an \input within \verbatim to \fileinput. + Added means of turning off punctuation after subheads. + Removed \nobreak after lists +1.07 8 Jun 90 Corrected definition of \newpage + +1.06 13 May 90 Added \@setupverbwrite to eliminate initial ^^M + as \verbatim writes to a file. + + Made strut on first line of footnote slightly taller + so as to separate footnotes. + + Reset \@verbinputfile and \@verbinputvar to \relax + to allow nesting + + Removed some \global assignments to \@argument and + 2 verbatim flags to allow nesting. + +1.05 23 Apr 90 Added "\setupverbatim" to \@firstverbchar so + that category switches are accomodated properly. + +1.04 7 Mar 90 Added \colsepwidth to allow for separation between + columns of lists + +1.03 1 Mar 90 Modified \@dosubhead and \@dosubsubhead to allow + stretchable space afterward + +1.02 25 Feb 90 Added \resetmaxcols to allow for automatic adjustment + of \maxcols; if overlays are done by the driver, + \maxcols needs to be set to an overall job maximum + at the start of the job. + + Added setting of \SecTitletrue to definition + of \sectitle. + + Added indicator of style file loaded (\tubstyle). + +1.01 17 Jan 90 Modified \@executetoend so that \@next would not + be clobbered by \csname @begin\CurrentTag\endcsname; + \@next changed to \@afterbegintag + + Added `\the' before \@otherSFD within definition of + \@shortparse + + added \@altdisplaystyle to definition of \colsep diff --git a/Master/texmf-dist/tex/plain/tugboat/tugproc.sty b/Master/texmf-dist/tex/plain/tugboat/tugproc.sty new file mode 100644 index 00000000000..56361b54664 --- /dev/null +++ b/Master/texmf-dist/tex/plain/tugboat/tugproc.sty @@ -0,0 +1,366 @@ +%% @texfile{ +%% filename="tugproc.sty", +%% version="1.11", +%% date="26-Jan-1994", +%% filetype="TeX macros for TUG Proceedings", +%% copyright="Copyright (C) TeX Users Group. +%% Copying of this file is authorized only if either: +%% (1) you make absolutely no changes to your copy, OR +%% (2) if you do make changes, you first rename it to some +%% other name.", +%% author="TeX Users Group", +%% address="TeX Users Group", +%% P. O. Box 869, +%% Santa Barbara, CA 93102-0869, +%% USA", +%% telephone="805-963-8358", +%% email="Internet: tug@tug.org or TUGboat@Math.AMS.org", +%% codetable="ISO/ASCII", +%% checksumtype="line count", +%% checksum="366", +%% keywords="tex users group, tugboat, proceedings, plain tex", +%% abstract="This file contains the plain-based macros +%% for Proceedings issues of TUGboat, the +%% Communications of the TeX Users Group." +%% } +%% ********************************************************* +%% +%% Use of this file also requires the following files: +%% TUGBOAT.STY (version 1.09+) +%% TUGBOAT.CMN (version 1.08+) (loaded by TUGBOAT.STY) +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\fileversion{v1.11} +\def\filedate{26 Jan 94} + +\message{File `TUGPROC.STY' \fileversion \space\space <\filedate>} + +% initialize year/issue-specific elements for standalone use +\def\mtgyear{1994} +\def\volyr{1994} +\def\volno{15} +\def\issno{3} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\input tugboat.sty + +\savecat\@ \makeletter\@ +\ifx\tugprocloaded@\undefined \let\tugprocloaded@\end +\else \restorecat\@ \xdef\startingpage{\number\pageno}\endinput \fi + +\newdimen\tubpagelgt +\tubpagelgt=\pagelgt \advance\tubpagelgt 1pc % for running feet + +% fonts + +\font\twelverm=cmr10 scaled 1200 +\font\twelvebf=cmbx10 scaled 1200 +\font\fourteenrm=cmr10 scaled 1440 +\font\fourteenit=cmti10 scaled 1440 +\font\fourteensl=cmsl10 scaled 1440 + +\def\twelvepoint{% + \normalbaselineskip=14pt + \def\rm{\fam\z@\twelverm}% + \textfont\z@=\twelverm + \def\bf{\fam\bffam\twelvebf}% + \textfont\bffam=\twelvebf + \normalbaselines \rm} + +\def\fourteenpoint{% + \normalbaselineskip=18pt + \def\rm{\fam\z@\fourteenrm}% + \textfont\z@=\fourteenrm + \def\it{\fam\itfam\fourteenit}% + \textfont\itfam=\fourteenit + \def\sl{\fam\slfam\fourteensl}% + \textfont\slfam=\fourteensl + \normalbaselines \rm} + +\def\AUTHORfont{\twelvepoint\rm} +\def\HEADfont{\twelvepoint\bf} +\def\TITLEfont{\fourteenpoint\rm} +\def\addressfont{\ninepoint\rm} +\def\netaddrfont{\ninepoint\tt} + +\def\br{\unskip\hfil\break} % version for titles +\def\degrade{\def\br{\unskip\space\ignorespaces}% + \let\\\br} % in running heads. + +% running heads & feet +%\newcount\startingpage % Number of first page of article +\newif\ifpreprint \preprinttrue +\def\preprint{\preprinttrue + \ifExtrAbs\breaklines\fi} % (*) +\newif\ifproof \prooffalse \let\filename\relax +\def\Proof{\prooftrue\immediate\write16{File name?} + \immediate\read16 to\filename} +\def\stamp{\ifproof{\tt \filename}\quad\Now\else\space\fi} +\let\midrtitle=\null +\def\rtitlex{% + \ifodd\pageno\degrade\rhtitle\else\rhauthor\fi} +\def\rtitle{% + \hbox to \pagewd{% + \tenpoint + \makestrut[10pt;\z@]% + \ifnum\the\pageno=\startingpage\hfill\stamp\else + \ifodd\pageno + \stamp\hfill\rtitlex + \else + \rtitlex\hfill\stamp + \fi\fi + }% + } + +\ifx\startingpage\undefined \def\startingpage{1001}\fi +\pageno=\startingpage +\def\rfoot{% + \hbox to \pagewd{% + \tenpoint + \makestrut[\z@;0.5pc]% + \ifpreprint + \ifodd\pageno + \pfoottext\hfil\Now\hfil$^.$\number\pageno + \else + \number\pageno$^.$\hfil\Now\hfil\pfoottext + \fi + \else + \ifodd\pageno + \rfoottext\hfil\number\pageno + \else + \number\pageno\hfil\rfoottext + \fi + \fi + }% + } + +\v@lx % normalize publication info for footer +\def\pfoottext{{\smc Preprint}: \mtgyear{} \TUG{} Annual Meeting} +\def\rfoottext{\tenrm\TUB, \volx\Dash + {Proceedings of the \volyr{} Annual Meeting}} + +% midpage redone to align running feet. +\def\midpage#1{% + \vbox{ + \basezero + \hrule height\z@ depth\z@ width\p@ + \ifTrimmarks + \vskip-1in % default offset for laser printers + % this puts top trim at edge of paper + \vbox to \trimlgt \bgroup + \topregister + \vskip \headmargin + \else + \vskip-\rheadlgt % this puts runhead above default offset + \fi + \dlap{\vbox to\tubpagelgt{\vfil + \ifnum\xcol=\numcols \runfoot \else \vbox to \rfootlgt{}\fi}} + \vbox to \pagelgt{ + \ifnum\xcol=\numcols \runhead \else \vbox to \rheadlgt{}\fi + \ifThisIsFirstPage \firsthead \fi + \hbox to \pagewd{#1} % \vsize applied in \pagebody + \ifThisIsFirstPage \firstfoot \fi + \vfil % if no depth, avoid underfull box +% \ifnum\xcol=\numcols \runfoot \else \vbox to \rfootlgt{}\fi + } + \ifTrimmarks \vfill \botregister \egroup \fi + }} + +% *************************************************** +% Bibliography +\def\Hang{1em} +\def\entry #1{\noindent\frenchspacing\hangindent\Hang #1} + +% Appendix +\def\appendix #1\endappendix{\newpage\onecol\centerline{\HEADfont #1}} + +% Box for deadlines: +\newbox\textbox % \twocolcolwd=18.75pc [cf. tugboat.sty] +\long\def\boxit #1{\vbox{\hrule\hbox{\vrule\kern3pt + \vbox{\kern3pt\vskip 4pt#1\vskip 4pt\kern3pt}\kern3pt\vrule}\hrule}} +\long\def\boxedlist #1{$$\boxit{\setbox\textbox=\vbox{\hsize 18pc + \strut{#1}\strut}\box\textbox}$$} % TeXbook, 94 & 223 (exer 21.3) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% top matter +\def\endtitle{% + \global\toks@=\expandafter{\the\@argument}% + \endgroup + \edef\thetitle{\ignorespaces\the\toks@\unskip}% + \let\rhtitle\thetitle + } + % If your title is too long for the running head, + % use this to construct a shorter version: +\def\shorttitle{% + \begingroup + \def\CurrentTag{shorttitle}% + \@defaultoptions + \@savingargumenttrue + \@checkoptions} + +\def\endshorttitle{% + \global\toks@=\expandafter{\the\@argument}% + \endgroup + \edef\rhtitle{\ignorespaces\the\toks@\unskip}% + } + +\def\rhauthor{\@defaultauthorlist} + % Use the following for running heads if more than + % one author or author's name is too long to fit: +\def\shortauthor{% + \begingroup + \def\CurrentTag{shortauthor}% + \@defaultoptions + \@savingargumenttrue + \@checkoptions} + +\def\endshortauthor{% + \global\toks@=\expandafter{\the\@argument}% + \endgroup + \edef\rhauthor{\ignorespaces\the\toks@\unskip}% + } + +%\long\def\Abstract #1\endAbstract{\long\def\@abstract{#1}} +\def\abstract{\@abstract[\longargument]} +\def\@abstract{% + \begingroup + \def\CurrentTag{abstract}% + \@defaultoptions + \@savingargumenttrue + \@checkoptions} + +\def\endabstract{% + \global\toks@=\expandafter{\the\@argument}% + \endgroup + \edef\theabstract{\ignorespaces\the\toks@\unskip}% + } + +\newif\ifExtrAbs \ExtrAbsfalse % Extract abstract from paper +\def\breaklines{\begingroup\catcode`\^^M=\active\newlinechar=`\^^M} +\def\endbreaklines{\endgroup} + +\def\prefnote{\@prefnote[\longargument]} +\def\@prefnote{% + \begingroup + \def\CurrentTag{prefnote}% + \@defaultoptions + \@savingargumenttrue + \@checkoptions} + +\def\endprefnote{% + \global\toks@=\expandafter{\the\@argument}% + \endgroup + \edef\theprefnote{\ignorespaces\the\toks@\unskip}% + } + +\let\theprefnote\relax + +\def\@defaultsignature{% + \count@=0 + \loop + \ifnum\count@<\authornumber + \vskip20pt + \advance\count@ by \@ne + \noindent{\AUTHORfont\theauthor{\number\count@}}\endgraf + \noindent{\addressfont\theaddress{\number\count@}}\endgraf + \noindent{\netaddrfont\thenetaddress{\number\count@}}\endgraf + \repeat + } + +\newbox\startbox % \newdimen\startheight +\def\article{% \ifExtrAbs\endbreaklines\fi % (*) + \setbox\startbox=\hbox to\colwd + {\hbox to\pagewd{\vbox{ + \hsize\pagewd\raggedright\advance\rightskip0pt plus 1fil\tenpoint\rm + \let\\\break + \noindent{\TITLEfont\thetitle\endgraf}% + \@defaultsignature + \ifx\theprefnote\relax\else + \vskip 20pt + \hbox to \pagewd{\hfil\vbox{\hsize 0.6\pagewd + \rightskip\z@skip \parfillskip0pt plus 1fil \spaceskip\z@skip + \noindent{\bf Author's Note: }\ignorespaces\theprefnote\par}\hfil} + \fi + \vskip 20pt + \hbox to \pagewd{\hfil\vbox{\hsize 0.75\pagewd + \rightskip\z@skip \parfillskip0pt plus 1fil \spaceskip\z@skip + \centerline{\bf Abstract}\vskip 5pt + \noindent\theabstract\par}\hfil} + \vskip 1pc}}\hss} + \twocolfigure\box\startbox\endfigure + \ifExtrAbs % (*) + \immediate\write\titleabs{\string\TITLE\string\bf\space + \rhauthor:\ \string\rm \rhtitle;;} + \immediate\write\titleabs{\space} + \immediate\write\titleabs{\string\ABS\string\bf\space + Abstract.\ \theabstract;;} + \immediate\write\titleabs{\space} + \immediate\write\titleabs{\string\endinput} + \immediate\closeout\titleabs \endbreaklines + \fi % (*) +} + +% \head (This writes over a definition in tugboat.sty) +\def\@domainhead{% + \if@removeprewhite\else\vskip\baselineskip\fi + \noindent{\HEADfont\baselineskip15pt % larger type than usual + \raggedright\bf\ignorespaces\the\@argument\unskip\endgraf}% + \if@removepostwhite % usually we want the white space + \else\kern0.5\baselineskip\fi + \nobreak + \gdef\@next{% + \if@allowindent\def\@next{}% usually we don't want to indent here + \else\def\@next{\DeleteOptionalSpacesandPars{\noindent\ignorespaces}}\fi + \@next + }% + } + +\restorecat\@ + +% \Trimmarkstrue % for final copy +% \overfullrule=0pt + +\endinput + +%% ********************************************************* + +Change History +-------------- +1.11 changed TUG address in header to Santa Barbara + parameterized dates, etc., in running footers + initialized them at top of file instead of in footer text + +1.10 changed \tenrm to \tenpoint in definitions of \rtitle and \rfoot + so that \sl will be properly defined if used in that context + +1.09 removed \smallcode definition; it is now in tugboat.sty + increased width of abstract from 60-75% of text width + added standard headers, prepared for archive installation + +1.08 changed \start to \startingpage + added definition of \startingpage at top of file so running heads + will be empty on first page of article + +1.07 removed \Pageno + added check for previous input + altered \\ in running heads + +Previous: + +%%% TUGPROC.sty 11-mar-90 (*) 15-mar-90 30-mar-90 10-apr-90 +%%% 26-jun-90 [changed running feet, page numbers, \start] +%%% 28-jun-90 [added \stamp, \ifproof] 29-jun-90 [\Proof] +%%% TUGPROC.sty 03-feb-90 (renamed 13-feb-90) 20-feb-90 +%%% +%%% Supplementary header file for TUG Proceedings volume +%%% for use with plain.tex (under revision still) +%%% +%%% (*) This version writes the title and abstract into +%%% a file, for use in preparing the Title-Abstract-Bio +%%% section in the program. Author-Title and Abstract are +%%% written into a file as one-liners; if these lines are +%%% too long, they should be reformatted manually before +%%% the file is \input. diff --git a/Master/texmf-dist/tex/plain/typespec/TypeSp01.tex b/Master/texmf-dist/tex/plain/typespec/TypeSp01.tex new file mode 100644 index 00000000000..07b232cc6a6 --- /dev/null +++ b/Master/texmf-dist/tex/plain/typespec/TypeSp01.tex @@ -0,0 +1,344 @@ +%%% Stephen Moye +%%% Stephen_Moye@brown.edu +%%% Brown University +%%% Graphic Services + +% Much of the math in this example is simple modular arithmetic, +% and gets around the fact that \TeX can only do integer math. +% +% This sort of typesetting project is probably better suited to +% TrueType or PostScript typefaces. + +\newtoks\dspfont +%%% Fill in the \TeX name of the font here: +\dspfont={ACaslonI} + +%%% Fill in the name of the typeface as you want it at the top of the page +\def\fontname{Adobe Caslon Italic} + +%%% The following is for notes in the comments at the bottom +%%% of the page following the type stats. +%%% Just leave it empty if you have nothing to say... +\def\comment{Carol Twombly} + +%\hsize7.5in \hoffset-.5in +\parindent0pt +\nopagenumbers +\voffset-.5in +\advance\vsize by 1in + +\font\text=\the\dspfont\space at 10pt +\font\tiny=\the\dspfont\space at 8pt +\font\name=\the\dspfont\space at 24pt + +\newtoks\ntext +\newtoks\pantext +\newtoks\loremtext +% +\newbox\testbox +% +\newdimen\bigger +\newdimen\dspsize +\newdimen\dspsizeincr +\newdimen\habcwd +\newdimen\ctextsz +\newdimen\leading +\newdimen\xheight +\newdimen\ascheight +\newdimen\kernone +\newdimen\kerntwo +\newdimen\adjust \adjust0pt +\newdimen\dist +\newdimen\scratchdim +% +\newcount\dsplineno +\newcount\picawd +\newcount\pointwd +\newcount\spconv +\newcount\measure +\newcount\divisor +\newcount\scratch +\newcount\sscratch +\newcount\xascrnum +\newcount\intgp +\newcount\fracp +\newcount\scppt \scppt=65536 + +\ntext={Typography may be defined as both +an art and a craft. It is an art in that what it does, it does for its +own sake, according to its own internal sense of what is beautiful and +right. It is a craft in that what it does, it does for a purpose +outside itself: it provides a means of storing, shaping and conveying +information. Typography is, therefore, a selfless art -- a +contradiction in terms, perhaps -- and is at its best when it is least +perceived to be doing anything, indeed when there is no active +awareness of perceiving it, directly, at all, but rather perceiving, +through it, the knowledge which animates the type on the page. Quality +in typography results from an effortless perfection of conception and +execution in the creation of a balance between beauty \& utility: +compromising neither, calling attention to neither, yet achieving +both.\thinspace\nobreak\leaders\hrule\hfill\null\par} + +%%% The following pangrams were collected by David Lemon of Adobe Systems, Inc. +%%% This is just a small sample from the entire collection. +\pantext={Brick quiz whangs jumpy veldt fox. +Nymphs vex, beg quick fjord waltz. +Quick wafting zephyrs vex bold Jim. +West quickly gave Bert handsome prizes for six juicy plums. +Freight to me sixty dozen quart jars and twelve black pans. +My help squeezed back in again and joined the weavers after six. +Turgid saxophones blew over Mick's jazzy quiff. +Five wine experts jokingly quizzed sample chablis. +My grandfather picks up quartz and valuable onyx jewels. +Mix Zapf with Veljovic and get quirky Beziers. +All questions asked by five watch experts amazed the judge. +Back in June we delivered oxygen equipment of the same size. +We have just quoted on nine dozen boxes of grey lamp wicks. +A large fawn jumped quickly over white zinc boxes. +The exodus of jazzy pigeons is craved by squeamish walkers.\thinspace\nobreak\leaders\hrule\hfill\hbox{}\par} + +\loremtext={Lorem ipsum +dolor sit amet, consectetuer adipiscing elit, sed diam +nonummy nibh eusi\-mod tincidunt ut laor\-eet dolore magna +ali\-quam erat volutpat. Ut wisi enim ad minim veniam, quis +nostrud exerci tation ullamcorper suscipit la\-bortis nisl +ut ali\-quip exea commodo consequat. +Quousque tandem abutere, Catilina, patientia nostra? Quamdiu nos etiam furor iste tuus eludet? +quem ad finem sese effrenata jactibit audicia? nihilne te nocturnum pr\ae sidium palatii, nihil +urbis vigil\ae . +Lorem ipsum +dolor sit amet, consectetuer adipiscing elit, sed diam +nonummy nibh eusi\-mod tincidunt ut laor\-eet dolore magna +ali\-quam erat volutpat. Ut wisi enim ad minim veniam, quis +nostrud exerci tation ullamcorper suscipit la\-bortis nisl +ut ali\-quip exea commodo consequat. +Quousque tandem abutere, Catilina, patientia nostra? Quamdiu nos etiam furor iste tuus eludet? +quem ad finem sese effrenata jactibit audicia? +\thinspace\nobreak\leaders\hrule\hfill\null\par} + +\def\abc{abcdefghijklmnopqrstuvwxyz} +\def\habc{\abc\abc abcdefghijklm} +\def\dabc{AGQMstaefgpy1234?!\&} +\def\ucabc{ABCDEFGHIJKLMNOPQRSTUVWXYZ} +\def\freqabc{\text zjqx% + kkvv% + bbbbppppyyyywwwwgggg% + mmmmmmffffffccccccuuuuuu% + lllllllldddddddd% + hhhhhhhhhhhhrrrrrrrrrrrrssssssssssss% + ooooooooooooooiiiiiiiiiiiiiinnnnnnnnnnnnnn% + aaaaaaaaaaaaaaaatttttttttttttttttt% + eeeeeeeeeeeeeeeeeeeeeeee}% 204 chars + +\def\ast{*} \def\per{.} + +%%% Convert from TeX's bulky 4-decimal point measurements to 1 +\def\prettypt#1{\dist=#1 +\multiply\dist10 +\scratch=\number\dist +\divide\scratch\scppt +\intgp=\scratch \divide\intgp10 +\sscratch=\intgp +\multiply\sscratch10 \advance\scratch-\sscratch +\fracp=\scratch +\hbox{\the\intgp.\the\fracp}pt\ } + +%%% Converts points to inches. +\def\cvptin#1{\dist=#1 +\multiply\dist by 10 +\scratch=\number\dist +\divide\scratch\scppt +\multiply\scratch100 +\fracp=\scratch +\divide\scratch72270 +\intgp=\scratch +\multiply\scratch72270 +\advance\fracp-\scratch +\multiply\fracp10 +\divide\fracp7227 +\hbox{\the\intgp.\ifnum\fracp<10 0\the\fracp \else\the\fracp\fi in}} + +%%% Type factor = ([Type size] * [# of characters in a sample])/(linear length of sample) +%%% Based on {\it Brown's Index}, Bruce Brown, Greenwood Publishing, Great Britain 1983 +\def\typefact{% +\dist=10pt +\spconv=\number\dist +\multiply\spconv by 12 +\multiply\spconv by 204 +\setbox1=\hbox{\text\freqabc}% +\divisor=\number\wd1 +\divide\divisor by 100 +\divide\spconv by \divisor +\scratch=\spconv + \divide\scratch100 + \divisor=\scratch + \multiply \scratch100 + \advance\spconv-\scratch + \hbox{\number\divisor.\ifnum\spconv<10 0\the\spconv \else \the\spconv\fi}} + +\setbox0=\hbox{\tiny 0} +\kernone=.5\wd0 \kerntwo=\wd0 +\def\k{\kern-\kernone} +\def\kk{\kern-\kerntwo} + +\def\endline{\hbox to 0pt{\vrule width1pt height\baselineskip% + depth.25\baselineskip\hss}} + +\def\iline{\hbox to 0pt{\vrule width.25pt height\baselineskip\hss}} +\def\hline{\hbox to 0pt{\vrule width.25pt height.75\baselineskip\hss}} +\def\qline{\hbox to 0pt{\vrule width.25pt height.55\baselineskip\hss}} +\def\eline{\hbox to 0pt{\vrule width.25pt height.35\baselineskip\hss}} +\def\sline{\hbox to 0pt{\vrule width.25pt height.15\baselineskip\hss}} + +\def\itick{\hbox to 1in{\iline\hfill}} +\def\htick{\hbox to .5in{\hline\hfill}} +\def\qtick{\hbox to .25in{\qline\hfill}} +\def\etick{\hbox to .125in{\eline\hfill}} +\def\stick{\hbox to .0625in{\sline\hfill}} + +\def\dhtick{\hbox to .5in{\hline\hfill}} +\def\dttick{\hbox to .1in{\qline\hfill}} +\def\dftick{\hbox to .05in{\eline\hfill}} + +\def\pctick{\hbox to 1pc{\iline\hss}} +\def\hpctick{\hbox to .5pc{\qline\hss}} + +\def\druler#1 {\hbox to #1{\endline\hfill\endline} +\kern-\baselineskip \bigger=#1 \advance\bigger by .5in +\hbox to #1{\hrulefill}\kern-\baselineskip +\hbox to \bigger{\leaders\itick\hfill}\kern-\baselineskip +\hbox to #1{\leaders\dhtick\hfill}\kern-\baselineskip +\hbox to #1{\leaders\dttick\hfill}\kern-\baselineskip +\hbox to #1{\leaders\dftick\hfill}} + +\def\pcruler#1 {\hbox to #1{\endline\hfill\endline} +\kern-\baselineskip +\hbox to #1{\hrulefill}\kern-\baselineskip +\hbox to #1{\leaders\pctick\hfill}\kern-\baselineskip +\hbox to #1{\leaders\hpctick\hfill}} + +%%% Calculates the largest display typesize to fit \hsize +%%% First typeset it very small (.5pt) then calculate a +%%% scale factor to get it to fit to \hsize +\font\dsp=\the\dspfont\space at .1pt +\setbox0=\hbox{\dsp \dabc}% +\dspsize=\hsize +\scratch=\dspsize \multiply\scratch10 \divisor=\wd0 +\divide\scratch by \divisor +\dspsize=\scratch pt \divide\dspsize by 100 + +%%% Calculates the increment such that smallest display size is 12pt +\dspsizeincr=\dspsize \advance\dspsizeincr by -12pt +\divide\dspsizeincr by 5 \dsplineno6 + +\kern-1\baselineskip + +{\name \fontname\par} +\hbox to \hsize{\hrulefill}\kern-.5\baselineskip + +%%% Display Type +\bgroup +\loop\font\dsp=\the\dspfont\space at \dspsize \dsp \baselineskip1em + \hbox to\hsize{\dabc\hfill\hss\rlap{\tiny\enskip\prettypt{\the\dspsize}}}% + \vskip.075in\relax + \ifnum\dsplineno>1 \global\advance\dsplineno by-1\relax + \advance\dspsize by -\dspsizeincr \font\dsp=\the\dspfont\space at \dspsize\repeat +\egroup + +\setbox0=\hbox{\text x} +\xheight=\ht0 + +%%% Leading calculations +\setbox0=\hbox{\text Ilpgy} +\ascheight=\ht0 +\leading=\ht0 +\adjust=\xheight \advance\adjust-.5\leading +\advance\leading\dp0 +\leading=1.175\leading +\ifdim\dp0<.05\ht0 \advance\adjust.5\xheight\fi +\advance\leading by \adjust +\baselineskip\leading + +%%% Calculates ratio of x-height to ascender height +\dimen0=\the\fontdimen5\text +\xascrnum=\dimen0% +\divisor=\number\ascheight +\multiply\xascrnum by 100\relax +\divide\xascrnum by\ascheight + +%%% Calculates width of 2.5 lc alphabets in picas and points +\setbox0=\hbox{\text\habc} \habcwd=\wd0 +\def\showhabcwd{% +\scratchdim=\habcwd \scratchdim=\scratchdim +\scratch=\number\scratchdim +\divide\scratch\scppt \sscratch=\scratch +\divide\scratch12 +\picawd=\scratch +\multiply\scratch by 12 +\advance\sscratch-\scratch +\pointwd=\sscratch +\hbox{\the\picawd pc\the\pointwd}} + +%%% Calculates the largest typesize to fit 70 characters to 4.5in. +%%% First typeset it very small (.5pt) then calculate a +%%% scale factor to get it to fit to 4.5in. +\font\calcfont=\the\dspfont\space at .5pt +\setbox0=\hbox{\calcfont \habc}% +\dspsize=4.5in +\scratch=\dspsize \multiply\scratch10 \divisor=\wd0 +\divide\scratch by \divisor +\ctextsz=\scratch pt \divide\ctextsz by 20 + +\vskip.2in + +\text + +\vbox{\baselineskip1.2\baselineskip% +\druler{6.51in} +% +{\hsize6in \settabs 6\columns\tiny +\+Decimal Inches&\k 1&\k 2&\k 3&\k 4&\k 5&\k 6\cr} +% +\text 1234567890\$\%\&?(``\thinspace'')\par +\habc\par +\uppercase\expandafter{\abc}\vskip.5em +% +\pcruler{38pc} +% +{\hsize35pc \settabs 7\columns\tiny +\+Picas&\k 5&\kk 10&\kk 15&\kk 20&\kk 25&\kk 30&\kk 35\cr}\vfill} + +\vskip.25in + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% +%%% Change the text sample here. +%%% The choices are \ntext, \pantext and \loremtext +%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\vbox{% +\hsize\habcwd \baselineskip\leading \the\ntext} +\vfill + +\hbox to \hsize{\hrulefill} +\smallskip +\vbox{% +\emergencystretch1em\tiny \hsize.8\habcwd \baselineskip.9\leading +% +\halign to \hsize{#\hfil\tabskip0pt plus 1fill&\hfil#\tabskip0pt\cr +Type stats:\cr +\noalign{\smallskip\hrule\smallskip} +Text sample (10pt) leading&\prettypt{\the\leading}\unskip\cr +\noalign{\smallskip\hrule\smallskip} +Width of 2.5 lowercase 10pt alphabets&\showhabcwd\ or \cvptin{\the\habcwd}\unskip\cr +\noalign{\smallskip\hrule\smallskip} +Type size required for a 4.5in measure&\prettypt{\the\ctextsz}\unskip\cr +\noalign{\smallskip\hrule\smallskip} +Ratio of x-height to ascender height&\hbox{0.\the\xascrnum}\cr +\noalign{\smallskip\hrule\smallskip} +Typefactor&\typefact\cr +\noalign{\smallskip\hrule}} +\smallskip +\comment}% + +\eject\end
\ No newline at end of file diff --git a/Master/texmf-dist/tex/plain/typespec/TypeSp02.tex b/Master/texmf-dist/tex/plain/typespec/TypeSp02.tex new file mode 100644 index 00000000000..ceb1cd1bbdb --- /dev/null +++ b/Master/texmf-dist/tex/plain/typespec/TypeSp02.tex @@ -0,0 +1,345 @@ +%%% Stephen Moye +%%% Stephen_Moye@brown.edu +%%% Brown University +%%% Graphic Services + +% Much of the math in this example is simple modular arithmetic, +% and gets around the fact that \TeX can only do integer math. +% +% This sort of typesetting project is probably better suited to +% TrueType or PostScript typefaces. + +\newtoks\dspfont +%%% Fill in the \TeX name of the font here: +\dspfont={ACaslon} + +%%% Fill in the name of the typeface as you want it at the top of the page +\def\fontname{Adobe Caslon} + +%%% The following is for notes in the comments at the bottom +%%% of the page following the type stats. +%%% Just leave it empty if you have nothing to say... +\def\comment{Drawn by Carol Twombly.} + +%\hsize7.5in \hoffset-.5in +\parindent0pt +\nopagenumbers +\voffset-.5in +\advance\vsize by 1in + +\font\text=\the\dspfont\space at 10pt +\font\tiny=\the\dspfont\space at 8pt +\font\name=\the\dspfont\space at 24pt + +\newtoks\ntext +\newtoks\pantext +\newtoks\loremtext +% +\newbox\testbox +% +\newdimen\bigger +\newdimen\dspsize +\newdimen\dspsizeincr +\newdimen\habcwd +\newdimen\ctextsz +\newdimen\leading +\newdimen\xheight +\newdimen\ascheight +\newdimen\kernone +\newdimen\kerntwo +\newdimen\adjust \adjust0pt +\newdimen\dist +\newdimen\scratchdim +% +\newcount\dsplineno +\newcount\picawd +\newcount\pointwd +\newcount\spconv +\newcount\measure +\newcount\divisor +\newcount\scratch +\newcount\sscratch +\newcount\xascrnum +\newcount\intgp +\newcount\fracp +\newcount\scppt \scppt=65536 + +\ntext={Typography may be defined as both +an art and a craft. It is an art in that what it does, it does for its +own sake, according to its own internal sense of what is beautiful and +right. It is a craft in that what it does, it does for a purpose +outside itself: it provides a means of storing, shaping and conveying +information. Typography is, therefore, a selfless art -- a +contradiction in terms, perhaps -- and is at its best when it is least +perceived to be doing anything, indeed when there is no active +awareness of perceiving it, directly, at all, but rather perceiving, +through it, the knowledge which animates the type on the page. Quality +in typography results from an effortless perfection of conception and +execution in the creation of a balance between beauty \& utility: +compromising neither, calling attention to neither, yet achieving +both.\thinspace\nobreak\leaders\hrule\hfill\null\par} + +%%% The following pangrams were collected by David Lemon of Adobe Systems, Inc. +%%% This is just a small sample from the entire collection. +\pantext={Brick quiz whangs jumpy veldt fox. +Nymphs vex, beg quick fjord waltz. +Quick wafting zephyrs vex bold Jim. +West quickly gave Bert handsome prizes for six juicy plums. +Freight to me sixty dozen quart jars and twelve black pans. +My help squeezed back in again and joined the weavers after six. +Turgid saxophones blew over Mick's jazzy quiff. +Five wine experts jokingly quizzed sample chablis. +My grandfather picks up quartz and valuable onyx jewels. +Mix Zapf with Veljovic and get quirky Beziers. +All questions asked by five watch experts amazed the judge. +Back in June we delivered oxygen equipment of the same size. +We have just quoted on nine dozen boxes of grey lamp wicks. +A large fawn jumped quickly over white zinc boxes. +The exodus of jazzy pigeons is craved by squeamish walkers.\thinspace\nobreak\leaders\hrule\hfill\hbox{}\par} + +\loremtext={Lorem ipsum +dolor sit amet, consectetuer adipiscing elit, sed diam +nonummy nibh eusi\-mod tincidunt ut laor\-eet dolore magna +ali\-quam erat volutpat. Ut wisi enim ad minim veniam, quis +nostrud exerci tation ullamcorper suscipit la\-bortis nisl +ut ali\-quip exea commodo consequat. +Quousque tandem abutere, Catilina, patientia nostra? Quamdiu nos etiam furor iste tuus eludet? +quem ad finem sese effrenata jactibit audicia? nihilne te nocturnum pr\ae sidium palatii, nihil +urbis vigil\ae . +Lorem ipsum +dolor sit amet, consectetuer adipiscing elit, sed diam +nonummy nibh eusi\-mod tincidunt ut laor\-eet dolore magna +ali\-quam erat volutpat. Ut wisi enim ad minim veniam, quis +nostrud exerci tation ullamcorper suscipit la\-bortis nisl +ut ali\-quip exea commodo consequat. +Quousque tandem abutere, Catilina, patientia nostra? Quamdiu nos etiam furor iste tuus eludet? +quem ad finem sese effrenata jactibit audicia? nihilne te nocturnum pr\ae sidium palatii, nihil +urbis vigil\ae .\thinspace\nobreak\leaders\hrule\hfill\null\par} + +\def\abc{abcdefghijklmnopqrstuvwxyz} +\def\habc{\abc\abc abcdefghijklm} +\def\dabc{AGQMstaefgpy1234?!\&} +\def\ucabc{ABCDEFGHIJKLMNOPQRSTUVWXYZ} +\def\buclcabc{AaBbCcDdEeFfGgHhIiJjKkLlMmNnOo} +\def\euclcabc{PpQqRrSsTtUuVvWwXxYyZz?\&} +\def\freqabc{\text zjqx% + kkvv% + bbbbppppyyyywwwwgggg% + mmmmmmffffffccccccuuuuuu% + lllllllldddddddd% + hhhhhhhhhhhhrrrrrrrrrrrrssssssssssss% + ooooooooooooooiiiiiiiiiiiiiinnnnnnnnnnnnnn% + aaaaaaaaaaaaaaaatttttttttttttttttt% + eeeeeeeeeeeeeeeeeeeeeeee}% 204 chars +\def\ast{*} \def\per{.} + +%%% Convert from TeX's bulky 4-decimal point measurements to 1 +\def\prettypt#1{\dist=#1 +\multiply\dist10 +\scratch=\number\dist +\divide\scratch\scppt +\intgp=\scratch \divide\intgp10 +\sscratch=\intgp +\multiply\sscratch10 \advance\scratch-\sscratch +\fracp=\scratch +\hbox{\the\intgp.\the\fracp}pt\ } + +\def\cvptin#1{\dist=#1 +\multiply\dist by 10 +\scratch=\number\dist +\divide\scratch\scppt +\multiply\scratch100 +\fracp=\scratch +\divide\scratch72270 +\intgp=\scratch +\multiply\scratch72270 +\advance\fracp-\scratch +\multiply\fracp10 +\divide\fracp7227 +\hbox{\the\intgp.\ifnum\fracp<10 0\the\fracp \else\the\fracp\fi in}} + +%%% Type factor = ([Type size] * [# of characters in a sample])/(linear length of sample) +%%% Based on {\it Brown's Index}, Bruce Brown, Greenwood Publishing, Great Britain 1983 +\def\typefact{% +\dist=10pt +\spconv=\number\dist +\multiply\spconv by 12 +\multiply\spconv by 204 +\setbox1=\hbox{\text\freqabc}% +\divisor=\number\wd1 +\divide\divisor by 100 +\divide\spconv by \divisor +\scratch=\spconv + \divide\scratch100 + \divisor=\scratch + \multiply \scratch100 + \advance\spconv-\scratch + \hbox{\number\divisor.\ifnum\spconv<10 0\the\spconv \else \the\spconv\fi}} + +\setbox0=\hbox{\tiny 0} +\kernone=.5\wd0 \kerntwo=\wd0 +\def\k{\kern-\kernone} +\def\kk{\kern-\kerntwo} + +\def\endline{\hbox to 0pt{\vrule width1pt height\baselineskip% + depth.25\baselineskip\hss}} + +\def\iline{\hbox to 0pt{\vrule width.25pt height\baselineskip\hss}} +\def\hline{\hbox to 0pt{\vrule width.25pt height.75\baselineskip\hss}} +\def\qline{\hbox to 0pt{\vrule width.25pt height.55\baselineskip\hss}} +\def\eline{\hbox to 0pt{\vrule width.25pt height.35\baselineskip\hss}} +\def\sline{\hbox to 0pt{\vrule width.25pt height.15\baselineskip\hss}} + +\def\itick{\hbox to 1in{\iline\hfill}} +\def\htick{\hbox to .5in{\hline\hfill}} +\def\qtick{\hbox to .25in{\qline\hfill}} +\def\etick{\hbox to .125in{\eline\hfill}} +\def\stick{\hbox to .0625in{\sline\hfill}} + +\def\dhtick{\hbox to .5in{\hline\hfill}} +\def\dttick{\hbox to .1in{\qline\hfill}} +\def\dftick{\hbox to .05in{\eline\hfill}} + +\def\pctick{\hbox to 1pc{\iline\hss}} +\def\hpctick{\hbox to .5pc{\qline\hss}} + +\def\druler#1 {\hbox to #1{\endline\hfill\endline} +\kern-\baselineskip \bigger=#1 \advance\bigger by .5in +\hbox to #1{\hrulefill}\kern-\baselineskip +\hbox to \bigger{\leaders\itick\hfill}\kern-\baselineskip +\hbox to #1{\leaders\dhtick\hfill}\kern-\baselineskip +\hbox to #1{\leaders\dttick\hfill}\kern-\baselineskip +\hbox to #1{\leaders\dftick\hfill}} + +\def\pcruler#1 {\hbox to #1{\endline\hfill\endline} +\kern-\baselineskip +\hbox to #1{\hrulefill}\kern-\baselineskip +\hbox to #1{\leaders\pctick\hfill}\kern-\baselineskip +\hbox to #1{\leaders\hpctick\hfill}} + +%%% Calculates the largest display typesize to fit \hsize +%%% First typeset it very small (.5pt) then calculate a +%%% scale factor to get it to fit to \hsize +\font\dsp=\the\dspfont\space at .1pt +\setbox0=\hbox{\dsp \buclcabc}% +\dspsize=\hsize +\scratch=\dspsize \multiply\scratch10 \divisor=\wd0 +\divide\scratch by \divisor +\dspsize=\scratch pt \divide\dspsize by 100 + +%%% Calculates the increment such that smallest display size is 12pt +\dspsizeincr=\dspsize \advance\dspsizeincr by -12pt +\divide\dspsizeincr by 3 \dsplineno4 + +\kern-1\baselineskip + +{\name \fontname\par} +\hbox to \hsize{\hrulefill}\kern-.5\baselineskip + +%%% Display Type +\bgroup +\loop\font\dsp=\the\dspfont\space at \dspsize \dsp \baselineskip1.1em + \hbox to\hsize{\buclcabc\hfill\rlap{{\text\prettypt{\the\dspsize}}}}% + \hbox{\euclcabc}\vskip.075in + \ifnum\dsplineno>1 \global\advance\dsplineno by-1 + \advance\dspsize by -\dspsizeincr \font\dsp=\the\dspfont\space at \dspsize\repeat +\egroup + +\setbox0=\hbox{\text x} +\xheight=\ht0 + +%%% Leading calculations +\setbox0=\hbox{\text Ilpgy} +\ascheight=\ht0 +\leading=\ht0 +\adjust=\xheight \advance\adjust-.5\leading +\advance\leading\dp0 +\leading=1.175\leading +\ifdim\dp0<.05\ht0 \advance\adjust.5\xheight\fi +\advance\leading by \adjust +\baselineskip\leading + +%%% Calculates ratio of x-height to ascender height +\dimen0=\the\fontdimen5\text +\xascrnum=\dimen0% +\divisor=\number\ascheight +\multiply\xascrnum by 100\relax +\divide\xascrnum by\ascheight + +%%% Calculates width of 2.5 lc alphabets in picas and points +\setbox0=\hbox{\text\habc} \habcwd=\wd0 +\def\showhabcwd{% +\scratchdim=\habcwd \scratchdim=\scratchdim +\scratch=\number\scratchdim +\divide\scratch\scppt \sscratch=\scratch +\divide\scratch12 +\picawd=\scratch +\multiply\scratch by 12 +\advance\sscratch-\scratch +\pointwd=\sscratch +\hbox{\the\picawd pc\the\pointwd}} + +%%% Calculates the largest typesize to fit 70 characters to 4.5in. +%%% First typeset it very small (.5pt) then calculate a +%%% scale factor to get it to fit to 4.5in. +\font\calcfont=\the\dspfont\space at .5pt +\setbox0=\hbox{\calcfont \habc}% +\dspsize=4.5in +\scratch=\dspsize \multiply\scratch10 \divisor=\wd0 +\divide\scratch by \divisor +\ctextsz=\scratch pt \divide\ctextsz by 20 + +\vskip.2in + +\text + +\vbox{\baselineskip1.2\baselineskip% +\druler{6.51in} +% +{\hsize6in \settabs 6\columns\tiny +\+Decimal Inches&\k 1&\k 2&\k 3&\k 4&\k 5&\k 6\cr} +% +\text 1234567890\$\%\&?(``\thinspace'')\par +\habc\par +\uppercase\expandafter{\abc}\vskip.5em +% +\pcruler{38pc} +% +{\hsize35pc \settabs 7\columns\tiny +\+Picas&\k 5&\kk 10&\kk 15&\kk 20&\kk 25&\kk 30&\kk 35\cr}\vfill} + +\vskip.25in + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% +%%% Change the text sample here. +%%% The choices are \ntext, \pantext and \loremtext +%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\vbox{% +\hsize\habcwd \baselineskip\leading \the\pantext} + +\vfill + +\hbox to \hsize{\hrulefill} +\smallskip +\vbox{% +\emergencystretch1em\tiny \hsize.8\habcwd \baselineskip.9\leading +% +\halign to \hsize{#\hfil\tabskip0pt plus 1fill&\hfil#\tabskip0pt\cr +Type stats:\cr +\noalign{\smallskip\hrule\smallskip} +Text sample (10pt) leading&\prettypt{\the\leading}\unskip\cr +\noalign{\smallskip\hrule\smallskip} +Width of 2.5 lowercase 10pt alphabets&\showhabcwd\ or \cvptin{\the\habcwd}\unskip\cr +\noalign{\smallskip\hrule\smallskip} +Type size required for a 4.5in measure&\prettypt{\the\ctextsz}\unskip\cr +\noalign{\smallskip\hrule\smallskip} +Ratio of x-height to ascender height&\hbox{0.\the\xascrnum}\cr +\noalign{\smallskip\hrule\smallskip} +Typefactor&\typefact\cr +\noalign{\smallskip\hrule}} +\smallskip +\comment}% + +\eject\end
\ No newline at end of file diff --git a/Master/texmf-dist/tex/plain/typespec/TypeSp03.tex b/Master/texmf-dist/tex/plain/typespec/TypeSp03.tex new file mode 100644 index 00000000000..3fd2eedbc7a --- /dev/null +++ b/Master/texmf-dist/tex/plain/typespec/TypeSp03.tex @@ -0,0 +1,344 @@ +%%% Stephen Moye +%%% Stephen_Moye@brown.edu +%%% Brown University +%%% Graphic Services + +% Much of the math in this example is simple modular arithmetic, +% and gets around the fact that \TeX can only do integer math. +% +% This sort of typesetting project is probably better suited to +% TrueType or PostScript typefaces. + +\newtoks\dspfont +%%% Fill in the \TeX name of the font here: +\dspfont={cmr12} + +%%% Fill in the name of the typeface as you want it at the top of the page +\def\fontname{Computer Modern 12} + +%%% The following is for notes in the comments at the bottom +%%% of the page following the type stats. +%%% Just leave it empty if you have nothing to say... +\def\comment{Drawn by Donald Knuth.} + +%\hsize7.5in \hoffset-.5in +\parindent0pt +\nopagenumbers +\voffset-.5in +\advance\vsize by 1in + +\font\text=\the\dspfont\space at 10pt +\font\tiny=\the\dspfont\space at 8pt +\font\name=\the\dspfont\space at 24pt + +\newtoks\ntext +\newtoks\pantext +\newtoks\loremtext +% +\newbox\testbox +% +\newdimen\bigger +\newdimen\dspsize +\newdimen\dspsizeincr +\newdimen\habcwd +\newdimen\ctextsz +\newdimen\leading +\newdimen\xheight +\newdimen\ascheight +\newdimen\kernone +\newdimen\kerntwo +\newdimen\adjust \adjust0pt +\newdimen\dist +\newdimen\scratchdim +% +\newcount\dsplineno +\newcount\picawd +\newcount\pointwd +\newcount\spconv +\newcount\measure +\newcount\divisor +\newcount\scratch +\newcount\sscratch +\newcount\xascrnum +\newcount\intgp +\newcount\fracp +\newcount\scppt \scppt=65536 + +\ntext={Typography may be defined as both +an art and a craft. It is an art in that what it does, it does for its +own sake, according to its own internal sense of what is beautiful and +right. It is a craft in that what it does, it does for a purpose +outside itself: it provides a means of storing, shaping and conveying +information. Typography is, therefore, a selfless art -- a +contradiction in terms, perhaps -- and is at its best when it is least +perceived to be doing anything, indeed when there is no active +awareness of perceiving it, directly, at all, but rather perceiving, +through it, the knowledge which animates the type on the page. Quality +in typography results from an effortless perfection of conception and +execution in the creation of a balance between beauty \& utility: +compromising neither, calling attention to neither, yet achieving +both.\thinspace\nobreak\leaders\hrule\hfill\null\par} + +%%% The following pangrams were collected by David Lemon of Adobe Systems, Inc. +%%% This is just a small sample from the entire collection. +\pantext={Brick quiz whangs jumpy veldt fox. +Nymphs vex, beg quick fjord waltz. +Quick wafting zephyrs vex bold Jim. +West quickly gave Bert handsome prizes for six juicy plums. +Freight to me sixty dozen quart jars and twelve black pans. +My help squeezed back in again and joined the weavers after six. +Turgid saxophones blew over Mick's jazzy quiff. +Five wine experts jokingly quizzed sample chablis. +My grandfather picks up quartz and valuable onyx jewels. +Mix Zapf with Veljovic and get quirky Beziers. +All questions asked by five watch experts amazed the judge. +Back in June we delivered oxygen equipment of the same size. +We have just quoted on nine dozen boxes of grey lamp wicks. +A large fawn jumped quickly over white zinc boxes. +The exodus of jazzy pigeons is craved by squeamish walkers.\thinspace\nobreak\leaders\hrule\hfill\hbox{}\par} + +\loremtext={Lorem ipsum +dolor sit amet, consectetuer adipiscing elit, sed diam +nonummy nibh eusi\-mod tincidunt ut laor\-eet dolore magna +ali\-quam erat volutpat. Ut wisi enim ad minim veniam, quis +nostrud exerci tation ullamcorper suscipit la\-bortis nisl +ut ali\-quip exea commodo consequat. +Quousque tandem abutere, Catilina, patientia nostra? Quamdiu nos etiam furor iste tuus eludet? +quem ad finem sese effrenata jactibit audicia? nihilne te nocturnum pr\ae sidium palatii, nihil +urbis vigil\ae . +Lorem ipsum +dolor sit amet, consectetuer adipiscing elit, sed diam +nonummy nibh eusi\-mod tincidunt ut laor\-eet dolore magna +ali\-quam erat volutpat. Ut wisi enim ad minim veniam, quis +nostrud exerci tation ullamcorper suscipit la\-bortis nisl +ut ali\-quip exea commodo consequat. +Quousque tandem abutere, Catilina, patientia nostra? Quamdiu nos etiam furor iste tuus eludet? +quem ad finem sese effrenata jactibit audicia? nihilne te nocturnum pr\ae sidium palatii, nihil +urbis vigil\ae .\thinspace\nobreak\leaders\hrule\hfill\null\par} + +\def\abc{abcdefghijklmnopqrstuvwxyz} +\def\habc{\abc\abc abcdefghijklm} +\def\dabc{AGQMstaefgpy1234?!\&} +\def\ucabc{ABCDEFGHIJKLMNOPQRSTUVWXYZ\&} +\def\freqabc{\text zjqx% + kkvv% + bbbbppppyyyywwwwgggg% + mmmmmmffffffccccccuuuuuu% + lllllllldddddddd% + hhhhhhhhhhhhrrrrrrrrrrrrssssssssssss% + ooooooooooooooiiiiiiiiiiiiiinnnnnnnnnnnnnn% + aaaaaaaaaaaaaaaatttttttttttttttttt% + eeeeeeeeeeeeeeeeeeeeeeee}% 204 chars + +\def\ast{*} \def\per{.} + +%%% Convert from TeX's bulky 4-decimal point measurements to 1 +\def\prettypt#1{\dist=#1 +\multiply\dist10 +\scratch=\number\dist +\divide\scratch\scppt +\intgp=\scratch \divide\intgp10 +\sscratch=\intgp +\multiply\sscratch10 \advance\scratch-\sscratch +\fracp=\scratch +\hbox{\the\intgp.\the\fracp}pt\ } + +\def\cvptin#1{\dist=#1 +\multiply\dist by 10 +\scratch=\number\dist +\divide\scratch\scppt +\multiply\scratch100 +\fracp=\scratch +\divide\scratch72270 +\intgp=\scratch +\multiply\scratch72270 +\advance\fracp-\scratch +\multiply\fracp10 +\divide\fracp7227 +\hbox{\the\intgp.\ifnum\fracp<10 0\the\fracp \else\the\fracp\fi in}} + +%%% Type factor = ([Type size] * [# of characters in a sample])/(linear length of sample) +%%% Based on {\it Brown's Index}, Bruce Brown, Greenwood Publishing, Great Britain 1983 +\def\typefact{% +\dist=10pt +\spconv=\number\dist +\multiply\spconv by 12 +\multiply\spconv by 204 +\setbox1=\hbox{\text\freqabc}% +\divisor=\number\wd1 +\divide\divisor by 100 +\divide\spconv by \divisor +\scratch=\spconv + \divide\scratch100 + \divisor=\scratch + \multiply \scratch100 + \advance\spconv-\scratch + \hbox{\number\divisor.\ifnum\spconv<10 0\the\spconv \else \the\spconv\fi}} + +\setbox0=\hbox{\tiny 0} +\kernone=.5\wd0 \kerntwo=\wd0 +\def\k{\kern-\kernone} +\def\kk{\kern-\kerntwo} + +\def\endline{\hbox to 0pt{\vrule width1pt height\baselineskip% + depth.25\baselineskip\hss}} + +\def\iline{\hbox to 0pt{\vrule width.25pt height\baselineskip\hss}} +\def\hline{\hbox to 0pt{\vrule width.25pt height.75\baselineskip\hss}} +\def\qline{\hbox to 0pt{\vrule width.25pt height.55\baselineskip\hss}} +\def\eline{\hbox to 0pt{\vrule width.25pt height.35\baselineskip\hss}} +\def\sline{\hbox to 0pt{\vrule width.25pt height.15\baselineskip\hss}} + +\def\itick{\hbox to 1in{\iline\hfill}} +\def\htick{\hbox to .5in{\hline\hfill}} +\def\qtick{\hbox to .25in{\qline\hfill}} +\def\etick{\hbox to .125in{\eline\hfill}} +\def\stick{\hbox to .0625in{\sline\hfill}} + +\def\dhtick{\hbox to .5in{\hline\hfill}} +\def\dttick{\hbox to .1in{\qline\hfill}} +\def\dftick{\hbox to .05in{\eline\hfill}} + +\def\pctick{\hbox to 1pc{\iline\hss}} +\def\hpctick{\hbox to .5pc{\qline\hss}} + +\def\druler#1 {\hbox to #1{\endline\hfill\endline} +\kern-\baselineskip \bigger=#1 \advance\bigger by .5in +\hbox to #1{\hrulefill}\kern-\baselineskip +\hbox to \bigger{\leaders\itick\hfill}\kern-\baselineskip +\hbox to #1{\leaders\dhtick\hfill}\kern-\baselineskip +\hbox to #1{\leaders\dttick\hfill}\kern-\baselineskip +\hbox to #1{\leaders\dftick\hfill}} + +\def\pcruler#1 {\hbox to #1{\endline\hfill\endline} +\kern-\baselineskip +\hbox to #1{\hrulefill}\kern-\baselineskip +\hbox to #1{\leaders\pctick\hfill}\kern-\baselineskip +\hbox to #1{\leaders\hpctick\hfill}} + +%%% Calculates the largest display typesize to fit \hsize +%%% First typeset it very small (.5pt) then calculate a +%%% scale factor to get it to fit to \hsize +\font\dsp=\the\dspfont\space at .1pt +\setbox0=\hbox{\dsp \ucabc}% +\dspsize=\hsize +\scratch=\dspsize \multiply\scratch10 \divisor=\wd0 +\divide\scratch by \divisor +\dspsize=\scratch pt \divide\dspsize by 100 + +%%% Calculates the increment such that smallest display size is 12pt +\dspsizeincr=\dspsize \advance\dspsizeincr by -12pt +\divide\dspsizeincr by 3 \dsplineno4 + +\kern-1\baselineskip + +{\name \fontname\par} +\hbox to \hsize{\hrulefill}\kern-.25\baselineskip + +%%% Display Type +\bgroup +\loop\font\dsp=\the\dspfont\space at \dspsize \dsp \baselineskip1em + \hbox to\hsize{\ucabc\hfill\rlap{\text\prettypt{\the\dspsize}}} + \hbox{\abc}\vskip.075in + \ifnum\dsplineno>1 \global\advance\dsplineno by-1 + \advance\dspsize by -\dspsizeincr \font\dsp=\the\dspfont\space at \dspsize\repeat +\egroup + +\setbox0=\hbox{\text x} +\xheight=\ht0 + +%%% Leading calculations +\setbox0=\hbox{\text Ilpgy} +\ascheight=\ht0 +\leading=\ht0 +\adjust=\xheight \advance\adjust-.5\leading +\advance\leading\dp0 +\leading=1.175\leading +\ifdim\dp0<.05\ht0 \advance\adjust.5\xheight\fi +\advance\leading by \adjust +\baselineskip\leading + +%%% Calculates ratio of x-height to ascender height +\dimen0=\the\fontdimen5\text +\xascrnum=\dimen0% +\divisor=\number\ascheight +\multiply\xascrnum by 100\relax +\divide\xascrnum by\ascheight + +%%% Calculates width of 2.5 lc alphabets in picas and points +\setbox0=\hbox{\text\habc} \habcwd=\wd0 +\def\showhabcwd{% +\scratchdim=\habcwd \scratchdim=\scratchdim +\scratch=\number\scratchdim +\divide\scratch\scppt \sscratch=\scratch +\divide\scratch12 +\picawd=\scratch +\multiply\scratch by 12 +\advance\sscratch-\scratch +\pointwd=\sscratch +\hbox{\the\picawd pc\the\pointwd}} + +%%% Calculates the largest typesize to fit 70 characters to 4.5in. +%%% First typeset it very small (.5pt) then calculate a +%%% scale factor to get it to fit to 4.5in. +\font\calcfont=\the\dspfont\space at .5pt +\setbox0=\hbox{\calcfont \habc}% +\dspsize=4.5in +\scratch=\dspsize \multiply\scratch10 \divisor=\wd0 +\divide\scratch by \divisor +\ctextsz=\scratch pt \divide\ctextsz by 20 + +\vskip.2in + +\text + +\vbox{\baselineskip1.2\baselineskip% +\druler{6.51in} +% +{\hsize6in \settabs 6\columns\tiny +\+Decimal Inches&\k 1&\k 2&\k 3&\k 4&\k 5&\k 6\cr} +% +\text 1234567890\$\%\&?(``\thinspace'')\par +\habc\par +\uppercase\expandafter{\abc}\vskip.5em +% +\pcruler{38pc} +% +{\hsize35pc \settabs 7\columns\tiny +\+Picas&\k 5&\kk 10&\kk 15&\kk 20&\kk 25&\kk 30&\kk 35\cr}\vfill} + +\vskip.25in + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% +%%% Change the text sample here. +%%% The choices are \ntext, \pantext and \loremtext +%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\vbox{% +\hsize\habcwd \baselineskip\leading \the\loremtext} + +\vfill + +\hbox to \hsize{\hrulefill} +\smallskip +\vbox{% +\emergencystretch1em\tiny \hsize.8\habcwd \baselineskip.9\leading +% +\halign to \hsize{#\hfil\tabskip0pt plus 1fill&\hfil#\tabskip0pt\cr +Type stats:\cr +\noalign{\smallskip\hrule\smallskip} +Text sample (10pt) leading&\prettypt{\the\leading}\unskip\cr +\noalign{\smallskip\hrule\smallskip} +Width of 2.5 lowercase 10pt alphabets&\showhabcwd\ or \cvptin{\the\habcwd}\unskip\cr +\noalign{\smallskip\hrule\smallskip} +Type size required for a 4.5in measure&\prettypt{\the\ctextsz}\unskip\cr +\noalign{\smallskip\hrule\smallskip} +Ratio of x-height to ascender height&\hbox{0.\the\xascrnum}\cr +\noalign{\smallskip\hrule\smallskip} +Typefactor&\typefact\cr +\noalign{\smallskip\hrule}} +\smallskip +\comment}% + +\eject\end
\ No newline at end of file diff --git a/Master/texmf-dist/tex/plain/typespec/TypeSp04.tex b/Master/texmf-dist/tex/plain/typespec/TypeSp04.tex new file mode 100644 index 00000000000..3bbe0bcf201 --- /dev/null +++ b/Master/texmf-dist/tex/plain/typespec/TypeSp04.tex @@ -0,0 +1,151 @@ +%%% Stephen Moye +%%% Stephen_Moye@brown.edu +%%% Brown University +%%% Graphic Services + +%%%%% Registers + +\newtoks\dspfont +\newdimen\dspsize +\newdimen\letterboxwd +\newcount\scratch +\newcount\divisor + +%%%%% Layout options + +\parindent0pt +\nopagenumbers + +\vsize10in \voffset-.5in +\hsize7.5in \hoffset-.5in + +%%%%% Macros + +%%% This is the macro that does all the work. +%%% #1 -> TeX's name for the desired font +%%% #2 -> The name font name as you want it to print +%%% #3 -> The name of the type's designer, or other salient +%%% piece of information that lends itself to display +%%% #4 -> The size of the type inside the box +%%% #5 -> The overall desired width of the box +\def\makefontbox#1#2#3#4#5{% +\dspfont={#1}% +\def\fontname{#2}% +\font\test=\the\dspfont\space at #4 \test \baselineskip1.25em +\setbox0=\vbox{\halign to #5{% +##\tabskip0pt plus 1fill&\hfil##\hfil&\hfil##\hfil&\hfil##\hfil&\hfil##\hfil& +\hfil##\hfil&\hfil##\hfil& +\hfil##\hfil&\hfil##\hfil&\hfil##\hfil&\hfil##\hfil&\hfil##\hfil\tabskip0pt\cr +\noalign{\red\hrule\black\medskip} +%%% Substitute any characters you like to suit your purposes +A&B&C&D&E\enskip&1&2&\enskip a&b&c&d&e\cr +F&G&H&I&J\enskip&3&4&\enskip f&g&h&i&j\cr +K&L&M&N&O\enskip&5&6&\enskip k&l&m&n&o\cr +P&Q&R&S&T\enskip&7&8&\enskip p&q&r&s&t\cr +U&V&W&X&Y\enskip&9&0&\enskip u&v&w&x&y\cr +(&&Z&&)&\&&\char166&[&&z&&]\cr +\noalign{\medskip\red\hrule\black}}}% +\letterboxwd=\wd0 +\vtop{\hsize\letterboxwd +\if\empty#2 \else\makefit{#2}\fi% +\smallskip +\box0% +\smallskip +\if\empty#3 \else \makefit{#3}\fi}} + +%%% Fit text to a given size by first setting the text +%%% very tiny and then determining a scaling factor. +\def\makefit#1{\font\dsp=\the\dspfont\space at .1pt% +\setbox1=\hbox{\dsp #1}% +\dspsize=\letterboxwd +\scratch=\dspsize \multiply\scratch10 \divisor=\wd1 +\divide\scratch by \divisor +\dspsize=\scratch pt \divide\dspsize by 100 +\hbox{\font\dsp=\the\dspfont\space at\dspsize \dsp #1}} + +%%% For Textures users, and anyone else who can use color +%%% via the \special mechanism + +\def\red{% +\special{color push} +\special{color define red rgb 1.0 0 0} +\special{color red}} + +\def\blue{% +\special{color push} +\special{color define blue rgb 0 0 1.0} +\special{color blue}} + +\def\green{% +\special{color push} +\special{color define green rgb 0 1.0 0} +\special{color green}} + +\def\black{\special{color pop}} + +%%%%% Example -- this is just a suggestion to get you started. + +%%% Make the `grid'. This is just for fun. For even more fun, +%%% color the rules -- red, blue and green are very printerly. +%%% The easy way, as here, is to make your pattern in a \vbox +%%% set to \vsize, then all you have to do is \kern-\vsize +%%% to start setting type over the grid. + +\vbox to \vsize{\blue +\hrule +\vss +\noindent\llap{\vrule height\vsize\hskip0pt}% +\hskip2in\kern2pt\vrule height\vsize\hskip1pt% +\hskip3.5in\kern-6pt\vrule height\vsize\hskip1pt% +\hfill\rlap{\hskip0pt\vrule height\vsize} +\vss +\hrule\black} + +\kern-\vsize + +%%% Now do the text bits + +\line{\hskip1pt\makefontbox{ACaslon}{Adobe Caslon Roman}{ }{11pt}{2in}\hfill +\makefontbox{ACaslonI}{Adobe Caslon Italic}{ }{11pt}{2in}\hskip1pt} + +\vfill + +\red\hrule\black + +\bigskip + +%%% Notice that the narrow measure (3.5in) used for the quotation +%%% required some \emergencystretch. +\begingroup +\font\rm=ACaslon at 10pt \rm \baselineskip1.35em \font\it=ACaslonI at 10pt +\moveright 2.1in\vbox{\hsize3.3in \emergencystretch.5em% +A lot of mathematics and technical knowledge are involved in our work today. +I would not call us artists any more. +I think `alphabet designer' is more accurate, +and our comrade is no longer the punchcutter but the electronics engineer. +If the technician learns that he doesn't have to work with a crazy artist, +and the designer learns a little about electronics, +they will make an ideal team. +It is still teamwork as it was in the good old days of metal type. + +\bigskip + +\it Hermann Zapf\par} + +\bigskip + +\red\hrule\black + + +\endgroup + +\vfill\vfill + + +\line{\hskip1pt\makefontbox{ACaslonB}{Adobe Caslon Bold}{ }{11pt}{2in}\hfill +\makefontbox{ACaslonBI}{Adobe Caslon BoldItalic}{Carol Twombly}{11pt}{2in}\hskip1pt} + +\line{\hss} + + +\eject
\ No newline at end of file diff --git a/Master/texmf-dist/tex/plain/typespec/TypeSp05.tex b/Master/texmf-dist/tex/plain/typespec/TypeSp05.tex new file mode 100644 index 00000000000..f896bf65236 --- /dev/null +++ b/Master/texmf-dist/tex/plain/typespec/TypeSp05.tex @@ -0,0 +1,197 @@ +%%% Stephen Moye +%%% Stephen_Moye@brown.edu +%%% Brown University +%%% Graphic Services + +\newtoks\texfont +\newtoks\symbolfont +\newdimen\boxwd +\newdimen\boxht +\newdimen\thicklineht +\newdimen\linewd +\newdimen\nummove +\newdimen\charmove +\newdimen\kernchar +\newdimen\dividerht +\newcount\charcount \charcount=0 +\newcount\numcount \numcount=0 +\newcount\loopcount + +\def\setfont#1{\texfont={#1} +\font\text=\the\texfont\space at 10pt +\font\note=\the\texfont\space at 8pt +\font\name=\the\texfont\space at 18pt +\font\numfont=Helvetica at 8pt} + +\def\setsymbolfont#1#2{\texfont={#2} +\symbolfont={#1} +\font\text=\the\symbolfont\space at 10pt +\font\note=\the\texfont\space at 8pt +\font\name=\the\texfont\space at 18pt +\font\numfont=Helvetica at 8pt} + +\def\startnum#1{\charcount=#1 \numcount=#1} + +\def\nextchar{\text\char\charcount \global\advance\charcount1} + +\def\nextnum{\numfont\number\numcount \global\advance\numcount1} + +\def\charbox{% +\vbox to\boxht{% +\hsize\boxwd\kern\charmove\centerline{\kern\kernchar\strut\nextchar}\vss}} + +\def\numline{\centerline{\white\nextnum\black}} + +\def\numlinenc{\centerline{\nextnum}} + +\def\boxit{\vbox{\hsize\boxwd\hrule height\linewd\hbox{\vrule width\linewd% + \charbox\vrule width\linewd}% + \hrule height\dividerht}% + \kern-\linewd} + +%%% For the numbers, uses color or gray +\def\nboxit{\dimen0\boxwd \advance\dimen0\linewd +\dimen1\thicklineht \advance\dimen1\linewd +\vbox{\hsize\boxwd +\gray\hrule width\dimen0 height\dimen1\black +\kern-\thicklineht +\kern-2\linewd +\hrule height\linewd \hbox{\vrule width\linewd% +\vbox to \thicklineht{\hsize\boxwd + \kern\nummove\numline\vss}% + \vrule width\linewd}\hrule height\linewd}\kern-\linewd} + +%%% For the numbers, no color +\def\nboxitnc{% +\dimen0\thicklineht +\advance\dimen0 2\linewd +\vbox to\dimen0{\hsize\boxwd +\hrule height\linewd \hbox{\vrule height\thicklineht width\linewd% + \vbox to\thicklineht{\kern\nummove\numlinenc}% + \vrule width\linewd}\vss\hrule height\linewd}\kern-\linewd} + +\def\white{\special{color push}% + \special{color define white cmyk 0 0 0 0}% + \special{color white}} + +\def\gray{\special{color push}% + \special{color gray .4}} + +\def\black{\special{color pop}} + +\def\lineofchars#1{\loopcount=#1% +\noindent\loop \boxit \ifnum\loopcount>1\advance\loopcount-1 \repeat\par +\loopcount=#1% +\nointerlineskip +\kern-\linewd +\nointerlineskip +\noindent\loop\nboxit \ifnum\loopcount>1\advance\loopcount-1 \repeat\par +\kern-\linewd} + +%%% For no color or gray, use this +\def\lineofcharsnc#1{\loopcount=#1% +\noindent\loop \boxit \ifnum\loopcount>1\advance\loopcount-1 \repeat\par +\loopcount=#1% +\nointerlineskip +\kern-\linewd +\noindent\loop\nboxitnc \ifnum\loopcount>1\advance\loopcount-1 \repeat\par +\kern-\linewd} + +%%% Setup + +\boxwd=.25in +\boxht=.3in +\thicklineht=13pt +\linewd=.25pt +\dividerht=.75pt +\parindent=0pt +\nummove3pt +\charmove5pt +\kernchar-1pt + +\startnum{0} + +\setfont{ACaslon} + +%%% Draw the boxes + +\leftskip1in + +\name Adobe Caslon\par +\smallskip +\lineofchars{16} +\smallskip +\lineofchars{16} +\smallskip +\lineofchars{16} +\smallskip +\lineofchars{16} +\smallskip +\lineofchars{16} +\smallskip +\lineofchars{16} +\smallskip +\lineofchars{16} +\smallskip +\lineofchars{16} +\note Carol Twombly + +\vfill\eject + +\startnum{0} + +\setfont{cmr12} + +%%% Draw the boxes + +\leftskip1in + +\name Computer Modern\par +\smallskip +\lineofcharsnc{16} +\smallskip +\lineofcharsnc{16} +\smallskip +\lineofcharsnc{16} +\smallskip +\lineofcharsnc{16} +\smallskip +\lineofcharsnc{16} +\smallskip +\lineofcharsnc{16} +\smallskip +\lineofcharsnc{16} +\smallskip +\lineofcharsnc{16} +\note Donald E. Knuth + +\vfill\eject + +\startnum{32} + +\setsymbolfont{Dingbats}{Helvetica} + +%%% Draw the boxes + +\leftskip1in + +\name Zapf Dingbats\par +\smallskip +\lineofcharsnc{16} +\smallskip +\lineofcharsnc{16} +\smallskip +\lineofcharsnc{16} +\smallskip +\lineofcharsnc{16} +\smallskip +\lineofcharsnc{16} +\smallskip +\lineofcharsnc{16} +\note Hermann Zapf + + + + + +\bye
\ No newline at end of file diff --git a/Master/texmf-dist/tex/plain/typespec/TypeSp06.tex b/Master/texmf-dist/tex/plain/typespec/TypeSp06.tex new file mode 100644 index 00000000000..1487c542e2f --- /dev/null +++ b/Master/texmf-dist/tex/plain/typespec/TypeSp06.tex @@ -0,0 +1,183 @@ +%%% Stephen Moye +%%% Stephen_Moye@brown.edu +%%% Brown University +%%% Graphic Services + +\newdimen\basesize +\newdimen\dist +\newdimen\baseblsk +\newdimen\xheight +\newdimen\ascheight +\newdimen\leading +\newdimen\adjust +\newcount\scratch +\newcount\scppt \scppt=65536 +\newcount\intgp +\newcount\sscratch +\newcount\fracp + +\hsize7.5in \hoffset-.5in +\vsize10in \voffset-.5in + +\nopagenumbers +\parindent0pt + +\def\setuptype#1#2#3#4{\font\bigtext=#3 at 18pt +\basesize=#2 +\font\tinynote=#4 at 8pt +\font\bigdisp=#1 at \basesize +\font\meddisp=#1 at .75\basesize +\font\smalldisp=#1 at .5\basesize +\font\tinydisp=#1 at .41666\basesize +\setbox0=\vbox{\bigdisp ILyg} +\baseblsk=\ht0 +\advance\baseblsk\dp0 +\baseblsk=1.2\baseblsk} + +%%% Leading calculations +\def\setleading{\setbox0=\hbox{x} +\xheight=\ht0 +\setbox0=\hbox{Ilpgy} +\ascheight=\ht0 +\leading=\ht0 +\adjust=\xheight \advance\adjust-.5\leading +\advance\leading\dp0 +\leading=1.175\leading +\ifdim\dp0<.05\ht0 \advance\adjust.5\xheight\fi +\advance\leading by \adjust +\baselineskip\leading} + +\def\prettypt#1{\dist=#1 +\multiply\dist10 +\scratch=\number\dist +\divide\scratch\scppt +\intgp=\scratch \divide\intgp10 +\sscratch=\intgp +\multiply\sscratch10 \advance\scratch-\sscratch +\fracp=\scratch +\hbox{\the\intgp.\the\fracp}pt\ } + +%%% + +\setuptype{uaur}{24pt}{Helvetica}{HelveticaI} + +\leftline{\bigtext Audubon Script} + +\smallskip + +\hrule +\smallskip +\rightline{\tinynote Type used in James Audubon's ``Birds of America'', translated to PostScript by Richard +Beatty} +\bigskip + +\line{% +\vtop to 9in{\bigdisp \baselineskip=.75\baseblsk plus 1fil +\halign{&#\hfill\cr% +Abound\cr +Bridges\cr +Canoe\cr +Dismay\cr +English\cr +French\cr +Genoa\cr +Happy\cr +Igloo\cr +Jury\cr +Kimono\cr +Lyric\cr +Musical\cr +Narcissus\cr +Opera\cr +Precise\cr +Quartz\cr +Royal\cr +Sable\cr +Transience\cr +Umbrage\cr +Velvet\cr +Waxen\cr +Xanadu\cr +Yucca\cr +Zabaglione\cr}}\hfill +\vtop to 9in{\bigdisp \baselineskip\baseblsk plus 1fil + \halign{ + &\hfil\thinspace#&\thinspace#\hfil& + \enskip#\enskip& + \hfil\thinspace#&\thinspace#\hfil\cr + A&a&&B&b\cr + C&c&&D&d\cr + E&e&&F&f\cr + G&g&&H&h\cr + I&i&&J&j\cr + K&k&&L&l\cr + M&m&&N&n\cr + O&o&&P&p\cr + Q&q&&R&r\cr + S&s&&T&t\cr + U&u&&V&v\cr + W&w&&X&x\cr + Y&y&&Z&z\cr + \span0&\span1\cr + \span2&\span3\cr + \span4&\span5&\cr + \span6&\span7&\cr + \span8&\&&9&\cr}}\hfill +\vtop{\hsize3in \emergencystretch2em +\bigdisp \setleading +Brick quiz whangs jumpy veldt fox. +Nymphs vex, beg quick fjord waltz. +Quick wafting zephyrs vex bold Jim. + + +\rightline{\tinynote \prettypt{\basesize}/\prettypt{\the\baselineskip}} +\smallskip +\hrule + +\bigskip\bigskip + +\meddisp \setleading +West quickly gave Bert handsome prizes for six juicy plums. +Freight to me sixty dozen quart jars and twelve black pans. +My help squeezed back in again and joined the weavers after six. +Turgid saxophones blew over Mick's jazzy quiff. + + +\rightline{\tinynote \prettypt{.75\basesize}/\prettypt{\the\baselineskip}} +\smallskip +\hrule + +\bigskip\bigskip + +\smalldisp \setleading +Five wine experts jokingly quizzed sample chablis. +My grandfather picks up quartz and valuable onyx jewels. +Mix Zapf with Veljovic and get quirky Beziers. +All questions asked by five watch experts amazed the judge. +Back in June we delivered oxygen equipment of the same size. +We have just quoted on nine dozen boxes of grey lamp wicks. +A large fawn jumped quickly over white zinc boxes. +The exodus of jazzy pigeons is craved by squeamish walkers. + +\rightline{\tinynote \prettypt{.5\basesize}/\prettypt{\the\baselineskip}} +\smallskip +\hrule + +\bigskip\bigskip + +\tinydisp \setleading +Murky haze enveloped a city as jarring quakes broke fourty-six windows. +The brazen jackal querulously attacked a ferral vixen, maiming her paw. +Karate experts bring down victims with just a few amazingly quick chops. +The fabled quetzal roosted on a mulberry twig, vexing the peevish jockey. +King Alexander was just partly overcome after quizzing Diogenes in his tub. +The exiled queen justly moved, celebrated with a dazzling fireworks display. + +\rightline{\tinynote \prettypt{.41666666\basesize}/\prettypt{\the\baselineskip}} +\smallskip +\hrule}} + +\bye + + + diff --git a/Master/texmf-dist/tex/plain/typespec/TypeSp07.tex b/Master/texmf-dist/tex/plain/typespec/TypeSp07.tex new file mode 100644 index 00000000000..9fd564ee007 --- /dev/null +++ b/Master/texmf-dist/tex/plain/typespec/TypeSp07.tex @@ -0,0 +1,312 @@ +%%% Stephen Moye +%%% Stephen_Moye@brown.edu +%%% Brown University +%%% Graphic Services + +\newdimen\dspsize +\newdimen\leading +\newdimen\ascheight +\newdimen\xheight +\newdimen\adjust +\newdimen\sampletextwd +\newdimen\abcdwd +\newdimen\twocolwd +\newcount\scratch +\newcount\divisor +\newtoks\texttoks + +%%% + +%%% + +%%% Set it very small, then find a +%%% scaling factor to get it to fit +% #1 - font; #2 - width to fit; #3 - the text +\def\fitit#1#2#3{\font\dsp=#1 at .1pt +\setbox0=\hbox{\dsp #3}% +\dspsize=#2 +\scratch=\dspsize \multiply\scratch10 \divisor=\wd0 +\divide\scratch by \divisor +\dspsize=\scratch pt \divide\dspsize by 100 +\message{\the\dspsize}% +\font\dsp=#1 at \dspsize +\hbox{\dsp#3}} + +%%% Leading derived from the characteristics of the type +\def\setleading{% +\setbox0=\hbox{Ilpgy} +\setbox1=\hbox{x} +\xheight=\ht1 +\ascheight=\ht0 +\leading=\ht0 +\adjust=\xheight \advance\adjust-.5\leading +\advance\leading\dp0 +\leading=1.175\leading +\ifdim\dp0<.05\ht0 \advance\adjust.5\xheight\fi +\advance\leading by \adjust +\baselineskip\leading +\message{the leading=\the\leading}} + +\def\setuptype#1{% +\font\Diamond=#1 at 4pt +\font\Pearl=#1 at 4.5pt +\font\Ruby=#1 at 5pt +\font\Nonpareil=#1 at 6pt +\font\Emerald=#1 at 6.5pt +\font\Minion=#1 at 7pt +\font\Brevier=#1 at 7.5pt +\font\Bourgeois=#1 at 8pt +\font\LongPrimer=#1 at 9pt +\font\SmallPica=#1 at 10pt +\font\Pica=#1 at 12pt +\font\English=#1 at 14pt +\font\GreatPrimer=#1 at 16pt +\font\Paragon=#1 at 18pt +\font\Twolinesmallpica=#1 at 21pt +\font\Twolinepica=#1 at 24pt} + +\def\isetuptype#1{% +\font\iDiamond=#1 at 4pt +\font\iPearl=#1 at 4.5pt +\font\iRuby=#1 at 5pt +\font\iNonpareil=#1 at 6pt +\font\iEmerald=#1 at 6.5pt +\font\iMinion=#1 at 7pt +\font\iBrevier=#1 at 7.5pt +\font\iBourgeois=#1 at 8pt +\font\iLongPrimer=#1 at 9pt +\font\iSmallPica=#1 at 10pt +\font\iPica=#1 at 12pt +\font\iEnglish=#1 at 14pt +\font\iGreatPrimer=#1 at 16pt +\font\iParagon=#1 at 18pt +\font\iTwolinesmallpica=#1 at 21pt +\font\iTwolinepica=#1 at 24pt} + +\def\bsetuptype#1{% +\font\bDiamond=#1 at 4pt +\font\bPearl=#1 at 4.5pt +\font\bRuby=#1 at 5pt +\font\bNonpareil=#1 at 6pt +\font\bEmerald=#1 at 6.5pt +\font\bMinion=#1 at 7pt +\font\bBrevier=#1 at 7.5pt +\font\bBourgeois=#1 at 8pt +\font\bLongPrimer=#1 at 9pt +\font\bSmallPica=#1 at 10pt +\font\bPica=#1 at 12pt +\font\bEnglish=#1 at 14pt +\font\bGreatPrimer=#1 at 16pt +\font\bParagon=#1 at 18pt +\font\bTwolinesmallpica=#1 at 21pt +\font\bTwolinepica=#1 at 24pt} + +\def\bisetuptype#1{% +\font\biDiamond=#1 at 4pt +\font\biPearl=#1 at 4.5pt +\font\biRuby=#1 at 5pt +\font\biNonpareil=#1 at 6pt +\font\biEmerald=#1 at 6.5pt +\font\biMinion=#1 at 7pt +\font\biBrevier=#1 at 7.5pt +\font\biBourgeois=#1 at 8pt +\font\biLongPrimer=#1 at 9pt +\font\biSmallPica=#1 at 10pt +\font\biPica=#1 at 12pt +\font\biEnglish=#1 at 14pt +\font\biGreatPrimer=#1 at 16pt +\font\biParagon=#1 at 18pt +\font\biTwolinesmallpica=#1 at 21pt +\font\biTwolinepica=#1 at 24pt} + +\def\bigtosmall#1{% +\begingroup\obeylines\offinterlineskip +\fitit{#1}{\abcdwd}{ABCD} +\vfill +\fitit{#1}{\abcdwd}{ABCDE} +\vfill +\fitit{#1}{\abcdwd}{ABCDEFG} +\vfill +\fitit{#1}{\abcdwd}{ABCDEFGHI} +\vfill +\fitit{#1}{\abcdwd}{ABCDEFGHIJK} +\vfill +\fitit{#1}{\abcdwd}{ABCDEFGHIJKLMN} +\vfill +\fitit{#1}{\abcdwd}{ABCDEFGHIJKLMNOPQ} +\vfill +\fitit{#1}{\abcdwd}{ABCDEFGHIJKLMNOPQRST} +\vfill +\fitit{#1}{\abcdwd}{ABCDEFGHIJKLMNOPQRSTUVW} +\vfill +\fitit{#1}{\abcdwd}{ABCDEFGHIJKLMNOPQRSTUVWXYZ} +\endgroup} + +\def\smalltobig#1{% +\begingroup\obeylines\offinterlineskip +\fitit{#1}{\abcdwd}{ABCDEFGHIJKLMNOPQRSTUVWXYZ} +\vfill +\fitit{#1}{\abcdwd}{ABCDEFGHIJKLMNOPQRSTUVW} +\vfill +\fitit{#1}{\abcdwd}{ABCDEFGHIJKLMNOPQRST} +\vfill +\fitit{#1}{\abcdwd}{ABCDEFGHIJKLMNOPQ} +\vfill +\fitit{#1}{\abcdwd}{ABCDEFGHIJKLMN} +\vfill +\fitit{#1}{\abcdwd}{ABCDEFGHIJK} +\vfill +\fitit{#1}{\abcdwd}{ABCDEFGHI} +\vfill +\fitit{#1}{\abcdwd}{ABCDEFG} +\vfill +\fitit{#1}{\abcdwd}{ABCDE} +\vfill +\fitit{#1}{\abcdwd}{ABCD} +\endgroup} + +\texttoks={Quousque tandem a\-bu\-te\-re, Ca\-ti\-li\-na, +patientia nostra? Qua\-m\-diu nos etiam furor iste tuus +eludet? quem ad finem sese effrenata jactibit +audicia? nihilne te nocturnum pr\ae si\-di\-um palatii, +nihil urbis vigil\ae. Lorem ipsum dolor sit amet, +consectetuer adipiscing elit, sed diam nonummy nibh +eusi\-mod tincidunt ut laor\-eet dolore magna +ali\-quam erat volutpat. Ut wisi enim ad minim +veniam, quis nostrud exerci tation ullamcorper +suscipit la\-bortis nisl ut ali\-quip exea commodo +consequat. Quousque tandem abutere, Catilina, +patientia nostra? Quamdiu nos etiam furor iste tuus +eludet? quem ad finem sese effrenata jactibit +audicia? nihilne te nocturnum pr\ae sidium palatii, +nihil urbis vigil\ae.} + +%%% 1-Roman TeX name, 2-Italic TeX name, 3-name of size, +%%% 4-number of lines in sample +\def\textsamps#1#2#3#4{% +\begingroup#1\setleading %% Uniform leading +\setbox0=\vbox{% +\hbadness10000\emergencystretch1em\hsize\sampletextwd\the\texttoks}% +\setbox1=\vsplit0 to #4\baselineskip +\setbox2=\vbox{#2% +\hbadness10000\emergencystretch1em\hsize\sampletextwd\the\texttoks}% +\setbox3=\vsplit2 to #4\baselineskip +\line{% +\vbox{\hsize\sampletextwd\centerline{\strut#1[#3]}\unvbox1}% +\hfill +\vbox{\hsize\sampletextwd\centerline{\strut#2[#3]}\unvbox3}\hskip.05in}% +\endgroup} + +%%% #1 - Font TeX name; #2 - number of lines in sample +%%% #3 - Printed name of font +\def\textbox#1#2#3{% +\begingroup#1% +\setbox0=\vbox{% +\hbadness10000\emergencystretch1em\hsize\sampletextwd\the\texttoks}% +\setbox1=\vsplit0 to #2\baselineskip +\vbox{\hsize\sampletextwd\centerline{\strut#1[#3]}\unvbox1}% +\endgroup} + +%%% +%%% Example +%%% + +%%% Setup + +%%% We don't need indents, complaints about \vboxes and page numbers +\parindent0pt +\vbadness10000 +\nopagenumbers + +%%% Set up all the ype +\isetuptype{ACaslonI} +\setuptype{ACaslon} +\bsetuptype{ACaslonB} +\bisetuptype{ACaslonBI} + +%%% Shape the page +\vsize10in +\voffset-.5in +\hsize7.5in +\hoffset-.5in + +%%% The width of the text sample columns: +\sampletextwd2.7in +%%% The width of the ABCD example +\abcdwd1.4in +%%% Now the overall width of the text column examples +\twocolwd=\hsize +\advance\twocolwd-\abcdwd +\advance\twocolwd2\sampletextwd +\divide\twocolwd2 + +%%% +%%% Experiments +%%% + +\centerline{\fitit{ACaslon}{4.1in}{A SAMPLE}} + +\smallskip + +\hrule + +\smallskip + +\line{\vbox to 8in{\hsize\twocolwd% +\textsamps{\Ruby}{\iRuby}{Ruby}{6}% +\vfill +\textsamps{\Nonpareil}{\iNonpareil}{Nonpareil}{6}% +\vfill +\textsamps{\Minion}{\iMinion}{Minion}{5}% +\vfill +\textsamps{\Bourgeois}{\iBourgeois}{Bourgeois}{5}% +\vfill +\textsamps{\LongPrimer}{\iLongPrimer}{Long Primer}{4}% +\vfill +\textsamps{\SmallPica}{\iSmallPica}{Small Pica}{4}% +\vfill +\textsamps{\Pica}{\iPica}{Pica}{4}% +\vfill +\textsamps{\English}{\iEnglish}{English}{4}}% +\hfill +\vrule +\hfill +\vbox to 8in{\hsize1in +\bigtosmall{ACaslon} +\vfill +\smalltobig{ACaslonI} +\vfill +\bigtosmall{ACaslonB} +\vfill +\smalltobig{ACaslonBI}}} + +\smallskip +\hrule +\smallskip +\hrule +\smallskip + +\Minion \setleading + +\sampletextwd=\hsize \divide\sampletextwd4 \advance\sampletextwd-1pc + +\line{% +\textbox{\Minion}{4}{Roman} +\hfill +\textbox{\iMinion}{4}{Italick} +\hfill +\textbox{\bMinion}{4}{Bold} +\hfill +\textbox{\biMinion}{4}{Bold-Italick}} + +\smallskip +\hrule +\smallskip +\hrule +\smallskip +\centerline{\iPica Adobe Caslon --- \Pica Carol Twombly} + + +%%% The End + +\bye
\ No newline at end of file diff --git a/Master/texmf-dist/tex/plain/typespec/TypeSp08.tex b/Master/texmf-dist/tex/plain/typespec/TypeSp08.tex new file mode 100644 index 00000000000..6af21b141bb --- /dev/null +++ b/Master/texmf-dist/tex/plain/typespec/TypeSp08.tex @@ -0,0 +1,215 @@ +%%% Stephen Moye +%%% Stephen_Moye@brown.edu +%%% Brown University +%%% Graphic Services + +\newdimen\leading +\newdimen\ascheight +\newdimen\xheight +\newdimen\adjust +\newdimen\sampletextwd +\newdimen\gutter +\newdimen\dist +\newdimen\mainleading + +\newcount\scratch +\newcount\divisor +\newcount\spconv +\newcount\divisor +\newcount\scratch +\newcount\sscratch +\newcount\intgp +\newcount\fracp + +\newtoks\texttoks + +%%% + +\vbadness10000 + +%%% + +\def\setleading{% +\setbox0=\hbox{Ilpgy}% +\setbox1=\hbox{x}% +\xheight=\ht1 +\ascheight=\ht0 +\leading=\ht0 +\adjust=\xheight \advance\adjust-.5\leading +\advance\leading\dp0 +\leading=1.2\leading +\ifdim\dp0<.05\ht0 \advance\adjust.5\xheight\fi +\advance\leading by \adjust +\baselineskip=\leading} + +%%% Type factor = ([Type size] * [# of characters in a sample])/(linear length of sample) +%%% Based on {\it Brown's Index}, Bruce Brown, Greenwood Publishing, Great Britain 1983 +\def\typefact#1{% +\dist=10pt +\font\facttext=#1 at\dist +\spconv=\number\dist +\multiply\spconv by 12 +\multiply\spconv by 204 +\setbox1=\hbox{\facttext\freqabc}% +\divisor=\number\wd1 +\divide\divisor by 100 +\divide\spconv by \divisor +\scratch=\spconv + \divide\scratch100 + \divisor=\scratch + \multiply \scratch100 + \advance\spconv-\scratch + \hbox{\number\divisor.\ifnum\spconv<10 0\the\spconv \else \the\spconv\fi}} + +%%% Convert from TeX's bulky 4-decimal point measurements to 1 +\def\prettypt#1{\dist=#1% +\multiply\dist10% +\scratch=\number\dist +\divide\scratch65536% +\intgp=\scratch \divide\intgp10% +\sscratch=\intgp +\multiply\sscratch10 \advance\scratch-\sscratch +\fracp=\scratch +\hbox{\the\intgp.\the\fracp}pt} + +\def\displaytype#1{% +\font\bigtype=#1 at 24pt +\font\medtype=#1 at 18pt +\font\normtype=#1 at 14pt +\font\smalltype=#1 at 12pt +\font\tinytype=#1 at 10pt +\font\tinytinytype=#1 at 8pt} + +\texttoks={\emergencystretch1em Brick quiz whangs jumpy veldt fox. +Nymphs vex, beg quick fjord waltz. +Quick wafting zephyrs vex bold Jim. +West quickly gave Bert handsome prizes for six juicy plums. +Freight to me sixty dozen quart jars and twelve black pans. +My help squeezed back in again and joined the weavers after six. +Turgid saxophones blew over Mick's jazzy quiff. +Five wine experts jokingly quizzed sample chablis. +My grandfather picks up quartz and valuable onyx jewels. +Mix Zapf with Veljovic and get quirky Beziers. +All questions asked by five watch experts amazed the judge. +Back in June we delivered oxygen equipment of the same size. +We have just quoted on nine dozen boxes of grey lamp wicks. +A large fawn jumped quickly over white zinc boxes. +The exodus of jazzy pigeons is craved by squeamish walkers.} + +\def\freqabc{\text zjqx% + kkvv% + bbbbppppyyyywwwwgggg% + mmmmmmffffffccccccuuuuuu% + lllllllldddddddd% + hhhhhhhhhhhhrrrrrrrrrrrrssssssssssss% + ooooooooooooooiiiiiiiiiiiiiinnnnnnnnnnnnnn% + aaaaaaaaaaaaaaaatttttttttttttttttt% + eeeeeeeeeeeeeeeeeeeeeeee}% 204 chars + +%%% #1 - Font TeX name; #2 - number of lines in sample +%%% #3 - Printed name of font +\def\textbox#1#2#3{%% +\setbox0=\vtop{#1% +\hbadness10000\emergencystretch1em\hsize\sampletextwd\the\texttoks}% +\setbox1=\vsplit0 to #2\baselineskip +\vtop{\hsize\sampletextwd\centerline{\strut#1[#3]}\smallskip\unvbox1\relax% +%%% Comment-out the following line if you don't want/need numbers in the sample text +1\hfill2\hfill3\hfill4\hfill5\hfill6\hfill7\hfill8\hfill9\hfill0\hfill\&\null\par% +}} + +\def\setupmargnote{% +\tinytinytype \setleading \baselineskip=\leading \vskip\baselineskip} + +%%% 1-type size; 2-Number of lines; +%%% 3-TeX type name 1; 4-Printed type name 1; +%%% 5-TeX type name 2; 6-Printed type name 2 +\def\lineoftwo#1#2#3#4#5#6{% +\begingroup +\font\typeone=#3 at #1% +%% Set up baselineskip for the two samples +%% and the info for the margin notes for the +%% sample on the left: +\typeone\setleading \calcxaratio{\typeone} + \baselineskip=\leading + \mainleading=\leading +\font\typetwo=#5 at #1% +\line{% +\llap{\vtop{\setupmargnote% + \halign{\hfill##\cr#1\cr + \prettypt{\the\mainleading}\cr + \typefact{#3}\cr + 0.\the\xascrnum\cr}}\enskip}\hss% +\textbox{\typeone}{#2}{#4}% +\hskip\gutter +%% Setup the info for the margin note describing +%% the sample on the right +\typetwo \setleading \calcxaratio{\typetwo} +\textbox{\typetwo}{#2}{#6}% +\hss +\rlap{\enskip\vtop{\setupmargnote% + \halign{##\hfil\cr#1\cr + \prettypt{\the\mainleading}\cr + \typefact{#5}\cr + 0.\the\xascrnum\cr}}}% +}\endgroup} + +\def\lineofone#1#2#3#4{% +\begingroup +\font\typeone=#3 at #1 \typeone \setleading \calcxaratio{\typeone} +\baselineskip=\leading +\line{\hss%% +\hbox{\textbox{\typeone}{#2}{#4}% +\hss +\rlap{\enskip\vtop{\setupmargnote% + \halign{##\hfil\cr + #1\cr + \prettypt{\the\mainleading}\cr + \typefact{#3}\cr + 0.\the\xascrnum\cr}}}}% +\hss}\endgroup} + +\def\comment#1{% +\bigskip +\hrule +\smallskip +\line{\hfill\vbox{\hyphenpenalty10000 \emergencystretch1em% +\leftskip0pt plus 4em \rightskip0pt \parfillskip0pt +\tinytinytype\setleading\hsize.75\sampletextwd\noindent#1}}} + +%%% +%%% Example +%%% + +%%% Setup + +\parindent0pt +\nopagenumbers +\hsize6in +\hoffset.25in +\gutter1pc +\sampletextwd2.85in +\displaytype{Helvetica} + + +%%% +%%% The Page +%%% + +\leftline{\medtype Centaur} +\smallskip +\hrule +\bigskip + +\lineoftwo{12pt}{10}{Centaur}{Centaur}{CentaurI}{Centaur Italic} + +\bigskip + +\lineoftwo{12pt}{10}{CentaurB}{Centaur Bold}{CentaurBI}{Centaur Bold-Italic} + +\comment{Centaur, drawn by Bruce Rogers and Frederick Warde} + +%%% +%%% The End +%%% + +\bye
\ No newline at end of file diff --git a/Master/texmf-dist/tex/plain/typespec/TypeSp09.tex b/Master/texmf-dist/tex/plain/typespec/TypeSp09.tex new file mode 100644 index 00000000000..072845299cc --- /dev/null +++ b/Master/texmf-dist/tex/plain/typespec/TypeSp09.tex @@ -0,0 +1,264 @@ +%%% Stephen Moye +%%% Stephen_Moye@brown.edu +%%% Brown University +%%% Graphic Services + +\newdimen\leading +\newdimen\ascheight +\newdimen\xheight +\newdimen\adjust +\newdimen\sampletextwd +\newdimen\gutter +\newdimen\dist +\newdimen\dspsize +\newdimen\dspsizeincr +\newdimen\depth +\newdimen\mainleading + +\newcount\scratch +\newcount\divisor +\newcount\spconv +\newcount\divisor +\newcount\scratch +\newcount\sscratch +\newcount\intgp +\newcount\fracp +\newcount\dsplineno +\newcount\xascrnum + +\newtoks\texttoks +\newtoks\dspfont + +%%% + +\vbadness10000 + +%%% + +\def\setleading{% +\setbox0=\hbox{Ilpgy}% +\setbox1=\hbox{x}% +\xheight=\ht1 +\ascheight=\ht0 +\depth=\dp0 +\leading=\ht0 +\advance\leading \depth +\leading=1.25\leading +\dimen0=\ascheight +\divide\dimen0 by 2\relax +\advance\dimen0-\xheight +%%% Account for large x-height +\ifdim\dimen0<0pt \else \advance\leading-\dimen0\fi +%%% Account for missing descenders -- smallcaps for instance +\ifdim\depth<.1\ascheight \advance \leading .4\ascheight\fi} + +%%% Calculates ratio of x-height to ascender height +\def\calcxaratio#1{% +\dimen0=\the\fontdimen5#1 +\xascrnum=\dimen0% +\divisor=\number\ascheight +\multiply\xascrnum by 100\relax +\divide\xascrnum by\ascheight} + +%%% Type factor = ([Type size] * [# of characters in a sample])/(linear length of sample) +%%% Based on {\it Brown's Index}, Bruce Brown, Greenwood Publishing, Great Britain 1983 +\def\typefact#1{% +\dist=10pt +\font\facttext=#1 at\dist +\spconv=\number\dist +\multiply\spconv by 12 +\multiply\spconv by 204 +\setbox1=\hbox{\facttext\freqabc}% +\divisor=\number\wd1 +\divide\divisor by 100 +\divide\spconv by \divisor +\scratch=\spconv + \divide\scratch100 + \divisor=\scratch + \multiply \scratch100 + \advance\spconv-\scratch + \hbox{\number\divisor.\ifnum\spconv<10 0\the\spconv \else \the\spconv\fi}} + +%%% Convert from TeX's bulky 4-decimal point measurements to 1 +\def\prettypt#1{\dist=#1% +\multiply\dist10% +\scratch=\number\dist +\divide\scratch65536% +\intgp=\scratch \divide\intgp10% +\sscratch=\intgp +\multiply\sscratch10 \advance\scratch-\sscratch +\fracp=\scratch +\hbox{\the\intgp.\the\fracp}pt} + +\def\displaytype#1{% +\font\bigtype=#1 at 24pt +\font\medtype=#1 at 18pt +\font\normtype=#1 at 14pt +\font\smalltype=#1 at 12pt +\font\tinytype=#1 at 10pt +\font\tinytinytype=#1 at 8pt} + +\texttoks={\emergencystretch2em Brick quiz whangs jumpy veldt fox. +Nymphs vex, beg quick fjord waltz. +Quick wafting zephyrs vex bold Jim. +West quickly gave Bert handsome prizes for six juicy plums. +Freight to me sixty dozen quart jars and twelve black pans. +My help squeezed back in again and joined the weavers after six. +Turgid saxophones blew over Mick's jazzy quiff. +Five wine experts jokingly quizzed sample chablis. +My grandfather picks up quartz and valuable onyx jewels. +Mix Zapf with Veljovic and get quirky Beziers. +All questions asked by five watch experts amazed the judge. +Back in June we delivered oxygen equipment of the same size. +We have just quoted on nine dozen boxes of grey lamp wicks. +A large fawn jumped quickly over white zinc boxes. +The exodus of jazzy pigeons is craved by squeamish walkers.} + +\def\freqabc{zjqx% + kkvv% + bbbbppppyyyywwwwgggg% + mmmmmmffffffccccccuuuuuu% + lllllllldddddddd% + hhhhhhhhhhhhrrrrrrrrrrrrssssssssssss% + ooooooooooooooiiiiiiiiiiiiiinnnnnnnnnnnnnn% + aaaaaaaaaaaaaaaatttttttttttttttttt% + eeeeeeeeeeeeeeeeeeeeeeee}% 204 chars + +%%% #1 - Font TeX name; #2 - number of lines in sample +%%% #3 - Printed name of font +\def\textbox#1#2#3{#1%\setleading%% +\setbox0=\vtop{% +\hbadness10000\hsize\sampletextwd\the\texttoks}% +\setbox1=\vsplit0 to #2\baselineskip +\vtop{\hsize\sampletextwd\centerline{\strut#1[#3]}\smallskip\unvbox1\relax% +%%% Comment-out the following line if you don't want/need numbers in the sample text +1\hfill2\hfill3\hfill4\hfill5\hfill6\hfill7\hfill8\hfill9\hfill0\hfill\&\null\par% +}} + +\def\setupmargnote{% +\tinytinytype \setleading \baselineskip=\leading \vskip\baselineskip} + +%%% 1-type size; 2-Number of lines; +%%% 3-TeX type name 1; 4-Printed type name 1; +%%% 5-TeX type name 2; 6-Printed type name 2 +\def\lineoftwo#1#2#3#4#5#6{% +\begingroup +\font\typeone=#3 at #1% +%% Set up baselineskip for the two samples +%% and the info for the margin notes for the +%% sample on the left: +\typeone\setleading \calcxaratio{\typeone} + \baselineskip=\leading + \mainleading=\leading +\font\typetwo=#5 at #1% +\line{% +\llap{\vtop{\setupmargnote% + \halign{\hfill##\cr#1\cr + \prettypt{\the\mainleading}\cr + \typefact{#3}\cr + 0.\the\xascrnum\cr}}\enskip}\hss% +\textbox{\typeone}{#2}{#4}% +\hskip\gutter +%% Setup the info for the margin note describing +%% the sample on the right +\typetwo \setleading \calcxaratio{\typetwo} +\textbox{\typetwo}{#2}{#6}% +\hss +\rlap{\enskip\vtop{\setupmargnote% + \halign{##\hfil\cr#1\cr + \prettypt{\the\mainleading}\cr + \typefact{#5}\cr + 0.\the\xascrnum\cr}}}% +}\endgroup} + +\def\lineofone#1#2#3#4{% +\begingroup +\font\typeone=#3 at #1 \typeone \setleading \calcxaratio{\typeone} +\baselineskip=\leading +\line{\hss%% +\hbox{\textbox{\typeone}{#2}{#4}% +\hss +\rlap{\enskip\vtop{\setupmargnote% + \halign{##\hfil\cr + #1\cr + \prettypt{\the\mainleading}\cr + \typefact{#3}\cr + 0.\the\xascrnum\cr}}}}% +\hss}\endgroup} + +\def\comment#1{% +\bigskip +\hrule +\smallskip +\line{\hfill\vbox{\hyphenpenalty10000 \emergencystretch1em% +\leftskip0pt plus 4em \rightskip0pt \parfillskip0pt +\tinytinytype\setleading\hsize.75\sampletextwd\noindent#1}}} + +%%% Calculates the largest display typesize to fit \hsize +%%% First typeset it very small (.1pt) and measure its width +%%% then scale it to get it to fit to \hsize +\def\dabc{AGQMstaefgpy1234?!\&} +\def\makedisplay#1{% +\dspfont={#1} +\font\dsp=\the\dspfont\space at .1pt +\setbox0=\hbox{\dsp \dabc}% +\dspsize=\hsize +\scratch=\dspsize \multiply\scratch10 \divisor=\wd0 +\divide\scratch by \divisor +\dspsize=\scratch pt \divide\dspsize by 100 +%%% Calculates the increment such that smallest display size is 12pt +\dspsizeincr=\dspsize \advance\dspsizeincr by -12pt +\divide\dspsizeincr by 6 \dsplineno7 +%%% Make the display +\bgroup +\loop\font\dsp=\the\dspfont\space at \dspsize \dsp \baselineskip1em + \hbox to\hsize{\dabc\hfill\hss\rlap{\tinytinytype\enskip\prettypt{\the\dspsize}}}% + \vskip.075in\relax + \ifnum\dsplineno>1 \global\advance\dsplineno by-1\relax + \advance\dspsize by -\dspsizeincr \font\dsp=\the\dspfont\space at \dspsize\repeat +\egroup} + +%%% +%%% Example +%%% + +%%% Setup + +\parindent0pt +\nopagenumbers +\hsize6in +\hoffset.25in +\gutter1pc +\sampletextwd2.85in +\displaytype{Helvetica} + + +%%% +%%% The Page +%%% + +\leftline{\medtype BodoniClassic} +\smallskip +\hrule +\bigskip + +%%% Display Type +\makedisplay{BodoniClassic-Roman} + +\bigskip +\hrule +\bigskip + +\lineoftwo{10pt}{9}{BodoniClassic-Roman}{Bodoni Classic}{BodoniClassic-Italic}{Bodoni Classic Italic} + +\bigskip + +\lineoftwo{10pt}{9}{BodoniClassic-Bold}{BodoniClassic bold}{BodoniClassic-BoldItalic}{BodoniClassic BoldItalic} + +\comment{BodoniClassic, drawn by Bruce Rogers; italic by Frederick Warde} + +%%% +%%% The End +%%% + +\bye
\ No newline at end of file diff --git a/Master/texmf-dist/tex/plain/typespec/TypeSp10.tex b/Master/texmf-dist/tex/plain/typespec/TypeSp10.tex new file mode 100644 index 00000000000..a2030e90234 --- /dev/null +++ b/Master/texmf-dist/tex/plain/typespec/TypeSp10.tex @@ -0,0 +1,266 @@ +%%% Stephen Moye +%%% Stephen_Moye@brown.edu +%%% Brown University +%%% Graphic Services + +\newdimen\leading +\newdimen\ascheight +\newdimen\xheight +\newdimen\adjust +\newdimen\sampletextwd +\newdimen\gutter +\newdimen\dist +\newdimen\dspsize +\newdimen\dspsizeincr +\newdimen\depth +\newdimen\mainleading + +\newcount\scratch +\newcount\divisor +\newcount\spconv +\newcount\divisor +\newcount\scratch +\newcount\sscratch +\newcount\intgp +\newcount\fracp +\newcount\dsplineno +\newcount\xascrnum + +\newtoks\texttoks +\newtoks\dspfont + +%%% + +\vbadness10000 + +%%% + +\def\setleading{% +\setbox0=\hbox{Ilpgy}% +\setbox1=\hbox{x}% +\xheight=\ht1 +\ascheight=\ht0 +\depth=\dp0 +\leading=\ht0 +\advance\leading \depth +\leading=1.25\leading +\dimen0=\ascheight +\divide\dimen0 by 2\relax +\advance\dimen0-\xheight +%%% Account for large x-height +\ifdim\dimen0<0pt \else \advance\leading-\dimen0\fi +%%% Account for missing descenders -- smallcaps for instance +\ifdim\depth<.1\ascheight \advance \leading .4\ascheight\fi} + +%%% Calculates ratio of x-height to ascender height +\def\calcxaratio#1{% +\dimen0=\the\fontdimen5#1 +\xascrnum=\dimen0% +\divisor=\number\ascheight +\multiply\xascrnum by 100\relax +\divide\xascrnum by\ascheight} + +%%% Type factor = ([Type size] * [# of characters in a sample])/(linear length of sample) +%%% Based on {\it Brown's Index}, Bruce Brown, Greenwood Publishing, Great Britain 1983 +\def\typefact#1{% +\dist=10pt +\font\facttext=#1 at\dist +\spconv=\number\dist +\multiply\spconv by 12 +\multiply\spconv by 204 +\setbox1=\hbox{\facttext\freqabc}% +\divisor=\number\wd1 +\divide\divisor by 100 +\divide\spconv by \divisor +\scratch=\spconv + \divide\scratch100 + \divisor=\scratch + \multiply \scratch100 + \advance\spconv-\scratch + \hbox{\number\divisor.\ifnum\spconv<10 0\the\spconv \else \the\spconv\fi}} + +%%% Convert from TeX's bulky 4-decimal point measurements to 1 +\def\prettypt#1{\dist=#1% +\multiply\dist10% +\scratch=\number\dist +\divide\scratch65536% +\intgp=\scratch \divide\intgp10% +\sscratch=\intgp +\multiply\sscratch10 \advance\scratch-\sscratch +\fracp=\scratch +\hbox{\the\intgp.\the\fracp}pt} + +\def\displaytype#1{% +\font\bigtype=#1 at 24pt +\font\medtype=#1 at 18pt +\font\normtype=#1 at 14pt +\font\smalltype=#1 at 12pt +\font\tinytype=#1 at 10pt +\font\tinytinytype=#1 at 8pt} + +\texttoks={\emergencystretch2em Brick quiz whangs jumpy veldt fox. +Nymphs vex, beg quick fjord waltz. +Quick wafting zephyrs vex bold Jim. +West quickly gave Bert handsome prizes for six juicy plums. +Freight to me sixty dozen quart jars and twelve black pans. +My help squeezed back in again and joined the weavers after six. +Turgid saxophones blew over Mick's jazzy quiff. +Five wine experts jokingly quizzed sample chablis. +My grandfather picks up quartz and valuable onyx jewels and objects. +Mix Zapf with Veljovic and get quirky Beziers. +All questions asked by five watch experts amazed the judge. +Back in June we delivered oxygen equipment of the same size. +We have just quoted on nine dozen boxes of grey lamp wicks. +A large fawn jumped quickly over white zinc boxes. +The exodus of jazzy pigeons is craved by squeamish walkers.} + +\def\freqabc{zjqx% + kkvv% + bbbbppppyyyywwwwgggg% + mmmmmmffffffccccccuuuuuu% + lllllllldddddddd% + hhhhhhhhhhhhrrrrrrrrrrrrssssssssssss% + ooooooooooooooiiiiiiiiiiiiiinnnnnnnnnnnnnn% + aaaaaaaaaaaaaaaatttttttttttttttttt% + eeeeeeeeeeeeeeeeeeeeeeee}% 204 chars + +%%% #1 - Font TeX name; #2 - number of lines in sample +%%% #3 - Printed name of font +\def\textbox#1#2#3{#1%\setleading%% +\setbox0=\vtop{% +\hbadness10000\hsize\sampletextwd\the\texttoks}% +\setbox1=\vsplit0 to #2\baselineskip +\vtop{\hsize\sampletextwd\centerline{\strut#1[#3]}\smallskip\unvbox1\relax% +%%% Comment-out the following line if you don't want/need numbers in the sample text +1\hfill2\hfill3\hfill4\hfill5\hfill6\hfill7\hfill8\hfill9\hfill0\hfill\&\null\par% +}} + +\def\setupmargnote{% +\tinytinytype \setleading \baselineskip=\leading \vskip\baselineskip} + +%%% 1-type size; 2-Number of lines; +%%% 3-TeX type name 1; 4-Printed type name 1; +%%% 5-TeX type name 2; 6-Printed type name 2 +\def\lineoftwo#1#2#3#4#5#6{% +\begingroup +\font\typeone=#3 at #1% +%% Set up baselineskip for the two samples +%% and the info for the margin notes for the +%% sample on the left: +\typeone\setleading \calcxaratio{\typeone} + \baselineskip=\leading + \mainleading=\leading +\font\typetwo=#5 at #1% +\line{% +\llap{\vtop{\setupmargnote% + \halign{\hfill##\cr#1\cr + \prettypt{\the\mainleading}\cr + \typefact{#3}\cr + 0.\the\xascrnum\cr}}\enskip}\hss% +\textbox{\typeone}{#2}{#4}% +\hskip\gutter +%% Setup the info for the margin note describing +%% the sample on the right +\typetwo \setleading \calcxaratio{\typetwo} +\textbox{\typetwo}{#2}{#6}% +\hss +\rlap{\enskip\vtop{\setupmargnote% + \halign{##\hfil\cr#1\cr + \prettypt{\the\mainleading}\cr + \typefact{#5}\cr + 0.\the\xascrnum\cr}}}% +}\endgroup} + +%% #1 Type size; #2 number of lines +%% #3 TeX name of type; #4 Printed type name +\def\lineofone#1#2#3#4{% +\begingroup +\font\typeone=#3 at #1 \typeone \setleading \calcxaratio{\typeone} +\baselineskip=\leading +\mainleading=\leading +\line{\hss%% +\hbox{\textbox{\typeone}{#2}{#4}% +\rlap{\enskip\vtop{\setupmargnote% + \halign{##\hfil\cr + #1\cr + \prettypt{\the\mainleading}\cr + \typefact{#3}\cr + 0.\the\xascrnum\cr}}}}% +\hss}\endgroup} + +\def\comment#1{% +\bigskip +\hrule +\smallskip +\line{\hfill\vbox{\hyphenpenalty10000 \emergencystretch1em% +\leftskip0pt plus 4em \rightskip0pt \parfillskip0pt +\tinytinytype\setleading\hsize.75\sampletextwd\noindent#1}}} + +%%% Calculates the largest display typesize to fit \hsize +%%% First typeset it very small (.1pt) and measure its width +%%% then scale it to get it to fit to \hsize +\def\dabc{AGQMstaefgpy1234?!\&} +\def\makedisplay#1{% +\dspfont={#1} +\font\dsp=\the\dspfont\space at .1pt +\setbox0=\hbox{\dsp \dabc}% +\dspsize=\hsize +\scratch=\dspsize \multiply\scratch10 \divisor=\wd0 +\divide\scratch by \divisor +\dspsize=\scratch pt \divide\dspsize by 100 +%%% Calculates the increment such that smallest display size is 12pt +\dspsizeincr=\dspsize \advance\dspsizeincr by -12pt +\divide\dspsizeincr by 6 \dsplineno7 +%%% Make the display +\bgroup +\loop\font\dsp=\the\dspfont\space at \dspsize \dsp \baselineskip1em + \hbox to\hsize{\dabc\hfill\hss\rlap{\tinytinytype\enskip\prettypt{\the\dspsize}}}% + \vskip.075in\relax + \ifnum\dsplineno>1 \global\advance\dsplineno by-1\relax + \advance\dspsize by -\dspsizeincr \font\dsp=\the\dspfont\space at \dspsize\repeat +\egroup} + +%%% +%%% Example +%%% + +%%% Setup + +\parindent0pt +\nopagenumbers +\hsize6in +\hoffset.25in +\gutter1pc +\sampletextwd2.85in +\displaytype{Helvetica} + + +%%% +%%% The Page +%%% + +\leftline{\medtype Romus} +\smallskip +\hrule +\bigskip + +%%% Display Type +\makedisplay{Romus} + +\bigskip +\hrule +\bigskip + +\lineofone{10pt}{9}{Romus}{Romus} + +\bigskip + +\lineofone{10pt}{9}{RomusI}{Romus Italic} + +\comment{Romulus and Cancelleresca Bastarda drawn by Jan van Krimpen, digitized by Richard Beatty.} + +%%% +%%% The End +%%% + +\bye
\ No newline at end of file diff --git a/Master/texmf-dist/tex/plain/vertex/aer.sty b/Master/texmf-dist/tex/plain/vertex/aer.sty new file mode 100644 index 00000000000..6cabcd82e75 --- /dev/null +++ b/Master/texmf-dist/tex/plain/vertex/aer.sty @@ -0,0 +1,155 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% This is the AER.STY for ECON.TEX +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Special fonts +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\font\fourteenHelv=cmss10 at 14pt +\font\sctwelve=cmcsc10 scaled\magstep1 +\font\sctwelve=cmcsc10 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Set pagesize +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\input twocol + +\newdimen\pageheight \pageheight=49pc +\newdimen\pagewidth \pagewidth=34pc +\newdimen\fullsize \fullsize=34pc +\newdimen\ruleht \ruleht=.5pt + +\vsize=49pc +\hsize=34pc +\colwidth=16pc + +\hoffset=.5in +\voffset=0in + +\parindent=20pt + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Headline and footline +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\nopagenumbers +\def\rightheadline{\hbox to \fullsize{{VOL. 99 No. 9\hfil\scten\runname\hskip 3em\runtitle}\hfil{\folio}}} +\def\leftheadline{\hbox to \fullsize{\folio \hfil {\tenpoint THE ARMENIAN ECONOMIC REVIEW}\hfil JUNE, 1986}} +\headline={\ifodd\pageno\rightheadline \else\leftheadline\fi} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Define topmatter style +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\TitleFont{\fourteenHelv} +\def\AuthorFont{\sctwelve} + +\def\DoCenteredTitle#1{ + \titlepage\global + \CenterBox + \titlebox + \TitleFont + {17pt} + {#1}} + +\def\title#1{\DoCenteredTitle{#1}} + +\def\author#1{\DoCenteredAuthor{{\it By}\space{#1$^*$}}} +\def\authortwo#1{\message{Use ``author'' for both authors in this style.}} + +\def\affil#1{\global\setbox\affilbox\hbox{\tenit\noindent #1}} +\def\affiltwo#1{\message{In the aer.sty, affiliations go in the +"thanks" footnote.}} + +\def\thanks#1{\global\setbox\thanksbox\hbox{\eightpoint $^*$#1}} + +\def\date#1{\global\setbox\datebox\vbox{\tenrm #1 \hfil}} + +\def\abstract#1{\global\setbox\abstractbox\vbox{\sl\hsize=23pc #1}} + +\def\keywords#1{} +\def\address#1{} + +\def\topmatter{\relax} +\def\endtopmatter{\DoTop} +\def\document{\DoPaper} + +\RomanSectiontrue +\let\SectionFont=\bf + +\def\section#1\par{\bigskip\goodbreak + \SubsectionNumber=0\noindent + {\hfil\bf\uppercase\expandafter{\romannumeral\SectionNumber}.\enskip #1\hfil} + \nobreak\medskip + \global\advance\SectionNumber by 1 + \noindent} + +% Something is screwed up with \romannumeral and centering +%\def\section#1{\DoCenteredSection{#1}} + +\def\subsection#1\par{\bigskip\goodbreak\noindent + {\hfil\it \number\SectionNumber.\number\SubsectionNumber.\enspace #1\hfil} + \nobreak\medskip\noindent} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% References +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\let\RefFont=\tenpoint + +\def\Refs{\vskip1in{\hfil\tenpoint REFERENCES\hfil}\vskip 2pc\RefFont} + +\def\by#1{\setbox\bybox\hbox{\ninepoint\bf #1}} +\def\vol#1{\setbox\volbox\hbox{\it #1}} + +\def\SetRef{ + \ifjour\jourfalse\vbox{\HangRef + \unhbox\bybox (\unhbox\yrbox), ``\unhbox\paperbox,'' + \unhbox\jourbox, {\unhbox\volbox}, + \ifvoid\nobox\relax\else (\unhbox\nobox), \fi + \unhbox\pagesbox. \par}\fi + + \ifbook\bookfalse\par\vbox{\HangRef + \unhbox\bybox\space {\it \unhbox\bookbox}. \unhbox\publaddrbox : + \unhbox\publbox , \unhbox\yrbox.\par}\fi + + \ifinbook\inbookfalse\par\vbox{\HangRef + \unhbox\bybox\space (\unhbox\yrbox): ``\unhbox\paperbox,'' in + {\it \unhbox\bookbox}, ed. by {\rm \unhbox\editorbox}. + \unhbox\publaddrbox : \unhbox\publbox \ifvoid\pagesbox\relax + \else, \unhbox\pagesbox .\fi\par}\fi + + \ifunpublished\unpublishedfalse\par\vbox{\HangRef + \unhbox\bybox\space(\unhbox\yrbox): + ``\unhbox\paperbox,'' \unhbox\paperinfobox .\par}\fi +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Set the paper +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\parindent=20pt + +\def\DoTop{\Reset +\vbox{ +\line{\hfil\box\titlebox\hfil} +\vskip 2pc +\line{\hfil\box\authorbox\hfil} +\vskip1pc +\line{\hfil\box\abstractbox\hfil} +\vfootnote{*}{\unhbox\thanksbox} +\vskip2pc}} + +\def\DoPaper{\begindoublecolumns} + +\let\eqno=\leqno +\tenpoint +\hfuzz=8pt +\def\bye{\enddoublecolumns\vfill\eject\end} +\def\footnoterule{}
\ No newline at end of file diff --git a/Master/texmf-dist/tex/plain/vertex/ecnmet.sty b/Master/texmf-dist/tex/plain/vertex/ecnmet.sty new file mode 100644 index 00000000000..1d941b0de7a --- /dev/null +++ b/Master/texmf-dist/tex/plain/vertex/ecnmet.sty @@ -0,0 +1,151 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% ecnmet.sty -- Economagica style for VerTeX +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Set pagesize +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\hsize=29pc +\vsize=46pc +\hoffset=1in +\voffset=1in + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Headline and footline +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\runningname{Use $\$ runningname} +\runningtitle{Use $\$ runningtitle} + +\nopagenumbers +\def\rightheadline{\hbox to \hsize{{\hfil\scten\runtitle}\hfil{\folio}}} +\def\leftheadline{\hbox to \hsize{\folio \hfil {\scten\runname}\hfil}} +\headline={\ifodd\pageno\rightheadline \else\leftheadline\fi} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Redefine figure macro +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\Figure#1#2#3{ + \midinsert + \vbox to #2{\vfil} + \hbox to \hsize{\hss\vbox{\parindent=0pt + {\scten Figure \number#1}.---\rm #3}} + \endinsert} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Define topmatter style +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\let\TitleFont=\sctwelve +\let\AuthorFont=\scten + +\def\title#1{\DoCenteredTitle{\expandafter\uppercase{#1}}} + +\def\author#1{\DoCenteredAuthor{By #1}} +\def\authortwo#1{\message{Use ``author'' for both authors in this style.}} + +\def\affil#1{\global\setbox\affilbox\vbox{\nineit\noindent #1}} +\def\affiltwo#1{\message{Do not use "affiltwo" in this style.}} + +\def\thanks#1{\global\setbox\thanksbox\hbox{{\eightpoint #1\par}}} + +\def\date#1{\global\setbox\datebox\vbox{\tenrm #1 \hfil}} +\def\version#1{} + +\def\abstract#1{\global\setbox\abstractbox\vbox + {\eightpoint\hsize=23pc\parindent=8pt#1\par}} + +\def\keywords#1{} +\def\address#1{} + +\def\topmatter{\relax} +\def\endtopmatter{\DoTop} + +\let\SectionFont=\scten + +\RomanSectionfalse + +\def\section#1\par{\DoCenteredSection{\uppercase{#1}}} + +\def\subsection#1\par{\BigBreak\noindent + {\hfil \it \number\SectionNumber.\number\SubsectionNumber\enspace #1\hfil} + \nobreak\medskip\noindent} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Math conventions +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\outer\def\proclaim #1. #2\par{\medbreak + {\scten#1:\enspace}{\sl#2}\par + \ifdim\lastskip<\medskipamount \removelastskip\penalty55\medskip\fi} + +\let\eqno=\leqno +\let\eqalignno=\leqalignno + +\def\proof{\goodbreak{\scten Proof:\enspace}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% References +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\let\RefFont=\tenpoint +\def\vol#1{\setbox\volbox\hbox{#1}} + +\def\Refs{\vskip1in +\centerline{\scten REFERENCES} +\vskip 2pc\RefFont} + +\def\by#1{\setbox\bybox\hbox{\scten{#1}}} + +\def\SetRef{ + \vskip 3pt + \ifjour\jourfalse\vbox{\HangRef + \unhbox\bybox:\space ``\unhbox\paperbox,'' + {\unhbox\jourbox} \unhbox\volbox\space + \ifvoid\nobox\relax\else\space no. \unhbox\nobox \fi + (\unhbox\yrbox), \unhbox\pagesbox. \par}\fi + + \ifbook\bookfalse\par\vbox{\HangRef + \unhbox\bybox\space {\it \unhbox\bookbox}. \unhbox\publaddrbox : + \unhbox\publbox , \unhbox\yrbox.\par}\fi + + \ifinbook\inbookfalse\par\vbox{\HangRef + \unhbox\bybox\space (\unhbox\yrbox): ``\unhbox\paperbox,'' in + {\it \unhbox\bookbox}, ed. by {\rm \unhbox\editorbox}. + \unhbox\publaddrbox : \unhbox\publbox \ifvoid\pagesbox\relax + \else, \unhbox\pagesbox .\fi\par}\fi + + \ifunpublished\unpublishedfalse\par\vbox{\HangRef + \unhbox\bybox: + ``\unhbox\paperbox, '' \unhbox\paperinfobox,\space\unhbox\yrbox.\par}\fi +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Set the paper +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\titlehead{\line{\hfil\eightpoint{\it Economagica}, Vol. 99, No. 9 (March, 1999) pp. 9--99\hfil}} +\def\titlefoot{\hfil} + +\def\DoTop{ +\vglue 1pc +\line{\hfil\box\titlebox\hfil} +\vskip 1pc +\line{\hfil\box\authorbox\hfil} +\ifvoid\thanksbox\relax\else + \vfootnote{$^1$}{\eightpoint \unhbox\thanksbox \par}\fi +\vskip1pc +\line{\hfil\box\abstractbox\hfil} +\vskip 2.5pc} + +\def\document{\tenpoint\relax} + +\parindent=10pt +\tenpoint +\def\footnoterule{}
\ No newline at end of file diff --git a/Master/texmf-dist/tex/plain/vertex/fntest.tex b/Master/texmf-dist/tex/plain/vertex/fntest.tex new file mode 100644 index 00000000000..ad762563521 --- /dev/null +++ b/Master/texmf-dist/tex/plain/vertex/fntest.tex @@ -0,0 +1,92 @@ +\topmatter +\runningtitle{TEST FILE} +\runningname{HAL R. VARIAN} +\thanks{Thanks to various \TeX\ wizards and beta testers for aid in this +endeavor. I also want to thank mom and dad, little brother, my teachers, +the National Science Foundation, Jim and Tammy Bakker, and anyone else I +can think of that will make this a nice long footnote for testing purposes.} +\title{A Test File for Ver\TeX} +\author{Hal R. Varian} +\affil{Perversity of Michigan} +\date{September, 1985} +\version{\today} +\abstract{This paper provides a torture test for Ver\TeX in order +to see if a few of its features work as advertised.} + +\keywords{Ver\TeX, typesetting, desktop publishing} + +\address{Prof. Hal R. Varian, Department of Economics, +University of Michigan, Ann Arbor, MI 48109, U.S.A.} + +\endtopmatter +%\doublespace +\document + +\noindent This document is provides a test of the various features of the +formatting\fnote{Here is the first footnote to see if the in-sentence +spacing works correctly.} package Ver\TeX. It doesn't really do much else. +Ver\TeX\ allows easy formatting of papers.\fnote{Here is a footnote, in order +to see if the between-footnote spacing works correctly.} + +\section Features of Ver\TeX + +Among Ver\TeX's many features are subsections, proofs, etc.\fnote{Here is +yet another footnote!} Here is another line to add to this sentence to +check the spacing. + +\subsection This is a subsection + +Here is a theorem:\fnote{Here is a very, very, very, very, very, very, very, +very, very, very, very, very, very, very, very, very, very, very, very, +very, very, very, very, very, very, very, very, very, very, very, very, +very, very, very, very, very, very, very, very, very, very, very, very, +very, very long footnote.} + +\proclaim Theorem. Consider the following equation + $$F(x) = \int_0^x f(t) dt.$$ +It follows that $F'(x) = f(x)$. + +\proof The fundamental theorem of calculus. \qed + +That's about all there is to it.\fnote{Except for footnotes. Except for +footnotes. Except for footnotes. Except for footnotes. Except for +footnotes. Except for footnotes. Except for footnotes. Except for +footnotes. Except for footnotes. Except for footnotes. Except for +footnotes. Except for footnotes. Except for footnotes. Except for +footnotes.} + +That's about all there is to it. That's about all there is to it. That's +about all there is to it. That's about all there is to it. That's about +all there is to it. That's about all there is to it. That's about all +there is to it. That's about all there is to it. That's about all there +is to it. That's about all there is to it. That's about all there is to +it. + +You can put quotations in Ver\TeX\ quite easily, such as: + +\quote{Nothing ventured, nothing gained. Nothing ventured, nothing gained. +Nothing ventured, nothing gained. Nothing ventured, nothing gained. +Nothing ventured, nothing gained. Nothing ventured, nothing gained. +Nothing ventured, nothing gained. Nothing ventured, nothing gained. +Nothing ventured, nothing gained.} + +Now that's a nice quotation, even though it is somewhat repetitive. + +%Use in REStud.sty +%\Notes + +\Refs + +\ref \by{Afriat, S.} \yr{1967a} \paper{The Construction of a Utility +Function from Expenditure Data} \jour{International Economic Review} +\vol{8} \pages{67--77} \endref + +\ref \by{Breeden, D. and R. Litzenberger} \yr{1978} \paper{Prices of +State-Contingent Claims Implicit in Option Prices} \jour{Journal of +Business} \vol{9} \pages{621--851} \endref + +\ref \by{Varian, Hal R.} \yr{1986} \book{Intermediate Microeconomics} +\publ{W. W. Norton \& Co.} \publaddr{New York} \endref + +%\PrintEndNotes + diff --git a/Master/texmf-dist/tex/plain/vertex/jep.sty b/Master/texmf-dist/tex/plain/vertex/jep.sty new file mode 100644 index 00000000000..66779c80070 --- /dev/null +++ b/Master/texmf-dist/tex/plain/vertex/jep.sty @@ -0,0 +1,184 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% This is the Journal of Economic Perspectives style +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Load special fonts +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\font\twentyBaskB=cmbx12 at 20pt %chapter titles +\font\sixteenBaskR=cmr12 at 16pt %authors names +\font\tenBaskI=cmti10 at 10pt %running heads +\font\twelveBaskB=cmbx12 at 12pt %article subheads +\font\elevenBaskI=cmti10 at 11pt %article subsection +\font\twentyfourBaskB=cmbx12 at 24pt %symposium title +\font\twentyBaskR=cmr12 at 20pt %department subhead +\font\bigR=cmr12 at 39pt %first letter of article + + +% Use the following definitions if you have a LaserWriter. +% The PostScript fonts look much better when scaled. +% +%\font\twentyBaskB=psmtimb at 20pt %chapter titles +%\font\sixteenBaskR=psmtimr at 16pt %authors names +%\font\tenBaskI=psmtimi at 10pt %running heads +%\font\twelveBaskB=psmtimb at 12pt %article subheads +%\font\elevenBaskI=psmtimi at 11pt %article subsection +%\font\twentyfourBaskB=psmtimb at 24pt %symposium title +%\font\twentyBaskR=psmtimr at 20pt %department subhead +%\font\bigR=psmtimr at 39pt %first letter of article + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Set pagesize +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\hsize=30pc +\vsize=53pc +\hoffset=1in +\voffset=0in + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Headline and footline +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\emskip{\hskip 1em} + +\def\dropstrut{\vrule height 0pt width 0pt depth 6pc} + +\nopagenumbers +\def\rightheadline{\hbox to \fullsize{\hfil{\tenpoint\it \runtitle}\emskip{\tenpoint\folio}}\dropstrut} +\def\leftheadline{\hbox to \fullsize{\tenpoint\folio\emskip {\tenpoint\it Economic Perspectives}\hfil}\dropstrut} +\headline={\ifodd\pageno\rightheadline \else\leftheadline\fi} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Define topmatter style +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\TitleFont{\twentyBaskB} +\def\AuthorFont{\sixteenBaskR} + +\def\DoLeftTitle#1{ + \titlepage\global + \LeftBox + \titlebox + \TitleFont + {24pt} + {#1}} + +\def\title#1{\DoLeftTitle{#1}} + +\def\author#1{\DoLeftAuthor{#1}} + +\def\affil#1{\global\setbox\affilbox\vbox{\nineit\hfil#1\hfil}} + +\def\thanks#1{\global\setbox\thanksbox\hbox{\it \vrule height 4pt width 4pt depth 0pt\hskip3pt #1}} + +\def\date#1{\global\setbox\datebox\vbox{\tenrm #1 \hfil}} + +\def\abstract#1{\global\setbox\abstractbox\vbox{\ninepoint\hsize=23pc \noindent #1}} + +\def\keywords#1{} +\def\address#1{} + +\def\topmatter{\relax} +\def\endtopmatter{\DoTop} +\def\document{\DoPaper\noindent} + +\def\SectionFont{\twelveBaskB} +\RomanSectionfalse + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Big letter to start first paragraph +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\start#1{\hang\hangafter=-3\hangindent=30pt + \vbox to 0pt{ + \vskip 9pt\hsize=.25in + \hbox{\hfil\bigR #1\hss} + \vss}\noindent} + + +\bigskipamount=32pt plus 2pt minus 2pt +\medskipamount=14pt plus 2pt minus 2pt + +%%Modified \DoLeftSection in VerTeX to eliminate numbers and \noindent + +\def\DoLeftSection#1{ + \BigBreak + \SubsectionNumber=0 + \LeftBox + \sectionbox + \SectionFont + \normalbaselineskip + {#1} + \line{\box\sectionbox\hfil} + \global\advance\SectionNumber by 1 + \nobreak\medskip} + +\def\section#1\par{\DoLeftSection{#1}} + +\def\subsection#1\par{\BigBreak\noindent{\elevenBaskI #1}\nobreak\medskip} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% References +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\let\RefFont=\eightpoint + +\def\Refs{ +\medskip\noindent\unhbox\thanksbox\par +\vskip 75pt plus 5pt minus 5pt\goodbreak +\line{\tenpoint\bf References \hfil\par} +\vskip 20pt +\RefFont\baselineskip=10pt +\parindent=1em} + +\def\by#1{\setbox\bybox\hbox{\eightpoint\bf #1}} + +\def\SetRef{\vskip 2pt + \ifjour\jourfalse\vbox{ + \unhbox\bybox, ``\unhbox\paperbox,'' + \unhbox\jourbox, \unhbox\yrbox, {\unhbox\volbox}, + \ifvoid\nobox\relax\else (\unhbox\nobox), \fi + \unhbox\pagesbox. \par}\fi + + \ifbook\bookfalse\par\vbox{ + \unhbox\bybox\space {\it \unhbox\bookbox}. \unhbox\publaddrbox : + \unhbox\publbox , \unhbox\yrbox.\par}\fi + + \ifinbook\inbookfalse\par\vbox{ + \unhbox\bybox, ``\unhbox\paperbox,'' in + {\it \unhbox\bookbox}, ed. by {\rm \unhbox\editorbox}. + \unhbox\publaddrbox : \unhbox\publbox, \unhbox\yrbox: + \ifvoid\pagesbox\relax\else, \unhbox\pagesbox .\fi\par}\fi + + \ifunpublished\unpublishedfalse\par\vbox{ + \unhbox\bybox, ``\unhbox\paperbox,'' + \unhbox\yrbox, \unhbox\paperinfobox .\par}\fi +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Set the paper +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\titlehead{\line{\it\hfil Economic Perspectives\emskip Volume 1, Number 1 \emskip July, 1987 \emskip Pages 63--70}} +\def\titlefoot{\line{\hfil}} + +\def\DoTop{ +\vglue 7pc +\line{\box\titlebox\hfil} +\vskip 1pc +\line{\box\authorbox\hfil} +\vskip 4pc} + +\def\DoPaper{\relax} + + +\tenpoint +\parindent=20pt +\newdimen\fullsize \fullsize=30pc +\topskip=3.5pc +\def\footnoterule{}
\ No newline at end of file diff --git a/Master/texmf-dist/tex/plain/vertex/jepcont.tex b/Master/texmf-dist/tex/plain/vertex/jepcont.tex new file mode 100644 index 00000000000..d0988c0a265 --- /dev/null +++ b/Master/texmf-dist/tex/plain/vertex/jepcont.tex @@ -0,0 +1,93 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Table of Contents for the Journal of Economic Perspectives +% trial version of macros +% (uses LaserWriter fonts) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Font definitions +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\font\tenBaskI=psmtimi at 10pt %The Journal of +\font\twentyfourBaskBI = psmtimbi at 24pt %Economic Perspectives +\font\twentyBaskR=psmtimr at 20pt %Contents +\font\twelveBaskI=psmtimi at 12pt %Vol 1 . No 1 . July 1987 +\font\twelveBaskB=psmtimb at 12pt %Symposiums +\font\tenBaskBI=psmtimbi at 10pt %subheads for symposiums +\font\tenBaskR=psmtimr at 10pt %contents + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Size and miscellaneous macros +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\hsize=30pc +\vsize=53pc +\hoffset=1in +\footline{\hfill} +\def\leaderfill{\leaders\hbox to 5pt{\hss .\hss}\hfill} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Make Header +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\MakeHeader#1#2#3{ +\centerline{\tenBaskI The Journal of} +\vskip 4pt +\centerline{\baselineskip=28pt \twentyfourBaskBI Economic Persepectives} +\vskip 8pt +\hrule width \hsize +\vskip 10pt +\line{{\twentyBaskR Contents}\hfil{\twelveBaskI Volume #1 $\bullet$ Number #2 $\bullet$ #3}} +\vskip 10pt +\hrule width \hsize} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Symposiums and articles +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\MajorHead#1{\vskip 20pt\line{\twelveBaskB #1 \hfil}} +\def\SymposiumTitle#1{\medskip\baselineskip=15pt\line{\tenBaskBI #1: \hfil}} +\def\Art#1#2#3{\line{\rm #1, ``#2'' \leaderfill #3 \par}} +\def\Dept#1#2{\line{\rm #1 \leaderfill #2 \par}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Material for contents +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\MakeHeader{1}{1}{July 1987} + +\MajorHead{Symposiums} +\SymposiumTitle{Tax Reform} +\Art{Alan Auerback}{Tax Reform Act of 1986 and Capital Costs}{5} +\Art{James M. Buchanan}{Tax Reform as Political Choice}{35} +\Art{Hal R. Varian}{The Arbitrage Principle in Financial Economics}{50} +\Art{Alan Auerback}{Tax Reform Act of 1986 and Capital Costs}{5} +\Art{James M. Buchanan}{Tax Reform as Political Choice}{35} +\Art{Hal R. Varian}{The Arbitrage Principle in Financial Economics}{50} + +\vskip 15pt +\SymposiumTitle{Arbitrage} +\Art{Alan Auerback}{Tax Reform Act of 1986 and Capital Costs}{5} +\Art{James M. Buchanan}{Tax Reform as Political Choice}{35} +\Art{Hal R. Varian}{The Arbitrage Principle in Financial Economics}{50} + +\vskip 10pt +\MajorHead{Other Articles} +\Art{Alan Auerback}{Tax Reform Act of 1986 and Capital Costs}{5} +\Art{James M. Buchanan}{Tax Reform as Political Choice}{35} +\Art{Hal R. Varian}{The Arbitrage Principle in Financial Economics}{50} +\Art{Alan Auerback}{Tax Reform Act of 1986 and Capital Costs}{5} +\Art{James M. Buchanan}{Tax Reform as Political Choice}{35} +\Art{Hal R. Varian}{The Arbitrage Principle in Financial Economics}{50} + +\vskip 10pt +\MajorHead{Departments} +\Dept{Good Things to Read}{55} +\Dept{Puzzles}{60} +\Dept{Notes}{65} + +\bye + diff --git a/Master/texmf-dist/tex/plain/vertex/jet.sty b/Master/texmf-dist/tex/plain/vertex/jet.sty new file mode 100644 index 00000000000..604a1b96f54 --- /dev/null +++ b/Master/texmf-dist/tex/plain/vertex/jet.sty @@ -0,0 +1,174 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% jet.sty -- Journal of Economic Theorems +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Load special fonts +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\font\twelveHelv=cmss10 at 12pt + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Set pagesize +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\hsize=26pc +\vsize=45pc +\hoffset=1in +\voffset=1in + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Headline and footline +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\runningname{Use $\$ runningname} +\runningtitle{Use $\$ runningtitle} + +\nopagenumbers +\def\rightheadline{\hbox to \hsize{{\hfil\scten\runtitle}\hfil{\folio}}} +\def\leftheadline{\hbox to \hsize{\folio \hfil {\scten\runname}\hfil}} +\headline={\ifodd\pageno\rightheadline \else\leftheadline\fi} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Redefine figure macro +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\Figure#1#2#3{ + \midinsert + \vbox to #2{\vfil} + \hbox to \hsize{\hss\vbox{\parindent=0pt + {\scten Figure \number#1}.---\rm #3}} + \endinsert} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Define topmatter style +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\let\TitleFont=\twelveHelv +\let\AuthorFont=\scten + +\def\DoCenteredTitle#1{ + \titlepage\global + \CenterBox + \titlebox + \TitleFont + {15pt} + {#1}} + +\def\title#1{\DoCenteredTitle{#1}} + +\def\author#1{\DoCenteredAuthor{#1}} +\def\authortwo#1{\message{Use ``author'' for both authors in this style.}} + +\def\affil#1{\global\setbox\affilbox\vbox{\nineit\noindent #1}} +\def\affiltwo#1{\message{Do not use "affiltwo" in this style.}} + +\def\thanks#1{\global\setbox\thanksbox\hbox{{\eightpoint#1\par}}} + +\def\date#1{\global\setbox\datebox\vbox{\tenrm #1 \hfil}} +\def\version#1{} + +\def\abstract#1{\global\setbox\abstractbox\vbox + {\eightpoint\hsize=23pc\parindent=8pt#1\par}} + +\def\keywords#1{} +\def\address#1{} + +\def\topmatter{\relax} +\def\endtopmatter{\DoTop} + +\let\SectionFont=\scten +\RomanSectionfalse + +\def\section#1\par{\DoCenteredSection{#1}} + +\def\subsection#1\par{\BigBreak\noindent + {\it \number\SectionNumber.\number\SubsectionNumber\enspace #1\hfil} + \nobreak\medskip\noindent} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Math conventions +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\outer\def\proclaim #1. #2\par{\medbreak + {\scten#1.\enspace}{\sl#2}\par + \ifdim\lastskip<\medskipamount \removelastskip\penalty55\medskip\fi} + + +\def\proof{\goodbreak{\it Proof.\enspace}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% References +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\let\RefFont=\ninepoint +\def\vol#1{\setbox\volbox\hbox{#1}} + +\def\Refs{\vskip1in +\centerline{\scten REFERENCES} +\vskip 2pc\RefFont} + +\def\by#1{\setbox\bybox\hbox{\scten{#1}}} + +\newcount\RefNumber +\RefNumber=1 + +\def\DoNumber{\HangRef\number\RefNumber.\space\global\advance\RefNumber by 1} + +\def\SetRef{ + \vskip 2pt + \ifjour\jourfalse\vbox{\DoNumber + \unhbox\bybox,\space\unhbox\paperbox, + {\unhbox\jourbox} \unhbox\volbox\space + \ifvoid\nobox\relax\else\space no. \unhbox\nobox \fi + (\unhbox\yrbox), \unhbox\pagesbox. \par}\fi + + \ifbook\bookfalse\par\vbox{\DoNumber + \unhbox\bybox\space {``\unhbox\bookbox''}, \unhbox\publbox , + \unhbox\publaddrbox, \unhbox\yrbox.\par}\fi + + \ifinbook\inbookfalse\par\vbox{\DoNumber + \unhbox\bybox\space, \unhbox\paperbox, in + {``\unhbox\bookbox''}, ed. by {\rm \unhbox\editorbox}, + \unhbox\publbox,\unhbox\publaddrbox,\space(\unhbox\yrbox), + \ifvoid\pagesbox\relax + \else, \unhbox\pagesbox .\fi\par}\fi + + \ifunpublished\unpublishedfalse\par\vbox{\DoNumber + \unhbox\bybox, \unhbox\paperbox, + \unhbox\paperinfobox,\space\unhbox\yrbox.\par}\fi +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Set the paper +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\titlehead{\vbox{\eightpoint + \line{Reprinted from JOURNAL OF ECONOMIC THEORY, Vol. 9., No. 9, October 1999\hfil} + \line{Copyright $\copyright$ Ecodemic Press, Inc. {\it Printed in U.S.A.}\hfil}}} +\def\titlefoot{\vbox{\sixpoint + \line{Copyright $\copyright$ 1974 by Ecodemic Press, Inc.\hfil} + \line{All rights of reproduction in any form reserved.\hfil}}} + +\def\DoTop{ +\vglue 4pc +\line{\hfil\box\titlebox\hfil} +\vskip 1pc +\line{\hfil\box\authorbox\hfil} +\ifvoid\thanksbox\relax\else + \vfootnote{$^*$}{\eightpoint \unhbox\thanksbox \par}\fi +\vskip1pc +\line{\hfil\box\addressbox\hfil} +\hfil\box\abstractbox\hfil +\vskip 2.5pc} + +\def\document{\tenpoint\relax} + +\parindent=10pt +\tenpoint +\def\footnoterule{}
\ No newline at end of file diff --git a/Master/texmf-dist/tex/plain/vertex/jpe.sty b/Master/texmf-dist/tex/plain/vertex/jpe.sty new file mode 100644 index 00000000000..f2e49922604 --- /dev/null +++ b/Master/texmf-dist/tex/plain/vertex/jpe.sty @@ -0,0 +1,128 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Journal of Polemical Economy style +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Load special fonts +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\font\fourteenhelvB=cmssbx10 at 14pt +\font\twelvehelv=cmss10 at 12pt + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Set pagesize +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\hsize=26pc +\vsize=45pc +\hoffset=1in +\voffset=1in + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Headline and footline +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\nopagenumbers +\def\rightheadline{\hbox to \hsize{{\scten\runtitle}\hfil{\folio}}} +\def\leftheadline{\hbox to \hsize{\folio \hfil {\scten Journal of Polemical Economy}}} +\headline={\ifodd\pageno\rightheadline \else\leftheadline\fi} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Define topmatter style +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\let\TitleFont=\fourteenhelvB +\let\AuthorFont=\twelvehelv + +\def\title#1{\DoLeftTitle{#1}} + +\def\author#1{\DoLeftAuthor{#1}} + +\def\affil#1{\global\setbox\affilbox\hbox{\nineit\noindent #1 \hfil}} + +\def\thanks#1{\global\setbox\thanksbox\hbox{\eightpoint #1}} + +\def\date#1{\global\setbox\datebox\vbox{\tenrm #1 \hfil}} + +\def\abstract#1{\global\setbox\abstractbox\vbox + {\eightpoint\hsize=23pc \noindent #1}} + +\def\keywords#1{} +\def\address#1{} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Sections and subsections +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\let\SectionFont=\tenbf +\RomanSectiontrue + +\def\section#1\par{\DoLeftSection{#1}} + +\def\subsection#1\par{\BigBreak\noindent + {\it #1} + \nobreak\medskip\noindent} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% References +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\let\RefFont=\tenpoint + +\def\Refs{\vskip.5in\noindent{\tenpoint\bf References}\vskip 2pc\RefFont} + +\def\SetRef{\vskip 1pt + + \ifjour\jourfalse\vbox{\HangRef + \unhbox\bybox\space ``\unhbox\paperbox .'' + {\unhbox\jourbox } \unhbox\volbox + \ifvoid\nobox\relax\else no. \unhbox\nobox \fi + \space (\unhbox\yrbox): \unhbox\pagesbox. \par}\fi + + \ifbook\bookfalse\par\vbox{\HangRef + \unhbox\bybox\space {\it \unhbox\bookbox}. + \unhbox\publaddrbox : + \unhbox\publbox , \unhbox\yrbox.\par}\fi + + \ifinbook\inbookfalse\par\vbox{\HangRef + \unhbox\bybox\space (\unhbox\yrbox) ``\unhbox\paperbox,'' in + {\it \unhbox\bookbox}, ed. {\rm \unhbox\editorbox}. + \unhbox\publaddrbox : \unhbox\publbox \ifvoid\pagesbox\relax + \else, \unhbox\pagesbox\fi .\par}\fi + + \ifunpublished\unpublishedfalse\par\vbox{\HangRef + \unhbox\bybox\space(\unhbox\yrbox) + ``\unhbox\paperbox,'' \unhbox\paperinfobox .\par}\fi +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Set the paper +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\titlehead{\hfil} +\def\titlefoot{\hfil} + +\def\DoTop{\Reset +\line{\box\titlebox\hfil} +\vskip 4.5pc +\hrule +\ifvoid\thanksbox\relax\else\vfootnote{} + {\eightpoint\unhbox\thanksbox\endfnote}\fi +\vskip 1.1pc +\line{\box\authorbox\hfil} +\vskip .5pc +\line{\box\affilbox\hfil} +\vskip 3.5pc +\line{\hfil\box\abstractbox\hfil} +\vskip 3pc} + +\def\topmatter{\relax} +\def\endtopmatter{\DoTop} +\def\document{\DoPaper\noindent} +\def\DoPaper{\relax} + +\tenpoint +\parindent=12pt +\def\footnoterule{}
\ No newline at end of file diff --git a/Master/texmf-dist/tex/plain/vertex/ppt.sty b/Master/texmf-dist/tex/plain/vertex/ppt.sty new file mode 100644 index 00000000000..f19b8b0dc0f --- /dev/null +++ b/Master/texmf-dist/tex/plain/vertex/ppt.sty @@ -0,0 +1,181 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% This is the ppt.sty (Preprint style) for VerTeX +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Special fonts +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\font\twelveHelv=cmss10 at 12pt +\font\fourteenHelvB=cmss10 at 14pt + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Pagesize +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\hsize=6.5 true in +\vsize=8.9 true in + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Headline and footline +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%None in this style + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Topmatter style +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newbox\covertitlebox +\newbox\coverauthorbox + +\def\DoCoverTitle#1{\titlepage\global + \CenterBox + \covertitlebox + \fourteenHelvB + {16pt} + {#1}} + +\def\DoCoverAuthor#1{ + \CenterBox + \coverauthorbox + \twelveHelv + {14pt} + {#1}} + +\def\TitleFont{\tenpoint\bf} +\def\AuthorFont{\tenpoint\rm} + +\def\title#1{\DoCoverTitle{#1}\DoCenteredTitle{#1}} + +\def\author#1{\DoCoverAuthor{#1}\DoCenteredAuthor{#1}} + +\def\affil#1{\global\setbox\affilbox + \vbox{\halign{\tenpoint\it\hfil##\hfil\cr#1\crcr}}} + +\def\thanks#1{\global\setbox\thanksbox\hbox{\eightpoint #1}} + +\def\date#1{\global\setbox\datebox\vbox{\hfil\tenrm #1 \hfil}} + +\def\version#1{\global\setbox\versionbox\vbox{\hfil\tenrm Current version: #1 \hfil}} + +\long\def\abstract#1{\global\setbox\abstractbox\hbox{\noindent{\bf Abstract. }\tenpoint#1}} + +\def\keywords#1{\global\setbox\keywordsbox\hbox{\noindent{\bf Keywords. }#1}} + +\def\address#1{\global\setbox\addressbox\hbox{\noindent{\bf Address. }#1}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Sections and subsections +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\SectionFont{\tenpoint\bf} + +\def\section#1\par{\DoLeftSection{#1}} + +\def\subsection#1\par{\BigBreak\noindent + {\it #1} + \nobreak\medskip\noindent} + +\outer\def\proclaim #1. #2\par{\medbreak + \noindent{\bf#1.\enspace}{\sl#2}\par + \ifdim\lastskip<\medskipamount \removelastskip\penalty55\medskip\fi} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% References +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\let\RefFont=\tenpoint + +\def\endref{\SetRef\vskip.5pc} + +\def\Refs{\vskip1in plus .5in minus .5in\goodbreak + \noindent{\hfill\tenpoint\bf References\hfill} + \vskip 2pc\RefFont} + +\def\SetRef{ + + \ifjour\jourfalse\vbox{\HangRef + \unhbox\bybox\space(\unhbox\yrbox) ``\unhbox\paperbox,'' + \unhbox\jourbox, \unhbox\volbox, + \ifvoid\nobox\relax\else\unhbox\nobox, \fi + \unhbox\pagesbox. \par}\fi + + \ifbook\bookfalse\par\vbox{\HangRef + \unhbox\bybox\space (\unhbox\yrbox) + {\it \unhbox\bookbox}. + \unhbox\publaddrbox : + \unhbox\publbox .\par}\fi + + \ifinbook\inbookfalse\par\vbox{\HangRef + \unhbox\bybox\space (\unhbox\yrbox) ``\unhbox\paperbox,'' in + {\it \unhbox\bookbox}, ed. {\rm \unhbox\editorbox}. + \unhbox\publaddrbox : \unhbox\publbox \ifvoid\pagesbox\relax + \else, \unhbox\pagesbox\fi .\par}\fi + + \ifunpublished\unpublishedfalse\par\vbox{\HangRef + \unhbox\bybox\space(\unhbox\yrbox) + ``\unhbox\paperbox,'' \unhbox\paperinfobox .\par}\fi +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Define controls +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\topmatter{\relax} +\def\endtopmatter{\nopagenumbers\DoCover} +\def\document{\DoPaper\noindent} +\def\prelim{\global\PreliminaryVersiontrue} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Set the cover +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\titlehead{\hfil} +\def\titlefoot{\hfil} + +\def\DoCover{\nopagenumbers +\ifPreliminaryVersion\line{\hfil Preliminary Draft}\fi +\vglue 2in plus 1in minus 1in +\line{\hfil\box\covertitlebox\hfil} +\vskip 1pc +\line{\hfil\vbox{\halign{\tenrm\hfil##\hfil\cr by\crcr}}\hfil} +\vskip 1pc +\line{\hfil\box\coverauthorbox\hfil} +\ifvoid\affilbox\relax\else +\line{\hfil\box\affilbox\hfil}\fi +\vskip 1pc +\box\datebox +\box\versionbox +\vskip .5in% +\noindent\unhbox\abstractbox\vskip 2pc +\ifvoid\keywordsbox\relax\else\noindent\unhbox\keywordsbox\fi +\vskip 2pc +\ifvoid\addressbox\relax\else\noindent\unhbox\addressbox\fi +\vfil\eject} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Set the paper +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\def\DoPaper{\Reset + \global\footline={\hfil\tenrm\number\pageno\hfil} + \vbox{\hfil\box\titlebox\hfil} + \vskip .5pc + \vbox{\hfil\box\authorbox\hfil} + \ifvoid\thanksbox\relax\else\vfootnote{}{ + \eightpoint\ifdouble\vrule height 14pt width 0pt\fi\unhbox\thanksbox\endfnote}\fi + \vskip 2pc} + +\parindent=15pt + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Use a footnote rule in this style +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\footnoterule{\kern-3pt\hrule width 2truein \kern 2.6pt} diff --git a/Master/texmf-dist/tex/plain/vertex/qje.sty b/Master/texmf-dist/tex/plain/vertex/qje.sty new file mode 100644 index 00000000000..095868378e9 --- /dev/null +++ b/Master/texmf-dist/tex/plain/vertex/qje.sty @@ -0,0 +1,158 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Quartered Journal of Economics +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Special fonts +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\font\sctwelve=cmcsc10 scaled\magstep1 +\font\scten=cmcsc10 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Set pagesize +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\hsize=25pc +\vsize=43pc +\hoffset=1in +\voffset=1in + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Headline and footline +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\nopagenumbers +\def\rightheadline{\hbox to\hsize{\hfil\tenpoint\uppercase{\runname}\hfil{\folio}}} +\def\leftheadline{\hbox to \hsize{\folio \hfil {\tenpoint\sl QUARTERED JOURNAL OF ECONOMICS}\hfil}} +\headline={\ifodd\pageno\rightheadline\else\leftheadline\fi} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Define topmatter style +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\TitleFont{\sctwelve} +\def\AuthorFont{\scten} + +\def\title#1{\DoCenteredTitle{#1{$^*$}}} + +\def\author#1{\DoCenteredAuthor{#1}} + +\def\affil#1{\global\setbox\affilbox\hbox{\tenit\noindent #1}} + +\def\thanks#1{\global\setbox\thanksbox\hbox{{\eightpoint #1\par}}} + +\def\date#1{\global\setbox\datebox\vbox{\tenrm #1 \hfil}} +\def\version#1{} + +\def\abstract#1{\global\setbox\abstractbox\vbox{\hsize=23pc\ninepoint #1}} + +\def\keywords#1{} +\def\address#1{} + +\def\topmatter{\relax} +\def\endtopmatter{\DoTop} +\def\document{\DoPaper\noindent} + +\let\SectionFont=\scten +\RomanSectiontrue + +\def\section#1\par{\DoCenteredSection{#1}} + +\def\subsection#1\par{\BigBreak\noindent + {\it #1\hfil}\nobreak\medskip\noindent} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Math conventions +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\outer\def\proclaim #1. #2\par{\medbreak + \noindent{\scten#1.\enspace}{\rm#2}\par + \ifdim\lastskip<\medskipamount \removelastskip\penalty55\medskip\fi} + +\def\proof{\goodbreak\noindent{\scten Proof.\enspace}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Redefine figure macro +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\Figure#1#2#3{ + \midinsert + \vbox to #2{\vfil} + \hbox to \hsize{\vbox{\parindent=0pt% + \centerline{{\scnine Figure \number#1}}}} + \endinsert} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% References +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\let\RefFont=\eightpoint + +\def\DoNotes{ +\ifvoid\endnoteins\relax\else +\vskip2pc +\noindent{\eightpoint\rm NOTES} +\medskip +\unvbox\endnoteins +\fi} + +\def\DoRefs{\vskip 2pc +\parindent=0pt +\centerline{{\scten References}} +\vskip 1pc +\RefFont +} + +\def\Refs{\vskip3pc +\DoRefs} + +\def\by#1{\setbox\bybox\hbox{\ninepoint#1}} + +\def\SetRef{ + \ifjour\jourfalse\vbox{\parshape=0\hangindent=3pc\hangafter=2 + \unhbox\bybox, ``\unhbox\paperbox,'' + \unhbox\jourbox, {\unhbox\volbox} (\unhbox\yrbox) \ifvoid\nobox\relax\else (\unhbox\nobox), \fi + \unhbox\pagesbox. \par}\fi + + \ifbook\bookfalse\par\vbox{\parshape=0\hangindent=3pc\hangafter=2 + \unhbox\bybox\space {\it \unhbox\bookbox} (\unhbox\publaddrbox : + \unhbox\publbox , \unhbox\yrbox).\par}\fi + + \ifinbook\inbookfalse\par\vbox{ + \unhbox\bybox, ``\unhbox\paperbox,'' + {\it \unhbox\bookbox}, {\rm \unhbox\editorbox}, eds. + (\unhbox\publaddrbox : \unhbox\publbox, \unhbox\yrbox).\par}\fi + + \ifunpublished\unpublishedfalse\par\vbox{ + \unhbox\bybox\space(\unhbox\yrbox) + ``\unhbox\paperbox, '' \unhbox\paperinfobox .\par}\fi +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Set the paper +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\titlehead{\hfil} +\def\titlefoot{\vbox{\sixpoint + \line{$\copyright$ 1986 by the President and Fellows of Havahd College. Published by John Wiley \& Sons, Inc.} + \line{{\it The\ Quartered\ Journal\ of\ Economics}, August 1986\hfil CCC 0033--5533/030455--16\$04.00}}} + + +\def\DoTop{\Reset +\vskip 2pc +\line{\hfil\box\titlebox\hfil} +\ifvoid\thanksbox\relax\else + \vfootnote{$^*$}{\eightpoint \unhbox\thanksbox \par}\fi +\vskip 1pc +\line{\hfil\box\authorbox\hfil} +\vskip1pc +\line{\hfil\box\abstractbox\hfil} +\vskip2pc} + +\def\DoPaper{\relax} + +\tenpoint +\parindent=15pt +\def\footnoterule{}
\ No newline at end of file diff --git a/Master/texmf-dist/tex/plain/vertex/restud.sty b/Master/texmf-dist/tex/plain/vertex/restud.sty new file mode 100644 index 00000000000..2c41e546694 --- /dev/null +++ b/Master/texmf-dist/tex/plain/vertex/restud.sty @@ -0,0 +1,193 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Review of Economic Students --- style file +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%Since this style uses the notes-at-end by default, it is necessary to +% put \Notes on a line by itself right before \Refs in order to +% get the Acknowlegement and Notes printed. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Special fonts +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\font\sixteenrmB=cmbx10 scaled \magstep4 +\font\sctwelve=cmcsc10 scaled\magstep1 +\font\scten=cmcsc10 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Set pagesize +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\hsize=32pc +\vsize=51pc +\hoffset=1in +\voffset=1in + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Headline and footline +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\nopagenumbers +\def\rightheadline{\hbox to\hsize{\tenrm\hfil\uppercase{\runname}\hskip 3em\uppercase{\runtitle}\hfil\folio}} +\def\leftheadline{\hbox to \hsize{\tenrm\folio \hfil {\scten REVIEW OF ECONOMIC STUDENTS}\hfil}} +\headline={\ifodd\pageno\rightheadline\else\leftheadline\fi} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Define topmatter style +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\TitleFont{\sixteenrmB} +\def\AuthorFont{\sctwelve} + +\def\DoCenteredTitle#1{ + \titlepage\global + \CenterBox + \titlebox + \TitleFont + {20pt} + {#1}} + +\def\title#1{\DoCenteredTitle{#1}} + +\def\author#1{\DoCenteredAuthor{#1}} + +\def\affil#1{\global\setbox\affilbox\hbox{\tenit\noindent #1}} + +\def\thanks#1{\global\setbox\thanksbox\hbox{\eightpoint + {\it Acknowledgement.}\space#1\par}} + +\def\date#1{\global\setbox\datebox\vbox{\tenrm #1 \hfil}} + +\def\abstract#1{\global\setbox\abstractbox + \vbox{\eightpoint\hsize=28pc #1}} + +\def\keywords#1{} +\def\address#1{} + +\def\topmatter{\relax} +\def\endtopmatter{\DoTop} +\def\document{\DoPaper\noindent} + +\let\SectionFont=\scten +\RomanSectionfalse + +\def\section#1\par{\DoCenteredSection{\uppercase{#1}}} + +\def\subsection#1\par{\BigBreak\noindent + {\it \number\SectionNumber.\number\SubsectionNumber.\enspace #1\hfil} + \nobreak\medskip\noindent} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Redefine \fnote since REStud has notes at end +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\fnote#1{$^{\the\FootNumber}$ +\insert\endnoteins{\eightpoint\smallskip\number\FootNumber. #1\par} +\global\advance\FootNumber by 1} + +%\def\fnote#1{$^{\the\FootNumber}$ +%\insert\endnoteins{\eightpoint +% \begingroup\smallskip\number\FootNumber.\space#1\par\endgroup} +% \global\advance\FootNumber by 1} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Math conventions +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\outer\def\proclaim #1. #2\par{\medbreak + {\tenpoint\bf#1.\enspace}{\sl#2}\par + \ifdim\lastskip<\medskipamount \removelastskip\penalty55\medskip\fi} + +\def\proof{\goodbreak{\it Proof.\enspace}} + +\def\qed{$\parallel$} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Redefine figure macro +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\Figure#1#2#3{ + \midinsert + \vbox to #2{\vfil} + \hbox to \hsize{\vbox{\parindent=0pt + {\scten Figure \number#1}. \rm #3}} + \endinsert} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% References +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\let\RefFont=\eightpoint + +\def\Notes{\ifvoid\thanksbox\relax\else +\vfill\supereject +\vbox{\hsize=28pc\eightpoint\noindent\unhbox\thanksbox\par}\fi +\ifvoid\endnoteins\relax\else + \bigskip + \line{\eightpoint\rm NOTES \hfil} + \medskip + \unvbox\endnoteins +\fi} + +\def\DoRefs{\BigBreak +{\noindent\eightpoint\rm REFERENCES} +\vskip .5pc +\RefFont} + +\def\Refs{\DoRefs} + +\def\by#1{\setbox\bybox\hbox{\eightpoint\sc\expandafter\uppercase{#1}}} + +\def\SetRef{\vskip 2pt + + \ifjour\jourfalse\vbox{\HangRef + \unhbox\bybox\space (\unhbox\yrbox), ``\unhbox\paperbox'', + \unhbox\jourbox, {\bf \unhbox\volbox} + \ifvoid\nobox\relax\else (\unhbox\nobox), \fi + \unhbox\pagesbox. \par}\fi + + \ifbook\bookfalse\par\vbox{\HangRef + \unhbox\bybox\space {\it \unhbox\bookbox}. \unhbox\publaddrbox : + \unhbox\publbox , \unhbox\yrbox.\par}\fi + + \ifinbook\inbookfalse\par\vbox{\HangRef + \unhbox\bybox\space (\unhbox\yrbox): ``\unhbox\paperbox,'' in + {\it \unhbox\bookbox}, ed. by {\rm \unhbox\editorbox}. + \unhbox\publaddrbox : \unhbox\publbox \ifvoid\pagesbox\relax + \else, \unhbox\pagesbox .\fi\par}\fi + + \ifunpublished\unpublishedfalse\par\vbox{\HangRef + \unhbox\bybox\space(\unhbox\yrbox): + ``\unhbox\paperbox, '' \unhbox\paperinfobox .\par}\fi +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Set the paper +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\titlehead{\vbox{\eightpoint +\line{Review of Economic Students (1986) LIII, 001--002 \hfil 0034-6527/86/000100001\$2.00} +\line{$\copyright$ 1986 The Society for Limited Economic Analysis \hfil} +}} +\def\titlefoot{\hfil} + +\def\DoTop{\Reset +\vglue 2pc +\line{\hfil\box\titlebox\hfil} +\vskip 2pc +\line{\hfil\box\authorbox\hfil} +\vskip.25pc +\line{\hfil\box\affilbox\hfil} +\vskip 2pc +\line{\hfil\box\abstractbox\hfil} +\vskip2pc} + +\def\DoPaper{\relax} + +\tenpoint +\parindent=20pt +\def\footnoterule{}
\ No newline at end of file diff --git a/Master/texmf-dist/tex/plain/vertex/test.tex b/Master/texmf-dist/tex/plain/vertex/test.tex new file mode 100644 index 00000000000..1c6b76048dd --- /dev/null +++ b/Master/texmf-dist/tex/plain/vertex/test.tex @@ -0,0 +1,121 @@ +\topmatter + +\title{Estimating Risk Aversion from \cr + Arrow-Debreu Portfolio Choice} + +\runningname{Hal R. Varian} +\runningtitle{Estimating Risk Aversion} + +\thanks{This research was supported in part by the National Science +Foundation. I would like to thank Richard Green for helpful remarks. I am +especially grateful to an anonymous referee whose comments significantly +improved the statements and proofs of the results.} + +\author{Hal R. Varian} + +\affil{University of Michigan} + +\date{October 27, 1984} + +\version{\today} + +\abstract{This paper derives necessary and sufficient conditions for +Arrow-Debreu choices of contingent consumption to be compatible with the +maximization of a state independent expected utility function that exhibits +increasing or decreasing absolute risk aversion, or increasing or +decreasing relative risk aversion. The conditions can be used to bound +different measures of risk aversion based on a single observation of +Arrow-Debreu portfolio choice.} + +\keywords{Revealed preference, expected utility, risk aversion, portfolio +choice.} + + +\address{Hal R. Varian, Department of Economics, University of Michigan, +Ann Arbor, MI 48109} + +\endtopmatter + +\document + +\noindent {\scten The expected utility} hypothesis forms the basis for much +of our understanding of investor behavior under uncertainty. It is +commonly agreed that a well-behaved expected utility function should be an +increasing and concave function of wealth, or, equivalently, that its first +derivative should be positive and its second derivative should be negative. +It is also widely accepted that the Arrow-Pratt measure of absolute risk +aversion should be declining with wealth. There is much less agreement +about the behavior of the Arrow-Pratt measure of {\it relative\/} risk +aversion, although some investigators have argued that it should increase +with wealth. + +In this note I derive necessary and sufficient conditions for choices of +contingent consumption across states of nature to satisfy various +hypotheses about the behavior of these measures of risk aversion. If the +portfolio choice behavior of the consumer is consistent with the conditions +I derive, then the conditions can be used to bound the Arrow--Pratt +measures of absolute and relative risk aversion. The conditions are +derived using methods of the ``nonparametric approach'' to optimizing +behavior introduced by Afriat (1967) and extended by Diewert (1973), +Diewert and Parkan (1978), and Varian (1982), (1983a). Applications of +these methods to choice under uncertainty include Dybvig and Ross (1982), +Green and Srivastava (1983), and Varian (1983b). + +\section The Maximization Problem + +Consider an investor who chooses a pattern of consumption across states of +nature to solve the following problem: + $$\max \sum_{s=1}^S \pi_s u(c_s) $$ + +\Refs + +\ref +\by{Afriat, S.} \yr{1967a} \paper{The Construction of a Utility +Function from Expenditure Data} \jour{International Economic Review} +\vol{8} \pages{67--77} +\endref + +\ref +\by{Afriat, S.} \yr{1967b} \paper{The Construction of Separable +Utility Functions from Expenditure Data} \paperinfo{mimeo, Purdue} +\endref + +\ref \by{Breeden, D. and R. Litzenberger} \yr{1978} \paper{Prices of +State-Contingent Claims Implicit in Option Prices} \jour{Journal of +Business} \pages{621--651} +\endref + +\ref +\by{Diewert, E.} \yr{1973} \paper{Afriat and Revealed Preference Theory} +\jour{Review of Economic Studies} \vol{40} \pages{419--426} +\endref + +\ref \by{Diewert, E. and C. Parkan} \yr{1978} \paper{Tests for Consistency +of Consumer Data and Nonparametric Index Numbers} \paperinfo{Working Paper +78-27, University of British Columbia} +\endref + +\ref \by{Dybvig, P. and S. Ross} \yr{1982} \paper{Portfolio Efficient Sets} +\jour{Econometrica} \pages{1525--1546} +\endref + +\ref \by{Green, R. and S. Srivastava} \yr{1983} \paper{Preference +Restrictions, Asset Returns, and Consumption} \paperinfo{mimeo, +Carnegie--Mellon University} +\endref + +\ref \by{Varian, H.} \yr{1982} \paper{The Nonparametric Approach to Demand +Analysis} \jour{Econometrica} \vol{50} \pages{945--973} +\endref + +\ref +\by{Varian, H.} \yr{1983a} \paper{Nonparametric Tests of Models of +Consumer Behavior} \jour{Review of Economic Studies} \vol{50} +\pages{99--110} +\endref + +\ref +\by{Varian, H.} \yr{1983b} \paper{Nonparametric Tests of Models of +Investor Behavior} \jour{Journal of Financial and Quantitative Analysis} +\vol{18} \pages{269--278} +\endref diff --git a/Master/texmf-dist/tex/plain/vertex/twocol.tex b/Master/texmf-dist/tex/plain/vertex/twocol.tex new file mode 100644 index 00000000000..8c2a9525ca2 --- /dev/null +++ b/Master/texmf-dist/tex/plain/vertex/twocol.tex @@ -0,0 +1,74 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% two colume output from TUGboat +% vol. 6, No. 1 (1985) by Craig Platt +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\newif\iftitle %true if this is a titlepage + \global\titlefalse + + +\def\titlepage{\global\titletrue} + +\def\onepageout#1{\shipout\vbox{% + \offinterlineskip% + \vbox to 3pc{% + \iftitle \global\titlefalse% + \else\ifodd\pageno\rightheadline\else\leftheadline\fi\fi \vfill}% + \vbox to \vsize{#1% + \ifvoid\footins\else% + \vskip\skip\footins \kern-3pt% +% \hrule height\ruleht width\hsize \kern-\ruleht \kern3pt% + \unvbox\footins\fi% + \boxmaxdepth=\maxdepth}}% +\advancepageno} + +\newdimen\colwidth \newdimen\bigcolheight %%%1 +\colwidth=13pc \bigcolheight=98pc %%%2 + +\output{\onepageout{\unvbox225}} + +\newbox\partialpage +\newdimen\savesize %%%3 + +\def\begindoublecolumns{\begingroup + \savesize=\vsize %%%4 + \output={\global\setbox\partialpage=\vbox{\unvbox255}}\eject + \output={\doublecolumnout} \hsize=\colwidth \vsize=\bigcolheight + \advance\vsize by -2\ht\partialpage} %%%5 + +\def\enddoublecolumns{\output={\balancecolumns}\eject + \global\output={\onepageout{\unvbox255}} %%%6 + \global\vsize=\savesize %%%7 + \endgroup \pagegoal=\vsize} + +\def\doublecolumnout{\dimen0=\pageheight + \advance\dimen0 by-\ht\partialpage \splittopskip=\topskip + \setbox0=\vsplit255 to\dimen0 + \setbox2=\vsplit255 to\dimen0 + \onepageout\pagesofar + \global\vsize=\bigcolheight %%%8 + \unvbox255 \penalty\outputpenalty} + +\def\pagesofar{\unvbox\partialpage + \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}} + +\def\balancecolumns{\setbox0=\vbox{\unvbox255} \dimen0=\ht0 + \advance\dimen0 by\topskip \advance\dimen0 by-\baselineskip + \divide\dimen0 by2 \splittopskip=\topskip + {\vbadness=10000 \loop \global\setbox3=\copy0 + \global\setbox1=\vsplit3 to\dimen0 + \ifdim\ht3>\dimen0 \global\advance\dimen0 by1pt \repeat} + \setbox0=\vbox to\dimen0{\unvbox1} + \setbox2=\vbox to\dimen0{\unvbox3} + \global\output={\balancingerror} %%%9 + \pagesofar} + +\newhelp\balerrhelp{Please change the page %%%10 + into one that works.} %%%11 + +\def\balancingerror{\errhelp=\balerrhelp %%%12 + \errmessage{Page can't be balanced} %%%13 + \onepageout{\unvbox255}} %%%14 + +
\ No newline at end of file diff --git a/Master/texmf-dist/tex/plain/vertex/vertest.tex b/Master/texmf-dist/tex/plain/vertex/vertest.tex new file mode 100644 index 00000000000..d22e577f633 --- /dev/null +++ b/Master/texmf-dist/tex/plain/vertex/vertest.tex @@ -0,0 +1,34 @@ +\input vertex +\input ppt.sty +\input test +\vfill\eject + +\input jep.sty +\input test +\vfill\eject + +\input jpe.sty +\input test +\vfill\eject + +\input jet.sty +\input test +\vfill\eject + +\input ecnmet.sty +\input test +\vfill\eject + +\input qje.sty +\input test +\vfill\eject + +\input aer.sty +\input test +\vfill\eject + +\input restud.sty +\input test +\vfill\eject + +\bye diff --git a/Master/texmf-dist/tex/plain/vertex/vertex.tex b/Master/texmf-dist/tex/plain/vertex/vertex.tex new file mode 100644 index 00000000000..9564e40e3c5 --- /dev/null +++ b/Master/texmf-dist/tex/plain/vertex/vertex.tex @@ -0,0 +1,491 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% VerTeX +% Hal Varian +% August 1987 +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% verbatim macros from TeXbook, page 380--382. +% to invoke, type: \verbatim# TeX stuff ...# +% Any character can be used in place of #. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\uncatcodespecials{\def\do##1{\catcode`##1=12}\dospecials} + +\def\setupverbatim{\tt% +\def\par{\leavevmode\endgraf}\catcode`\`=\active% +\obeylines\uncatcodespecials\obeyspaces}% +{\obeyspaces\global\let =\ }% +{\catcode`\`=\active \gdef`{\relax\lq}} + +\def\verbatim{\begingroup\setupverbatim\doverbatim} +\def\doverbatim#1{\def\next##1#1{##1\endgroup}\next} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Load various fonts +% there are both computer modern and almost modern fonts +% available; comment out the ones you aren't using +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%% +% Computer Modern fonts +%%%%%%%%%%%%%%%%%%%%%%%%% + +\font\sctwelve=cmcsc10 scaled\magstep1 +\font\scten=cmcsc10 + +\font\tenrm=cmr10 +\font\teni=cmmi10 +\font\tensy=cmsy10 +\font\tenbf=cmbx10 +\font\tenit=cmti10 + +\font\ninerm=cmr9 \font\eightrm=cmr8 \font\sixrm=cmr6 +\font\ninei=cmmi9 \font\eighti=cmmi8 \font\sixi=cmmi6 +\font\ninesy=cmsy9 \font\eightsy=cmsy8 \font\sixsy=cmsy6 +\font\ninebf=cmbx9 \font\eightbf=cmbx8 \font\sixbf=cmbx6 +\font\nineit=cmti9 \font\eightit=cmti8 + +%%%%%%%%%%%%%%%%%%%%%%%%% +% Almost Modern fonts +%%%%%%%%%%%%%%%%%%%%%%%%% + +%\font\sctwelve=amcsc10 scaled\magstep1 +%\font\scten=amcsc10 +% +%\font\tenrm=amr10 +%\font\teni=ammi10 +%\font\tensy=amsy10 +%\font\tenbf=ambx10 +%\font\tenit=amti10 +% +%\font\ninerm=amr9 \font\eightrm=amr8 \font\sixrm=amr6 +%\font\ninei=ammi9 \font\eighti=ammi8 \font\sixi=ammi6 +%\font\ninesy=amsy9 \font\eightsy=amsy8 \font\sixsy=amsy6 +%\font\ninebf=ambx9 \font\eightbf=ambx8 \font\sixbf=ambx6 +%\font\nineit=amti9 \font\eightit=amti8 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Define font families +% (see TeXbook, p. 414-5) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\catcode`@=11 +\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% +\textfont\itfam=\tenit \def\it{\fam\itfam\tenit}% +\textfont\bffam=\tenbf \scriptfont\bffam=\sevenbf% +\scriptscriptfont\bffam=\fivebf \def\bf{\fam\bffam\tenbf}% +\tt \ttglue=.5em plus.25em minus.15em% +\ifdouble\normalbaselineskip=1.5pc plus .5pt minus .5pt \else\normalbaselineskip=12pt\fi +\setbox\strutbox=\hbox{\vrule height8.5pt depth3.5pt width0pt}% +\let\sc=\eightrm \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% +\textfont\itfam=\nineit\def\it{\fam\itfam\nineit}% +\textfont\bffam=\ninebf\scriptfont\bffam=\sixbf% +\scriptscriptfont\bffam=\fivebf\def\bf{\fam\bffam\ninebf}% +\tt \ttglue=.5em plus.25em minus.15em % +\normalbaselineskip=11pt% +\setbox\strutbox=\hbox{\vrule height8pt depth3pt width0pt}% +\let\sc=\sevenrm\let\big=\ninebig\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% +\textfont\itfam=\eightit \def\it{\fam\itfam\eightit}% +\textfont\bffam=\eightbf \scriptfont\bffam=\sixbf% +\scriptscriptfont \bffam=\fivebf \def\bf{\fam\bffam\eightbf}% +\tt \ttglue=.5em plus.25em minus.15em% +\normalbaselineskip=9pt% +\setbox\strutbox=\hbox{\vrule height7pt depth2pt width0pt}% +\let\sc=\sixrm \let\big=\eightbig\normalbaselines\rm} + +\def\tenbig#1{{\hbox{$\left#1\vbox to 8.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$}}} + +%Only a partial setup for 6-point, since it is used so rarely +\def\sixpoint{\def\rm{\fam0\sixrm}% switch to 6-point type + \textfont0=\sixrm \textfont2=\sixsy + \textfont\itfam=\sixi \def\it{\fam\itfam\sixi}% + \normalbaselineskip=7.5pt\normalbaselines\rm} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \fnote -- numbered footnotes in small type -- from TeXbook, p. 416 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%register for automatic footnote numbering +\newcount\FootNumber +\FootNumber=1 + +%insert for holding footnotes to print as endnotes at end of paper + +\newinsert\endnoteins %define a new insert +\skip\endnoteins=0pt %space added when endnote is present +\count\endnoteins=0 %magnification factor +\dimen\endnoteins=\maxdimen %maximum endnotes per page + +%print endnotes +\def\PrintEndNotes{\vfill\eject\ifvoid\endnoteins + \else\centerline{\bf Footnotes}\parskip=\medskipamount + \bigskip\unvbox\endnoteins\fi} + +%footnote macro +% Write notes in 8 point +% Write to \endnotesins for end notes + + +\def\fnote#1{\footnote{$^{\the\FootNumber}$}{\eightpoint #1\endfnote} +\insert\endnoteins{\tenpoint\medskip\noindent\number\FootNumber. #1\par +\ifdouble\bigskip\fi}% +\global\advance\FootNumber by 1} + +% We must end paragraph to restore original baselines and +% therefore have to skip up the amount of the baselineskip to keep +% the space between footnotes right. + +\def\endfnote{\par\vskip-\normalbaselineskip} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \makeheadline -- redefine to omit headline on title pages (p. 364 +% of TeXBook) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newif\iftitle %true if this is a titlepage + \global\titlefalse + +\def\titlepage{\global\titletrue} %set flag if this is a Titlepage + +\def\titlehead{\hfil} +\def\titlefoot{\hfil} + +\def\makeheadline{\vbox to 0pt{\vskip-22.5pt% + \line{\vbox to8.5pt{}% + \iftitle\titlehead + \else\the\headline\fi}\vss}\nointerlineskip} + +\def\makefootline{\baselineskip=24pt + \iftitle\line{\titlefoot}\global + \titlefalse\else\line{\the\footline}\fi} + +%no footnoterule by default; can reset in sty files. +\def\footnoterule{} + +\def\pagecontents{\ifvoid\topins\else +\unvbox\topins\fi + \dimen@=\dp\@cclv \unvbox\@cclv % open up \box255 + \ifvoid\footins\else % Footnote info is present + \vskip\skip\footins \footnoterule \unvbox\footins\fi + \ifr@ggedbottom \kern-\dimen@ \vfil \fi} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Create various boxes +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newbox\titlebox +\newbox\authorbox +\newbox\affilbox +\newbox\addressbox +\newbox\keywordsbox +\newbox\datebox +\newbox\versionbox +\newbox\thanksbox +\newbox\abstractbox + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Create various counters +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newcount\SectionNumber\SectionNumber=1 +\newcount\SubsectionNumber\SubsectionNumber=1 +\newcount\EquationNumber\EquationNumber=0 +\newcount\FigureNumber\FigureNumber=0 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \Reset -- to reset all counters and \pageno +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\Reset{\global\SectionNumber=1\global\SubsectionNumber=1 +\global\EquationNumber=0\global\FigureNumber=0\global\pageno=1 +\global\FootNumber=1} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \today -- gives today's date +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\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} + +%can reset this in sty files. +\def\version#1{} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Some math definitions +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%can redefine in .sty files +\def\proof{\medbreak\noindent{\it Proof. }} + +%can redefine in .sty files +\def\qed{\vrule height8pt width4pt depth0pt\par\medskip} + +%display mode partial derivatives +\def\D#1#2{{{\partial #1} \over {\partial #2}}} + +%math mode partial derivations +\def\d#1#2{\partial #1/\partial #2} + +%for naming equations +\def\Equation#1{\global\advance\EquationNumber by 1 + \global\edef#1{\number\EquationNumber}(#1)} + +%for roman text in math or display mode +\def\text#1{\hbox{\rm #1}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Figures -- use \Fig\junk the first time you reference a figure, and +% use \Figure\junk{2in}{This figure is junk.} when you want +% it to appear. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%% \Fig -- for invoking figure +%%% #1 is reference name for figure + +\def\Fig#1{\global\advance\FigureNumber by 1 + \global\edef#1{\number\FigureNumber}Figure #1} + +%%% \Figure --- to have space reserved for figure. +%%% #1 is reference name for figure +%%% #2 is height of figure +%%% #3 is caption for figure + +\def\Figure#1#2#3{ + \midinsert + \vbox to #2{\vfil} + \hbox to \hsize{\vbox{\parindent=0pt% + {\bf Figure \number#1}.\space \rm #3}} + \endinsert} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \boxit -- this will surround a box by rules +% useful for debugging and design purposes +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newif\ifDoBoxes +\DoBoxestrue + +\def\boxit#1{\ifDoBoxes\vbox{\hrule\hbox{\vrule\vbox{#1}\vrule}\hrule} +\else\vbox{\hbox{\vbox{#1}}}\fi} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% References +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%will set hanging indentation in amount specified by \parindent +\def\HangRef{\hangindent\parindent\ignorespaces\noindent} + +\newif\ifbook +\newif\ifjour +\newif\ifinbook +\newif\ifunpublished +\newif\ifinbook + +\newbox\nobox +\newbox\bybox +\newbox\pagesbox +\newbox\paperbox +\newbox\yrbox +\newbox\datebox +\newbox\volbox +\newbox\jourbox +\newbox\bookbox +\newbox\publbox +\newbox\publaddrbox +\newbox\editorbox +\newbox\paperinfobox +\newbox\bookinfobox + +\def\no#1{\setbox\nobox\hbox{#1}} +\def\by#1{\setbox\bybox\hbox{#1}} +\def\pages#1{\setbox\pagesbox\hbox{#1}} +\def\paper#1{\setbox\paperbox\hbox{#1}} +\def\yr#1{\setbox\yrbox\hbox{#1}} +\def\date#1{\setbox\datebox\hbox{#1}} +\def\vol#1{\setbox\volbox\hbox{\bf #1}} +\def\jour#1{\setbox\jourbox\hbox{\it #1}\jourtrue} +\def\book#1{\setbox\bookbox\hbox{\it #1}\booktrue} +\def\inbook#1{\setbox\bookbox\hbox{\it #1}\inbooktrue} +\def\editor#1{\setbox\editorbox\hbox{#1}} +\def\publ#1{\setbox\publbox\hbox{#1}} +\def\publaddr#1{\setbox\publaddrbox\hbox{#1}} +\def\paperinfo#1{\setbox\paperinfobox\hbox{#1}\unpublishedtrue} + +\def\ref{\relax} +\def\endref{\SetRef} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Headings +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\runningname#1{\edef\runname{#1}} +\def\runningtitle#1{\edef\runtitle{#1}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \CenterBox and \LeftBox +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%\CenterBox creates a vbox with several lines of centered text +%modeled after TeXbook, p. 412 +% #1 name of box +% #2 font used in box +% #3 baselineskip in box +% #4 text for box, lines separated by \cr +% +%\LeftBox does the same for left justified text +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\CenterBox#1#2#3#4{ + \global\setbox#1=\vbox{\baselineskip=#3\halign{#2\hfil##\hfil\cr#4\crcr}}} + +\def\LeftBox#1#2#3#4{ + \global\setbox#1=\vbox{\baselineskip=#3\halign{#2##\hfil\cr#4\crcr}}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \section and \subsection +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newbox\sectionbox + +\def\Romannumeral#1{\uppercase\expandafter{\romannumeral#1}} + +\newif\ifRomanSection\RomanSectionfalse + +% taken from TeXbook, p. 355, but changed the parameters so that +% it won't fill out the page so readily. If you really want all +% the pages to be the same size, use \let\BigBreak=\bigbreak + +\def\BigBreak{\vskip0pt plus .05\vsize\penalty-250 + \vskip0pt plus-.05\vsize\bigskip\vskip\parskip} + +\def\DoCenteredSection#1{ + \BigBreak + \SubsectionNumber=0 + \CenterBox + \sectionbox + \SectionFont + \normalbaselineskip + {\ifRomanSection\Romannumeral\SectionNumber + \else\number\SectionNumber\fi.\enskip#1} + \line{\hfil\box\sectionbox\hfil} + \global\advance\SectionNumber by 1 + \nobreak\medskip + \noindent} + +\def\DoLeftSection#1{ + \BigBreak + \SubsectionNumber=0 + \LeftBox + \sectionbox + \SectionFont + \normalbaselineskip + {\ifRomanSection{\Romannumeral\SectionNumber} + \else\number\SectionNumber\fi.\enskip#1} + \line{\box\sectionbox\hfil} + \global\advance\SectionNumber by 1 + \nobreak\medskip + \noindent} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Titles and authors +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\DoCenteredTitle#1{ + \titlepage\global + \CenterBox + \titlebox + \TitleFont + \normalbaselineskip + {#1}} + +\def\DoLeftTitle#1{ + \titlepage\global + \LeftBox + \titlebox + \TitleFont + \normalbaselineskip + {#1}} + +\def\DoCenteredAuthor#1{ + \CenterBox + \authorbox + \AuthorFont + \normalbaselineskip + {#1}} + +\def\DoLeftAuthor#1{ + \LeftBox + \authorbox + \AuthorFont + \normalbaselineskip + {#1}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \prelim -- will write "preliminary verison" on cover +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newif\ifPreliminaryVersion + \global\PreliminaryVersionfalse + +\def\prelim{\PreliminaryVersiontrue} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% quote mode -- inserts and singlespaces +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\quote#1{\medskip{\normalbaselineskip=12pt\tenpoint + \narrower #1 \par}\smallskip} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \doublespace -- prints document in doublespace +% \singlespace -- reverts to singlespace +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newif\ifdouble\doublefalse +\def\doublespace{\global\doubletrue\tenpoint} +\def\singlespace{\global\doublefalse\tenpoint} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% define dummys; will be redefined if needed in .sty files +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\runtitle#1{} +\def\runname#1{} +\def\titleheadline{\hfil} +\def\titlefootline{\hfil} +\overfullrule=0pt %so the black boxes don't print out in margins +\def\enddocument{\relax} diff --git a/Master/texmf-dist/tex/plain/vntex/dblaccnt.tex b/Master/texmf-dist/tex/plain/vntex/dblaccnt.tex new file mode 100644 index 00000000000..295e899948b --- /dev/null +++ b/Master/texmf-dist/tex/plain/vntex/dblaccnt.tex @@ -0,0 +1,51 @@ +% Copyright 2000-2005 Werner Lemberg <wl@gnu.org>. +% This file is part of vntex. License: LPPL, version 1.3 or newer, +% according to http://www.latex-project.org/lppl.txt +% +% +% This is the file dblaccnt.tex to be used with plain TeX; it is a wrapper +% file for dblaccnt.sty. +% +% Since it uses LaTeX's font encoding mechanism, it needs the `plnfss' and +% `plainenc' packages: +% +% \input plnfss +% \input plainenc +% \input dblaccnt +% +% \fontencoding{...} +% +% ... +% +% +% History +% +% 1.0 2000/01/27 +% +% Initial release. +% +% 1.1 2005/04/21 +% +% Add copyright message and history. +% Minor documentation clean-up. + +%\ProvidesFile{dblaccnt.tex}[2005/04/21 v1.1 double accent support for plain TeX] + +\makeatletter + +\input dblaccnt.sty + +% We repeat the definitions in plain.def of the Babel package to use the +% new macros from dblaccnt.sty +\DeclareTextAccent{\'}{OT1}{19} +\DeclareTextAccent{\`}{OT1}{18} + +\let\@acci\' +\let\@accii\` +\let\@acciii\= + +\makeatother + +\endinput + +% end of dblaccnt.tex diff --git a/Master/texmf-dist/tex/plain/vntex/t5code.tex b/Master/texmf-dist/tex/plain/vntex/t5code.tex new file mode 100644 index 00000000000..60a6fecedc9 --- /dev/null +++ b/Master/texmf-dist/tex/plain/vntex/t5code.tex @@ -0,0 +1,458 @@ +% based on il2code.tex from csplain & t5enc.def + +% Copyright 2003-2005 Han The Thanh <hanthethanh@gmx.net>. +% This file is part of vntex. License: LPPL, version 1.3 or newer, +% according to http://www.latex-project.org/lppl.txt + +\def\vncodes{% + \catcode"A1=11 \lccode"A1="A1 \uccode"A1="81 % aacute + \catcode"81=11 \lccode"81="A1 \uccode"81="81 % Aacute + \catcode"AB=11 \lccode"AB="AB \uccode"AB="8B % abreve + \catcode"8B=11 \lccode"8B="AB \uccode"8B="8B % Abreve + \catcode"AD=11 \lccode"AD="AD \uccode"AD="8D % abreveacute + \catcode"8D=11 \lccode"8D="AD \uccode"8D="8D % Abreveacute + \catcode"B0=11 \lccode"B0="B0 \uccode"B0="90 % abrevedotbelow + \catcode"90=11 \lccode"90="B0 \uccode"90="90 % Abrevedotbelow + \catcode"AC=11 \lccode"AC="AC \uccode"AC="8C % abrevegrave + \catcode"8C=11 \lccode"8C="AC \uccode"8C="8C % Abrevegrave + \catcode"AF=11 \lccode"AF="AF \uccode"AF="8F % abrevehookabove + \catcode"8F=11 \lccode"8F="AF \uccode"8F="8F % Abrevehookabove + \catcode"AE=11 \lccode"AE="AE \uccode"AE="8E % abrevetilde + \catcode"8E=11 \lccode"8E="AE \uccode"8E="8E % Abrevetilde + \catcode"A5=11 \lccode"A5="A5 \uccode"A5="85 % acircumflex + \catcode"85=11 \lccode"85="A5 \uccode"85="85 % Acircumflex + \catcode"A7=11 \lccode"A7="A7 \uccode"A7="87 % acircumflexacute + \catcode"87=11 \lccode"87="A7 \uccode"87="87 % Acircumflexacute + \catcode"AA=11 \lccode"AA="AA \uccode"AA="8A % acircumflexdotbelow + \catcode"8A=11 \lccode"8A="AA \uccode"8A="8A % Acircumflexdotbelow + \catcode"A6=11 \lccode"A6="A6 \uccode"A6="86 % acircumflexgrave + \catcode"86=11 \lccode"86="A6 \uccode"86="86 % Acircumflexgrave + \catcode"A9=11 \lccode"A9="A9 \uccode"A9="89 % acircumflexhookabove + \catcode"89=11 \lccode"89="A9 \uccode"89="89 % Acircumflexhookabove + \catcode"A8=11 \lccode"A8="A8 \uccode"A8="88 % acircumflextilde + \catcode"88=11 \lccode"88="A8 \uccode"88="88 % Acircumflextilde + \catcode"A4=11 \lccode"A4="A4 \uccode"A4="84 % adotbelow + \catcode"84=11 \lccode"84="A4 \uccode"84="84 % Adotbelow + \catcode"A0=11 \lccode"A0="A0 \uccode"A0="80 % agrave + \catcode"80=11 \lccode"80="A0 \uccode"80="80 % Agrave + \catcode"A3=11 \lccode"A3="A3 \uccode"A3="83 % ahookabove + \catcode"83=11 \lccode"83="A3 \uccode"83="83 % Ahookabove + \catcode"A2=11 \lccode"A2="A2 \uccode"A2="82 % atilde + \catcode"82=11 \lccode"82="A2 \uccode"82="82 % Atilde + \catcode"1F=11 \lccode"1F="1F \uccode"1F="1E % dcroat + \catcode"1E=11 \lccode"1E="1F \uccode"1E="1E % Dcroat + \catcode"B2=11 \lccode"B2="B2 \uccode"B2="92 % eacute + \catcode"92=11 \lccode"92="B2 \uccode"92="92 % Eacute + \catcode"B6=11 \lccode"B6="B6 \uccode"B6="96 % ecircumflex + \catcode"96=11 \lccode"96="B6 \uccode"96="96 % Ecircumflex + \catcode"B8=11 \lccode"B8="B8 \uccode"B8="98 % ecircumflexacute + \catcode"98=11 \lccode"98="B8 \uccode"98="98 % Ecircumflexacute + \catcode"BB=11 \lccode"BB="BB \uccode"BB="9B % ecircumflexdotbelow + \catcode"9B=11 \lccode"9B="BB \uccode"9B="9B % Ecircumflexdotbelow + \catcode"B7=11 \lccode"B7="B7 \uccode"B7="97 % ecircumflexgrave + \catcode"97=11 \lccode"97="B7 \uccode"97="97 % Ecircumflexgrave + \catcode"BA=11 \lccode"BA="BA \uccode"BA="9A % ecircumflexhookabove + \catcode"9A=11 \lccode"9A="BA \uccode"9A="9A % Ecircumflexhookabove + \catcode"B9=11 \lccode"B9="B9 \uccode"B9="99 % ecircumflextilde + \catcode"99=11 \lccode"99="B9 \uccode"99="99 % Ecircumflextilde + \catcode"B5=11 \lccode"B5="B5 \uccode"B5="95 % edotbelow + \catcode"95=11 \lccode"95="B5 \uccode"95="95 % Edotbelow + \catcode"B1=11 \lccode"B1="B1 \uccode"B1="91 % egrave + \catcode"91=11 \lccode"91="B1 \uccode"91="91 % Egrave + \catcode"B4=11 \lccode"B4="B4 \uccode"B4="94 % ehookabove + \catcode"94=11 \lccode"94="B4 \uccode"94="94 % Ehookabove + \catcode"B3=11 \lccode"B3="B3 \uccode"B3="93 % etilde + \catcode"93=11 \lccode"93="B3 \uccode"93="93 % Etilde + \catcode"BD=11 \lccode"BD="BD \uccode"BD="9D % iacute + \catcode"9D=11 \lccode"9D="BD \uccode"9D="9D % Iacute + \catcode"E0=11 \lccode"E0="E0 \uccode"E0="C0 % idotbelow + \catcode"C0=11 \lccode"C0="E0 \uccode"C0="C0 % Idotbelow + \catcode"BC=11 \lccode"BC="BC \uccode"BC="9C % igrave + \catcode"9C=11 \lccode"9C="BC \uccode"9C="9C % Igrave + \catcode"BF=11 \lccode"BF="BF \uccode"BF="9F % ihookabove + \catcode"9F=11 \lccode"9F="BF \uccode"9F="9F % Ihookabove + \catcode"BE=11 \lccode"BE="BE \uccode"BE="9E % itilde + \catcode"9E=11 \lccode"9E="BE \uccode"9E="9E % Itilde + \catcode"E2=11 \lccode"E2="E2 \uccode"E2="C2 % oacute + \catcode"C2=11 \lccode"C2="E2 \uccode"C2="C2 % Oacute + \catcode"E6=11 \lccode"E6="E6 \uccode"E6="C6 % ocircumflex + \catcode"C6=11 \lccode"C6="E6 \uccode"C6="C6 % Ocircumflex + \catcode"E8=11 \lccode"E8="E8 \uccode"E8="C8 % ocircumflexacute + \catcode"C8=11 \lccode"C8="E8 \uccode"C8="C8 % Ocircumflexacute + \catcode"EB=11 \lccode"EB="EB \uccode"EB="CB % ocircumflexdotbelow + \catcode"CB=11 \lccode"CB="EB \uccode"CB="CB % Ocircumflexdotbelow + \catcode"E7=11 \lccode"E7="E7 \uccode"E7="C7 % ocircumflexgrave + \catcode"C7=11 \lccode"C7="E7 \uccode"C7="C7 % Ocircumflexgrave + \catcode"EA=11 \lccode"EA="EA \uccode"EA="CA % ocircumflexhookabove + \catcode"CA=11 \lccode"CA="EA \uccode"CA="CA % Ocircumflexhookabove + \catcode"E9=11 \lccode"E9="E9 \uccode"E9="C9 % ocircumflextilde + \catcode"C9=11 \lccode"C9="E9 \uccode"C9="C9 % Ocircumflextilde + \catcode"E5=11 \lccode"E5="E5 \uccode"E5="C5 % odotbelow + \catcode"C5=11 \lccode"C5="E5 \uccode"C5="C5 % Odotbelow + \catcode"E1=11 \lccode"E1="E1 \uccode"E1="C1 % ograve + \catcode"C1=11 \lccode"C1="E1 \uccode"C1="C1 % Ograve + \catcode"E4=11 \lccode"E4="E4 \uccode"E4="C4 % ohookabove + \catcode"C4=11 \lccode"C4="E4 \uccode"C4="C4 % Ohookabove + \catcode"EC=11 \lccode"EC="EC \uccode"EC="CC % ohorn + \catcode"CC=11 \lccode"CC="EC \uccode"CC="CC % Ohorn + \catcode"EE=11 \lccode"EE="EE \uccode"EE="CE % ohornacute + \catcode"CE=11 \lccode"CE="EE \uccode"CE="CE % Ohornacute + \catcode"F1=11 \lccode"F1="F1 \uccode"F1="D1 % ohorndotbelow + \catcode"D1=11 \lccode"D1="F1 \uccode"D1="D1 % Ohorndotbelow + \catcode"ED=11 \lccode"ED="ED \uccode"ED="CD % ohorngrave + \catcode"CD=11 \lccode"CD="ED \uccode"CD="CD % Ohorngrave + \catcode"F0=11 \lccode"F0="F0 \uccode"F0="D0 % ohornhookabove + \catcode"D0=11 \lccode"D0="F0 \uccode"D0="D0 % Ohornhookabove + \catcode"EF=11 \lccode"EF="EF \uccode"EF="CF % ohorntilde + \catcode"CF=11 \lccode"CF="EF \uccode"CF="CF % Ohorntilde + \catcode"E3=11 \lccode"E3="E3 \uccode"E3="C3 % otilde + \catcode"C3=11 \lccode"C3="E3 \uccode"C3="C3 % Otilde + \catcode"F3=11 \lccode"F3="F3 \uccode"F3="D3 % uacute + \catcode"D3=11 \lccode"D3="F3 \uccode"D3="D3 % Uacute + \catcode"F6=11 \lccode"F6="F6 \uccode"F6="D6 % udotbelow + \catcode"D6=11 \lccode"D6="F6 \uccode"D6="D6 % Udotbelow + \catcode"F2=11 \lccode"F2="F2 \uccode"F2="D2 % ugrave + \catcode"D2=11 \lccode"D2="F2 \uccode"D2="D2 % Ugrave + \catcode"F5=11 \lccode"F5="F5 \uccode"F5="D5 % uhookabove + \catcode"D5=11 \lccode"D5="F5 \uccode"D5="D5 % Uhookabove + \catcode"F7=11 \lccode"F7="F7 \uccode"F7="D7 % uhorn + \catcode"D7=11 \lccode"D7="F7 \uccode"D7="D7 % Uhorn + \catcode"F9=11 \lccode"F9="F9 \uccode"F9="D9 % uhornacute + \catcode"D9=11 \lccode"D9="F9 \uccode"D9="D9 % Uhornacute + \catcode"FC=11 \lccode"FC="FC \uccode"FC="DC % uhorndotbelow + \catcode"DC=11 \lccode"DC="FC \uccode"DC="DC % Uhorndotbelow + \catcode"F8=11 \lccode"F8="F8 \uccode"F8="D8 % uhorngrave + \catcode"D8=11 \lccode"D8="F8 \uccode"D8="D8 % Uhorngrave + \catcode"FB=11 \lccode"FB="FB \uccode"FB="DB % uhornhookabove + \catcode"DB=11 \lccode"DB="FB \uccode"DB="DB % Uhornhookabove + \catcode"FA=11 \lccode"FA="FA \uccode"FA="DA % uhorntilde + \catcode"DA=11 \lccode"DA="FA \uccode"DA="DA % Uhorntilde + \catcode"F4=11 \lccode"F4="F4 \uccode"F4="D4 % utilde + \catcode"D4=11 \lccode"D4="F4 \uccode"D4="D4 % Utilde + \catcode"FE=11 \lccode"FE="FE \uccode"FE="DE % yacute + \catcode"DE=11 \lccode"DE="FE \uccode"DE="DE % Yacute + \catcode"1D=11 \lccode"1D="1D \uccode"1D="1C % ydotbelow + \catcode"1C=11 \lccode"1C="1D \uccode"1C="1C % Ydotbelow + \catcode"FD=11 \lccode"FD="FD \uccode"FD="DD % ygrave + \catcode"DD=11 \lccode"DD="FD \uccode"DD="DD % Ygrave + \catcode"1B=11 \lccode"1B="1B \uccode"1B="1A % yhookabove + \catcode"1A=11 \lccode"1A="1B \uccode"1A="1A % Yhookabove + \catcode"FF=11 \lccode"FF="FF \uccode"FF="DF % ytilde + \catcode"DF=11 \lccode"DF="FF \uccode"DF="DF % Ytilde +} + +\def\unvncodes{% + \catcode"A1=12 \lccode"A1=0 \uccode"A1=0 % aacute + \catcode"81=12 \lccode"81=0 \uccode"81=0 % Aacute + \catcode"AB=12 \lccode"AB=0 \uccode"AB=0 % abreve + \catcode"8B=12 \lccode"8B=0 \uccode"8B=0 % Abreve + \catcode"AD=12 \lccode"AD=0 \uccode"AD=0 % abreveacute + \catcode"8D=12 \lccode"8D=0 \uccode"8D=0 % Abreveacute + \catcode"B0=12 \lccode"B0=0 \uccode"B0=0 % abrevedotbelow + \catcode"90=12 \lccode"90=0 \uccode"90=0 % Abrevedotbelow + \catcode"AC=12 \lccode"AC=0 \uccode"AC=0 % abrevegrave + \catcode"8C=12 \lccode"8C=0 \uccode"8C=0 % Abrevegrave + \catcode"AF=12 \lccode"AF=0 \uccode"AF=0 % abrevehookabove + \catcode"8F=12 \lccode"8F=0 \uccode"8F=0 % Abrevehookabove + \catcode"AE=12 \lccode"AE=0 \uccode"AE=0 % abrevetilde + \catcode"8E=12 \lccode"8E=0 \uccode"8E=0 % Abrevetilde + \catcode"A5=12 \lccode"A5=0 \uccode"A5=0 % acircumflex + \catcode"85=12 \lccode"85=0 \uccode"85=0 % Acircumflex + \catcode"A7=12 \lccode"A7=0 \uccode"A7=0 % acircumflexacute + \catcode"87=12 \lccode"87=0 \uccode"87=0 % Acircumflexacute + \catcode"AA=12 \lccode"AA=0 \uccode"AA=0 % acircumflexdotbelow + \catcode"8A=12 \lccode"8A=0 \uccode"8A=0 % Acircumflexdotbelow + \catcode"A6=12 \lccode"A6=0 \uccode"A6=0 % acircumflexgrave + \catcode"86=12 \lccode"86=0 \uccode"86=0 % Acircumflexgrave + \catcode"A9=12 \lccode"A9=0 \uccode"A9=0 % acircumflexhookabove + \catcode"89=12 \lccode"89=0 \uccode"89=0 % Acircumflexhookabove + \catcode"A8=12 \lccode"A8=0 \uccode"A8=0 % acircumflextilde + \catcode"88=12 \lccode"88=0 \uccode"88=0 % Acircumflextilde + \catcode"A4=12 \lccode"A4=0 \uccode"A4=0 % adotbelow + \catcode"84=12 \lccode"84=0 \uccode"84=0 % Adotbelow + \catcode"A0=12 \lccode"A0=0 \uccode"A0=0 % agrave + \catcode"80=12 \lccode"80=0 \uccode"80=0 % Agrave + \catcode"A3=12 \lccode"A3=0 \uccode"A3=0 % ahookabove + \catcode"83=12 \lccode"83=0 \uccode"83=0 % Ahookabove + \catcode"A2=12 \lccode"A2=0 \uccode"A2=0 % atilde + \catcode"82=12 \lccode"82=0 \uccode"82=0 % Atilde + \catcode"1F=12 \lccode"1F=0 \uccode"1F=0 % dcroat + \catcode"1E=12 \lccode"1E=0 \uccode"1E=0 % Dcroat + \catcode"B2=12 \lccode"B2=0 \uccode"B2=0 % eacute + \catcode"92=12 \lccode"92=0 \uccode"92=0 % Eacute + \catcode"B6=12 \lccode"B6=0 \uccode"B6=0 % ecircumflex + \catcode"96=12 \lccode"96=0 \uccode"96=0 % Ecircumflex + \catcode"B8=12 \lccode"B8=0 \uccode"B8=0 % ecircumflexacute + \catcode"98=12 \lccode"98=0 \uccode"98=0 % Ecircumflexacute + \catcode"BB=12 \lccode"BB=0 \uccode"BB=0 % ecircumflexdotbelow + \catcode"9B=12 \lccode"9B=0 \uccode"9B=0 % Ecircumflexdotbelow + \catcode"B7=12 \lccode"B7=0 \uccode"B7=0 % ecircumflexgrave + \catcode"97=12 \lccode"97=0 \uccode"97=0 % Ecircumflexgrave + \catcode"BA=12 \lccode"BA=0 \uccode"BA=0 % ecircumflexhookabove + \catcode"9A=12 \lccode"9A=0 \uccode"9A=0 % Ecircumflexhookabove + \catcode"B9=12 \lccode"B9=0 \uccode"B9=0 % ecircumflextilde + \catcode"99=12 \lccode"99=0 \uccode"99=0 % Ecircumflextilde + \catcode"B5=12 \lccode"B5=0 \uccode"B5=0 % edotbelow + \catcode"95=12 \lccode"95=0 \uccode"95=0 % Edotbelow + \catcode"B1=12 \lccode"B1=0 \uccode"B1=0 % egrave + \catcode"91=12 \lccode"91=0 \uccode"91=0 % Egrave + \catcode"B4=12 \lccode"B4=0 \uccode"B4=0 % ehookabove + \catcode"94=12 \lccode"94=0 \uccode"94=0 % Ehookabove + \catcode"B3=12 \lccode"B3=0 \uccode"B3=0 % etilde + \catcode"93=12 \lccode"93=0 \uccode"93=0 % Etilde + \catcode"BD=12 \lccode"BD=0 \uccode"BD=0 % iacute + \catcode"9D=12 \lccode"9D=0 \uccode"9D=0 % Iacute + \catcode"E0=12 \lccode"E0=0 \uccode"E0=0 % idotbelow + \catcode"C0=12 \lccode"C0=0 \uccode"C0=0 % Idotbelow + \catcode"BC=12 \lccode"BC=0 \uccode"BC=0 % igrave + \catcode"9C=12 \lccode"9C=0 \uccode"9C=0 % Igrave + \catcode"BF=12 \lccode"BF=0 \uccode"BF=0 % ihookabove + \catcode"9F=12 \lccode"9F=0 \uccode"9F=0 % Ihookabove + \catcode"BE=12 \lccode"BE=0 \uccode"BE=0 % itilde + \catcode"9E=12 \lccode"9E=0 \uccode"9E=0 % Itilde + \catcode"E2=12 \lccode"E2=0 \uccode"E2=0 % oacute + \catcode"C2=12 \lccode"C2=0 \uccode"C2=0 % Oacute + \catcode"E6=12 \lccode"E6=0 \uccode"E6=0 % ocircumflex + \catcode"C6=12 \lccode"C6=0 \uccode"C6=0 % Ocircumflex + \catcode"E8=12 \lccode"E8=0 \uccode"E8=0 % ocircumflexacute + \catcode"C8=12 \lccode"C8=0 \uccode"C8=0 % Ocircumflexacute + \catcode"EB=12 \lccode"EB=0 \uccode"EB=0 % ocircumflexdotbelow + \catcode"CB=12 \lccode"CB=0 \uccode"CB=0 % Ocircumflexdotbelow + \catcode"E7=12 \lccode"E7=0 \uccode"E7=0 % ocircumflexgrave + \catcode"C7=12 \lccode"C7=0 \uccode"C7=0 % Ocircumflexgrave + \catcode"EA=12 \lccode"EA=0 \uccode"EA=0 % ocircumflexhookabove + \catcode"CA=12 \lccode"CA=0 \uccode"CA=0 % Ocircumflexhookabove + \catcode"E9=12 \lccode"E9=0 \uccode"E9=0 % ocircumflextilde + \catcode"C9=12 \lccode"C9=0 \uccode"C9=0 % Ocircumflextilde + \catcode"E5=12 \lccode"E5=0 \uccode"E5=0 % odotbelow + \catcode"C5=12 \lccode"C5=0 \uccode"C5=0 % Odotbelow + \catcode"E1=12 \lccode"E1=0 \uccode"E1=0 % ograve + \catcode"C1=12 \lccode"C1=0 \uccode"C1=0 % Ograve + \catcode"E4=12 \lccode"E4=0 \uccode"E4=0 % ohookabove + \catcode"C4=12 \lccode"C4=0 \uccode"C4=0 % Ohookabove + \catcode"EC=12 \lccode"EC=0 \uccode"EC=0 % ohorn + \catcode"CC=12 \lccode"CC=0 \uccode"CC=0 % Ohorn + \catcode"EE=12 \lccode"EE=0 \uccode"EE=0 % ohornacute + \catcode"CE=12 \lccode"CE=0 \uccode"CE=0 % Ohornacute + \catcode"F1=12 \lccode"F1=0 \uccode"F1=0 % ohorndotbelow + \catcode"D1=12 \lccode"D1=0 \uccode"D1=0 % Ohorndotbelow + \catcode"ED=12 \lccode"ED=0 \uccode"ED=0 % ohorngrave + \catcode"CD=12 \lccode"CD=0 \uccode"CD=0 % Ohorngrave + \catcode"F0=12 \lccode"F0=0 \uccode"F0=0 % ohornhookabove + \catcode"D0=12 \lccode"D0=0 \uccode"D0=0 % Ohornhookabove + \catcode"EF=12 \lccode"EF=0 \uccode"EF=0 % ohorntilde + \catcode"CF=12 \lccode"CF=0 \uccode"CF=0 % Ohorntilde + \catcode"E3=12 \lccode"E3=0 \uccode"E3=0 % otilde + \catcode"C3=12 \lccode"C3=0 \uccode"C3=0 % Otilde + \catcode"F3=12 \lccode"F3=0 \uccode"F3=0 % uacute + \catcode"D3=12 \lccode"D3=0 \uccode"D3=0 % Uacute + \catcode"F6=12 \lccode"F6=0 \uccode"F6=0 % udotbelow + \catcode"D6=12 \lccode"D6=0 \uccode"D6=0 % Udotbelow + \catcode"F2=12 \lccode"F2=0 \uccode"F2=0 % ugrave + \catcode"D2=12 \lccode"D2=0 \uccode"D2=0 % Ugrave + \catcode"F5=12 \lccode"F5=0 \uccode"F5=0 % uhookabove + \catcode"D5=12 \lccode"D5=0 \uccode"D5=0 % Uhookabove + \catcode"F7=12 \lccode"F7=0 \uccode"F7=0 % uhorn + \catcode"D7=12 \lccode"D7=0 \uccode"D7=0 % Uhorn + \catcode"F9=12 \lccode"F9=0 \uccode"F9=0 % uhornacute + \catcode"D9=12 \lccode"D9=0 \uccode"D9=0 % Uhornacute + \catcode"FC=12 \lccode"FC=0 \uccode"FC=0 % uhorndotbelow + \catcode"DC=12 \lccode"DC=0 \uccode"DC=0 % Uhorndotbelow + \catcode"F8=12 \lccode"F8=0 \uccode"F8=0 % uhorngrave + \catcode"D8=12 \lccode"D8=0 \uccode"D8=0 % Uhorngrave + \catcode"FB=12 \lccode"FB=0 \uccode"FB=0 % uhornhookabove + \catcode"DB=12 \lccode"DB=0 \uccode"DB=0 % Uhornhookabove + \catcode"FA=12 \lccode"FA=0 \uccode"FA=0 % uhorntilde + \catcode"DA=12 \lccode"DA=0 \uccode"DA=0 % Uhorntilde + \catcode"F4=12 \lccode"F4=0 \uccode"F4=0 % utilde + \catcode"D4=12 \lccode"D4=0 \uccode"D4=0 % Utilde + \catcode"FE=12 \lccode"FE=0 \uccode"FE=0 % yacute + \catcode"DE=12 \lccode"DE=0 \uccode"DE=0 % Yacute + \catcode"1D=12 \lccode"1D=0 \uccode"1D=0 % ydotbelow + \catcode"1C=12 \lccode"1C=0 \uccode"1C=0 % Ydotbelow + \catcode"FD=12 \lccode"FD=0 \uccode"FD=0 % ygrave + \catcode"DD=12 \lccode"DD=0 \uccode"DD=0 % Ygrave + \catcode"1B=12 \lccode"1B=0 \uccode"1B=0 % yhookabove + \catcode"1A=12 \lccode"1A=0 \uccode"1A=0 % Yhookabove + \catcode"FF=12 \lccode"FF=0 \uccode"FF=0 % ytilde + \catcode"DF=12 \lccode"DF=0 \uccode"DF=0 % Ytilde +} + +\def\vnaccents{% + \def\Abreve{^^8b} % Abreve + \def\Acircumflex{^^85} % Acircumflex + \def\Ecircumflex{^^96} % Ecircumflex + \def\Ocircumflex{^^c6} % Ocircumflex + \def\Ohorn{^^cc} % Ohorn + \def\Uhorn{^^d7} % Uhorn + \def\abreve{^^ab} % abreve + \def\acircumflex{^^a5} % acircumflex + \def\dj{^^1f} % dcroat + \def\DJ{^^1e} % dcroat + \def\ecircumflex{^^b6} % ecircumflex + \def\i{^^19} % dotlessi + \def\ocircumflex{^^e6} % ocircumflex + \def\ohorn{^^ec} % ohorn + \def\uhorn{^^f7} % uhorn + \def\'##1{% + \ifx A##1^^81\else % Aacute + \ifx E##1^^92\else % Eacute + \ifx I##1^^9d\else % Iacute + \ifx O##1^^c2\else % Oacute + \ifx U##1^^d3\else % Uacute + \ifx Y##1^^de\else % Yacute + \ifx \Abreve##1^^8d\else % Abreveacute + \ifx \Acircumflex##1^^87\else % Acircumflexacute + \ifx \Ecircumflex##1^^98\else % Ecircumflexacute + \ifx \Ocircumflex##1^^c8\else % Ocircumflexacute + \ifx \Ohorn##1^^ce\else % Ohornacute + \ifx \Uhorn##1^^d9\else % Uhornacute + \ifx \abreve##1^^ad\else % abreveacute + \ifx \acircumflex##1^^a7\else % acircumflexacute + \ifx \ecircumflex##1^^b8\else % ecircumflexacute + \ifx \ocircumflex##1^^e8\else % ocircumflexacute + \ifx \ohorn##1^^ee\else % ohornacute + \ifx \uhorn##1^^f9\else % uhornacute + \ifx a##1^^a1\else % aacute + \ifx e##1^^b2\else % eacute + \ifx i##1^^bd\else % iacute + \ifx o##1^^e2\else % oacute + \ifx u##1^^f3\else % uacute + \ifx y##1^^fe\else % yacute + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + }% + \def\^##1{% + \ifx A##1^^85\else % Acircumflex + \ifx E##1^^96\else % Ecircumflex + \ifx O##1^^c6\else % Ocircumflex + \ifx a##1^^a5\else % acircumflex + \ifx e##1^^b6\else % ecircumflex + \ifx o##1^^e6\else % ocircumflex + \fi\fi\fi\fi\fi\fi + }% + \def\`##1{% + \ifx A##1^^80\else % Agrave + \ifx E##1^^91\else % Egrave + \ifx I##1^^9c\else % Igrave + \ifx O##1^^c1\else % Ograve + \ifx U##1^^d2\else % Ugrave + \ifx Y##1^^dd\else % Ygrave + \ifx \Abreve##1^^8c\else % Abrevegrave + \ifx \Acircumflex##1^^86\else % Acircumflexgrave + \ifx \Ecircumflex##1^^97\else % Ecircumflexgrave + \ifx \Ocircumflex##1^^c7\else % Ocircumflexgrave + \ifx \Ohorn##1^^cd\else % Ohorngrave + \ifx \Uhorn##1^^d8\else % Uhorngrave + \ifx \abreve##1^^ac\else % abrevegrave + \ifx \acircumflex##1^^a6\else % acircumflexgrave + \ifx \ecircumflex##1^^b7\else % ecircumflexgrave + \ifx \ocircumflex##1^^e7\else % ocircumflexgrave + \ifx \ohorn##1^^ed\else % ohorngrave + \ifx \uhorn##1^^f8\else % uhorngrave + \ifx a##1^^a0\else % agrave + \ifx e##1^^b1\else % egrave + \ifx i##1^^bc\else % igrave + \ifx o##1^^e1\else % ograve + \ifx u##1^^f2\else % ugrave + \ifx y##1^^fd\else % ygrave + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + }% + \def\d##1{% + \ifx A##1^^84\else % Adotbelow + \ifx E##1^^95\else % Edotbelow + \ifx I##1^^c0\else % Idotbelow + \ifx O##1^^c5\else % Odotbelow + \ifx U##1^^d6\else % Udotbelow + \ifx Y##1^^1c\else % Ydotbelow + \ifx \Abreve##1^^90\else % Abrevedotbelow + \ifx \Acircumflex##1^^8a\else % Acircumflexdotbelow + \ifx \Ecircumflex##1^^9b\else % Ecircumflexdotbelow + \ifx \Ocircumflex##1^^cb\else % Ocircumflexdotbelow + \ifx \Ohorn##1^^d1\else % Ohorndotbelow + \ifx \Uhorn##1^^dc\else % Uhorndotbelow + \ifx \abreve##1^^b0\else % abrevedotbelow + \ifx \acircumflex##1^^aa\else % acircumflexdotbelow + \ifx \ecircumflex##1^^bb\else % ecircumflexdotbelow + \ifx \ocircumflex##1^^eb\else % ocircumflexdotbelow + \ifx \ohorn##1^^f1\else % ohorndotbelow + \ifx \uhorn##1^^fc\else % uhorndotbelow + \ifx a##1^^a4\else % adotbelow + \ifx e##1^^b5\else % edotbelow + \ifx i##1^^e0\else % idotbelow + \ifx o##1^^e5\else % odotbelow + \ifx u##1^^f6\else % udotbelow + \ifx y##1^^1d\else % ydotbelow + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + }% + \def\h##1{% + \ifx A##1^^83\else % Ahookabove + \ifx E##1^^94\else % Ehookabove + \ifx I##1^^9f\else % Ihookabove + \ifx O##1^^c4\else % Ohookabove + \ifx U##1^^d5\else % Uhookabove + \ifx Y##1^^1a\else % Yhookabove + \ifx \Abreve##1^^8f\else % Abrevehookabove + \ifx \Acircumflex##1^^89\else % Acircumflexhookabove + \ifx \Ecircumflex##1^^9a\else % Ecircumflexhookabove + \ifx \Ocircumflex##1^^ca\else % Ocircumflexhookabove + \ifx \Ohorn##1^^d0\else % Ohornhookabove + \ifx \Uhorn##1^^db\else % Uhornhookabove + \ifx \abreve##1^^af\else % abrevehookabove + \ifx \acircumflex##1^^a9\else % acircumflexhookabove + \ifx \ecircumflex##1^^ba\else % ecircumflexhookabove + \ifx \ocircumflex##1^^ea\else % ocircumflexhookabove + \ifx \ohorn##1^^f0\else % ohornhookabove + \ifx \uhorn##1^^fb\else % uhornhookabove + \ifx a##1^^a3\else % ahookabove + \ifx e##1^^b4\else % ehookabove + \ifx i##1^^bf\else % ihookabove + \ifx o##1^^e4\else % ohookabove + \ifx u##1^^f5\else % uhookabove + \ifx y##1^^1b\else % yhookabove + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + }% + \def\~##1{% + \ifx A##1^^82\else % Atilde + \ifx E##1^^93\else % Etilde + \ifx I##1^^9e\else % Itilde + \ifx O##1^^c3\else % Otilde + \ifx U##1^^d4\else % Utilde + \ifx Y##1^^df\else % Ytilde + \ifx \Abreve##1^^8e\else % Abrevetilde + \ifx \Acircumflex##1^^88\else % Acircumflextilde + \ifx \Ecircumflex##1^^99\else % Ecircumflextilde + \ifx \Ocircumflex##1^^c9\else % Ocircumflextilde + \ifx \Ohorn##1^^cf\else % Ohorntilde + \ifx \Uhorn##1^^da\else % Uhorntilde + \ifx \abreve##1^^ae\else % abrevetilde + \ifx \acircumflex##1^^a8\else % acircumflextilde + \ifx \ecircumflex##1^^b9\else % ecircumflextilde + \ifx \ocircumflex##1^^e9\else % ocircumflextilde + \ifx \ohorn##1^^ef\else % ohorntilde + \ifx \uhorn##1^^fa\else % uhorntilde + \ifx a##1^^a2\else % atilde + \ifx e##1^^b3\else % etilde + \ifx i##1^^be\else % itilde + \ifx o##1^^e3\else % otilde + \ifx u##1^^f4\else % utilde + \ifx y##1^^ff\else % ytilde + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + }% +} + + +% copied from plain.tex +\def\cmaccents{% + \def\`##1{{\accent18 ##1}}% + \def\'##1{{\accent19 ##1}}% + \def\v##1{{\accent20 ##1}}% + \def\u##1{{\accent21 ##1}}% + \def\=##1{{\accent22 ##1}}% + \def\^##1{{\accent94 ##1}}% + \def\.##1{{\accent95 ##1}}% + \def\~##1{{\accent"7E ##1}}% + \def\"##1{{\accent"7F ##1}}% +} + +\vncodes +\vnaccents diff --git a/Master/texmf-dist/tex/plain/vntex/vntexinfo.tex b/Master/texmf-dist/tex/plain/vntex/vntexinfo.tex new file mode 100644 index 00000000000..d4b92c82816 --- /dev/null +++ b/Master/texmf-dist/tex/plain/vntex/vntexinfo.tex @@ -0,0 +1,61 @@ +% support for vietnamese with texinfo +% must be used with TCX extension +% Usage: replace `\input texinfo.tex' by `\input vntexinfo.tex' in your +% *.texi files + +% Copyright 2003-2005 Han The Thanh <hanthethanh@gmx.net>. +% This file is part of vntex. License: LPPL, version 1.3 or newer, +% according to http://www.latex-project.org/lppl.txt + +\input t5code.tex +\def\fontprefix{vn} +\def\today{% + Ng\`ay \number\day\space + th\'ang \number\month\space + n\abreve m \number\year} + +% redefine those to get vietnamese captions; edit them in viscii/tcvn/utf8, +% then use ie `vntovn viscii vntex' to convert to vntex +% +% \gdef\putwordAppendix{Appendix} +% \gdef\putwordChapter{Chapter} +% \gdef\putwordfile{file} +% \gdef\putwordin{in} +% \gdef\putwordIndexIsEmpty{(Index is empty)} +% \gdef\putwordIndexNonexistent{(Index is nonexistent)} +% \gdef\putwordInfo{Info} +% \gdef\putwordInstanceVariableof{Instance Variable of} +% \gdef\putwordMethodon{Method on} +% \gdef\putwordNoTitle{No Title} +% \gdef\putwordof{of} +% \gdef\putwordon{on} +% \gdef\putwordpage{page} +% \gdef\putwordsection{section} +% \gdef\putwordSection{Section} +% \gdef\putwordsee{see} +% \gdef\putwordSee{See} +% \gdef\putwordShortTOC{Short Contents} +% \gdef\putwordTOC{Table of Contents} +% % +% \gdef\putwordMJan{January} +% \gdef\putwordMFeb{February} +% \gdef\putwordMMar{March} +% \gdef\putwordMApr{April} +% \gdef\putwordMMay{May} +% \gdef\putwordMJun{June} +% \gdef\putwordMJul{July} +% \gdef\putwordMAug{August} +% \gdef\putwordMSep{September} +% \gdef\putwordMOct{October} +% \gdef\putwordMNov{November} +% \gdef\putwordMDec{December} +% % +% \gdef\putwordDefmac{Macro} +% \gdef\putwordDefspec{Special Form} +% \gdef\putwordDefvar{Variable} +% \gdef\putwordDefopt{User Option} +% \gdef\putwordDeftypevar{Variable} +% \gdef\putwordDeffunc{Function} +% \gdef\putwordDeftypefun{Function} + +\input texinfo diff --git a/Master/texmf-dist/tex/plain/wasy/wasyfont.tex b/Master/texmf-dist/tex/plain/wasy/wasyfont.tex new file mode 100644 index 00000000000..7109ce06971 --- /dev/null +++ b/Master/texmf-dist/tex/plain/wasy/wasyfont.tex @@ -0,0 +1,172 @@ +% this is wasyfont.tex version 2.01--92/10 +\font\tenwasy = wasy10 +\font\wasyb = wasyb10 +\font\ninewasy = wasy9 +\font\eightwasy = wasy8 +\font\sevenwasy = wasy7 +\font\fivewasy = wasy5 +\newfam\wasyfam +\newcount\wasyfamcount +\wasyfamcount=\wasyfam \multiply\wasyfamcount by 256 +\def\wasy{\fam\wasyfam\tenwasy} +\textfont\wasyfam=\tenwasy +\scriptfont\wasyfam=\sevenwasy +\scriptscriptfont\wasyfam=\fivewasy +%%%%%% special macro +\def\overstrike#1#2{{\setbox0\hbox{$#2$}\hbox to \wd0{\hss + $#1$\hss}\kern-\wd0\box0}} +%%%%%% special symbols +\def\male{\hbox{\wasy\char"1A}} +\def\female{\hbox{\wasy\char"19}} +\def\currency{{\wasy\char"1B}} +\def\phone{{\wasy\char"07}} +\def\recorder{{\wasy\char"06}} +\def\clock{{\wasy\char"1C}} +\def\lightning{{\wasy\char"12}} +\def\pointer{{\wasy\char"09}} +\def\RIGHTarrow{{\wasy\char"11}} +\def\LEFTarrow{{\wasy\char"10}} +\def\UParrow{{\wasy\char"4B}} +\def\DOWNarrow{{\wasy\char"4C}} +\def\AC{\hbox{\kern0.5pt\wasy\char"3A\kern0.5pt}} +\def\HF{\lower0.9pt\hbox to 0pt{\kern0.5pt\wasy\char"3A\hss}% + \raise0.9pt\hbox{\kern0.5pt\wasy\char"3A\kern0.5pt}} +\def\VHF{\hbox{\wasy\char"40}} +\def\Box{\hbox{\wasy\char"32}}\let\Square\Box +\def\XBox{\hbox{\wasy\char"34}} +\def\Diamond{\hbox{\wasy\char"33}} +\def\hexagon{\hbox{\wasy\char"37}} +\def\pentagon{\hbox{\wasy\char"44}} +\def\octagon{\hbox{\wasy\char"38}} +\def\varhexagon{\hbox{\wasy\char"39}} +\def\hexstar{\hbox{\wasy\char"41}} +\def\varhexstar{\hbox{\wasy\char"42}} +\def\davidsstar{\hbox{\wasy\char"43}} +\def\diameter{\hbox{\wasy\char"1F}} +\def\invdiameter{\hbox{\wasy\char"15}} +\def\varangle{\hbox{\wasy\char"1E}} +\def\lozenge{\hbox{\wasy\char"35}} +\def\kreuz{\hbox{\wasy\char"36}} +\def\smiley{\hbox{\wasy\char"2C}} +\def\frownie{\hbox{\wasy\char"2F}} +\def\blacksmiley{\hbox{\wasy\char"2D}} +\def\sun{\hbox{\wasy\char"2E}} +\def\checked{\hbox{\wasy\char"08}} +\def\bell{\hbox{\wasy\char"0A}} +\def\eighthnote{\hbox{\wasy\char"0B}} +\def\quarternote{\hbox{\wasy\char"0C}} +\def\halfnote{\hbox{\wasy\char"0D}} +\def\fullnote{\hbox{\wasy\char"0E}} +\def\twonotes{\hbox{\wasy\char"0F}} +\def\brokenvert{\hbox{\wasy\char"7C}} +\def\therefore{\hbox{\wasy\char"05}} +\def\ataribox{\hbox{\wasy\char"6D}} +\def\Circle{\hbox{\wasy\char"23}} +\def\CIRCLE{\hbox{\wasy\char"20}} +\def\Leftcircle{\hbox{\wasy\char"49}} +\def\LEFTCIRCLE{\hbox{\wasy\char"47}} +\def\Rightcircle{\hbox{\wasy\char"4A}} +\def\RIGHTCIRCLE{\hbox{\wasy\char"48}} +\def\LEFTcircle{\hbox to 0pt{\wasy\char"47\hss}\hbox{\wasy\char"23}} +\def\RIGHTcircle{\hbox to 0pt{\wasy\char"48\hss}\hbox{\wasy\char"23}} +%%%%%% astronomy +\def\vernal{\hbox{\wasy\char"17}} +\def\ascnode{\hbox{\wasy\char"13}} +\def\descnode{\hbox{\wasy\char"14}} +\def\fullmoon{\hbox{\wasy\char"23}} +\def\newmoon{\hbox{\wasy\char"20}} +\def\leftmoon{\hbox{\wasy\char"24}} +\def\rightmoon{\hbox{\wasy\char"25}} +\def\astrosun{\hbox{\tensy\char"0C}} +\def\mercury{\hbox{\wasy\char"27}} +\def\venus{\raise0.2ex\hbox{\wasy\char"19}} +\def\earth{\lower0.3ex\hbox{\wasy\char"26}} +\def\mars{\lower0.2ex\hbox{\wasy\char"1A}} +\def\jupiter{\hbox{\wasy\char"58}} +\def\saturn{\hbox{\wasy\char"59}} +\def\uranus{\hbox{\wasy\char"5A}} +\def\neptune{\hbox{\wasy\char"5B}} +\def\pluto{\hbox{\wasy\char"5C}} +\def\conjunction{\hbox{\wasy\char"56}} +\def\opposition{\hbox{\wasy\char"57}} +%%%%%% the zodiac +\def\aries{\hbox{\wasy\char"17}} +\def\taurus{\hbox{\wasy\char"5D}} +\def\gemini{\hbox{\wasy\char"5E}} +\def\cancer{\hbox{\wasy\char"5F}} +\def\leo{\hbox{\wasy\char"13}} +\def\virgo{\hbox{\wasy\char"60}} +\def\libra{\hbox{\wasy\char"61}} +\def\scorpio{\hbox{\wasy\char"62}} +\def\sagittarius{\hbox{\wasy\char"63}} +\def\capricornus{\hbox{\wasy\char"64}} +\def\aquarius{\hbox{\wasy\char"65}} +\def\pisces{\hbox{\wasy\char"66}} +%%%%%% APL characters +\def\APLstar{{\hbox{\wasy\char"45}}} +\def\APLlog{{\hbox{\wasy\char"16}}} +\def\APLbox{{\hbox{\wasy\char"7E}}} +\def\APLup{{\hbox{\wasy\char"00}}} +\def\APLdown{{\hbox{\wasy\char"46}}} +\def\APLinput{{\hbox{\wasy\char"7D}}} +\def\APLcomment{{\hbox{\wasy\char"7F}}} +\def\APLinv{{\hbox to 0pt{\tensy\char"04\hss}\APLbox}} +\def\APLuparrowbox{{\hbox{\wasy\char"6E}}} +\def\APLdownarrowbox{{\hbox{\wasy\char"6F}}} +\def\APLleftarrowbox{{\hbox{\wasy\char"70}}} +\def\APLrightarrowbox{{\hbox{\wasy\char"71}}} +\def\notbackslash{\overstrike{\backslash}{-}} +\def\notslash{\overstrike{/}{-}} +\def\APLnot#1{\overstrike{\sim}{#1}} +\def\APLcirc#1{\overstrike{\circ}{#1}} +\def\APLvert#1{\overstrike{\vert}{#1}} +\def\APLminus{\raise0.7ex\hbox{$-$}} +%%%%%% diagrams +\def\photon{\hbox{\wasy\char"3A\char"3A\char"3A\char"3A}} +\def\gluon{\hbox{\wasy\char"51\char"50\char"50\char"50% + \char"50\char"50\char"50\char"52}} +%%%%%% math characters +\def\Bowtie{\hbox{\wasy\char"31}} +\def\leftturn{\hbox{\wasy\char"22}} +\def\rightturn{\hbox{\wasy\char"21}} +%%%%%% special characters +\def\cent{\hbox{\wasy\char"67}} +\def\permil{\hbox{\wasy\char"68}} +\def\agemO{{\wasy\char"30}} +\def\thorn{{\wasy\char"69}} +\def\Thorn{{\wasy\char"6A}} +\def\dh{{\wasy\char"6B}} +\def\Dh{\leavevmode{\rm\setbox0\hbox{D}% + \hbox to\wd0{\kern 0.04em\char32\hss D}}} +\def\openo{{\wasy\char"6C}} +\def\inve{{\wasy\char"55}} +%%%%%% math operators as mathchars +\def\wasymathchardef#1#2{% + \count255=\wasyfamcount + \advance\count255 by"#1 + \mathchardef#2\count255} +\wasymathchardef{3001}{\lhd} +\wasymathchardef{3003}{\rhd} +\wasymathchardef{3010}{\LHD} +\wasymathchardef{3011}{\RHD} +\wasymathchardef{3002}{\unlhd} +\wasymathchardef{3004}{\unrhd} +\wasymathchardef{303C}{\sqsubset} +\wasymathchardef{303D}{\sqsupset} +\wasymathchardef{303E}{\apprle} +\wasymathchardef{303F}{\apprge} +\wasymathchardef{301D}{\varpropto} +\wasymathchardef{0018}{\invneg} +\wasymathchardef{303B}{\leadsto} +\wasymathchardef{2023}{\ocircle} +\wasymathchardef{3016}{\logof} +\wasymathchardef{1072}{\varint} +\wasymathchardef{1073}{\iint} +\wasymathchardef{1074}{\iiint} +\wasymathchardef{1075}{\varoint} +\wasymathchardef{1076}{\oiint} +% +%%%%%% new definitions +% +\def\newpropto{\let\propto\varpropto} +\def\newint{\let\int\varint \let\oint\varoint} % default limits |