3 |
% Load plain if necessary, i.e., if running under initex. |
% Load plain if necessary, i.e., if running under initex. |
4 |
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi |
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi |
5 |
% |
% |
6 |
\def\texinfoversion{2001-05-24.08} |
\def\texinfoversion{2002-06-07.15} |
7 |
% |
% |
8 |
% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, |
% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, |
9 |
% 2000, 01 Free Software Foundation, Inc. |
% 2000, 01, 02 Free Software Foundation, Inc. |
10 |
% |
% |
11 |
% This texinfo.tex file is free software; you can redistribute it and/or |
% This texinfo.tex file is free software; you can redistribute it and/or |
12 |
% modify it under the terms of the GNU General Public License as |
% modify it under the terms of the GNU General Public License as |
30 |
% Please try the latest version of texinfo.tex before submitting bug |
% Please try the latest version of texinfo.tex before submitting bug |
31 |
% reports; you can get the latest version from: |
% reports; you can get the latest version from: |
32 |
% ftp://ftp.gnu.org/gnu/texinfo.tex |
% ftp://ftp.gnu.org/gnu/texinfo.tex |
33 |
% (and all GNU mirrors, see http://www.gnu.org/order/ftp.html) |
% (and all GNU mirrors, see http://www.gnu.org/order/ftp.html) |
34 |
% ftp://texinfo.org/tex/texinfo.tex |
% ftp://texinfo.org/texinfo/texinfo.tex |
35 |
% ftp://us.ctan.org/macros/texinfo/texinfo.tex |
% ftp://tug.org/tex/texinfo.tex |
36 |
% (and all CTAN mirrors, finger ctan@us.ctan.org for a list). |
% (and all CTAN mirrors, see http://www.ctan.org), |
37 |
% /home/gd/gnu/doc/texinfo.tex on the GNU machines. |
% and /home/gd/gnu/doc/texinfo.tex on the GNU machines. |
38 |
|
% |
39 |
% The texinfo.tex in any given Texinfo distribution could well be out |
% The texinfo.tex in any given Texinfo distribution could well be out |
40 |
% of date, so if that's what you're using, please check. |
% of date, so if that's what you're using, please check. |
41 |
% Texinfo has a small home page at http://texinfo.org/. |
% |
42 |
|
% Texinfo has a small home page at http://texinfo.org/ and also |
43 |
|
% http://www.gnu.org/software/texinfo. |
44 |
% |
% |
45 |
% Send bug reports to bug-texinfo@gnu.org. Please include including a |
% Send bug reports to bug-texinfo@gnu.org. Please include including a |
46 |
% complete document in each bug report with which we can reproduce the |
% complete document in each bug report with which we can reproduce the |
53 |
% texindex foo.?? |
% texindex foo.?? |
54 |
% tex foo.texi |
% tex foo.texi |
55 |
% tex foo.texi |
% tex foo.texi |
56 |
% dvips foo.dvi -o # or whatever, to process the dvi file; this makes foo.ps. |
% dvips foo.dvi -o # or whatever; this makes foo.ps. |
57 |
% The extra runs of TeX get the cross-reference information correct. |
% The extra TeX runs get the cross-reference information correct. |
58 |
% Sometimes one run after texindex suffices, and sometimes you need more |
% Sometimes one run after texindex suffices, and sometimes you need more |
59 |
% than two; texi2dvi does it as many times as necessary. |
% than two; texi2dvi does it as many times as necessary. |
60 |
% |
% |
61 |
% It is possible to adapt texinfo.tex for other languages. You can get |
% It is possible to adapt texinfo.tex for other languages. You can get |
62 |
% the existing language-specific files from ftp://ftp.gnu.org/gnu/texinfo/. |
% the existing language-specific files from the full Texinfo distribution. |
63 |
|
|
64 |
\message{Loading texinfo [version \texinfoversion]:} |
\message{Loading texinfo [version \texinfoversion]:} |
65 |
|
|
175 |
|
|
176 |
% add check for \lastpenalty to plain's definitions. If the last thing |
% add check for \lastpenalty to plain's definitions. If the last thing |
177 |
% we did was a \nobreak, we don't want to insert more space. |
% we did was a \nobreak, we don't want to insert more space. |
178 |
% |
% |
179 |
\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount |
\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount |
180 |
\removelastskip\penalty-50\smallskip\fi\fi} |
\removelastskip\penalty-50\smallskip\fi\fi} |
181 |
\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount |
\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount |
444 |
% environments. --karl, 6may93 |
% environments. --karl, 6may93 |
445 |
%{\advance \baselineskip by -\singlespaceskip |
%{\advance \baselineskip by -\singlespaceskip |
446 |
%\kern \baselineskip}% |
%\kern \baselineskip}% |
447 |
\setleading \singlespaceskip |
\setleading\singlespaceskip |
448 |
} |
} |
449 |
|
|
450 |
%% Simple single-character @ commands |
%% Simple single-character @ commands |
730 |
% @inmargin{TEXT [, RIGHT-TEXT]} |
% @inmargin{TEXT [, RIGHT-TEXT]} |
731 |
% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; |
% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; |
732 |
% else use TEXT for both). |
% else use TEXT for both). |
733 |
% |
% |
734 |
\def\inmargin#1{\parseinmargin #1,,\finish} |
\def\inmargin#1{\parseinmargin #1,,\finish} |
735 |
\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. |
\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. |
736 |
\setbox0 = \hbox{\ignorespaces #2}% |
\setbox0 = \hbox{\ignorespaces #2}% |
737 |
\ifdim\wd0 > 0pt |
\ifdim\wd0 > 0pt |
738 |
\def\lefttext{#1}% have both texts |
\def\lefttext{#1}% have both texts |
739 |
\def\righttext{#2}% |
\def\righttext{#2}% |
797 |
% @paragraphindent NCHARS |
% @paragraphindent NCHARS |
798 |
% We'll use ems for NCHARS, close enough. |
% We'll use ems for NCHARS, close enough. |
799 |
% We cannot implement @paragraphindent asis, though. |
% We cannot implement @paragraphindent asis, though. |
800 |
% |
% |
801 |
\def\asisword{asis} % no translation, these are keywords |
\def\asisword{asis} % no translation, these are keywords |
802 |
\def\noneword{none} |
\def\noneword{none} |
803 |
% |
% |
836 |
% |
% |
837 |
\def\asis#1{#1} |
\def\asis#1{#1} |
838 |
|
|
839 |
% @math means output in math mode. |
% @math outputs its argument in math mode. |
840 |
% We don't use $'s directly in the definition of \math because control |
% We don't use $'s directly in the definition of \math because we need |
841 |
% sequences like \math are expanded when the toc file is written. Then, |
% to set catcodes according to plain TeX first, to allow for subscripts, |
842 |
% we read the toc file back, the $'s will be normal characters (as they |
% superscripts, special math chars, etc. |
843 |
% should be, according to the definition of Texinfo). So we must use a |
% |
844 |
% control sequence to switch into and out of math mode. |
% @math does not do math typesetting in section titles, index |
845 |
% |
% entries, and other such contexts where the catcodes are set before |
846 |
% This isn't quite enough for @math to work properly in indices, but it |
% @math gets a chance to work. This could perhaps be fixed, but for now |
847 |
% seems unlikely it will ever be needed there. |
% at least we can have real math in the main text, where it's needed most. |
848 |
|
% |
849 |
|
\let\implicitmath = $%$ font-lock fix |
850 |
|
% |
851 |
|
% One complication: _ usually means subscripts, but it could also mean |
852 |
|
% an actual _ character, as in @math{@var{some_variable} + 1}. So make |
853 |
|
% _ within @math be active (mathcode "8000), and distinguish by seeing |
854 |
|
% if the current family is \slfam, which is what @var uses. |
855 |
|
% |
856 |
|
{\catcode95 = \active % 95 = _ |
857 |
|
\gdef\mathunderscore{% |
858 |
|
\catcode95=\active |
859 |
|
\def_{\ifnum\fam=\slfam \_\else\sb\fi}% |
860 |
|
}} |
861 |
% |
% |
862 |
\let\implicitmath = $ |
% Another complication: we want \\ (and @\) to output a \ character. |
863 |
\def\math#1{\implicitmath #1\implicitmath} |
% FYI, plain.tex uses \\ as a temporary control sequence (why?), but |
864 |
|
% this is not advertised and we don't care. Texinfo does not |
865 |
|
% otherwise define @\. |
866 |
|
% |
867 |
|
% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. |
868 |
|
\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} |
869 |
|
% |
870 |
|
\def\math{% |
871 |
|
\tex |
872 |
|
\mathcode`\_="8000 \mathunderscore |
873 |
|
\let\\ = \mathbackslash |
874 |
|
\implicitmath\finishmath} |
875 |
|
\def\finishmath#1{#1\implicitmath\Etex} |
876 |
|
|
877 |
% @bullet and @minus need the same treatment as @math, just above. |
% @bullet and @minus need the same treatment as @math, just above. |
878 |
\def\bullet{\implicitmath\ptexbullet\implicitmath} |
\def\bullet{\implicitmath\ptexbullet\implicitmath} |
955 |
\def\dopdfimage#1#2#3{% |
\def\dopdfimage#1#2#3{% |
956 |
\def\imagewidth{#2}% |
\def\imagewidth{#2}% |
957 |
\def\imageheight{#3}% |
\def\imageheight{#3}% |
958 |
|
% without \immediate, pdftex seg faults when the same image is |
959 |
|
% included twice. (Version 3.14159-pre-1.0-unofficial-20010704.) |
960 |
\ifnum\pdftexversion < 14 |
\ifnum\pdftexversion < 14 |
961 |
\pdfimage |
\immediate\pdfimage |
962 |
\else |
\else |
963 |
\pdfximage |
\immediate\pdfximage |
964 |
\fi |
\fi |
965 |
\ifx\empty\imagewidth\else width \imagewidth \fi |
\ifx\empty\imagewidth\else width \imagewidth \fi |
966 |
\ifx\empty\imageheight\else height \imageheight \fi |
\ifx\empty\imageheight\else height \imageheight \fi |
972 |
\ifnum\pdftexversion < 14 \else |
\ifnum\pdftexversion < 14 \else |
973 |
\pdfrefximage \pdflastximage |
\pdfrefximage \pdflastximage |
974 |
\fi} |
\fi} |
975 |
\def\pdfmkdest#1{\pdfdest name{#1} xyz} |
\def\pdfmkdest#1{{\normalturnoffactive \pdfdest name{#1} xyz}} |
976 |
\def\pdfmkpgn#1{#1@} |
\def\pdfmkpgn#1{#1} |
977 |
\let\linkcolor = \Blue % was Cyan, but that seems light? |
\let\linkcolor = \Blue % was Cyan, but that seems light? |
978 |
\def\endlink{\Black\pdfendlink} |
\def\endlink{\Black\pdfendlink} |
979 |
% Adding outlines to PDF; macros for calculating structure of outlines |
% Adding outlines to PDF; macros for calculating structure of outlines |
985 |
\expandafter\xdef\csname#1\endcsname{\the\tempnum}} |
\expandafter\xdef\csname#1\endcsname{\the\tempnum}} |
986 |
\def\pdfmakeoutlines{{% |
\def\pdfmakeoutlines{{% |
987 |
\openin 1 \jobname.toc |
\openin 1 \jobname.toc |
988 |
\ifeof 1\else\bgroup |
\ifeof 1\else\begingroup |
989 |
\closein 1 |
\closein 1 |
990 |
\indexnofonts |
\indexnofonts |
991 |
\def\tt{} |
\def\tt{} |
992 |
\let\_ = \normalunderscore |
\let\_ = \normalunderscore |
993 |
% Thanh's hack / proper braces in bookmarks |
% Thanh's hack / proper braces in bookmarks |
994 |
\edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace |
\edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace |
995 |
\edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace |
\edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace |
996 |
% |
% |
997 |
\def\chapentry ##1##2##3{} |
\def\chapentry ##1##2##3{} |
998 |
|
\let\appendixentry = \chapentry |
999 |
\def\unnumbchapentry ##1##2{} |
\def\unnumbchapentry ##1##2{} |
1000 |
\def\secentry ##1##2##3##4{\advancenumber{chap##2}} |
\def\secentry ##1##2##3##4{\advancenumber{chap##2}} |
1001 |
\def\unnumbsecentry ##1##2{} |
\def\unnumbsecentry ##1##2##3{\advancenumber{chap##2}} |
1002 |
\def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}} |
\def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}} |
1003 |
\def\unnumbsubsecentry ##1##2{} |
\def\unnumbsubsecentry ##1##2##3##4{\advancenumber{sec##2.##3}} |
1004 |
\def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}} |
\def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}} |
1005 |
\def\unnumbsubsubsecentry ##1##2{} |
\def\unnumbsubsubsecentry ##1##2##3##4##5{\advancenumber{subsec##2.##3.##4}} |
1006 |
\input \jobname.toc |
\input \jobname.toc |
1007 |
\def\chapentry ##1##2##3{% |
\def\chapentry ##1##2##3{% |
1008 |
\pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}} |
\pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}} |
1009 |
|
\let\appendixentry = \chapentry |
1010 |
\def\unnumbchapentry ##1##2{% |
\def\unnumbchapentry ##1##2{% |
1011 |
\pdfoutline goto name{\pdfmkpgn{##2}}{##1}} |
\pdfoutline goto name{\pdfmkpgn{##2}}{##1}} |
1012 |
\def\secentry ##1##2##3##4{% |
\def\secentry ##1##2##3##4{% |
1013 |
\pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}} |
\pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}} |
1014 |
\def\unnumbsecentry ##1##2{% |
\def\unnumbsecentry ##1##2##3{% |
1015 |
\pdfoutline goto name{\pdfmkpgn{##2}}{##1}} |
\pdfoutline goto name{\pdfmkpgn{##3}}{##1}} |
1016 |
\def\subsecentry ##1##2##3##4##5{% |
\def\subsecentry ##1##2##3##4##5{% |
1017 |
\pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}} |
\pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}} |
1018 |
\def\unnumbsubsecentry ##1##2{% |
\def\unnumbsubsecentry ##1##2##3##4{% |
1019 |
\pdfoutline goto name{\pdfmkpgn{##2}}{##1}} |
\pdfoutline goto name{\pdfmkpgn{##4}}{##1}} |
1020 |
\def\subsubsecentry ##1##2##3##4##5##6{% |
\def\subsubsecentry ##1##2##3##4##5##6{% |
1021 |
\pdfoutline goto name{\pdfmkpgn{##6}}{##1}} |
\pdfoutline goto name{\pdfmkpgn{##6}}{##1}} |
1022 |
\def\unnumbsubsubsecentry ##1##2{% |
\def\unnumbsubsubsecentry ##1##2##3##4##5{% |
1023 |
\pdfoutline goto name{\pdfmkpgn{##2}}{##1}} |
\pdfoutline goto name{\pdfmkpgn{##5}}{##1}} |
1024 |
\input \jobname.toc |
\input \jobname.toc |
1025 |
\egroup\fi |
\endgroup\fi |
1026 |
}} |
}} |
1027 |
\def\makelinks #1,{% |
\def\makelinks #1,{% |
1028 |
\def\params{#1}\def\E{END}% |
\def\params{#1}\def\E{END}% |
1032 |
\let\nextmakelinks=\makelinks |
\let\nextmakelinks=\makelinks |
1033 |
\ifnum\lnkcount>0,\fi |
\ifnum\lnkcount>0,\fi |
1034 |
\picknum{#1}% |
\picknum{#1}% |
1035 |
\startlink attr{/Border [0 0 0]} |
\startlink attr{/Border [0 0 0]} |
1036 |
goto name{\pdfmkpgn{\the\pgn}}% |
goto name{\pdfmkpgn{\the\pgn}}% |
1037 |
\linkcolor #1% |
\linkcolor #1% |
1038 |
\advance\lnkcount by 1% |
\advance\lnkcount by 1% |
1087 |
\ifx\first0\adn0 |
\ifx\first0\adn0 |
1088 |
\else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 |
\else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 |
1089 |
\else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 |
\else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 |
1090 |
\else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 |
\else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 |
1091 |
\else |
\else |
1092 |
\ifnum0=\countA\else\makelink\fi |
\ifnum0=\countA\else\makelink\fi |
1093 |
\ifx\first.\let\next=\done\else |
\ifx\first.\let\next=\done\else |
1100 |
\def\makelink{\addtokens{\toksB}% |
\def\makelink{\addtokens{\toksB}% |
1101 |
{\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} |
{\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} |
1102 |
\def\pdflink#1{% |
\def\pdflink#1{% |
1103 |
\startlink attr{/Border [0 0 0]} goto name{\mkpgn{#1}} |
\startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} |
1104 |
\linkcolor #1\endlink} |
\linkcolor #1\endlink} |
|
\def\mkpgn#1{#1@} |
|
1105 |
\def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} |
\def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} |
1106 |
\fi % \ifx\pdfoutput |
\fi % \ifx\pdfoutput |
1107 |
|
|
1118 |
% We don't need math for this one. |
% We don't need math for this one. |
1119 |
\def\ttsl{\tenttsl} |
\def\ttsl{\tenttsl} |
1120 |
|
|
1121 |
% Use Computer Modern fonts at \magstephalf (11pt). |
% Default leading. |
1122 |
\newcount\mainmagstep |
\newdimen\textleading \textleading = 13.2pt |
1123 |
\mainmagstep=\magstephalf |
|
1124 |
|
% Set the baselineskip to #1, and the lineskip and strut size |
1125 |
|
% correspondingly. There is no deep meaning behind these magic numbers |
1126 |
|
% used as factors; they just match (closely enough) what Knuth defined. |
1127 |
|
% |
1128 |
|
\def\lineskipfactor{.08333} |
1129 |
|
\def\strutheightpercent{.70833} |
1130 |
|
\def\strutdepthpercent {.29167} |
1131 |
|
% |
1132 |
|
\def\setleading#1{% |
1133 |
|
\normalbaselineskip = #1\relax |
1134 |
|
\normallineskip = \lineskipfactor\normalbaselineskip |
1135 |
|
\normalbaselines |
1136 |
|
\setbox\strutbox =\hbox{% |
1137 |
|
\vrule width0pt height\strutheightpercent\baselineskip |
1138 |
|
depth \strutdepthpercent \baselineskip |
1139 |
|
}% |
1140 |
|
} |
1141 |
|
|
1142 |
% Set the font macro #1 to the font named #2, adding on the |
% Set the font macro #1 to the font named #2, adding on the |
1143 |
% specified font prefix (normally `cm'). |
% specified font prefix (normally `cm'). |
1167 |
\def\scshape{csc} |
\def\scshape{csc} |
1168 |
\def\scbshape{csc} |
\def\scbshape{csc} |
1169 |
|
|
1170 |
|
\newcount\mainmagstep |
1171 |
\ifx\bigger\relax |
\ifx\bigger\relax |
1172 |
\let\mainmagstep=\magstep1 |
% not really supported. |
1173 |
\setfont\textrm\rmshape{12}{1000} |
\let\mainmagstep=\magstep1 |
1174 |
\setfont\texttt\ttshape{12}{1000} |
\setfont\textrm\rmshape{12}{1000} |
1175 |
|
\setfont\texttt\ttshape{12}{1000} |
1176 |
\else |
\else |
1177 |
\setfont\textrm\rmshape{10}{\mainmagstep} |
% \mainmagstep=\magstephalf |
1178 |
\setfont\texttt\ttshape{10}{\mainmagstep} |
\mainmagstep=\magstep1 |
1179 |
|
\setfont\textrm\rmshape{10}{\mainmagstep} |
1180 |
|
\setfont\texttt\ttshape{10}{\mainmagstep} |
1181 |
\fi |
\fi |
1182 |
% Instead of cmb10, you many want to use cmbx10. |
% Instead of cmb10, you many want to use cmbx10. |
1183 |
% cmbx10 is a prettier font on its own, but cmb10 |
% cmbx10 is a prettier font on its own, but cmb10 |
1208 |
\font\smalli=cmmi9 |
\font\smalli=cmmi9 |
1209 |
\font\smallsy=cmsy9 |
\font\smallsy=cmsy9 |
1210 |
|
|
1211 |
|
% Fonts for small examples (8pt). |
1212 |
|
\setfont\smallerrm\rmshape{8}{1000} |
1213 |
|
\setfont\smallertt\ttshape{8}{1000} |
1214 |
|
\setfont\smallerbf\bfshape{10}{800} |
1215 |
|
\setfont\smallerit\itshape{8}{1000} |
1216 |
|
\setfont\smallersl\slshape{8}{1000} |
1217 |
|
\setfont\smallersf\sfshape{8}{1000} |
1218 |
|
\setfont\smallersc\scshape{10}{800} |
1219 |
|
\setfont\smallerttsl\ttslshape{10}{800} |
1220 |
|
\font\smalleri=cmmi8 |
1221 |
|
\font\smallersy=cmsy8 |
1222 |
|
|
1223 |
% Fonts for title page: |
% Fonts for title page: |
1224 |
\setfont\titlerm\rmbshape{12}{\magstep3} |
\setfont\titlerm\rmbshape{12}{\magstep3} |
1225 |
\setfont\titleit\itbshape{10}{\magstep4} |
\setfont\titleit\itbshape{10}{\magstep4} |
1257 |
\font\seci=cmmi12 scaled \magstep1 |
\font\seci=cmmi12 scaled \magstep1 |
1258 |
\font\secsy=cmsy10 scaled \magstep2 |
\font\secsy=cmsy10 scaled \magstep2 |
1259 |
|
|
|
% \setfont\ssecrm\bxshape{10}{\magstep1} % This size an font looked bad. |
|
|
% \setfont\ssecit\itshape{10}{\magstep1} % The letters were too crowded. |
|
|
% \setfont\ssecsl\slshape{10}{\magstep1} |
|
|
% \setfont\ssectt\ttshape{10}{\magstep1} |
|
|
% \setfont\ssecsf\sfshape{10}{\magstep1} |
|
|
|
|
|
%\setfont\ssecrm\bfshape{10}{1315} % Note the use of cmb rather than cmbx. |
|
|
%\setfont\ssecit\itshape{10}{1315} % Also, the size is a little larger than |
|
|
%\setfont\ssecsl\slshape{10}{1315} % being scaled magstep1. |
|
|
%\setfont\ssectt\ttshape{10}{1315} |
|
|
%\setfont\ssecsf\sfshape{10}{1315} |
|
|
|
|
|
%\let\ssecbf=\ssecrm |
|
|
|
|
1260 |
% Subsection fonts (13.15pt). |
% Subsection fonts (13.15pt). |
1261 |
\setfont\ssecrm\rmbshape{12}{\magstephalf} |
\setfont\ssecrm\rmbshape{12}{\magstephalf} |
1262 |
\setfont\ssecit\itbshape{10}{1315} |
\setfont\ssecit\itbshape{10}{1315} |
1273 |
|
|
1274 |
% In order for the font changes to affect most math symbols and letters, |
% In order for the font changes to affect most math symbols and letters, |
1275 |
% we have to define the \textfont of the standard families. Since |
% we have to define the \textfont of the standard families. Since |
1276 |
% texinfo doesn't allow for producing subscripts and superscripts, we |
% texinfo doesn't allow for producing subscripts and superscripts except |
1277 |
% don't bother to reset \scriptfont and \scriptscriptfont (which would |
% in the main text, we don't bother to reset \scriptfont and |
1278 |
% also require loading a lot more fonts). |
% \scriptscriptfont (which would also require loading a lot more fonts). |
1279 |
% |
% |
1280 |
\def\resetmathfonts{% |
\def\resetmathfonts{% |
1281 |
\textfont0 = \tenrm \textfont1 = \teni \textfont2 = \tensy |
\textfont0=\tenrm \textfont1=\teni \textfont2=\tensy |
1282 |
\textfont\itfam = \tenit \textfont\slfam = \tensl \textfont\bffam = \tenbf |
\textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf |
1283 |
\textfont\ttfam = \tentt \textfont\sffam = \tensf |
\textfont\ttfam=\tentt \textfont\sffam=\tensf |
1284 |
} |
} |
1285 |
|
|
|
|
|
1286 |
% The font-changing commands redefine the meanings of \tenSTYLE, instead |
% The font-changing commands redefine the meanings of \tenSTYLE, instead |
1287 |
% of just \STYLE. We do this so that font changes will continue to work |
% of just \STYLE. We do this so that font changes will continue to work |
1288 |
% in math mode, where it is the current \fam that is relevant in most |
% in math mode, where it is the current \fam that is relevant in most |
1293 |
\let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl |
\let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl |
1294 |
\let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc |
\let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc |
1295 |
\let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl |
\let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl |
1296 |
\resetmathfonts} |
\resetmathfonts \setleading{\textleading}} |
1297 |
\def\titlefonts{% |
\def\titlefonts{% |
1298 |
\let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl |
\let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl |
1299 |
\let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc |
\let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc |
1322 |
\let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc |
\let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc |
1323 |
\let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy |
\let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy |
1324 |
\let\tenttsl=\smallttsl |
\let\tenttsl=\smallttsl |
1325 |
\resetmathfonts \setleading{11pt}} |
\resetmathfonts \setleading{10.5pt}} |
1326 |
|
\def\smallerfonts{% |
1327 |
|
\let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl |
1328 |
|
\let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc |
1329 |
|
\let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy |
1330 |
|
\let\tenttsl=\smallerttsl |
1331 |
|
\resetmathfonts \setleading{9.5pt}} |
1332 |
|
\let\smallexamplefonts = \smallerfonts |
1333 |
|
|
1334 |
% Set up the default fonts, so we can use them for creating boxes. |
% Set up the default fonts, so we can use them for creating boxes. |
1335 |
% |
% |
1443 |
|
|
1444 |
\def\realdash{-} |
\def\realdash{-} |
1445 |
\def\codedash{-\discretionary{}{}{}} |
\def\codedash{-\discretionary{}{}{}} |
1446 |
\def\codeunder{\ifusingtt{\normalunderscore\discretionary{}{}{}}{\_}} |
\def\codeunder{% |
1447 |
|
% this is all so @math{@code{var_name}+1} can work. In math mode, _ |
1448 |
|
% is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.) |
1449 |
|
% will therefore expand the active definition of _, which is us |
1450 |
|
% (inside @code that is), therefore an endless loop. |
1451 |
|
\ifusingtt{\ifmmode |
1452 |
|
\mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. |
1453 |
|
\else\normalunderscore \fi |
1454 |
|
\discretionary{}{}{}}% |
1455 |
|
{\_}% |
1456 |
|
} |
1457 |
\def\codex #1{\tclose{#1}\endgroup} |
\def\codex #1{\tclose{#1}\endgroup} |
1458 |
|
|
|
%\let\exp=\tclose %Was temporary |
|
|
|
|
1459 |
% @kbd is like @code, except that if the argument is just one @key command, |
% @kbd is like @code, except that if the argument is just one @key command, |
1460 |
% then @kbd has no effect. |
% then @kbd has no effect. |
1461 |
|
|
1522 |
|
|
1523 |
% rms does not like angle brackets --karl, 17may97. |
% rms does not like angle brackets --karl, 17may97. |
1524 |
% So now @email is just like @uref, unless we are pdf. |
% So now @email is just like @uref, unless we are pdf. |
1525 |
% |
% |
1526 |
%\def\email#1{\angleleft{\tt #1}\angleright} |
%\def\email#1{\angleleft{\tt #1}\angleright} |
1527 |
\ifpdf |
\ifpdf |
1528 |
\def\email#1{\doemail#1,,\finish} |
\def\email#1{\doemail#1,,\finish} |
1640 |
\oldpage |
\oldpage |
1641 |
\endgroup |
\endgroup |
1642 |
% |
% |
1643 |
|
% Need this before the \...aftertitlepage checks so that if they are |
1644 |
|
% in effect the toc pages will come out with page numbers. |
1645 |
|
\HEADINGSon |
1646 |
|
% |
1647 |
% If they want short, they certainly want long too. |
% If they want short, they certainly want long too. |
1648 |
\ifsetshortcontentsaftertitlepage |
\ifsetshortcontentsaftertitlepage |
1649 |
\shortcontents |
\shortcontents |
1657 |
\global\let\contents = \relax |
\global\let\contents = \relax |
1658 |
\global\let\shortcontents = \relax |
\global\let\shortcontents = \relax |
1659 |
\fi |
\fi |
|
% |
|
|
\ifpdf \pdfmakepagedesttrue \fi |
|
|
% |
|
|
\HEADINGSon |
|
1660 |
} |
} |
1661 |
|
|
1662 |
\def\finishtitlepage{% |
\def\finishtitlepage{% |
2414 |
\let\item = \relax |
\let\item = \relax |
2415 |
} |
} |
2416 |
|
|
2417 |
% Ignore @ignore ... @end ignore. |
% Ignore @ignore, @ifhtml, @ifinfo, @ifplaintext, @ifnottex, @html, @menu, |
2418 |
|
% @direntry, and @documentdescription. |
2419 |
% |
% |
2420 |
\def\ignore{\doignore{ignore}} |
\def\ignore{\doignore{ignore}} |
|
|
|
|
% Ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu, and @direntry text. |
|
|
% |
|
|
\def\ifinfo{\doignore{ifinfo}} |
|
2421 |
\def\ifhtml{\doignore{ifhtml}} |
\def\ifhtml{\doignore{ifhtml}} |
2422 |
|
\def\ifinfo{\doignore{ifinfo}} |
2423 |
|
\def\ifplaintext{\doignore{ifplaintext}} |
2424 |
\def\ifnottex{\doignore{ifnottex}} |
\def\ifnottex{\doignore{ifnottex}} |
2425 |
\def\html{\doignore{html}} |
\def\html{\doignore{html}} |
2426 |
\def\menu{\doignore{menu}} |
\def\menu{\doignore{menu}} |
2427 |
\def\direntry{\doignore{direntry}} |
\def\direntry{\doignore{direntry}} |
2428 |
|
\def\documentdescription{\doignore{documentdescription}} |
2429 |
|
\def\documentdescriptionword{documentdescription} |
2430 |
|
|
2431 |
% @dircategory CATEGORY -- specify a category of the dir file |
% @dircategory CATEGORY -- specify a category of the dir file |
2432 |
% which this file should belong to. Ignore this in TeX. |
% which this file should belong to. Ignore this in TeX. |
2453 |
% We must not have @c interpreted as a control sequence. |
% We must not have @c interpreted as a control sequence. |
2454 |
\catcode`\@ = 12 |
\catcode`\@ = 12 |
2455 |
% |
% |
2456 |
% Make the letter c a comment character so that the rest of the line |
\def\ignoreword{#1}% |
2457 |
% will be ignored. This way, the document can have (for example) |
\ifx\ignoreword\documentdescriptionword |
2458 |
% @c @end ifinfo |
% The c kludge breaks documentdescription, since |
2459 |
% and the @end ifinfo will be properly ignored. |
% `documentdescription' contains a `c'. Means not everything will |
2460 |
% (We've just changed @ to catcode 12.) |
% be ignored inside @documentdescription, but oh well... |
2461 |
\catcode`\c = 14 |
\else |
2462 |
|
% Make the letter c a comment character so that the rest of the line |
2463 |
|
% will be ignored. This way, the document can have (for example) |
2464 |
|
% @c @end ifinfo |
2465 |
|
% and the @end ifinfo will be properly ignored. |
2466 |
|
% (We've just changed @ to catcode 12.) |
2467 |
|
\catcode`\c = 14 |
2468 |
|
\fi |
2469 |
% |
% |
2470 |
% And now expand that command. |
% And now expand the command defined above. |
2471 |
\doignoretext |
\doignoretext |
2472 |
} |
} |
2473 |
|
|
2539 |
\let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont |
\let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont |
2540 |
\let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont |
\let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont |
2541 |
\let\tensf=\nullfont |
\let\tensf=\nullfont |
2542 |
% Similarly for index fonts (mostly for their use in smallexample). |
% Similarly for index fonts. |
2543 |
\let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont |
\let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont |
2544 |
\let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont |
\let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont |
2545 |
\let\smallsf=\nullfont |
\let\smallsf=\nullfont |
2546 |
|
% Similarly for smallexample fonts. |
2547 |
|
\let\smallerrm=\nullfont \let\smallerit=\nullfont \let\smallersl=\nullfont |
2548 |
|
\let\smallerbf=\nullfont \let\smallertt=\nullfont \let\smallersc=\nullfont |
2549 |
|
\let\smallersf=\nullfont |
2550 |
% |
% |
2551 |
% Don't complain when characters are missing from the fonts. |
% Don't complain when characters are missing from the fonts. |
2552 |
\tracinglostchars = 0 |
\tracinglostchars = 0 |
2658 |
\def\ifclearfail{\nestedignore{ifclear}} |
\def\ifclearfail{\nestedignore{ifclear}} |
2659 |
\defineunmatchedend{ifclear} |
\defineunmatchedend{ifclear} |
2660 |
|
|
2661 |
% @iftex, @ifnothtml, @ifnotinfo always succeed; we read the text |
% @iftex, @ifnothtml, @ifnotinfo, @ifnotplaintext always succeed; we |
2662 |
% following, through the first @end iftex (etc.). Make `@end iftex' |
% read the text following, through the first @end iftex (etc.). Make |
2663 |
% (etc.) valid only after an @iftex. |
% `@end iftex' (etc.) valid only after an @iftex. |
2664 |
% |
% |
2665 |
\def\iftex{\conditionalsucceed{iftex}} |
\def\iftex{\conditionalsucceed{iftex}} |
2666 |
\def\ifnothtml{\conditionalsucceed{ifnothtml}} |
\def\ifnothtml{\conditionalsucceed{ifnothtml}} |
2667 |
\def\ifnotinfo{\conditionalsucceed{ifnotinfo}} |
\def\ifnotinfo{\conditionalsucceed{ifnotinfo}} |
2668 |
|
\def\ifnotplaintext{\conditionalsucceed{ifnotplaintext}} |
2669 |
\defineunmatchedend{iftex} |
\defineunmatchedend{iftex} |
2670 |
\defineunmatchedend{ifnothtml} |
\defineunmatchedend{ifnothtml} |
2671 |
\defineunmatchedend{ifnotinfo} |
\defineunmatchedend{ifnotinfo} |
2672 |
|
\defineunmatchedend{ifnotplaintext} |
2673 |
|
|
2674 |
% We can't just want to start a group at @iftex (for example) and end it |
% We can't just want to start a group at @iftex (etc.) and end it at |
2675 |
% at @end iftex, since then @set commands inside the conditional have no |
% @end iftex, since then @set commands inside the conditional have no |
2676 |
% effect (they'd get reverted at the end of the group). So we must |
% effect (they'd get reverted at the end of the group). So we must |
2677 |
% define \Eiftex to redefine itself to be its previous value. (We can't |
% define \Eiftex to redefine itself to be its previous value. (We can't |
2678 |
% just define it to fail again with an ``unmatched end'' error, since |
% just define it to fail again with an ``unmatched end'' error, since |
2743 |
|
|
2744 |
% @synindex foo bar makes index foo feed into index bar. |
% @synindex foo bar makes index foo feed into index bar. |
2745 |
% Do this instead of @defindex foo if you don't want it as a separate index. |
% Do this instead of @defindex foo if you don't want it as a separate index. |
2746 |
% |
% |
2747 |
% @syncodeindex foo bar similar, but put all entries made for index foo |
% @syncodeindex foo bar similar, but put all entries made for index foo |
2748 |
% inside @code. |
% inside @code. |
2749 |
% |
% |
2750 |
\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} |
\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} |
2751 |
\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} |
\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} |
2752 |
|
|
2785 |
\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer} |
\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer} |
2786 |
\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} |
\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} |
2787 |
|
|
2788 |
|
% Take care of texinfo commands likely to appear in an index entry. |
2789 |
|
% (Must be a way to avoid doing expansion at all, and thus not have to |
2790 |
|
% laboriously list every single command here.) |
2791 |
|
% |
2792 |
\def\indexdummies{% |
\def\indexdummies{% |
2793 |
\def\ { }% |
\def\ { }% |
2794 |
|
\def\@{@}% change to @@ when we switch to @ as escape char in aux files. |
2795 |
|
% Need these in case \tex is in effect and \{ is a \delimiter again. |
2796 |
|
% But can't use \lbracecmd and \rbracecmd because texindex assumes |
2797 |
|
% braces and backslashes are used only as delimiters. |
2798 |
|
\let\{ = \mylbrace |
2799 |
|
\let\} = \myrbrace |
2800 |
|
\def\_{{\realbackslash _}}% |
2801 |
|
\normalturnoffactive |
2802 |
|
% |
2803 |
% Take care of the plain tex accent commands. |
% Take care of the plain tex accent commands. |
2804 |
|
\def\,##1{\realbackslash ,{##1}}% |
2805 |
\def\"{\realbackslash "}% |
\def\"{\realbackslash "}% |
2806 |
\def\`{\realbackslash `}% |
\def\`{\realbackslash `}% |
2807 |
\def\'{\realbackslash '}% |
\def\'{\realbackslash '}% |
2814 |
\def\u{\realbackslash u}% |
\def\u{\realbackslash u}% |
2815 |
\def\v{\realbackslash v}% |
\def\v{\realbackslash v}% |
2816 |
\def\H{\realbackslash H}% |
\def\H{\realbackslash H}% |
2817 |
|
\def\dotless##1{\realbackslash dotless {##1}}% |
2818 |
% Take care of the plain tex special European modified letters. |
% Take care of the plain tex special European modified letters. |
|
\def\oe{\realbackslash oe}% |
|
|
\def\ae{\realbackslash ae}% |
|
|
\def\aa{\realbackslash aa}% |
|
|
\def\OE{\realbackslash OE}% |
|
|
\def\AE{\realbackslash AE}% |
|
2819 |
\def\AA{\realbackslash AA}% |
\def\AA{\realbackslash AA}% |
2820 |
\def\o{\realbackslash o}% |
\def\AE{\realbackslash AE}% |
2821 |
|
\def\L{\realbackslash L}% |
2822 |
|
\def\OE{\realbackslash OE}% |
2823 |
\def\O{\realbackslash O}% |
\def\O{\realbackslash O}% |
2824 |
|
\def\aa{\realbackslash aa}% |
2825 |
|
\def\ae{\realbackslash ae}% |
2826 |
\def\l{\realbackslash l}% |
\def\l{\realbackslash l}% |
2827 |
\def\L{\realbackslash L}% |
\def\oe{\realbackslash oe}% |
2828 |
|
\def\o{\realbackslash o}% |
2829 |
\def\ss{\realbackslash ss}% |
\def\ss{\realbackslash ss}% |
2830 |
% Take care of texinfo commands likely to appear in an index entry. |
% |
2831 |
% (Must be a way to avoid doing expansion at all, and thus not have to |
% Although these internals commands shouldn't show up, sometimes they do. |
|
% laboriously list every single command here.) |
|
|
\def\@{@}% will be @@ when we switch to @ as escape char. |
|
|
% Need these in case \tex is in effect and \{ is a \delimiter again. |
|
|
% But can't use \lbracecmd and \rbracecmd because texindex assumes |
|
|
% braces and backslashes are used only as delimiters. |
|
|
\let\{ = \mylbrace |
|
|
\let\} = \myrbrace |
|
|
\def\_{{\realbackslash _}}% |
|
|
\def\w{\realbackslash w }% |
|
2832 |
\def\bf{\realbackslash bf }% |
\def\bf{\realbackslash bf }% |
2833 |
|
\def\gtr{\realbackslash gtr}% |
2834 |
|
\def\hat{\realbackslash hat}% |
2835 |
|
\def\less{\realbackslash less}% |
2836 |
%\def\rm{\realbackslash rm }% |
%\def\rm{\realbackslash rm }% |
|
\def\sl{\realbackslash sl }% |
|
2837 |
\def\sf{\realbackslash sf}% |
\def\sf{\realbackslash sf}% |
2838 |
|
\def\sl{\realbackslash sl }% |
2839 |
|
\def\tclose##1{\realbackslash tclose {##1}}% |
2840 |
\def\tt{\realbackslash tt}% |
\def\tt{\realbackslash tt}% |
2841 |
\def\gtr{\realbackslash gtr}% |
% |
2842 |
\def\less{\realbackslash less}% |
\def\b##1{\realbackslash b {##1}}% |
2843 |
\def\hat{\realbackslash hat}% |
\def\i##1{\realbackslash i {##1}}% |
2844 |
|
\def\sc##1{\realbackslash sc {##1}}% |
2845 |
|
\def\t##1{\realbackslash t {##1}}% |
2846 |
|
\def\r##1{\realbackslash r {##1}}% |
2847 |
|
% |
2848 |
\def\TeX{\realbackslash TeX}% |
\def\TeX{\realbackslash TeX}% |
2849 |
\def\dots{\realbackslash dots }% |
\def\acronym##1{\realbackslash acronym {##1}}% |
2850 |
\def\result{\realbackslash result}% |
\def\cite##1{\realbackslash cite {##1}}% |
|
\def\equiv{\realbackslash equiv}% |
|
|
\def\expansion{\realbackslash expansion}% |
|
|
\def\print{\realbackslash print}% |
|
|
\def\error{\realbackslash error}% |
|
|
\def\point{\realbackslash point}% |
|
|
\def\copyright{\realbackslash copyright}% |
|
|
\def\tclose##1{\realbackslash tclose {##1}}% |
|
2851 |
\def\code##1{\realbackslash code {##1}}% |
\def\code##1{\realbackslash code {##1}}% |
|
\def\uref##1{\realbackslash uref {##1}}% |
|
|
\def\url##1{\realbackslash url {##1}}% |
|
|
\def\env##1{\realbackslash env {##1}}% |
|
2852 |
\def\command##1{\realbackslash command {##1}}% |
\def\command##1{\realbackslash command {##1}}% |
2853 |
|
\def\dfn##1{\realbackslash dfn {##1}}% |
2854 |
|
\def\dots{\realbackslash dots }% |
2855 |
|
\def\emph##1{\realbackslash emph {##1}}% |
2856 |
|
\def\env##1{\realbackslash env {##1}}% |
2857 |
|
\def\file##1{\realbackslash file {##1}}% |
2858 |
|
\def\kbd##1{\realbackslash kbd {##1}}% |
2859 |
|
\def\key##1{\realbackslash key {##1}}% |
2860 |
|
\def\math##1{\realbackslash math {##1}}% |
2861 |
\def\option##1{\realbackslash option {##1}}% |
\def\option##1{\realbackslash option {##1}}% |
|
\def\dotless##1{\realbackslash dotless {##1}}% |
|
2862 |
\def\samp##1{\realbackslash samp {##1}}% |
\def\samp##1{\realbackslash samp {##1}}% |
2863 |
\def\,##1{\realbackslash ,{##1}}% |
\def\strong##1{\realbackslash strong {##1}}% |
2864 |
\def\t##1{\realbackslash t {##1}}% |
\def\uref##1{\realbackslash uref {##1}}% |
2865 |
\def\r##1{\realbackslash r {##1}}% |
\def\url##1{\realbackslash url {##1}}% |
|
\def\i##1{\realbackslash i {##1}}% |
|
|
\def\b##1{\realbackslash b {##1}}% |
|
|
\def\sc##1{\realbackslash sc {##1}}% |
|
|
\def\cite##1{\realbackslash cite {##1}}% |
|
|
\def\key##1{\realbackslash key {##1}}% |
|
|
\def\file##1{\realbackslash file {##1}}% |
|
2866 |
\def\var##1{\realbackslash var {##1}}% |
\def\var##1{\realbackslash var {##1}}% |
2867 |
\def\kbd##1{\realbackslash kbd {##1}}% |
\def\w{\realbackslash w }% |
2868 |
\def\dfn##1{\realbackslash dfn {##1}}% |
% |
2869 |
\def\emph##1{\realbackslash emph {##1}}% |
% These math commands don't seem likely to be used in index entries. |
2870 |
\def\acronym##1{\realbackslash acronym {##1}}% |
\def\copyright{\realbackslash copyright}% |
2871 |
|
\def\equiv{\realbackslash equiv}% |
2872 |
|
\def\error{\realbackslash error}% |
2873 |
|
\def\expansion{\realbackslash expansion}% |
2874 |
|
\def\point{\realbackslash point}% |
2875 |
|
\def\print{\realbackslash print}% |
2876 |
|
\def\result{\realbackslash result}% |
2877 |
% |
% |
2878 |
% Handle some cases of @value -- where the variable name does not |
% Handle some cases of @value -- where the variable name does not |
2879 |
% contain - or _, and the value does not contain any |
% contain - or _, and the value does not contain any |
2887 |
|
|
2888 |
% If an index command is used in an @example environment, any spaces |
% If an index command is used in an @example environment, any spaces |
2889 |
% therein should become regular spaces in the raw index file, not the |
% therein should become regular spaces in the raw index file, not the |
2890 |
% expansion of \tie (\\leavevmode \penalty \@M \ ). |
% expansion of \tie (\leavevmode \penalty \@M \ ). |
2891 |
{\obeyspaces |
{\obeyspaces |
2892 |
\gdef\unsepspaces{\obeyspaces\let =\space}} |
\gdef\unsepspaces{\obeyspaces\let =\space}} |
2893 |
|
|
2898 |
\def\indexdummydots{...} |
\def\indexdummydots{...} |
2899 |
|
|
2900 |
\def\indexnofonts{% |
\def\indexnofonts{% |
2901 |
% Just ignore accents. |
\def\@{@}% |
2902 |
|
% how to handle braces? |
2903 |
|
\def\_{\normalunderscore}% |
2904 |
|
% |
2905 |
\let\,=\indexdummyfont |
\let\,=\indexdummyfont |
2906 |
\let\"=\indexdummyfont |
\let\"=\indexdummyfont |
2907 |
\let\`=\indexdummyfont |
\let\`=\indexdummyfont |
2917 |
\let\H=\indexdummyfont |
\let\H=\indexdummyfont |
2918 |
\let\dotless=\indexdummyfont |
\let\dotless=\indexdummyfont |
2919 |
% Take care of the plain tex special European modified letters. |
% Take care of the plain tex special European modified letters. |
|
\def\oe{oe}% |
|
|
\def\ae{ae}% |
|
|
\def\aa{aa}% |
|
|
\def\OE{OE}% |
|
|
\def\AE{AE}% |
|
2920 |
\def\AA{AA}% |
\def\AA{AA}% |
2921 |
\def\o{o}% |
\def\AE{AE}% |
2922 |
|
\def\L{L}% |
2923 |
|
\def\OE{OE}% |
2924 |
\def\O{O}% |
\def\O{O}% |
2925 |
|
\def\aa{aa}% |
2926 |
|
\def\ae{ae}% |
2927 |
\def\l{l}% |
\def\l{l}% |
2928 |
\def\L{L}% |
\def\oe{oe}% |
2929 |
|
\def\o{o}% |
2930 |
\def\ss{ss}% |
\def\ss{ss}% |
2931 |
\let\w=\indexdummyfont |
% |
2932 |
\let\t=\indexdummyfont |
% Don't no-op \tt, since it isn't a user-level command |
2933 |
\let\r=\indexdummyfont |
% and is used in the definitions of the active chars like <, >, |, etc. |
2934 |
\let\i=\indexdummyfont |
% Likewise with the other plain tex font commands. |
2935 |
|
%\let\tt=\indexdummyfont |
2936 |
|
% |
2937 |
\let\b=\indexdummyfont |
\let\b=\indexdummyfont |
2938 |
\let\emph=\indexdummyfont |
\let\i=\indexdummyfont |
2939 |
\let\strong=\indexdummyfont |
\let\r=\indexdummyfont |
|
\let\cite=\indexdummyfont |
|
2940 |
\let\sc=\indexdummyfont |
\let\sc=\indexdummyfont |
2941 |
%Don't no-op \tt, since it isn't a user-level command |
\let\t=\indexdummyfont |
2942 |
% and is used in the definitions of the active chars like <, >, |... |
% |
2943 |
%\let\tt=\indexdummyfont |
\let\TeX=\indexdummytex |
|
\let\tclose=\indexdummyfont |
|
|
\let\code=\indexdummyfont |
|
|
\let\url=\indexdummyfont |
|
|
\let\uref=\indexdummyfont |
|
|
\let\env=\indexdummyfont |
|
2944 |
\let\acronym=\indexdummyfont |
\let\acronym=\indexdummyfont |
2945 |
|
\let\cite=\indexdummyfont |
2946 |
|
\let\code=\indexdummyfont |
2947 |
\let\command=\indexdummyfont |
\let\command=\indexdummyfont |
2948 |
\let\option=\indexdummyfont |
\let\dfn=\indexdummyfont |
2949 |
|
\let\dots=\indexdummydots |
2950 |
|
\let\emph=\indexdummyfont |
2951 |
|
\let\env=\indexdummyfont |
2952 |
\let\file=\indexdummyfont |
\let\file=\indexdummyfont |
|
\let\samp=\indexdummyfont |
|
2953 |
\let\kbd=\indexdummyfont |
\let\kbd=\indexdummyfont |
2954 |
\let\key=\indexdummyfont |
\let\key=\indexdummyfont |
2955 |
|
\let\math=\indexdummyfont |
2956 |
|
\let\option=\indexdummyfont |
2957 |
|
\let\samp=\indexdummyfont |
2958 |
|
\let\strong=\indexdummyfont |
2959 |
|
\let\uref=\indexdummyfont |
2960 |
|
\let\url=\indexdummyfont |
2961 |
\let\var=\indexdummyfont |
\let\var=\indexdummyfont |
2962 |
\let\TeX=\indexdummytex |
\let\w=\indexdummyfont |
|
\let\dots=\indexdummydots |
|
|
\def\@{@}% |
|
2963 |
} |
} |
2964 |
|
|
2965 |
% To define \realbackslash, we must make \ not be an escape. |
% To define \realbackslash, we must make \ not be an escape. |
3349 |
\wd0=\hsize \wd2=\hsize |
\wd0=\hsize \wd2=\hsize |
3350 |
\hbox to\pagewidth{\box0\hfil\box2}% |
\hbox to\pagewidth{\box0\hfil\box2}% |
3351 |
} |
} |
3352 |
% |
% |
3353 |
% All done with double columns. |
% All done with double columns. |
3354 |
\def\enddoublecolumns{% |
\def\enddoublecolumns{% |
3355 |
\output = {% |
\output = {% |
3561 |
\gdef\thischaptername{#1}% |
\gdef\thischaptername{#1}% |
3562 |
\xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}% |
\xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}% |
3563 |
\toks0 = {#1}% |
\toks0 = {#1}% |
3564 |
\edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}% |
\edef\temp{\noexpand\writetocentry{\realbackslash appendixentry{\the\toks0}% |
3565 |
{\putwordAppendix{} \appendixletter}}}% |
{\appendixletter}}}% |
3566 |
\temp |
\temp |
3567 |
\appendixnoderef |
\appendixnoderef |
3568 |
\global\let\section = \appendixsec |
\global\let\section = \appendixsec |
3639 |
\def\unnumberedseczzz #1{% |
\def\unnumberedseczzz #1{% |
3640 |
\plainsecheading {#1}\gdef\thissection{#1}% |
\plainsecheading {#1}\gdef\thissection{#1}% |
3641 |
\toks0 = {#1}% |
\toks0 = {#1}% |
3642 |
\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry{\the\toks0}}}% |
\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry% |
3643 |
|
{\the\toks0}{\the\chapno}}}% |
3644 |
\temp |
\temp |
3645 |
\unnumbnoderef |
\unnumbnoderef |
3646 |
\nobreak |
\nobreak |
3679 |
\plainsubsecheading {#1}\gdef\thissection{#1}% |
\plainsubsecheading {#1}\gdef\thissection{#1}% |
3680 |
\toks0 = {#1}% |
\toks0 = {#1}% |
3681 |
\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry% |
\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry% |
3682 |
{\the\toks0}}}% |
{\the\toks0}{\the\chapno}{\the\secno}}}% |
3683 |
\temp |
\temp |
3684 |
\unnumbnoderef |
\unnumbnoderef |
3685 |
\nobreak |
\nobreak |
3720 |
\plainsubsubsecheading {#1}\gdef\thissection{#1}% |
\plainsubsubsecheading {#1}\gdef\thissection{#1}% |
3721 |
\toks0 = {#1}% |
\toks0 = {#1}% |
3722 |
\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry% |
\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry% |
3723 |
{\the\toks0}}}% |
{\the\toks0}{\the\chapno}{\the\secno}{\the\subsecno}}}% |
3724 |
\temp |
\temp |
3725 |
\unnumbnoderef |
\unnumbnoderef |
3726 |
\nobreak |
\nobreak |
3932 |
% argument, which will end up as the last argument to the \...entry macro. |
% argument, which will end up as the last argument to the \...entry macro. |
3933 |
% |
% |
3934 |
% We open the .toc file here instead of at @setfilename or any other |
% We open the .toc file here instead of at @setfilename or any other |
3935 |
% given time so that @contents can be put in the document anywhere. |
% fixed time so that @contents can be put in the document anywhere. |
3936 |
% |
% |
3937 |
\newif\iftocfileopened |
\newif\iftocfileopened |
3938 |
\def\writetocentry#1{% |
\def\writetocentry#1{% |
3941 |
\global\tocfileopenedtrue |
\global\tocfileopenedtrue |
3942 |
\fi |
\fi |
3943 |
\iflinks \write\tocfile{#1{\folio}}\fi |
\iflinks \write\tocfile{#1{\folio}}\fi |
3944 |
|
% |
3945 |
|
% Tell \shipout to create a page destination if we're doing pdf, which |
3946 |
|
% will be the target of the links in the table of contents. We can't |
3947 |
|
% just do it on every page because the title pages are numbered 1 and |
3948 |
|
% 2 (the page numbers aren't printed), and so are the first two pages |
3949 |
|
% of the document. Thus, we'd have two destinations named `1', and |
3950 |
|
% two named `2'. |
3951 |
|
\ifpdf \pdfmakepagedesttrue \fi |
3952 |
} |
} |
3953 |
|
|
3954 |
\newskip\contentsrightmargin \contentsrightmargin=1in |
\newskip\contentsrightmargin \contentsrightmargin=1in |
4004 |
\startcontents{\putwordShortTOC}% |
\startcontents{\putwordShortTOC}% |
4005 |
% |
% |
4006 |
\let\chapentry = \shortchapentry |
\let\chapentry = \shortchapentry |
4007 |
|
\let\appendixentry = \shortappendixentry |
4008 |
\let\unnumbchapentry = \shortunnumberedentry |
\let\unnumbchapentry = \shortunnumberedentry |
4009 |
% We want a true roman here for the page numbers. |
% We want a true roman here for the page numbers. |
4010 |
\secfonts |
\secfonts |
4013 |
\hyphenpenalty = 10000 |
\hyphenpenalty = 10000 |
4014 |
\advance\baselineskip by 1pt % Open it up a little. |
\advance\baselineskip by 1pt % Open it up a little. |
4015 |
\def\secentry ##1##2##3##4{} |
\def\secentry ##1##2##3##4{} |
4016 |
\def\unnumbsecentry ##1##2{} |
\def\unnumbsecentry ##1##2##3{} |
4017 |
\def\subsecentry ##1##2##3##4##5{} |
\def\subsecentry ##1##2##3##4##5{} |
4018 |
\def\unnumbsubsecentry ##1##2{} |
\def\unnumbsubsecentry ##1##2##3##4{} |
4019 |
\def\subsubsecentry ##1##2##3##4##5##6{} |
\def\subsubsecentry ##1##2##3##4##5##6{} |
4020 |
\def\unnumbsubsubsecentry ##1##2{} |
\def\unnumbsubsubsecentry ##1##2##3##4##5{} |
4021 |
\openin 1 \jobname.toc |
\openin 1 \jobname.toc |
4022 |
\ifeof 1 \else |
\ifeof 1 \else |
4023 |
\closein 1 |
\closein 1 |
4040 |
% The last argument is the page number. |
% The last argument is the page number. |
4041 |
% The arguments in between are the chapter number, section number, ... |
% The arguments in between are the chapter number, section number, ... |
4042 |
|
|
4043 |
% Chapter-level things, for both the long and short contents. |
% Chapters, in the main contents. |
4044 |
\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}} |
\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}} |
4045 |
|
% |
4046 |
% See comments in \dochapentry re vbox and related settings |
% Chapters, in the short toc. |
4047 |
|
% See comments in \dochapentry re vbox and related settings. |
4048 |
\def\shortchapentry#1#2#3{% |
\def\shortchapentry#1#2#3{% |
4049 |
\tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}% |
\tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}% |
4050 |
} |
} |
4051 |
|
|
4052 |
|
% Appendices, in the main contents. |
4053 |
|
\def\appendixentry#1#2#3{\dochapentry{\putwordAppendix{} #2\labelspace#1}{#3}} |
4054 |
|
% |
4055 |
|
% Appendices, in the short toc. |
4056 |
|
\let\shortappendixentry = \shortchapentry |
4057 |
|
|
4058 |
% Typeset the label for a chapter or appendix for the short contents. |
% Typeset the label for a chapter or appendix for the short contents. |
4059 |
% The arg is, e.g. `Appendix A' for an appendix, or `3' for a chapter. |
% The arg is, e.g., `Appendix A' for an appendix, or `3' for a chapter. |
4060 |
% We could simplify the code here by writing out an \appendixentry |
% We could simplify the code here by writing out an \appendixentry |
4061 |
% command in the toc file for appendices, instead of using \chapentry |
% command in the toc file for appendices, instead of using \chapentry |
4062 |
% for both, but it doesn't seem worth it. |
% for both, but it doesn't seem worth it. |
4064 |
\newdimen\shortappendixwidth |
\newdimen\shortappendixwidth |
4065 |
% |
% |
4066 |
\def\shortchaplabel#1{% |
\def\shortchaplabel#1{% |
4067 |
% Compute width of word "Appendix", may change with language. |
% This space should be enough, since a single number is .5em, and the |
|
\setbox0 = \hbox{\shortcontrm \putwordAppendix}% |
|
|
\shortappendixwidth = \wd0 |
|
|
% |
|
|
% We typeset #1 in a box of constant width, regardless of the text of |
|
|
% #1, so the chapter titles will come out aligned. |
|
|
\setbox0 = \hbox{#1}% |
|
|
\dimen0 = \ifdim\wd0 > \shortappendixwidth \shortappendixwidth \else 0pt \fi |
|
|
% |
|
|
% This space should be plenty, since a single number is .5em, and the |
|
4068 |
% widest letter (M) is 1em, at least in the Computer Modern fonts. |
% widest letter (M) is 1em, at least in the Computer Modern fonts. |
4069 |
|
% But use \hss just in case. |
4070 |
% (This space doesn't include the extra space that gets added after |
% (This space doesn't include the extra space that gets added after |
4071 |
% the label; that gets put in by \shortchapentry above.) |
% the label; that gets put in by \shortchapentry above.) |
4072 |
\advance\dimen0 by 1.1em |
\dimen0 = 1em |
4073 |
\hbox to \dimen0{#1\hfil}% |
\hbox to \dimen0{#1\hss}% |
4074 |
} |
} |
4075 |
|
|
4076 |
|
% Unnumbered chapters. |
4077 |
\def\unnumbchapentry#1#2{\dochapentry{#1}{#2}} |
\def\unnumbchapentry#1#2{\dochapentry{#1}{#2}} |
4078 |
\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}} |
\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}} |
4079 |
|
|
4080 |
% Sections. |
% Sections. |
4081 |
\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}} |
\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}} |
4082 |
\def\unnumbsecentry#1#2{\dosecentry{#1}{#2}} |
\def\unnumbsecentry#1#2#3{\dosecentry{#1}{#3}} |
4083 |
|
|
4084 |
% Subsections. |
% Subsections. |
4085 |
\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}} |
\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}} |
4086 |
\def\unnumbsubsecentry#1#2{\dosubsecentry{#1}{#2}} |
\def\unnumbsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}} |
4087 |
|
|
4088 |
% And subsubsections. |
% And subsubsections. |
4089 |
\def\subsubsecentry#1#2#3#4#5#6{% |
\def\subsubsecentry#1#2#3#4#5#6{% |
4090 |
\dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}} |
\dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}} |
4091 |
\def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}} |
\def\unnumbsubsubsecentry#1#2#3#4#5{\dosubsubsecentry{#1}{#5}} |
4092 |
|
|
4093 |
% This parameter controls the indentation of the various levels. |
% This parameter controls the indentation of the various levels. |
4094 |
\newdimen\tocindent \tocindent = 3pc |
\newdimen\tocindent \tocindent = 3pc |
4129 |
\def\tocentry#1#2{\begingroup |
\def\tocentry#1#2{\begingroup |
4130 |
\vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks |
\vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks |
4131 |
% Do not use \turnoffactive in these arguments. Since the toc is |
% Do not use \turnoffactive in these arguments. Since the toc is |
4132 |
% typeset in cmr, so characters such as _ would come out wrong; we |
% typeset in cmr, characters such as _ would come out wrong; we |
4133 |
% have to do the usual translation tricks. |
% have to do the usual translation tricks. |
4134 |
\entry{#1}{#2}% |
\entry{#1}{#2}% |
4135 |
\endgroup} |
\endgroup} |
4149 |
\message{environments,} |
\message{environments,} |
4150 |
% @foo ... @end foo. |
% @foo ... @end foo. |
4151 |
|
|
4152 |
|
% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. |
4153 |
|
% |
4154 |
% Since these characters are used in examples, it should be an even number of |
% Since these characters are used in examples, it should be an even number of |
4155 |
% \tt widths. Each \tt character is 1en, so two makes it 1em. |
% \tt widths. Each \tt character is 1en, so two makes it 1em. |
4156 |
% Furthermore, these definitions must come after we define our fonts. |
% |
|
\newbox\dblarrowbox \newbox\longdblarrowbox |
|
|
\newbox\pushcharbox \newbox\bullbox |
|
|
\newbox\equivbox \newbox\errorbox |
|
|
|
|
|
%{\tentt |
|
|
%\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil} |
|
|
%\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil} |
|
|
%\global\setbox\pushcharbox = \hbox to 1em{\hfil$\dashv$\hfil} |
|
|
%\global\setbox\equivbox = \hbox to 1em{\hfil$\ptexequiv$\hfil} |
|
|
% Adapted from the manmac format (p.420 of TeXbook) |
|
|
%\global\setbox\bullbox = \hbox to 1em{\kern.15em\vrule height .75ex width .85ex |
|
|
% depth .1ex\hfil} |
|
|
%} |
|
|
|
|
|
% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. |
|
4157 |
\def\point{$\star$} |
\def\point{$\star$} |
4158 |
\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} |
\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} |
4159 |
\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}} |
\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}} |
4160 |
\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} |
\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} |
4161 |
\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}} |
\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}} |
4162 |
|
|
4163 |
|
% The @error{} command. |
4164 |
% Adapted from the TeXbook's \boxit. |
% Adapted from the TeXbook's \boxit. |
4165 |
|
% |
4166 |
|
\newbox\errorbox |
4167 |
|
% |
4168 |
{\tentt \global\dimen0 = 3em}% Width of the box. |
{\tentt \global\dimen0 = 3em}% Width of the box. |
4169 |
\dimen2 = .55pt % Thickness of rules |
\dimen2 = .55pt % Thickness of rules |
4170 |
% The text. (`r' is open on the right, `e' somewhat less so on the left.) |
% The text. (`r' is open on the right, `e' somewhat less so on the left.) |
4171 |
\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt} |
\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt} |
4172 |
|
% |
4173 |
\global\setbox\errorbox=\hbox to \dimen0{\hfil |
\global\setbox\errorbox=\hbox to \dimen0{\hfil |
4174 |
\hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. |
\hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. |
4175 |
\advance\hsize by -2\dimen2 % Rules. |
\advance\hsize by -2\dimen2 % Rules. |
4180 |
\kern3pt\vrule width\dimen2}% Space to right. |
\kern3pt\vrule width\dimen2}% Space to right. |
4181 |
\hrule height\dimen2} |
\hrule height\dimen2} |
4182 |
\hfil} |
\hfil} |
4183 |
|
% |
|
% The @error{} command. |
|
4184 |
\def\error{\leavevmode\lower.7ex\copy\errorbox} |
\def\error{\leavevmode\lower.7ex\copy\errorbox} |
4185 |
|
|
4186 |
% @tex ... @end tex escapes into raw Tex temporarily. |
% @tex ... @end tex escapes into raw Tex temporarily. |
4220 |
\def\@{@}% |
\def\@{@}% |
4221 |
\let\Etex=\endgroup} |
\let\Etex=\endgroup} |
4222 |
|
|
4223 |
% Define @lisp ... @endlisp. |
% Define @lisp ... @end lisp. |
4224 |
% @lisp does a \begingroup so it can rebind things, |
% @lisp does a \begingroup so it can rebind things, |
4225 |
% including the definition of @endlisp (which normally is erroneous). |
% including the definition of @end lisp (which normally is erroneous). |
4226 |
|
|
4227 |
% Amount to narrow the margins by for @lisp. |
% Amount to narrow the margins by for @lisp. |
4228 |
\newskip\lispnarrowing \lispnarrowing=0.4in |
\newskip\lispnarrowing \lispnarrowing=0.4in |
4395 |
\def\smalllispx{\begingroup |
\def\smalllispx{\begingroup |
4396 |
\def\Esmalllisp{\nonfillfinish\endgroup}% |
\def\Esmalllisp{\nonfillfinish\endgroup}% |
4397 |
\def\Esmallexample{\nonfillfinish\endgroup}% |
\def\Esmallexample{\nonfillfinish\endgroup}% |
4398 |
\smallfonts |
\smallexamplefonts |
4399 |
\lisp |
\lisp |
4400 |
} |
} |
4401 |
|
|
4406 |
\let\Edisplay = \nonfillfinish |
\let\Edisplay = \nonfillfinish |
4407 |
\gobble |
\gobble |
4408 |
} |
} |
4409 |
|
% |
4410 |
% @smalldisplay (when @smallbook): @display plus smaller fonts. |
% @smalldisplay (when @smallbook): @display plus smaller fonts. |
4411 |
% |
% |
4412 |
\def\smalldisplayx{\begingroup |
\def\smalldisplayx{\begingroup |
4413 |
\def\Esmalldisplay{\nonfillfinish\endgroup}% |
\def\Esmalldisplay{\nonfillfinish\endgroup}% |
4414 |
\smallfonts \rm |
\smallexamplefonts \rm |
4415 |
\display |
\display |
4416 |
} |
} |
4417 |
|
|
4423 |
\let\Eformat = \nonfillfinish |
\let\Eformat = \nonfillfinish |
4424 |
\gobble |
\gobble |
4425 |
} |
} |
4426 |
|
% |
4427 |
% @smallformat (when @smallbook): @format plus smaller fonts. |
% @smallformat (when @smallbook): @format plus smaller fonts. |
4428 |
% |
% |
4429 |
\def\smallformatx{\begingroup |
\def\smallformatx{\begingroup |
4430 |
\def\Esmallformat{\nonfillfinish\endgroup}% |
\def\Esmallformat{\nonfillfinish\endgroup}% |
4431 |
\smallfonts \rm |
\smallexamplefonts \rm |
4432 |
\format |
\format |
4433 |
} |
} |
4434 |
|
|
4470 |
|
|
4471 |
|
|
4472 |
% LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>} |
% LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>} |
4473 |
% If we want to allow any <char> as delimiter, |
% If we want to allow any <char> as delimiter, |
4474 |
% we need the curly braces so that makeinfo sees the @verb command, eg: |
% we need the curly braces so that makeinfo sees the @verb command, eg: |
4475 |
% `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org |
% `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org |
4476 |
% |
% |
4544 |
\everypar{\starttabbox}% |
\everypar{\starttabbox}% |
4545 |
} |
} |
4546 |
|
|
4547 |
% Do the @verb magic: verbatim text is quoted by unique |
% Do the @verb magic: verbatim text is quoted by unique |
4548 |
% delimiter characters. Before first delimiter expect a |
% delimiter characters. Before first delimiter expect a |
4549 |
% right brace, after last delimiter expect closing brace: |
% right brace, after last delimiter expect closing brace: |
4550 |
% |
% |
4551 |
% \def\doverb'{'<char>#1<char>'}'{#1} |
% \def\doverb'{'<char>#1<char>'}'{#1} |
4564 |
% |
% |
4565 |
% \def\doverbatim#1@end verbatim{#1} |
% \def\doverbatim#1@end verbatim{#1} |
4566 |
% |
% |
4567 |
% For Texinfo it's a lot easier than for LaTeX, |
% For Texinfo it's a lot easier than for LaTeX, |
4568 |
% because texinfo's \verbatim doesn't stop at '\end{verbatim}': |
% because texinfo's \verbatim doesn't stop at '\end{verbatim}': |
4569 |
% we need not redefine '\', '{' and '}' |
% we need not redefine '\', '{' and '}' |
4570 |
% |
% |
4620 |
\endgroup\nonfillfinish\endgroup |
\endgroup\nonfillfinish\endgroup |
4621 |
} |
} |
4622 |
|
|
4623 |
|
% @copying ... @end copying. |
4624 |
|
% Save the text away for @insertcopying later. |
4625 |
|
% |
4626 |
|
\newbox\copyingbox |
4627 |
|
% |
4628 |
|
\def\copying{\begingroup |
4629 |
|
\parindent = 0pt % looks wrong on title page |
4630 |
|
\def\Ecopying{\egroup\endgroup}% |
4631 |
|
\global\setbox\copyingbox = \vbox\bgroup |
4632 |
|
} |
4633 |
|
|
4634 |
|
% @insertcopying. |
4635 |
|
% |
4636 |
|
\def\insertcopying{\unvcopy\copyingbox} |
4637 |
|
|
4638 |
|
|
4639 |
\message{defuns,} |
\message{defuns,} |
4640 |
% @defun etc. |
% @defun etc. |
4788 |
% to account for this both in the \...x definition and in parsing the |
% to account for this both in the \...x definition and in parsing the |
4789 |
% input at hand. Thus also need a control sequence (passed as #5) for |
% input at hand. Thus also need a control sequence (passed as #5) for |
4790 |
% the \E... definition to assign the category name to. |
% the \E... definition to assign the category name to. |
4791 |
% |
% |
4792 |
\def\deftypeopparsebody#1#2#3#4#5 #6 {\begingroup\inENV |
\def\deftypeopparsebody#1#2#3#4#5 #6 {\begingroup\inENV |
4793 |
\medbreak |
\medbreak |
4794 |
\def#1{\endgraf\endgroup\medbreak}% |
\def#1{\endgraf\endgroup\medbreak}% |
4963 |
% #1 is the data type, #2 the name, #3 the args. |
% #1 is the data type, #2 the name, #3 the args. |
4964 |
\def\deftypefunheaderx #1#2 #3\relax{% |
\def\deftypefunheaderx #1#2 #3\relax{% |
4965 |
\doind {fn}{\code{#2}}% Make entry in function index |
\doind {fn}{\code{#2}}% Make entry in function index |
4966 |
\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypefun}% |
\begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypefun}% |
4967 |
\deftypefunargs {#3}\endgroup % |
\deftypefunargs {#3}\endgroup % |
4968 |
\catcode 61=\other % Turn off change made in \defparsebody |
\catcode 61=\other % Turn off change made in \defparsebody |
4969 |
} |
} |
4972 |
|
|
4973 |
\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader} |
\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader} |
4974 |
|
|
4975 |
% \defheaderxcond#1\relax$$$ |
% \defheaderxcond#1\relax$.$ |
4976 |
% puts #1 in @code, followed by a space, but does nothing if #1 is null. |
% puts #1 in @code, followed by a space, but does nothing if #1 is null. |
4977 |
\def\defheaderxcond#1#2$$${\ifx#1\relax\else\code{#1#2} \fi} |
\def\defheaderxcond#1#2$.${\ifx#1\relax\else\code{#1#2} \fi} |
4978 |
|
|
4979 |
% #1 is the classification. #2 is the data type. #3 is the name and args. |
% #1 is the classification. #2 is the data type. #3 is the name and args. |
4980 |
\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax} |
\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax} |
4984 |
\begingroup |
\begingroup |
4985 |
\normalparens % notably, turn off `&' magic, which prevents |
\normalparens % notably, turn off `&' magic, which prevents |
4986 |
% at least some C++ text from working |
% at least some C++ text from working |
4987 |
\defname {\defheaderxcond#2\relax$$$#3}{#1}% |
\defname {\defheaderxcond#2\relax$.$#3}{#1}% |
4988 |
\deftypefunargs {#4}\endgroup % |
\deftypefunargs {#4}\endgroup % |
4989 |
\catcode 61=\other % Turn off change made in \defparsebody |
\catcode 61=\other % Turn off change made in \defparsebody |
4990 |
} |
} |
5030 |
\def\deftypeopheader#1#2#3#4{% |
\def\deftypeopheader#1#2#3#4{% |
5031 |
\dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index |
\dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index |
5032 |
\begingroup |
\begingroup |
5033 |
\defname{\defheaderxcond#2\relax$$$#3} |
\defname{\defheaderxcond#2\relax$.$#3} |
5034 |
{\deftypeopcategory\ \putwordon\ \code{#1}}% |
{\deftypeopcategory\ \putwordon\ \code{#1}}% |
5035 |
\deftypefunargs{#4}% |
\deftypefunargs{#4}% |
5036 |
\endgroup |
\endgroup |
5045 |
\def\deftypemethodheader#1#2#3#4{% |
\def\deftypemethodheader#1#2#3#4{% |
5046 |
\dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index |
\dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index |
5047 |
\begingroup |
\begingroup |
5048 |
\defname{\defheaderxcond#2\relax$$$#3}{\putwordMethodon\ \code{#1}}% |
\defname{\defheaderxcond#2\relax$.$#3}{\putwordMethodon\ \code{#1}}% |
5049 |
\deftypefunargs{#4}% |
\deftypefunargs{#4}% |
5050 |
\endgroup |
\endgroup |
5051 |
} |
} |
5059 |
\def\deftypeivarheader#1#2#3{% |
\def\deftypeivarheader#1#2#3{% |
5060 |
\dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index |
\dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index |
5061 |
\begingroup |
\begingroup |
5062 |
\defname{\defheaderxcond#2\relax$$$#3} |
\defname{\defheaderxcond#2\relax$.$#3} |
5063 |
{\putwordInstanceVariableof\ \code{#1}}% |
{\putwordInstanceVariableof\ \code{#1}}% |
5064 |
\defvarargs{#3}% |
\defvarargs{#3}% |
5065 |
\endgroup |
\endgroup |
5142 |
% is actually part of the data type, which should not be put into the index. |
% is actually part of the data type, which should not be put into the index. |
5143 |
\def\deftypevarheader #1#2{% |
\def\deftypevarheader #1#2{% |
5144 |
\dovarind#2 \relax% Make entry in variables index |
\dovarind#2 \relax% Make entry in variables index |
5145 |
\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypevar}% |
\begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypevar}% |
5146 |
\interlinepenalty=10000 |
\interlinepenalty=10000 |
5147 |
\endgraf\nobreak\vskip -\parskip\nobreak |
\endgraf\nobreak\vskip -\parskip\nobreak |
5148 |
\endgroup} |
\endgroup} |
5153 |
\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader} |
\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader} |
5154 |
|
|
5155 |
\def\deftypevrheader #1#2#3{\dovarind#3 \relax% |
\def\deftypevrheader #1#2#3{\dovarind#3 \relax% |
5156 |
\begingroup\defname {\defheaderxcond#2\relax$$$#3}{#1} |
\begingroup\defname {\defheaderxcond#2\relax$.$#3}{#1} |
5157 |
\interlinepenalty=10000 |
\interlinepenalty=10000 |
5158 |
\endgraf\nobreak\vskip -\parskip\nobreak |
\endgraf\nobreak\vskip -\parskip\nobreak |
5159 |
\endgroup} |
\endgroup} |
5172 |
|
|
5173 |
% These definitions are used if you use @defunx (etc.) |
% These definitions are used if you use @defunx (etc.) |
5174 |
% anywhere other than immediately after a @defun or @defunx. |
% anywhere other than immediately after a @defun or @defunx. |
5175 |
% |
% |
5176 |
\def\defcvx#1 {\errmessage{@defcvx in invalid context}} |
\def\defcvx#1 {\errmessage{@defcvx in invalid context}} |
5177 |
\def\deffnx#1 {\errmessage{@deffnx in invalid context}} |
\def\deffnx#1 {\errmessage{@deffnx in invalid context}} |
5178 |
\def\defivarx#1 {\errmessage{@defivarx in invalid context}} |
\def\defivarx#1 {\errmessage{@defivarx in invalid context}} |
5313 |
\message{Warning: redefining \the\macname}% |
\message{Warning: redefining \the\macname}% |
5314 |
\else |
\else |
5315 |
\expandafter\ifx\csname \the\macname\endcsname \relax |
\expandafter\ifx\csname \the\macname\endcsname \relax |
5316 |
\else \errmessage{The name \the\macname\space is reserved}\fi |
\else \errmessage{Macro name \the\macname\space already defined}\fi |
5317 |
\global\cslet{macsave.\the\macname}{\the\macname}% |
\global\cslet{macsave.\the\macname}{\the\macname}% |
5318 |
\global\expandafter\let\csname ismacro.\the\macname\endcsname=1% |
\global\expandafter\let\csname ismacro.\the\macname\endcsname=1% |
5319 |
% Add the macroname to \macrolist |
% Add the macroname to \macrolist |
5594 |
\ifpdf |
\ifpdf |
5595 |
\leavevmode |
\leavevmode |
5596 |
\getfilename{#4}% |
\getfilename{#4}% |
5597 |
\ifnum\filenamelength>0 |
{\normalturnoffactive |
5598 |
\startlink attr{/Border [0 0 0]}% |
\ifnum\filenamelength>0 |
5599 |
goto file{\the\filename.pdf} name{#1@}% |
\startlink attr{/Border [0 0 0]}% |
5600 |
\else |
goto file{\the\filename.pdf} name{#1}% |
5601 |
\startlink attr{/Border [0 0 0]}% |
\else |
5602 |
goto name{#1@}% |
\startlink attr{/Border [0 0 0]}% |
5603 |
\fi |
goto name{#1}% |
5604 |
|
\fi |
5605 |
|
}% |
5606 |
\linkcolor |
\linkcolor |
5607 |
\fi |
\fi |
5608 |
% |
% |
5864 |
% |
% |
5865 |
\smallfonts \rm |
\smallfonts \rm |
5866 |
% |
% |
5867 |
% Hang the footnote text off the number. |
% Because we use hanging indentation in footnotes, a @noindent appears |
5868 |
\hang |
% to exdent this text, so make it be a no-op. makeinfo does not use |
5869 |
|
% hanging indentation so @noindent can still be needed within footnote |
5870 |
|
% text after an @example or the like (not that this is good style). |
5871 |
|
\let\noindent = \relax |
5872 |
|
% |
5873 |
|
% Hang the footnote text off the number. Use \everypar in case the |
5874 |
|
% footnote extends for more than one paragraph. |
5875 |
|
\everypar = {\hang}% |
5876 |
\textindent{\thisfootno}% |
\textindent{\thisfootno}% |
5877 |
% |
% |
5878 |
% Don't crash into the line above the footnote text. Since this |
% Don't crash into the line above the footnote text. Since this |
5889 |
|
|
5890 |
}%end \catcode `\@=11 |
}%end \catcode `\@=11 |
5891 |
|
|
|
% Set the baselineskip to #1, and the lineskip and strut size |
|
|
% correspondingly. There is no deep meaning behind these magic numbers |
|
|
% used as factors; they just match (closely enough) what Knuth defined. |
|
|
% |
|
|
\def\lineskipfactor{.08333} |
|
|
\def\strutheightpercent{.70833} |
|
|
\def\strutdepthpercent {.29167} |
|
|
% |
|
|
\def\setleading#1{% |
|
|
\normalbaselineskip = #1\relax |
|
|
\normallineskip = \lineskipfactor\normalbaselineskip |
|
|
\normalbaselines |
|
|
\setbox\strutbox =\hbox{% |
|
|
\vrule width0pt height\strutheightpercent\baselineskip |
|
|
depth \strutdepthpercent \baselineskip |
|
|
}% |
|
|
} |
|
|
|
|
5892 |
% @| inserts a changebar to the left of the current line. It should |
% @| inserts a changebar to the left of the current line. It should |
5893 |
% surround any changed text. This approach does *not* work if the |
% surround any changed text. This approach does *not* work if the |
5894 |
% change spans more than two lines of output. To handle that, we would |
% change spans more than two lines of output. To handle that, we would |
5953 |
\global\warnednoepsftrue |
\global\warnednoepsftrue |
5954 |
\fi |
\fi |
5955 |
\else |
\else |
5956 |
\imagexxx #1,,,\finish |
\imagexxx #1,,,,,\finish |
5957 |
\fi |
\fi |
5958 |
} |
} |
5959 |
% |
% |
5960 |
% Arguments to @image: |
% Arguments to @image: |
5961 |
% #1 is (mandatory) image filename; we tack on .eps extension. |
% #1 is (mandatory) image filename; we tack on .eps extension. |
5962 |
% #2 is (optional) width, #3 is (optional) height. |
% #2 is (optional) width, #3 is (optional) height. |
5963 |
% #4 is just the usual extra ignored arg for parsing this stuff. |
% #4 is (ignored optional) html alt text. |
5964 |
\def\imagexxx#1,#2,#3,#4\finish{% |
% #5 is (ignored optional) extension. |
5965 |
|
% #6 is just the usual extra ignored arg for parsing this stuff. |
5966 |
|
\newif\ifimagevmode |
5967 |
|
\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup |
5968 |
|
\catcode`\^^M = 5 % in case we're inside an example |
5969 |
|
\normalturnoffactive % allow _ et al. in names |
5970 |
|
% If the image is by itself, center it. |
5971 |
|
\ifvmode |
5972 |
|
\imagevmodetrue |
5973 |
|
\nobreak\bigskip |
5974 |
|
% Usually we'll have text after the image which will insert |
5975 |
|
% \parskip glue, so insert it here too to equalize the space |
5976 |
|
% above and below. |
5977 |
|
\nobreak\vskip\parskip |
5978 |
|
\nobreak |
5979 |
|
\line\bgroup\hss |
5980 |
|
\fi |
5981 |
|
% |
5982 |
|
% Output the image. |
5983 |
\ifpdf |
\ifpdf |
5984 |
\centerline{\dopdfimage{#1}{#2}{#3}}% |
\dopdfimage{#1}{#2}{#3}% |
5985 |
\else |
\else |
5986 |
% \epsfbox itself resets \epsf?size at each figure. |
% \epsfbox itself resets \epsf?size at each figure. |
5987 |
\setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi |
\setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi |
5988 |
\setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi |
\setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi |
5989 |
\begingroup |
\epsfbox{#1.eps}% |
|
\catcode`\^^M = 5 % in case we're inside an example |
|
|
\normalturnoffactive % allow _ et al. in names |
|
|
% If the image is by itself, center it. |
|
|
\ifvmode |
|
|
\nobreak\bigskip |
|
|
% Usually we'll have text after the image which will insert |
|
|
% \parskip glue, so insert it here too to equalize the space |
|
|
% above and below. |
|
|
\nobreak\vskip\parskip |
|
|
\nobreak |
|
|
\centerline{\epsfbox{#1.eps}}% |
|
|
\bigbreak |
|
|
\else |
|
|
% In the middle of a paragraph, no extra space. |
|
|
\epsfbox{#1.eps}% |
|
|
\fi |
|
|
\endgroup |
|
5990 |
\fi |
\fi |
5991 |
} |
% |
5992 |
|
\ifimagevmode \hss \egroup \bigbreak \fi % space after the image |
5993 |
|
\endgroup} |
5994 |
|
|
5995 |
|
|
5996 |
\message{localization,} |
\message{localization,} |
6059 |
} |
} |
6060 |
|
|
6061 |
% Parameters in order: 1) textheight; 2) textwidth; 3) voffset; |
% Parameters in order: 1) textheight; 2) textwidth; 3) voffset; |
6062 |
% 4) hoffset; 5) binding offset; 6) topskip. Then whoever calls us can |
% 4) hoffset; 5) binding offset; 6) topskip. We also call |
6063 |
% set \parskip and call \setleading for \baselineskip. |
% \setleading{\textleading}, so the caller should define \textleading. |
6064 |
|
% The caller should also set \parskip. |
6065 |
% |
% |
6066 |
\def\internalpagesizes#1#2#3#4#5#6{% |
\def\internalpagesizes#1#2#3#4#5#6{% |
6067 |
\voffset = #3\relax |
\voffset = #3\relax |
6082 |
\normaloffset = #4\relax |
\normaloffset = #4\relax |
6083 |
\bindingoffset = #5\relax |
\bindingoffset = #5\relax |
6084 |
% |
% |
6085 |
|
\setleading{\textleading} |
6086 |
|
% |
6087 |
\parindent = \defaultparindent |
\parindent = \defaultparindent |
6088 |
\setemergencystretch |
\setemergencystretch |
6089 |
} |
} |
6090 |
|
|
6091 |
% Use `small' versions. |
% Use `small' versions. |
6092 |
% |
% |
6093 |
\def\smallenvironments{% |
\def\smallenvironments{% |
6094 |
\let\smalldisplay = \smalldisplayx |
\let\smalldisplay = \smalldisplayx |
6095 |
\let\smallexample = \smalllispx |
\let\smallexample = \smalllispx |
6100 |
% @letterpaper (the default). |
% @letterpaper (the default). |
6101 |
\def\letterpaper{{\globaldefs = 1 |
\def\letterpaper{{\globaldefs = 1 |
6102 |
\parskip = 3pt plus 2pt minus 1pt |
\parskip = 3pt plus 2pt minus 1pt |
6103 |
\setleading{13.2pt}% |
\textleading = 13.2pt |
6104 |
% |
% |
6105 |
% If page is nothing but text, make it come out even. |
% If page is nothing but text, make it come out even. |
6106 |
\internalpagesizes{46\baselineskip}{6in}{\voffset}{.25in}{\bindingoffset}{36pt}% |
\internalpagesizes{46\baselineskip}{6in}{\voffset}{.25in}{\bindingoffset}{36pt}% |
6109 |
% Use @smallbook to reset parameters for 7x9.5 (or so) format. |
% Use @smallbook to reset parameters for 7x9.5 (or so) format. |
6110 |
\def\smallbook{{\globaldefs = 1 |
\def\smallbook{{\globaldefs = 1 |
6111 |
\parskip = 2pt plus 1pt |
\parskip = 2pt plus 1pt |
6112 |
\setleading{12pt}% |
\textleading = 12pt |
6113 |
% |
% |
6114 |
\internalpagesizes{7.5in}{5.in}{\voffset}{.25in}{\bindingoffset}{16pt}% |
\internalpagesizes{7.5in}{5.in}{\voffset}{.25in}{\bindingoffset}{16pt}% |
6115 |
% |
% |
6124 |
|
|
6125 |
% Use @afourpaper to print on European A4 paper. |
% Use @afourpaper to print on European A4 paper. |
6126 |
\def\afourpaper{{\globaldefs = 1 |
\def\afourpaper{{\globaldefs = 1 |
|
\setleading{12pt}% |
|
6127 |
\parskip = 3pt plus 2pt minus 1pt |
\parskip = 3pt plus 2pt minus 1pt |
6128 |
|
\textleading = 12pt |
6129 |
% |
% |
6130 |
\internalpagesizes{53\baselineskip}{160mm}{\voffset}{4mm}{\bindingoffset}{44pt}% |
\internalpagesizes{53\baselineskip}{160mm}{\voffset}{4mm}{\bindingoffset}{44pt}% |
6131 |
% |
% |
6137 |
% From romildo@urano.iceb.ufop.br, 2 July 2000. |
% From romildo@urano.iceb.ufop.br, 2 July 2000. |
6138 |
% He also recommends making @example and @lisp be small. |
% He also recommends making @example and @lisp be small. |
6139 |
\def\afivepaper{{\globaldefs = 1 |
\def\afivepaper{{\globaldefs = 1 |
|
\setleading{12.5pt}% |
|
6140 |
\parskip = 2pt plus 1pt minus 0.1pt |
\parskip = 2pt plus 1pt minus 0.1pt |
6141 |
|
\textleading = 12.5pt |
6142 |
% |
% |
6143 |
\internalpagesizes{166mm}{120mm}{\voffset}{-8mm}{\bindingoffset}{8pt}% |
\internalpagesizes{166mm}{120mm}{\voffset}{-8mm}{\bindingoffset}{8pt}% |
6144 |
% |
% |
6156 |
% A specific text layout, 24x15cm overall, intended for A4 paper. Top margin |
% A specific text layout, 24x15cm overall, intended for A4 paper. Top margin |
6157 |
% 29mm, hence bottom margin 28mm, nominal side margin 3cm. |
% 29mm, hence bottom margin 28mm, nominal side margin 3cm. |
6158 |
\def\afourlatex{{\globaldefs = 1 |
\def\afourlatex{{\globaldefs = 1 |
6159 |
\setleading{13.6pt}% |
\textleading = 13.6pt |
6160 |
% |
% |
6161 |
\afourpaper |
\afourpaper |
6162 |
\internalpagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}% |
\internalpagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}% |
6163 |
% |
% |
6164 |
|
% Must explicitly reset to 0 because we call \afourpaper, apparently, |
6165 |
|
% although this does not entirely make sense. |
6166 |
\globaldefs = 0 |
\globaldefs = 0 |
6167 |
}} |
}} |
6168 |
|
|
6170 |
\def\afourwide{% |
\def\afourwide{% |
6171 |
\afourpaper |
\afourpaper |
6172 |
\internalpagesizes{6.5in}{9.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}% |
\internalpagesizes{6.5in}{9.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}% |
|
% |
|
|
\globaldefs = 0 |
|
6173 |
} |
} |
6174 |
|
|
6175 |
% @pagesizes TEXTHEIGHT[,TEXTWIDTH] |
% @pagesizes TEXTHEIGHT[,TEXTWIDTH] |
6183 |
\globaldefs = 1 |
\globaldefs = 1 |
6184 |
% |
% |
6185 |
\parskip = 3pt plus 2pt minus 1pt |
\parskip = 3pt plus 2pt minus 1pt |
6186 |
\setleading{13.2pt}% |
\setleading{\textleading}% |
6187 |
% |
% |
6188 |
\internalpagesizes{#1}{\hsize}{\voffset}{\normaloffset}{\bindingoffset}{44pt}% |
\internalpagesizes{#1}{\hsize}{\voffset}{\normaloffset}{\bindingoffset}{44pt}% |
6189 |
}} |
}} |
6213 |
\def\normalless{<} |
\def\normalless{<} |
6214 |
\def\normalgreater{>} |
\def\normalgreater{>} |
6215 |
\def\normalplus{+} |
\def\normalplus{+} |
6216 |
\def\normaldollar{$} |
\def\normaldollar{$}%$ font-lock fix |
6217 |
|
|
6218 |
% This macro is used to make a character print one way in ttfont |
% This macro is used to make a character print one way in ttfont |
6219 |
% where it can probably just be output, and another way in other fonts, |
% where it can probably just be output, and another way in other fonts, |
6262 |
\catcode`\+=\active |
\catcode`\+=\active |
6263 |
\def+{{\tt \char 43}} |
\def+{{\tt \char 43}} |
6264 |
\catcode`\$=\active |
\catcode`\$=\active |
6265 |
\def${\ifusingit{{\sl\$}}\normaldollar} |
\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix |
6266 |
%\catcode 27=\active |
%\catcode 27=\active |
6267 |
%\def^^[{$\diamondsuit$} |
%\def^^[{$\diamondsuit$} |
6268 |
|
|
6307 |
@let<=@normalless |
@let<=@normalless |
6308 |
@let>=@normalgreater |
@let>=@normalgreater |
6309 |
@let+=@normalplus |
@let+=@normalplus |
6310 |
@let$=@normaldollar} |
@let$=@normaldollar}%$ font-lock fix |
6311 |
|
|
6312 |
@def@normalturnoffactive{@let"=@normaldoublequote |
@def@normalturnoffactive{@let"=@normaldoublequote |
6313 |
@let\=@normalbackslash |
@let\=@normalbackslash |
6318 |
@let<=@normalless |
@let<=@normalless |
6319 |
@let>=@normalgreater |
@let>=@normalgreater |
6320 |
@let+=@normalplus |
@let+=@normalplus |
6321 |
@let$=@normaldollar} |
@let$=@normaldollar}%$ font-lock fix |
6322 |
|
|
6323 |
% Make _ and + \other characters, temporarily. |
% Make _ and + \other characters, temporarily. |
6324 |
% This is canceled by @fixbackslash. |
% This is canceled by @fixbackslash. |
6346 |
% Say @foo, not \foo, in error messages. |
% Say @foo, not \foo, in error messages. |
6347 |
@escapechar = `@@ |
@escapechar = `@@ |
6348 |
|
|
6349 |
% These look ok in all fonts, so just make them not special. |
% These look ok in all fonts, so just make them not special. |
6350 |
@catcode`@& = @other |
@catcode`@& = @other |
6351 |
@catcode`@# = @other |
@catcode`@# = @other |
6352 |
@catcode`@% = @other |
@catcode`@% = @other |