texinfo.tex (82794) | texinfo.tex (119679) |
---|---|
1% texinfo.tex -- TeX macros to handle Texinfo files. 2% 3% Load plain if necessary, i.e., if running under initex. 4\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi 5% | 1% texinfo.tex -- TeX macros to handle Texinfo files. 2% 3% Load plain if necessary, i.e., if running under initex. 4\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi 5% |
6\def\texinfoversion{2001-06-21.10} | 6\def\texinfoversion{2002-06-04.06} |
7% 8% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, | 7% 8% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, |
9% 2000, 01 Free Software Foundation, Inc. | 9% 2000, 01, 02 Free Software Foundation, Inc. |
10% 11% 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 13% published by the Free Software Foundation; either version 2, or (at 14% your option) any later version. 15% 16% This texinfo.tex file is distributed in the hope that it will be 17% useful, but WITHOUT ANY WARRANTY; without even the implied warranty --- 7 unchanged lines hidden (view full) --- 25% 26% In other words, you are welcome to use, share and improve this program. 27% You are forbidden to forbid anyone else to use, share and improve 28% what you give them. Help stamp out software-hoarding! 29% 30% Please try the latest version of texinfo.tex before submitting bug 31% reports; you can get the latest version from: 32% ftp://ftp.gnu.org/gnu/texinfo.tex | 10% 11% 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 13% published by the Free Software Foundation; either version 2, or (at 14% your option) any later version. 15% 16% This texinfo.tex file is distributed in the hope that it will be 17% useful, but WITHOUT ANY WARRANTY; without even the implied warranty --- 7 unchanged lines hidden (view full) --- 25% 26% In other words, you are welcome to use, share and improve this program. 27% You are forbidden to forbid anyone else to use, share and improve 28% what you give them. Help stamp out software-hoarding! 29% 30% Please try the latest version of texinfo.tex before submitting bug 31% reports; you can get the latest version from: 32% ftp://ftp.gnu.org/gnu/texinfo.tex |
33% (and all GNU mirrors, see http://www.gnu.org/order/ftp.html) 34% ftp://texinfo.org/tex/texinfo.tex 35% ftp://us.ctan.org/macros/texinfo/texinfo.tex 36% (and all CTAN mirrors, finger ctan@us.ctan.org for a list). 37% /home/gd/gnu/doc/texinfo.tex on the GNU machines. | 33% (and all GNU mirrors, see http://www.gnu.org/order/ftp.html) 34% ftp://texinfo.org/texinfo/texinfo.tex 35% ftp://tug.org/tex/texinfo.tex 36% (and all CTAN mirrors, see http://www.ctan.org), 37% and /home/gd/gnu/doc/texinfo.tex on the GNU machines. 38% |
38% The texinfo.tex in any given Texinfo distribution could well be out 39% of date, so if that's what you're using, please check. | 39% 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. |
40% Texinfo has a small home page at http://texinfo.org/. | 41% 42% Texinfo has a small home page at http://texinfo.org/ and also 43% http://www.gnu.org/software/texinfo. |
41% 42% Send bug reports to bug-texinfo@gnu.org. Please include including a 43% complete document in each bug report with which we can reproduce the 44% problem. Patches are, of course, greatly appreciated. 45% 46% To process a Texinfo manual with TeX, it's most reliable to use the 47% texi2dvi shell script that comes with the distribution. For a simple 48% manual foo.texi, however, you can get away with this: 49% tex foo.texi 50% texindex foo.?? 51% tex foo.texi 52% tex foo.texi | 44% 45% 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 47% problem. Patches are, of course, greatly appreciated. 48% 49% To process a Texinfo manual with TeX, it's most reliable to use the 50% texi2dvi shell script that comes with the distribution. For a simple 51% manual foo.texi, however, you can get away with this: 52% tex foo.texi 53% texindex foo.?? 54% tex foo.texi 55% tex foo.texi |
53% dvips foo.dvi -o # or whatever, to process the dvi file; this makes foo.ps. 54% The extra runs of TeX get the cross-reference information correct. | 56% dvips foo.dvi -o # or whatever; this makes foo.ps. 57% The extra TeX runs get the cross-reference information correct. |
55% Sometimes one run after texindex suffices, and sometimes you need more 56% than two; texi2dvi does it as many times as necessary. 57% 58% It is possible to adapt texinfo.tex for other languages. You can get | 58% Sometimes one run after texindex suffices, and sometimes you need more 59% 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 |
59% the existing language-specific files from ftp://ftp.gnu.org/gnu/texinfo/. | 62% the existing language-specific files from the full Texinfo distribution. |
60 61\message{Loading texinfo [version \texinfoversion]:} 62 63% If in a .fmt file, print the version number 64% and turn on active characters that we couldn't do earlier because 65% they might have appeared in the input file name. 66\everyjob{\message{[Texinfo version \texinfoversion]}% 67 \catcode`+=\active \catcode`\_=\active} --- 760 unchanged lines hidden (view full) --- 828 \fi 829 \fi 830} 831 832% @asis just yields its argument. Used with @table, for example. 833% 834\def\asis#1{#1} 835 | 63 64\message{Loading texinfo [version \texinfoversion]:} 65 66% If in a .fmt file, print the version number 67% and turn on active characters that we couldn't do earlier because 68% they might have appeared in the input file name. 69\everyjob{\message{[Texinfo version \texinfoversion]}% 70 \catcode`+=\active \catcode`\_=\active} --- 760 unchanged lines hidden (view full) --- 831 \fi 832 \fi 833} 834 835% @asis just yields its argument. Used with @table, for example. 836% 837\def\asis#1{#1} 838 |
836% @math means output in math mode. 837% We don't use $'s directly in the definition of \math because control 838% sequences like \math are expanded when the toc file is written. Then, 839% we read the toc file back, the $'s will be normal characters (as they 840% should be, according to the definition of Texinfo). So we must use a 841% control sequence to switch into and out of math mode. | 839% @math outputs its argument in math mode. 840% We don't use $'s directly in the definition of \math because we need 841% to set catcodes according to plain TeX first, to allow for subscripts, 842% superscripts, special math chars, etc. 843% 844% @math does not do math typesetting in section titles, index 845% entries, and other such contexts where the catcodes are set before 846% @math gets a chance to work. This could perhaps be fixed, but for now 847% at least we can have real math in the main text, where it's needed most. |
842% | 848% |
843% This isn't quite enough for @math to work properly in indices, but it 844% seems unlikely it will ever be needed there. | 849\let\implicitmath = $%$ font-lock fix |
845% | 850% |
846\let\implicitmath = $ 847\def\math#1{\implicitmath #1\implicitmath} | 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% Another complication: we want \\ (and @\) to output a \ character. 863% 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} |
848 849% @bullet and @minus need the same treatment as @math, just above. 850\def\bullet{\implicitmath\ptexbullet\implicitmath} 851\def\minus{\implicitmath-\implicitmath} 852 853% @refill is a no-op. 854\let\refill=\relax 855 --- 66 unchanged lines hidden (view full) --- 922 \let\pdfmakeoutlines = \relax 923\else 924 \pdftrue 925 \pdfoutput = 1 926 \input pdfcolor 927 \def\dopdfimage#1#2#3{% 928 \def\imagewidth{#2}% 929 \def\imageheight{#3}% | 876 877% @bullet and @minus need the same treatment as @math, just above. 878\def\bullet{\implicitmath\ptexbullet\implicitmath} 879\def\minus{\implicitmath-\implicitmath} 880 881% @refill is a no-op. 882\let\refill=\relax 883 --- 66 unchanged lines hidden (view full) --- 950 \let\pdfmakeoutlines = \relax 951\else 952 \pdftrue 953 \pdfoutput = 1 954 \input pdfcolor 955 \def\dopdfimage#1#2#3{% 956 \def\imagewidth{#2}% 957 \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.) |
|
930 \ifnum\pdftexversion < 14 | 960 \ifnum\pdftexversion < 14 |
931 \pdfimage | 961 \immediate\pdfimage |
932 \else | 962 \else |
933 \pdfximage | 963 \immediate\pdfximage |
934 \fi 935 \ifx\empty\imagewidth\else width \imagewidth \fi 936 \ifx\empty\imageheight\else height \imageheight \fi 937 \ifnum\pdftexversion<13 938 #1.pdf% 939 \else 940 {#1.pdf}% 941 \fi 942 \ifnum\pdftexversion < 14 \else 943 \pdfrefximage \pdflastximage 944 \fi} 945 \def\pdfmkdest#1{{\normalturnoffactive \pdfdest name{#1} xyz}} | 964 \fi 965 \ifx\empty\imagewidth\else width \imagewidth \fi 966 \ifx\empty\imageheight\else height \imageheight \fi 967 \ifnum\pdftexversion<13 968 #1.pdf% 969 \else 970 {#1.pdf}% 971 \fi 972 \ifnum\pdftexversion < 14 \else 973 \pdfrefximage \pdflastximage 974 \fi} 975 \def\pdfmkdest#1{{\normalturnoffactive \pdfdest name{#1} xyz}} |
946 \def\pdfmkpgn#1{#1@} | 976 \def\pdfmkpgn#1{#1} |
947 \let\linkcolor = \Blue % was Cyan, but that seems light? 948 \def\endlink{\Black\pdfendlink} 949 % Adding outlines to PDF; macros for calculating structure of outlines 950 % come from Petr Olsak 951 \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% 952 \else \csname#1\endcsname \fi} 953 \def\advancenumber#1{\tempnum=\expnumber{#1}\relax 954 \advance\tempnum by1 955 \expandafter\xdef\csname#1\endcsname{\the\tempnum}} 956 \def\pdfmakeoutlines{{% 957 \openin 1 \jobname.toc | 977 \let\linkcolor = \Blue % was Cyan, but that seems light? 978 \def\endlink{\Black\pdfendlink} 979 % Adding outlines to PDF; macros for calculating structure of outlines 980 % come from Petr Olsak 981 \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% 982 \else \csname#1\endcsname \fi} 983 \def\advancenumber#1{\tempnum=\expnumber{#1}\relax 984 \advance\tempnum by1 985 \expandafter\xdef\csname#1\endcsname{\the\tempnum}} 986 \def\pdfmakeoutlines{{% 987 \openin 1 \jobname.toc |
958 \ifeof 1\else\bgroup | 988 \ifeof 1\else\begingroup |
959 \closein 1 960 \indexnofonts 961 \def\tt{} 962 \let\_ = \normalunderscore 963 % Thanh's hack / proper braces in bookmarks 964 \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace 965 \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace 966 % 967 \def\chapentry ##1##2##3{} | 989 \closein 1 990 \indexnofonts 991 \def\tt{} 992 \let\_ = \normalunderscore 993 % Thanh's hack / proper braces in bookmarks 994 \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace 995 \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace 996 % 997 \def\chapentry ##1##2##3{} |
998 \let\appendixentry = \chapentry |
|
968 \def\unnumbchapentry ##1##2{} 969 \def\secentry ##1##2##3##4{\advancenumber{chap##2}} | 999 \def\unnumbchapentry ##1##2{} 1000 \def\secentry ##1##2##3##4{\advancenumber{chap##2}} |
970 \def\unnumbsecentry ##1##2{} | 1001 \def\unnumbsecentry ##1##2##3{\advancenumber{chap##2}} |
971 \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}} | 1002 \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}} |
972 \def\unnumbsubsecentry ##1##2{} | 1003 \def\unnumbsubsecentry ##1##2##3##4{\advancenumber{sec##2.##3}} |
973 \def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}} | 1004 \def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}} |
974 \def\unnumbsubsubsecentry ##1##2{} | 1005 \def\unnumbsubsubsecentry ##1##2##3##4##5{\advancenumber{subsec##2.##3.##4}} |
975 \input \jobname.toc 976 \def\chapentry ##1##2##3{% 977 \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}} | 1006 \input \jobname.toc 1007 \def\chapentry ##1##2##3{% 1008 \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}} |
1009 \let\appendixentry = \chapentry |
|
978 \def\unnumbchapentry ##1##2{% 979 \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} 980 \def\secentry ##1##2##3##4{% 981 \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}} | 1010 \def\unnumbchapentry ##1##2{% 1011 \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} 1012 \def\secentry ##1##2##3##4{% 1013 \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}} |
982 \def\unnumbsecentry ##1##2{% 983 \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} | 1014 \def\unnumbsecentry ##1##2##3{% 1015 \pdfoutline goto name{\pdfmkpgn{##3}}{##1}} |
984 \def\subsecentry ##1##2##3##4##5{% 985 \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}} | 1016 \def\subsecentry ##1##2##3##4##5{% 1017 \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}} |
986 \def\unnumbsubsecentry ##1##2{% 987 \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} | 1018 \def\unnumbsubsecentry ##1##2##3##4{% 1019 \pdfoutline goto name{\pdfmkpgn{##4}}{##1}} |
988 \def\subsubsecentry ##1##2##3##4##5##6{% 989 \pdfoutline goto name{\pdfmkpgn{##6}}{##1}} | 1020 \def\subsubsecentry ##1##2##3##4##5##6{% 1021 \pdfoutline goto name{\pdfmkpgn{##6}}{##1}} |
990 \def\unnumbsubsubsecentry ##1##2{% 991 \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} | 1022 \def\unnumbsubsubsecentry ##1##2##3##4##5{% 1023 \pdfoutline goto name{\pdfmkpgn{##5}}{##1}} |
992 \input \jobname.toc | 1024 \input \jobname.toc |
993 \egroup\fi | 1025 \endgroup\fi |
994 }} 995 \def\makelinks #1,{% 996 \def\params{#1}\def\E{END}% 997 \ifx\params\E 998 \let\nextmakelinks=\relax 999 \else 1000 \let\nextmakelinks=\makelinks 1001 \ifnum\lnkcount>0,\fi --- 100 unchanged lines hidden (view full) --- 1102 \normallineskip = \lineskipfactor\normalbaselineskip 1103 \normalbaselines 1104 \setbox\strutbox =\hbox{% 1105 \vrule width0pt height\strutheightpercent\baselineskip 1106 depth \strutdepthpercent \baselineskip 1107 }% 1108} 1109 | 1026 }} 1027 \def\makelinks #1,{% 1028 \def\params{#1}\def\E{END}% 1029 \ifx\params\E 1030 \let\nextmakelinks=\relax 1031 \else 1032 \let\nextmakelinks=\makelinks 1033 \ifnum\lnkcount>0,\fi --- 100 unchanged lines hidden (view full) --- 1134 \normallineskip = \lineskipfactor\normalbaselineskip 1135 \normalbaselines 1136 \setbox\strutbox =\hbox{% 1137 \vrule width0pt height\strutheightpercent\baselineskip 1138 depth \strutdepthpercent \baselineskip 1139 }% 1140} 1141 |
1110% Use Computer Modern fonts at \magstephalf (11pt). 1111\newcount\mainmagstep \mainmagstep=\magstephalf 1112 | |
1113% Set the font macro #1 to the font named #2, adding on the 1114% specified font prefix (normally `cm'). 1115% #3 is the font's design size, #4 is a scale factor 1116\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4} 1117 1118% Use cm as the default font prefix. 1119% To specify the font prefix, you must define \fontprefix 1120% before you read in texinfo.tex. --- 12 unchanged lines hidden (view full) --- 1133\def\itbshape{bxti} 1134\def\slshape{sl} 1135\def\slbshape{bxsl} 1136\def\sfshape{ss} 1137\def\sfbshape{ss} 1138\def\scshape{csc} 1139\def\scbshape{csc} 1140 | 1142% Set the font macro #1 to the font named #2, adding on the 1143% specified font prefix (normally `cm'). 1144% #3 is the font's design size, #4 is a scale factor 1145\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4} 1146 1147% Use cm as the default font prefix. 1148% To specify the font prefix, you must define \fontprefix 1149% before you read in texinfo.tex. --- 12 unchanged lines hidden (view full) --- 1162\def\itbshape{bxti} 1163\def\slshape{sl} 1164\def\slbshape{bxsl} 1165\def\sfshape{ss} 1166\def\sfbshape{ss} 1167\def\scshape{csc} 1168\def\scbshape{csc} 1169 |
1170\newcount\mainmagstep |
|
1141\ifx\bigger\relax | 1171\ifx\bigger\relax |
1142\let\mainmagstep=\magstep1 1143\setfont\textrm\rmshape{12}{1000} 1144\setfont\texttt\ttshape{12}{1000} | 1172 % not really supported. 1173 \let\mainmagstep=\magstep1 1174 \setfont\textrm\rmshape{12}{1000} 1175 \setfont\texttt\ttshape{12}{1000} |
1145\else | 1176\else |
1146\setfont\textrm\rmshape{10}{\mainmagstep} 1147\setfont\texttt\ttshape{10}{\mainmagstep} | 1177 \mainmagstep=\magstephalf 1178 \setfont\textrm\rmshape{10}{\mainmagstep} 1179 \setfont\texttt\ttshape{10}{\mainmagstep} |
1148\fi 1149% Instead of cmb10, you many want to use cmbx10. 1150% cmbx10 is a prettier font on its own, but cmb10 1151% looks better when embedded in a line with cmr10. 1152\setfont\textbf\bfshape{10}{\mainmagstep} 1153\setfont\textit\itshape{10}{\mainmagstep} 1154\setfont\textsl\slshape{10}{\mainmagstep} 1155\setfont\textsf\sfshape{10}{\mainmagstep} --- 63 unchanged lines hidden (view full) --- 1219\setfont\sectt\ttbshape{12}{\magstep1} 1220\setfont\secttsl\ttslshape{10}{\magstep2} 1221\setfont\secsf\sfbshape{12}{\magstep1} 1222\let\secbf\secrm 1223\setfont\secsc\scbshape{10}{\magstep2} 1224\font\seci=cmmi12 scaled \magstep1 1225\font\secsy=cmsy10 scaled \magstep2 1226 | 1180\fi 1181% Instead of cmb10, you many want to use cmbx10. 1182% cmbx10 is a prettier font on its own, but cmb10 1183% looks better when embedded in a line with cmr10. 1184\setfont\textbf\bfshape{10}{\mainmagstep} 1185\setfont\textit\itshape{10}{\mainmagstep} 1186\setfont\textsl\slshape{10}{\mainmagstep} 1187\setfont\textsf\sfshape{10}{\mainmagstep} --- 63 unchanged lines hidden (view full) --- 1251\setfont\sectt\ttbshape{12}{\magstep1} 1252\setfont\secttsl\ttslshape{10}{\magstep2} 1253\setfont\secsf\sfbshape{12}{\magstep1} 1254\let\secbf\secrm 1255\setfont\secsc\scbshape{10}{\magstep2} 1256\font\seci=cmmi12 scaled \magstep1 1257\font\secsy=cmsy10 scaled \magstep2 1258 |
1227% \setfont\ssecrm\bxshape{10}{\magstep1} % This size an font looked bad. 1228% \setfont\ssecit\itshape{10}{\magstep1} % The letters were too crowded. 1229% \setfont\ssecsl\slshape{10}{\magstep1} 1230% \setfont\ssectt\ttshape{10}{\magstep1} 1231% \setfont\ssecsf\sfshape{10}{\magstep1} 1232 1233%\setfont\ssecrm\bfshape{10}{1315} % Note the use of cmb rather than cmbx. 1234%\setfont\ssecit\itshape{10}{1315} % Also, the size is a little larger than 1235%\setfont\ssecsl\slshape{10}{1315} % being scaled magstep1. 1236%\setfont\ssectt\ttshape{10}{1315} 1237%\setfont\ssecsf\sfshape{10}{1315} 1238 1239%\let\ssecbf=\ssecrm 1240 | |
1241% Subsection fonts (13.15pt). 1242\setfont\ssecrm\rmbshape{12}{\magstephalf} 1243\setfont\ssecit\itbshape{10}{1315} 1244\setfont\ssecsl\slbshape{10}{1315} 1245\setfont\ssectt\ttbshape{12}{\magstephalf} 1246\setfont\ssecttsl\ttslshape{10}{1315} 1247\setfont\ssecsf\sfbshape{12}{\magstephalf} 1248\let\ssecbf\ssecrm 1249\setfont\ssecsc\scbshape{10}{\magstep1} 1250\font\sseci=cmmi12 scaled \magstephalf 1251\font\ssecsy=cmsy10 scaled 1315 1252% The smallcaps and symbol fonts should actually be scaled \magstep1.5, 1253% but that is not a standard magnification. 1254 1255% In order for the font changes to affect most math symbols and letters, 1256% we have to define the \textfont of the standard families. Since | 1259% Subsection fonts (13.15pt). 1260\setfont\ssecrm\rmbshape{12}{\magstephalf} 1261\setfont\ssecit\itbshape{10}{1315} 1262\setfont\ssecsl\slbshape{10}{1315} 1263\setfont\ssectt\ttbshape{12}{\magstephalf} 1264\setfont\ssecttsl\ttslshape{10}{1315} 1265\setfont\ssecsf\sfbshape{12}{\magstephalf} 1266\let\ssecbf\ssecrm 1267\setfont\ssecsc\scbshape{10}{\magstep1} 1268\font\sseci=cmmi12 scaled \magstephalf 1269\font\ssecsy=cmsy10 scaled 1315 1270% The smallcaps and symbol fonts should actually be scaled \magstep1.5, 1271% but that is not a standard magnification. 1272 1273% In order for the font changes to affect most math symbols and letters, 1274% we have to define the \textfont of the standard families. Since |
1257% texinfo doesn't allow for producing subscripts and superscripts, we 1258% don't bother to reset \scriptfont and \scriptscriptfont (which would 1259% also require loading a lot more fonts). | 1275% texinfo doesn't allow for producing subscripts and superscripts except 1276% in the main text, we don't bother to reset \scriptfont and 1277% \scriptscriptfont (which would also require loading a lot more fonts). |
1260% 1261\def\resetmathfonts{% | 1278% 1279\def\resetmathfonts{% |
1262 \textfont0 = \tenrm \textfont1 = \teni \textfont2 = \tensy 1263 \textfont\itfam = \tenit \textfont\slfam = \tensl \textfont\bffam = \tenbf 1264 \textfont\ttfam = \tentt \textfont\sffam = \tensf | 1280 \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy 1281 \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf 1282 \textfont\ttfam=\tentt \textfont\sffam=\tensf |
1265} 1266 | 1283} 1284 |
1267 | |
1268% The font-changing commands redefine the meanings of \tenSTYLE, instead 1269% of just \STYLE. We do this so that font changes will continue to work 1270% in math mode, where it is the current \fam that is relevant in most 1271% cases, not the current font. Plain TeX does \def\bf{\fam=\bffam 1272% \tenbf}, for example. By redefining \tenbf, we obviate the need to 1273% redefine \bf itself. 1274\def\textfonts{% 1275 \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl --- 144 unchanged lines hidden (view full) --- 1420 % 1421 % If we end up with any active - characters when handling the index, 1422 % just treat them as a normal -. 1423 \global\def\indexbreaks{\catcode`\-=\active \let-\realdash} 1424} 1425 1426\def\realdash{-} 1427\def\codedash{-\discretionary{}{}{}} | 1285% The font-changing commands redefine the meanings of \tenSTYLE, instead 1286% of just \STYLE. We do this so that font changes will continue to work 1287% in math mode, where it is the current \fam that is relevant in most 1288% cases, not the current font. Plain TeX does \def\bf{\fam=\bffam 1289% \tenbf}, for example. By redefining \tenbf, we obviate the need to 1290% redefine \bf itself. 1291\def\textfonts{% 1292 \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl --- 144 unchanged lines hidden (view full) --- 1437 % 1438 % If we end up with any active - characters when handling the index, 1439 % just treat them as a normal -. 1440 \global\def\indexbreaks{\catcode`\-=\active \let-\realdash} 1441} 1442 1443\def\realdash{-} 1444\def\codedash{-\discretionary{}{}{}} |
1428\def\codeunder{\ifusingtt{\normalunderscore\discretionary{}{}{}}{\_}} | 1445\def\codeunder{% 1446 % this is all so @math{@code{var_name}+1} can work. In math mode, _ 1447 % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.) 1448 % will therefore expand the active definition of _, which is us 1449 % (inside @code that is), therefore an endless loop. 1450 \ifusingtt{\ifmmode 1451 \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. 1452 \else\normalunderscore \fi 1453 \discretionary{}{}{}}% 1454 {\_}% 1455} |
1429\def\codex #1{\tclose{#1}\endgroup} 1430 | 1456\def\codex #1{\tclose{#1}\endgroup} 1457 |
1431%\let\exp=\tclose %Was temporary 1432 | |
1433% @kbd is like @code, except that if the argument is just one @key command, 1434% then @kbd has no effect. 1435 1436% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), 1437% `example' (@kbd uses ttsl only inside of @example and friends), 1438% or `code' (@kbd uses normal tty font always). 1439\def\kbdinputstyle{\parsearg\kbdinputstylexxx} 1440\def\kbdinputstylexxx#1{% --- 168 unchanged lines hidden (view full) --- 1609 \fi 1610 % It is important to do the page break before ending the group, 1611 % because the headline and footline are only empty inside the group. 1612 % If we use the new definition of \page, we always get a blank page 1613 % after the title page, which we certainly don't want. 1614 \oldpage 1615 \endgroup 1616 % | 1458% @kbd is like @code, except that if the argument is just one @key command, 1459% then @kbd has no effect. 1460 1461% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), 1462% `example' (@kbd uses ttsl only inside of @example and friends), 1463% or `code' (@kbd uses normal tty font always). 1464\def\kbdinputstyle{\parsearg\kbdinputstylexxx} 1465\def\kbdinputstylexxx#1{% --- 168 unchanged lines hidden (view full) --- 1634 \fi 1635 % It is important to do the page break before ending the group, 1636 % because the headline and footline are only empty inside the group. 1637 % If we use the new definition of \page, we always get a blank page 1638 % after the title page, which we certainly don't want. 1639 \oldpage 1640 \endgroup 1641 % |
1642 % Need this before the \...aftertitlepage checks so that if they are 1643 % in effect the toc pages will come out with page numbers. 1644 \HEADINGSon 1645 % |
|
1617 % If they want short, they certainly want long too. 1618 \ifsetshortcontentsaftertitlepage 1619 \shortcontents 1620 \contents 1621 \global\let\shortcontents = \relax 1622 \global\let\contents = \relax 1623 \fi 1624 % 1625 \ifsetcontentsaftertitlepage 1626 \contents 1627 \global\let\contents = \relax 1628 \global\let\shortcontents = \relax 1629 \fi | 1646 % If they want short, they certainly want long too. 1647 \ifsetshortcontentsaftertitlepage 1648 \shortcontents 1649 \contents 1650 \global\let\shortcontents = \relax 1651 \global\let\contents = \relax 1652 \fi 1653 % 1654 \ifsetcontentsaftertitlepage 1655 \contents 1656 \global\let\contents = \relax 1657 \global\let\shortcontents = \relax 1658 \fi |
1630 % 1631 \ifpdf \pdfmakepagedesttrue \fi 1632 % 1633 \HEADINGSon | |
1634} 1635 1636\def\finishtitlepage{% 1637 \vskip4pt \hrule height 2pt width \hsize 1638 \vskip\titlepagebottomglue 1639 \finishedtitlepagetrue 1640} 1641 --- 741 unchanged lines hidden (view full) --- 2383 \let\down = \relax 2384 \let\raisesections = \relax 2385 \let\up = \relax 2386 \let\set = \relax 2387 \let\clear = \relax 2388 \let\item = \relax 2389} 2390 | 1659} 1660 1661\def\finishtitlepage{% 1662 \vskip4pt \hrule height 2pt width \hsize 1663 \vskip\titlepagebottomglue 1664 \finishedtitlepagetrue 1665} 1666 --- 741 unchanged lines hidden (view full) --- 2408 \let\down = \relax 2409 \let\raisesections = \relax 2410 \let\up = \relax 2411 \let\set = \relax 2412 \let\clear = \relax 2413 \let\item = \relax 2414} 2415 |
2391% Ignore @ignore ... @end ignore. | 2416% Ignore @ignore, @ifhtml, @ifinfo, @ifplaintext, @ifnottex, @html, @menu, 2417% @direntry, and @documentdescription. |
2392% 2393\def\ignore{\doignore{ignore}} | 2418% 2419\def\ignore{\doignore{ignore}} |
2394 2395% Ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu, and @direntry text. 2396% 2397\def\ifinfo{\doignore{ifinfo}} | |
2398\def\ifhtml{\doignore{ifhtml}} | 2420\def\ifhtml{\doignore{ifhtml}} |
2421\def\ifinfo{\doignore{ifinfo}} 2422\def\ifplaintext{\doignore{ifplaintext}} |
|
2399\def\ifnottex{\doignore{ifnottex}} 2400\def\html{\doignore{html}} 2401\def\menu{\doignore{menu}} 2402\def\direntry{\doignore{direntry}} | 2423\def\ifnottex{\doignore{ifnottex}} 2424\def\html{\doignore{html}} 2425\def\menu{\doignore{menu}} 2426\def\direntry{\doignore{direntry}} |
2427\def\documentdescription{\doignore{documentdescription}} 2428\def\documentdescriptionword{documentdescription} |
|
2403 2404% @dircategory CATEGORY -- specify a category of the dir file 2405% which this file should belong to. Ignore this in TeX. 2406\let\dircategory = \comment 2407 2408% Ignore text until a line `@end #1'. 2409% 2410\def\doignore#1{\begingroup --- 10 unchanged lines hidden (view full) --- 2421 % 2422 % Ignore braces, too, so mismatched braces don't cause trouble. 2423 \catcode`\{ = 9 2424 \catcode`\} = 9 2425 % 2426 % We must not have @c interpreted as a control sequence. 2427 \catcode`\@ = 12 2428 % | 2429 2430% @dircategory CATEGORY -- specify a category of the dir file 2431% which this file should belong to. Ignore this in TeX. 2432\let\dircategory = \comment 2433 2434% Ignore text until a line `@end #1'. 2435% 2436\def\doignore#1{\begingroup --- 10 unchanged lines hidden (view full) --- 2447 % 2448 % Ignore braces, too, so mismatched braces don't cause trouble. 2449 \catcode`\{ = 9 2450 \catcode`\} = 9 2451 % 2452 % We must not have @c interpreted as a control sequence. 2453 \catcode`\@ = 12 2454 % |
2429 % Make the letter c a comment character so that the rest of the line 2430 % will be ignored. This way, the document can have (for example) 2431 % @c @end ifinfo 2432 % and the @end ifinfo will be properly ignored. 2433 % (We've just changed @ to catcode 12.) 2434 \catcode`\c = 14 | 2455 \def\ignoreword{#1}% 2456 \ifx\ignoreword\documentdescriptionword 2457 % The c kludge breaks documentdescription, since 2458 % `documentdescription' contains a `c'. Means not everything will 2459 % be ignored inside @documentdescription, but oh well... 2460 \else 2461 % Make the letter c a comment character so that the rest of the line 2462 % will be ignored. This way, the document can have (for example) 2463 % @c @end ifinfo 2464 % and the @end ifinfo will be properly ignored. 2465 % (We've just changed @ to catcode 12.) 2466 \catcode`\c = 14 2467 \fi |
2435 % | 2468 % |
2436 % And now expand that command. | 2469 % And now expand the command defined above. |
2437 \doignoretext 2438} 2439 2440% What we do to finish off ignored text. 2441% 2442\def\enddoignore{\endgroup\ignorespaces}% 2443 2444\newif\ifwarnedobs\warnedobsfalse --- 174 unchanged lines hidden (view full) --- 2619 \else 2620 \expandafter\ifclearfail 2621 \fi 2622} 2623\def\ifclearsucceed{\conditionalsucceed{ifclear}} 2624\def\ifclearfail{\nestedignore{ifclear}} 2625\defineunmatchedend{ifclear} 2626 | 2470 \doignoretext 2471} 2472 2473% What we do to finish off ignored text. 2474% 2475\def\enddoignore{\endgroup\ignorespaces}% 2476 2477\newif\ifwarnedobs\warnedobsfalse --- 174 unchanged lines hidden (view full) --- 2652 \else 2653 \expandafter\ifclearfail 2654 \fi 2655} 2656\def\ifclearsucceed{\conditionalsucceed{ifclear}} 2657\def\ifclearfail{\nestedignore{ifclear}} 2658\defineunmatchedend{ifclear} 2659 |
2627% @iftex, @ifnothtml, @ifnotinfo always succeed; we read the text 2628% following, through the first @end iftex (etc.). Make `@end iftex' 2629% (etc.) valid only after an @iftex. | 2660% @iftex, @ifnothtml, @ifnotinfo, @ifnotplaintext always succeed; we 2661% read the text following, through the first @end iftex (etc.). Make 2662% `@end iftex' (etc.) valid only after an @iftex. |
2630% 2631\def\iftex{\conditionalsucceed{iftex}} 2632\def\ifnothtml{\conditionalsucceed{ifnothtml}} 2633\def\ifnotinfo{\conditionalsucceed{ifnotinfo}} | 2663% 2664\def\iftex{\conditionalsucceed{iftex}} 2665\def\ifnothtml{\conditionalsucceed{ifnothtml}} 2666\def\ifnotinfo{\conditionalsucceed{ifnotinfo}} |
2667\def\ifnotplaintext{\conditionalsucceed{ifnotplaintext}} |
|
2634\defineunmatchedend{iftex} 2635\defineunmatchedend{ifnothtml} 2636\defineunmatchedend{ifnotinfo} | 2668\defineunmatchedend{iftex} 2669\defineunmatchedend{ifnothtml} 2670\defineunmatchedend{ifnotinfo} |
2671\defineunmatchedend{ifnotplaintext} |
|
2637 | 2672 |
2638% We can't just want to start a group at @iftex (for example) and end it 2639% at @end iftex, since then @set commands inside the conditional have no | 2673% We can't just want to start a group at @iftex (etc.) and end it at 2674% @end iftex, since then @set commands inside the conditional have no |
2640% effect (they'd get reverted at the end of the group). So we must 2641% define \Eiftex to redefine itself to be its previous value. (We can't 2642% just define it to fail again with an ``unmatched end'' error, since 2643% the @ifset might be nested.) 2644% 2645\def\conditionalsucceed#1{% 2646 \edef\temp{% 2647 % Remember the current value of \E#1. --- 96 unchanged lines hidden (view full) --- 2744 2745\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer} 2746\def\singleindexer #1{\doind{\indexname}{#1}} 2747 2748% like the previous two, but they put @code around the argument. 2749\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer} 2750\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} 2751 | 2675% effect (they'd get reverted at the end of the group). So we must 2676% define \Eiftex to redefine itself to be its previous value. (We can't 2677% just define it to fail again with an ``unmatched end'' error, since 2678% the @ifset might be nested.) 2679% 2680\def\conditionalsucceed#1{% 2681 \edef\temp{% 2682 % Remember the current value of \E#1. --- 96 unchanged lines hidden (view full) --- 2779 2780\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer} 2781\def\singleindexer #1{\doind{\indexname}{#1}} 2782 2783% like the previous two, but they put @code around the argument. 2784\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer} 2785\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} 2786 |
2787% Take care of texinfo commands likely to appear in an index entry. 2788% (Must be a way to avoid doing expansion at all, and thus not have to 2789% laboriously list every single command here.) 2790% |
|
2752\def\indexdummies{% 2753\def\ { }% | 2791\def\indexdummies{% 2792\def\ { }% |
2793\def\@{@}% change to @@ when we switch to @ as escape char in aux files. 2794% Need these in case \tex is in effect and \{ is a \delimiter again. 2795% But can't use \lbracecmd and \rbracecmd because texindex assumes 2796% braces and backslashes are used only as delimiters. 2797\let\{ = \mylbrace 2798\let\} = \myrbrace 2799\def\_{{\realbackslash _}}% 2800\normalturnoffactive 2801% |
|
2754% Take care of the plain tex accent commands. | 2802% Take care of the plain tex accent commands. |
2803\def\,##1{\realbackslash ,{##1}}% |
|
2755\def\"{\realbackslash "}% 2756\def\`{\realbackslash `}% 2757\def\'{\realbackslash '}% 2758\def\^{\realbackslash ^}% 2759\def\~{\realbackslash ~}% 2760\def\={\realbackslash =}% 2761\def\b{\realbackslash b}% 2762\def\c{\realbackslash c}% 2763\def\d{\realbackslash d}% 2764\def\u{\realbackslash u}% 2765\def\v{\realbackslash v}% 2766\def\H{\realbackslash H}% | 2804\def\"{\realbackslash "}% 2805\def\`{\realbackslash `}% 2806\def\'{\realbackslash '}% 2807\def\^{\realbackslash ^}% 2808\def\~{\realbackslash ~}% 2809\def\={\realbackslash =}% 2810\def\b{\realbackslash b}% 2811\def\c{\realbackslash c}% 2812\def\d{\realbackslash d}% 2813\def\u{\realbackslash u}% 2814\def\v{\realbackslash v}% 2815\def\H{\realbackslash H}% |
2816\def\dotless##1{\realbackslash dotless {##1}}% |
|
2767% Take care of the plain tex special European modified letters. | 2817% Take care of the plain tex special European modified letters. |
2768\def\oe{\realbackslash oe}% 2769\def\ae{\realbackslash ae}% 2770\def\aa{\realbackslash aa}% 2771\def\OE{\realbackslash OE}% 2772\def\AE{\realbackslash AE}% | |
2773\def\AA{\realbackslash AA}% | 2818\def\AA{\realbackslash AA}% |
2774\def\o{\realbackslash o}% | 2819\def\AE{\realbackslash AE}% 2820\def\L{\realbackslash L}% 2821\def\OE{\realbackslash OE}% |
2775\def\O{\realbackslash O}% | 2822\def\O{\realbackslash O}% |
2823\def\aa{\realbackslash aa}% 2824\def\ae{\realbackslash ae}% |
|
2776\def\l{\realbackslash l}% | 2825\def\l{\realbackslash l}% |
2777\def\L{\realbackslash L}% | 2826\def\oe{\realbackslash oe}% 2827\def\o{\realbackslash o}% |
2778\def\ss{\realbackslash ss}% | 2828\def\ss{\realbackslash ss}% |
2779% Take care of texinfo commands likely to appear in an index entry. 2780% (Must be a way to avoid doing expansion at all, and thus not have to 2781% laboriously list every single command here.) 2782\def\@{@}% will be @@ when we switch to @ as escape char. 2783% Need these in case \tex is in effect and \{ is a \delimiter again. 2784% But can't use \lbracecmd and \rbracecmd because texindex assumes 2785% braces and backslashes are used only as delimiters. 2786\let\{ = \mylbrace 2787\let\} = \myrbrace 2788\def\_{{\realbackslash _}}% 2789\def\w{\realbackslash w }% | 2829% 2830% Although these internals commands shouldn't show up, sometimes they do. |
2790\def\bf{\realbackslash bf }% | 2831\def\bf{\realbackslash bf }% |
2832\def\gtr{\realbackslash gtr}% 2833\def\hat{\realbackslash hat}% 2834\def\less{\realbackslash less}% |
|
2791%\def\rm{\realbackslash rm }% | 2835%\def\rm{\realbackslash rm }% |
2792\def\sl{\realbackslash sl }% | |
2793\def\sf{\realbackslash sf}% | 2836\def\sf{\realbackslash sf}% |
2837\def\sl{\realbackslash sl }% 2838\def\tclose##1{\realbackslash tclose {##1}}% |
|
2794\def\tt{\realbackslash tt}% | 2839\def\tt{\realbackslash tt}% |
2795\def\gtr{\realbackslash gtr}% 2796\def\less{\realbackslash less}% 2797\def\hat{\realbackslash hat}% | 2840% 2841\def\b##1{\realbackslash b {##1}}% 2842\def\i##1{\realbackslash i {##1}}% 2843\def\sc##1{\realbackslash sc {##1}}% 2844\def\t##1{\realbackslash t {##1}}% 2845\def\r##1{\realbackslash r {##1}}% 2846% |
2798\def\TeX{\realbackslash TeX}% | 2847\def\TeX{\realbackslash TeX}% |
2799\def\dots{\realbackslash dots }% 2800\def\result{\realbackslash result}% 2801\def\equiv{\realbackslash equiv}% 2802\def\expansion{\realbackslash expansion}% 2803\def\print{\realbackslash print}% 2804\def\error{\realbackslash error}% 2805\def\point{\realbackslash point}% 2806\def\copyright{\realbackslash copyright}% 2807\def\tclose##1{\realbackslash tclose {##1}}% | 2848\def\acronym##1{\realbackslash acronym {##1}}% 2849\def\cite##1{\realbackslash cite {##1}}% |
2808\def\code##1{\realbackslash code {##1}}% | 2850\def\code##1{\realbackslash code {##1}}% |
2809\def\uref##1{\realbackslash uref {##1}}% 2810\def\url##1{\realbackslash url {##1}}% 2811\def\env##1{\realbackslash env {##1}}% | |
2812\def\command##1{\realbackslash command {##1}}% | 2851\def\command##1{\realbackslash command {##1}}% |
2852\def\dfn##1{\realbackslash dfn {##1}}% 2853\def\dots{\realbackslash dots }% 2854\def\emph##1{\realbackslash emph {##1}}% 2855\def\env##1{\realbackslash env {##1}}% 2856\def\file##1{\realbackslash file {##1}}% 2857\def\kbd##1{\realbackslash kbd {##1}}% 2858\def\key##1{\realbackslash key {##1}}% 2859\def\math##1{\realbackslash math {##1}}% |
|
2813\def\option##1{\realbackslash option {##1}}% | 2860\def\option##1{\realbackslash option {##1}}% |
2814\def\dotless##1{\realbackslash dotless {##1}}% | |
2815\def\samp##1{\realbackslash samp {##1}}% | 2861\def\samp##1{\realbackslash samp {##1}}% |
2816\def\,##1{\realbackslash ,{##1}}% 2817\def\t##1{\realbackslash t {##1}}% 2818\def\r##1{\realbackslash r {##1}}% 2819\def\i##1{\realbackslash i {##1}}% 2820\def\b##1{\realbackslash b {##1}}% 2821\def\sc##1{\realbackslash sc {##1}}% 2822\def\cite##1{\realbackslash cite {##1}}% 2823\def\key##1{\realbackslash key {##1}}% 2824\def\file##1{\realbackslash file {##1}}% | 2862\def\strong##1{\realbackslash strong {##1}}% 2863\def\uref##1{\realbackslash uref {##1}}% 2864\def\url##1{\realbackslash url {##1}}% |
2825\def\var##1{\realbackslash var {##1}}% | 2865\def\var##1{\realbackslash var {##1}}% |
2826\def\kbd##1{\realbackslash kbd {##1}}% 2827\def\dfn##1{\realbackslash dfn {##1}}% 2828\def\emph##1{\realbackslash emph {##1}}% 2829\def\acronym##1{\realbackslash acronym {##1}}% | 2866\def\w{\realbackslash w }% |
2830% | 2867% |
2868% These math commands don't seem likely to be used in index entries. 2869\def\copyright{\realbackslash copyright}% 2870\def\equiv{\realbackslash equiv}% 2871\def\error{\realbackslash error}% 2872\def\expansion{\realbackslash expansion}% 2873\def\point{\realbackslash point}% 2874\def\print{\realbackslash print}% 2875\def\result{\realbackslash result}% 2876% |
|
2831% Handle some cases of @value -- where the variable name does not 2832% contain - or _, and the value does not contain any 2833% (non-fully-expandable) commands. 2834\let\value = \expandablevalue 2835% 2836\unsepspaces 2837% Turn off macro expansion 2838\turnoffmacros 2839} 2840 2841% If an index command is used in an @example environment, any spaces 2842% therein should become regular spaces in the raw index file, not the | 2877% Handle some cases of @value -- where the variable name does not 2878% contain - or _, and the value does not contain any 2879% (non-fully-expandable) commands. 2880\let\value = \expandablevalue 2881% 2882\unsepspaces 2883% Turn off macro expansion 2884\turnoffmacros 2885} 2886 2887% If an index command is used in an @example environment, any spaces 2888% therein should become regular spaces in the raw index file, not the |
2843% expansion of \tie (\\leavevmode \penalty \@M \ ). | 2889% expansion of \tie (\leavevmode \penalty \@M \ ). |
2844{\obeyspaces 2845 \gdef\unsepspaces{\obeyspaces\let =\space}} 2846 2847% \indexnofonts no-ops all font-change commands. 2848% This is used when outputting the strings to sort the index by. 2849\def\indexdummyfont#1{#1} 2850\def\indexdummytex{TeX} 2851\def\indexdummydots{...} 2852 2853\def\indexnofonts{% | 2890{\obeyspaces 2891 \gdef\unsepspaces{\obeyspaces\let =\space}} 2892 2893% \indexnofonts no-ops all font-change commands. 2894% This is used when outputting the strings to sort the index by. 2895\def\indexdummyfont#1{#1} 2896\def\indexdummytex{TeX} 2897\def\indexdummydots{...} 2898 2899\def\indexnofonts{% |
2854% Just ignore accents. | 2900\def\@{@}% 2901% how to handle braces? 2902\def\_{\normalunderscore}% 2903% |
2855\let\,=\indexdummyfont 2856\let\"=\indexdummyfont 2857\let\`=\indexdummyfont 2858\let\'=\indexdummyfont 2859\let\^=\indexdummyfont 2860\let\~=\indexdummyfont 2861\let\==\indexdummyfont 2862\let\b=\indexdummyfont 2863\let\c=\indexdummyfont 2864\let\d=\indexdummyfont 2865\let\u=\indexdummyfont 2866\let\v=\indexdummyfont 2867\let\H=\indexdummyfont 2868\let\dotless=\indexdummyfont 2869% Take care of the plain tex special European modified letters. | 2904\let\,=\indexdummyfont 2905\let\"=\indexdummyfont 2906\let\`=\indexdummyfont 2907\let\'=\indexdummyfont 2908\let\^=\indexdummyfont 2909\let\~=\indexdummyfont 2910\let\==\indexdummyfont 2911\let\b=\indexdummyfont 2912\let\c=\indexdummyfont 2913\let\d=\indexdummyfont 2914\let\u=\indexdummyfont 2915\let\v=\indexdummyfont 2916\let\H=\indexdummyfont 2917\let\dotless=\indexdummyfont 2918% Take care of the plain tex special European modified letters. |
2870\def\oe{oe}% 2871\def\ae{ae}% 2872\def\aa{aa}% 2873\def\OE{OE}% 2874\def\AE{AE}% | |
2875\def\AA{AA}% | 2919\def\AA{AA}% |
2876\def\o{o}% | 2920\def\AE{AE}% 2921\def\L{L}% 2922\def\OE{OE}% |
2877\def\O{O}% | 2923\def\O{O}% |
2924\def\aa{aa}% 2925\def\ae{ae}% |
|
2878\def\l{l}% | 2926\def\l{l}% |
2879\def\L{L}% | 2927\def\oe{oe}% 2928\def\o{o}% |
2880\def\ss{ss}% | 2929\def\ss{ss}% |
2881\let\w=\indexdummyfont 2882\let\t=\indexdummyfont 2883\let\r=\indexdummyfont 2884\let\i=\indexdummyfont | 2930% 2931% Don't no-op \tt, since it isn't a user-level command 2932% and is used in the definitions of the active chars like <, >, |, etc. 2933% Likewise with the other plain tex font commands. 2934%\let\tt=\indexdummyfont 2935% |
2885\let\b=\indexdummyfont | 2936\let\b=\indexdummyfont |
2886\let\emph=\indexdummyfont 2887\let\strong=\indexdummyfont 2888\let\cite=\indexdummyfont | 2937\let\i=\indexdummyfont 2938\let\r=\indexdummyfont |
2889\let\sc=\indexdummyfont | 2939\let\sc=\indexdummyfont |
2890%Don't no-op \tt, since it isn't a user-level command 2891% and is used in the definitions of the active chars like <, >, |... 2892%\let\tt=\indexdummyfont 2893\let\tclose=\indexdummyfont 2894\let\code=\indexdummyfont 2895\let\url=\indexdummyfont 2896\let\uref=\indexdummyfont 2897\let\env=\indexdummyfont | 2940\let\t=\indexdummyfont 2941% 2942\let\TeX=\indexdummytex |
2898\let\acronym=\indexdummyfont | 2943\let\acronym=\indexdummyfont |
2944\let\cite=\indexdummyfont 2945\let\code=\indexdummyfont |
|
2899\let\command=\indexdummyfont | 2946\let\command=\indexdummyfont |
2900\let\option=\indexdummyfont | 2947\let\dfn=\indexdummyfont 2948\let\dots=\indexdummydots 2949\let\emph=\indexdummyfont 2950\let\env=\indexdummyfont |
2901\let\file=\indexdummyfont | 2951\let\file=\indexdummyfont |
2902\let\samp=\indexdummyfont | |
2903\let\kbd=\indexdummyfont 2904\let\key=\indexdummyfont | 2952\let\kbd=\indexdummyfont 2953\let\key=\indexdummyfont |
2954\let\math=\indexdummyfont 2955\let\option=\indexdummyfont 2956\let\samp=\indexdummyfont 2957\let\strong=\indexdummyfont 2958\let\uref=\indexdummyfont 2959\let\url=\indexdummyfont |
|
2905\let\var=\indexdummyfont | 2960\let\var=\indexdummyfont |
2906\let\TeX=\indexdummytex 2907\let\dots=\indexdummydots 2908\def\@{@}% | 2961\let\w=\indexdummyfont |
2909} 2910 2911% To define \realbackslash, we must make \ not be an escape. 2912% We must first make another character (@) an escape 2913% so we do not become unable to do a definition. 2914 2915{\catcode`\@=0 \catcode`\\=\other 2916 @gdef@realbackslash{\}} --- 585 unchanged lines hidden (view full) --- 3502\secno=0 \subsecno=0 \subsubsecno=0 3503\global\advance \appendixno by 1 3504\message{\putwordAppendix\space \appendixletter}% 3505\chapmacro {#1}{\putwordAppendix{} \appendixletter}% 3506\gdef\thissection{#1}% 3507\gdef\thischaptername{#1}% 3508\xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}% 3509\toks0 = {#1}% | 2962} 2963 2964% To define \realbackslash, we must make \ not be an escape. 2965% We must first make another character (@) an escape 2966% so we do not become unable to do a definition. 2967 2968{\catcode`\@=0 \catcode`\\=\other 2969 @gdef@realbackslash{\}} --- 585 unchanged lines hidden (view full) --- 3555\secno=0 \subsecno=0 \subsubsecno=0 3556\global\advance \appendixno by 1 3557\message{\putwordAppendix\space \appendixletter}% 3558\chapmacro {#1}{\putwordAppendix{} \appendixletter}% 3559\gdef\thissection{#1}% 3560\gdef\thischaptername{#1}% 3561\xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}% 3562\toks0 = {#1}% |
3510\edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}% 3511 {\putwordAppendix{} \appendixletter}}}% | 3563\edef\temp{\noexpand\writetocentry{\realbackslash appendixentry{\the\toks0}% 3564 {\appendixletter}}}% |
3512\temp 3513\appendixnoderef 3514\global\let\section = \appendixsec 3515\global\let\subsection = \appendixsubsec 3516\global\let\subsubsection = \appendixsubsubsec 3517} 3518 3519% @centerchap is like @unnumbered, but the heading is centered. --- 60 unchanged lines hidden (view full) --- 3580\nobreak 3581} 3582 3583\outer\def\unnumberedsec{\parsearg\unnumberedsecyyy} 3584\def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz 3585\def\unnumberedseczzz #1{% 3586\plainsecheading {#1}\gdef\thissection{#1}% 3587\toks0 = {#1}% | 3565\temp 3566\appendixnoderef 3567\global\let\section = \appendixsec 3568\global\let\subsection = \appendixsubsec 3569\global\let\subsubsection = \appendixsubsubsec 3570} 3571 3572% @centerchap is like @unnumbered, but the heading is centered. --- 60 unchanged lines hidden (view full) --- 3633\nobreak 3634} 3635 3636\outer\def\unnumberedsec{\parsearg\unnumberedsecyyy} 3637\def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz 3638\def\unnumberedseczzz #1{% 3639\plainsecheading {#1}\gdef\thissection{#1}% 3640\toks0 = {#1}% |
3588\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry{\the\toks0}}}% | 3641\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry% 3642 {\the\toks0}{\the\chapno}}}% |
3589\temp 3590\unnumbnoderef 3591\nobreak 3592} 3593 3594% Subsections. 3595\outer\def\numberedsubsec{\parsearg\numberedsubsecyyy} 3596\def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz --- 22 unchanged lines hidden (view full) --- 3619} 3620 3621\outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy} 3622\def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz 3623\def\unnumberedsubseczzz #1{% 3624\plainsubsecheading {#1}\gdef\thissection{#1}% 3625\toks0 = {#1}% 3626\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry% | 3643\temp 3644\unnumbnoderef 3645\nobreak 3646} 3647 3648% Subsections. 3649\outer\def\numberedsubsec{\parsearg\numberedsubsecyyy} 3650\def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz --- 22 unchanged lines hidden (view full) --- 3673} 3674 3675\outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy} 3676\def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz 3677\def\unnumberedsubseczzz #1{% 3678\plainsubsecheading {#1}\gdef\thissection{#1}% 3679\toks0 = {#1}% 3680\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry% |
3627 {\the\toks0}}}% | 3681 {\the\toks0}{\the\chapno}{\the\secno}}}% |
3628\temp 3629\unnumbnoderef 3630\nobreak 3631} 3632 3633% Subsubsections. 3634\outer\def\numberedsubsubsec{\parsearg\numberedsubsubsecyyy} 3635\def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz --- 24 unchanged lines hidden (view full) --- 3660} 3661 3662\outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy} 3663\def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz 3664\def\unnumberedsubsubseczzz #1{% 3665\plainsubsubsecheading {#1}\gdef\thissection{#1}% 3666\toks0 = {#1}% 3667\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry% | 3682\temp 3683\unnumbnoderef 3684\nobreak 3685} 3686 3687% Subsubsections. 3688\outer\def\numberedsubsubsec{\parsearg\numberedsubsubsecyyy} 3689\def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz --- 24 unchanged lines hidden (view full) --- 3714} 3715 3716\outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy} 3717\def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz 3718\def\unnumberedsubsubseczzz #1{% 3719\plainsubsubsecheading {#1}\gdef\thissection{#1}% 3720\toks0 = {#1}% 3721\edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry% |
3668 {\the\toks0}}}% | 3722 {\the\toks0}{\the\chapno}{\the\secno}{\the\subsecno}}}% |
3669\temp 3670\unnumbnoderef 3671\nobreak 3672} 3673 3674% These are variants which are not "outer", so they can appear in @ifinfo. 3675% Actually, they should now be obsolete; ordinary section commands should work. 3676\def\infotop{\parsearg\unnumberedzzz} --- 195 unchanged lines hidden (view full) --- 3872% Table of contents. 3873\newwrite\tocfile 3874 3875% Write an entry to the toc file, opening it if necessary. 3876% Called from @chapter, etc. We supply {\folio} at the end of the 3877% argument, which will end up as the last argument to the \...entry macro. 3878% 3879% We open the .toc file here instead of at @setfilename or any other | 3723\temp 3724\unnumbnoderef 3725\nobreak 3726} 3727 3728% These are variants which are not "outer", so they can appear in @ifinfo. 3729% Actually, they should now be obsolete; ordinary section commands should work. 3730\def\infotop{\parsearg\unnumberedzzz} --- 195 unchanged lines hidden (view full) --- 3926% Table of contents. 3927\newwrite\tocfile 3928 3929% Write an entry to the toc file, opening it if necessary. 3930% Called from @chapter, etc. We supply {\folio} at the end of the 3931% argument, which will end up as the last argument to the \...entry macro. 3932% 3933% We open the .toc file here instead of at @setfilename or any other |
3880% given time so that @contents can be put in the document anywhere. | 3934% fixed time so that @contents can be put in the document anywhere. |
3881% 3882\newif\iftocfileopened 3883\def\writetocentry#1{% 3884 \iftocfileopened\else 3885 \immediate\openout\tocfile = \jobname.toc 3886 \global\tocfileopenedtrue 3887 \fi 3888 \iflinks \write\tocfile{#1{\folio}}\fi | 3935% 3936\newif\iftocfileopened 3937\def\writetocentry#1{% 3938 \iftocfileopened\else 3939 \immediate\openout\tocfile = \jobname.toc 3940 \global\tocfileopenedtrue 3941 \fi 3942 \iflinks \write\tocfile{#1{\folio}}\fi |
3943 % 3944 % Tell \shipout to create a page destination if we're doing pdf, which 3945 % will be the target of the links in the table of contents. We can't 3946 % just do it on every page because the title pages are numbered 1 and 3947 % 2 (the page numbers aren't printed), and so are the first two pages 3948 % of the document. Thus, we'd have two destinations named `1', and 3949 % two named `2'. 3950 \ifpdf \pdfmakepagedesttrue \fi |
|
3889} 3890 3891\newskip\contentsrightmargin \contentsrightmargin=1in 3892\newcount\savepageno 3893\newcount\lastnegativepageno \lastnegativepageno = -1 3894 3895% Finish up the main text and prepare to read what we've written 3896% to \tocfile. --- 39 unchanged lines hidden (view full) --- 3936 \pageno = \savepageno 3937} 3938 3939% And just the chapters. 3940\def\summarycontents{% 3941 \startcontents{\putwordShortTOC}% 3942 % 3943 \let\chapentry = \shortchapentry | 3951} 3952 3953\newskip\contentsrightmargin \contentsrightmargin=1in 3954\newcount\savepageno 3955\newcount\lastnegativepageno \lastnegativepageno = -1 3956 3957% Finish up the main text and prepare to read what we've written 3958% to \tocfile. --- 39 unchanged lines hidden (view full) --- 3998 \pageno = \savepageno 3999} 4000 4001% And just the chapters. 4002\def\summarycontents{% 4003 \startcontents{\putwordShortTOC}% 4004 % 4005 \let\chapentry = \shortchapentry |
4006 \let\appendixentry = \shortappendixentry |
|
3944 \let\unnumbchapentry = \shortunnumberedentry 3945 % We want a true roman here for the page numbers. 3946 \secfonts 3947 \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl 3948 \rm 3949 \hyphenpenalty = 10000 3950 \advance\baselineskip by 1pt % Open it up a little. 3951 \def\secentry ##1##2##3##4{} | 4007 \let\unnumbchapentry = \shortunnumberedentry 4008 % We want a true roman here for the page numbers. 4009 \secfonts 4010 \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl 4011 \rm 4012 \hyphenpenalty = 10000 4013 \advance\baselineskip by 1pt % Open it up a little. 4014 \def\secentry ##1##2##3##4{} |
3952 \def\unnumbsecentry ##1##2{} | 4015 \def\unnumbsecentry ##1##2##3{} |
3953 \def\subsecentry ##1##2##3##4##5{} | 4016 \def\subsecentry ##1##2##3##4##5{} |
3954 \def\unnumbsubsecentry ##1##2{} | 4017 \def\unnumbsubsecentry ##1##2##3##4{} |
3955 \def\subsubsecentry ##1##2##3##4##5##6{} | 4018 \def\subsubsecentry ##1##2##3##4##5##6{} |
3956 \def\unnumbsubsubsecentry ##1##2{} | 4019 \def\unnumbsubsubsecentry ##1##2##3##4##5{} |
3957 \openin 1 \jobname.toc 3958 \ifeof 1 \else 3959 \closein 1 3960 \input \jobname.toc 3961 \fi 3962 \vfill \eject 3963 \contentsalignmacro % in case @setchapternewpage odd is in effect 3964 \endgroup --- 6 unchanged lines hidden (view full) --- 3971 \pdfcatalog{/PageMode /UseOutlines}% 3972\fi 3973 3974% These macros generate individual entries in the table of contents. 3975% The first argument is the chapter or section name. 3976% The last argument is the page number. 3977% The arguments in between are the chapter number, section number, ... 3978 | 4020 \openin 1 \jobname.toc 4021 \ifeof 1 \else 4022 \closein 1 4023 \input \jobname.toc 4024 \fi 4025 \vfill \eject 4026 \contentsalignmacro % in case @setchapternewpage odd is in effect 4027 \endgroup --- 6 unchanged lines hidden (view full) --- 4034 \pdfcatalog{/PageMode /UseOutlines}% 4035\fi 4036 4037% These macros generate individual entries in the table of contents. 4038% The first argument is the chapter or section name. 4039% The last argument is the page number. 4040% The arguments in between are the chapter number, section number, ... 4041 |
3979% Chapter-level things, for both the long and short contents. | 4042% Chapters, in the main contents. |
3980\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}} | 4043\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}} |
3981 3982% See comments in \dochapentry re vbox and related settings | 4044% 4045% Chapters, in the short toc. 4046% See comments in \dochapentry re vbox and related settings. |
3983\def\shortchapentry#1#2#3{% 3984 \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}% 3985} 3986 | 4047\def\shortchapentry#1#2#3{% 4048 \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}% 4049} 4050 |
4051% Appendices, in the main contents. 4052\def\appendixentry#1#2#3{\dochapentry{\putwordAppendix{} #2\labelspace#1}{#3}} 4053% 4054% Appendices, in the short toc. 4055\let\shortappendixentry = \shortchapentry 4056 |
|
3987% Typeset the label for a chapter or appendix for the short contents. | 4057% Typeset the label for a chapter or appendix for the short contents. |
3988% The arg is, e.g. `Appendix A' for an appendix, or `3' for a chapter. | 4058% The arg is, e.g., `Appendix A' for an appendix, or `3' for a chapter. |
3989% We could simplify the code here by writing out an \appendixentry 3990% command in the toc file for appendices, instead of using \chapentry 3991% for both, but it doesn't seem worth it. 3992% 3993\newdimen\shortappendixwidth 3994% 3995\def\shortchaplabel#1{% | 4059% We could simplify the code here by writing out an \appendixentry 4060% command in the toc file for appendices, instead of using \chapentry 4061% for both, but it doesn't seem worth it. 4062% 4063\newdimen\shortappendixwidth 4064% 4065\def\shortchaplabel#1{% |
3996 % Compute width of word "Appendix", may change with language. 3997 \setbox0 = \hbox{\shortcontrm \putwordAppendix}% 3998 \shortappendixwidth = \wd0 3999 % 4000 % We typeset #1 in a box of constant width, regardless of the text of 4001 % #1, so the chapter titles will come out aligned. 4002 \setbox0 = \hbox{#1}% 4003 \dimen0 = \ifdim\wd0 > \shortappendixwidth \shortappendixwidth \else 0pt \fi 4004 % 4005 % This space should be plenty, since a single number is .5em, and the | 4066 % This space should be enough, since a single number is .5em, and the |
4006 % widest letter (M) is 1em, at least in the Computer Modern fonts. | 4067 % widest letter (M) is 1em, at least in the Computer Modern fonts. |
4068 % But use \hss just in case. |
|
4007 % (This space doesn't include the extra space that gets added after 4008 % the label; that gets put in by \shortchapentry above.) | 4069 % (This space doesn't include the extra space that gets added after 4070 % the label; that gets put in by \shortchapentry above.) |
4009 \advance\dimen0 by 1.1em 4010 \hbox to \dimen0{#1\hfil}% | 4071 \dimen0 = 1em 4072 \hbox to \dimen0{#1\hss}% |
4011} 4012 | 4073} 4074 |
4075% Unnumbered chapters. |
|
4013\def\unnumbchapentry#1#2{\dochapentry{#1}{#2}} 4014\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}} 4015 4016% Sections. 4017\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}} | 4076\def\unnumbchapentry#1#2{\dochapentry{#1}{#2}} 4077\def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}} 4078 4079% Sections. 4080\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}} |
4018\def\unnumbsecentry#1#2{\dosecentry{#1}{#2}} | 4081\def\unnumbsecentry#1#2#3{\dosecentry{#1}{#3}} |
4019 4020% Subsections. 4021\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}} | 4082 4083% Subsections. 4084\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}} |
4022\def\unnumbsubsecentry#1#2{\dosubsecentry{#1}{#2}} | 4085\def\unnumbsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}} |
4023 4024% And subsubsections. 4025\def\subsubsecentry#1#2#3#4#5#6{% 4026 \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}} | 4086 4087% And subsubsections. 4088\def\subsubsecentry#1#2#3#4#5#6{% 4089 \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}} |
4027\def\unnumbsubsubsecentry#1#2{\dosubsubsecentry{#1}{#2}} | 4090\def\unnumbsubsubsecentry#1#2#3#4#5{\dosubsubsecentry{#1}{#5}} |
4028 4029% This parameter controls the indentation of the various levels. 4030\newdimen\tocindent \tocindent = 3pc 4031 4032% Now for the actual typesetting. In all these, #1 is the text and #2 is the 4033% page number. 4034% 4035% If the toc has to be broken over pages, we want it to be at chapters --- 24 unchanged lines hidden (view full) --- 4060 4061% Final typesetting of a toc entry; we use the same \entry macro as for 4062% the index entries, but we want to suppress hyphenation here. (We 4063% can't do that in the \entry macro, since index entries might consist 4064% of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.) 4065\def\tocentry#1#2{\begingroup 4066 \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks 4067 % Do not use \turnoffactive in these arguments. Since the toc is | 4091 4092% This parameter controls the indentation of the various levels. 4093\newdimen\tocindent \tocindent = 3pc 4094 4095% Now for the actual typesetting. In all these, #1 is the text and #2 is the 4096% page number. 4097% 4098% If the toc has to be broken over pages, we want it to be at chapters --- 24 unchanged lines hidden (view full) --- 4123 4124% Final typesetting of a toc entry; we use the same \entry macro as for 4125% the index entries, but we want to suppress hyphenation here. (We 4126% can't do that in the \entry macro, since index entries might consist 4127% of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.) 4128\def\tocentry#1#2{\begingroup 4129 \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks 4130 % Do not use \turnoffactive in these arguments. Since the toc is |
4068 % typeset in cmr, so characters such as _ would come out wrong; we | 4131 % typeset in cmr, characters such as _ would come out wrong; we |
4069 % have to do the usual translation tricks. 4070 \entry{#1}{#2}% 4071\endgroup} 4072 4073% Space between chapter (or whatever) number and the title. 4074\def\labelspace{\hskip1em \relax} 4075 4076\def\dopageno#1{{\rm #1}} 4077\def\doshortpageno#1{{\rm #1}} 4078 4079\def\chapentryfonts{\secfonts \rm} 4080\def\secentryfonts{\textfonts} 4081\let\subsecentryfonts = \textfonts 4082\let\subsubsecentryfonts = \textfonts 4083 4084 4085\message{environments,} 4086% @foo ... @end foo. 4087 | 4132 % have to do the usual translation tricks. 4133 \entry{#1}{#2}% 4134\endgroup} 4135 4136% Space between chapter (or whatever) number and the title. 4137\def\labelspace{\hskip1em \relax} 4138 4139\def\dopageno#1{{\rm #1}} 4140\def\doshortpageno#1{{\rm #1}} 4141 4142\def\chapentryfonts{\secfonts \rm} 4143\def\secentryfonts{\textfonts} 4144\let\subsecentryfonts = \textfonts 4145\let\subsubsecentryfonts = \textfonts 4146 4147 4148\message{environments,} 4149% @foo ... @end foo. 4150 |
4151% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. 4152% |
|
4088% Since these characters are used in examples, it should be an even number of 4089% \tt widths. Each \tt character is 1en, so two makes it 1em. | 4153% Since these characters are used in examples, it should be an even number of 4154% \tt widths. Each \tt character is 1en, so two makes it 1em. |
4090% Furthermore, these definitions must come after we define our fonts. 4091\newbox\dblarrowbox \newbox\longdblarrowbox 4092\newbox\pushcharbox \newbox\bullbox 4093\newbox\equivbox \newbox\errorbox 4094 4095%{\tentt 4096%\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil} 4097%\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil} 4098%\global\setbox\pushcharbox = \hbox to 1em{\hfil$\dashv$\hfil} 4099%\global\setbox\equivbox = \hbox to 1em{\hfil$\ptexequiv$\hfil} 4100% Adapted from the manmac format (p.420 of TeXbook) 4101%\global\setbox\bullbox = \hbox to 1em{\kern.15em\vrule height .75ex width .85ex 4102% depth .1ex\hfil} 4103%} 4104 4105% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. | 4155% |
4106\def\point{$\star$} 4107\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} 4108\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}} 4109\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} 4110\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}} 4111 | 4156\def\point{$\star$} 4157\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} 4158\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}} 4159\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} 4160\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}} 4161 |
4162% The @error{} command. |
|
4112% Adapted from the TeXbook's \boxit. | 4163% Adapted from the TeXbook's \boxit. |
4164% 4165\newbox\errorbox 4166% |
|
4113{\tentt \global\dimen0 = 3em}% Width of the box. 4114\dimen2 = .55pt % Thickness of rules 4115% The text. (`r' is open on the right, `e' somewhat less so on the left.) 4116\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt} | 4167{\tentt \global\dimen0 = 3em}% Width of the box. 4168\dimen2 = .55pt % Thickness of rules 4169% The text. (`r' is open on the right, `e' somewhat less so on the left.) 4170\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt} |
4117 | 4171% |
4118\global\setbox\errorbox=\hbox to \dimen0{\hfil 4119 \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. 4120 \advance\hsize by -2\dimen2 % Rules. 4121 \vbox{ 4122 \hrule height\dimen2 4123 \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. 4124 \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. 4125 \kern3pt\vrule width\dimen2}% Space to right. 4126 \hrule height\dimen2} 4127 \hfil} | 4172\global\setbox\errorbox=\hbox to \dimen0{\hfil 4173 \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. 4174 \advance\hsize by -2\dimen2 % Rules. 4175 \vbox{ 4176 \hrule height\dimen2 4177 \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. 4178 \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. 4179 \kern3pt\vrule width\dimen2}% Space to right. 4180 \hrule height\dimen2} 4181 \hfil} |
4128 4129% The @error{} command. | 4182% |
4130\def\error{\leavevmode\lower.7ex\copy\errorbox} 4131 4132% @tex ... @end tex escapes into raw Tex temporarily. 4133% One exception: @ is still an escape character, so that @end tex works. 4134% But \@ or @@ will get a plain tex @ character. 4135 4136\def\tex{\begingroup 4137 \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 --- 23 unchanged lines hidden (view full) --- 4161 \let\*=\ptexstar 4162 \let\t=\ptext 4163 % 4164 \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% 4165 \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% 4166 \def\@{@}% 4167\let\Etex=\endgroup} 4168 | 4183\def\error{\leavevmode\lower.7ex\copy\errorbox} 4184 4185% @tex ... @end tex escapes into raw Tex temporarily. 4186% One exception: @ is still an escape character, so that @end tex works. 4187% But \@ or @@ will get a plain tex @ character. 4188 4189\def\tex{\begingroup 4190 \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 --- 23 unchanged lines hidden (view full) --- 4214 \let\*=\ptexstar 4215 \let\t=\ptext 4216 % 4217 \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% 4218 \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% 4219 \def\@{@}% 4220\let\Etex=\endgroup} 4221 |
4169% Define @lisp ... @endlisp. | 4222% Define @lisp ... @end lisp. |
4170% @lisp does a \begingroup so it can rebind things, | 4223% @lisp does a \begingroup so it can rebind things, |
4171% including the definition of @endlisp (which normally is erroneous). | 4224% including the definition of @end lisp (which normally is erroneous). |
4172 4173% Amount to narrow the margins by for @lisp. 4174\newskip\lispnarrowing \lispnarrowing=0.4in 4175 4176% This is the definition that ^^M gets inside @lisp, @example, and other 4177% such environments. \null is better than a space, since it doesn't 4178% have any width. 4179\def\lisppar{\null\endgraf} --- 381 unchanged lines hidden (view full) --- 4561 % Restore active chars for included file. 4562 \endgroup 4563 \begingroup 4564 \def\thisfile{#1}% 4565 \expandafter\expandafter\setupverbatiminclude\input\thisfile 4566 \endgroup\nonfillfinish\endgroup 4567} 4568 | 4225 4226% Amount to narrow the margins by for @lisp. 4227\newskip\lispnarrowing \lispnarrowing=0.4in 4228 4229% This is the definition that ^^M gets inside @lisp, @example, and other 4230% such environments. \null is better than a space, since it doesn't 4231% have any width. 4232\def\lisppar{\null\endgraf} --- 381 unchanged lines hidden (view full) --- 4614 % Restore active chars for included file. 4615 \endgroup 4616 \begingroup 4617 \def\thisfile{#1}% 4618 \expandafter\expandafter\setupverbatiminclude\input\thisfile 4619 \endgroup\nonfillfinish\endgroup 4620} 4621 |
4622% @copying ... @end copying. 4623% Save the text away for @insertcopying later. 4624% 4625\newbox\copyingbox 4626% 4627\def\copying{\begingroup 4628 \parindent = 0pt % looks wrong on title page 4629 \def\Ecopying{\egroup\endgroup}% 4630 \global\setbox\copyingbox = \vbox\bgroup 4631} |
|
4569 | 4632 |
4633% @insertcopying. 4634% 4635\def\insertcopying{\unvcopy\copyingbox} 4636 4637 |
|
4570\message{defuns,} 4571% @defun etc. 4572 4573% Allow user to change definition object font (\df) internally 4574\def\setdeffont #1 {\csname DEF#1\endcsname} 4575 4576\newskip\defbodyindent \defbodyindent=.4in 4577\newskip\defargsindent \defargsindent=50pt --- 79 unchanged lines hidden (view full) --- 4657\rlap{\rightline{{\rm #2}\hskip -1.25pc }}}% 4658% Make all lines underfull and no complaints: 4659\tolerance=10000 \hbadness=10000 4660\advance\leftskip by -\defbodyindent 4661\exdentamount=\defbodyindent 4662{\df #1}\enskip % Generate function name 4663} 4664 | 4638\message{defuns,} 4639% @defun etc. 4640 4641% Allow user to change definition object font (\df) internally 4642\def\setdeffont #1 {\csname DEF#1\endcsname} 4643 4644\newskip\defbodyindent \defbodyindent=.4in 4645\newskip\defargsindent \defargsindent=50pt --- 79 unchanged lines hidden (view full) --- 4725\rlap{\rightline{{\rm #2}\hskip -1.25pc }}}% 4726% Make all lines underfull and no complaints: 4727\tolerance=10000 \hbadness=10000 4728\advance\leftskip by -\defbodyindent 4729\exdentamount=\defbodyindent 4730{\df #1}\enskip % Generate function name 4731} 4732 |
4665% Actually process the body of a definition 4666% #1 should be the terminating control sequence, such as \Edefun. 4667% #2 should be the "another name" control sequence, such as \defunx. 4668% #3 should be the control sequence that actually processes the header, 4669% such as \defunheader. | 4733% Common pieces to start any @def... 4734% #1 is the \E... control sequence to end the definition (which we define). 4735% #2 is the \...x control sequence (which our caller defines). 4736% #3 is the control sequence to process the header, such as \defunheader. 4737% 4738\def\parsebodycommon#1#2#3{% 4739 \begingroup\inENV 4740 % If there are two @def commands in a row, we'll have a \nobreak, 4741 % which is there to keep the function description together with its 4742 % header. But if there's nothing but headers, we want to allow a 4743 % break after all. 4744 \ifnum\lastpenalty = 10000 \penalty0 \fi 4745 \medbreak 4746 % 4747 % Define the \E... end token that this defining construct specifies 4748 % so that it will exit this group. 4749 \def#1{\endgraf\endgroup\medbreak}% 4750 % 4751 \parindent=0in 4752 \advance\leftskip by \defbodyindent 4753 \exdentamount=\defbodyindent 4754} |
4670 | 4755 |
4671\def\defparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody 4672\medbreak % 4673% Define the end token that this defining construct specifies 4674% so that it will exit this group. 4675\def#1{\endgraf\endgroup\medbreak}% 4676\def#2{\begingroup\obeylines\activeparens\spacesplit#3}% 4677\parindent=0in 4678\advance\leftskip by \defbodyindent 4679\exdentamount=\defbodyindent 4680\begingroup % 4681\catcode 61=\active % 61 is `=' 4682\obeylines\activeparens\spacesplit#3} | 4756% Process body of @defun, @deffn, @defmac, etc. 4757% 4758\def\defparsebody#1#2#3{% 4759 \parsebodycommon{#1}{#2}{#3}% 4760 \def#2{\begingroup\obeylines\activeparens\spacesplit#3}% 4761 \catcode61=\active % 61 is `=' 4762 \begingroup\obeylines\activeparens 4763 \spacesplit#3% 4764} |
4683 | 4765 |
4684% #1 is the \E... control sequence to end the definition (which we define). 4685% #2 is the \...x control sequence for consecutive fns (which we define). 4686% #3 is the control sequence to call to resume processing. | 4766% #1, #2, #3 are the common arguments (see \defparsebody). |
4687% #4, delimited by the space, is the class name. 4688% | 4767% #4, delimited by the space, is the class name. 4768% |
4689\def\defmethparsebody#1#2#3#4 {\begingroup\inENV % 4690\medbreak % 4691% Define the end token that this defining construct specifies 4692% so that it will exit this group. 4693\def#1{\endgraf\endgroup\medbreak}% 4694\def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}% 4695\parindent=0in 4696\advance\leftskip by \defbodyindent 4697\exdentamount=\defbodyindent 4698\begingroup\obeylines\activeparens\spacesplit{#3{#4}}} | 4769\def\defmethparsebody#1#2#3#4 {% 4770 \parsebodycommon{#1}{#2}{#3}% 4771 \def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}% 4772 \begingroup\obeylines\activeparens 4773 \spacesplit{#3{#4}}% 4774} |
4699 4700% Used for @deftypemethod and @deftypeivar. | 4775 4776% Used for @deftypemethod and @deftypeivar. |
4701% #1 is the \E... control sequence to end the definition (which we define). 4702% #2 is the \...x control sequence for consecutive fns (which we define). 4703% #3 is the control sequence to call to resume processing. | 4777% #1, #2, #3 are the common arguments (see \defparsebody). |
4704% #4, delimited by a space, is the class name. 4705% #5 is the method's return type. 4706% | 4778% #4, delimited by a space, is the class name. 4779% #5 is the method's return type. 4780% |
4707\def\deftypemethparsebody#1#2#3#4 #5 {\begingroup\inENV 4708 \medbreak 4709 \def#1{\endgraf\endgroup\medbreak}% | 4781\def\deftypemethparsebody#1#2#3#4 #5 {% 4782 \parsebodycommon{#1}{#2}{#3}% |
4710 \def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}% | 4783 \def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}% |
4711 \parindent=0in 4712 \advance\leftskip by \defbodyindent 4713 \exdentamount=\defbodyindent 4714 \begingroup\obeylines\activeparens\spacesplit{#3{#4}{#5}}} | 4784 \begingroup\obeylines\activeparens 4785 \spacesplit{#3{#4}{#5}}% 4786} |
4715 4716% Used for @deftypeop. The change from \deftypemethparsebody is an 4717% extra argument at the beginning which is the `category', instead of it 4718% being the hardwired string `Method' or `Instance Variable'. We have 4719% to account for this both in the \...x definition and in parsing the 4720% input at hand. Thus also need a control sequence (passed as #5) for 4721% the \E... definition to assign the category name to. 4722% | 4787 4788% Used for @deftypeop. The change from \deftypemethparsebody is an 4789% extra argument at the beginning which is the `category', instead of it 4790% being the hardwired string `Method' or `Instance Variable'. We have 4791% to account for this both in the \...x definition and in parsing the 4792% input at hand. Thus also need a control sequence (passed as #5) for 4793% the \E... definition to assign the category name to. 4794% |
4723\def\deftypeopparsebody#1#2#3#4#5 #6 {\begingroup\inENV 4724 \medbreak 4725 \def#1{\endgraf\endgroup\medbreak}% | 4795\def\deftypeopparsebody#1#2#3#4#5 #6 {% 4796 \parsebodycommon{#1}{#2}{#3}% |
4726 \def#2##1 ##2 ##3 {% 4727 \def#4{##1}% 4728 \begingroup\obeylines\activeparens\spacesplit{#3{##2}{##3}}}% | 4797 \def#2##1 ##2 ##3 {% 4798 \def#4{##1}% 4799 \begingroup\obeylines\activeparens\spacesplit{#3{##2}{##3}}}% |
4729 \parindent=0in 4730 \advance\leftskip by \defbodyindent 4731 \exdentamount=\defbodyindent 4732 \begingroup\obeylines\activeparens\spacesplit{#3{#5}{#6}}} | 4800 \begingroup\obeylines\activeparens 4801 \spacesplit{#3{#5}{#6}}% 4802} |
4733 | 4803 |
4734\def\defopparsebody #1#2#3#4#5 {\begingroup\inENV % 4735\medbreak % 4736% Define the end token that this defining construct specifies 4737% so that it will exit this group. 4738\def#1{\endgraf\endgroup\medbreak}% 4739\def#2##1 ##2 {\def#4{##1}% 4740\begingroup\obeylines\activeparens\spacesplit{#3{##2}}}% 4741\parindent=0in 4742\advance\leftskip by \defbodyindent 4743\exdentamount=\defbodyindent 4744\begingroup\obeylines\activeparens\spacesplit{#3{#5}}} | 4804% For @defop. 4805\def\defopparsebody #1#2#3#4#5 {% 4806 \parsebodycommon{#1}{#2}{#3}% 4807 \def#2##1 ##2 {\def#4{##1}% 4808 \begingroup\obeylines\activeparens\spacesplit{#3{##2}}}% 4809 \begingroup\obeylines\activeparens 4810 \spacesplit{#3{#5}}% 4811} |
4745 4746% These parsing functions are similar to the preceding ones 4747% except that they do not make parens into active characters. 4748% These are used for "variables" since they have no arguments. | 4812 4813% These parsing functions are similar to the preceding ones 4814% except that they do not make parens into active characters. 4815% These are used for "variables" since they have no arguments. |
4749 4750\def\defvarparsebody #1#2#3{\begingroup\inENV% Environment for definitionbody 4751\medbreak % 4752% Define the end token that this defining construct specifies 4753% so that it will exit this group. 4754\def#1{\endgraf\endgroup\medbreak}% 4755\def#2{\begingroup\obeylines\spacesplit#3}% 4756\parindent=0in 4757\advance\leftskip by \defbodyindent 4758\exdentamount=\defbodyindent 4759\begingroup % 4760\catcode 61=\active % 4761\obeylines\spacesplit#3} 4762 4763% This is used for \def{tp,vr}parsebody. It could probably be used for 4764% some of the others, too, with some judicious conditionals. | |
4765% | 4816% |
4766\def\parsebodycommon#1#2#3{% 4767 \begingroup\inENV % 4768 \medbreak % 4769 % Define the end token that this defining construct specifies 4770 % so that it will exit this group. 4771 \def#1{\endgraf\endgroup\medbreak}% 4772 \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}% 4773 \parindent=0in 4774 \advance\leftskip by \defbodyindent 4775 \exdentamount=\defbodyindent | 4817\def\defvarparsebody #1#2#3{% 4818 \parsebodycommon{#1}{#2}{#3}% 4819 \def#2{\begingroup\obeylines\spacesplit#3}% 4820 \catcode61=\active % |
4776 \begingroup\obeylines | 4821 \begingroup\obeylines |
4822 \spacesplit#3% |
|
4777} 4778 | 4823} 4824 |
4825% @defopvar. 4826\def\defopvarparsebody #1#2#3#4#5 {% 4827 \parsebodycommon{#1}{#2}{#3}% 4828 \def#2##1 ##2 {\def#4{##1}% 4829 \begingroup\obeylines\spacesplit{#3{##2}}}% 4830 \begingroup\obeylines 4831 \spacesplit{#3{#5}}% 4832} 4833 |
|
4779\def\defvrparsebody#1#2#3#4 {% 4780 \parsebodycommon{#1}{#2}{#3}% | 4834\def\defvrparsebody#1#2#3#4 {% 4835 \parsebodycommon{#1}{#2}{#3}% |
4836 \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}% 4837 \begingroup\obeylines |
|
4781 \spacesplit{#3{#4}}% 4782} 4783 4784% This loses on `@deftp {Data Type} {struct termios}' -- it thinks the 4785% type is just `struct', because we lose the braces in `{struct 4786% termios}' when \spacesplit reads its undelimited argument. Sigh. 4787% \let\deftpparsebody=\defvrparsebody 4788% 4789% So, to get around this, we put \empty in with the type name. That 4790% way, TeX won't find exactly `{...}' as an undelimited argument, and 4791% won't strip off the braces. 4792% 4793\def\deftpparsebody #1#2#3#4 {% 4794 \parsebodycommon{#1}{#2}{#3}% | 4838 \spacesplit{#3{#4}}% 4839} 4840 4841% This loses on `@deftp {Data Type} {struct termios}' -- it thinks the 4842% type is just `struct', because we lose the braces in `{struct 4843% termios}' when \spacesplit reads its undelimited argument. Sigh. 4844% \let\deftpparsebody=\defvrparsebody 4845% 4846% So, to get around this, we put \empty in with the type name. That 4847% way, TeX won't find exactly `{...}' as an undelimited argument, and 4848% won't strip off the braces. 4849% 4850\def\deftpparsebody #1#2#3#4 {% 4851 \parsebodycommon{#1}{#2}{#3}% |
4852 \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}% 4853 \begingroup\obeylines |
|
4795 \spacesplit{\parsetpheaderline{#3{#4}}}\empty 4796} 4797 4798% Fine, but then we have to eventually remove the \empty *and* the 4799% braces (if any). That's what this does. 4800% 4801\def\removeemptybraces\empty#1\relax{#1} 4802 4803% After \spacesplit has done its work, this is called -- #1 is the final 4804% thing to call, #2 the type name (which starts with \empty), and #3 4805% (which might be empty) the arguments. 4806% 4807\def\parsetpheaderline#1#2#3{% 4808 #1{\removeemptybraces#2\relax}{#3}% 4809}% 4810 | 4854 \spacesplit{\parsetpheaderline{#3{#4}}}\empty 4855} 4856 4857% Fine, but then we have to eventually remove the \empty *and* the 4858% braces (if any). That's what this does. 4859% 4860\def\removeemptybraces\empty#1\relax{#1} 4861 4862% After \spacesplit has done its work, this is called -- #1 is the final 4863% thing to call, #2 the type name (which starts with \empty), and #3 4864% (which might be empty) the arguments. 4865% 4866\def\parsetpheaderline#1#2#3{% 4867 #1{\removeemptybraces#2\relax}{#3}% 4868}% 4869 |
4811\def\defopvarparsebody #1#2#3#4#5 {\begingroup\inENV % 4812\medbreak % 4813% Define the end token that this defining construct specifies 4814% so that it will exit this group. 4815\def#1{\endgraf\endgroup\medbreak}% 4816\def#2##1 ##2 {\def#4{##1}% 4817\begingroup\obeylines\spacesplit{#3{##2}}}% 4818\parindent=0in 4819\advance\leftskip by \defbodyindent 4820\exdentamount=\defbodyindent 4821\begingroup\obeylines\spacesplit{#3{#5}}} 4822 | |
4823% Split up #2 at the first space token. 4824% call #1 with two arguments: 4825% the first is all of #2 before the space token, 4826% the second is all of #2 after that space token. 4827% If #2 contains no space token, all of it is passed as the first arg 4828% and the second is passed as empty. | 4870% Split up #2 at the first space token. 4871% call #1 with two arguments: 4872% the first is all of #2 before the space token, 4873% the second is all of #2 after that space token. 4874% If #2 contains no space token, all of it is passed as the first arg 4875% and the second is passed as empty. |
4829 | 4876% |
4830{\obeylines 4831\gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}% 4832\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{% 4833\ifx\relax #3% 4834#1{#2}{}\else #1{#2}{#3#4}\fi}} 4835 | 4877{\obeylines 4878\gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}% 4879\long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{% 4880\ifx\relax #3% 4881#1{#2}{}\else #1{#2}{#3#4}\fi}} 4882 |
4836% So much for the things common to all kinds of definitions. 4837 | |
4838% Define @defun. 4839 4840% First, define the processing that is wanted for arguments of \defun 4841% Use this to expand the args and terminate the paragraph they make up 4842 4843\def\defunargs#1{\functionparens \sl 4844% Expand, preventing hyphenation at `-' chars. 4845% Note that groups don't affect changes in \hyphenchar. --- 43 unchanged lines hidden (view full) --- 4889 4890\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader} 4891 4892% #1 is the data type. #2 is the name and args. 4893\def\deftypefunheader #1#2{\deftypefunheaderx{#1}#2 \relax} 4894% #1 is the data type, #2 the name, #3 the args. 4895\def\deftypefunheaderx #1#2 #3\relax{% 4896\doind {fn}{\code{#2}}% Make entry in function index | 4883% Define @defun. 4884 4885% First, define the processing that is wanted for arguments of \defun 4886% Use this to expand the args and terminate the paragraph they make up 4887 4888\def\defunargs#1{\functionparens \sl 4889% Expand, preventing hyphenation at `-' chars. 4890% Note that groups don't affect changes in \hyphenchar. --- 43 unchanged lines hidden (view full) --- 4934 4935\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader} 4936 4937% #1 is the data type. #2 is the name and args. 4938\def\deftypefunheader #1#2{\deftypefunheaderx{#1}#2 \relax} 4939% #1 is the data type, #2 the name, #3 the args. 4940\def\deftypefunheaderx #1#2 #3\relax{% 4941\doind {fn}{\code{#2}}% Make entry in function index |
4897\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypefun}% | 4942\begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypefun}% |
4898\deftypefunargs {#3}\endgroup % 4899\catcode 61=\other % Turn off change made in \defparsebody 4900} 4901 4902% @deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar}) 4903 4904\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader} 4905 | 4943\deftypefunargs {#3}\endgroup % 4944\catcode 61=\other % Turn off change made in \defparsebody 4945} 4946 4947% @deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar}) 4948 4949\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader} 4950 |
4906% \defheaderxcond#1\relax$$$ | 4951% \defheaderxcond#1\relax$.$ |
4907% puts #1 in @code, followed by a space, but does nothing if #1 is null. | 4952% puts #1 in @code, followed by a space, but does nothing if #1 is null. |
4908\def\defheaderxcond#1#2$$${\ifx#1\relax\else\code{#1#2} \fi} | 4953\def\defheaderxcond#1#2$.${\ifx#1\relax\else\code{#1#2} \fi} |
4909 4910% #1 is the classification. #2 is the data type. #3 is the name and args. 4911\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax} 4912% #1 is the classification, #2 the data type, #3 the name, #4 the args. 4913\def\deftypefnheaderx #1#2#3 #4\relax{% 4914\doind {fn}{\code{#3}}% Make entry in function index 4915\begingroup 4916\normalparens % notably, turn off `&' magic, which prevents 4917% at least some C++ text from working | 4954 4955% #1 is the classification. #2 is the data type. #3 is the name and args. 4956\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax} 4957% #1 is the classification, #2 the data type, #3 the name, #4 the args. 4958\def\deftypefnheaderx #1#2#3 #4\relax{% 4959\doind {fn}{\code{#3}}% Make entry in function index 4960\begingroup 4961\normalparens % notably, turn off `&' magic, which prevents 4962% at least some C++ text from working |
4918\defname {\defheaderxcond#2\relax$$$#3}{#1}% | 4963\defname {\defheaderxcond#2\relax$.$#3}{#1}% |
4919\deftypefunargs {#4}\endgroup % 4920\catcode 61=\other % Turn off change made in \defparsebody 4921} 4922 4923% @defmac == @deffn Macro 4924 4925\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader} 4926 --- 29 unchanged lines hidden (view full) --- 4956\def\deftypeop #1 {\def\deftypeopcategory{#1}% 4957 \deftypeopparsebody\Edeftypeop\deftypeopx\deftypeopheader 4958 \deftypeopcategory} 4959% 4960% #1 is the class name, #2 the data type, #3 the operation name, #4 the args. 4961\def\deftypeopheader#1#2#3#4{% 4962 \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index 4963 \begingroup | 4964\deftypefunargs {#4}\endgroup % 4965\catcode 61=\other % Turn off change made in \defparsebody 4966} 4967 4968% @defmac == @deffn Macro 4969 4970\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader} 4971 --- 29 unchanged lines hidden (view full) --- 5001\def\deftypeop #1 {\def\deftypeopcategory{#1}% 5002 \deftypeopparsebody\Edeftypeop\deftypeopx\deftypeopheader 5003 \deftypeopcategory} 5004% 5005% #1 is the class name, #2 the data type, #3 the operation name, #4 the args. 5006\def\deftypeopheader#1#2#3#4{% 5007 \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index 5008 \begingroup |
4964 \defname{\defheaderxcond#2\relax$$$#3} | 5009 \defname{\defheaderxcond#2\relax$.$#3} |
4965 {\deftypeopcategory\ \putwordon\ \code{#1}}% 4966 \deftypefunargs{#4}% 4967 \endgroup 4968} 4969 4970% @deftypemethod CLASS TYPE METHOD ARG... 4971% 4972\def\deftypemethod{% 4973 \deftypemethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader} 4974% 4975% #1 is the class name, #2 the data type, #3 the method name, #4 the args. 4976\def\deftypemethodheader#1#2#3#4{% 4977 \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index 4978 \begingroup | 5010 {\deftypeopcategory\ \putwordon\ \code{#1}}% 5011 \deftypefunargs{#4}% 5012 \endgroup 5013} 5014 5015% @deftypemethod CLASS TYPE METHOD ARG... 5016% 5017\def\deftypemethod{% 5018 \deftypemethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader} 5019% 5020% #1 is the class name, #2 the data type, #3 the method name, #4 the args. 5021\def\deftypemethodheader#1#2#3#4{% 5022 \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index 5023 \begingroup |
4979 \defname{\defheaderxcond#2\relax$$$#3}{\putwordMethodon\ \code{#1}}% | 5024 \defname{\defheaderxcond#2\relax$.$#3}{\putwordMethodon\ \code{#1}}% |
4980 \deftypefunargs{#4}% 4981 \endgroup 4982} 4983 4984% @deftypeivar CLASS TYPE VARNAME 4985% 4986\def\deftypeivar{% 4987 \deftypemethparsebody\Edeftypeivar\deftypeivarx\deftypeivarheader} 4988% 4989% #1 is the class name, #2 the data type, #3 the variable name. 4990\def\deftypeivarheader#1#2#3{% 4991 \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index 4992 \begingroup | 5025 \deftypefunargs{#4}% 5026 \endgroup 5027} 5028 5029% @deftypeivar CLASS TYPE VARNAME 5030% 5031\def\deftypeivar{% 5032 \deftypemethparsebody\Edeftypeivar\deftypeivarx\deftypeivarheader} 5033% 5034% #1 is the class name, #2 the data type, #3 the variable name. 5035\def\deftypeivarheader#1#2#3{% 5036 \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index 5037 \begingroup |
4993 \defname{\defheaderxcond#2\relax$$$#3} | 5038 \defname{\defheaderxcond#2\relax$.$#3} |
4994 {\putwordInstanceVariableof\ \code{#1}}% 4995 \defvarargs{#3}% 4996 \endgroup 4997} 4998 4999% @defmethod == @defop Method 5000% 5001\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader} --- 66 unchanged lines hidden (view full) --- 5068% @deftypevar int foobar 5069 5070\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader} 5071 5072% #1 is the data type. #2 is the name, perhaps followed by text that 5073% is actually part of the data type, which should not be put into the index. 5074\def\deftypevarheader #1#2{% 5075\dovarind#2 \relax% Make entry in variables index | 5039 {\putwordInstanceVariableof\ \code{#1}}% 5040 \defvarargs{#3}% 5041 \endgroup 5042} 5043 5044% @defmethod == @defop Method 5045% 5046\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader} --- 66 unchanged lines hidden (view full) --- 5113% @deftypevar int foobar 5114 5115\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader} 5116 5117% #1 is the data type. #2 is the name, perhaps followed by text that 5118% is actually part of the data type, which should not be put into the index. 5119\def\deftypevarheader #1#2{% 5120\dovarind#2 \relax% Make entry in variables index |
5076\begingroup\defname {\defheaderxcond#1\relax$$$#2}{\putwordDeftypevar}% | 5121\begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypevar}% |
5077\interlinepenalty=10000 5078\endgraf\nobreak\vskip -\parskip\nobreak 5079\endgroup} 5080\def\dovarind#1 #2\relax{\doind{vr}{\code{#1}}} 5081 5082% @deftypevr {Global Flag} int enable 5083 5084\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader} 5085 5086\def\deftypevrheader #1#2#3{\dovarind#3 \relax% | 5122\interlinepenalty=10000 5123\endgraf\nobreak\vskip -\parskip\nobreak 5124\endgroup} 5125\def\dovarind#1 #2\relax{\doind{vr}{\code{#1}}} 5126 5127% @deftypevr {Global Flag} int enable 5128 5129\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader} 5130 5131\def\deftypevrheader #1#2#3{\dovarind#3 \relax% |
5087\begingroup\defname {\defheaderxcond#2\relax$$$#3}{#1} | 5132\begingroup\defname {\defheaderxcond#2\relax$.$#3}{#1} |
5088\interlinepenalty=10000 5089\endgraf\nobreak\vskip -\parskip\nobreak 5090\endgroup} 5091 5092% Now define @deftp 5093% Args are printed in bold, a slight difference from @defvar. 5094 5095\def\deftpargs #1{\bf \defvarargs{#1}} --- 143 unchanged lines hidden (view full) --- 5239 \paramno=0% 5240 \else 5241 \expandafter\parsemargdef \argl;% 5242 \fi 5243 \if1\csname ismacro.\the\macname\endcsname 5244 \message{Warning: redefining \the\macname}% 5245 \else 5246 \expandafter\ifx\csname \the\macname\endcsname \relax | 5133\interlinepenalty=10000 5134\endgraf\nobreak\vskip -\parskip\nobreak 5135\endgroup} 5136 5137% Now define @deftp 5138% Args are printed in bold, a slight difference from @defvar. 5139 5140\def\deftpargs #1{\bf \defvarargs{#1}} --- 143 unchanged lines hidden (view full) --- 5284 \paramno=0% 5285 \else 5286 \expandafter\parsemargdef \argl;% 5287 \fi 5288 \if1\csname ismacro.\the\macname\endcsname 5289 \message{Warning: redefining \the\macname}% 5290 \else 5291 \expandafter\ifx\csname \the\macname\endcsname \relax |
5247 \else \errmessage{The name \the\macname\space is reserved}\fi | 5292 \else \errmessage{Macro name \the\macname\space already defined}\fi |
5248 \global\cslet{macsave.\the\macname}{\the\macname}% 5249 \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% 5250 % Add the macroname to \macrolist 5251 \toks0 = \expandafter{\macrolist\do}% 5252 \xdef\macrolist{\the\toks0 5253 \expandafter\noexpand\csname\the\macname\endcsname}% 5254 \fi 5255 \begingroup \macrobodyctxt --- 534 unchanged lines hidden (view full) --- 5790 \leftskip\z@skip 5791 \rightskip\z@skip 5792 \spaceskip\z@skip 5793 \xspaceskip\z@skip 5794 \parindent\defaultparindent 5795 % 5796 \smallfonts \rm 5797 % | 5293 \global\cslet{macsave.\the\macname}{\the\macname}% 5294 \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% 5295 % Add the macroname to \macrolist 5296 \toks0 = \expandafter{\macrolist\do}% 5297 \xdef\macrolist{\the\toks0 5298 \expandafter\noexpand\csname\the\macname\endcsname}% 5299 \fi 5300 \begingroup \macrobodyctxt --- 534 unchanged lines hidden (view full) --- 5835 \leftskip\z@skip 5836 \rightskip\z@skip 5837 \spaceskip\z@skip 5838 \xspaceskip\z@skip 5839 \parindent\defaultparindent 5840 % 5841 \smallfonts \rm 5842 % |
5798 % Hang the footnote text off the number. 5799 \hang | 5843 % Because we use hanging indentation in footnotes, a @noindent appears 5844 % to exdent this text, so make it be a no-op. makeinfo does not use 5845 % hanging indentation so @noindent can still be needed within footnote 5846 % text after an @example or the like (not that this is good style). 5847 \let\noindent = \relax 5848 % 5849 % Hang the footnote text off the number. Use \everypar in case the 5850 % footnote extends for more than one paragraph. 5851 \everypar = {\hang}% |
5800 \textindent{\thisfootno}% 5801 % 5802 % Don't crash into the line above the footnote text. Since this 5803 % expands into a box, it must come within the paragraph, lest it 5804 % provide a place where TeX can split the footnote. 5805 \footstrut 5806 \futurelet\next\fo@t 5807} --- 64 unchanged lines hidden (view full) --- 5872\def\image#1{% 5873 \ifx\epsfbox\undefined 5874 \ifwarnednoepsf \else 5875 \errhelp = \noepsfhelp 5876 \errmessage{epsf.tex not found, images will be ignored}% 5877 \global\warnednoepsftrue 5878 \fi 5879 \else | 5852 \textindent{\thisfootno}% 5853 % 5854 % Don't crash into the line above the footnote text. Since this 5855 % expands into a box, it must come within the paragraph, lest it 5856 % provide a place where TeX can split the footnote. 5857 \footstrut 5858 \futurelet\next\fo@t 5859} --- 64 unchanged lines hidden (view full) --- 5924\def\image#1{% 5925 \ifx\epsfbox\undefined 5926 \ifwarnednoepsf \else 5927 \errhelp = \noepsfhelp 5928 \errmessage{epsf.tex not found, images will be ignored}% 5929 \global\warnednoepsftrue 5930 \fi 5931 \else |
5880 \imagexxx #1,,,\finish | 5932 \imagexxx #1,,,,,\finish |
5881 \fi 5882} 5883% 5884% Arguments to @image: 5885% #1 is (mandatory) image filename; we tack on .eps extension. 5886% #2 is (optional) width, #3 is (optional) height. 5887% #4 is (ignored optional) html alt text. 5888% #5 is (ignored optional) extension. 5889% #6 is just the usual extra ignored arg for parsing this stuff. | 5933 \fi 5934} 5935% 5936% Arguments to @image: 5937% #1 is (mandatory) image filename; we tack on .eps extension. 5938% #2 is (optional) width, #3 is (optional) height. 5939% #4 is (ignored optional) html alt text. 5940% #5 is (ignored optional) extension. 5941% #6 is just the usual extra ignored arg for parsing this stuff. |
5890\def\imagexxx#1,#2,#3,#4,#5,#6\finish{% | 5942\newif\ifimagevmode 5943\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup 5944 \catcode`\^^M = 5 % in case we're inside an example 5945 \normalturnoffactive % allow _ et al. in names 5946 % If the image is by itself, center it. 5947 \ifvmode 5948 \imagevmodetrue 5949 \nobreak\bigskip 5950 % Usually we'll have text after the image which will insert 5951 % \parskip glue, so insert it here too to equalize the space 5952 % above and below. 5953 \nobreak\vskip\parskip 5954 \nobreak 5955 \line\bgroup\hss 5956 \fi 5957 % 5958 % Output the image. |
5891 \ifpdf | 5959 \ifpdf |
5892 \centerline{\dopdfimage{#1}{#2}{#3}}% | 5960 \dopdfimage{#1}{#2}{#3}% |
5893 \else 5894 % \epsfbox itself resets \epsf?size at each figure. 5895 \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi 5896 \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi | 5961 \else 5962 % \epsfbox itself resets \epsf?size at each figure. 5963 \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi 5964 \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi |
5897 \begingroup 5898 \catcode`\^^M = 5 % in case we're inside an example 5899 \normalturnoffactive % allow _ et al. in names 5900 % If the image is by itself, center it. 5901 \ifvmode 5902 \nobreak\bigskip 5903 % Usually we'll have text after the image which will insert 5904 % \parskip glue, so insert it here too to equalize the space 5905 % above and below. 5906 \nobreak\vskip\parskip 5907 \nobreak 5908 \centerline{\epsfbox{#1.eps}}% 5909 \bigbreak 5910 \else 5911 % In the middle of a paragraph, no extra space. 5912 \epsfbox{#1.eps}% 5913 \fi 5914 \endgroup | 5965 \epsfbox{#1.eps}% |
5915 \fi | 5966 \fi |
5916} | 5967 % 5968 \ifimagevmode \hss \egroup \bigbreak \fi % space after the image 5969\endgroup} |
5917 5918 5919\message{localization,} 5920% and i18n. 5921 5922% @documentlanguage is usually given very early, just after 5923% @setfilename. If done too late, it may not override everything 5924% properly. Single argument is the language abbreviation. --- 153 unchanged lines hidden (view full) --- 6078 6079% A specific text layout, 24x15cm overall, intended for A4 paper. Top margin 6080% 29mm, hence bottom margin 28mm, nominal side margin 3cm. 6081\def\afourlatex{{\globaldefs = 1 6082 \textleading = 13.6pt 6083 % 6084 \afourpaper 6085 \internalpagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}% | 5970 5971 5972\message{localization,} 5973% and i18n. 5974 5975% @documentlanguage is usually given very early, just after 5976% @setfilename. If done too late, it may not override everything 5977% properly. Single argument is the language abbreviation. --- 153 unchanged lines hidden (view full) --- 6131 6132% A specific text layout, 24x15cm overall, intended for A4 paper. Top margin 6133% 29mm, hence bottom margin 28mm, nominal side margin 3cm. 6134\def\afourlatex{{\globaldefs = 1 6135 \textleading = 13.6pt 6136 % 6137 \afourpaper 6138 \internalpagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}% |
6139 % 6140 % Must explicitly reset to 0 because we call \afourpaper, apparently, 6141 % although this does not entirely make sense. 6142 \globaldefs = 0 |
|
6086}} 6087 6088% Use @afourwide to print on European A4 paper in wide format. 6089\def\afourwide{% 6090 \afourpaper 6091 \internalpagesizes{6.5in}{9.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}% 6092} 6093 --- 33 unchanged lines hidden (view full) --- 6127\def\normaldoublequote{"} 6128\def\normaltilde{~} 6129\def\normalcaret{^} 6130\def\normalunderscore{_} 6131\def\normalverticalbar{|} 6132\def\normalless{<} 6133\def\normalgreater{>} 6134\def\normalplus{+} | 6143}} 6144 6145% Use @afourwide to print on European A4 paper in wide format. 6146\def\afourwide{% 6147 \afourpaper 6148 \internalpagesizes{6.5in}{9.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}% 6149} 6150 --- 33 unchanged lines hidden (view full) --- 6184\def\normaldoublequote{"} 6185\def\normaltilde{~} 6186\def\normalcaret{^} 6187\def\normalunderscore{_} 6188\def\normalverticalbar{|} 6189\def\normalless{<} 6190\def\normalgreater{>} 6191\def\normalplus{+} |
6135\def\normaldollar{$} | 6192\def\normaldollar{$}%$ font-lock fix |
6136 6137% This macro is used to make a character print one way in ttfont 6138% where it can probably just be output, and another way in other fonts, 6139% where something hairier probably needs to be done. 6140% 6141% #1 is what to print if we are indeed using \tt; #2 is what to print 6142% otherwise. Since all the Computer Modern typewriter fonts have zero 6143% interword stretch (and shrink), and it is reasonable to expect all --- 32 unchanged lines hidden (view full) --- 6176\catcode`\<=\active 6177\def<{{\tt \less}} 6178\chardef \gtr=`\> 6179\catcode`\>=\active 6180\def>{{\tt \gtr}} 6181\catcode`\+=\active 6182\def+{{\tt \char 43}} 6183\catcode`\$=\active | 6193 6194% This macro is used to make a character print one way in ttfont 6195% where it can probably just be output, and another way in other fonts, 6196% where something hairier probably needs to be done. 6197% 6198% #1 is what to print if we are indeed using \tt; #2 is what to print 6199% otherwise. Since all the Computer Modern typewriter fonts have zero 6200% interword stretch (and shrink), and it is reasonable to expect all --- 32 unchanged lines hidden (view full) --- 6233\catcode`\<=\active 6234\def<{{\tt \less}} 6235\chardef \gtr=`\> 6236\catcode`\>=\active 6237\def>{{\tt \gtr}} 6238\catcode`\+=\active 6239\def+{{\tt \char 43}} 6240\catcode`\$=\active |
6184\def${\ifusingit{{\sl\$}}\normaldollar} | 6241\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix |
6185%\catcode 27=\active 6186%\def^^[{$\diamondsuit$} 6187 6188% Set up an active definition for =, but don't enable it most of the time. 6189{\catcode`\==\active 6190\global\def={{\tt \char 61}}} 6191 6192\catcode`+=\active --- 28 unchanged lines hidden (view full) --- 6221@let\=@realbackslash 6222@let~=@normaltilde 6223@let^=@normalcaret 6224@let_=@normalunderscore 6225@let|=@normalverticalbar 6226@let<=@normalless 6227@let>=@normalgreater 6228@let+=@normalplus | 6242%\catcode 27=\active 6243%\def^^[{$\diamondsuit$} 6244 6245% Set up an active definition for =, but don't enable it most of the time. 6246{\catcode`\==\active 6247\global\def={{\tt \char 61}}} 6248 6249\catcode`+=\active --- 28 unchanged lines hidden (view full) --- 6278@let\=@realbackslash 6279@let~=@normaltilde 6280@let^=@normalcaret 6281@let_=@normalunderscore 6282@let|=@normalverticalbar 6283@let<=@normalless 6284@let>=@normalgreater 6285@let+=@normalplus |
6229@let$=@normaldollar} | 6286@let$=@normaldollar}%$ font-lock fix |
6230 6231@def@normalturnoffactive{@let"=@normaldoublequote 6232@let\=@normalbackslash 6233@let~=@normaltilde 6234@let^=@normalcaret 6235@let_=@normalunderscore 6236@let|=@normalverticalbar 6237@let<=@normalless 6238@let>=@normalgreater 6239@let+=@normalplus | 6287 6288@def@normalturnoffactive{@let"=@normaldoublequote 6289@let\=@normalbackslash 6290@let~=@normaltilde 6291@let^=@normalcaret 6292@let_=@normalunderscore 6293@let|=@normalverticalbar 6294@let<=@normalless 6295@let>=@normalgreater 6296@let+=@normalplus |
6240@let$=@normaldollar} | 6297@let$=@normaldollar}%$ font-lock fix |
6241 6242% Make _ and + \other characters, temporarily. 6243% This is canceled by @fixbackslash. 6244@otherifyactive 6245 6246% If a .fmt file is being used, we don't want the `\input texinfo' to show up. 6247% That is what \eatinput is for; after that, the `\' should revert to printing 6248% a backslash. --- 36 unchanged lines hidden --- | 6298 6299% Make _ and + \other characters, temporarily. 6300% This is canceled by @fixbackslash. 6301@otherifyactive 6302 6303% If a .fmt file is being used, we don't want the `\input texinfo' to show up. 6304% That is what \eatinput is for; after that, the `\' should revert to printing 6305% a backslash. --- 36 unchanged lines hidden --- |