diff options
| author | Paul Eggert | 2011-01-07 11:49:15 -0800 |
|---|---|---|
| committer | Paul Eggert | 2011-01-07 11:49:15 -0800 |
| commit | f56e0e7a85978026b611bc8f28bdb91d7f8130d4 (patch) | |
| tree | 0e1c15bcf587ba15b953b5f67f566f04b69bfa4b | |
| parent | bc5585d187f453d52329ad923f266f92aedda29e (diff) | |
| download | emacs-f56e0e7a85978026b611bc8f28bdb91d7f8130d4.tar.gz emacs-f56e0e7a85978026b611bc8f28bdb91d7f8130d4.zip | |
* texinfo.tex: Update to version 2010-12-23.17 from gnulib,
which in turn is copied from ftp://tug.org/tex/.
| -rw-r--r-- | doc/misc/ChangeLog | 5 | ||||
| -rw-r--r-- | doc/misc/texinfo.tex | 828 |
2 files changed, 477 insertions, 356 deletions
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index fb8c5d723ca..1acf8b0bbda 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2011-01-07 Paul Eggert <eggert@cs.ucla.edu> | ||
| 2 | |||
| 3 | * texinfo.tex: Update to version 2010-12-23.17 from gnulib, | ||
| 4 | which in turn is copied from ftp://tug.org/tex/. | ||
| 5 | |||
| 1 | 2011-01-04 Jan Moringen <jan.moringen@uni-bielefeld.de> | 6 | 2011-01-04 Jan Moringen <jan.moringen@uni-bielefeld.de> |
| 2 | 7 | ||
| 3 | * dbus.texi (Receiving Method Calls): Describe new optional | 8 | * dbus.texi (Receiving Method Calls): Describe new optional |
diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex index 91408263bc9..1130b8fc56c 100644 --- a/doc/misc/texinfo.tex +++ b/doc/misc/texinfo.tex | |||
| @@ -3,11 +3,11 @@ | |||
| 3 | % Load plain if necessary, i.e., if running under initex. | 3 | % Load plain if necessary, i.e., if running under initex. |
| 4 | \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi | 4 | \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi |
| 5 | % | 5 | % |
| 6 | \def\texinfoversion{2009-08-14.15} | 6 | \def\texinfoversion{2010-12-23.17} |
| 7 | % | 7 | % |
| 8 | % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, | 8 | % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, |
| 9 | % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, | 9 | % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, |
| 10 | % 2007, 2008, 2009 Free Software Foundation, Inc. | 10 | % 2007, 2008, 2009, 2010 Free Software Foundation, Inc. |
| 11 | % | 11 | % |
| 12 | % This texinfo.tex file is free software: you can redistribute it and/or | 12 | % This texinfo.tex file is free software: you can redistribute it and/or |
| 13 | % modify it under the terms of the GNU General Public License as | 13 | % modify it under the terms of the GNU General Public License as |
| @@ -65,7 +65,6 @@ | |||
| 65 | \everyjob{\message{[Texinfo version \texinfoversion]}% | 65 | \everyjob{\message{[Texinfo version \texinfoversion]}% |
| 66 | \catcode`+=\active \catcode`\_=\active} | 66 | \catcode`+=\active \catcode`\_=\active} |
| 67 | 67 | ||
| 68 | |||
| 69 | \chardef\other=12 | 68 | \chardef\other=12 |
| 70 | 69 | ||
| 71 | % We never want plain's \outer definition of \+ in Texinfo. | 70 | % We never want plain's \outer definition of \+ in Texinfo. |
| @@ -93,14 +92,13 @@ | |||
| 93 | \let\ptexnewwrite\newwrite | 92 | \let\ptexnewwrite\newwrite |
| 94 | \let\ptexnoindent=\noindent | 93 | \let\ptexnoindent=\noindent |
| 95 | \let\ptexplus=+ | 94 | \let\ptexplus=+ |
| 95 | \let\ptexraggedright=\raggedright | ||
| 96 | \let\ptexrbrace=\} | 96 | \let\ptexrbrace=\} |
| 97 | \let\ptexslash=\/ | 97 | \let\ptexslash=\/ |
| 98 | \let\ptexstar=\* | 98 | \let\ptexstar=\* |
| 99 | \let\ptext=\t | 99 | \let\ptext=\t |
| 100 | \let\ptextop=\top | 100 | \let\ptextop=\top |
| 101 | {\catcode`\'=\active | 101 | {\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode |
| 102 | \global\let\ptexquoteright'}% Math-mode def from plain.tex. | ||
| 103 | \let\ptexraggedright=\raggedright | ||
| 104 | 102 | ||
| 105 | % If this character appears in an error message or help string, it | 103 | % If this character appears in an error message or help string, it |
| 106 | % starts a new line in the output. | 104 | % starts a new line in the output. |
| @@ -199,36 +197,7 @@ | |||
| 199 | % that mark overfull boxes (in case you have decided | 197 | % that mark overfull boxes (in case you have decided |
| 200 | % that the text looks ok even though it passes the margin). | 198 | % that the text looks ok even though it passes the margin). |
| 201 | % | 199 | % |
| 202 | \def\finalout{\overfullrule=0pt} | 200 | \def\finalout{\overfullrule=0pt } |
| 203 | |||
| 204 | % @| inserts a changebar to the left of the current line. It should | ||
| 205 | % surround any changed text. This approach does *not* work if the | ||
| 206 | % change spans more than two lines of output. To handle that, we would | ||
| 207 | % have adopt a much more difficult approach (putting marks into the main | ||
| 208 | % vertical list for the beginning and end of each change). | ||
| 209 | % | ||
| 210 | \def\|{% | ||
| 211 | % \vadjust can only be used in horizontal mode. | ||
| 212 | \leavevmode | ||
| 213 | % | ||
| 214 | % Append this vertical mode material after the current line in the output. | ||
| 215 | \vadjust{% | ||
| 216 | % We want to insert a rule with the height and depth of the current | ||
| 217 | % leading; that is exactly what \strutbox is supposed to record. | ||
| 218 | \vskip-\baselineskip | ||
| 219 | % | ||
| 220 | % \vadjust-items are inserted at the left edge of the type. So | ||
| 221 | % the \llap here moves out into the left-hand margin. | ||
| 222 | \llap{% | ||
| 223 | % | ||
| 224 | % For a thicker or thinner bar, change the `1pt'. | ||
| 225 | \vrule height\baselineskip width1pt | ||
| 226 | % | ||
| 227 | % This is the space between the bar and the text. | ||
| 228 | \hskip 12pt | ||
| 229 | }% | ||
| 230 | }% | ||
| 231 | } | ||
| 232 | 201 | ||
| 233 | % Sometimes it is convenient to have everything in the transcript file | 202 | % Sometimes it is convenient to have everything in the transcript file |
| 234 | % and nothing on the terminal. We don't just call \tracingall here, | 203 | % and nothing on the terminal. We don't just call \tracingall here, |
| @@ -267,7 +236,6 @@ | |||
| 267 | \def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount | 236 | \def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount |
| 268 | \removelastskip\penalty-200\bigskip\fi\fi} | 237 | \removelastskip\penalty-200\bigskip\fi\fi} |
| 269 | 238 | ||
| 270 | % For @cropmarks command. | ||
| 271 | % Do @cropmarks to get crop marks. | 239 | % Do @cropmarks to get crop marks. |
| 272 | % | 240 | % |
| 273 | \newif\ifcropmarks | 241 | \newif\ifcropmarks |
| @@ -599,85 +567,6 @@ | |||
| 599 | \newhelp\EMsimple{Press RETURN to continue.} | 567 | \newhelp\EMsimple{Press RETURN to continue.} |
| 600 | 568 | ||
| 601 | 569 | ||
| 602 | %% Simple single-character @ commands | ||
| 603 | |||
| 604 | % @@ prints an @ | ||
| 605 | % Kludge this until the fonts are right (grr). | ||
| 606 | \def\@{{\tt\char64}} | ||
| 607 | |||
| 608 | % This is turned off because it was never documented | ||
| 609 | % and you can use @w{...} around a quote to suppress ligatures. | ||
| 610 | %% Define @` and @' to be the same as ` and ' | ||
| 611 | %% but suppressing ligatures. | ||
| 612 | %\def\`{{`}} | ||
| 613 | %\def\'{{'}} | ||
| 614 | |||
| 615 | % Used to generate quoted braces. | ||
| 616 | \def\mylbrace {{\tt\char123}} | ||
| 617 | \def\myrbrace {{\tt\char125}} | ||
| 618 | \let\{=\mylbrace | ||
| 619 | \let\}=\myrbrace | ||
| 620 | \begingroup | ||
| 621 | % Definitions to produce \{ and \} commands for indices, | ||
| 622 | % and @{ and @} for the aux/toc files. | ||
| 623 | \catcode`\{ = \other \catcode`\} = \other | ||
| 624 | \catcode`\[ = 1 \catcode`\] = 2 | ||
| 625 | \catcode`\! = 0 \catcode`\\ = \other | ||
| 626 | !gdef!lbracecmd[\{]% | ||
| 627 | !gdef!rbracecmd[\}]% | ||
| 628 | !gdef!lbraceatcmd[@{]% | ||
| 629 | !gdef!rbraceatcmd[@}]% | ||
| 630 | !endgroup | ||
| 631 | |||
| 632 | % @comma{} to avoid , parsing problems. | ||
| 633 | \let\comma = , | ||
| 634 | |||
| 635 | % Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent | ||
| 636 | % Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. | ||
| 637 | \let\, = \c | ||
| 638 | \let\dotaccent = \. | ||
| 639 | \def\ringaccent#1{{\accent23 #1}} | ||
| 640 | \let\tieaccent = \t | ||
| 641 | \let\ubaraccent = \b | ||
| 642 | \let\udotaccent = \d | ||
| 643 | |||
| 644 | % Other special characters: @questiondown @exclamdown @ordf @ordm | ||
| 645 | % Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. | ||
| 646 | \def\questiondown{?`} | ||
| 647 | \def\exclamdown{!`} | ||
| 648 | \def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}} | ||
| 649 | \def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}} | ||
| 650 | |||
| 651 | % Dotless i and dotless j, used for accents. | ||
| 652 | \def\imacro{i} | ||
| 653 | \def\jmacro{j} | ||
| 654 | \def\dotless#1{% | ||
| 655 | \def\temp{#1}% | ||
| 656 | \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi | ||
| 657 | \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi | ||
| 658 | \else \errmessage{@dotless can be used only with i or j}% | ||
| 659 | \fi\fi | ||
| 660 | } | ||
| 661 | |||
| 662 | % The \TeX{} logo, as in plain, but resetting the spacing so that a | ||
| 663 | % period following counts as ending a sentence. (Idea found in latex.) | ||
| 664 | % | ||
| 665 | \edef\TeX{\TeX \spacefactor=1000 } | ||
| 666 | |||
| 667 | % @LaTeX{} logo. Not quite the same results as the definition in | ||
| 668 | % latex.ltx, since we use a different font for the raised A; it's most | ||
| 669 | % convenient for us to use an explicitly smaller font, rather than using | ||
| 670 | % the \scriptstyle font (since we don't reset \scriptstyle and | ||
| 671 | % \scriptscriptstyle). | ||
| 672 | % | ||
| 673 | \def\LaTeX{% | ||
| 674 | L\kern-.36em | ||
| 675 | {\setbox0=\hbox{T}% | ||
| 676 | \vbox to \ht0{\hbox{\selectfonts\lllsize A}\vss}}% | ||
| 677 | \kern-.15em | ||
| 678 | \TeX | ||
| 679 | } | ||
| 680 | |||
| 681 | % Be sure we're in horizontal mode when doing a tie, since we make space | 570 | % Be sure we're in horizontal mode when doing a tie, since we make space |
| 682 | % equivalent to this in @example-like environments. Otherwise, a space | 571 | % equivalent to this in @example-like environments. Otherwise, a space |
| 683 | % at the beginning of a line will start with \penalty -- and | 572 | % at the beginning of a line will start with \penalty -- and |
| @@ -873,7 +762,7 @@ where each line of input produces a line of output.} | |||
| 873 | 762 | ||
| 874 | % @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current | 763 | % @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current |
| 875 | % paragraph. For more general purposes, use the \margin insertion | 764 | % paragraph. For more general purposes, use the \margin insertion |
| 876 | % class. WHICH is `l' or `r'. | 765 | % class. WHICH is `l' or `r'. Not documented, written for gawk manual. |
| 877 | % | 766 | % |
| 878 | \newskip\inmarginspacing \inmarginspacing=1cm | 767 | \newskip\inmarginspacing \inmarginspacing=1cm |
| 879 | \def\strutdepth{\dp\strutbox} | 768 | \def\strutdepth{\dp\strutbox} |
| @@ -920,6 +809,36 @@ where each line of input produces a line of output.} | |||
| 920 | \temp | 809 | \temp |
| 921 | } | 810 | } |
| 922 | 811 | ||
| 812 | % @| inserts a changebar to the left of the current line. It should | ||
| 813 | % surround any changed text. This approach does *not* work if the | ||
| 814 | % change spans more than two lines of output. To handle that, we would | ||
| 815 | % have adopt a much more difficult approach (putting marks into the main | ||
| 816 | % vertical list for the beginning and end of each change). This command | ||
| 817 | % is not documented, not supported, and doesn't work. | ||
| 818 | % | ||
| 819 | \def\|{% | ||
| 820 | % \vadjust can only be used in horizontal mode. | ||
| 821 | \leavevmode | ||
| 822 | % | ||
| 823 | % Append this vertical mode material after the current line in the output. | ||
| 824 | \vadjust{% | ||
| 825 | % We want to insert a rule with the height and depth of the current | ||
| 826 | % leading; that is exactly what \strutbox is supposed to record. | ||
| 827 | \vskip-\baselineskip | ||
| 828 | % | ||
| 829 | % \vadjust-items are inserted at the left edge of the type. So | ||
| 830 | % the \llap here moves out into the left-hand margin. | ||
| 831 | \llap{% | ||
| 832 | % | ||
| 833 | % For a thicker or thinner bar, change the `1pt'. | ||
| 834 | \vrule height\baselineskip width1pt | ||
| 835 | % | ||
| 836 | % This is the space between the bar and the text. | ||
| 837 | \hskip 12pt | ||
| 838 | }% | ||
| 839 | }% | ||
| 840 | } | ||
| 841 | |||
| 923 | % @include FILE -- \input text of FILE. | 842 | % @include FILE -- \input text of FILE. |
| 924 | % | 843 | % |
| 925 | \def\include{\parseargusing\filenamecatcodes\includezzz} | 844 | \def\include{\parseargusing\filenamecatcodes\includezzz} |
| @@ -1095,109 +1014,6 @@ where each line of input produces a line of output.} | |||
| 1095 | } | 1014 | } |
| 1096 | 1015 | ||
| 1097 | 1016 | ||
| 1098 | % @asis just yields its argument. Used with @table, for example. | ||
| 1099 | % | ||
| 1100 | \def\asis#1{#1} | ||
| 1101 | |||
| 1102 | % @math outputs its argument in math mode. | ||
| 1103 | % | ||
| 1104 | % One complication: _ usually means subscripts, but it could also mean | ||
| 1105 | % an actual _ character, as in @math{@var{some_variable} + 1}. So make | ||
| 1106 | % _ active, and distinguish by seeing if the current family is \slfam, | ||
| 1107 | % which is what @var uses. | ||
| 1108 | { | ||
| 1109 | \catcode`\_ = \active | ||
| 1110 | \gdef\mathunderscore{% | ||
| 1111 | \catcode`\_=\active | ||
| 1112 | \def_{\ifnum\fam=\slfam \_\else\sb\fi}% | ||
| 1113 | } | ||
| 1114 | } | ||
| 1115 | % Another complication: we want \\ (and @\) to output a \ character. | ||
| 1116 | % FYI, plain.tex uses \\ as a temporary control sequence (why?), but | ||
| 1117 | % this is not advertised and we don't care. Texinfo does not | ||
| 1118 | % otherwise define @\. | ||
| 1119 | % | ||
| 1120 | % The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. | ||
| 1121 | \def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} | ||
| 1122 | % | ||
| 1123 | \def\math{% | ||
| 1124 | \tex | ||
| 1125 | \mathunderscore | ||
| 1126 | \let\\ = \mathbackslash | ||
| 1127 | \mathactive | ||
| 1128 | % make the texinfo accent commands work in math mode | ||
| 1129 | \let\"=\ddot | ||
| 1130 | \let\'=\acute | ||
| 1131 | \let\==\bar | ||
| 1132 | \let\^=\hat | ||
| 1133 | \let\`=\grave | ||
| 1134 | \let\u=\breve | ||
| 1135 | \let\v=\check | ||
| 1136 | \let\~=\tilde | ||
| 1137 | \let\dotaccent=\dot | ||
| 1138 | $\finishmath | ||
| 1139 | } | ||
| 1140 | \def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. | ||
| 1141 | |||
| 1142 | % Some active characters (such as <) are spaced differently in math. | ||
| 1143 | % We have to reset their definitions in case the @math was an argument | ||
| 1144 | % to a command which sets the catcodes (such as @item or @section). | ||
| 1145 | % | ||
| 1146 | { | ||
| 1147 | \catcode`^ = \active | ||
| 1148 | \catcode`< = \active | ||
| 1149 | \catcode`> = \active | ||
| 1150 | \catcode`+ = \active | ||
| 1151 | \catcode`' = \active | ||
| 1152 | \gdef\mathactive{% | ||
| 1153 | \let^ = \ptexhat | ||
| 1154 | \let< = \ptexless | ||
| 1155 | \let> = \ptexgtr | ||
| 1156 | \let+ = \ptexplus | ||
| 1157 | \let' = \ptexquoteright | ||
| 1158 | } | ||
| 1159 | } | ||
| 1160 | |||
| 1161 | % Some math mode symbols. | ||
| 1162 | \def\bullet{$\ptexbullet$} | ||
| 1163 | \def\geq{\ifmmode \ge\else $\ge$\fi} | ||
| 1164 | \def\leq{\ifmmode \le\else $\le$\fi} | ||
| 1165 | \def\minus{\ifmmode -\else $-$\fi} | ||
| 1166 | |||
| 1167 | % @dots{} outputs an ellipsis using the current font. | ||
| 1168 | % We do .5em per period so that it has the same spacing in the cm | ||
| 1169 | % typewriter fonts as three actual period characters; on the other hand, | ||
| 1170 | % in other typewriter fonts three periods are wider than 1.5em. So do | ||
| 1171 | % whichever is larger. | ||
| 1172 | % | ||
| 1173 | \def\dots{% | ||
| 1174 | \leavevmode | ||
| 1175 | \setbox0=\hbox{...}% get width of three periods | ||
| 1176 | \ifdim\wd0 > 1.5em | ||
| 1177 | \dimen0 = \wd0 | ||
| 1178 | \else | ||
| 1179 | \dimen0 = 1.5em | ||
| 1180 | \fi | ||
| 1181 | \hbox to \dimen0{% | ||
| 1182 | \hskip 0pt plus.25fil | ||
| 1183 | .\hskip 0pt plus1fil | ||
| 1184 | .\hskip 0pt plus1fil | ||
| 1185 | .\hskip 0pt plus.5fil | ||
| 1186 | }% | ||
| 1187 | } | ||
| 1188 | |||
| 1189 | % @enddots{} is an end-of-sentence ellipsis. | ||
| 1190 | % | ||
| 1191 | \def\enddots{% | ||
| 1192 | \dots | ||
| 1193 | \spacefactor=\endofsentencespacefactor | ||
| 1194 | } | ||
| 1195 | |||
| 1196 | % @comma{} is so commas can be inserted into text without messing up | ||
| 1197 | % Texinfo's parsing. | ||
| 1198 | % | ||
| 1199 | \let\comma = , | ||
| 1200 | |||
| 1201 | % @refill is a no-op. | 1017 | % @refill is a no-op. |
| 1202 | \let\refill=\relax | 1018 | \let\refill=\relax |
| 1203 | 1019 | ||
| @@ -1492,6 +1308,7 @@ output) for that.)} | |||
| 1492 | \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace | 1308 | \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace |
| 1493 | % | 1309 | % |
| 1494 | % Read toc silently, to get counts of subentries for \pdfoutline. | 1310 | % Read toc silently, to get counts of subentries for \pdfoutline. |
| 1311 | \def\partentry##1##2##3##4{}% ignore parts in the outlines | ||
| 1495 | \def\numchapentry##1##2##3##4{% | 1312 | \def\numchapentry##1##2##3##4{% |
| 1496 | \def\thischapnum{##2}% | 1313 | \def\thischapnum{##2}% |
| 1497 | \def\thissecnum{0}% | 1314 | \def\thissecnum{0}% |
| @@ -2105,8 +1922,8 @@ end | |||
| 2105 | \font\reducedsy=cmsy10 | 1922 | \font\reducedsy=cmsy10 |
| 2106 | \def\reducedecsize{1000} | 1923 | \def\reducedecsize{1000} |
| 2107 | 1924 | ||
| 2108 | % reset the current fonts | 1925 | \textleading = 13.2pt % line spacing for 11pt CM |
| 2109 | \textfonts | 1926 | \textfonts % reset the current fonts |
| 2110 | \rm | 1927 | \rm |
| 2111 | } % end of 11pt text font size definitions | 1928 | } % end of 11pt text font size definitions |
| 2112 | 1929 | ||
| @@ -2236,11 +2053,9 @@ end | |||
| 2236 | \font\reducedsy=cmsy9 | 2053 | \font\reducedsy=cmsy9 |
| 2237 | \def\reducedecsize{0900} | 2054 | \def\reducedecsize{0900} |
| 2238 | 2055 | ||
| 2239 | % reduce space between paragraphs | 2056 | \divide\parskip by 2 % reduce space between paragraphs |
| 2240 | \divide\parskip by 2 | 2057 | \textleading = 12pt % line spacing for 10pt CM |
| 2241 | 2058 | \textfonts % reset the current fonts | |
| 2242 | % reset the current fonts | ||
| 2243 | \textfonts | ||
| 2244 | \rm | 2059 | \rm |
| 2245 | } % end of 10pt text font size definitions | 2060 | } % end of 10pt text font size definitions |
| 2246 | 2061 | ||
| @@ -2249,8 +2064,9 @@ end | |||
| 2249 | % @fonttextsize 10 | 2064 | % @fonttextsize 10 |
| 2250 | % (or 11) to redefine the text font size. pt is assumed. | 2065 | % (or 11) to redefine the text font size. pt is assumed. |
| 2251 | % | 2066 | % |
| 2252 | \def\xword{10} | ||
| 2253 | \def\xiword{11} | 2067 | \def\xiword{11} |
| 2068 | \def\xword{10} | ||
| 2069 | \def\xwordpt{10pt} | ||
| 2254 | % | 2070 | % |
| 2255 | \parseargdef\fonttextsize{% | 2071 | \parseargdef\fonttextsize{% |
| 2256 | \def\textsizearg{#1}% | 2072 | \def\textsizearg{#1}% |
| @@ -2308,7 +2124,7 @@ end | |||
| 2308 | \let\tenttsl=\titlettsl | 2124 | \let\tenttsl=\titlettsl |
| 2309 | \def\curfontsize{title}% | 2125 | \def\curfontsize{title}% |
| 2310 | \def\lsize{chap}\def\lllsize{subsec}% | 2126 | \def\lsize{chap}\def\lllsize{subsec}% |
| 2311 | \resetmathfonts \setleading{25pt}} | 2127 | \resetmathfonts \setleading{27pt}} |
| 2312 | \def\titlefont#1{{\titlefonts\rmisbold #1}} | 2128 | \def\titlefont#1{{\titlefonts\rmisbold #1}} |
| 2313 | \def\chapfonts{% | 2129 | \def\chapfonts{% |
| 2314 | \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl | 2130 | \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl |
| @@ -2460,14 +2276,19 @@ end | |||
| 2460 | 2276 | ||
| 2461 | \let\markupsetuplqcode \markupsetcodequoteleft | 2277 | \let\markupsetuplqcode \markupsetcodequoteleft |
| 2462 | \let\markupsetuprqcode \markupsetcodequoteright | 2278 | \let\markupsetuprqcode \markupsetcodequoteright |
| 2279 | % | ||
| 2463 | \let\markupsetuplqexample \markupsetcodequoteleft | 2280 | \let\markupsetuplqexample \markupsetcodequoteleft |
| 2464 | \let\markupsetuprqexample \markupsetcodequoteright | 2281 | \let\markupsetuprqexample \markupsetcodequoteright |
| 2282 | % | ||
| 2283 | \let\markupsetuplqsamp \markupsetcodequoteleft | ||
| 2284 | \let\markupsetuprqsamp \markupsetcodequoteright | ||
| 2285 | % | ||
| 2465 | \let\markupsetuplqverb \markupsetcodequoteleft | 2286 | \let\markupsetuplqverb \markupsetcodequoteleft |
| 2466 | \let\markupsetuprqverb \markupsetcodequoteright | 2287 | \let\markupsetuprqverb \markupsetcodequoteright |
| 2288 | % | ||
| 2467 | \let\markupsetuplqverbatim \markupsetcodequoteleft | 2289 | \let\markupsetuplqverbatim \markupsetcodequoteleft |
| 2468 | \let\markupsetuprqverbatim \markupsetcodequoteright | 2290 | \let\markupsetuprqverbatim \markupsetcodequoteright |
| 2469 | 2291 | ||
| 2470 | \let\markupsetuplqsamp \markupsetnoligaturesquoteleft | ||
| 2471 | \let\markupsetuplqkbd \markupsetnoligaturesquoteleft | 2292 | \let\markupsetuplqkbd \markupsetnoligaturesquoteleft |
| 2472 | 2293 | ||
| 2473 | % Allow an option to not replace quotes with a regular directed right | 2294 | % Allow an option to not replace quotes with a regular directed right |
| @@ -2505,27 +2326,40 @@ end | |||
| 2505 | % Count depth in font-changes, for error checks | 2326 | % Count depth in font-changes, for error checks |
| 2506 | \newcount\fontdepth \fontdepth=0 | 2327 | \newcount\fontdepth \fontdepth=0 |
| 2507 | 2328 | ||
| 2508 | %% Add scribe-like font environments, plus @l for inline lisp (usually sans | 2329 | % Font commands. |
| 2509 | %% serif) and @ii for TeX italic | 2330 | |
| 2331 | % #1 is the font command (\sl or \it), #2 is the text to slant. | ||
| 2332 | % If we are in a monospaced environment, however, 1) always use \ttsl, | ||
| 2333 | % and 2) do not add an italic correction. | ||
| 2334 | \def\dosmartslant#1#2{% | ||
| 2335 | \ifusingtt | ||
| 2336 | {{\ttsl #2}\let\next=\relax}% | ||
| 2337 | {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}% | ||
| 2338 | \next | ||
| 2339 | } | ||
| 2340 | \def\smartslanted{\dosmartslant\sl} | ||
| 2341 | \def\smartitalic{\dosmartslant\it} | ||
| 2510 | 2342 | ||
| 2511 | % \smartitalic{ARG} outputs arg in italics, followed by an italic correction | 2343 | % Output an italic correction unless \next (presumed to be the following |
| 2512 | % unless the following character is such as not to need one. | 2344 | % character) is such as not to need one. |
| 2513 | \def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else | 2345 | \def\smartitaliccorrection{% |
| 2514 | \ptexslash\fi\fi\fi} | 2346 | \ifx\next,% |
| 2515 | \def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx} | 2347 | \else\ifx\next-% |
| 2516 | \def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx} | 2348 | \else\ifx\next.% |
| 2349 | \else\ptexslash | ||
| 2350 | \fi\fi\fi} | ||
| 2517 | 2351 | ||
| 2518 | % like \smartslanted except unconditionally uses \ttsl. | 2352 | % like \smartslanted except unconditionally uses \ttsl, and no ic. |
| 2519 | % @var is set to this for defun arguments. | 2353 | % @var is set to this for defun arguments. |
| 2520 | \def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx} | 2354 | \def\ttslanted#1{{\ttsl #1}} |
| 2521 | 2355 | ||
| 2522 | % @cite is like \smartslanted except unconditionally use \sl. We never want | 2356 | % @cite is like \smartslanted except unconditionally use \sl. We never want |
| 2523 | % ttsl for book titles, do we? | 2357 | % ttsl for book titles, do we? |
| 2524 | \def\cite#1{{\sl #1}\futurelet\next\smartitalicx} | 2358 | \def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection} |
| 2525 | 2359 | ||
| 2526 | \let\i=\smartitalic | 2360 | \let\i=\smartitalic |
| 2527 | \let\slanted=\smartslanted | 2361 | \let\slanted=\smartslanted |
| 2528 | \def\var#1{{\setupmarkupstyle{var}\smartslanted{#1}}} | 2362 | \def\var#1{\smartslanted{#1}} |
| 2529 | \let\dfn=\smartslanted | 2363 | \let\dfn=\smartslanted |
| 2530 | \let\emph=\smartitalic | 2364 | \let\emph=\smartitalic |
| 2531 | 2365 | ||
| @@ -2819,8 +2653,188 @@ end | |||
| 2819 | \fi | 2653 | \fi |
| 2820 | } | 2654 | } |
| 2821 | 2655 | ||
| 2656 | % @asis just yields its argument. Used with @table, for example. | ||
| 2657 | % | ||
| 2658 | \def\asis#1{#1} | ||
| 2659 | |||
| 2660 | % @math outputs its argument in math mode. | ||
| 2661 | % | ||
| 2662 | % One complication: _ usually means subscripts, but it could also mean | ||
| 2663 | % an actual _ character, as in @math{@var{some_variable} + 1}. So make | ||
| 2664 | % _ active, and distinguish by seeing if the current family is \slfam, | ||
| 2665 | % which is what @var uses. | ||
| 2666 | { | ||
| 2667 | \catcode`\_ = \active | ||
| 2668 | \gdef\mathunderscore{% | ||
| 2669 | \catcode`\_=\active | ||
| 2670 | \def_{\ifnum\fam=\slfam \_\else\sb\fi}% | ||
| 2671 | } | ||
| 2672 | } | ||
| 2673 | % Another complication: we want \\ (and @\) to output a math (or tt) \. | ||
| 2674 | % FYI, plain.tex uses \\ as a temporary control sequence (for no | ||
| 2675 | % particular reason), but this is not advertised and we don't care. | ||
| 2676 | % | ||
| 2677 | % The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. | ||
| 2678 | \def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} | ||
| 2679 | % | ||
| 2680 | \def\math{% | ||
| 2681 | \tex | ||
| 2682 | \mathunderscore | ||
| 2683 | \let\\ = \mathbackslash | ||
| 2684 | \mathactive | ||
| 2685 | % make the texinfo accent commands work in math mode | ||
| 2686 | \let\"=\ddot | ||
| 2687 | \let\'=\acute | ||
| 2688 | \let\==\bar | ||
| 2689 | \let\^=\hat | ||
| 2690 | \let\`=\grave | ||
| 2691 | \let\u=\breve | ||
| 2692 | \let\v=\check | ||
| 2693 | \let\~=\tilde | ||
| 2694 | \let\dotaccent=\dot | ||
| 2695 | $\finishmath | ||
| 2696 | } | ||
| 2697 | \def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. | ||
| 2698 | |||
| 2699 | % Some active characters (such as <) are spaced differently in math. | ||
| 2700 | % We have to reset their definitions in case the @math was an argument | ||
| 2701 | % to a command which sets the catcodes (such as @item or @section). | ||
| 2702 | % | ||
| 2703 | { | ||
| 2704 | \catcode`^ = \active | ||
| 2705 | \catcode`< = \active | ||
| 2706 | \catcode`> = \active | ||
| 2707 | \catcode`+ = \active | ||
| 2708 | \catcode`' = \active | ||
| 2709 | \gdef\mathactive{% | ||
| 2710 | \let^ = \ptexhat | ||
| 2711 | \let< = \ptexless | ||
| 2712 | \let> = \ptexgtr | ||
| 2713 | \let+ = \ptexplus | ||
| 2714 | \let' = \ptexquoteright | ||
| 2715 | } | ||
| 2716 | } | ||
| 2717 | |||
| 2822 | 2718 | ||
| 2823 | \message{glyphs,} | 2719 | \message{glyphs,} |
| 2720 | % and logos. | ||
| 2721 | |||
| 2722 | % @@ prints an @. | ||
| 2723 | \def\@{\char64 } | ||
| 2724 | |||
| 2725 | % Used to generate quoted braces. Unless we're in typewriter, use | ||
| 2726 | % \ecfont because the CM text fonts do not have braces, and we don't | ||
| 2727 | % want to switch into math. | ||
| 2728 | \def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}} | ||
| 2729 | \def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}} | ||
| 2730 | \let\{=\mylbrace | ||
| 2731 | \let\}=\myrbrace | ||
| 2732 | \begingroup | ||
| 2733 | % Definitions to produce \{ and \} commands for indices, | ||
| 2734 | % and @{ and @} for the aux/toc files. | ||
| 2735 | \catcode`\{ = \other \catcode`\} = \other | ||
| 2736 | \catcode`\[ = 1 \catcode`\] = 2 | ||
| 2737 | \catcode`\! = 0 \catcode`\\ = \other | ||
| 2738 | !gdef!lbracecmd[\{]% | ||
| 2739 | !gdef!rbracecmd[\}]% | ||
| 2740 | !gdef!lbraceatcmd[@{]% | ||
| 2741 | !gdef!rbraceatcmd[@}]% | ||
| 2742 | !endgroup | ||
| 2743 | |||
| 2744 | % @comma{} to avoid , parsing problems. | ||
| 2745 | \let\comma = , | ||
| 2746 | |||
| 2747 | % Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent | ||
| 2748 | % Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. | ||
| 2749 | \let\, = \ptexc | ||
| 2750 | \let\dotaccent = \ptexdot | ||
| 2751 | \def\ringaccent#1{{\accent23 #1}} | ||
| 2752 | \let\tieaccent = \ptext | ||
| 2753 | \let\ubaraccent = \ptexb | ||
| 2754 | \let\udotaccent = \d | ||
| 2755 | |||
| 2756 | % Other special characters: @questiondown @exclamdown @ordf @ordm | ||
| 2757 | % Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. | ||
| 2758 | \def\questiondown{?`} | ||
| 2759 | \def\exclamdown{!`} | ||
| 2760 | \def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}} | ||
| 2761 | \def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}} | ||
| 2762 | |||
| 2763 | % Dotless i and dotless j, used for accents. | ||
| 2764 | \def\imacro{i} | ||
| 2765 | \def\jmacro{j} | ||
| 2766 | \def\dotless#1{% | ||
| 2767 | \def\temp{#1}% | ||
| 2768 | \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi | ||
| 2769 | \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi | ||
| 2770 | \else \errmessage{@dotless can be used only with i or j}% | ||
| 2771 | \fi\fi | ||
| 2772 | } | ||
| 2773 | |||
| 2774 | % The \TeX{} logo, as in plain, but resetting the spacing so that a | ||
| 2775 | % period following counts as ending a sentence. (Idea found in latex.) | ||
| 2776 | % | ||
| 2777 | \edef\TeX{\TeX \spacefactor=1000 } | ||
| 2778 | |||
| 2779 | % @LaTeX{} logo. Not quite the same results as the definition in | ||
| 2780 | % latex.ltx, since we use a different font for the raised A; it's most | ||
| 2781 | % convenient for us to use an explicitly smaller font, rather than using | ||
| 2782 | % the \scriptstyle font (since we don't reset \scriptstyle and | ||
| 2783 | % \scriptscriptstyle). | ||
| 2784 | % | ||
| 2785 | \def\LaTeX{% | ||
| 2786 | L\kern-.36em | ||
| 2787 | {\setbox0=\hbox{T}% | ||
| 2788 | \vbox to \ht0{\hbox{% | ||
| 2789 | \ifx\textnominalsize\xwordpt | ||
| 2790 | % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX. | ||
| 2791 | % Revert to plain's \scriptsize, which is 7pt. | ||
| 2792 | \count255=\the\fam $\fam\count255 \scriptstyle A$% | ||
| 2793 | \else | ||
| 2794 | % For 11pt, we can use our lllsize. | ||
| 2795 | \selectfonts\lllsize A% | ||
| 2796 | \fi | ||
| 2797 | }% | ||
| 2798 | \vss | ||
| 2799 | }}% | ||
| 2800 | \kern-.15em | ||
| 2801 | \TeX | ||
| 2802 | } | ||
| 2803 | |||
| 2804 | % Some math mode symbols. | ||
| 2805 | \def\bullet{$\ptexbullet$} | ||
| 2806 | \def\geq{\ifmmode \ge\else $\ge$\fi} | ||
| 2807 | \def\leq{\ifmmode \le\else $\le$\fi} | ||
| 2808 | \def\minus{\ifmmode -\else $-$\fi} | ||
| 2809 | |||
| 2810 | % @dots{} outputs an ellipsis using the current font. | ||
| 2811 | % We do .5em per period so that it has the same spacing in the cm | ||
| 2812 | % typewriter fonts as three actual period characters; on the other hand, | ||
| 2813 | % in other typewriter fonts three periods are wider than 1.5em. So do | ||
| 2814 | % whichever is larger. | ||
| 2815 | % | ||
| 2816 | \def\dots{% | ||
| 2817 | \leavevmode | ||
| 2818 | \setbox0=\hbox{...}% get width of three periods | ||
| 2819 | \ifdim\wd0 > 1.5em | ||
| 2820 | \dimen0 = \wd0 | ||
| 2821 | \else | ||
| 2822 | \dimen0 = 1.5em | ||
| 2823 | \fi | ||
| 2824 | \hbox to \dimen0{% | ||
| 2825 | \hskip 0pt plus.25fil | ||
| 2826 | .\hskip 0pt plus1fil | ||
| 2827 | .\hskip 0pt plus1fil | ||
| 2828 | .\hskip 0pt plus.5fil | ||
| 2829 | }% | ||
| 2830 | } | ||
| 2831 | |||
| 2832 | % @enddots{} is an end-of-sentence ellipsis. | ||
| 2833 | % | ||
| 2834 | \def\enddots{% | ||
| 2835 | \dots | ||
| 2836 | \spacefactor=\endofsentencespacefactor | ||
| 2837 | } | ||
| 2824 | 2838 | ||
| 2825 | % @point{}, @result{}, @expansion{}, @print{}, @equiv{}. | 2839 | % @point{}, @result{}, @expansion{}, @print{}, @equiv{}. |
| 2826 | % | 2840 | % |
| @@ -3207,10 +3221,14 @@ end | |||
| 3207 | 3221 | ||
| 3208 | \def\headings #1 {\csname HEADINGS#1\endcsname} | 3222 | \def\headings #1 {\csname HEADINGS#1\endcsname} |
| 3209 | 3223 | ||
| 3210 | \def\HEADINGSoff{% | 3224 | \def\headingsoff{% non-global headings elimination |
| 3211 | \global\evenheadline={\hfil} \global\evenfootline={\hfil} | 3225 | \evenheadline={\hfil}\evenfootline={\hfil}% |
| 3212 | \global\oddheadline={\hfil} \global\oddfootline={\hfil}} | 3226 | \oddheadline={\hfil}\oddfootline={\hfil}% |
| 3213 | \HEADINGSoff | 3227 | } |
| 3228 | |||
| 3229 | \def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting | ||
| 3230 | \HEADINGSoff % it's the default | ||
| 3231 | |||
| 3214 | % When we turn headings on, set the page number to 1. | 3232 | % When we turn headings on, set the page number to 1. |
| 3215 | % For double-sided printing, put current file name in lower left corner, | 3233 | % For double-sided printing, put current file name in lower left corner, |
| 3216 | % chapter name on inside top of right hand pages, document | 3234 | % chapter name on inside top of right hand pages, document |
| @@ -3322,7 +3340,7 @@ end | |||
| 3322 | \begingroup | 3340 | \begingroup |
| 3323 | \advance\leftskip by-\tableindent | 3341 | \advance\leftskip by-\tableindent |
| 3324 | \advance\hsize by\tableindent | 3342 | \advance\hsize by\tableindent |
| 3325 | \advance\rightskip by0pt plus1fil | 3343 | \advance\rightskip by0pt plus1fil\relax |
| 3326 | \leavevmode\unhbox0\par | 3344 | \leavevmode\unhbox0\par |
| 3327 | \endgroup | 3345 | \endgroup |
| 3328 | % | 3346 | % |
| @@ -4134,11 +4152,14 @@ end | |||
| 4134 | \def\@{@}% change to @@ when we switch to @ as escape char in index files. | 4152 | \def\@{@}% change to @@ when we switch to @ as escape char in index files. |
| 4135 | \def\ {\realbackslash\space }% | 4153 | \def\ {\realbackslash\space }% |
| 4136 | % | 4154 | % |
| 4137 | % Need these in case \tex is in effect and \{ is a \delimiter again. | 4155 | % Need these unexpandable (because we define \tt as a dummy) |
| 4138 | % But can't use \lbracecmd and \rbracecmd because texindex assumes | 4156 | % definitions when @{ or @} appear in index entry text. Also, more |
| 4139 | % braces and backslashes are used only as delimiters. | 4157 | % complicated, when \tex is in effect and \{ is a \delimiter again. |
| 4140 | \let\{ = \mylbrace | 4158 | % We can't use \lbracecmd and \rbracecmd because texindex assumes |
| 4141 | \let\} = \myrbrace | 4159 | % braces and backslashes are used only as delimiters. Perhaps we |
| 4160 | % should define @lbrace and @rbrace commands a la @comma. | ||
| 4161 | \def\{{{\tt\char123}}% | ||
| 4162 | \def\}{{\tt\char125}}% | ||
| 4142 | % | 4163 | % |
| 4143 | % I don't entirely understand this, but when an index entry is | 4164 | % I don't entirely understand this, but when an index entry is |
| 4144 | % generated from a macro call, the \endinput which \scanmacro inserts | 4165 | % generated from a macro call, the \endinput which \scanmacro inserts |
| @@ -4191,7 +4212,7 @@ end | |||
| 4191 | \def\commondummies{% | 4212 | \def\commondummies{% |
| 4192 | % | 4213 | % |
| 4193 | % \definedummyword defines \#1 as \string\#1\space, thus effectively | 4214 | % \definedummyword defines \#1 as \string\#1\space, thus effectively |
| 4194 | % preventing its expansion. This is used only for control% words, | 4215 | % preventing its expansion. This is used only for control words, |
| 4195 | % not control letters, because the \space would be incorrect for | 4216 | % not control letters, because the \space would be incorrect for |
| 4196 | % control characters, but is needed to separate the control word | 4217 | % control characters, but is needed to separate the control word |
| 4197 | % from whatever follows. | 4218 | % from whatever follows. |
| @@ -4210,6 +4231,7 @@ end | |||
| 4210 | \commondummiesnofonts | 4231 | \commondummiesnofonts |
| 4211 | % | 4232 | % |
| 4212 | \definedummyletter\_% | 4233 | \definedummyletter\_% |
| 4234 | \definedummyletter\-% | ||
| 4213 | % | 4235 | % |
| 4214 | % Non-English letters. | 4236 | % Non-English letters. |
| 4215 | \definedummyword\AA | 4237 | \definedummyword\AA |
| @@ -4246,20 +4268,24 @@ end | |||
| 4246 | \definedummyword\TeX | 4268 | \definedummyword\TeX |
| 4247 | % | 4269 | % |
| 4248 | % Assorted special characters. | 4270 | % Assorted special characters. |
| 4271 | \definedummyword\arrow | ||
| 4249 | \definedummyword\bullet | 4272 | \definedummyword\bullet |
| 4250 | \definedummyword\comma | 4273 | \definedummyword\comma |
| 4251 | \definedummyword\copyright | 4274 | \definedummyword\copyright |
| 4252 | \definedummyword\registeredsymbol | 4275 | \definedummyword\registeredsymbol |
| 4253 | \definedummyword\dots | 4276 | \definedummyword\dots |
| 4254 | \definedummyword\enddots | 4277 | \definedummyword\enddots |
| 4278 | \definedummyword\entrybreak | ||
| 4255 | \definedummyword\equiv | 4279 | \definedummyword\equiv |
| 4256 | \definedummyword\error | 4280 | \definedummyword\error |
| 4257 | \definedummyword\euro | 4281 | \definedummyword\euro |
| 4282 | \definedummyword\expansion | ||
| 4283 | \definedummyword\geq | ||
| 4258 | \definedummyword\guillemetleft | 4284 | \definedummyword\guillemetleft |
| 4259 | \definedummyword\guillemetright | 4285 | \definedummyword\guillemetright |
| 4260 | \definedummyword\guilsinglleft | 4286 | \definedummyword\guilsinglleft |
| 4261 | \definedummyword\guilsinglright | 4287 | \definedummyword\guilsinglright |
| 4262 | \definedummyword\expansion | 4288 | \definedummyword\leq |
| 4263 | \definedummyword\minus | 4289 | \definedummyword\minus |
| 4264 | \definedummyword\ogonek | 4290 | \definedummyword\ogonek |
| 4265 | \definedummyword\pounds | 4291 | \definedummyword\pounds |
| @@ -4316,7 +4342,9 @@ end | |||
| 4316 | \definedummyword\b | 4342 | \definedummyword\b |
| 4317 | \definedummyword\i | 4343 | \definedummyword\i |
| 4318 | \definedummyword\r | 4344 | \definedummyword\r |
| 4345 | \definedummyword\sansserif | ||
| 4319 | \definedummyword\sc | 4346 | \definedummyword\sc |
| 4347 | \definedummyword\slanted | ||
| 4320 | \definedummyword\t | 4348 | \definedummyword\t |
| 4321 | % | 4349 | % |
| 4322 | % Commands that take arguments. | 4350 | % Commands that take arguments. |
| @@ -4325,10 +4353,12 @@ end | |||
| 4325 | \definedummyword\code | 4353 | \definedummyword\code |
| 4326 | \definedummyword\command | 4354 | \definedummyword\command |
| 4327 | \definedummyword\dfn | 4355 | \definedummyword\dfn |
| 4356 | \definedummyword\dmn | ||
| 4328 | \definedummyword\email | 4357 | \definedummyword\email |
| 4329 | \definedummyword\emph | 4358 | \definedummyword\emph |
| 4330 | \definedummyword\env | 4359 | \definedummyword\env |
| 4331 | \definedummyword\file | 4360 | \definedummyword\file |
| 4361 | \definedummyword\indicateurl | ||
| 4332 | \definedummyword\kbd | 4362 | \definedummyword\kbd |
| 4333 | \definedummyword\key | 4363 | \definedummyword\key |
| 4334 | \definedummyword\math | 4364 | \definedummyword\math |
| @@ -4356,7 +4386,7 @@ end | |||
| 4356 | \def\definedummyaccent##1{\let##1\asis}% | 4386 | \def\definedummyaccent##1{\let##1\asis}% |
| 4357 | % We can just ignore other control letters. | 4387 | % We can just ignore other control letters. |
| 4358 | \def\definedummyletter##1{\let##1\empty}% | 4388 | \def\definedummyletter##1{\let##1\empty}% |
| 4359 | % Hopefully, all control words can become @asis. | 4389 | % All control words become @asis by default; overrides below. |
| 4360 | \let\definedummyword\definedummyaccent | 4390 | \let\definedummyword\definedummyaccent |
| 4361 | % | 4391 | % |
| 4362 | \commondummiesnofonts | 4392 | \commondummiesnofonts |
| @@ -4368,8 +4398,14 @@ end | |||
| 4368 | % | 4398 | % |
| 4369 | \def\ { }% | 4399 | \def\ { }% |
| 4370 | \def\@{@}% | 4400 | \def\@{@}% |
| 4371 | % how to handle braces? | ||
| 4372 | \def\_{\normalunderscore}% | 4401 | \def\_{\normalunderscore}% |
| 4402 | \def\-{}% @- shouldn't affect sorting | ||
| 4403 | % | ||
| 4404 | % Unfortunately, texindex is not prepared to handle braces in the | ||
| 4405 | % content at all. So for index sorting, we map @{ and @} to strings | ||
| 4406 | % starting with |, since that ASCII character is between ASCII { and }. | ||
| 4407 | \def\{{|a}% | ||
| 4408 | \def\}{|b}% | ||
| 4373 | % | 4409 | % |
| 4374 | % Non-English letters. | 4410 | % Non-English letters. |
| 4375 | \def\AA{AA}% | 4411 | \def\AA{AA}% |
| @@ -4397,6 +4433,7 @@ end | |||
| 4397 | % | 4433 | % |
| 4398 | % Assorted special characters. | 4434 | % Assorted special characters. |
| 4399 | % (The following {} will end up in the sort string, but that's ok.) | 4435 | % (The following {} will end up in the sort string, but that's ok.) |
| 4436 | \def\arrow{->}% | ||
| 4400 | \def\bullet{bullet}% | 4437 | \def\bullet{bullet}% |
| 4401 | \def\comma{,}% | 4438 | \def\comma{,}% |
| 4402 | \def\copyright{copyright}% | 4439 | \def\copyright{copyright}% |
| @@ -4406,10 +4443,12 @@ end | |||
| 4406 | \def\error{error}% | 4443 | \def\error{error}% |
| 4407 | \def\euro{euro}% | 4444 | \def\euro{euro}% |
| 4408 | \def\expansion{==>}% | 4445 | \def\expansion{==>}% |
| 4446 | \def\geq{>=}% | ||
| 4409 | \def\guillemetleft{<<}% | 4447 | \def\guillemetleft{<<}% |
| 4410 | \def\guillemetright{>>}% | 4448 | \def\guillemetright{>>}% |
| 4411 | \def\guilsinglleft{<}% | 4449 | \def\guilsinglleft{<}% |
| 4412 | \def\guilsinglright{>}% | 4450 | \def\guilsinglright{>}% |
| 4451 | \def\leq{<=}% | ||
| 4413 | \def\minus{-}% | 4452 | \def\minus{-}% |
| 4414 | \def\point{.}% | 4453 | \def\point{.}% |
| 4415 | \def\pounds{pounds}% | 4454 | \def\pounds{pounds}% |
| @@ -4424,6 +4463,9 @@ end | |||
| 4424 | \def\result{=>}% | 4463 | \def\result{=>}% |
| 4425 | \def\textdegree{o}% | 4464 | \def\textdegree{o}% |
| 4426 | % | 4465 | % |
| 4466 | \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax | ||
| 4467 | \else \indexlquoteignore \fi | ||
| 4468 | % | ||
| 4427 | % We need to get rid of all macros, leaving only the arguments (if present). | 4469 | % We need to get rid of all macros, leaving only the arguments (if present). |
| 4428 | % Of course this is not nearly correct, but it is the best we can do for now. | 4470 | % Of course this is not nearly correct, but it is the best we can do for now. |
| 4429 | % makeinfo does not expand macros in the argument to @deffn, which ends up | 4471 | % makeinfo does not expand macros in the argument to @deffn, which ends up |
| @@ -4437,6 +4479,11 @@ end | |||
| 4437 | \macrolist | 4479 | \macrolist |
| 4438 | } | 4480 | } |
| 4439 | 4481 | ||
| 4482 | % Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us | ||
| 4483 | % ignore left quotes in the sort term. | ||
| 4484 | {\catcode`\`=\active | ||
| 4485 | \gdef\indexlquoteignore{\let`=\empty}} | ||
| 4486 | |||
| 4440 | \let\indexbackslash=0 %overridden during \printindex. | 4487 | \let\indexbackslash=0 %overridden during \printindex. |
| 4441 | \let\SETmarginindex=\relax % put index entries in margin (undocumented)? | 4488 | \let\SETmarginindex=\relax % put index entries in margin (undocumented)? |
| 4442 | 4489 | ||
| @@ -4694,7 +4741,6 @@ end | |||
| 4694 | % But this freezes the catcodes in the argument, and can cause problems to | 4741 | % But this freezes the catcodes in the argument, and can cause problems to |
| 4695 | % @code, which sets - active. This problem was fixed by a kludge--- | 4742 | % @code, which sets - active. This problem was fixed by a kludge--- |
| 4696 | % ``-'' was active throughout whole index, but this isn't really right. | 4743 | % ``-'' was active throughout whole index, but this isn't really right. |
| 4697 | % | ||
| 4698 | % The right solution is to prevent \entry from swallowing the whole text. | 4744 | % The right solution is to prevent \entry from swallowing the whole text. |
| 4699 | % --kasal, 21nov03 | 4745 | % --kasal, 21nov03 |
| 4700 | \def\entry{% | 4746 | \def\entry{% |
| @@ -4731,10 +4777,17 @@ end | |||
| 4731 | % columns. | 4777 | % columns. |
| 4732 | \vskip 0pt plus1pt | 4778 | \vskip 0pt plus1pt |
| 4733 | % | 4779 | % |
| 4780 | % When reading the text of entry, convert explicit line breaks | ||
| 4781 | % from @* into spaces. The user might give these in long section | ||
| 4782 | % titles, for instance. | ||
| 4783 | \def\*{\unskip\space\ignorespaces}% | ||
| 4784 | \def\entrybreak{\hfil\break}% | ||
| 4785 | % | ||
| 4734 | % Swallow the left brace of the text (first parameter): | 4786 | % Swallow the left brace of the text (first parameter): |
| 4735 | \afterassignment\doentry | 4787 | \afterassignment\doentry |
| 4736 | \let\temp = | 4788 | \let\temp = |
| 4737 | } | 4789 | } |
| 4790 | \def\entrybreak{\unskip\space\ignorespaces}% | ||
| 4738 | \def\doentry{% | 4791 | \def\doentry{% |
| 4739 | \bgroup % Instead of the swallowed brace. | 4792 | \bgroup % Instead of the swallowed brace. |
| 4740 | \noindent | 4793 | \noindent |
| @@ -4967,7 +5020,22 @@ end | |||
| 4967 | \message{sectioning,} | 5020 | \message{sectioning,} |
| 4968 | % Chapters, sections, etc. | 5021 | % Chapters, sections, etc. |
| 4969 | 5022 | ||
| 4970 | % \unnumberedno is an oxymoron, of course. But we count the unnumbered | 5023 | % Let's start with @part. |
| 5024 | \outer\parseargdef\part{\partzzz{#1}} | ||
| 5025 | \def\partzzz#1{% | ||
| 5026 | \chapoddpage | ||
| 5027 | \null | ||
| 5028 | \vskip.3\vsize % move it down on the page a bit | ||
| 5029 | \begingroup | ||
| 5030 | \noindent \titlefonts\rmisbold #1\par % the text | ||
| 5031 | \let\lastnode=\empty % no node to associate with | ||
| 5032 | \writetocentry{part}{#1}{}% but put it in the toc | ||
| 5033 | \headingsoff % no headline or footline on the part page | ||
| 5034 | \chapoddpage | ||
| 5035 | \endgroup | ||
| 5036 | } | ||
| 5037 | |||
| 5038 | % \unnumberedno is an oxymoron. But we count the unnumbered | ||
| 4971 | % sections so that we can refer to them unambiguously in the pdf | 5039 | % sections so that we can refer to them unambiguously in the pdf |
| 4972 | % outlines by their "section number". We avoid collisions with chapter | 5040 | % outlines by their "section number". We avoid collisions with chapter |
| 4973 | % numbers by starting them at 10000. (If a document ever has 10000 | 5041 | % numbers by starting them at 10000. (If a document ever has 10000 |
| @@ -5046,8 +5114,8 @@ end | |||
| 5046 | \chardef\maxseclevel = 3 | 5114 | \chardef\maxseclevel = 3 |
| 5047 | % | 5115 | % |
| 5048 | % A numbered section within an unnumbered changes to unnumbered too. | 5116 | % A numbered section within an unnumbered changes to unnumbered too. |
| 5049 | % To achive this, remember the "biggest" unnum. sec. we are currently in: | 5117 | % To achieve this, remember the "biggest" unnum. sec. we are currently in: |
| 5050 | \chardef\unmlevel = \maxseclevel | 5118 | \chardef\unnlevel = \maxseclevel |
| 5051 | % | 5119 | % |
| 5052 | % Trace whether the current chapter is an appendix or not: | 5120 | % Trace whether the current chapter is an appendix or not: |
| 5053 | % \chapheadtype is "N" or "A", unnumbered chapters are ignored. | 5121 | % \chapheadtype is "N" or "A", unnumbered chapters are ignored. |
| @@ -5072,8 +5140,8 @@ end | |||
| 5072 | % The heading type: | 5140 | % The heading type: |
| 5073 | \def\headtype{#1}% | 5141 | \def\headtype{#1}% |
| 5074 | \if \headtype U% | 5142 | \if \headtype U% |
| 5075 | \ifnum \absseclevel < \unmlevel | 5143 | \ifnum \absseclevel < \unnlevel |
| 5076 | \chardef\unmlevel = \absseclevel | 5144 | \chardef\unnlevel = \absseclevel |
| 5077 | \fi | 5145 | \fi |
| 5078 | \else | 5146 | \else |
| 5079 | % Check for appendix sections: | 5147 | % Check for appendix sections: |
| @@ -5085,10 +5153,10 @@ end | |||
| 5085 | \fi\fi | 5153 | \fi\fi |
| 5086 | \fi | 5154 | \fi |
| 5087 | % Check for numbered within unnumbered: | 5155 | % Check for numbered within unnumbered: |
| 5088 | \ifnum \absseclevel > \unmlevel | 5156 | \ifnum \absseclevel > \unnlevel |
| 5089 | \def\headtype{U}% | 5157 | \def\headtype{U}% |
| 5090 | \else | 5158 | \else |
| 5091 | \chardef\unmlevel = 3 | 5159 | \chardef\unnlevel = 3 |
| 5092 | \fi | 5160 | \fi |
| 5093 | \fi | 5161 | \fi |
| 5094 | % Now print the heading: | 5162 | % Now print the heading: |
| @@ -5340,9 +5408,8 @@ end | |||
| 5340 | \chappager | 5408 | \chappager |
| 5341 | \ifodd\pageno \else | 5409 | \ifodd\pageno \else |
| 5342 | \begingroup | 5410 | \begingroup |
| 5343 | \evenheadline={\hfil}\evenfootline={\hfil}% | 5411 | \headingsoff |
| 5344 | \oddheadline={\hfil}\oddfootline={\hfil}% | 5412 | \null |
| 5345 | \hbox to 0pt{}% | ||
| 5346 | \chappager | 5413 | \chappager |
| 5347 | \endgroup | 5414 | \endgroup |
| 5348 | \fi | 5415 | \fi |
| @@ -5785,6 +5852,7 @@ end | |||
| 5785 | \def\summarycontents{% | 5852 | \def\summarycontents{% |
| 5786 | \startcontents{\putwordShortTOC}% | 5853 | \startcontents{\putwordShortTOC}% |
| 5787 | % | 5854 | % |
| 5855 | \let\partentry = \shortpartentry | ||
| 5788 | \let\numchapentry = \shortchapentry | 5856 | \let\numchapentry = \shortchapentry |
| 5789 | \let\appentry = \shortchapentry | 5857 | \let\appentry = \shortchapentry |
| 5790 | \let\unnchapentry = \shortunnchapentry | 5858 | \let\unnchapentry = \shortunnchapentry |
| @@ -5840,6 +5908,19 @@ end | |||
| 5840 | % The last argument is the page number. | 5908 | % The last argument is the page number. |
| 5841 | % The arguments in between are the chapter number, section number, ... | 5909 | % The arguments in between are the chapter number, section number, ... |
| 5842 | 5910 | ||
| 5911 | % Parts, in the main contents. Replace the part number, which doesn't | ||
| 5912 | % exist, with an empty box. Let's hope all the numbers have the same width. | ||
| 5913 | % Also ignore the page number, which is conventionally not printed. | ||
| 5914 | \def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}} | ||
| 5915 | \def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}} | ||
| 5916 | % | ||
| 5917 | % Parts, in the short toc. | ||
| 5918 | \def\shortpartentry#1#2#3#4{% | ||
| 5919 | \penalty-300 | ||
| 5920 | \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip | ||
| 5921 | \shortchapentry{{\bf #1}}{\numeralbox}{}{}% | ||
| 5922 | } | ||
| 5923 | |||
| 5843 | % Chapters, in the main contents. | 5924 | % Chapters, in the main contents. |
| 5844 | \def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}} | 5925 | \def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}} |
| 5845 | % | 5926 | % |
| @@ -5929,9 +6010,9 @@ end | |||
| 5929 | \message{environments,} | 6010 | \message{environments,} |
| 5930 | % @foo ... @end foo. | 6011 | % @foo ... @end foo. |
| 5931 | 6012 | ||
| 5932 | % @tex ... @end tex escapes into raw Tex temporarily. | 6013 | % @tex ... @end tex escapes into raw TeX temporarily. |
| 5933 | % One exception: @ is still an escape character, so that @end tex works. | 6014 | % One exception: @ is still an escape character, so that @end tex works. |
| 5934 | % But \@ or @@ will get a plain tex @ character. | 6015 | % But \@ or @@ will get a plain @ character. |
| 5935 | 6016 | ||
| 5936 | \envdef\tex{% | 6017 | \envdef\tex{% |
| 5937 | \setupmarkupstyle{tex}% | 6018 | \setupmarkupstyle{tex}% |
| @@ -5948,6 +6029,10 @@ end | |||
| 5948 | \catcode`\'=\other | 6029 | \catcode`\'=\other |
| 5949 | \escapechar=`\\ | 6030 | \escapechar=`\\ |
| 5950 | % | 6031 | % |
| 6032 | % ' is active in math mode (mathcode"8000). So reset it, and all our | ||
| 6033 | % other math active characters (just in case), to plain's definitions. | ||
| 6034 | \mathactive | ||
| 6035 | % | ||
| 5951 | \let\b=\ptexb | 6036 | \let\b=\ptexb |
| 5952 | \let\bullet=\ptexbullet | 6037 | \let\bullet=\ptexbullet |
| 5953 | \let\c=\ptexc | 6038 | \let\c=\ptexc |
| @@ -6150,41 +6235,42 @@ end | |||
| 6150 | } | 6235 | } |
| 6151 | 6236 | ||
| 6152 | % We often define two environments, @foo and @smallfoo. | 6237 | % We often define two environments, @foo and @smallfoo. |
| 6153 | % Let's do it by one command: | 6238 | % Let's do it in one command. #1 is the env name, #2 the definition. |
| 6154 | \def\makedispenv #1#2{ | 6239 | \def\makedispenvdef#1#2{% |
| 6155 | \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2} | 6240 | \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}% |
| 6156 | \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2} | 6241 | \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}% |
| 6157 | \expandafter\let\csname E#1\endcsname \afterenvbreak | 6242 | \expandafter\let\csname E#1\endcsname \afterenvbreak |
| 6158 | \expandafter\let\csname Esmall#1\endcsname \afterenvbreak | 6243 | \expandafter\let\csname Esmall#1\endcsname \afterenvbreak |
| 6159 | } | 6244 | } |
| 6160 | 6245 | ||
| 6161 | % Define two synonyms: | 6246 | % Define two environment synonyms (#1 and #2) for an environment. |
| 6162 | \def\maketwodispenvs #1#2#3{ | 6247 | \def\maketwodispenvdef#1#2#3{% |
| 6163 | \makedispenv{#1}{#3} | 6248 | \makedispenvdef{#1}{#3}% |
| 6164 | \makedispenv{#2}{#3} | 6249 | \makedispenvdef{#2}{#3}% |
| 6165 | } | 6250 | } |
| 6166 | 6251 | % | |
| 6167 | % @lisp: indented, narrowed, typewriter font; @example: same as @lisp. | 6252 | % @lisp: indented, narrowed, typewriter font; |
| 6253 | % @example: same as @lisp. | ||
| 6168 | % | 6254 | % |
| 6169 | % @smallexample and @smalllisp: use smaller fonts. | 6255 | % @smallexample and @smalllisp: use smaller fonts. |
| 6170 | % Originally contributed by Pavel@xerox. | 6256 | % Originally contributed by Pavel@xerox. |
| 6171 | % | 6257 | % |
| 6172 | \maketwodispenvs {lisp}{example}{% | 6258 | \maketwodispenvdef{lisp}{example}{% |
| 6173 | \nonfillstart | 6259 | \nonfillstart |
| 6174 | \tt\setupmarkupstyle{example}% | 6260 | \tt\setupmarkupstyle{example}% |
| 6175 | \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. | 6261 | \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. |
| 6176 | \gobble % eat return | 6262 | \gobble % eat return |
| 6177 | } | 6263 | } |
| 6178 | % @display/@smalldisplay: same as @lisp except keep current font. | 6264 | % @display/@smalldisplay: same as @lisp except keep current font. |
| 6179 | % | 6265 | % |
| 6180 | \makedispenv {display}{% | 6266 | \makedispenvdef{display}{% |
| 6181 | \nonfillstart | 6267 | \nonfillstart |
| 6182 | \gobble | 6268 | \gobble |
| 6183 | } | 6269 | } |
| 6184 | 6270 | ||
| 6185 | % @format/@smallformat: same as @display except don't narrow margins. | 6271 | % @format/@smallformat: same as @display except don't narrow margins. |
| 6186 | % | 6272 | % |
| 6187 | \makedispenv{format}{% | 6273 | \makedispenvdef{format}{% |
| 6188 | \let\nonarrowing = t% | 6274 | \let\nonarrowing = t% |
| 6189 | \nonfillstart | 6275 | \nonfillstart |
| 6190 | \gobble | 6276 | \gobble |
| @@ -6203,7 +6289,7 @@ end | |||
| 6203 | \envdef\flushright{% | 6289 | \envdef\flushright{% |
| 6204 | \let\nonarrowing = t% | 6290 | \let\nonarrowing = t% |
| 6205 | \nonfillstart | 6291 | \nonfillstart |
| 6206 | \advance\leftskip by 0pt plus 1fill | 6292 | \advance\leftskip by 0pt plus 1fill\relax |
| 6207 | \gobble | 6293 | \gobble |
| 6208 | } | 6294 | } |
| 6209 | \let\Eflushright = \afterenvbreak | 6295 | \let\Eflushright = \afterenvbreak |
| @@ -6238,6 +6324,8 @@ end | |||
| 6238 | % we're doing normal filling. So, when using \aboveenvbreak and | 6324 | % we're doing normal filling. So, when using \aboveenvbreak and |
| 6239 | % \afterenvbreak, temporarily make \parskip 0. | 6325 | % \afterenvbreak, temporarily make \parskip 0. |
| 6240 | % | 6326 | % |
| 6327 | \makedispenvdef{quotation}{\quotationstart} | ||
| 6328 | % | ||
| 6241 | \def\quotationstart{% | 6329 | \def\quotationstart{% |
| 6242 | {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip | 6330 | {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip |
| 6243 | \parindent=0pt | 6331 | \parindent=0pt |
| @@ -6253,17 +6341,6 @@ end | |||
| 6253 | \parsearg\quotationlabel | 6341 | \parsearg\quotationlabel |
| 6254 | } | 6342 | } |
| 6255 | 6343 | ||
| 6256 | \envdef\quotation{% | ||
| 6257 | \setnormaldispenv | ||
| 6258 | \quotationstart | ||
| 6259 | } | ||
| 6260 | |||
| 6261 | \envdef\smallquotation{% | ||
| 6262 | \setsmalldispenv | ||
| 6263 | \quotationstart | ||
| 6264 | } | ||
| 6265 | \let\Esmallquotation = \Equotation | ||
| 6266 | |||
| 6267 | % We have retained a nonzero parskip for the environment, since we're | 6344 | % We have retained a nonzero parskip for the environment, since we're |
| 6268 | % doing normal filling. | 6345 | % doing normal filling. |
| 6269 | % | 6346 | % |
| @@ -6275,6 +6352,7 @@ end | |||
| 6275 | \fi | 6352 | \fi |
| 6276 | {\parskip=0pt \afterenvbreak}% | 6353 | {\parskip=0pt \afterenvbreak}% |
| 6277 | } | 6354 | } |
| 6355 | \def\Esmallquotation{\Equotation} | ||
| 6278 | 6356 | ||
| 6279 | % If we're given an argument, typeset it in bold with a colon after. | 6357 | % If we're given an argument, typeset it in bold with a colon after. |
| 6280 | \def\quotationlabel#1{% | 6358 | \def\quotationlabel#1{% |
| @@ -6331,21 +6409,28 @@ end | |||
| 6331 | 6409 | ||
| 6332 | % Setup for the @verbatim environment | 6410 | % Setup for the @verbatim environment |
| 6333 | % | 6411 | % |
| 6334 | % Real tab expansion | 6412 | % Real tab expansion. |
| 6335 | \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount | 6413 | \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount |
| 6336 | % | 6414 | % |
| 6337 | \def\starttabbox{\setbox0=\hbox\bgroup} | 6415 | % We typeset each line of the verbatim in an \hbox, so we can handle |
| 6416 | % tabs. The \global is in case the verbatim line starts with an accent, | ||
| 6417 | % or some other command that starts with a begin-group. Otherwise, the | ||
| 6418 | % entire \verbbox would disappear at the corresponding end-group, before | ||
| 6419 | % it is typeset. Meanwhile, we can't have nested verbatim commands | ||
| 6420 | % (can we?), so the \global won't be overwriting itself. | ||
| 6421 | \newbox\verbbox | ||
| 6422 | \def\starttabbox{\global\setbox\verbbox=\hbox\bgroup} | ||
| 6338 | % | 6423 | % |
| 6339 | \begingroup | 6424 | \begingroup |
| 6340 | \catcode`\^^I=\active | 6425 | \catcode`\^^I=\active |
| 6341 | \gdef\tabexpand{% | 6426 | \gdef\tabexpand{% |
| 6342 | \catcode`\^^I=\active | 6427 | \catcode`\^^I=\active |
| 6343 | \def^^I{\leavevmode\egroup | 6428 | \def^^I{\leavevmode\egroup |
| 6344 | \dimen0=\wd0 % the width so far, or since the previous tab | 6429 | \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab |
| 6345 | \divide\dimen0 by\tabw | 6430 | \divide\dimen\verbbox by\tabw |
| 6346 | \multiply\dimen0 by\tabw % compute previous multiple of \tabw | 6431 | \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw |
| 6347 | \advance\dimen0 by\tabw % advance to next multiple of \tabw | 6432 | \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw |
| 6348 | \wd0=\dimen0 \box0 \starttabbox | 6433 | \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox |
| 6349 | }% | 6434 | }% |
| 6350 | } | 6435 | } |
| 6351 | \endgroup | 6436 | \endgroup |
| @@ -6354,15 +6439,16 @@ end | |||
| 6354 | \def\setupverbatim{% | 6439 | \def\setupverbatim{% |
| 6355 | \let\nonarrowing = t% | 6440 | \let\nonarrowing = t% |
| 6356 | \nonfillstart | 6441 | \nonfillstart |
| 6357 | % Easiest (and conventionally used) font for verbatim | 6442 | \tt % easiest (and conventionally used) font for verbatim |
| 6358 | \tt | 6443 | % The \leavevmode here is for blank lines. Otherwise, we would |
| 6359 | \def\par{\leavevmode\egroup\box0\endgraf}% | 6444 | % never \starttabox and the \egroup would end verbatim mode. |
| 6445 | \def\par{\leavevmode\egroup\box\verbbox\endgraf}% | ||
| 6360 | \tabexpand | 6446 | \tabexpand |
| 6361 | \setupmarkupstyle{verbatim}% | 6447 | \setupmarkupstyle{verbatim}% |
| 6362 | % Respect line breaks, | 6448 | % Respect line breaks, |
| 6363 | % print special symbols as themselves, and | 6449 | % print special symbols as themselves, and |
| 6364 | % make each space count | 6450 | % make each space count. |
| 6365 | % must do in this order: | 6451 | % Must do in this order: |
| 6366 | \obeylines \uncatcodespecials \sepspaces | 6452 | \obeylines \uncatcodespecials \sepspaces |
| 6367 | \everypar{\starttabbox}% | 6453 | \everypar{\starttabbox}% |
| 6368 | } | 6454 | } |
| @@ -6505,7 +6591,7 @@ end | |||
| 6505 | #1#2 \endheader | 6591 | #1#2 \endheader |
| 6506 | % common ending: | 6592 | % common ending: |
| 6507 | \interlinepenalty = 10000 | 6593 | \interlinepenalty = 10000 |
| 6508 | \advance\rightskip by 0pt plus 1fil | 6594 | \advance\rightskip by 0pt plus 1fil\relax |
| 6509 | \endgraf | 6595 | \endgraf |
| 6510 | \nobreak\vskip -\parskip | 6596 | \nobreak\vskip -\parskip |
| 6511 | \penalty\defunpenalty % signal to \startdefun and \dodefunx | 6597 | \penalty\defunpenalty % signal to \startdefun and \dodefunx |
| @@ -6805,25 +6891,28 @@ end | |||
| 6805 | } | 6891 | } |
| 6806 | \fi | 6892 | \fi |
| 6807 | 6893 | ||
| 6808 | \def\scanmacro#1{% | 6894 | \def\scanmacro#1{\begingroup |
| 6809 | \begingroup | 6895 | \newlinechar`\^^M |
| 6810 | \newlinechar`\^^M | 6896 | \let\xeatspaces\eatspaces |
| 6811 | \let\xeatspaces\eatspaces | 6897 | % |
| 6812 | % Undo catcode changes of \startcontents and \doprintindex | 6898 | % Undo catcode changes of \startcontents and \doprintindex |
| 6813 | % When called from @insertcopying or (short)caption, we need active | 6899 | % When called from @insertcopying or (short)caption, we need active |
| 6814 | % backslash to get it printed correctly. Previously, we had | 6900 | % backslash to get it printed correctly. Previously, we had |
| 6815 | % \catcode`\\=\other instead. We'll see whether a problem appears | 6901 | % \catcode`\\=\other instead. We'll see whether a problem appears |
| 6816 | % with macro expansion. --kasal, 19aug04 | 6902 | % with macro expansion. --kasal, 19aug04 |
| 6817 | \catcode`\@=0 \catcode`\\=\active \escapechar=`\@ | 6903 | \catcode`\@=0 \catcode`\\=\active \escapechar=`\@ |
| 6818 | % ... and \example | 6904 | % |
| 6819 | \spaceisspace | 6905 | % ... and for \example: |
| 6820 | % | 6906 | \spaceisspace |
| 6821 | % Append \endinput to make sure that TeX does not see the ending newline. | 6907 | % |
| 6822 | % I've verified that it is necessary both for e-TeX and for ordinary TeX | 6908 | % The \empty here causes a following catcode 5 newline to be eaten |
| 6823 | % --kasal, 29nov03 | 6909 | % as part of reading whitespace after a control sequence. It does |
| 6824 | \scantokens{#1\endinput}% | 6910 | % not eat a catcode 13 newline. There's no good way to handle the |
| 6825 | \endgroup | 6911 | % two cases. See the Macro Details node in the manual for the |
| 6826 | } | 6912 | % workaround we currently have to recommend for macros and |
| 6913 | % line-oriented commands. | ||
| 6914 | \scantokens{#1\empty}% | ||
| 6915 | \endgroup} | ||
| 6827 | 6916 | ||
| 6828 | \def\scanexp#1{% | 6917 | \def\scanexp#1{% |
| 6829 | \edef\temp{\noexpand\scanmacro{#1}}% | 6918 | \edef\temp{\noexpand\scanmacro{#1}}% |
| @@ -6877,17 +6966,18 @@ end | |||
| 6877 | 6966 | ||
| 6878 | % Macro bodies are absorbed as an argument in a context where | 6967 | % Macro bodies are absorbed as an argument in a context where |
| 6879 | % all characters are catcode 10, 11 or 12, except \ which is active | 6968 | % all characters are catcode 10, 11 or 12, except \ which is active |
| 6880 | % (as in normal texinfo). It is necessary to change the definition of \. | 6969 | % (as in normal texinfo). It is necessary to change the definition of \ |
| 6881 | 6970 | % to recognize macro arguments; this is the job of \mbodybackslash. | |
| 6971 | % | ||
| 6882 | % Non-ASCII encodings make 8-bit characters active, so un-activate | 6972 | % Non-ASCII encodings make 8-bit characters active, so un-activate |
| 6883 | % them to avoid their expansion. Must do this non-globally, to | 6973 | % them to avoid their expansion. Must do this non-globally, to |
| 6884 | % confine the change to the current group. | 6974 | % confine the change to the current group. |
| 6885 | 6975 | % | |
| 6886 | % It's necessary to have hard CRs when the macro is executed. This is | 6976 | % It's necessary to have hard CRs when the macro is executed. This is |
| 6887 | % done by making ^^M (\endlinechar) catcode 12 when reading the macro | 6977 | % done by making ^^M (\endlinechar) catcode 12 when reading the macro |
| 6888 | % body, and then making it the \newlinechar in \scanmacro. | 6978 | % body, and then making it the \newlinechar in \scanmacro. |
| 6889 | 6979 | % | |
| 6890 | \def\scanctxt{% | 6980 | \def\scanctxt{% used as subroutine |
| 6891 | \catcode`\"=\other | 6981 | \catcode`\"=\other |
| 6892 | \catcode`\+=\other | 6982 | \catcode`\+=\other |
| 6893 | \catcode`\<=\other | 6983 | \catcode`\<=\other |
| @@ -6900,13 +6990,13 @@ end | |||
| 6900 | \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi | 6990 | \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi |
| 6901 | } | 6991 | } |
| 6902 | 6992 | ||
| 6903 | \def\scanargctxt{% | 6993 | \def\scanargctxt{% used for copying and captions, not macros. |
| 6904 | \scanctxt | 6994 | \scanctxt |
| 6905 | \catcode`\\=\other | 6995 | \catcode`\\=\other |
| 6906 | \catcode`\^^M=\other | 6996 | \catcode`\^^M=\other |
| 6907 | } | 6997 | } |
| 6908 | 6998 | ||
| 6909 | \def\macrobodyctxt{% | 6999 | \def\macrobodyctxt{% used for @macro definitions |
| 6910 | \scanctxt | 7000 | \scanctxt |
| 6911 | \catcode`\{=\other | 7001 | \catcode`\{=\other |
| 6912 | \catcode`\}=\other | 7002 | \catcode`\}=\other |
| @@ -6914,30 +7004,48 @@ end | |||
| 6914 | \usembodybackslash | 7004 | \usembodybackslash |
| 6915 | } | 7005 | } |
| 6916 | 7006 | ||
| 6917 | \def\macroargctxt{% | 7007 | \def\macroargctxt{% used when scanning invocations |
| 6918 | \scanctxt | 7008 | \scanctxt |
| 6919 | \catcode`\\=\other | 7009 | \catcode`\\=0 |
| 6920 | } | 7010 | } |
| 7011 | % why catcode 0 for \ in the above? To recognize \\ \{ \} as "escapes" | ||
| 7012 | % for the single characters \ { }. Thus, we end up with the "commands" | ||
| 7013 | % that would be written @\ @{ @} in a Texinfo document. | ||
| 7014 | % | ||
| 7015 | % We already have @{ and @}. For @\, we define it here, and only for | ||
| 7016 | % this purpose, to produce a typewriter backslash (so, the @\ that we | ||
| 7017 | % define for @math can't be used with @macro calls): | ||
| 7018 | % | ||
| 7019 | \def\\{\normalbackslash}% | ||
| 7020 | % | ||
| 7021 | % We would like to do this for \, too, since that is what makeinfo does. | ||
| 7022 | % But it is not possible, because Texinfo already has a command @, for a | ||
| 7023 | % cedilla accent. Documents must use @comma{} instead. | ||
| 7024 | % | ||
| 7025 | % \anythingelse will almost certainly be an error of some kind. | ||
| 7026 | |||
| 6921 | 7027 | ||
| 6922 | % \mbodybackslash is the definition of \ in @macro bodies. | 7028 | % \mbodybackslash is the definition of \ in @macro bodies. |
| 6923 | % It maps \foo\ => \csname macarg.foo\endcsname => #N | 7029 | % It maps \foo\ => \csname macarg.foo\endcsname => #N |
| 6924 | % where N is the macro parameter number. | 7030 | % where N is the macro parameter number. |
| 6925 | % We define \csname macarg.\endcsname to be \realbackslash, so | 7031 | % We define \csname macarg.\endcsname to be \realbackslash, so |
| 6926 | % \\ in macro replacement text gets you a backslash. | 7032 | % \\ in macro replacement text gets you a backslash. |
| 6927 | 7033 | % | |
| 6928 | {\catcode`@=0 @catcode`@\=@active | 7034 | {\catcode`@=0 @catcode`@\=@active |
| 6929 | @gdef@usembodybackslash{@let\=@mbodybackslash} | 7035 | @gdef@usembodybackslash{@let\=@mbodybackslash} |
| 6930 | @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} | 7036 | @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} |
| 6931 | } | 7037 | } |
| 6932 | \expandafter\def\csname macarg.\endcsname{\realbackslash} | 7038 | \expandafter\def\csname macarg.\endcsname{\realbackslash} |
| 6933 | 7039 | ||
| 7040 | \def\margbackslash#1{\char`\#1 } | ||
| 7041 | |||
| 6934 | \def\macro{\recursivefalse\parsearg\macroxxx} | 7042 | \def\macro{\recursivefalse\parsearg\macroxxx} |
| 6935 | \def\rmacro{\recursivetrue\parsearg\macroxxx} | 7043 | \def\rmacro{\recursivetrue\parsearg\macroxxx} |
| 6936 | 7044 | ||
| 6937 | \def\macroxxx#1{% | 7045 | \def\macroxxx#1{% |
| 6938 | \getargs{#1}% now \macname is the macname and \argl the arglist | 7046 | \getargs{#1}% now \macname is the macname and \argl the arglist |
| 6939 | \ifx\argl\empty % no arguments | 7047 | \ifx\argl\empty % no arguments |
| 6940 | \paramno=0% | 7048 | \paramno=0 |
| 6941 | \else | 7049 | \else |
| 6942 | \expandafter\parsemargdef \argl;% | 7050 | \expandafter\parsemargdef \argl;% |
| 6943 | \fi | 7051 | \fi |
| @@ -6986,28 +7094,32 @@ end | |||
| 6986 | % an opening brace, and that opening brace is not consumed. | 7094 | % an opening brace, and that opening brace is not consumed. |
| 6987 | \def\getargs#1{\getargsxxx#1{}} | 7095 | \def\getargs#1{\getargsxxx#1{}} |
| 6988 | \def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} | 7096 | \def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} |
| 6989 | \def\getmacname #1 #2\relax{\macname={#1}} | 7097 | \def\getmacname#1 #2\relax{\macname={#1}} |
| 6990 | \def\getmacargs#1{\def\argl{#1}} | 7098 | \def\getmacargs#1{\def\argl{#1}} |
| 6991 | 7099 | ||
| 6992 | % Parse the optional {params} list. Set up \paramno and \paramlist | 7100 | % Parse the optional {params} list. Set up \paramno and \paramlist |
| 6993 | % so \defmacro knows what to do. Define \macarg.blah for each blah | 7101 | % so \defmacro knows what to do. Define \macarg.blah for each blah |
| 6994 | % in the params list, to be ##N where N is the position in that list. | 7102 | % in the params list to be ##N where N is the position in that list. |
| 6995 | % That gets used by \mbodybackslash (above). | 7103 | % That gets used by \mbodybackslash (above). |
| 6996 | 7104 | % | |
| 6997 | % We need to get `macro parameter char #' into several definitions. | 7105 | % We need to get `macro parameter char #' into several definitions. |
| 6998 | % The technique used is stolen from LaTeX: let \hash be something | 7106 | % The technique used is stolen from LaTeX: let \hash be something |
| 6999 | % unexpandable, insert that wherever you need a #, and then redefine | 7107 | % unexpandable, insert that wherever you need a #, and then redefine |
| 7000 | % it to # just before using the token list produced. | 7108 | % it to # just before using the token list produced. |
| 7001 | % | 7109 | % |
| 7002 | % The same technique is used to protect \eatspaces till just before | 7110 | % The same technique is used to protect \eatspaces till just before |
| 7003 | % the macro is used. | 7111 | % the macro is used. |
| 7004 | 7112 | ||
| 7005 | \def\parsemargdef#1;{\paramno=0\def\paramlist{}% | 7113 | \def\parsemargdef#1;{% |
| 7006 | \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,} | 7114 | \paramno=0\def\paramlist{}% |
| 7115 | \let\hash\relax | ||
| 7116 | \let\xeatspaces\relax | ||
| 7117 | \parsemargdefxxx#1,;,% | ||
| 7118 | } | ||
| 7007 | \def\parsemargdefxxx#1,{% | 7119 | \def\parsemargdefxxx#1,{% |
| 7008 | \if#1;\let\next=\relax | 7120 | \if#1;\let\next=\relax |
| 7009 | \else \let\next=\parsemargdefxxx | 7121 | \else \let\next=\parsemargdefxxx |
| 7010 | \advance\paramno by 1% | 7122 | \advance\paramno by 1 |
| 7011 | \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname | 7123 | \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname |
| 7012 | {\xeatspaces{\hash\the\paramno}}% | 7124 | {\xeatspaces{\hash\the\paramno}}% |
| 7013 | \edef\paramlist{\paramlist\hash\the\paramno,}% | 7125 | \edef\paramlist{\paramlist\hash\the\paramno,}% |
| @@ -7015,7 +7127,7 @@ end | |||
| 7015 | 7127 | ||
| 7016 | % These two commands read recursive and nonrecursive macro bodies. | 7128 | % These two commands read recursive and nonrecursive macro bodies. |
| 7017 | % (They're different since rec and nonrec macros end differently.) | 7129 | % (They're different since rec and nonrec macros end differently.) |
| 7018 | 7130 | % | |
| 7019 | \long\def\parsemacbody#1@end macro% | 7131 | \long\def\parsemacbody#1@end macro% |
| 7020 | {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% | 7132 | {\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% |
| 7021 | \long\def\parsermacbody#1@end rmacro% | 7133 | \long\def\parsermacbody#1@end rmacro% |
| @@ -7026,6 +7138,7 @@ end | |||
| 7026 | % Much magic with \expandafter here. | 7138 | % Much magic with \expandafter here. |
| 7027 | % \xdef is used so that macro definitions will survive the file | 7139 | % \xdef is used so that macro definitions will survive the file |
| 7028 | % they're defined in; @include reads the file inside a group. | 7140 | % they're defined in; @include reads the file inside a group. |
| 7141 | % | ||
| 7029 | \def\defmacro{% | 7142 | \def\defmacro{% |
| 7030 | \let\hash=##% convert placeholders to macro parameter chars | 7143 | \let\hash=##% convert placeholders to macro parameter chars |
| 7031 | \ifrecursive | 7144 | \ifrecursive |
| @@ -7089,7 +7202,8 @@ end | |||
| 7089 | % \braceorline decides whether the next nonwhitespace character is a | 7202 | % \braceorline decides whether the next nonwhitespace character is a |
| 7090 | % {. If so it reads up to the closing }, if not, it reads the whole | 7203 | % {. If so it reads up to the closing }, if not, it reads the whole |
| 7091 | % line. Whatever was read is then fed to the next control sequence | 7204 | % line. Whatever was read is then fed to the next control sequence |
| 7092 | % as an argument (by \parsebrace or \parsearg) | 7205 | % as an argument (by \parsebrace or \parsearg). |
| 7206 | % | ||
| 7093 | \def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx} | 7207 | \def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx} |
| 7094 | \def\braceorlinexxx{% | 7208 | \def\braceorlinexxx{% |
| 7095 | \ifx\nchar\bgroup\else | 7209 | \ifx\nchar\bgroup\else |
| @@ -7099,7 +7213,8 @@ end | |||
| 7099 | 7213 | ||
| 7100 | % @alias. | 7214 | % @alias. |
| 7101 | % We need some trickery to remove the optional spaces around the equal | 7215 | % We need some trickery to remove the optional spaces around the equal |
| 7102 | % sign. Just make them active and then expand them all to nothing. | 7216 | % sign. Make them active and then expand them all to nothing. |
| 7217 | % | ||
| 7103 | \def\alias{\parseargusing\obeyspaces\aliasxxx} | 7218 | \def\alias{\parseargusing\obeyspaces\aliasxxx} |
| 7104 | \def\aliasxxx #1{\aliasyyy#1\relax} | 7219 | \def\aliasxxx #1{\aliasyyy#1\relax} |
| 7105 | \def\aliasyyy #1=#2\relax{% | 7220 | \def\aliasyyy #1=#2\relax{% |
| @@ -7357,7 +7472,8 @@ end | |||
| 7357 | \angleleft un\-de\-fined\angleright | 7472 | \angleleft un\-de\-fined\angleright |
| 7358 | \iflinks | 7473 | \iflinks |
| 7359 | \ifhavexrefs | 7474 | \ifhavexrefs |
| 7360 | \message{\linenumber Undefined cross reference `#1'.}% | 7475 | {\toks0 = {#1}% avoid expansion of possibly-complex value |
| 7476 | \message{\linenumber Undefined cross reference `\the\toks0'.}}% | ||
| 7361 | \else | 7477 | \else |
| 7362 | \ifwarnedxrefs\else | 7478 | \ifwarnedxrefs\else |
| 7363 | \global\warnedxrefstrue | 7479 | \global\warnedxrefstrue |
| @@ -7687,7 +7803,7 @@ end | |||
| 7687 | % #2 is (optional) width, #3 is (optional) height. | 7803 | % #2 is (optional) width, #3 is (optional) height. |
| 7688 | % #4 is (ignored optional) html alt text. | 7804 | % #4 is (ignored optional) html alt text. |
| 7689 | % #5 is (ignored optional) extension. | 7805 | % #5 is (ignored optional) extension. |
| 7690 | % #6 is just the usual extra ignored arg for parsing this stuff. | 7806 | % #6 is just the usual extra ignored arg for parsing stuff. |
| 7691 | \newif\ifimagevmode | 7807 | \newif\ifimagevmode |
| 7692 | \def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup | 7808 | \def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup |
| 7693 | \catcode`\^^M = 5 % in case we're inside an example | 7809 | \catcode`\^^M = 5 % in case we're inside an example |
| @@ -8339,8 +8455,8 @@ directory should work if nowhere else does.} | |||
| 8339 | \gdef^^ea{\ogonek{e}} | 8455 | \gdef^^ea{\ogonek{e}} |
| 8340 | \gdef^^eb{\"e} | 8456 | \gdef^^eb{\"e} |
| 8341 | \gdef^^ec{\v e} | 8457 | \gdef^^ec{\v e} |
| 8342 | \gdef^^ed{\'\i} | 8458 | \gdef^^ed{\'{\dotless{i}}} |
| 8343 | \gdef^^ee{\^\i} | 8459 | \gdef^^ee{\^{\dotless{i}}} |
| 8344 | \gdef^^ef{\v d} | 8460 | \gdef^^ef{\v d} |
| 8345 | % | 8461 | % |
| 8346 | \gdef^^f0{\dh} | 8462 | \gdef^^f0{\dh} |
| @@ -8899,8 +9015,8 @@ directory should work if nowhere else does.} | |||
| 8899 | % Prevent underfull vbox error messages. | 9015 | % Prevent underfull vbox error messages. |
| 8900 | \vbadness = 10000 | 9016 | \vbadness = 10000 |
| 8901 | 9017 | ||
| 8902 | % Don't be so finicky about underfull hboxes, either. | 9018 | % Don't be very finicky about underfull hboxes, either. |
| 8903 | \hbadness = 2000 | 9019 | \hbadness = 6666 |
| 8904 | 9020 | ||
| 8905 | % Following George Bush, get rid of widows and orphans. | 9021 | % Following George Bush, get rid of widows and orphans. |
| 8906 | \widowpenalty=10000 | 9022 | \widowpenalty=10000 |