diff options
| author | Glenn Morris | 2009-10-29 16:46:52 +0000 |
|---|---|---|
| committer | Glenn Morris | 2009-10-29 16:46:52 +0000 |
| commit | d9a57abf8154b57d50371250348628e0102e28a2 (patch) | |
| tree | 4d8ec287a3e8aff8a234a9979d0628fb34827420 /doc | |
| parent | e0880dcffb6082aeb2a6b7faaafdcfb8b7acd125 (diff) | |
| download | emacs-d9a57abf8154b57d50371250348628e0102e28a2.tar.gz emacs-d9a57abf8154b57d50371250348628e0102e28a2.zip | |
Update to version 2009-08-14.15 from ftp://tug.org/tex/.
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/misc/ChangeLog | 4 | ||||
| -rw-r--r-- | doc/misc/texinfo.tex | 1321 |
2 files changed, 979 insertions, 346 deletions
diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 512348f452a..1943862aa90 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog | |||
| @@ -1,3 +1,7 @@ | |||
| 1 | 2009-10-29 Glenn Morris <rgm@gnu.org> | ||
| 2 | |||
| 3 | * texinfo.tex: Update to version 2009-08-14.15 from ftp://tug.org/tex/. | ||
| 4 | |||
| 1 | 2009-10-23 Michael Albinus <michael.albinus@gmx.de> | 5 | 2009-10-23 Michael Albinus <michael.albinus@gmx.de> |
| 2 | 6 | ||
| 3 | * tramp.texi (External methods): Temporary files are kept for | 7 | * tramp.texi (External methods): Temporary files are kept for |
diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex index 62f7a723ed7..91408263bc9 100644 --- a/doc/misc/texinfo.tex +++ b/doc/misc/texinfo.tex | |||
| @@ -1,18 +1,18 @@ | |||
| 1 | % texinfo.tex -- TeX macros to handle Texinfo files. | 1 | % texinfo.tex -- TeX macros to handle Texinfo files. |
| 2 | % | 2 | % |
| 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{2007-07-09.21} | 6 | \def\texinfoversion{2009-08-14.15} |
| 7 | % | 7 | % |
| 8 | % Copyright (C) 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 Free Software Foundation, Inc. | 10 | % 2007, 2008, 2009 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 |
| 14 | % published by the Free Software Foundation; either version 2, or (at | 14 | % published by the Free Software Foundation, either version 3 of the |
| 15 | % your option) any later version. | 15 | % License, or (at your option) any later version. |
| 16 | % | 16 | % |
| 17 | % This texinfo.tex file is distributed in the hope that it will be | 17 | % This texinfo.tex file is distributed in the hope that it will be |
| 18 | % useful, but WITHOUT ANY WARRANTY; without even the implied warranty | 18 | % useful, but WITHOUT ANY WARRANTY; without even the implied warranty |
| @@ -20,9 +20,7 @@ | |||
| 20 | % General Public License for more details. | 20 | % General Public License for more details. |
| 21 | % | 21 | % |
| 22 | % You should have received a copy of the GNU General Public License | 22 | % You should have received a copy of the GNU General Public License |
| 23 | % along with this texinfo.tex file; see the file COPYING. If not, write | 23 | % along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 24 | % to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | ||
| 25 | % Boston, MA 02110-1301, USA. | ||
| 26 | % | 24 | % |
| 27 | % As a special exception, when this file is read by TeX when processing | 25 | % As a special exception, when this file is read by TeX when processing |
| 28 | % a Texinfo source document, you may use the result without | 26 | % a Texinfo source document, you may use the result without |
| @@ -99,6 +97,10 @@ | |||
| 99 | \let\ptexslash=\/ | 97 | \let\ptexslash=\/ |
| 100 | \let\ptexstar=\* | 98 | \let\ptexstar=\* |
| 101 | \let\ptext=\t | 99 | \let\ptext=\t |
| 100 | \let\ptextop=\top | ||
| 101 | {\catcode`\'=\active | ||
| 102 | \global\let\ptexquoteright'}% Math-mode def from plain.tex. | ||
| 103 | \let\ptexraggedright=\raggedright | ||
| 102 | 104 | ||
| 103 | % If this character appears in an error message or help string, it | 105 | % If this character appears in an error message or help string, it |
| 104 | % starts a new line in the output. | 106 | % starts a new line in the output. |
| @@ -279,6 +281,50 @@ | |||
| 279 | \newdimen\cornerthick \cornerthick=.3pt | 281 | \newdimen\cornerthick \cornerthick=.3pt |
| 280 | \newdimen\topandbottommargin \topandbottommargin=.75in | 282 | \newdimen\topandbottommargin \topandbottommargin=.75in |
| 281 | 283 | ||
| 284 | % Output a mark which sets \thischapter, \thissection and \thiscolor. | ||
| 285 | % We dump everything together because we only have one kind of mark. | ||
| 286 | % This works because we only use \botmark / \topmark, not \firstmark. | ||
| 287 | % | ||
| 288 | % A mark contains a subexpression of the \ifcase ... \fi construct. | ||
| 289 | % \get*marks macros below extract the needed part using \ifcase. | ||
| 290 | % | ||
| 291 | % Another complication is to let the user choose whether \thischapter | ||
| 292 | % (\thissection) refers to the chapter (section) in effect at the top | ||
| 293 | % of a page, or that at the bottom of a page. The solution is | ||
| 294 | % described on page 260 of The TeXbook. It involves outputting two | ||
| 295 | % marks for the sectioning macros, one before the section break, and | ||
| 296 | % one after. I won't pretend I can describe this better than DEK... | ||
| 297 | \def\domark{% | ||
| 298 | \toks0=\expandafter{\lastchapterdefs}% | ||
| 299 | \toks2=\expandafter{\lastsectiondefs}% | ||
| 300 | \toks4=\expandafter{\prevchapterdefs}% | ||
| 301 | \toks6=\expandafter{\prevsectiondefs}% | ||
| 302 | \toks8=\expandafter{\lastcolordefs}% | ||
| 303 | \mark{% | ||
| 304 | \the\toks0 \the\toks2 | ||
| 305 | \noexpand\or \the\toks4 \the\toks6 | ||
| 306 | \noexpand\else \the\toks8 | ||
| 307 | }% | ||
| 308 | } | ||
| 309 | % \topmark doesn't work for the very first chapter (after the title | ||
| 310 | % page or the contents), so we use \firstmark there -- this gets us | ||
| 311 | % the mark with the chapter defs, unless the user sneaks in, e.g., | ||
| 312 | % @setcolor (or @url, or @link, etc.) between @contents and the very | ||
| 313 | % first @chapter. | ||
| 314 | \def\gettopheadingmarks{% | ||
| 315 | \ifcase0\topmark\fi | ||
| 316 | \ifx\thischapter\empty \ifcase0\firstmark\fi \fi | ||
| 317 | } | ||
| 318 | \def\getbottomheadingmarks{\ifcase1\botmark\fi} | ||
| 319 | \def\getcolormarks{\ifcase2\topmark\fi} | ||
| 320 | |||
| 321 | % Avoid "undefined control sequence" errors. | ||
| 322 | \def\lastchapterdefs{} | ||
| 323 | \def\lastsectiondefs{} | ||
| 324 | \def\prevchapterdefs{} | ||
| 325 | \def\prevsectiondefs{} | ||
| 326 | \def\lastcolordefs{} | ||
| 327 | |||
| 282 | % Main output routine. | 328 | % Main output routine. |
| 283 | \chardef\PAGE = 255 | 329 | \chardef\PAGE = 255 |
| 284 | \output = {\onepageout{\pagecontents\PAGE}} | 330 | \output = {\onepageout{\pagecontents\PAGE}} |
| @@ -296,7 +342,9 @@ | |||
| 296 | % | 342 | % |
| 297 | % Do this outside of the \shipout so @code etc. will be expanded in | 343 | % Do this outside of the \shipout so @code etc. will be expanded in |
| 298 | % the headline as they should be, not taken literally (outputting ''code). | 344 | % the headline as they should be, not taken literally (outputting ''code). |
| 345 | \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi | ||
| 299 | \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}% | 346 | \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}% |
| 347 | \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi | ||
| 300 | \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}% | 348 | \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}% |
| 301 | % | 349 | % |
| 302 | {% | 350 | {% |
| @@ -310,7 +358,7 @@ | |||
| 310 | % We don't want .vr (or whatever) entries like this: | 358 | % We don't want .vr (or whatever) entries like this: |
| 311 | % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}} | 359 | % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}} |
| 312 | % "\acronym" won't work when it's read back in; | 360 | % "\acronym" won't work when it's read back in; |
| 313 | % it needs to be | 361 | % it needs to be |
| 314 | % {\code {{\tt \backslashcurfont }acronym} | 362 | % {\code {{\tt \backslashcurfont }acronym} |
| 315 | \shipout\vbox{% | 363 | \shipout\vbox{% |
| 316 | % Do this early so pdf references go to the beginning of the page. | 364 | % Do this early so pdf references go to the beginning of the page. |
| @@ -375,7 +423,7 @@ | |||
| 375 | % marginal hacks, juha@viisa.uucp (Juha Takala) | 423 | % marginal hacks, juha@viisa.uucp (Juha Takala) |
| 376 | \ifvoid\margin\else % marginal info is present | 424 | \ifvoid\margin\else % marginal info is present |
| 377 | \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi | 425 | \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi |
| 378 | \dimen@=\dp#1 \unvbox#1 | 426 | \dimen@=\dp#1\relax \unvbox#1\relax |
| 379 | \ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi | 427 | \ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi |
| 380 | \ifr@ggedbottom \kern-\dimen@ \vfil \fi} | 428 | \ifr@ggedbottom \kern-\dimen@ \vfil \fi} |
| 381 | } | 429 | } |
| @@ -416,7 +464,7 @@ | |||
| 416 | \def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} | 464 | \def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} |
| 417 | \def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} | 465 | \def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} |
| 418 | 466 | ||
| 419 | % Each occurence of `\^^M' or `<space>\^^M' is replaced by a single space. | 467 | % Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space. |
| 420 | % | 468 | % |
| 421 | % \argremovec might leave us with trailing space, e.g., | 469 | % \argremovec might leave us with trailing space, e.g., |
| 422 | % @end itemize @c foo | 470 | % @end itemize @c foo |
| @@ -441,7 +489,7 @@ | |||
| 441 | % to get _exactly_ the rest of the line, we had to prevent such situation. | 489 | % to get _exactly_ the rest of the line, we had to prevent such situation. |
| 442 | % We prepended an \empty token at the very beginning and we expand it now, | 490 | % We prepended an \empty token at the very beginning and we expand it now, |
| 443 | % just before passing the control to \argtorun. | 491 | % just before passing the control to \argtorun. |
| 444 | % (Similarily, we have to think about #3 of \argcheckspacesY above: it is | 492 | % (Similarly, we have to think about #3 of \argcheckspacesY above: it is |
| 445 | % either the null string, or it ends with \^^M---thus there is no danger | 493 | % either the null string, or it ends with \^^M---thus there is no danger |
| 446 | % that a pair of braces would be stripped. | 494 | % that a pair of braces would be stripped. |
| 447 | % | 495 | % |
| @@ -498,12 +546,12 @@ | |||
| 498 | % used to check whether the current environment is the one expected. | 546 | % used to check whether the current environment is the one expected. |
| 499 | % | 547 | % |
| 500 | % Non-false conditionals (@iftex, @ifset) don't fit into this, so they | 548 | % Non-false conditionals (@iftex, @ifset) don't fit into this, so they |
| 501 | % are not treated as enviroments; they don't open a group. (The | 549 | % are not treated as environments; they don't open a group. (The |
| 502 | % implementation of @end takes care not to call \endgroup in this | 550 | % implementation of @end takes care not to call \endgroup in this |
| 503 | % special case.) | 551 | % special case.) |
| 504 | 552 | ||
| 505 | 553 | ||
| 506 | % At runtime, environments start with this: | 554 | % At run-time, environments start with this: |
| 507 | \def\startenvironment#1{\begingroup\def\thisenv{#1}} | 555 | \def\startenvironment#1{\begingroup\def\thisenv{#1}} |
| 508 | % initialize | 556 | % initialize |
| 509 | \let\thisenv\empty | 557 | \let\thisenv\empty |
| @@ -521,7 +569,7 @@ | |||
| 521 | \fi | 569 | \fi |
| 522 | } | 570 | } |
| 523 | 571 | ||
| 524 | % Evironment mismatch, #1 expected: | 572 | % Environment mismatch, #1 expected: |
| 525 | \def\badenverr{% | 573 | \def\badenverr{% |
| 526 | \errhelp = \EMsimple | 574 | \errhelp = \EMsimple |
| 527 | \errmessage{This command can appear only \inenvironment\temp, | 575 | \errmessage{This command can appear only \inenvironment\temp, |
| @@ -605,8 +653,8 @@ | |||
| 605 | \def\jmacro{j} | 653 | \def\jmacro{j} |
| 606 | \def\dotless#1{% | 654 | \def\dotless#1{% |
| 607 | \def\temp{#1}% | 655 | \def\temp{#1}% |
| 608 | \ifx\temp\imacro \ptexi | 656 | \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi |
| 609 | \else\ifx\temp\jmacro \j | 657 | \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi |
| 610 | \else \errmessage{@dotless can be used only with i or j}% | 658 | \else \errmessage{@dotless can be used only with i or j}% |
| 611 | \fi\fi | 659 | \fi\fi |
| 612 | } | 660 | } |
| @@ -661,7 +709,7 @@ | |||
| 661 | \def\?{?\spacefactor=\endofsentencespacefactor\space} | 709 | \def\?{?\spacefactor=\endofsentencespacefactor\space} |
| 662 | 710 | ||
| 663 | % @frenchspacing on|off says whether to put extra space after punctuation. | 711 | % @frenchspacing on|off says whether to put extra space after punctuation. |
| 664 | % | 712 | % |
| 665 | \def\onword{on} | 713 | \def\onword{on} |
| 666 | \def\offword{off} | 714 | \def\offword{off} |
| 667 | % | 715 | % |
| @@ -872,15 +920,20 @@ where each line of input produces a line of output.} | |||
| 872 | \temp | 920 | \temp |
| 873 | } | 921 | } |
| 874 | 922 | ||
| 875 | % @include file insert text of that file as input. | 923 | % @include FILE -- \input text of FILE. |
| 876 | % | 924 | % |
| 877 | \def\include{\parseargusing\filenamecatcodes\includezzz} | 925 | \def\include{\parseargusing\filenamecatcodes\includezzz} |
| 878 | \def\includezzz#1{% | 926 | \def\includezzz#1{% |
| 879 | \pushthisfilestack | 927 | \pushthisfilestack |
| 880 | \def\thisfile{#1}% | 928 | \def\thisfile{#1}% |
| 881 | {% | 929 | {% |
| 882 | \makevalueexpandable | 930 | \makevalueexpandable % we want to expand any @value in FILE. |
| 883 | \def\temp{\input #1 }% | 931 | \turnoffactive % and allow special characters in the expansion |
| 932 | \indexnofonts % Allow `@@' and other weird things in file names. | ||
| 933 | \edef\temp{\noexpand\input #1 }% | ||
| 934 | % | ||
| 935 | % This trickery is to read FILE outside of a group, in case it makes | ||
| 936 | % definitions, etc. | ||
| 884 | \expandafter | 937 | \expandafter |
| 885 | }\temp | 938 | }\temp |
| 886 | \popthisfilestack | 939 | \popthisfilestack |
| @@ -895,6 +948,8 @@ where each line of input produces a line of output.} | |||
| 895 | \catcode`>=\other | 948 | \catcode`>=\other |
| 896 | \catcode`+=\other | 949 | \catcode`+=\other |
| 897 | \catcode`-=\other | 950 | \catcode`-=\other |
| 951 | \catcode`\`=\other | ||
| 952 | \catcode`\'=\other | ||
| 898 | } | 953 | } |
| 899 | 954 | ||
| 900 | \def\pushthisfilestack{% | 955 | \def\pushthisfilestack{% |
| @@ -1070,6 +1125,16 @@ where each line of input produces a line of output.} | |||
| 1070 | \mathunderscore | 1125 | \mathunderscore |
| 1071 | \let\\ = \mathbackslash | 1126 | \let\\ = \mathbackslash |
| 1072 | \mathactive | 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 | ||
| 1073 | $\finishmath | 1138 | $\finishmath |
| 1074 | } | 1139 | } |
| 1075 | \def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. | 1140 | \def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. |
| @@ -1083,17 +1148,21 @@ where each line of input produces a line of output.} | |||
| 1083 | \catcode`< = \active | 1148 | \catcode`< = \active |
| 1084 | \catcode`> = \active | 1149 | \catcode`> = \active |
| 1085 | \catcode`+ = \active | 1150 | \catcode`+ = \active |
| 1151 | \catcode`' = \active | ||
| 1086 | \gdef\mathactive{% | 1152 | \gdef\mathactive{% |
| 1087 | \let^ = \ptexhat | 1153 | \let^ = \ptexhat |
| 1088 | \let< = \ptexless | 1154 | \let< = \ptexless |
| 1089 | \let> = \ptexgtr | 1155 | \let> = \ptexgtr |
| 1090 | \let+ = \ptexplus | 1156 | \let+ = \ptexplus |
| 1157 | \let' = \ptexquoteright | ||
| 1091 | } | 1158 | } |
| 1092 | } | 1159 | } |
| 1093 | 1160 | ||
| 1094 | % @bullet and @minus need the same treatment as @math, just above. | 1161 | % Some math mode symbols. |
| 1095 | \def\bullet{$\ptexbullet$} | 1162 | \def\bullet{$\ptexbullet$} |
| 1096 | \def\minus{$-$} | 1163 | \def\geq{\ifmmode \ge\else $\ge$\fi} |
| 1164 | \def\leq{\ifmmode \le\else $\le$\fi} | ||
| 1165 | \def\minus{\ifmmode -\else $-$\fi} | ||
| 1097 | 1166 | ||
| 1098 | % @dots{} outputs an ellipsis using the current font. | 1167 | % @dots{} outputs an ellipsis using the current font. |
| 1099 | % We do .5em per period so that it has the same spacing in the cm | 1168 | % We do .5em per period so that it has the same spacing in the cm |
| @@ -1216,7 +1285,7 @@ where each line of input produces a line of output.} | |||
| 1216 | % that's what we do). | 1285 | % that's what we do). |
| 1217 | 1286 | ||
| 1218 | % double active backslashes. | 1287 | % double active backslashes. |
| 1219 | % | 1288 | % |
| 1220 | {\catcode`\@=0 \catcode`\\=\active | 1289 | {\catcode`\@=0 \catcode`\\=\active |
| 1221 | @gdef@activebackslashdouble{% | 1290 | @gdef@activebackslashdouble{% |
| 1222 | @catcode`@\=@active | 1291 | @catcode`@\=@active |
| @@ -1228,11 +1297,11 @@ where each line of input produces a line of output.} | |||
| 1228 | % us) handles it with this amazing macro to replace tokens, with minor | 1297 | % us) handles it with this amazing macro to replace tokens, with minor |
| 1229 | % changes for Texinfo. It is included here under the GPL by permission | 1298 | % changes for Texinfo. It is included here under the GPL by permission |
| 1230 | % from the author, Heiko Oberdiek. | 1299 | % from the author, Heiko Oberdiek. |
| 1231 | % | 1300 | % |
| 1232 | % #1 is the tokens to replace. | 1301 | % #1 is the tokens to replace. |
| 1233 | % #2 is the replacement. | 1302 | % #2 is the replacement. |
| 1234 | % #3 is the control sequence with the string. | 1303 | % #3 is the control sequence with the string. |
| 1235 | % | 1304 | % |
| 1236 | \def\HyPsdSubst#1#2#3{% | 1305 | \def\HyPsdSubst#1#2#3{% |
| 1237 | \def\HyPsdReplace##1#1##2\END{% | 1306 | \def\HyPsdReplace##1#1##2\END{% |
| 1238 | ##1% | 1307 | ##1% |
| @@ -1262,7 +1331,52 @@ be supported due to the design of the PDF format; use regular TeX (DVI | |||
| 1262 | output) for that.)} | 1331 | output) for that.)} |
| 1263 | 1332 | ||
| 1264 | \ifpdf | 1333 | \ifpdf |
| 1265 | \input pdfcolor | 1334 | % |
| 1335 | % Color manipulation macros based on pdfcolor.tex, | ||
| 1336 | % except using rgb instead of cmyk; the latter is said to render as a | ||
| 1337 | % very dark gray on-screen and a very dark halftone in print, instead | ||
| 1338 | % of actual black. | ||
| 1339 | \def\rgbDarkRed{0.50 0.09 0.12} | ||
| 1340 | \def\rgbBlack{0 0 0} | ||
| 1341 | % | ||
| 1342 | % k sets the color for filling (usual text, etc.); | ||
| 1343 | % K sets the color for stroking (thin rules, e.g., normal _'s). | ||
| 1344 | \def\pdfsetcolor#1{\pdfliteral{#1 rg #1 RG}} | ||
| 1345 | % | ||
| 1346 | % Set color, and create a mark which defines \thiscolor accordingly, | ||
| 1347 | % so that \makeheadline knows which color to restore. | ||
| 1348 | \def\setcolor#1{% | ||
| 1349 | \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}% | ||
| 1350 | \domark | ||
| 1351 | \pdfsetcolor{#1}% | ||
| 1352 | } | ||
| 1353 | % | ||
| 1354 | \def\maincolor{\rgbBlack} | ||
| 1355 | \pdfsetcolor{\maincolor} | ||
| 1356 | \edef\thiscolor{\maincolor} | ||
| 1357 | \def\lastcolordefs{} | ||
| 1358 | % | ||
| 1359 | \def\makefootline{% | ||
| 1360 | \baselineskip24pt | ||
| 1361 | \line{\pdfsetcolor{\maincolor}\the\footline}% | ||
| 1362 | } | ||
| 1363 | % | ||
| 1364 | \def\makeheadline{% | ||
| 1365 | \vbox to 0pt{% | ||
| 1366 | \vskip-22.5pt | ||
| 1367 | \line{% | ||
| 1368 | \vbox to8.5pt{}% | ||
| 1369 | % Extract \thiscolor definition from the marks. | ||
| 1370 | \getcolormarks | ||
| 1371 | % Typeset the headline with \maincolor, then restore the color. | ||
| 1372 | \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}% | ||
| 1373 | }% | ||
| 1374 | \vss | ||
| 1375 | }% | ||
| 1376 | \nointerlineskip | ||
| 1377 | } | ||
| 1378 | % | ||
| 1379 | % | ||
| 1266 | \pdfcatalog{/PageMode /UseOutlines} | 1380 | \pdfcatalog{/PageMode /UseOutlines} |
| 1267 | % | 1381 | % |
| 1268 | % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). | 1382 | % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). |
| @@ -1279,8 +1393,11 @@ output) for that.)} | |||
| 1279 | \openin 1 #1.jpeg \ifeof 1 | 1393 | \openin 1 #1.jpeg \ifeof 1 |
| 1280 | \openin 1 #1.JPG \ifeof 1 | 1394 | \openin 1 #1.JPG \ifeof 1 |
| 1281 | \openin 1 #1.pdf \ifeof 1 | 1395 | \openin 1 #1.pdf \ifeof 1 |
| 1282 | \errhelp = \nopdfimagehelp | 1396 | \openin 1 #1.PDF \ifeof 1 |
| 1283 | \errmessage{Could not find image file #1 for pdf}% | 1397 | \errhelp = \nopdfimagehelp |
| 1398 | \errmessage{Could not find image file #1 for pdf}% | ||
| 1399 | \else \gdef\pdfimgext{PDF}% | ||
| 1400 | \fi | ||
| 1284 | \else \gdef\pdfimgext{pdf}% | 1401 | \else \gdef\pdfimgext{pdf}% |
| 1285 | \fi | 1402 | \fi |
| 1286 | \else \gdef\pdfimgext{JPG}% | 1403 | \else \gdef\pdfimgext{JPG}% |
| @@ -1294,7 +1411,7 @@ output) for that.)} | |||
| 1294 | \closein 1 | 1411 | \closein 1 |
| 1295 | \endgroup | 1412 | \endgroup |
| 1296 | % | 1413 | % |
| 1297 | % without \immediate, pdftex seg faults when the same image is | 1414 | % without \immediate, ancient pdftex seg faults when the same image is |
| 1298 | % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.) | 1415 | % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.) |
| 1299 | \ifnum\pdftexversion < 14 | 1416 | \ifnum\pdftexversion < 14 |
| 1300 | \immediate\pdfimage | 1417 | \immediate\pdfimage |
| @@ -1329,10 +1446,9 @@ output) for that.)} | |||
| 1329 | % | 1446 | % |
| 1330 | % by default, use a color that is dark enough to print on paper as | 1447 | % by default, use a color that is dark enough to print on paper as |
| 1331 | % nearly black, but still distinguishable for online viewing. | 1448 | % nearly black, but still distinguishable for online viewing. |
| 1332 | % (Defined in pdfcolor.tex.) | 1449 | \def\urlcolor{\rgbDarkRed} |
| 1333 | \let\urlcolor = \BrickRed | 1450 | \def\linkcolor{\rgbDarkRed} |
| 1334 | \let\linkcolor = \BrickRed | 1451 | \def\endlink{\setcolor{\maincolor}\pdfendlink} |
| 1335 | \def\endlink{\Black\pdfendlink} | ||
| 1336 | % | 1452 | % |
| 1337 | % Adding outlines to PDF; macros for calculating structure of outlines | 1453 | % Adding outlines to PDF; macros for calculating structure of outlines |
| 1338 | % come from Petr Olsak | 1454 | % come from Petr Olsak |
| @@ -1460,12 +1576,16 @@ output) for that.)} | |||
| 1460 | % tried to figure out what each command should do in the context | 1576 | % tried to figure out what each command should do in the context |
| 1461 | % of @url. for now, just make @/ a no-op, that's the only one | 1577 | % of @url. for now, just make @/ a no-op, that's the only one |
| 1462 | % people have actually reported a problem with. | 1578 | % people have actually reported a problem with. |
| 1463 | % | 1579 | % |
| 1464 | \normalturnoffactive | 1580 | \normalturnoffactive |
| 1465 | \def\@{@}% | 1581 | \def\@{@}% |
| 1466 | \let\/=\empty | 1582 | \let\/=\empty |
| 1467 | \makevalueexpandable | 1583 | \makevalueexpandable |
| 1468 | \leavevmode\urlcolor | 1584 | % do we want to go so far as to use \indexnofonts instead of just |
| 1585 | % special-casing \var here? | ||
| 1586 | \def\var##1{##1}% | ||
| 1587 | % | ||
| 1588 | \leavevmode\setcolor{\urlcolor}% | ||
| 1469 | \startlink attr{/Border [0 0 0]}% | 1589 | \startlink attr{/Border [0 0 0]}% |
| 1470 | user{/Subtype /Link /A << /S /URI /URI (#1) >>}% | 1590 | user{/Subtype /Link /A << /S /URI /URI (#1) >>}% |
| 1471 | \endgroup} | 1591 | \endgroup} |
| @@ -1492,13 +1612,15 @@ output) for that.)} | |||
| 1492 | {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} | 1612 | {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} |
| 1493 | \def\pdflink#1{% | 1613 | \def\pdflink#1{% |
| 1494 | \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} | 1614 | \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} |
| 1495 | \linkcolor #1\endlink} | 1615 | \setcolor{\linkcolor}#1\endlink} |
| 1496 | \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} | 1616 | \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} |
| 1497 | \else | 1617 | \else |
| 1618 | % non-pdf mode | ||
| 1498 | \let\pdfmkdest = \gobble | 1619 | \let\pdfmkdest = \gobble |
| 1499 | \let\pdfurl = \gobble | 1620 | \let\pdfurl = \gobble |
| 1500 | \let\endlink = \relax | 1621 | \let\endlink = \relax |
| 1501 | \let\linkcolor = \relax | 1622 | \let\setcolor = \gobble |
| 1623 | \let\pdfsetcolor = \gobble | ||
| 1502 | \let\pdfmakeoutlines = \relax | 1624 | \let\pdfmakeoutlines = \relax |
| 1503 | \fi % \ifx\pdfoutput | 1625 | \fi % \ifx\pdfoutput |
| 1504 | 1626 | ||
| @@ -1524,6 +1646,10 @@ output) for that.)} | |||
| 1524 | \def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} | 1646 | \def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} |
| 1525 | \def\tt{\fam=\ttfam \setfontstyle{tt}} | 1647 | \def\tt{\fam=\ttfam \setfontstyle{tt}} |
| 1526 | 1648 | ||
| 1649 | % Unfortunately, we have to override this for titles and the like, since | ||
| 1650 | % in those cases "rm" is bold. Sigh. | ||
| 1651 | \def\rmisbold{\rm\def\curfontstyle{bf}} | ||
| 1652 | |||
| 1527 | % Texinfo sort of supports the sans serif font style, which plain TeX does not. | 1653 | % Texinfo sort of supports the sans serif font style, which plain TeX does not. |
| 1528 | % So we set up a \sf. | 1654 | % So we set up a \sf. |
| 1529 | \newfam\sffam | 1655 | \newfam\sffam |
| @@ -1545,8 +1671,12 @@ output) for that.)} | |||
| 1545 | \def\strutheightpercent{.70833} | 1671 | \def\strutheightpercent{.70833} |
| 1546 | \def\strutdepthpercent {.29167} | 1672 | \def\strutdepthpercent {.29167} |
| 1547 | % | 1673 | % |
| 1674 | % can get a sort of poor man's double spacing by redefining this. | ||
| 1675 | \def\baselinefactor{1} | ||
| 1676 | % | ||
| 1548 | \def\setleading#1{% | 1677 | \def\setleading#1{% |
| 1549 | \normalbaselineskip = #1\relax | 1678 | \dimen0 = #1\relax |
| 1679 | \normalbaselineskip = \baselinefactor\dimen0 | ||
| 1550 | \normallineskip = \lineskipfactor\normalbaselineskip | 1680 | \normallineskip = \lineskipfactor\normalbaselineskip |
| 1551 | \normalbaselines | 1681 | \normalbaselines |
| 1552 | \setbox\strutbox =\hbox{% | 1682 | \setbox\strutbox =\hbox{% |
| @@ -1555,11 +1685,17 @@ output) for that.)} | |||
| 1555 | }% | 1685 | }% |
| 1556 | } | 1686 | } |
| 1557 | 1687 | ||
| 1558 | % | ||
| 1559 | % PDF CMaps. See also LaTeX's t1.cmap. | 1688 | % PDF CMaps. See also LaTeX's t1.cmap. |
| 1560 | % | 1689 | % |
| 1561 | % \cmapOT1 | 1690 | % do nothing with this by default. |
| 1562 | \ifpdf | 1691 | \expandafter\let\csname cmapOT1\endcsname\gobble |
| 1692 | \expandafter\let\csname cmapOT1IT\endcsname\gobble | ||
| 1693 | \expandafter\let\csname cmapOT1TT\endcsname\gobble | ||
| 1694 | |||
| 1695 | % if we are producing pdf, and we have \pdffontattr, then define cmaps. | ||
| 1696 | % (\pdffontattr was introduced many years ago, but people still run | ||
| 1697 | % older pdftex's; it's easy to conditionalize, so we do.) | ||
| 1698 | \ifpdf \ifx\pdffontattr\undefined \else | ||
| 1563 | \begingroup | 1699 | \begingroup |
| 1564 | \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. | 1700 | \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. |
| 1565 | \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap | 1701 | \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap |
| @@ -1807,11 +1943,7 @@ end | |||
| 1807 | \expandafter\edef\csname cmapOT1TT\endcsname#1{% | 1943 | \expandafter\edef\csname cmapOT1TT\endcsname#1{% |
| 1808 | \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% | 1944 | \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% |
| 1809 | }% | 1945 | }% |
| 1810 | \else | 1946 | \fi\fi |
| 1811 | \expandafter\let\csname cmapOT1\endcsname\gobble | ||
| 1812 | \expandafter\let\csname cmapOT1IT\endcsname\gobble | ||
| 1813 | \expandafter\let\csname cmapOT1TT\endcsname\gobble | ||
| 1814 | \fi | ||
| 1815 | 1947 | ||
| 1816 | 1948 | ||
| 1817 | % Set the font macro #1 to the font named #2, adding on the | 1949 | % Set the font macro #1 to the font named #2, adding on the |
| @@ -1825,7 +1957,7 @@ end | |||
| 1825 | } | 1957 | } |
| 1826 | % This is what gets called when #5 of \setfont is empty. | 1958 | % This is what gets called when #5 of \setfont is empty. |
| 1827 | \let\cmap\gobble | 1959 | \let\cmap\gobble |
| 1828 | 1960 | % emacs-page end of cmaps | |
| 1829 | 1961 | ||
| 1830 | % Use cm as the default font prefix. | 1962 | % Use cm as the default font prefix. |
| 1831 | % To specify the font prefix, you must define \fontprefix | 1963 | % To specify the font prefix, you must define \fontprefix |
| @@ -1852,7 +1984,7 @@ end | |||
| 1852 | 1984 | ||
| 1853 | % Definitions for a main text size of 11pt. This is the default in | 1985 | % Definitions for a main text size of 11pt. This is the default in |
| 1854 | % Texinfo. | 1986 | % Texinfo. |
| 1855 | % | 1987 | % |
| 1856 | \def\definetextfontsizexi{% | 1988 | \def\definetextfontsizexi{% |
| 1857 | % Text fonts (11.2pt, magstep1). | 1989 | % Text fonts (11.2pt, magstep1). |
| 1858 | \def\textnominalsize{11pt} | 1990 | \def\textnominalsize{11pt} |
| @@ -1867,6 +1999,7 @@ end | |||
| 1867 | \setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} | 1999 | \setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} |
| 1868 | \font\texti=cmmi10 scaled \mainmagstep | 2000 | \font\texti=cmmi10 scaled \mainmagstep |
| 1869 | \font\textsy=cmsy10 scaled \mainmagstep | 2001 | \font\textsy=cmsy10 scaled \mainmagstep |
| 2002 | \def\textecsize{1095} | ||
| 1870 | 2003 | ||
| 1871 | % A few fonts for @defun names and args. | 2004 | % A few fonts for @defun names and args. |
| 1872 | \setfont\defbf\bfshape{10}{\magstep1}{OT1} | 2005 | \setfont\defbf\bfshape{10}{\magstep1}{OT1} |
| @@ -1886,6 +2019,7 @@ end | |||
| 1886 | \setfont\smallttsl\ttslshape{10}{900}{OT1TT} | 2019 | \setfont\smallttsl\ttslshape{10}{900}{OT1TT} |
| 1887 | \font\smalli=cmmi9 | 2020 | \font\smalli=cmmi9 |
| 1888 | \font\smallsy=cmsy9 | 2021 | \font\smallsy=cmsy9 |
| 2022 | \def\smallecsize{0900} | ||
| 1889 | 2023 | ||
| 1890 | % Fonts for small examples (8pt). | 2024 | % Fonts for small examples (8pt). |
| 1891 | \def\smallernominalsize{8pt} | 2025 | \def\smallernominalsize{8pt} |
| @@ -1899,6 +2033,7 @@ end | |||
| 1899 | \setfont\smallerttsl\ttslshape{10}{800}{OT1TT} | 2033 | \setfont\smallerttsl\ttslshape{10}{800}{OT1TT} |
| 1900 | \font\smalleri=cmmi8 | 2034 | \font\smalleri=cmmi8 |
| 1901 | \font\smallersy=cmsy8 | 2035 | \font\smallersy=cmsy8 |
| 2036 | \def\smallerecsize{0800} | ||
| 1902 | 2037 | ||
| 1903 | % Fonts for title page (20.4pt): | 2038 | % Fonts for title page (20.4pt): |
| 1904 | \def\titlenominalsize{20pt} | 2039 | \def\titlenominalsize{20pt} |
| @@ -1912,8 +2047,7 @@ end | |||
| 1912 | \setfont\titlesc\scbshape{10}{\magstep4}{OT1} | 2047 | \setfont\titlesc\scbshape{10}{\magstep4}{OT1} |
| 1913 | \font\titlei=cmmi12 scaled \magstep3 | 2048 | \font\titlei=cmmi12 scaled \magstep3 |
| 1914 | \font\titlesy=cmsy10 scaled \magstep4 | 2049 | \font\titlesy=cmsy10 scaled \magstep4 |
| 1915 | \def\authorrm{\secrm} | 2050 | \def\titleecsize{2074} |
| 1916 | \def\authortt{\sectt} | ||
| 1917 | 2051 | ||
| 1918 | % Chapter (and unnumbered) fonts (17.28pt). | 2052 | % Chapter (and unnumbered) fonts (17.28pt). |
| 1919 | \def\chapnominalsize{17pt} | 2053 | \def\chapnominalsize{17pt} |
| @@ -1927,6 +2061,7 @@ end | |||
| 1927 | \setfont\chapsc\scbshape{10}{\magstep3}{OT1} | 2061 | \setfont\chapsc\scbshape{10}{\magstep3}{OT1} |
| 1928 | \font\chapi=cmmi12 scaled \magstep2 | 2062 | \font\chapi=cmmi12 scaled \magstep2 |
| 1929 | \font\chapsy=cmsy10 scaled \magstep3 | 2063 | \font\chapsy=cmsy10 scaled \magstep3 |
| 2064 | \def\chapecsize{1728} | ||
| 1930 | 2065 | ||
| 1931 | % Section fonts (14.4pt). | 2066 | % Section fonts (14.4pt). |
| 1932 | \def\secnominalsize{14pt} | 2067 | \def\secnominalsize{14pt} |
| @@ -1940,6 +2075,7 @@ end | |||
| 1940 | \setfont\secsc\scbshape{10}{\magstep2}{OT1} | 2075 | \setfont\secsc\scbshape{10}{\magstep2}{OT1} |
| 1941 | \font\seci=cmmi12 scaled \magstep1 | 2076 | \font\seci=cmmi12 scaled \magstep1 |
| 1942 | \font\secsy=cmsy10 scaled \magstep2 | 2077 | \font\secsy=cmsy10 scaled \magstep2 |
| 2078 | \def\sececsize{1440} | ||
| 1943 | 2079 | ||
| 1944 | % Subsection fonts (13.15pt). | 2080 | % Subsection fonts (13.15pt). |
| 1945 | \def\ssecnominalsize{13pt} | 2081 | \def\ssecnominalsize{13pt} |
| @@ -1953,6 +2089,7 @@ end | |||
| 1953 | \setfont\ssecsc\scbshape{10}{1315}{OT1} | 2089 | \setfont\ssecsc\scbshape{10}{1315}{OT1} |
| 1954 | \font\sseci=cmmi12 scaled \magstephalf | 2090 | \font\sseci=cmmi12 scaled \magstephalf |
| 1955 | \font\ssecsy=cmsy10 scaled 1315 | 2091 | \font\ssecsy=cmsy10 scaled 1315 |
| 2092 | \def\ssececsize{1200} | ||
| 1956 | 2093 | ||
| 1957 | % Reduced fonts for @acro in text (10pt). | 2094 | % Reduced fonts for @acro in text (10pt). |
| 1958 | \def\reducednominalsize{10pt} | 2095 | \def\reducednominalsize{10pt} |
| @@ -1966,6 +2103,7 @@ end | |||
| 1966 | \setfont\reducedttsl\ttslshape{10}{1000}{OT1TT} | 2103 | \setfont\reducedttsl\ttslshape{10}{1000}{OT1TT} |
| 1967 | \font\reducedi=cmmi10 | 2104 | \font\reducedi=cmmi10 |
| 1968 | \font\reducedsy=cmsy10 | 2105 | \font\reducedsy=cmsy10 |
| 2106 | \def\reducedecsize{1000} | ||
| 1969 | 2107 | ||
| 1970 | % reset the current fonts | 2108 | % reset the current fonts |
| 1971 | \textfonts | 2109 | \textfonts |
| @@ -1977,7 +2115,7 @@ end | |||
| 1977 | % section, chapter, etc., sizes following suit. This is for the GNU | 2115 | % section, chapter, etc., sizes following suit. This is for the GNU |
| 1978 | % Press printing of the Emacs 22 manual. Maybe other manuals in the | 2116 | % Press printing of the Emacs 22 manual. Maybe other manuals in the |
| 1979 | % future. Used with @smallbook, which sets the leading to 12pt. | 2117 | % future. Used with @smallbook, which sets the leading to 12pt. |
| 1980 | % | 2118 | % |
| 1981 | \def\definetextfontsizex{% | 2119 | \def\definetextfontsizex{% |
| 1982 | % Text fonts (10pt). | 2120 | % Text fonts (10pt). |
| 1983 | \def\textnominalsize{10pt} | 2121 | \def\textnominalsize{10pt} |
| @@ -1992,6 +2130,7 @@ end | |||
| 1992 | \setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} | 2130 | \setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} |
| 1993 | \font\texti=cmmi10 scaled \mainmagstep | 2131 | \font\texti=cmmi10 scaled \mainmagstep |
| 1994 | \font\textsy=cmsy10 scaled \mainmagstep | 2132 | \font\textsy=cmsy10 scaled \mainmagstep |
| 2133 | \def\textecsize{1000} | ||
| 1995 | 2134 | ||
| 1996 | % A few fonts for @defun names and args. | 2135 | % A few fonts for @defun names and args. |
| 1997 | \setfont\defbf\bfshape{10}{\magstephalf}{OT1} | 2136 | \setfont\defbf\bfshape{10}{\magstephalf}{OT1} |
| @@ -2011,6 +2150,7 @@ end | |||
| 2011 | \setfont\smallttsl\ttslshape{10}{900}{OT1TT} | 2150 | \setfont\smallttsl\ttslshape{10}{900}{OT1TT} |
| 2012 | \font\smalli=cmmi9 | 2151 | \font\smalli=cmmi9 |
| 2013 | \font\smallsy=cmsy9 | 2152 | \font\smallsy=cmsy9 |
| 2153 | \def\smallecsize{0900} | ||
| 2014 | 2154 | ||
| 2015 | % Fonts for small examples (8pt). | 2155 | % Fonts for small examples (8pt). |
| 2016 | \def\smallernominalsize{8pt} | 2156 | \def\smallernominalsize{8pt} |
| @@ -2024,6 +2164,7 @@ end | |||
| 2024 | \setfont\smallerttsl\ttslshape{10}{800}{OT1TT} | 2164 | \setfont\smallerttsl\ttslshape{10}{800}{OT1TT} |
| 2025 | \font\smalleri=cmmi8 | 2165 | \font\smalleri=cmmi8 |
| 2026 | \font\smallersy=cmsy8 | 2166 | \font\smallersy=cmsy8 |
| 2167 | \def\smallerecsize{0800} | ||
| 2027 | 2168 | ||
| 2028 | % Fonts for title page (20.4pt): | 2169 | % Fonts for title page (20.4pt): |
| 2029 | \def\titlenominalsize{20pt} | 2170 | \def\titlenominalsize{20pt} |
| @@ -2037,8 +2178,7 @@ end | |||
| 2037 | \setfont\titlesc\scbshape{10}{\magstep4}{OT1} | 2178 | \setfont\titlesc\scbshape{10}{\magstep4}{OT1} |
| 2038 | \font\titlei=cmmi12 scaled \magstep3 | 2179 | \font\titlei=cmmi12 scaled \magstep3 |
| 2039 | \font\titlesy=cmsy10 scaled \magstep4 | 2180 | \font\titlesy=cmsy10 scaled \magstep4 |
| 2040 | \def\authorrm{\secrm} | 2181 | \def\titleecsize{2074} |
| 2041 | \def\authortt{\sectt} | ||
| 2042 | 2182 | ||
| 2043 | % Chapter fonts (14.4pt). | 2183 | % Chapter fonts (14.4pt). |
| 2044 | \def\chapnominalsize{14pt} | 2184 | \def\chapnominalsize{14pt} |
| @@ -2052,6 +2192,7 @@ end | |||
| 2052 | \setfont\chapsc\scbshape{10}{\magstep2}{OT1} | 2192 | \setfont\chapsc\scbshape{10}{\magstep2}{OT1} |
| 2053 | \font\chapi=cmmi12 scaled \magstep1 | 2193 | \font\chapi=cmmi12 scaled \magstep1 |
| 2054 | \font\chapsy=cmsy10 scaled \magstep2 | 2194 | \font\chapsy=cmsy10 scaled \magstep2 |
| 2195 | \def\chapecsize{1440} | ||
| 2055 | 2196 | ||
| 2056 | % Section fonts (12pt). | 2197 | % Section fonts (12pt). |
| 2057 | \def\secnominalsize{12pt} | 2198 | \def\secnominalsize{12pt} |
| @@ -2063,8 +2204,9 @@ end | |||
| 2063 | \setfont\secsf\sfbshape{12}{1000}{OT1} | 2204 | \setfont\secsf\sfbshape{12}{1000}{OT1} |
| 2064 | \let\secbf\secrm | 2205 | \let\secbf\secrm |
| 2065 | \setfont\secsc\scbshape{10}{\magstep1}{OT1} | 2206 | \setfont\secsc\scbshape{10}{\magstep1}{OT1} |
| 2066 | \font\seci=cmmi12 | 2207 | \font\seci=cmmi12 |
| 2067 | \font\secsy=cmsy10 scaled \magstep1 | 2208 | \font\secsy=cmsy10 scaled \magstep1 |
| 2209 | \def\sececsize{1200} | ||
| 2068 | 2210 | ||
| 2069 | % Subsection fonts (10pt). | 2211 | % Subsection fonts (10pt). |
| 2070 | \def\ssecnominalsize{10pt} | 2212 | \def\ssecnominalsize{10pt} |
| @@ -2078,6 +2220,7 @@ end | |||
| 2078 | \setfont\ssecsc\scbshape{10}{1000}{OT1} | 2220 | \setfont\ssecsc\scbshape{10}{1000}{OT1} |
| 2079 | \font\sseci=cmmi10 | 2221 | \font\sseci=cmmi10 |
| 2080 | \font\ssecsy=cmsy10 | 2222 | \font\ssecsy=cmsy10 |
| 2223 | \def\ssececsize{1000} | ||
| 2081 | 2224 | ||
| 2082 | % Reduced fonts for @acro in text (9pt). | 2225 | % Reduced fonts for @acro in text (9pt). |
| 2083 | \def\reducednominalsize{9pt} | 2226 | \def\reducednominalsize{9pt} |
| @@ -2091,6 +2234,7 @@ end | |||
| 2091 | \setfont\reducedttsl\ttslshape{10}{900}{OT1TT} | 2234 | \setfont\reducedttsl\ttslshape{10}{900}{OT1TT} |
| 2092 | \font\reducedi=cmmi9 | 2235 | \font\reducedi=cmmi9 |
| 2093 | \font\reducedsy=cmsy9 | 2236 | \font\reducedsy=cmsy9 |
| 2237 | \def\reducedecsize{0900} | ||
| 2094 | 2238 | ||
| 2095 | % reduce space between paragraphs | 2239 | % reduce space between paragraphs |
| 2096 | \divide\parskip by 2 | 2240 | \divide\parskip by 2 |
| @@ -2104,7 +2248,7 @@ end | |||
| 2104 | % We provide the user-level command | 2248 | % We provide the user-level command |
| 2105 | % @fonttextsize 10 | 2249 | % @fonttextsize 10 |
| 2106 | % (or 11) to redefine the text font size. pt is assumed. | 2250 | % (or 11) to redefine the text font size. pt is assumed. |
| 2107 | % | 2251 | % |
| 2108 | \def\xword{10} | 2252 | \def\xword{10} |
| 2109 | \def\xiword{11} | 2253 | \def\xiword{11} |
| 2110 | % | 2254 | % |
| @@ -2114,7 +2258,7 @@ end | |||
| 2114 | % | 2258 | % |
| 2115 | % Set \globaldefs so that documents can use this inside @tex, since | 2259 | % Set \globaldefs so that documents can use this inside @tex, since |
| 2116 | % makeinfo 4.8 does not support it, but we need it nonetheless. | 2260 | % makeinfo 4.8 does not support it, but we need it nonetheless. |
| 2117 | % | 2261 | % |
| 2118 | \begingroup \globaldefs=1 | 2262 | \begingroup \globaldefs=1 |
| 2119 | \ifx\textsizearg\xword \definetextfontsizex | 2263 | \ifx\textsizearg\xword \definetextfontsizex |
| 2120 | \else \ifx\textsizearg\xiword \definetextfontsizexi | 2264 | \else \ifx\textsizearg\xiword \definetextfontsizexi |
| @@ -2165,7 +2309,7 @@ end | |||
| 2165 | \def\curfontsize{title}% | 2309 | \def\curfontsize{title}% |
| 2166 | \def\lsize{chap}\def\lllsize{subsec}% | 2310 | \def\lsize{chap}\def\lllsize{subsec}% |
| 2167 | \resetmathfonts \setleading{25pt}} | 2311 | \resetmathfonts \setleading{25pt}} |
| 2168 | \def\titlefont#1{{\titlefonts\rm #1}} | 2312 | \def\titlefont#1{{\titlefonts\rmisbold #1}} |
| 2169 | \def\chapfonts{% | 2313 | \def\chapfonts{% |
| 2170 | \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl | 2314 | \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl |
| 2171 | \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc | 2315 | \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc |
| @@ -2216,6 +2360,16 @@ end | |||
| 2216 | \def\lsize{smaller}\def\lllsize{smaller}% | 2360 | \def\lsize{smaller}\def\lllsize{smaller}% |
| 2217 | \resetmathfonts \setleading{9.5pt}} | 2361 | \resetmathfonts \setleading{9.5pt}} |
| 2218 | 2362 | ||
| 2363 | % Fonts for short table of contents. | ||
| 2364 | \setfont\shortcontrm\rmshape{12}{1000}{OT1} | ||
| 2365 | \setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12 | ||
| 2366 | \setfont\shortcontsl\slshape{12}{1000}{OT1} | ||
| 2367 | \setfont\shortconttt\ttshape{12}{1000}{OT1TT} | ||
| 2368 | |||
| 2369 | % Define these just so they can be easily changed for other fonts. | ||
| 2370 | \def\angleleft{$\langle$} | ||
| 2371 | \def\angleright{$\rangle$} | ||
| 2372 | |||
| 2219 | % Set the fonts to use with the @small... environments. | 2373 | % Set the fonts to use with the @small... environments. |
| 2220 | \let\smallexamplefonts = \smallfonts | 2374 | \let\smallexamplefonts = \smallfonts |
| 2221 | 2375 | ||
| @@ -2229,28 +2383,128 @@ end | |||
| 2229 | % | 2383 | % |
| 2230 | % By the way, for comparison, here's what fits with @example (10pt): | 2384 | % By the way, for comparison, here's what fits with @example (10pt): |
| 2231 | % 8.5x11=71 smallbook=60 a4=75 a5=58 | 2385 | % 8.5x11=71 smallbook=60 a4=75 a5=58 |
| 2232 | % | ||
| 2233 | % I wish the USA used A4 paper. | ||
| 2234 | % --karl, 24jan03. | 2386 | % --karl, 24jan03. |
| 2235 | 2387 | ||
| 2236 | |||
| 2237 | % Set up the default fonts, so we can use them for creating boxes. | 2388 | % Set up the default fonts, so we can use them for creating boxes. |
| 2238 | % | 2389 | % |
| 2239 | \definetextfontsizexi | 2390 | \definetextfontsizexi |
| 2240 | 2391 | ||
| 2241 | % Define these so they can be easily changed for other fonts. | 2392 | |
| 2242 | \def\angleleft{$\langle$} | 2393 | \message{markup,} |
| 2243 | \def\angleright{$\rangle$} | 2394 | |
| 2395 | % Check if we are currently using a typewriter font. Since all the | ||
| 2396 | % Computer Modern typewriter fonts have zero interword stretch (and | ||
| 2397 | % shrink), and it is reasonable to expect all typewriter fonts to have | ||
| 2398 | % this property, we can check that font parameter. | ||
| 2399 | % | ||
| 2400 | \def\ifmonospace{\ifdim\fontdimen3\font=0pt } | ||
| 2401 | |||
| 2402 | % Markup style infrastructure. \defmarkupstylesetup\INITMACRO will | ||
| 2403 | % define and register \INITMACRO to be called on markup style changes. | ||
| 2404 | % \INITMACRO can check \currentmarkupstyle for the innermost | ||
| 2405 | % style and the set of \ifmarkupSTYLE switches for all styles | ||
| 2406 | % currently in effect. | ||
| 2407 | \newif\ifmarkupvar | ||
| 2408 | \newif\ifmarkupsamp | ||
| 2409 | \newif\ifmarkupkey | ||
| 2410 | %\newif\ifmarkupfile % @file == @samp. | ||
| 2411 | %\newif\ifmarkupoption % @option == @samp. | ||
| 2412 | \newif\ifmarkupcode | ||
| 2413 | \newif\ifmarkupkbd | ||
| 2414 | %\newif\ifmarkupenv % @env == @code. | ||
| 2415 | %\newif\ifmarkupcommand % @command == @code. | ||
| 2416 | \newif\ifmarkuptex % @tex (and part of @math, for now). | ||
| 2417 | \newif\ifmarkupexample | ||
| 2418 | \newif\ifmarkupverb | ||
| 2419 | \newif\ifmarkupverbatim | ||
| 2420 | |||
| 2421 | \let\currentmarkupstyle\empty | ||
| 2422 | |||
| 2423 | \def\setupmarkupstyle#1{% | ||
| 2424 | \csname markup#1true\endcsname | ||
| 2425 | \def\currentmarkupstyle{#1}% | ||
| 2426 | \markupstylesetup | ||
| 2427 | } | ||
| 2428 | |||
| 2429 | \let\markupstylesetup\empty | ||
| 2430 | |||
| 2431 | \def\defmarkupstylesetup#1{% | ||
| 2432 | \expandafter\def\expandafter\markupstylesetup | ||
| 2433 | \expandafter{\markupstylesetup #1}% | ||
| 2434 | \def#1% | ||
| 2435 | } | ||
| 2436 | |||
| 2437 | % Markup style setup for left and right quotes. | ||
| 2438 | \defmarkupstylesetup\markupsetuplq{% | ||
| 2439 | \expandafter\let\expandafter \temp \csname markupsetuplq\currentmarkupstyle\endcsname | ||
| 2440 | \ifx\temp\relax \markupsetuplqdefault \else \temp \fi | ||
| 2441 | } | ||
| 2442 | |||
| 2443 | \defmarkupstylesetup\markupsetuprq{% | ||
| 2444 | \expandafter\let\expandafter \temp \csname markupsetuprq\currentmarkupstyle\endcsname | ||
| 2445 | \ifx\temp\relax \markupsetuprqdefault \else \temp \fi | ||
| 2446 | } | ||
| 2447 | |||
| 2448 | { | ||
| 2449 | \catcode`\'=\active | ||
| 2450 | \catcode`\`=\active | ||
| 2451 | |||
| 2452 | \gdef\markupsetuplqdefault{\let`\lq} | ||
| 2453 | \gdef\markupsetuprqdefault{\let'\rq} | ||
| 2454 | |||
| 2455 | \gdef\markupsetcodequoteleft{\let`\codequoteleft} | ||
| 2456 | \gdef\markupsetcodequoteright{\let'\codequoteright} | ||
| 2457 | |||
| 2458 | \gdef\markupsetnoligaturesquoteleft{\let`\noligaturesquoteleft} | ||
| 2459 | } | ||
| 2460 | |||
| 2461 | \let\markupsetuplqcode \markupsetcodequoteleft | ||
| 2462 | \let\markupsetuprqcode \markupsetcodequoteright | ||
| 2463 | \let\markupsetuplqexample \markupsetcodequoteleft | ||
| 2464 | \let\markupsetuprqexample \markupsetcodequoteright | ||
| 2465 | \let\markupsetuplqverb \markupsetcodequoteleft | ||
| 2466 | \let\markupsetuprqverb \markupsetcodequoteright | ||
| 2467 | \let\markupsetuplqverbatim \markupsetcodequoteleft | ||
| 2468 | \let\markupsetuprqverbatim \markupsetcodequoteright | ||
| 2469 | |||
| 2470 | \let\markupsetuplqsamp \markupsetnoligaturesquoteleft | ||
| 2471 | \let\markupsetuplqkbd \markupsetnoligaturesquoteleft | ||
| 2472 | |||
| 2473 | % Allow an option to not replace quotes with a regular directed right | ||
| 2474 | % quote/apostrophe (char 0x27), but instead use the undirected quote | ||
| 2475 | % from cmtt (char 0x0d). The undirected quote is ugly, so don't make it | ||
| 2476 | % the default, but it works for pasting with more pdf viewers (at least | ||
| 2477 | % evince), the lilypond developers report. xpdf does work with the | ||
| 2478 | % regular 0x27. | ||
| 2479 | % | ||
| 2480 | \def\codequoteright{% | ||
| 2481 | \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax | ||
| 2482 | \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax | ||
| 2483 | '% | ||
| 2484 | \else \char'15 \fi | ||
| 2485 | \else \char'15 \fi | ||
| 2486 | } | ||
| 2487 | % | ||
| 2488 | % and a similar option for the left quote char vs. a grave accent. | ||
| 2489 | % Modern fonts display ASCII 0x60 as a grave accent, so some people like | ||
| 2490 | % the code environments to do likewise. | ||
| 2491 | % | ||
| 2492 | \def\codequoteleft{% | ||
| 2493 | \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax | ||
| 2494 | \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax | ||
| 2495 | % [Knuth] pp. 380,381,391 | ||
| 2496 | % \relax disables Spanish ligatures ?` and !` of \tt font. | ||
| 2497 | \relax`% | ||
| 2498 | \else \char'22 \fi | ||
| 2499 | \else \char'22 \fi | ||
| 2500 | } | ||
| 2501 | |||
| 2502 | % [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font. | ||
| 2503 | \def\noligaturesquoteleft{\relax\lq} | ||
| 2244 | 2504 | ||
| 2245 | % Count depth in font-changes, for error checks | 2505 | % Count depth in font-changes, for error checks |
| 2246 | \newcount\fontdepth \fontdepth=0 | 2506 | \newcount\fontdepth \fontdepth=0 |
| 2247 | 2507 | ||
| 2248 | % Fonts for short table of contents. | ||
| 2249 | \setfont\shortcontrm\rmshape{12}{1000}{OT1} | ||
| 2250 | \setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12 | ||
| 2251 | \setfont\shortcontsl\slshape{12}{1000}{OT1} | ||
| 2252 | \setfont\shortconttt\ttshape{12}{1000}{OT1TT} | ||
| 2253 | |||
| 2254 | %% Add scribe-like font environments, plus @l for inline lisp (usually sans | 2508 | %% Add scribe-like font environments, plus @l for inline lisp (usually sans |
| 2255 | %% serif) and @ii for TeX italic | 2509 | %% serif) and @ii for TeX italic |
| 2256 | 2510 | ||
| @@ -2265,17 +2519,22 @@ end | |||
| 2265 | % @var is set to this for defun arguments. | 2519 | % @var is set to this for defun arguments. |
| 2266 | \def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx} | 2520 | \def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx} |
| 2267 | 2521 | ||
| 2268 | % like \smartslanted except unconditionally use \sl. We never want | 2522 | % @cite is like \smartslanted except unconditionally use \sl. We never want |
| 2269 | % ttsl for book titles, do we? | 2523 | % ttsl for book titles, do we? |
| 2270 | \def\cite#1{{\sl #1}\futurelet\next\smartitalicx} | 2524 | \def\cite#1{{\sl #1}\futurelet\next\smartitalicx} |
| 2271 | 2525 | ||
| 2272 | \let\i=\smartitalic | 2526 | \let\i=\smartitalic |
| 2273 | \let\slanted=\smartslanted | 2527 | \let\slanted=\smartslanted |
| 2274 | \let\var=\smartslanted | 2528 | \def\var#1{{\setupmarkupstyle{var}\smartslanted{#1}}} |
| 2275 | \let\dfn=\smartslanted | 2529 | \let\dfn=\smartslanted |
| 2276 | \let\emph=\smartitalic | 2530 | \let\emph=\smartitalic |
| 2277 | 2531 | ||
| 2278 | % @b, explicit bold. | 2532 | % Explicit font changes: @r, @sc, undocumented @ii. |
| 2533 | \def\r#1{{\rm #1}} % roman font | ||
| 2534 | \def\sc#1{{\smallcaps#1}} % smallcaps font | ||
| 2535 | \def\ii#1{{\it #1}} % italic font | ||
| 2536 | |||
| 2537 | % @b, explicit bold. Also @strong. | ||
| 2279 | \def\b#1{{\bf #1}} | 2538 | \def\b#1{{\bf #1}} |
| 2280 | \let\strong=\b | 2539 | \let\strong=\b |
| 2281 | 2540 | ||
| @@ -2307,22 +2566,35 @@ end | |||
| 2307 | \catcode`@=\other | 2566 | \catcode`@=\other |
| 2308 | \def\endofsentencespacefactor{3000}% default | 2567 | \def\endofsentencespacefactor{3000}% default |
| 2309 | 2568 | ||
| 2569 | % @t, explicit typewriter. | ||
| 2310 | \def\t#1{% | 2570 | \def\t#1{% |
| 2311 | {\tt \rawbackslash \plainfrenchspacing #1}% | 2571 | {\tt \rawbackslash \plainfrenchspacing #1}% |
| 2312 | \null | 2572 | \null |
| 2313 | } | 2573 | } |
| 2314 | \def\samp#1{`\tclose{#1}'\null} | 2574 | |
| 2315 | \setfont\keyrm\rmshape{8}{1000}{OT1} | 2575 | % @samp. |
| 2316 | \font\keysy=cmsy9 | 2576 | \def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}} |
| 2317 | \def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% | 2577 | |
| 2318 | \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% | 2578 | % definition of @key that produces a lozenge. Doesn't adjust to text size. |
| 2319 | \vbox{\hrule\kern-0.4pt | 2579 | %\setfont\keyrm\rmshape{8}{1000}{OT1} |
| 2320 | \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% | 2580 | %\font\keysy=cmsy9 |
| 2321 | \kern-0.4pt\hrule}% | 2581 | %\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% |
| 2322 | \kern-.06em\raise0.4pt\hbox{\angleright}}}} | 2582 | % \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% |
| 2323 | \def\key #1{{\nohyphenation \uppercase{#1}}\null} | 2583 | % \vbox{\hrule\kern-0.4pt |
| 2324 | % The old definition, with no lozenge: | 2584 | % \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% |
| 2325 | %\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null} | 2585 | % \kern-0.4pt\hrule}% |
| 2586 | % \kern-.06em\raise0.4pt\hbox{\angleright}}}} | ||
| 2587 | |||
| 2588 | % definition of @key with no lozenge. If the current font is already | ||
| 2589 | % monospace, don't change it; that way, we respect @kbdinputstyle. But | ||
| 2590 | % if it isn't monospace, then use \tt. | ||
| 2591 | % | ||
| 2592 | \def\key#1{{\setupmarkupstyle{key}% | ||
| 2593 | \nohyphenation | ||
| 2594 | \ifmonospace\else\tt\fi | ||
| 2595 | #1}\null} | ||
| 2596 | |||
| 2597 | % ctrl is no longer a Texinfo command. | ||
| 2326 | \def\ctrl #1{{\tt \rawbackslash \hat}#1} | 2598 | \def\ctrl #1{{\tt \rawbackslash \hat}#1} |
| 2327 | 2599 | ||
| 2328 | % @file, @option are the same as @samp. | 2600 | % @file, @option are the same as @samp. |
| @@ -2364,11 +2636,11 @@ end | |||
| 2364 | { | 2636 | { |
| 2365 | \catcode`\-=\active \catcode`\_=\active | 2637 | \catcode`\-=\active \catcode`\_=\active |
| 2366 | \catcode`\'=\active \catcode`\`=\active | 2638 | \catcode`\'=\active \catcode`\`=\active |
| 2639 | \global\let'=\rq \global\let`=\lq % default definitions | ||
| 2367 | % | 2640 | % |
| 2368 | \global\def\code{\begingroup | 2641 | \global\def\code{\begingroup |
| 2369 | \catcode\rquoteChar=\active \catcode\lquoteChar=\active | 2642 | \setupmarkupstyle{code}% |
| 2370 | \let'\codequoteright \let`\codequoteleft | 2643 | % The following should really be moved into \setupmarkupstyle handlers. |
| 2371 | % | ||
| 2372 | \catcode\dashChar=\active \catcode\underChar=\active | 2644 | \catcode\dashChar=\active \catcode\underChar=\active |
| 2373 | \ifallowcodebreaks | 2645 | \ifallowcodebreaks |
| 2374 | \let-\codedash | 2646 | \let-\codedash |
| @@ -2400,7 +2672,7 @@ end | |||
| 2400 | % each of the four underscores in __typeof__. This is undesirable in | 2672 | % each of the four underscores in __typeof__. This is undesirable in |
| 2401 | % some manuals, especially if they don't have long identifiers in | 2673 | % some manuals, especially if they don't have long identifiers in |
| 2402 | % general. @allowcodebreaks provides a way to control this. | 2674 | % general. @allowcodebreaks provides a way to control this. |
| 2403 | % | 2675 | % |
| 2404 | \newif\ifallowcodebreaks \allowcodebreakstrue | 2676 | \newif\ifallowcodebreaks \allowcodebreakstrue |
| 2405 | 2677 | ||
| 2406 | \def\keywordtrue{true} | 2678 | \def\keywordtrue{true} |
| @@ -2420,6 +2692,7 @@ end | |||
| 2420 | 2692 | ||
| 2421 | % @kbd is like @code, except that if the argument is just one @key command, | 2693 | % @kbd is like @code, except that if the argument is just one @key command, |
| 2422 | % then @kbd has no effect. | 2694 | % then @kbd has no effect. |
| 2695 | \def\kbd#1{{\setupmarkupstyle{kbd}\def\look{#1}\expandafter\kbdfoo\look??\par}} | ||
| 2423 | 2696 | ||
| 2424 | % @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), | 2697 | % @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), |
| 2425 | % `example' (@kbd uses ttsl only inside of @example and friends), | 2698 | % `example' (@kbd uses ttsl only inside of @example and friends), |
| @@ -2441,20 +2714,27 @@ end | |||
| 2441 | \def\wordexample{example} | 2714 | \def\wordexample{example} |
| 2442 | \def\wordcode{code} | 2715 | \def\wordcode{code} |
| 2443 | 2716 | ||
| 2444 | % Default is `distinct.' | 2717 | % Default is `distinct'. |
| 2445 | \kbdinputstyle distinct | 2718 | \kbdinputstyle distinct |
| 2446 | 2719 | ||
| 2447 | \def\xkey{\key} | 2720 | \def\xkey{\key} |
| 2448 | \def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}% | 2721 | \def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}% |
| 2449 | \ifx\one\xkey\ifx\threex\three \key{#2}% | 2722 | \ifx\one\xkey\ifx\threex\three \key{#2}% |
| 2450 | \else{\tclose{\kbdfont\look}}\fi | 2723 | \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi |
| 2451 | \else{\tclose{\kbdfont\look}}\fi} | 2724 | \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi} |
| 2452 | 2725 | ||
| 2453 | % For @indicateurl, @env, @command quotes seem unnecessary, so use \code. | 2726 | % For @indicateurl, @env, @command quotes seem unnecessary, so use \code. |
| 2454 | \let\indicateurl=\code | 2727 | \let\indicateurl=\code |
| 2455 | \let\env=\code | 2728 | \let\env=\code |
| 2456 | \let\command=\code | 2729 | \let\command=\code |
| 2457 | 2730 | ||
| 2731 | % @clicksequence{File @click{} Open ...} | ||
| 2732 | \def\clicksequence#1{\begingroup #1\endgroup} | ||
| 2733 | |||
| 2734 | % @clickstyle @arrow (by default) | ||
| 2735 | \parseargdef\clickstyle{\def\click{#1}} | ||
| 2736 | \def\click{\arrow} | ||
| 2737 | |||
| 2458 | % @uref (abbreviation for `urlref') takes an optional (comma-separated) | 2738 | % @uref (abbreviation for `urlref') takes an optional (comma-separated) |
| 2459 | % second argument specifying the text to display and an optional third | 2739 | % second argument specifying the text to display and an optional third |
| 2460 | % arg as text to display instead of (rather than in addition to) the url | 2740 | % arg as text to display instead of (rather than in addition to) the url |
| @@ -2504,34 +2784,20 @@ end | |||
| 2504 | \let\email=\uref | 2784 | \let\email=\uref |
| 2505 | \fi | 2785 | \fi |
| 2506 | 2786 | ||
| 2507 | % Check if we are currently using a typewriter font. Since all the | ||
| 2508 | % Computer Modern typewriter fonts have zero interword stretch (and | ||
| 2509 | % shrink), and it is reasonable to expect all typewriter fonts to have | ||
| 2510 | % this property, we can check that font parameter. | ||
| 2511 | % | ||
| 2512 | \def\ifmonospace{\ifdim\fontdimen3\font=0pt } | ||
| 2513 | |||
| 2514 | % Typeset a dimension, e.g., `in' or `pt'. The only reason for the | 2787 | % Typeset a dimension, e.g., `in' or `pt'. The only reason for the |
| 2515 | % argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. | 2788 | % argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. |
| 2516 | % | 2789 | % |
| 2517 | \def\dmn#1{\thinspace #1} | 2790 | \def\dmn#1{\thinspace #1} |
| 2518 | 2791 | ||
| 2519 | \def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par} | ||
| 2520 | |||
| 2521 | % @l was never documented to mean ``switch to the Lisp font'', | 2792 | % @l was never documented to mean ``switch to the Lisp font'', |
| 2522 | % and it is not used as such in any manual I can find. We need it for | 2793 | % and it is not used as such in any manual I can find. We need it for |
| 2523 | % Polish suppressed-l. --karl, 22sep96. | 2794 | % Polish suppressed-l. --karl, 22sep96. |
| 2524 | %\def\l#1{{\li #1}\null} | 2795 | %\def\l#1{{\li #1}\null} |
| 2525 | 2796 | ||
| 2526 | % Explicit font changes: @r, @sc, undocumented @ii. | ||
| 2527 | \def\r#1{{\rm #1}} % roman font | ||
| 2528 | \def\sc#1{{\smallcaps#1}} % smallcaps font | ||
| 2529 | \def\ii#1{{\it #1}} % italic font | ||
| 2530 | |||
| 2531 | % @acronym for "FBI", "NATO", and the like. | 2797 | % @acronym for "FBI", "NATO", and the like. |
| 2532 | % We print this one point size smaller, since it's intended for | 2798 | % We print this one point size smaller, since it's intended for |
| 2533 | % all-uppercase. | 2799 | % all-uppercase. |
| 2534 | % | 2800 | % |
| 2535 | \def\acronym#1{\doacronym #1,,\finish} | 2801 | \def\acronym#1{\doacronym #1,,\finish} |
| 2536 | \def\doacronym#1,#2,#3\finish{% | 2802 | \def\doacronym#1,#2,#3\finish{% |
| 2537 | {\selectfonts\lsize #1}% | 2803 | {\selectfonts\lsize #1}% |
| @@ -2543,7 +2809,7 @@ end | |||
| 2543 | 2809 | ||
| 2544 | % @abbr for "Comput. J." and the like. | 2810 | % @abbr for "Comput. J." and the like. |
| 2545 | % No font change, but don't do end-of-sentence spacing. | 2811 | % No font change, but don't do end-of-sentence spacing. |
| 2546 | % | 2812 | % |
| 2547 | \def\abbr#1{\doabbr #1,,\finish} | 2813 | \def\abbr#1{\doabbr #1,,\finish} |
| 2548 | \def\doabbr#1,#2,#3\finish{% | 2814 | \def\doabbr#1,#2,#3\finish{% |
| 2549 | {\plainfrenchspacing #1}% | 2815 | {\plainfrenchspacing #1}% |
| @@ -2553,6 +2819,44 @@ end | |||
| 2553 | \fi | 2819 | \fi |
| 2554 | } | 2820 | } |
| 2555 | 2821 | ||
| 2822 | |||
| 2823 | \message{glyphs,} | ||
| 2824 | |||
| 2825 | % @point{}, @result{}, @expansion{}, @print{}, @equiv{}. | ||
| 2826 | % | ||
| 2827 | % Since these characters are used in examples, they should be an even number of | ||
| 2828 | % \tt widths. Each \tt character is 1en, so two makes it 1em. | ||
| 2829 | % | ||
| 2830 | \def\point{$\star$} | ||
| 2831 | \def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}} | ||
| 2832 | \def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} | ||
| 2833 | \def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}} | ||
| 2834 | \def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} | ||
| 2835 | \def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}} | ||
| 2836 | |||
| 2837 | % The @error{} command. | ||
| 2838 | % Adapted from the TeXbook's \boxit. | ||
| 2839 | % | ||
| 2840 | \newbox\errorbox | ||
| 2841 | % | ||
| 2842 | {\tentt \global\dimen0 = 3em}% Width of the box. | ||
| 2843 | \dimen2 = .55pt % Thickness of rules | ||
| 2844 | % The text. (`r' is open on the right, `e' somewhat less so on the left.) | ||
| 2845 | \setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt} | ||
| 2846 | % | ||
| 2847 | \setbox\errorbox=\hbox to \dimen0{\hfil | ||
| 2848 | \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. | ||
| 2849 | \advance\hsize by -2\dimen2 % Rules. | ||
| 2850 | \vbox{% | ||
| 2851 | \hrule height\dimen2 | ||
| 2852 | \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. | ||
| 2853 | \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. | ||
| 2854 | \kern3pt\vrule width\dimen2}% Space to right. | ||
| 2855 | \hrule height\dimen2} | ||
| 2856 | \hfil} | ||
| 2857 | % | ||
| 2858 | \def\error{\leavevmode\lower.7ex\copy\errorbox} | ||
| 2859 | |||
| 2556 | % @pounds{} is a sterling sign, which Knuth put in the CM italic font. | 2860 | % @pounds{} is a sterling sign, which Knuth put in the CM italic font. |
| 2557 | % | 2861 | % |
| 2558 | \def\pounds{{\it\$}} | 2862 | \def\pounds{{\it\$}} |
| @@ -2562,49 +2866,113 @@ end | |||
| 2562 | % Theiling, which support regular, slanted, bold and bold slanted (and | 2866 | % Theiling, which support regular, slanted, bold and bold slanted (and |
| 2563 | % "outlined" (blackboard board, sort of) versions, which we don't need). | 2867 | % "outlined" (blackboard board, sort of) versions, which we don't need). |
| 2564 | % It is available from http://www.ctan.org/tex-archive/fonts/eurosym. | 2868 | % It is available from http://www.ctan.org/tex-archive/fonts/eurosym. |
| 2565 | % | 2869 | % |
| 2566 | % Although only regular is the truly official Euro symbol, we ignore | 2870 | % Although only regular is the truly official Euro symbol, we ignore |
| 2567 | % that. The Euro is designed to be slightly taller than the regular | 2871 | % that. The Euro is designed to be slightly taller than the regular |
| 2568 | % font height. | 2872 | % font height. |
| 2569 | % | 2873 | % |
| 2570 | % feymr - regular | 2874 | % feymr - regular |
| 2571 | % feymo - slanted | 2875 | % feymo - slanted |
| 2572 | % feybr - bold | 2876 | % feybr - bold |
| 2573 | % feybo - bold slanted | 2877 | % feybo - bold slanted |
| 2574 | % | 2878 | % |
| 2575 | % There is no good (free) typewriter version, to my knowledge. | 2879 | % There is no good (free) typewriter version, to my knowledge. |
| 2576 | % A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide. | 2880 | % A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide. |
| 2577 | % Hmm. | 2881 | % Hmm. |
| 2578 | % | 2882 | % |
| 2579 | % Also doesn't work in math. Do we need to do math with euro symbols? | 2883 | % Also doesn't work in math. Do we need to do math with euro symbols? |
| 2580 | % Hope not. | 2884 | % Hope not. |
| 2581 | % | 2885 | % |
| 2582 | % | 2886 | % |
| 2583 | \def\euro{{\eurofont e}} | 2887 | \def\euro{{\eurofont e}} |
| 2584 | \def\eurofont{% | 2888 | \def\eurofont{% |
| 2585 | % We set the font at each command, rather than predefining it in | 2889 | % We set the font at each command, rather than predefining it in |
| 2586 | % \textfonts and the other font-switching commands, so that | 2890 | % \textfonts and the other font-switching commands, so that |
| 2587 | % installations which never need the symbol don't have to have the | 2891 | % installations which never need the symbol don't have to have the |
| 2588 | % font installed. | 2892 | % font installed. |
| 2589 | % | 2893 | % |
| 2590 | % There is only one designed size (nominal 10pt), so we always scale | 2894 | % There is only one designed size (nominal 10pt), so we always scale |
| 2591 | % that to the current nominal size. | 2895 | % that to the current nominal size. |
| 2592 | % | 2896 | % |
| 2593 | % By the way, simply using "at 1em" works for cmr10 and the like, but | 2897 | % By the way, simply using "at 1em" works for cmr10 and the like, but |
| 2594 | % does not work for cmbx10 and other extended/shrunken fonts. | 2898 | % does not work for cmbx10 and other extended/shrunken fonts. |
| 2595 | % | 2899 | % |
| 2596 | \def\eurosize{\csname\curfontsize nominalsize\endcsname}% | 2900 | \def\eurosize{\csname\curfontsize nominalsize\endcsname}% |
| 2597 | % | 2901 | % |
| 2598 | \ifx\curfontstyle\bfstylename | 2902 | \ifx\curfontstyle\bfstylename |
| 2599 | % bold: | 2903 | % bold: |
| 2600 | \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize | 2904 | \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize |
| 2601 | \else | 2905 | \else |
| 2602 | % regular: | 2906 | % regular: |
| 2603 | \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize | 2907 | \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize |
| 2604 | \fi | 2908 | \fi |
| 2605 | \thiseurofont | 2909 | \thiseurofont |
| 2606 | } | 2910 | } |
| 2607 | 2911 | ||
| 2912 | % Glyphs from the EC fonts. We don't use \let for the aliases, because | ||
| 2913 | % sometimes we redefine the original macro, and the alias should reflect | ||
| 2914 | % the redefinition. | ||
| 2915 | % | ||
| 2916 | % Use LaTeX names for the Icelandic letters. | ||
| 2917 | \def\DH{{\ecfont \char"D0}} % Eth | ||
| 2918 | \def\dh{{\ecfont \char"F0}} % eth | ||
| 2919 | \def\TH{{\ecfont \char"DE}} % Thorn | ||
| 2920 | \def\th{{\ecfont \char"FE}} % thorn | ||
| 2921 | % | ||
| 2922 | \def\guillemetleft{{\ecfont \char"13}} | ||
| 2923 | \def\guillemotleft{\guillemetleft} | ||
| 2924 | \def\guillemetright{{\ecfont \char"14}} | ||
| 2925 | \def\guillemotright{\guillemetright} | ||
| 2926 | \def\guilsinglleft{{\ecfont \char"0E}} | ||
| 2927 | \def\guilsinglright{{\ecfont \char"0F}} | ||
| 2928 | \def\quotedblbase{{\ecfont \char"12}} | ||
| 2929 | \def\quotesinglbase{{\ecfont \char"0D}} | ||
| 2930 | % | ||
| 2931 | % This positioning is not perfect (see the ogonek LaTeX package), but | ||
| 2932 | % we have the precomposed glyphs for the most common cases. We put the | ||
| 2933 | % tests to use those glyphs in the single \ogonek macro so we have fewer | ||
| 2934 | % dummy definitions to worry about for index entries, etc. | ||
| 2935 | % | ||
| 2936 | % ogonek is also used with other letters in Lithuanian (IOU), but using | ||
| 2937 | % the precomposed glyphs for those is not so easy since they aren't in | ||
| 2938 | % the same EC font. | ||
| 2939 | \def\ogonek#1{{% | ||
| 2940 | \def\temp{#1}% | ||
| 2941 | \ifx\temp\macrocharA\Aogonek | ||
| 2942 | \else\ifx\temp\macrochara\aogonek | ||
| 2943 | \else\ifx\temp\macrocharE\Eogonek | ||
| 2944 | \else\ifx\temp\macrochare\eogonek | ||
| 2945 | \else | ||
| 2946 | \ecfont \setbox0=\hbox{#1}% | ||
| 2947 | \ifdim\ht0=1ex\accent"0C #1% | ||
| 2948 | \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}% | ||
| 2949 | \fi | ||
| 2950 | \fi\fi\fi\fi | ||
| 2951 | }% | ||
| 2952 | } | ||
| 2953 | \def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A} | ||
| 2954 | \def\aogonek{{\ecfont \char"A1}}\def\macrochara{a} | ||
| 2955 | \def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E} | ||
| 2956 | \def\eogonek{{\ecfont \char"A6}}\def\macrochare{e} | ||
| 2957 | % | ||
| 2958 | % Use the ec* fonts (cm-super in outline format) for non-CM glyphs. | ||
| 2959 | \def\ecfont{% | ||
| 2960 | % We can't distinguish serif/sans and italic/slanted, but this | ||
| 2961 | % is used for crude hacks anyway (like adding French and German | ||
| 2962 | % quotes to documents typeset with CM, where we lose kerning), so | ||
| 2963 | % hopefully nobody will notice/care. | ||
| 2964 | \edef\ecsize{\csname\curfontsize ecsize\endcsname}% | ||
| 2965 | \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}% | ||
| 2966 | \ifx\curfontstyle\bfstylename | ||
| 2967 | % bold: | ||
| 2968 | \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize | ||
| 2969 | \else | ||
| 2970 | % regular: | ||
| 2971 | \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize | ||
| 2972 | \fi | ||
| 2973 | \thisecfont | ||
| 2974 | } | ||
| 2975 | |||
| 2608 | % @registeredsymbol - R in a circle. The font for the R should really | 2976 | % @registeredsymbol - R in a circle. The font for the R should really |
| 2609 | % be smaller yet, but lllsize is the best we can do for now. | 2977 | % be smaller yet, but lllsize is the best we can do for now. |
| 2610 | % Adapted from the plain.tex definition of \copyright. | 2978 | % Adapted from the plain.tex definition of \copyright. |
| @@ -2622,11 +2990,17 @@ end | |||
| 2622 | % Laurent Siebenmann reports \Orb undefined with: | 2990 | % Laurent Siebenmann reports \Orb undefined with: |
| 2623 | % Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 | 2991 | % Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 |
| 2624 | % so we'll define it if necessary. | 2992 | % so we'll define it if necessary. |
| 2625 | % | 2993 | % |
| 2626 | \ifx\Orb\undefined | 2994 | \ifx\Orb\undefined |
| 2627 | \def\Orb{\mathhexbox20D} | 2995 | \def\Orb{\mathhexbox20D} |
| 2628 | \fi | 2996 | \fi |
| 2629 | 2997 | ||
| 2998 | % Quotes. | ||
| 2999 | \chardef\quotedblleft="5C | ||
| 3000 | \chardef\quotedblright=`\" | ||
| 3001 | \chardef\quoteleft=`\` | ||
| 3002 | \chardef\quoteright=`\' | ||
| 3003 | |||
| 2630 | 3004 | ||
| 2631 | \message{page headings,} | 3005 | \message{page headings,} |
| 2632 | 3006 | ||
| @@ -2711,12 +3085,9 @@ end | |||
| 2711 | \let\subtitlerm=\tenrm | 3085 | \let\subtitlerm=\tenrm |
| 2712 | \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} | 3086 | \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} |
| 2713 | 3087 | ||
| 2714 | \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines | ||
| 2715 | \let\tt=\authortt} | ||
| 2716 | |||
| 2717 | \parseargdef\title{% | 3088 | \parseargdef\title{% |
| 2718 | \checkenv\titlepage | 3089 | \checkenv\titlepage |
| 2719 | \leftline{\titlefonts\rm #1} | 3090 | \leftline{\titlefonts\rmisbold #1} |
| 2720 | % print a rule at the page bottom also. | 3091 | % print a rule at the page bottom also. |
| 2721 | \finishedtitlepagefalse | 3092 | \finishedtitlepagefalse |
| 2722 | \vskip4pt \hrule height 4pt width \hsize \vskip4pt | 3093 | \vskip4pt \hrule height 4pt width \hsize \vskip4pt |
| @@ -2737,7 +3108,7 @@ end | |||
| 2737 | \else | 3108 | \else |
| 2738 | \checkenv\titlepage | 3109 | \checkenv\titlepage |
| 2739 | \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi | 3110 | \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi |
| 2740 | {\authorfont \leftline{#1}}% | 3111 | {\secfonts\rmisbold \leftline{#1}}% |
| 2741 | \fi | 3112 | \fi |
| 2742 | } | 3113 | } |
| 2743 | 3114 | ||
| @@ -2796,6 +3167,33 @@ end | |||
| 2796 | 3167 | ||
| 2797 | \parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}} | 3168 | \parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}} |
| 2798 | 3169 | ||
| 3170 | % @evenheadingmarks top \thischapter <- chapter at the top of a page | ||
| 3171 | % @evenheadingmarks bottom \thischapter <- chapter at the bottom of a page | ||
| 3172 | % | ||
| 3173 | % The same set of arguments for: | ||
| 3174 | % | ||
| 3175 | % @oddheadingmarks | ||
| 3176 | % @evenfootingmarks | ||
| 3177 | % @oddfootingmarks | ||
| 3178 | % @everyheadingmarks | ||
| 3179 | % @everyfootingmarks | ||
| 3180 | |||
| 3181 | \def\evenheadingmarks{\headingmarks{even}{heading}} | ||
| 3182 | \def\oddheadingmarks{\headingmarks{odd}{heading}} | ||
| 3183 | \def\evenfootingmarks{\headingmarks{even}{footing}} | ||
| 3184 | \def\oddfootingmarks{\headingmarks{odd}{footing}} | ||
| 3185 | \def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1} | ||
| 3186 | \headingmarks{odd}{heading}{#1} } | ||
| 3187 | \def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1} | ||
| 3188 | \headingmarks{odd}{footing}{#1} } | ||
| 3189 | % #1 = even/odd, #2 = heading/footing, #3 = top/bottom. | ||
| 3190 | \def\headingmarks#1#2#3 {% | ||
| 3191 | \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname | ||
| 3192 | \global\expandafter\let\csname get#1#2marks\endcsname \temp | ||
| 3193 | } | ||
| 3194 | |||
| 3195 | \everyheadingmarks bottom | ||
| 3196 | \everyfootingmarks bottom | ||
| 2799 | 3197 | ||
| 2800 | % @headings double turns headings on for double-sided printing. | 3198 | % @headings double turns headings on for double-sided printing. |
| 2801 | % @headings single turns headings on for single-sided printing. | 3199 | % @headings single turns headings on for single-sided printing. |
| @@ -2938,7 +3336,7 @@ end | |||
| 2938 | % cause the example and the item to crash together. So we use this | 3336 | % cause the example and the item to crash together. So we use this |
| 2939 | % bizarre value of 10001 as a signal to \aboveenvbreak to insert | 3337 | % bizarre value of 10001 as a signal to \aboveenvbreak to insert |
| 2940 | % \parskip glue after all. Section titles are handled this way also. | 3338 | % \parskip glue after all. Section titles are handled this way also. |
| 2941 | % | 3339 | % |
| 2942 | \penalty 10001 | 3340 | \penalty 10001 |
| 2943 | \endgroup | 3341 | \endgroup |
| 2944 | \itemxneedsnegativevskipfalse | 3342 | \itemxneedsnegativevskipfalse |
| @@ -3032,9 +3430,18 @@ end | |||
| 3032 | \parindent=0pt | 3430 | \parindent=0pt |
| 3033 | \parskip=\smallskipamount | 3431 | \parskip=\smallskipamount |
| 3034 | \ifdim\parskip=0pt \parskip=2pt \fi | 3432 | \ifdim\parskip=0pt \parskip=2pt \fi |
| 3433 | % | ||
| 3434 | % Try typesetting the item mark that if the document erroneously says | ||
| 3435 | % something like @itemize @samp (intending @table), there's an error | ||
| 3436 | % right away at the @itemize. It's not the best error message in the | ||
| 3437 | % world, but it's better than leaving it to the @item. This means if | ||
| 3438 | % the user wants an empty mark, they have to say @w{} not just @w. | ||
| 3035 | \def\itemcontents{#1}% | 3439 | \def\itemcontents{#1}% |
| 3440 | \setbox0 = \hbox{\itemcontents}% | ||
| 3441 | % | ||
| 3036 | % @itemize with no arg is equivalent to @itemize @bullet. | 3442 | % @itemize with no arg is equivalent to @itemize @bullet. |
| 3037 | \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi | 3443 | \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi |
| 3444 | % | ||
| 3038 | \let\item=\itemizeitem | 3445 | \let\item=\itemizeitem |
| 3039 | } | 3446 | } |
| 3040 | 3447 | ||
| @@ -3055,6 +3462,7 @@ end | |||
| 3055 | \ifnum\lastpenalty<10000 \parskip=0in \fi | 3462 | \ifnum\lastpenalty<10000 \parskip=0in \fi |
| 3056 | \noindent | 3463 | \noindent |
| 3057 | \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% | 3464 | \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% |
| 3465 | % | ||
| 3058 | \vadjust{\penalty 1200}}% not good to break after first line of item. | 3466 | \vadjust{\penalty 1200}}% not good to break after first line of item. |
| 3059 | \flushcr | 3467 | \flushcr |
| 3060 | } | 3468 | } |
| @@ -3276,12 +3684,19 @@ end | |||
| 3276 | % | 3684 | % |
| 3277 | % @headitem starts a heading row, which we typeset in bold. | 3685 | % @headitem starts a heading row, which we typeset in bold. |
| 3278 | % Assignments have to be global since we are inside the implicit group | 3686 | % Assignments have to be global since we are inside the implicit group |
| 3279 | % of an alignment entry. Note that \everycr resets \everytab. | 3687 | % of an alignment entry. \everycr resets \everytab so we don't have to |
| 3280 | \def\headitem{\checkenv\multitable \crcr \global\everytab={\bf}\the\everytab}% | 3688 | % undo it ourselves. |
| 3689 | \def\headitemfont{\b}% for people to use in the template row; not changeable | ||
| 3690 | \def\headitem{% | ||
| 3691 | \checkenv\multitable | ||
| 3692 | \crcr | ||
| 3693 | \global\everytab={\bf}% can't use \headitemfont since the parsing differs | ||
| 3694 | \the\everytab % for the first item | ||
| 3695 | }% | ||
| 3281 | % | 3696 | % |
| 3282 | % A \tab used to include \hskip1sp. But then the space in a template | 3697 | % A \tab used to include \hskip1sp. But then the space in a template |
| 3283 | % line is not enough. That is bad. So let's go back to just `&' until | 3698 | % line is not enough. That is bad. So let's go back to just `&' until |
| 3284 | % we encounter the problem it was intended to solve again. | 3699 | % we again encounter the problem the 1sp was intended to solve. |
| 3285 | % --karl, nathan@acm.org, 20apr99. | 3700 | % --karl, nathan@acm.org, 20apr99. |
| 3286 | \def\tab{\checkenv\multitable &\the\everytab}% | 3701 | \def\tab{\checkenv\multitable &\the\everytab}% |
| 3287 | 3702 | ||
| @@ -3680,11 +4095,11 @@ end | |||
| 3680 | \def\dosynindex#1#2#3{% | 4095 | \def\dosynindex#1#2#3{% |
| 3681 | % Only do \closeout if we haven't already done it, else we'll end up | 4096 | % Only do \closeout if we haven't already done it, else we'll end up |
| 3682 | % closing the target index. | 4097 | % closing the target index. |
| 3683 | \expandafter \ifx\csname donesynindex#2\endcsname \undefined | 4098 | \expandafter \ifx\csname donesynindex#2\endcsname \relax |
| 3684 | % The \closeout helps reduce unnecessary open files; the limit on the | 4099 | % The \closeout helps reduce unnecessary open files; the limit on the |
| 3685 | % Acorn RISC OS is a mere 16 files. | 4100 | % Acorn RISC OS is a mere 16 files. |
| 3686 | \expandafter\closeout\csname#2indfile\endcsname | 4101 | \expandafter\closeout\csname#2indfile\endcsname |
| 3687 | \expandafter\let\csname\donesynindex#2\endcsname = 1 | 4102 | \expandafter\let\csname donesynindex#2\endcsname = 1 |
| 3688 | \fi | 4103 | \fi |
| 3689 | % redefine \fooindfile: | 4104 | % redefine \fooindfile: |
| 3690 | \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname | 4105 | \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname |
| @@ -3734,7 +4149,7 @@ end | |||
| 3734 | % processing continues to some further point. On the other hand, it | 4149 | % processing continues to some further point. On the other hand, it |
| 3735 | % seems \endinput does not hurt in the printed index arg, since that | 4150 | % seems \endinput does not hurt in the printed index arg, since that |
| 3736 | % is still getting written without apparent harm. | 4151 | % is still getting written without apparent harm. |
| 3737 | % | 4152 | % |
| 3738 | % Sample source (mac-idx3.tex, reported by Graham Percival to | 4153 | % Sample source (mac-idx3.tex, reported by Graham Percival to |
| 3739 | % help-texinfo, 22may06): | 4154 | % help-texinfo, 22may06): |
| 3740 | % @macro funindex {WORD} | 4155 | % @macro funindex {WORD} |
| @@ -3742,12 +4157,12 @@ end | |||
| 3742 | % @end macro | 4157 | % @end macro |
| 3743 | % ... | 4158 | % ... |
| 3744 | % @funindex commtest | 4159 | % @funindex commtest |
| 3745 | % | 4160 | % |
| 3746 | % The above is not enough to reproduce the bug, but it gives the flavor. | 4161 | % The above is not enough to reproduce the bug, but it gives the flavor. |
| 3747 | % | 4162 | % |
| 3748 | % Sample whatsit resulting: | 4163 | % Sample whatsit resulting: |
| 3749 | % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}} | 4164 | % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}} |
| 3750 | % | 4165 | % |
| 3751 | % So: | 4166 | % So: |
| 3752 | \let\endinput = \empty | 4167 | \let\endinput = \empty |
| 3753 | % | 4168 | % |
| @@ -3799,19 +4214,23 @@ end | |||
| 3799 | % Non-English letters. | 4214 | % Non-English letters. |
| 3800 | \definedummyword\AA | 4215 | \definedummyword\AA |
| 3801 | \definedummyword\AE | 4216 | \definedummyword\AE |
| 4217 | \definedummyword\DH | ||
| 3802 | \definedummyword\L | 4218 | \definedummyword\L |
| 3803 | \definedummyword\OE | ||
| 3804 | \definedummyword\O | 4219 | \definedummyword\O |
| 4220 | \definedummyword\OE | ||
| 4221 | \definedummyword\TH | ||
| 3805 | \definedummyword\aa | 4222 | \definedummyword\aa |
| 3806 | \definedummyword\ae | 4223 | \definedummyword\ae |
| 4224 | \definedummyword\dh | ||
| 4225 | \definedummyword\exclamdown | ||
| 3807 | \definedummyword\l | 4226 | \definedummyword\l |
| 3808 | \definedummyword\oe | ||
| 3809 | \definedummyword\o | 4227 | \definedummyword\o |
| 3810 | \definedummyword\ss | 4228 | \definedummyword\oe |
| 3811 | \definedummyword\exclamdown | ||
| 3812 | \definedummyword\questiondown | ||
| 3813 | \definedummyword\ordf | 4229 | \definedummyword\ordf |
| 3814 | \definedummyword\ordm | 4230 | \definedummyword\ordm |
| 4231 | \definedummyword\questiondown | ||
| 4232 | \definedummyword\ss | ||
| 4233 | \definedummyword\th | ||
| 3815 | % | 4234 | % |
| 3816 | % Although these internal commands shouldn't show up, sometimes they do. | 4235 | % Although these internal commands shouldn't show up, sometimes they do. |
| 3817 | \definedummyword\bf | 4236 | \definedummyword\bf |
| @@ -3836,11 +4255,22 @@ end | |||
| 3836 | \definedummyword\equiv | 4255 | \definedummyword\equiv |
| 3837 | \definedummyword\error | 4256 | \definedummyword\error |
| 3838 | \definedummyword\euro | 4257 | \definedummyword\euro |
| 4258 | \definedummyword\guillemetleft | ||
| 4259 | \definedummyword\guillemetright | ||
| 4260 | \definedummyword\guilsinglleft | ||
| 4261 | \definedummyword\guilsinglright | ||
| 3839 | \definedummyword\expansion | 4262 | \definedummyword\expansion |
| 3840 | \definedummyword\minus | 4263 | \definedummyword\minus |
| 4264 | \definedummyword\ogonek | ||
| 3841 | \definedummyword\pounds | 4265 | \definedummyword\pounds |
| 3842 | \definedummyword\point | 4266 | \definedummyword\point |
| 3843 | \definedummyword\print | 4267 | \definedummyword\print |
| 4268 | \definedummyword\quotedblbase | ||
| 4269 | \definedummyword\quotedblleft | ||
| 4270 | \definedummyword\quotedblright | ||
| 4271 | \definedummyword\quoteleft | ||
| 4272 | \definedummyword\quoteright | ||
| 4273 | \definedummyword\quotesinglbase | ||
| 3844 | \definedummyword\result | 4274 | \definedummyword\result |
| 3845 | \definedummyword\textdegree | 4275 | \definedummyword\textdegree |
| 3846 | % | 4276 | % |
| @@ -3875,6 +4305,7 @@ end | |||
| 3875 | \definedummyword\v | 4305 | \definedummyword\v |
| 3876 | \definedummyword\H | 4306 | \definedummyword\H |
| 3877 | \definedummyword\dotaccent | 4307 | \definedummyword\dotaccent |
| 4308 | \definedummyword\ogonek | ||
| 3878 | \definedummyword\ringaccent | 4309 | \definedummyword\ringaccent |
| 3879 | \definedummyword\tieaccent | 4310 | \definedummyword\tieaccent |
| 3880 | \definedummyword\ubaraccent | 4311 | \definedummyword\ubaraccent |
| @@ -3894,6 +4325,7 @@ end | |||
| 3894 | \definedummyword\code | 4325 | \definedummyword\code |
| 3895 | \definedummyword\command | 4326 | \definedummyword\command |
| 3896 | \definedummyword\dfn | 4327 | \definedummyword\dfn |
| 4328 | \definedummyword\email | ||
| 3897 | \definedummyword\emph | 4329 | \definedummyword\emph |
| 3898 | \definedummyword\env | 4330 | \definedummyword\env |
| 3899 | \definedummyword\file | 4331 | \definedummyword\file |
| @@ -3942,19 +4374,23 @@ end | |||
| 3942 | % Non-English letters. | 4374 | % Non-English letters. |
| 3943 | \def\AA{AA}% | 4375 | \def\AA{AA}% |
| 3944 | \def\AE{AE}% | 4376 | \def\AE{AE}% |
| 4377 | \def\DH{DZZ}% | ||
| 3945 | \def\L{L}% | 4378 | \def\L{L}% |
| 3946 | \def\OE{OE}% | 4379 | \def\OE{OE}% |
| 3947 | \def\O{O}% | 4380 | \def\O{O}% |
| 4381 | \def\TH{ZZZ}% | ||
| 3948 | \def\aa{aa}% | 4382 | \def\aa{aa}% |
| 3949 | \def\ae{ae}% | 4383 | \def\ae{ae}% |
| 4384 | \def\dh{dzz}% | ||
| 4385 | \def\exclamdown{!}% | ||
| 3950 | \def\l{l}% | 4386 | \def\l{l}% |
| 3951 | \def\oe{oe}% | 4387 | \def\oe{oe}% |
| 3952 | \def\o{o}% | ||
| 3953 | \def\ss{ss}% | ||
| 3954 | \def\exclamdown{!}% | ||
| 3955 | \def\questiondown{?}% | ||
| 3956 | \def\ordf{a}% | 4388 | \def\ordf{a}% |
| 3957 | \def\ordm{o}% | 4389 | \def\ordm{o}% |
| 4390 | \def\o{o}% | ||
| 4391 | \def\questiondown{?}% | ||
| 4392 | \def\ss{ss}% | ||
| 4393 | \def\th{zzz}% | ||
| 3958 | % | 4394 | % |
| 3959 | \def\LaTeX{LaTeX}% | 4395 | \def\LaTeX{LaTeX}% |
| 3960 | \def\TeX{TeX}% | 4396 | \def\TeX{TeX}% |
| @@ -3964,30 +4400,40 @@ end | |||
| 3964 | \def\bullet{bullet}% | 4400 | \def\bullet{bullet}% |
| 3965 | \def\comma{,}% | 4401 | \def\comma{,}% |
| 3966 | \def\copyright{copyright}% | 4402 | \def\copyright{copyright}% |
| 3967 | \def\registeredsymbol{R}% | ||
| 3968 | \def\dots{...}% | 4403 | \def\dots{...}% |
| 3969 | \def\enddots{...}% | 4404 | \def\enddots{...}% |
| 3970 | \def\equiv{==}% | 4405 | \def\equiv{==}% |
| 3971 | \def\error{error}% | 4406 | \def\error{error}% |
| 3972 | \def\euro{euro}% | 4407 | \def\euro{euro}% |
| 3973 | \def\expansion{==>}% | 4408 | \def\expansion{==>}% |
| 4409 | \def\guillemetleft{<<}% | ||
| 4410 | \def\guillemetright{>>}% | ||
| 4411 | \def\guilsinglleft{<}% | ||
| 4412 | \def\guilsinglright{>}% | ||
| 3974 | \def\minus{-}% | 4413 | \def\minus{-}% |
| 3975 | \def\pounds{pounds}% | ||
| 3976 | \def\point{.}% | 4414 | \def\point{.}% |
| 4415 | \def\pounds{pounds}% | ||
| 3977 | \def\print{-|}% | 4416 | \def\print{-|}% |
| 4417 | \def\quotedblbase{"}% | ||
| 4418 | \def\quotedblleft{"}% | ||
| 4419 | \def\quotedblright{"}% | ||
| 4420 | \def\quoteleft{`}% | ||
| 4421 | \def\quoteright{'}% | ||
| 4422 | \def\quotesinglbase{,}% | ||
| 4423 | \def\registeredsymbol{R}% | ||
| 3978 | \def\result{=>}% | 4424 | \def\result{=>}% |
| 3979 | \def\textdegree{degrees}% | 4425 | \def\textdegree{o}% |
| 3980 | % | 4426 | % |
| 3981 | % We need to get rid of all macros, leaving only the arguments (if present). | 4427 | % We need to get rid of all macros, leaving only the arguments (if present). |
| 3982 | % Of course this is not nearly correct, but it is the best we can do for now. | 4428 | % Of course this is not nearly correct, but it is the best we can do for now. |
| 3983 | % makeinfo does not expand macros in the argument to @deffn, which ends up | 4429 | % makeinfo does not expand macros in the argument to @deffn, which ends up |
| 3984 | % writing an index entry, and texindex isn't prepared for an index sort entry | 4430 | % writing an index entry, and texindex isn't prepared for an index sort entry |
| 3985 | % that starts with \. | 4431 | % that starts with \. |
| 3986 | % | 4432 | % |
| 3987 | % Since macro invocations are followed by braces, we can just redefine them | 4433 | % Since macro invocations are followed by braces, we can just redefine them |
| 3988 | % to take a single TeX argument. The case of a macro invocation that | 4434 | % to take a single TeX argument. The case of a macro invocation that |
| 3989 | % goes to end-of-line is not handled. | 4435 | % goes to end-of-line is not handled. |
| 3990 | % | 4436 | % |
| 3991 | \macrolist | 4437 | \macrolist |
| 3992 | } | 4438 | } |
| 3993 | 4439 | ||
| @@ -4099,7 +4545,7 @@ end | |||
| 4099 | % | 4545 | % |
| 4100 | % If \lastskip is nonzero, that means the last item was a | 4546 | % If \lastskip is nonzero, that means the last item was a |
| 4101 | % skip. And since a skip is discardable, that means this | 4547 | % skip. And since a skip is discardable, that means this |
| 4102 | % -\skip0 glue we're inserting is preceded by a | 4548 | % -\whatsitskip glue we're inserting is preceded by a |
| 4103 | % non-discardable item, therefore it is not a potential | 4549 | % non-discardable item, therefore it is not a potential |
| 4104 | % breakpoint, therefore no \nobreak needed. | 4550 | % breakpoint, therefore no \nobreak needed. |
| 4105 | \ifx\lastskipmacro\zeroskipmacro | 4551 | \ifx\lastskipmacro\zeroskipmacro |
| @@ -4115,7 +4561,7 @@ end | |||
| 4115 | % to re-insert the same penalty (values >10000 are used for various | 4561 | % to re-insert the same penalty (values >10000 are used for various |
| 4116 | % signals); since we just inserted a non-discardable item, any | 4562 | % signals); since we just inserted a non-discardable item, any |
| 4117 | % following glue (such as a \parskip) would be a breakpoint. For example: | 4563 | % following glue (such as a \parskip) would be a breakpoint. For example: |
| 4118 | % | 4564 | % |
| 4119 | % @deffn deffn-whatever | 4565 | % @deffn deffn-whatever |
| 4120 | % @vindex index-whatever | 4566 | % @vindex index-whatever |
| 4121 | % Description. | 4567 | % Description. |
| @@ -4245,7 +4691,7 @@ end | |||
| 4245 | % | 4691 | % |
| 4246 | % A straightforward implementation would start like this: | 4692 | % A straightforward implementation would start like this: |
| 4247 | % \def\entry#1#2{... | 4693 | % \def\entry#1#2{... |
| 4248 | % But this frozes the catcodes in the argument, and can cause problems to | 4694 | % But this freezes the catcodes in the argument, and can cause problems to |
| 4249 | % @code, which sets - active. This problem was fixed by a kludge--- | 4695 | % @code, which sets - active. This problem was fixed by a kludge--- |
| 4250 | % ``-'' was active throughout whole index, but this isn't really right. | 4696 | % ``-'' was active throughout whole index, but this isn't really right. |
| 4251 | % | 4697 | % |
| @@ -4575,11 +5021,15 @@ end | |||
| 4575 | \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi | 5021 | \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi |
| 4576 | \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} | 5022 | \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} |
| 4577 | 5023 | ||
| 4578 | % Each @chapter defines this as the name of the chapter. | 5024 | % Each @chapter defines these (using marks) as the number+name, number |
| 4579 | % page headings and footings can use it. @section does likewise. | 5025 | % and name of the chapter. Page headings and footings can use |
| 4580 | % However, they are not reliable, because we don't use marks. | 5026 | % these. @section does likewise. |
| 4581 | \def\thischapter{} | 5027 | \def\thischapter{} |
| 5028 | \def\thischapternum{} | ||
| 5029 | \def\thischaptername{} | ||
| 4582 | \def\thissection{} | 5030 | \def\thissection{} |
| 5031 | \def\thissectionnum{} | ||
| 5032 | \def\thissectionname{} | ||
| 4583 | 5033 | ||
| 4584 | \newcount\absseclevel % used to calculate proper heading level | 5034 | \newcount\absseclevel % used to calculate proper heading level |
| 4585 | \newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count | 5035 | \newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count |
| @@ -4692,7 +5142,9 @@ end | |||
| 4692 | \gdef\chaplevelprefix{\the\chapno.}% | 5142 | \gdef\chaplevelprefix{\the\chapno.}% |
| 4693 | \resetallfloatnos | 5143 | \resetallfloatnos |
| 4694 | % | 5144 | % |
| 4695 | \message{\putwordChapter\space \the\chapno}% | 5145 | % \putwordChapter can contain complex things in translations. |
| 5146 | \toks0=\expandafter{\putwordChapter}% | ||
| 5147 | \message{\the\toks0 \space \the\chapno}% | ||
| 4696 | % | 5148 | % |
| 4697 | % Write the actual heading. | 5149 | % Write the actual heading. |
| 4698 | \chapmacro{#1}{Ynumbered}{\the\chapno}% | 5150 | \chapmacro{#1}{Ynumbered}{\the\chapno}% |
| @@ -4703,15 +5155,17 @@ end | |||
| 4703 | \global\let\subsubsection = \numberedsubsubsec | 5155 | \global\let\subsubsection = \numberedsubsubsec |
| 4704 | } | 5156 | } |
| 4705 | 5157 | ||
| 4706 | \outer\parseargdef\appendix{\apphead0{#1}} % normally apphead0 calls appendixzzz | 5158 | \outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz |
| 5159 | % | ||
| 4707 | \def\appendixzzz#1{% | 5160 | \def\appendixzzz#1{% |
| 4708 | \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 | 5161 | \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 |
| 4709 | \global\advance\appendixno by 1 | 5162 | \global\advance\appendixno by 1 |
| 4710 | \gdef\chaplevelprefix{\appendixletter.}% | 5163 | \gdef\chaplevelprefix{\appendixletter.}% |
| 4711 | \resetallfloatnos | 5164 | \resetallfloatnos |
| 4712 | % | 5165 | % |
| 4713 | \def\appendixnum{\putwordAppendix\space \appendixletter}% | 5166 | % \putwordAppendix can contain complex things in translations. |
| 4714 | \message{\appendixnum}% | 5167 | \toks0=\expandafter{\putwordAppendix}% |
| 5168 | \message{\the\toks0 \space \appendixletter}% | ||
| 4715 | % | 5169 | % |
| 4716 | \chapmacro{#1}{Yappendix}{\appendixletter}% | 5170 | \chapmacro{#1}{Yappendix}{\appendixletter}% |
| 4717 | % | 5171 | % |
| @@ -4843,7 +5297,6 @@ end | |||
| 4843 | % 3) Likewise, headings look best if no \parindent is used, and | 5297 | % 3) Likewise, headings look best if no \parindent is used, and |
| 4844 | % if justification is not attempted. Hence \raggedright. | 5298 | % if justification is not attempted. Hence \raggedright. |
| 4845 | 5299 | ||
| 4846 | |||
| 4847 | \def\majorheading{% | 5300 | \def\majorheading{% |
| 4848 | {\advance\chapheadingskip by 10pt \chapbreak }% | 5301 | {\advance\chapheadingskip by 10pt \chapbreak }% |
| 4849 | \parsearg\chapheadingzzz | 5302 | \parsearg\chapheadingzzz |
| @@ -4852,8 +5305,8 @@ end | |||
| 4852 | \def\chapheading{\chapbreak \parsearg\chapheadingzzz} | 5305 | \def\chapheading{\chapbreak \parsearg\chapheadingzzz} |
| 4853 | \def\chapheadingzzz#1{% | 5306 | \def\chapheadingzzz#1{% |
| 4854 | {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 | 5307 | {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 |
| 4855 | \parindent=0pt\raggedright | 5308 | \parindent=0pt\ptexraggedright |
| 4856 | \rm #1\hfill}}% | 5309 | \rmisbold #1\hfill}}% |
| 4857 | \bigskip \par\penalty 200\relax | 5310 | \bigskip \par\penalty 200\relax |
| 4858 | \suppressfirstparagraphindent | 5311 | \suppressfirstparagraphindent |
| 4859 | } | 5312 | } |
| @@ -4880,7 +5333,20 @@ end | |||
| 4880 | 5333 | ||
| 4881 | \def\chapbreak{\dobreak \chapheadingskip {-4000}} | 5334 | \def\chapbreak{\dobreak \chapheadingskip {-4000}} |
| 4882 | \def\chappager{\par\vfill\supereject} | 5335 | \def\chappager{\par\vfill\supereject} |
| 4883 | \def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi} | 5336 | % Because \domark is called before \chapoddpage, the filler page will |
| 5337 | % get the headings for the next chapter, which is wrong. But we don't | ||
| 5338 | % care -- we just disable all headings on the filler page. | ||
| 5339 | \def\chapoddpage{% | ||
| 5340 | \chappager | ||
| 5341 | \ifodd\pageno \else | ||
| 5342 | \begingroup | ||
| 5343 | \evenheadline={\hfil}\evenfootline={\hfil}% | ||
| 5344 | \oddheadline={\hfil}\oddfootline={\hfil}% | ||
| 5345 | \hbox to 0pt{}% | ||
| 5346 | \chappager | ||
| 5347 | \endgroup | ||
| 5348 | \fi | ||
| 5349 | } | ||
| 4884 | 5350 | ||
| 4885 | \def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} | 5351 | \def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} |
| 4886 | 5352 | ||
| @@ -4914,45 +5380,78 @@ end | |||
| 4914 | \def\Yappendixkeyword{Yappendix} | 5380 | \def\Yappendixkeyword{Yappendix} |
| 4915 | % | 5381 | % |
| 4916 | \def\chapmacro#1#2#3{% | 5382 | \def\chapmacro#1#2#3{% |
| 5383 | % Insert the first mark before the heading break (see notes for \domark). | ||
| 5384 | \let\prevchapterdefs=\lastchapterdefs | ||
| 5385 | \let\prevsectiondefs=\lastsectiondefs | ||
| 5386 | \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}% | ||
| 5387 | \gdef\thissection{}}% | ||
| 5388 | % | ||
| 5389 | \def\temptype{#2}% | ||
| 5390 | \ifx\temptype\Ynothingkeyword | ||
| 5391 | \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% | ||
| 5392 | \gdef\thischapter{\thischaptername}}% | ||
| 5393 | \else\ifx\temptype\Yomitfromtockeyword | ||
| 5394 | \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% | ||
| 5395 | \gdef\thischapter{}}% | ||
| 5396 | \else\ifx\temptype\Yappendixkeyword | ||
| 5397 | \toks0={#1}% | ||
| 5398 | \xdef\lastchapterdefs{% | ||
| 5399 | \gdef\noexpand\thischaptername{\the\toks0}% | ||
| 5400 | \gdef\noexpand\thischapternum{\appendixletter}% | ||
| 5401 | % \noexpand\putwordAppendix avoids expanding indigestible | ||
| 5402 | % commands in some of the translations. | ||
| 5403 | \gdef\noexpand\thischapter{\noexpand\putwordAppendix{} | ||
| 5404 | \noexpand\thischapternum: | ||
| 5405 | \noexpand\thischaptername}% | ||
| 5406 | }% | ||
| 5407 | \else | ||
| 5408 | \toks0={#1}% | ||
| 5409 | \xdef\lastchapterdefs{% | ||
| 5410 | \gdef\noexpand\thischaptername{\the\toks0}% | ||
| 5411 | \gdef\noexpand\thischapternum{\the\chapno}% | ||
| 5412 | % \noexpand\putwordChapter avoids expanding indigestible | ||
| 5413 | % commands in some of the translations. | ||
| 5414 | \gdef\noexpand\thischapter{\noexpand\putwordChapter{} | ||
| 5415 | \noexpand\thischapternum: | ||
| 5416 | \noexpand\thischaptername}% | ||
| 5417 | }% | ||
| 5418 | \fi\fi\fi | ||
| 5419 | % | ||
| 5420 | % Output the mark. Pass it through \safewhatsit, to take care of | ||
| 5421 | % the preceding space. | ||
| 5422 | \safewhatsit\domark | ||
| 5423 | % | ||
| 5424 | % Insert the chapter heading break. | ||
| 4917 | \pchapsepmacro | 5425 | \pchapsepmacro |
| 5426 | % | ||
| 5427 | % Now the second mark, after the heading break. No break points | ||
| 5428 | % between here and the heading. | ||
| 5429 | \let\prevchapterdefs=\lastchapterdefs | ||
| 5430 | \let\prevsectiondefs=\lastsectiondefs | ||
| 5431 | \domark | ||
| 5432 | % | ||
| 4918 | {% | 5433 | {% |
| 4919 | \chapfonts \rm | 5434 | \chapfonts \rmisbold |
| 4920 | % | 5435 | % |
| 4921 | % Have to define \thissection before calling \donoderef, because the | 5436 | % Have to define \lastsection before calling \donoderef, because the |
| 4922 | % xref code eventually uses it. On the other hand, it has to be called | 5437 | % xref code eventually uses it. On the other hand, it has to be called |
| 4923 | % after \pchapsepmacro, or the headline will change too soon. | 5438 | % after \pchapsepmacro, or the headline will change too soon. |
| 4924 | \gdef\thissection{#1}% | 5439 | \gdef\lastsection{#1}% |
| 4925 | \gdef\thischaptername{#1}% | ||
| 4926 | % | 5440 | % |
| 4927 | % Only insert the separating space if we have a chapter/appendix | 5441 | % Only insert the separating space if we have a chapter/appendix |
| 4928 | % number, and don't print the unnumbered ``number''. | 5442 | % number, and don't print the unnumbered ``number''. |
| 4929 | \def\temptype{#2}% | ||
| 4930 | \ifx\temptype\Ynothingkeyword | 5443 | \ifx\temptype\Ynothingkeyword |
| 4931 | \setbox0 = \hbox{}% | 5444 | \setbox0 = \hbox{}% |
| 4932 | \def\toctype{unnchap}% | 5445 | \def\toctype{unnchap}% |
| 4933 | \gdef\thischapternum{}% | ||
| 4934 | \gdef\thischapter{#1}% | ||
| 4935 | \else\ifx\temptype\Yomitfromtockeyword | 5446 | \else\ifx\temptype\Yomitfromtockeyword |
| 4936 | \setbox0 = \hbox{}% contents like unnumbered, but no toc entry | 5447 | \setbox0 = \hbox{}% contents like unnumbered, but no toc entry |
| 4937 | \def\toctype{omit}% | 5448 | \def\toctype{omit}% |
| 4938 | \gdef\thischapternum{}% | ||
| 4939 | \gdef\thischapter{}% | ||
| 4940 | \else\ifx\temptype\Yappendixkeyword | 5449 | \else\ifx\temptype\Yappendixkeyword |
| 4941 | \setbox0 = \hbox{\putwordAppendix{} #3\enspace}% | 5450 | \setbox0 = \hbox{\putwordAppendix{} #3\enspace}% |
| 4942 | \def\toctype{app}% | 5451 | \def\toctype{app}% |
| 4943 | \xdef\thischapternum{\appendixletter}% | ||
| 4944 | % We don't substitute the actual chapter name into \thischapter | ||
| 4945 | % because we don't want its macros evaluated now. And we don't | ||
| 4946 | % use \thissection because that changes with each section. | ||
| 4947 | % | ||
| 4948 | \xdef\thischapter{\putwordAppendix{} \appendixletter: | ||
| 4949 | \noexpand\thischaptername}% | ||
| 4950 | \else | 5452 | \else |
| 4951 | \setbox0 = \hbox{#3\enspace}% | 5453 | \setbox0 = \hbox{#3\enspace}% |
| 4952 | \def\toctype{numchap}% | 5454 | \def\toctype{numchap}% |
| 4953 | \xdef\thischapternum{\the\chapno}% | ||
| 4954 | \xdef\thischapter{\putwordChapter{} \the\chapno: | ||
| 4955 | \noexpand\thischaptername}% | ||
| 4956 | \fi\fi\fi | 5455 | \fi\fi\fi |
| 4957 | % | 5456 | % |
| 4958 | % Write the toc entry for this chapter. Must come before the | 5457 | % Write the toc entry for this chapter. Must come before the |
| @@ -4968,7 +5467,8 @@ end | |||
| 4968 | \donoderef{#2}% | 5467 | \donoderef{#2}% |
| 4969 | % | 5468 | % |
| 4970 | % Typeset the actual heading. | 5469 | % Typeset the actual heading. |
| 4971 | \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright | 5470 | \nobreak % Avoid page breaks at the interline glue. |
| 5471 | \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright | ||
| 4972 | \hangindent=\wd0 \centerparametersmaybe | 5472 | \hangindent=\wd0 \centerparametersmaybe |
| 4973 | \unhbox0 #1\par}% | 5473 | \unhbox0 #1\par}% |
| 4974 | }% | 5474 | }% |
| @@ -4992,8 +5492,8 @@ end | |||
| 4992 | % | 5492 | % |
| 4993 | \def\unnchfopen #1{% | 5493 | \def\unnchfopen #1{% |
| 4994 | \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 | 5494 | \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 |
| 4995 | \parindent=0pt\raggedright | 5495 | \parindent=0pt\ptexraggedright |
| 4996 | \rm #1\hfill}}\bigskip \par\nobreak | 5496 | \rmisbold #1\hfill}}\bigskip \par\nobreak |
| 4997 | } | 5497 | } |
| 4998 | \def\chfopen #1#2{\chapoddpage {\chapfonts | 5498 | \def\chfopen #1#2{\chapoddpage {\chapfonts |
| 4999 | \vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% | 5499 | \vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% |
| @@ -5002,7 +5502,7 @@ end | |||
| 5002 | \def\centerchfopen #1{% | 5502 | \def\centerchfopen #1{% |
| 5003 | \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 | 5503 | \chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 |
| 5004 | \parindent=0pt | 5504 | \parindent=0pt |
| 5005 | \hfill {\rm #1}\hfill}}\bigskip \par\nobreak | 5505 | \hfill {\rmisbold #1}\hfill}}\bigskip \par\nobreak |
| 5006 | } | 5506 | } |
| 5007 | \def\CHAPFopen{% | 5507 | \def\CHAPFopen{% |
| 5008 | \global\let\chapmacro=\chfopen | 5508 | \global\let\chapmacro=\chfopen |
| @@ -5030,36 +5530,89 @@ end | |||
| 5030 | % the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the | 5530 | % the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the |
| 5031 | % section number. | 5531 | % section number. |
| 5032 | % | 5532 | % |
| 5533 | \def\seckeyword{sec} | ||
| 5534 | % | ||
| 5033 | \def\sectionheading#1#2#3#4{% | 5535 | \def\sectionheading#1#2#3#4{% |
| 5034 | {% | 5536 | {% |
| 5035 | % Switch to the right set of fonts. | 5537 | % Switch to the right set of fonts. |
| 5036 | \csname #2fonts\endcsname \rm | 5538 | \csname #2fonts\endcsname \rmisbold |
| 5539 | % | ||
| 5540 | \def\sectionlevel{#2}% | ||
| 5541 | \def\temptype{#3}% | ||
| 5542 | % | ||
| 5543 | % Insert first mark before the heading break (see notes for \domark). | ||
| 5544 | \let\prevsectiondefs=\lastsectiondefs | ||
| 5545 | \ifx\temptype\Ynothingkeyword | ||
| 5546 | \ifx\sectionlevel\seckeyword | ||
| 5547 | \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}% | ||
| 5548 | \gdef\thissection{\thissectionname}}% | ||
| 5549 | \fi | ||
| 5550 | \else\ifx\temptype\Yomitfromtockeyword | ||
| 5551 | % Don't redefine \thissection. | ||
| 5552 | \else\ifx\temptype\Yappendixkeyword | ||
| 5553 | \ifx\sectionlevel\seckeyword | ||
| 5554 | \toks0={#1}% | ||
| 5555 | \xdef\lastsectiondefs{% | ||
| 5556 | \gdef\noexpand\thissectionname{\the\toks0}% | ||
| 5557 | \gdef\noexpand\thissectionnum{#4}% | ||
| 5558 | % \noexpand\putwordSection avoids expanding indigestible | ||
| 5559 | % commands in some of the translations. | ||
| 5560 | \gdef\noexpand\thissection{\noexpand\putwordSection{} | ||
| 5561 | \noexpand\thissectionnum: | ||
| 5562 | \noexpand\thissectionname}% | ||
| 5563 | }% | ||
| 5564 | \fi | ||
| 5565 | \else | ||
| 5566 | \ifx\sectionlevel\seckeyword | ||
| 5567 | \toks0={#1}% | ||
| 5568 | \xdef\lastsectiondefs{% | ||
| 5569 | \gdef\noexpand\thissectionname{\the\toks0}% | ||
| 5570 | \gdef\noexpand\thissectionnum{#4}% | ||
| 5571 | % \noexpand\putwordSection avoids expanding indigestible | ||
| 5572 | % commands in some of the translations. | ||
| 5573 | \gdef\noexpand\thissection{\noexpand\putwordSection{} | ||
| 5574 | \noexpand\thissectionnum: | ||
| 5575 | \noexpand\thissectionname}% | ||
| 5576 | }% | ||
| 5577 | \fi | ||
| 5578 | \fi\fi\fi | ||
| 5579 | % | ||
| 5580 | % Go into vertical mode. Usually we'll already be there, but we | ||
| 5581 | % don't want the following whatsit to end up in a preceding paragraph | ||
| 5582 | % if the document didn't happen to have a blank line. | ||
| 5583 | \par | ||
| 5584 | % | ||
| 5585 | % Output the mark. Pass it through \safewhatsit, to take care of | ||
| 5586 | % the preceding space. | ||
| 5587 | \safewhatsit\domark | ||
| 5037 | % | 5588 | % |
| 5038 | % Insert space above the heading. | 5589 | % Insert space above the heading. |
| 5039 | \csname #2headingbreak\endcsname | 5590 | \csname #2headingbreak\endcsname |
| 5040 | % | 5591 | % |
| 5041 | % Only insert the space after the number if we have a section number. | 5592 | % Now the second mark, after the heading break. No break points |
| 5042 | \def\sectionlevel{#2}% | 5593 | % between here and the heading. |
| 5043 | \def\temptype{#3}% | 5594 | \let\prevsectiondefs=\lastsectiondefs |
| 5595 | \domark | ||
| 5044 | % | 5596 | % |
| 5597 | % Only insert the space after the number if we have a section number. | ||
| 5045 | \ifx\temptype\Ynothingkeyword | 5598 | \ifx\temptype\Ynothingkeyword |
| 5046 | \setbox0 = \hbox{}% | 5599 | \setbox0 = \hbox{}% |
| 5047 | \def\toctype{unn}% | 5600 | \def\toctype{unn}% |
| 5048 | \gdef\thissection{#1}% | 5601 | \gdef\lastsection{#1}% |
| 5049 | \else\ifx\temptype\Yomitfromtockeyword | 5602 | \else\ifx\temptype\Yomitfromtockeyword |
| 5050 | % for @headings -- no section number, don't include in toc, | 5603 | % for @headings -- no section number, don't include in toc, |
| 5051 | % and don't redefine \thissection. | 5604 | % and don't redefine \lastsection. |
| 5052 | \setbox0 = \hbox{}% | 5605 | \setbox0 = \hbox{}% |
| 5053 | \def\toctype{omit}% | 5606 | \def\toctype{omit}% |
| 5054 | \let\sectionlevel=\empty | 5607 | \let\sectionlevel=\empty |
| 5055 | \else\ifx\temptype\Yappendixkeyword | 5608 | \else\ifx\temptype\Yappendixkeyword |
| 5056 | \setbox0 = \hbox{#4\enspace}% | 5609 | \setbox0 = \hbox{#4\enspace}% |
| 5057 | \def\toctype{app}% | 5610 | \def\toctype{app}% |
| 5058 | \gdef\thissection{#1}% | 5611 | \gdef\lastsection{#1}% |
| 5059 | \else | 5612 | \else |
| 5060 | \setbox0 = \hbox{#4\enspace}% | 5613 | \setbox0 = \hbox{#4\enspace}% |
| 5061 | \def\toctype{num}% | 5614 | \def\toctype{num}% |
| 5062 | \gdef\thissection{#1}% | 5615 | \gdef\lastsection{#1}% |
| 5063 | \fi\fi\fi | 5616 | \fi\fi\fi |
| 5064 | % | 5617 | % |
| 5065 | % Write the toc entry (before \donoderef). See comments in \chapmacro. | 5618 | % Write the toc entry (before \donoderef). See comments in \chapmacro. |
| @@ -5078,7 +5631,7 @@ end | |||
| 5078 | \nobreak | 5631 | \nobreak |
| 5079 | % | 5632 | % |
| 5080 | % Output the actual section heading. | 5633 | % Output the actual section heading. |
| 5081 | \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright | 5634 | \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright |
| 5082 | \hangindent=\wd0 % zero if no section number | 5635 | \hangindent=\wd0 % zero if no section number |
| 5083 | \unhbox0 #1}% | 5636 | \unhbox0 #1}% |
| 5084 | }% | 5637 | }% |
| @@ -5094,11 +5647,11 @@ end | |||
| 5094 | % glue accumulate. (Not a breakpoint because it's preceded by a | 5647 | % glue accumulate. (Not a breakpoint because it's preceded by a |
| 5095 | % discardable item.) | 5648 | % discardable item.) |
| 5096 | \vskip-\parskip | 5649 | \vskip-\parskip |
| 5097 | % | 5650 | % |
| 5098 | % This is purely so the last item on the list is a known \penalty > | 5651 | % This is purely so the last item on the list is a known \penalty > |
| 5099 | % 10000. This is so \startdefun can avoid allowing breakpoints after | 5652 | % 10000. This is so \startdefun can avoid allowing breakpoints after |
| 5100 | % section headings. Otherwise, it would insert a valid breakpoint between: | 5653 | % section headings. Otherwise, it would insert a valid breakpoint between: |
| 5101 | % | 5654 | % |
| 5102 | % @section sec-whatever | 5655 | % @section sec-whatever |
| 5103 | % @deffn def-whatever | 5656 | % @deffn def-whatever |
| 5104 | \penalty 10001 | 5657 | \penalty 10001 |
| @@ -5156,7 +5709,7 @@ end | |||
| 5156 | % These characters do not print properly in the Computer Modern roman | 5709 | % These characters do not print properly in the Computer Modern roman |
| 5157 | % fonts, so we must take special care. This is more or less redundant | 5710 | % fonts, so we must take special care. This is more or less redundant |
| 5158 | % with the Texinfo input format setup at the end of this file. | 5711 | % with the Texinfo input format setup at the end of this file. |
| 5159 | % | 5712 | % |
| 5160 | \def\activecatcodes{% | 5713 | \def\activecatcodes{% |
| 5161 | \catcode`\"=\active | 5714 | \catcode`\"=\active |
| 5162 | \catcode`\$=\active | 5715 | \catcode`\$=\active |
| @@ -5193,7 +5746,6 @@ end | |||
| 5193 | % | 5746 | % |
| 5194 | % Don't need to put `Contents' or `Short Contents' in the headline. | 5747 | % Don't need to put `Contents' or `Short Contents' in the headline. |
| 5195 | % It is abundantly clear what they are. | 5748 | % It is abundantly clear what they are. |
| 5196 | \def\thischapter{}% | ||
| 5197 | \chapmacro{#1}{Yomitfromtoc}{}% | 5749 | \chapmacro{#1}{Yomitfromtoc}{}% |
| 5198 | % | 5750 | % |
| 5199 | \savepageno = \pageno | 5751 | \savepageno = \pageno |
| @@ -5207,7 +5759,7 @@ end | |||
| 5207 | 5759 | ||
| 5208 | % redefined for the two-volume lispref. We always output on | 5760 | % redefined for the two-volume lispref. We always output on |
| 5209 | % \jobname.toc even if this is redefined. | 5761 | % \jobname.toc even if this is redefined. |
| 5210 | % | 5762 | % |
| 5211 | \def\tocreadfilename{\jobname.toc} | 5763 | \def\tocreadfilename{\jobname.toc} |
| 5212 | 5764 | ||
| 5213 | % Normal (long) toc. | 5765 | % Normal (long) toc. |
| @@ -5377,45 +5929,12 @@ end | |||
| 5377 | \message{environments,} | 5929 | \message{environments,} |
| 5378 | % @foo ... @end foo. | 5930 | % @foo ... @end foo. |
| 5379 | 5931 | ||
| 5380 | % @point{}, @result{}, @expansion{}, @print{}, @equiv{}. | ||
| 5381 | % | ||
| 5382 | % Since these characters are used in examples, it should be an even number of | ||
| 5383 | % \tt widths. Each \tt character is 1en, so two makes it 1em. | ||
| 5384 | % | ||
| 5385 | \def\point{$\star$} | ||
| 5386 | \def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} | ||
| 5387 | \def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}} | ||
| 5388 | \def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} | ||
| 5389 | \def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}} | ||
| 5390 | |||
| 5391 | % The @error{} command. | ||
| 5392 | % Adapted from the TeXbook's \boxit. | ||
| 5393 | % | ||
| 5394 | \newbox\errorbox | ||
| 5395 | % | ||
| 5396 | {\tentt \global\dimen0 = 3em}% Width of the box. | ||
| 5397 | \dimen2 = .55pt % Thickness of rules | ||
| 5398 | % The text. (`r' is open on the right, `e' somewhat less so on the left.) | ||
| 5399 | \setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt} | ||
| 5400 | % | ||
| 5401 | \setbox\errorbox=\hbox to \dimen0{\hfil | ||
| 5402 | \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. | ||
| 5403 | \advance\hsize by -2\dimen2 % Rules. | ||
| 5404 | \vbox{% | ||
| 5405 | \hrule height\dimen2 | ||
| 5406 | \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. | ||
| 5407 | \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. | ||
| 5408 | \kern3pt\vrule width\dimen2}% Space to right. | ||
| 5409 | \hrule height\dimen2} | ||
| 5410 | \hfil} | ||
| 5411 | % | ||
| 5412 | \def\error{\leavevmode\lower.7ex\copy\errorbox} | ||
| 5413 | |||
| 5414 | % @tex ... @end tex escapes into raw Tex temporarily. | 5932 | % @tex ... @end tex escapes into raw Tex temporarily. |
| 5415 | % One exception: @ is still an escape character, so that @end tex works. | 5933 | % One exception: @ is still an escape character, so that @end tex works. |
| 5416 | % But \@ or @@ will get a plain tex @ character. | 5934 | % But \@ or @@ will get a plain tex @ character. |
| 5417 | 5935 | ||
| 5418 | \envdef\tex{% | 5936 | \envdef\tex{% |
| 5937 | \setupmarkupstyle{tex}% | ||
| 5419 | \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 | 5938 | \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 |
| 5420 | \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 | 5939 | \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 |
| 5421 | \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie | 5940 | \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie |
| @@ -5425,6 +5944,8 @@ end | |||
| 5425 | \catcode `\|=\other | 5944 | \catcode `\|=\other |
| 5426 | \catcode `\<=\other | 5945 | \catcode `\<=\other |
| 5427 | \catcode `\>=\other | 5946 | \catcode `\>=\other |
| 5947 | \catcode`\`=\other | ||
| 5948 | \catcode`\'=\other | ||
| 5428 | \escapechar=`\\ | 5949 | \escapechar=`\\ |
| 5429 | % | 5950 | % |
| 5430 | \let\b=\ptexb | 5951 | \let\b=\ptexb |
| @@ -5444,6 +5965,7 @@ end | |||
| 5444 | \let\/=\ptexslash | 5965 | \let\/=\ptexslash |
| 5445 | \let\*=\ptexstar | 5966 | \let\*=\ptexstar |
| 5446 | \let\t=\ptext | 5967 | \let\t=\ptext |
| 5968 | \expandafter \let\csname top\endcsname=\ptextop % outer | ||
| 5447 | \let\frenchspacing=\plainfrenchspacing | 5969 | \let\frenchspacing=\plainfrenchspacing |
| 5448 | % | 5970 | % |
| 5449 | \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% | 5971 | \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% |
| @@ -5559,6 +6081,7 @@ end | |||
| 5559 | 6081 | ||
| 5560 | % This macro is called at the beginning of all the @example variants, | 6082 | % This macro is called at the beginning of all the @example variants, |
| 5561 | % inside a group. | 6083 | % inside a group. |
| 6084 | \newdimen\nonfillparindent | ||
| 5562 | \def\nonfillstart{% | 6085 | \def\nonfillstart{% |
| 5563 | \aboveenvbreak | 6086 | \aboveenvbreak |
| 5564 | \hfuzz = 12pt % Don't be fussy | 6087 | \hfuzz = 12pt % Don't be fussy |
| @@ -5566,7 +6089,12 @@ end | |||
| 5566 | \let\par = \lisppar % don't ignore blank lines | 6089 | \let\par = \lisppar % don't ignore blank lines |
| 5567 | \obeylines % each line of input is a line of output | 6090 | \obeylines % each line of input is a line of output |
| 5568 | \parskip = 0pt | 6091 | \parskip = 0pt |
| 6092 | % Turn off paragraph indentation but redefine \indent to emulate | ||
| 6093 | % the normal \indent. | ||
| 6094 | \nonfillparindent=\parindent | ||
| 5569 | \parindent = 0pt | 6095 | \parindent = 0pt |
| 6096 | \let\indent\nonfillindent | ||
| 6097 | % | ||
| 5570 | \emergencystretch = 0pt % don't try to avoid overfull boxes | 6098 | \emergencystretch = 0pt % don't try to avoid overfull boxes |
| 5571 | \ifx\nonarrowing\relax | 6099 | \ifx\nonarrowing\relax |
| 5572 | \advance \leftskip by \lispnarrowing | 6100 | \advance \leftskip by \lispnarrowing |
| @@ -5577,6 +6105,24 @@ end | |||
| 5577 | \let\exdent=\nofillexdent | 6105 | \let\exdent=\nofillexdent |
| 5578 | } | 6106 | } |
| 5579 | 6107 | ||
| 6108 | \begingroup | ||
| 6109 | \obeyspaces | ||
| 6110 | % We want to swallow spaces (but not other tokens) after the fake | ||
| 6111 | % @indent in our nonfill-environments, where spaces are normally | ||
| 6112 | % active and set to @tie, resulting in them not being ignored after | ||
| 6113 | % @indent. | ||
| 6114 | \gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}% | ||
| 6115 | \gdef\nonfillindentcheck{% | ||
| 6116 | \ifx\temp % | ||
| 6117 | \expandafter\nonfillindentgobble% | ||
| 6118 | \else% | ||
| 6119 | \leavevmode\nonfillindentbox% | ||
| 6120 | \fi% | ||
| 6121 | }% | ||
| 6122 | \endgroup | ||
| 6123 | \def\nonfillindentgobble#1{\nonfillindent} | ||
| 6124 | \def\nonfillindentbox{\hbox to \nonfillparindent{\hss}} | ||
| 6125 | |||
| 5580 | % If you want all examples etc. small: @set dispenvsize small. | 6126 | % If you want all examples etc. small: @set dispenvsize small. |
| 5581 | % If you want even small examples the full size: @set dispenvsize nosmall. | 6127 | % If you want even small examples the full size: @set dispenvsize nosmall. |
| 5582 | % This affects the following displayed environments: | 6128 | % This affects the following displayed environments: |
| @@ -5625,7 +6171,7 @@ end | |||
| 5625 | % | 6171 | % |
| 5626 | \maketwodispenvs {lisp}{example}{% | 6172 | \maketwodispenvs {lisp}{example}{% |
| 5627 | \nonfillstart | 6173 | \nonfillstart |
| 5628 | \tt\quoteexpand | 6174 | \tt\setupmarkupstyle{example}% |
| 5629 | \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. | 6175 | \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. |
| 5630 | \gobble % eat return | 6176 | \gobble % eat return |
| 5631 | } | 6177 | } |
| @@ -5663,12 +6209,36 @@ end | |||
| 5663 | \let\Eflushright = \afterenvbreak | 6209 | \let\Eflushright = \afterenvbreak |
| 5664 | 6210 | ||
| 5665 | 6211 | ||
| 6212 | % @raggedright does more-or-less normal line breaking but no right | ||
| 6213 | % justification. From plain.tex. | ||
| 6214 | \envdef\raggedright{% | ||
| 6215 | \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax | ||
| 6216 | } | ||
| 6217 | \let\Eraggedright\par | ||
| 6218 | |||
| 6219 | \envdef\raggedleft{% | ||
| 6220 | \parindent=0pt \leftskip0pt plus2em | ||
| 6221 | \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt | ||
| 6222 | \hbadness=10000 % Last line will usually be underfull, so turn off | ||
| 6223 | % badness reporting. | ||
| 6224 | } | ||
| 6225 | \let\Eraggedleft\par | ||
| 6226 | |||
| 6227 | \envdef\raggedcenter{% | ||
| 6228 | \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em | ||
| 6229 | \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt | ||
| 6230 | \hbadness=10000 % Last line will usually be underfull, so turn off | ||
| 6231 | % badness reporting. | ||
| 6232 | } | ||
| 6233 | \let\Eraggedcenter\par | ||
| 6234 | |||
| 6235 | |||
| 5666 | % @quotation does normal linebreaking (hence we can't use \nonfillstart) | 6236 | % @quotation does normal linebreaking (hence we can't use \nonfillstart) |
| 5667 | % and narrows the margins. We keep \parskip nonzero in general, since | 6237 | % and narrows the margins. We keep \parskip nonzero in general, since |
| 5668 | % we're doing normal filling. So, when using \aboveenvbreak and | 6238 | % we're doing normal filling. So, when using \aboveenvbreak and |
| 5669 | % \afterenvbreak, temporarily make \parskip 0. | 6239 | % \afterenvbreak, temporarily make \parskip 0. |
| 5670 | % | 6240 | % |
| 5671 | \envdef\quotation{% | 6241 | \def\quotationstart{% |
| 5672 | {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip | 6242 | {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip |
| 5673 | \parindent=0pt | 6243 | \parindent=0pt |
| 5674 | % | 6244 | % |
| @@ -5683,6 +6253,17 @@ end | |||
| 5683 | \parsearg\quotationlabel | 6253 | \parsearg\quotationlabel |
| 5684 | } | 6254 | } |
| 5685 | 6255 | ||
| 6256 | \envdef\quotation{% | ||
| 6257 | \setnormaldispenv | ||
| 6258 | \quotationstart | ||
| 6259 | } | ||
| 6260 | |||
| 6261 | \envdef\smallquotation{% | ||
| 6262 | \setsmalldispenv | ||
| 6263 | \quotationstart | ||
| 6264 | } | ||
| 6265 | \let\Esmallquotation = \Equotation | ||
| 6266 | |||
| 5686 | % We have retained a nonzero parskip for the environment, since we're | 6267 | % We have retained a nonzero parskip for the environment, since we're |
| 5687 | % doing normal filling. | 6268 | % doing normal filling. |
| 5688 | % | 6269 | % |
| @@ -5718,18 +6299,16 @@ end | |||
| 5718 | \do\ \do\\\do\{\do\}\do\$\do\&% | 6299 | \do\ \do\\\do\{\do\}\do\$\do\&% |
| 5719 | \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~% | 6300 | \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~% |
| 5720 | \do\<\do\>\do\|\do\@\do+\do\"% | 6301 | \do\<\do\>\do\|\do\@\do+\do\"% |
| 6302 | % Don't do the quotes -- if we do, @set txicodequoteundirected and | ||
| 6303 | % @set txicodequotebacktick will not have effect on @verb and | ||
| 6304 | % @verbatim, and ?` and !` ligatures won't get disabled. | ||
| 6305 | %\do\`\do\'% | ||
| 5721 | } | 6306 | } |
| 5722 | % | 6307 | % |
| 5723 | % [Knuth] p. 380 | 6308 | % [Knuth] p. 380 |
| 5724 | \def\uncatcodespecials{% | 6309 | \def\uncatcodespecials{% |
| 5725 | \def\do##1{\catcode`##1=\other}\dospecials} | 6310 | \def\do##1{\catcode`##1=\other}\dospecials} |
| 5726 | % | 6311 | % |
| 5727 | % [Knuth] pp. 380,381,391 | ||
| 5728 | % Disable Spanish ligatures ?` and !` of \tt font | ||
| 5729 | \begingroup | ||
| 5730 | \catcode`\`=\active\gdef`{\relax\lq} | ||
| 5731 | \endgroup | ||
| 5732 | % | ||
| 5733 | % Setup for the @verb command. | 6312 | % Setup for the @verb command. |
| 5734 | % | 6313 | % |
| 5735 | % Eight spaces for a tab | 6314 | % Eight spaces for a tab |
| @@ -5741,7 +6320,7 @@ end | |||
| 5741 | \def\setupverb{% | 6320 | \def\setupverb{% |
| 5742 | \tt % easiest (and conventionally used) font for verbatim | 6321 | \tt % easiest (and conventionally used) font for verbatim |
| 5743 | \def\par{\leavevmode\endgraf}% | 6322 | \def\par{\leavevmode\endgraf}% |
| 5744 | \catcode`\`=\active | 6323 | \setupmarkupstyle{verb}% |
| 5745 | \tabeightspaces | 6324 | \tabeightspaces |
| 5746 | % Respect line breaks, | 6325 | % Respect line breaks, |
| 5747 | % print special symbols as themselves, and | 6326 | % print special symbols as themselves, and |
| @@ -5756,33 +6335,6 @@ end | |||
| 5756 | \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount | 6335 | \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount |
| 5757 | % | 6336 | % |
| 5758 | \def\starttabbox{\setbox0=\hbox\bgroup} | 6337 | \def\starttabbox{\setbox0=\hbox\bgroup} |
| 5759 | |||
| 5760 | % Allow an option to not replace quotes with a regular directed right | ||
| 5761 | % quote/apostrophe (char 0x27), but instead use the undirected quote | ||
| 5762 | % from cmtt (char 0x0d). The undirected quote is ugly, so don't make it | ||
| 5763 | % the default, but it works for pasting with more pdf viewers (at least | ||
| 5764 | % evince), the lilypond developers report. xpdf does work with the | ||
| 5765 | % regular 0x27. | ||
| 5766 | % | ||
| 5767 | \def\codequoteright{% | ||
| 5768 | \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax | ||
| 5769 | \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax | ||
| 5770 | '% | ||
| 5771 | \else \char'15 \fi | ||
| 5772 | \else \char'15 \fi | ||
| 5773 | } | ||
| 5774 | % | ||
| 5775 | % and a similar option for the left quote char vs. a grave accent. | ||
| 5776 | % Modern fonts display ASCII 0x60 as a grave accent, so some people like | ||
| 5777 | % the code environments to do likewise. | ||
| 5778 | % | ||
| 5779 | \def\codequoteleft{% | ||
| 5780 | \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax | ||
| 5781 | \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax | ||
| 5782 | `% | ||
| 5783 | \else \char'22 \fi | ||
| 5784 | \else \char'22 \fi | ||
| 5785 | } | ||
| 5786 | % | 6338 | % |
| 5787 | \begingroup | 6339 | \begingroup |
| 5788 | \catcode`\^^I=\active | 6340 | \catcode`\^^I=\active |
| @@ -5796,13 +6348,6 @@ end | |||
| 5796 | \wd0=\dimen0 \box0 \starttabbox | 6348 | \wd0=\dimen0 \box0 \starttabbox |
| 5797 | }% | 6349 | }% |
| 5798 | } | 6350 | } |
| 5799 | \catcode`\'=\active | ||
| 5800 | \gdef\rquoteexpand{\catcode\rquoteChar=\active \def'{\codequoteright}}% | ||
| 5801 | % | ||
| 5802 | \catcode`\`=\active | ||
| 5803 | \gdef\lquoteexpand{\catcode\lquoteChar=\active \def`{\codequoteleft}}% | ||
| 5804 | % | ||
| 5805 | \gdef\quoteexpand{\rquoteexpand \lquoteexpand}% | ||
| 5806 | \endgroup | 6351 | \endgroup |
| 5807 | 6352 | ||
| 5808 | % start the verbatim environment. | 6353 | % start the verbatim environment. |
| @@ -5812,9 +6357,8 @@ end | |||
| 5812 | % Easiest (and conventionally used) font for verbatim | 6357 | % Easiest (and conventionally used) font for verbatim |
| 5813 | \tt | 6358 | \tt |
| 5814 | \def\par{\leavevmode\egroup\box0\endgraf}% | 6359 | \def\par{\leavevmode\egroup\box0\endgraf}% |
| 5815 | \catcode`\`=\active | ||
| 5816 | \tabexpand | 6360 | \tabexpand |
| 5817 | \quoteexpand | 6361 | \setupmarkupstyle{verbatim}% |
| 5818 | % Respect line breaks, | 6362 | % Respect line breaks, |
| 5819 | % print special symbols as themselves, and | 6363 | % print special symbols as themselves, and |
| 5820 | % make each space count | 6364 | % make each space count |
| @@ -5874,6 +6418,7 @@ end | |||
| 5874 | {% | 6418 | {% |
| 5875 | \makevalueexpandable | 6419 | \makevalueexpandable |
| 5876 | \setupverbatim | 6420 | \setupverbatim |
| 6421 | \indexnofonts % Allow `@@' and other weird things in file names. | ||
| 5877 | \input #1 | 6422 | \input #1 |
| 5878 | \afterenvbreak | 6423 | \afterenvbreak |
| 5879 | }% | 6424 | }% |
| @@ -5973,7 +6518,7 @@ end | |||
| 5973 | \def\Edefun{\endgraf\medbreak} | 6518 | \def\Edefun{\endgraf\medbreak} |
| 5974 | 6519 | ||
| 5975 | % \makedefun{deffn} creates \deffn, \deffnx and \Edeffn; | 6520 | % \makedefun{deffn} creates \deffn, \deffnx and \Edeffn; |
| 5976 | % the only thing remainnig is to define \deffnheader. | 6521 | % the only thing remaining is to define \deffnheader. |
| 5977 | % | 6522 | % |
| 5978 | \def\makedefun#1{% | 6523 | \def\makedefun#1{% |
| 5979 | \expandafter\let\csname E#1\endcsname = \Edefun | 6524 | \expandafter\let\csname E#1\endcsname = \Edefun |
| @@ -6152,7 +6697,7 @@ end | |||
| 6152 | % | 6697 | % |
| 6153 | % On the other hand, if an argument has two dashes (for instance), we | 6698 | % On the other hand, if an argument has two dashes (for instance), we |
| 6154 | % want a way to get ttsl. Let's try @var for that. | 6699 | % want a way to get ttsl. Let's try @var for that. |
| 6155 | \let\var=\ttslanted | 6700 | \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}% |
| 6156 | #1% | 6701 | #1% |
| 6157 | \sl\hyphenchar\font=45 | 6702 | \sl\hyphenchar\font=45 |
| 6158 | } | 6703 | } |
| @@ -6232,12 +6777,14 @@ end | |||
| 6232 | \ifnum\parencount=0 \else \badparencount \fi | 6777 | \ifnum\parencount=0 \else \badparencount \fi |
| 6233 | \ifnum\brackcount=0 \else \badbrackcount \fi | 6778 | \ifnum\brackcount=0 \else \badbrackcount \fi |
| 6234 | } | 6779 | } |
| 6780 | % these should not use \errmessage; the glibc manual, at least, actually | ||
| 6781 | % has such constructs (when documenting function pointers). | ||
| 6235 | \def\badparencount{% | 6782 | \def\badparencount{% |
| 6236 | \errmessage{Unbalanced parentheses in @def}% | 6783 | \message{Warning: unbalanced parentheses in @def...}% |
| 6237 | \global\parencount=0 | 6784 | \global\parencount=0 |
| 6238 | } | 6785 | } |
| 6239 | \def\badbrackcount{% | 6786 | \def\badbrackcount{% |
| 6240 | \errmessage{Unbalanced square braces in @def}% | 6787 | \message{Warning: unbalanced square brackets in @def...}% |
| 6241 | \global\brackcount=0 | 6788 | \global\brackcount=0 |
| 6242 | } | 6789 | } |
| 6243 | 6790 | ||
| @@ -6304,7 +6851,7 @@ end | |||
| 6304 | % This does \let #1 = #2, with \csnames; that is, | 6851 | % This does \let #1 = #2, with \csnames; that is, |
| 6305 | % \let \csname#1\endcsname = \csname#2\endcsname | 6852 | % \let \csname#1\endcsname = \csname#2\endcsname |
| 6306 | % (except of course we have to play expansion games). | 6853 | % (except of course we have to play expansion games). |
| 6307 | % | 6854 | % |
| 6308 | \def\cslet#1#2{% | 6855 | \def\cslet#1#2{% |
| 6309 | \expandafter\let | 6856 | \expandafter\let |
| 6310 | \csname#1\expandafter\endcsname | 6857 | \csname#1\expandafter\endcsname |
| @@ -6332,6 +6879,10 @@ end | |||
| 6332 | % all characters are catcode 10, 11 or 12, except \ which is active | 6879 | % all characters are catcode 10, 11 or 12, except \ which is active |
| 6333 | % (as in normal texinfo). It is necessary to change the definition of \. | 6880 | % (as in normal texinfo). It is necessary to change the definition of \. |
| 6334 | 6881 | ||
| 6882 | % Non-ASCII encodings make 8-bit characters active, so un-activate | ||
| 6883 | % them to avoid their expansion. Must do this non-globally, to | ||
| 6884 | % confine the change to the current group. | ||
| 6885 | |||
| 6335 | % It's necessary to have hard CRs when the macro is executed. This is | 6886 | % It's necessary to have hard CRs when the macro is executed. This is |
| 6336 | % done by making ^^M (\endlinechar) catcode 12 when reading the macro | 6887 | % done by making ^^M (\endlinechar) catcode 12 when reading the macro |
| 6337 | % body, and then making it the \newlinechar in \scanmacro. | 6888 | % body, and then making it the \newlinechar in \scanmacro. |
| @@ -6346,6 +6897,7 @@ end | |||
| 6346 | \catcode`\_=\other | 6897 | \catcode`\_=\other |
| 6347 | \catcode`\|=\other | 6898 | \catcode`\|=\other |
| 6348 | \catcode`\~=\other | 6899 | \catcode`\~=\other |
| 6900 | \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi | ||
| 6349 | } | 6901 | } |
| 6350 | 6902 | ||
| 6351 | \def\scanargctxt{% | 6903 | \def\scanargctxt{% |
| @@ -6607,7 +7159,7 @@ end | |||
| 6607 | 7159 | ||
| 6608 | % \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an | 7160 | % \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an |
| 6609 | % anchor), which consists of three parts: | 7161 | % anchor), which consists of three parts: |
| 6610 | % 1) NAME-title - the current sectioning name taken from \thissection, | 7162 | % 1) NAME-title - the current sectioning name taken from \lastsection, |
| 6611 | % or the anchor name. | 7163 | % or the anchor name. |
| 6612 | % 2) NAME-snt - section number and type, passed as the SNT arg, or | 7164 | % 2) NAME-snt - section number and type, passed as the SNT arg, or |
| 6613 | % empty for anchors. | 7165 | % empty for anchors. |
| @@ -6626,7 +7178,7 @@ end | |||
| 6626 | \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef | 7178 | \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef |
| 6627 | ##1}{##2}}% these are parameters of \writexrdef | 7179 | ##1}{##2}}% these are parameters of \writexrdef |
| 6628 | }% | 7180 | }% |
| 6629 | \toks0 = \expandafter{\thissection}% | 7181 | \toks0 = \expandafter{\lastsection}% |
| 6630 | \immediate \writexrdef{title}{\the\toks0 }% | 7182 | \immediate \writexrdef{title}{\the\toks0 }% |
| 6631 | \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc. | 7183 | \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc. |
| 6632 | \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, during \shipout | 7184 | \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, during \shipout |
| @@ -6673,23 +7225,25 @@ end | |||
| 6673 | % | 7225 | % |
| 6674 | % Make link in pdf output. | 7226 | % Make link in pdf output. |
| 6675 | \ifpdf | 7227 | \ifpdf |
| 6676 | \leavevmode | ||
| 6677 | \getfilename{#4}% | ||
| 6678 | {\indexnofonts | 7228 | {\indexnofonts |
| 6679 | \turnoffactive | 7229 | \turnoffactive |
| 7230 | % This expands tokens, so do it after making catcode changes, so _ | ||
| 7231 | % etc. don't get their TeX definitions. | ||
| 7232 | \getfilename{#4}% | ||
| 7233 | % | ||
| 6680 | % See comments at \activebackslashdouble. | 7234 | % See comments at \activebackslashdouble. |
| 6681 | {\activebackslashdouble \xdef\pdfxrefdest{#1}% | 7235 | {\activebackslashdouble \xdef\pdfxrefdest{#1}% |
| 6682 | \backslashparens\pdfxrefdest}% | 7236 | \backslashparens\pdfxrefdest}% |
| 6683 | % | 7237 | % |
| 7238 | \leavevmode | ||
| 7239 | \startlink attr{/Border [0 0 0]}% | ||
| 6684 | \ifnum\filenamelength>0 | 7240 | \ifnum\filenamelength>0 |
| 6685 | \startlink attr{/Border [0 0 0]}% | 7241 | goto file{\the\filename.pdf} name{\pdfxrefdest}% |
| 6686 | goto file{\the\filename.pdf} name{\pdfxrefdest}% | ||
| 6687 | \else | 7242 | \else |
| 6688 | \startlink attr{/Border [0 0 0]}% | 7243 | goto name{\pdfmkpgn{\pdfxrefdest}}% |
| 6689 | goto name{\pdfmkpgn{\pdfxrefdest}}% | ||
| 6690 | \fi | 7244 | \fi |
| 6691 | }% | 7245 | }% |
| 6692 | \linkcolor | 7246 | \setcolor{\linkcolor}% |
| 6693 | \fi | 7247 | \fi |
| 6694 | % | 7248 | % |
| 6695 | % Float references are printed completely differently: "Figure 1.2" | 7249 | % Float references are printed completely differently: "Figure 1.2" |
| @@ -6727,7 +7281,7 @@ end | |||
| 6727 | % is a loss. Therefore, we give the text of the node name again, so it | 7281 | % is a loss. Therefore, we give the text of the node name again, so it |
| 6728 | % is as if TeX is seeing it for the first time. | 7282 | % is as if TeX is seeing it for the first time. |
| 6729 | \ifdim \wd1 > 0pt | 7283 | \ifdim \wd1 > 0pt |
| 6730 | \putwordsection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}% | 7284 | \putwordSection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}% |
| 6731 | \else | 7285 | \else |
| 6732 | % _ (for example) has to be the character _ for the purposes of the | 7286 | % _ (for example) has to be the character _ for the purposes of the |
| 6733 | % control sequence corresponding to the node, but it has to expand | 7287 | % control sequence corresponding to the node, but it has to expand |
| @@ -7037,7 +7591,7 @@ end | |||
| 7037 | % In case a @footnote appears in a vbox, save the footnote text and create | 7591 | % In case a @footnote appears in a vbox, save the footnote text and create |
| 7038 | % the real \insert just after the vbox finished. Otherwise, the insertion | 7592 | % the real \insert just after the vbox finished. Otherwise, the insertion |
| 7039 | % would be lost. | 7593 | % would be lost. |
| 7040 | % Similarily, if a @footnote appears inside an alignment, save the footnote | 7594 | % Similarly, if a @footnote appears inside an alignment, save the footnote |
| 7041 | % text to a box and make the \insert when a row of the table is finished. | 7595 | % text to a box and make the \insert when a row of the table is finished. |
| 7042 | % And the same can be done for other insert classes. --kasal, 16nov03. | 7596 | % And the same can be done for other insert classes. --kasal, 16nov03. |
| 7043 | 7597 | ||
| @@ -7141,15 +7695,19 @@ end | |||
| 7141 | % If the image is by itself, center it. | 7695 | % If the image is by itself, center it. |
| 7142 | \ifvmode | 7696 | \ifvmode |
| 7143 | \imagevmodetrue | 7697 | \imagevmodetrue |
| 7144 | \nobreak\bigskip | 7698 | \nobreak\medskip |
| 7145 | % Usually we'll have text after the image which will insert | 7699 | % Usually we'll have text after the image which will insert |
| 7146 | % \parskip glue, so insert it here too to equalize the space | 7700 | % \parskip glue, so insert it here too to equalize the space |
| 7147 | % above and below. | 7701 | % above and below. |
| 7148 | \nobreak\vskip\parskip | 7702 | \nobreak\vskip\parskip |
| 7149 | \nobreak | 7703 | \nobreak |
| 7150 | \line\bgroup | ||
| 7151 | \fi | 7704 | \fi |
| 7152 | % | 7705 | % |
| 7706 | % Leave vertical mode so that indentation from an enclosing | ||
| 7707 | % environment such as @quotation is respected. On the other hand, if | ||
| 7708 | % it's at the top level, we don't want the normal paragraph indentation. | ||
| 7709 | \noindent | ||
| 7710 | % | ||
| 7153 | % Output the image. | 7711 | % Output the image. |
| 7154 | \ifpdf | 7712 | \ifpdf |
| 7155 | \dopdfimage{#1}{#2}{#3}% | 7713 | \dopdfimage{#1}{#2}{#3}% |
| @@ -7160,7 +7718,7 @@ end | |||
| 7160 | \epsfbox{#1.eps}% | 7718 | \epsfbox{#1.eps}% |
| 7161 | \fi | 7719 | \fi |
| 7162 | % | 7720 | % |
| 7163 | \ifimagevmode \egroup \bigbreak \fi % space after the image | 7721 | \ifimagevmode \medskip \fi % space after the standalone image |
| 7164 | \endgroup} | 7722 | \endgroup} |
| 7165 | 7723 | ||
| 7166 | 7724 | ||
| @@ -7227,13 +7785,13 @@ end | |||
| 7227 | \global\advance\floatno by 1 | 7785 | \global\advance\floatno by 1 |
| 7228 | % | 7786 | % |
| 7229 | {% | 7787 | {% |
| 7230 | % This magic value for \thissection is output by \setref as the | 7788 | % This magic value for \lastsection is output by \setref as the |
| 7231 | % XREFLABEL-title value. \xrefX uses it to distinguish float | 7789 | % XREFLABEL-title value. \xrefX uses it to distinguish float |
| 7232 | % labels (which have a completely different output format) from | 7790 | % labels (which have a completely different output format) from |
| 7233 | % node and anchor labels. And \xrdef uses it to construct the | 7791 | % node and anchor labels. And \xrdef uses it to construct the |
| 7234 | % lists of floats. | 7792 | % lists of floats. |
| 7235 | % | 7793 | % |
| 7236 | \edef\thissection{\floatmagic=\safefloattype}% | 7794 | \edef\lastsection{\floatmagic=\safefloattype}% |
| 7237 | \setref{\floatlabel}{Yfloat}% | 7795 | \setref{\floatlabel}{Yfloat}% |
| 7238 | }% | 7796 | }% |
| 7239 | \fi | 7797 | \fi |
| @@ -7368,7 +7926,7 @@ end | |||
| 7368 | 7926 | ||
| 7369 | % #1 is the control sequence we are passed; we expand into a conditional | 7927 | % #1 is the control sequence we are passed; we expand into a conditional |
| 7370 | % which is true if #1 represents a float ref. That is, the magic | 7928 | % which is true if #1 represents a float ref. That is, the magic |
| 7371 | % \thissection value which we \setref above. | 7929 | % \lastsection value which we \setref above. |
| 7372 | % | 7930 | % |
| 7373 | \def\iffloat#1{\expandafter\doiffloat#1==\finish} | 7931 | \def\iffloat#1{\expandafter\doiffloat#1==\finish} |
| 7374 | % | 7932 | % |
| @@ -7432,10 +7990,9 @@ end | |||
| 7432 | 7990 | ||
| 7433 | \message{localization,} | 7991 | \message{localization,} |
| 7434 | 7992 | ||
| 7435 | % @documentlanguage is usually given very early, just after | 7993 | % For single-language documents, @documentlanguage is usually given very |
| 7436 | % @setfilename. If done too late, it may not override everything | 7994 | % early, just after @documentencoding. Single argument is the language |
| 7437 | % properly. Single argument is the language (de) or locale (de_DE) | 7995 | % (de) or locale (de_DE) abbreviation. |
| 7438 | % abbreviation. It would be nice if we could set up a hyphenation file. | ||
| 7439 | % | 7996 | % |
| 7440 | { | 7997 | { |
| 7441 | \catcode`\_ = \active | 7998 | \catcode`\_ = \active |
| @@ -7448,37 +8005,74 @@ end | |||
| 7448 | \ifeof 1 | 8005 | \ifeof 1 |
| 7449 | \documentlanguagetrywithoutunderscore{#1_\finish}% | 8006 | \documentlanguagetrywithoutunderscore{#1_\finish}% |
| 7450 | \else | 8007 | \else |
| 8008 | \globaldefs = 1 % everything in the txi-LL files needs to persist | ||
| 7451 | \input txi-#1.tex | 8009 | \input txi-#1.tex |
| 7452 | \fi | 8010 | \fi |
| 7453 | \closein 1 | 8011 | \closein 1 |
| 7454 | \endgroup | 8012 | \endgroup % end raw TeX |
| 7455 | \endgroup} | 8013 | \endgroup} |
| 7456 | } | ||
| 7457 | % | 8014 | % |
| 7458 | % If they passed de_DE, and txi-de_DE.tex doesn't exist, | 8015 | % If they passed de_DE, and txi-de_DE.tex doesn't exist, |
| 7459 | % try txi-de.tex. | 8016 | % try txi-de.tex. |
| 7460 | % | 8017 | % |
| 7461 | \def\documentlanguagetrywithoutunderscore#1_#2\finish{% | 8018 | \gdef\documentlanguagetrywithoutunderscore#1_#2\finish{% |
| 7462 | \openin 1 txi-#1.tex | 8019 | \openin 1 txi-#1.tex |
| 7463 | \ifeof 1 | 8020 | \ifeof 1 |
| 7464 | \errhelp = \nolanghelp | 8021 | \errhelp = \nolanghelp |
| 7465 | \errmessage{Cannot read language file txi-#1.tex}% | 8022 | \errmessage{Cannot read language file txi-#1.tex}% |
| 7466 | \else | 8023 | \else |
| 8024 | \globaldefs = 1 % everything in the txi-LL files needs to persist | ||
| 7467 | \input txi-#1.tex | 8025 | \input txi-#1.tex |
| 7468 | \fi | 8026 | \fi |
| 7469 | \closein 1 | 8027 | \closein 1 |
| 7470 | } | 8028 | } |
| 8029 | }% end of special _ catcode | ||
| 7471 | % | 8030 | % |
| 7472 | \newhelp\nolanghelp{The given language definition file cannot be found or | 8031 | \newhelp\nolanghelp{The given language definition file cannot be found or |
| 7473 | is empty. Maybe you need to install it? In the current directory | 8032 | is empty. Maybe you need to install it? Putting it in the current |
| 7474 | should work if nowhere else does.} | 8033 | directory should work if nowhere else does.} |
| 7475 | 8034 | ||
| 8035 | % This macro is called from txi-??.tex files; the first argument is the | ||
| 8036 | % \language name to set (without the "\lang@" prefix), the second and | ||
| 8037 | % third args are \{left,right}hyphenmin. | ||
| 8038 | % | ||
| 8039 | % The language names to pass are determined when the format is built. | ||
| 8040 | % See the etex.log file created at that time, e.g., | ||
| 8041 | % /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log. | ||
| 8042 | % | ||
| 8043 | % With TeX Live 2008, etex now includes hyphenation patterns for all | ||
| 8044 | % available languages. This means we can support hyphenation in | ||
| 8045 | % Texinfo, at least to some extent. (This still doesn't solve the | ||
| 8046 | % accented characters problem.) | ||
| 8047 | % | ||
| 8048 | \catcode`@=11 | ||
| 8049 | \def\txisetlanguage#1#2#3{% | ||
| 8050 | % do not set the language if the name is undefined in the current TeX. | ||
| 8051 | \expandafter\ifx\csname lang@#1\endcsname \relax | ||
| 8052 | \message{no patterns for #1}% | ||
| 8053 | \else | ||
| 8054 | \global\language = \csname lang@#1\endcsname | ||
| 8055 | \fi | ||
| 8056 | % but there is no harm in adjusting the hyphenmin values regardless. | ||
| 8057 | \global\lefthyphenmin = #2\relax | ||
| 8058 | \global\righthyphenmin = #3\relax | ||
| 8059 | } | ||
| 8060 | |||
| 8061 | % Helpers for encodings. | ||
| 7476 | % Set the catcode of characters 128 through 255 to the specified number. | 8062 | % Set the catcode of characters 128 through 255 to the specified number. |
| 7477 | % | 8063 | % |
| 7478 | \def\setnonasciicharscatcode#1{% | 8064 | \def\setnonasciicharscatcode#1{% |
| 7479 | \count255=128 | 8065 | \count255=128 |
| 7480 | \loop\ifnum\count255<256 | 8066 | \loop\ifnum\count255<256 |
| 7481 | \global\catcode\count255=#1 | 8067 | \global\catcode\count255=#1\relax |
| 8068 | \advance\count255 by 1 | ||
| 8069 | \repeat | ||
| 8070 | } | ||
| 8071 | |||
| 8072 | \def\setnonasciicharscatcodenonglobal#1{% | ||
| 8073 | \count255=128 | ||
| 8074 | \loop\ifnum\count255<256 | ||
| 8075 | \catcode\count255=#1\relax | ||
| 7482 | \advance\count255 by 1 | 8076 | \advance\count255 by 1 |
| 7483 | \repeat | 8077 | \repeat |
| 7484 | } | 8078 | } |
| @@ -7505,7 +8099,7 @@ should work if nowhere else does.} | |||
| 7505 | \setnonasciicharscatcode\active | 8099 | \setnonasciicharscatcode\active |
| 7506 | \lattwochardefs | 8100 | \lattwochardefs |
| 7507 | % | 8101 | % |
| 7508 | \else \ifx \declaredencoding \latone | 8102 | \else \ifx \declaredencoding \latone |
| 7509 | \setnonasciicharscatcode\active | 8103 | \setnonasciicharscatcode\active |
| 7510 | \latonechardefs | 8104 | \latonechardefs |
| 7511 | % | 8105 | % |
| @@ -7517,7 +8111,7 @@ should work if nowhere else does.} | |||
| 7517 | \setnonasciicharscatcode\active | 8111 | \setnonasciicharscatcode\active |
| 7518 | \utfeightchardefs | 8112 | \utfeightchardefs |
| 7519 | % | 8113 | % |
| 7520 | \else | 8114 | \else |
| 7521 | \message{Unknown document encoding #1, ignoring.}% | 8115 | \message{Unknown document encoding #1, ignoring.}% |
| 7522 | % | 8116 | % |
| 7523 | \fi % utfeight | 8117 | \fi % utfeight |
| @@ -7529,7 +8123,7 @@ should work if nowhere else does.} | |||
| 7529 | 8123 | ||
| 7530 | % A message to be logged when using a character that isn't available | 8124 | % A message to be logged when using a character that isn't available |
| 7531 | % the default font encoding (OT1). | 8125 | % the default font encoding (OT1). |
| 7532 | % | 8126 | % |
| 7533 | \def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}} | 8127 | \def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}} |
| 7534 | 8128 | ||
| 7535 | % Take account of \c (plain) vs. \, (Texinfo) difference. | 8129 | % Take account of \c (plain) vs. \, (Texinfo) difference. |
| @@ -7542,21 +8136,21 @@ should work if nowhere else does.} | |||
| 7542 | % | 8136 | % |
| 7543 | % Latin1 (ISO-8859-1) character definitions. | 8137 | % Latin1 (ISO-8859-1) character definitions. |
| 7544 | \def\latonechardefs{% | 8138 | \def\latonechardefs{% |
| 7545 | \gdef^^a0{~} | 8139 | \gdef^^a0{~} |
| 7546 | \gdef^^a1{\exclamdown} | 8140 | \gdef^^a1{\exclamdown} |
| 7547 | \gdef^^a2{\missingcharmsg{CENT SIGN}} | 8141 | \gdef^^a2{\missingcharmsg{CENT SIGN}} |
| 7548 | \gdef^^a3{{\pounds}} | 8142 | \gdef^^a3{{\pounds}} |
| 7549 | \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} | 8143 | \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} |
| 7550 | \gdef^^a5{\missingcharmsg{YEN SIGN}} | 8144 | \gdef^^a5{\missingcharmsg{YEN SIGN}} |
| 7551 | \gdef^^a6{\missingcharmsg{BROKEN BAR}} | 8145 | \gdef^^a6{\missingcharmsg{BROKEN BAR}} |
| 7552 | \gdef^^a7{\S} | 8146 | \gdef^^a7{\S} |
| 7553 | \gdef^^a8{\"{}} | 8147 | \gdef^^a8{\"{}} |
| 7554 | \gdef^^a9{\copyright} | 8148 | \gdef^^a9{\copyright} |
| 7555 | \gdef^^aa{\ordf} | 8149 | \gdef^^aa{\ordf} |
| 7556 | \gdef^^ab{\missingcharmsg{LEFT-POINTING DOUBLE ANGLE QUOTATION MARK}} | 8150 | \gdef^^ab{\guillemetleft} |
| 7557 | \gdef^^ac{$\lnot$} | 8151 | \gdef^^ac{$\lnot$} |
| 7558 | \gdef^^ad{\-} | 8152 | \gdef^^ad{\-} |
| 7559 | \gdef^^ae{\registeredsymbol} | 8153 | \gdef^^ae{\registeredsymbol} |
| 7560 | \gdef^^af{\={}} | 8154 | \gdef^^af{\={}} |
| 7561 | % | 8155 | % |
| 7562 | \gdef^^b0{\textdegree} | 8156 | \gdef^^b0{\textdegree} |
| @@ -7572,7 +8166,7 @@ should work if nowhere else does.} | |||
| 7572 | \gdef^^b9{$^1$} | 8166 | \gdef^^b9{$^1$} |
| 7573 | \gdef^^ba{\ordm} | 8167 | \gdef^^ba{\ordm} |
| 7574 | % | 8168 | % |
| 7575 | \gdef^^bb{\missingcharmsg{RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK}} | 8169 | \gdef^^bb{\guilletright} |
| 7576 | \gdef^^bc{$1\over4$} | 8170 | \gdef^^bc{$1\over4$} |
| 7577 | \gdef^^bd{$1\over2$} | 8171 | \gdef^^bd{$1\over2$} |
| 7578 | \gdef^^be{$3\over4$} | 8172 | \gdef^^be{$3\over4$} |
| @@ -7583,7 +8177,7 @@ should work if nowhere else does.} | |||
| 7583 | \gdef^^c2{\^A} | 8177 | \gdef^^c2{\^A} |
| 7584 | \gdef^^c3{\~A} | 8178 | \gdef^^c3{\~A} |
| 7585 | \gdef^^c4{\"A} | 8179 | \gdef^^c4{\"A} |
| 7586 | \gdef^^c5{\ringaccent A} | 8180 | \gdef^^c5{\ringaccent A} |
| 7587 | \gdef^^c6{\AE} | 8181 | \gdef^^c6{\AE} |
| 7588 | \gdef^^c7{\cedilla C} | 8182 | \gdef^^c7{\cedilla C} |
| 7589 | \gdef^^c8{\`E} | 8183 | \gdef^^c8{\`E} |
| @@ -7595,7 +8189,7 @@ should work if nowhere else does.} | |||
| 7595 | \gdef^^ce{\^I} | 8189 | \gdef^^ce{\^I} |
| 7596 | \gdef^^cf{\"I} | 8190 | \gdef^^cf{\"I} |
| 7597 | % | 8191 | % |
| 7598 | \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER ETH}} | 8192 | \gdef^^d0{\DH} |
| 7599 | \gdef^^d1{\~N} | 8193 | \gdef^^d1{\~N} |
| 7600 | \gdef^^d2{\`O} | 8194 | \gdef^^d2{\`O} |
| 7601 | \gdef^^d3{\'O} | 8195 | \gdef^^d3{\'O} |
| @@ -7609,7 +8203,7 @@ should work if nowhere else does.} | |||
| 7609 | \gdef^^db{\^U} | 8203 | \gdef^^db{\^U} |
| 7610 | \gdef^^dc{\"U} | 8204 | \gdef^^dc{\"U} |
| 7611 | \gdef^^dd{\'Y} | 8205 | \gdef^^dd{\'Y} |
| 7612 | \gdef^^de{\missingcharmsg{LATIN CAPITAL LETTER THORN}} | 8206 | \gdef^^de{\TH} |
| 7613 | \gdef^^df{\ss} | 8207 | \gdef^^df{\ss} |
| 7614 | % | 8208 | % |
| 7615 | \gdef^^e0{\`a} | 8209 | \gdef^^e0{\`a} |
| @@ -7629,7 +8223,7 @@ should work if nowhere else does.} | |||
| 7629 | \gdef^^ee{\^{\dotless i}} | 8223 | \gdef^^ee{\^{\dotless i}} |
| 7630 | \gdef^^ef{\"{\dotless i}} | 8224 | \gdef^^ef{\"{\dotless i}} |
| 7631 | % | 8225 | % |
| 7632 | \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER ETH}} | 8226 | \gdef^^f0{\dh} |
| 7633 | \gdef^^f1{\~n} | 8227 | \gdef^^f1{\~n} |
| 7634 | \gdef^^f2{\`o} | 8228 | \gdef^^f2{\`o} |
| 7635 | \gdef^^f3{\'o} | 8229 | \gdef^^f3{\'o} |
| @@ -7643,7 +8237,7 @@ should work if nowhere else does.} | |||
| 7643 | \gdef^^fb{\^u} | 8237 | \gdef^^fb{\^u} |
| 7644 | \gdef^^fc{\"u} | 8238 | \gdef^^fc{\"u} |
| 7645 | \gdef^^fd{\'y} | 8239 | \gdef^^fd{\'y} |
| 7646 | \gdef^^fe{\missingcharmsg{LATIN SMALL LETTER THORN}} | 8240 | \gdef^^fe{\th} |
| 7647 | \gdef^^ff{\"y} | 8241 | \gdef^^ff{\"y} |
| 7648 | } | 8242 | } |
| 7649 | 8243 | ||
| @@ -7665,7 +8259,7 @@ should work if nowhere else does.} | |||
| 7665 | % Latin2 (ISO-8859-2) character definitions. | 8259 | % Latin2 (ISO-8859-2) character definitions. |
| 7666 | \def\lattwochardefs{% | 8260 | \def\lattwochardefs{% |
| 7667 | \gdef^^a0{~} | 8261 | \gdef^^a0{~} |
| 7668 | \gdef^^a1{\missingcharmsg{LATIN CAPITAL LETTER A WITH OGONEK}} | 8262 | \gdef^^a1{\ogonek{A}} |
| 7669 | \gdef^^a2{\u{}} | 8263 | \gdef^^a2{\u{}} |
| 7670 | \gdef^^a3{\L} | 8264 | \gdef^^a3{\L} |
| 7671 | \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} | 8265 | \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} |
| @@ -7682,8 +8276,8 @@ should work if nowhere else does.} | |||
| 7682 | \gdef^^af{\dotaccent Z} | 8276 | \gdef^^af{\dotaccent Z} |
| 7683 | % | 8277 | % |
| 7684 | \gdef^^b0{\textdegree} | 8278 | \gdef^^b0{\textdegree} |
| 7685 | \gdef^^b1{\missingcharmsg{LATIN SMALL LETTER A WITH OGONEK}} | 8279 | \gdef^^b1{\ogonek{a}} |
| 7686 | \gdef^^b2{\missingcharmsg{OGONEK}} | 8280 | \gdef^^b2{\ogonek{ }} |
| 7687 | \gdef^^b3{\l} | 8281 | \gdef^^b3{\l} |
| 7688 | \gdef^^b4{\'{}} | 8282 | \gdef^^b4{\'{}} |
| 7689 | \gdef^^b5{\v l} | 8283 | \gdef^^b5{\v l} |
| @@ -7708,14 +8302,14 @@ should work if nowhere else does.} | |||
| 7708 | \gdef^^c7{\cedilla C} | 8302 | \gdef^^c7{\cedilla C} |
| 7709 | \gdef^^c8{\v C} | 8303 | \gdef^^c8{\v C} |
| 7710 | \gdef^^c9{\'E} | 8304 | \gdef^^c9{\'E} |
| 7711 | \gdef^^ca{\missingcharmsg{LATIN CAPITAL LETTER E WITH OGONEK}} | 8305 | \gdef^^ca{\ogonek{E}} |
| 7712 | \gdef^^cb{\"E} | 8306 | \gdef^^cb{\"E} |
| 7713 | \gdef^^cc{\v E} | 8307 | \gdef^^cc{\v E} |
| 7714 | \gdef^^cd{\'I} | 8308 | \gdef^^cd{\'I} |
| 7715 | \gdef^^ce{\^I} | 8309 | \gdef^^ce{\^I} |
| 7716 | \gdef^^cf{\v D} | 8310 | \gdef^^cf{\v D} |
| 7717 | % | 8311 | % |
| 7718 | \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER D WITH STROKE}} | 8312 | \gdef^^d0{\DH} |
| 7719 | \gdef^^d1{\'N} | 8313 | \gdef^^d1{\'N} |
| 7720 | \gdef^^d2{\v N} | 8314 | \gdef^^d2{\v N} |
| 7721 | \gdef^^d3{\'O} | 8315 | \gdef^^d3{\'O} |
| @@ -7724,7 +8318,7 @@ should work if nowhere else does.} | |||
| 7724 | \gdef^^d6{\"O} | 8318 | \gdef^^d6{\"O} |
| 7725 | \gdef^^d7{$\times$} | 8319 | \gdef^^d7{$\times$} |
| 7726 | \gdef^^d8{\v R} | 8320 | \gdef^^d8{\v R} |
| 7727 | \gdef^^d9{\ringaccent U} | 8321 | \gdef^^d9{\ringaccent U} |
| 7728 | \gdef^^da{\'U} | 8322 | \gdef^^da{\'U} |
| 7729 | \gdef^^db{\H U} | 8323 | \gdef^^db{\H U} |
| 7730 | \gdef^^dc{\"U} | 8324 | \gdef^^dc{\"U} |
| @@ -7742,14 +8336,14 @@ should work if nowhere else does.} | |||
| 7742 | \gdef^^e7{\cedilla c} | 8336 | \gdef^^e7{\cedilla c} |
| 7743 | \gdef^^e8{\v c} | 8337 | \gdef^^e8{\v c} |
| 7744 | \gdef^^e9{\'e} | 8338 | \gdef^^e9{\'e} |
| 7745 | \gdef^^ea{\missingcharmsg{LATIN SMALL LETTER E WITH OGONEK}} | 8339 | \gdef^^ea{\ogonek{e}} |
| 7746 | \gdef^^eb{\"e} | 8340 | \gdef^^eb{\"e} |
| 7747 | \gdef^^ec{\v e} | 8341 | \gdef^^ec{\v e} |
| 7748 | \gdef^^ed{\'\i} | 8342 | \gdef^^ed{\'\i} |
| 7749 | \gdef^^ee{\^\i} | 8343 | \gdef^^ee{\^\i} |
| 7750 | \gdef^^ef{\v d} | 8344 | \gdef^^ef{\v d} |
| 7751 | % | 8345 | % |
| 7752 | \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER D WITH STROKE}} | 8346 | \gdef^^f0{\dh} |
| 7753 | \gdef^^f1{\'n} | 8347 | \gdef^^f1{\'n} |
| 7754 | \gdef^^f2{\v n} | 8348 | \gdef^^f2{\v n} |
| 7755 | \gdef^^f3{\'o} | 8349 | \gdef^^f3{\'o} |
| @@ -7768,11 +8362,11 @@ should work if nowhere else does.} | |||
| 7768 | } | 8362 | } |
| 7769 | 8363 | ||
| 7770 | % UTF-8 character definitions. | 8364 | % UTF-8 character definitions. |
| 7771 | % | 8365 | % |
| 7772 | % This code to support UTF-8 is based on LaTeX's utf8.def, with some | 8366 | % This code to support UTF-8 is based on LaTeX's utf8.def, with some |
| 7773 | % changes for Texinfo conventions. It is included here under the GPL by | 8367 | % changes for Texinfo conventions. It is included here under the GPL by |
| 7774 | % permission from Frank Mittelbach and the LaTeX team. | 8368 | % permission from Frank Mittelbach and the LaTeX team. |
| 7775 | % | 8369 | % |
| 7776 | \newcount\countUTFx | 8370 | \newcount\countUTFx |
| 7777 | \newcount\countUTFy | 8371 | \newcount\countUTFy |
| 7778 | \newcount\countUTFz | 8372 | \newcount\countUTFz |
| @@ -7893,6 +8487,7 @@ should work if nowhere else does.} | |||
| 7893 | \DeclareUnicodeCharacter{00A8}{\"{ }} | 8487 | \DeclareUnicodeCharacter{00A8}{\"{ }} |
| 7894 | \DeclareUnicodeCharacter{00A9}{\copyright} | 8488 | \DeclareUnicodeCharacter{00A9}{\copyright} |
| 7895 | \DeclareUnicodeCharacter{00AA}{\ordf} | 8489 | \DeclareUnicodeCharacter{00AA}{\ordf} |
| 8490 | \DeclareUnicodeCharacter{00AB}{\guillemetleft} | ||
| 7896 | \DeclareUnicodeCharacter{00AD}{\-} | 8491 | \DeclareUnicodeCharacter{00AD}{\-} |
| 7897 | \DeclareUnicodeCharacter{00AE}{\registeredsymbol} | 8492 | \DeclareUnicodeCharacter{00AE}{\registeredsymbol} |
| 7898 | \DeclareUnicodeCharacter{00AF}{\={ }} | 8493 | \DeclareUnicodeCharacter{00AF}{\={ }} |
| @@ -7901,6 +8496,7 @@ should work if nowhere else does.} | |||
| 7901 | \DeclareUnicodeCharacter{00B4}{\'{ }} | 8496 | \DeclareUnicodeCharacter{00B4}{\'{ }} |
| 7902 | \DeclareUnicodeCharacter{00B8}{\cedilla{ }} | 8497 | \DeclareUnicodeCharacter{00B8}{\cedilla{ }} |
| 7903 | \DeclareUnicodeCharacter{00BA}{\ordm} | 8498 | \DeclareUnicodeCharacter{00BA}{\ordm} |
| 8499 | \DeclareUnicodeCharacter{00BB}{\guillemetright} | ||
| 7904 | \DeclareUnicodeCharacter{00BF}{\questiondown} | 8500 | \DeclareUnicodeCharacter{00BF}{\questiondown} |
| 7905 | 8501 | ||
| 7906 | \DeclareUnicodeCharacter{00C0}{\`A} | 8502 | \DeclareUnicodeCharacter{00C0}{\`A} |
| @@ -7920,6 +8516,7 @@ should work if nowhere else does.} | |||
| 7920 | \DeclareUnicodeCharacter{00CE}{\^I} | 8516 | \DeclareUnicodeCharacter{00CE}{\^I} |
| 7921 | \DeclareUnicodeCharacter{00CF}{\"I} | 8517 | \DeclareUnicodeCharacter{00CF}{\"I} |
| 7922 | 8518 | ||
| 8519 | \DeclareUnicodeCharacter{00D0}{\DH} | ||
| 7923 | \DeclareUnicodeCharacter{00D1}{\~N} | 8520 | \DeclareUnicodeCharacter{00D1}{\~N} |
| 7924 | \DeclareUnicodeCharacter{00D2}{\`O} | 8521 | \DeclareUnicodeCharacter{00D2}{\`O} |
| 7925 | \DeclareUnicodeCharacter{00D3}{\'O} | 8522 | \DeclareUnicodeCharacter{00D3}{\'O} |
| @@ -7932,6 +8529,7 @@ should work if nowhere else does.} | |||
| 7932 | \DeclareUnicodeCharacter{00DB}{\^U} | 8529 | \DeclareUnicodeCharacter{00DB}{\^U} |
| 7933 | \DeclareUnicodeCharacter{00DC}{\"U} | 8530 | \DeclareUnicodeCharacter{00DC}{\"U} |
| 7934 | \DeclareUnicodeCharacter{00DD}{\'Y} | 8531 | \DeclareUnicodeCharacter{00DD}{\'Y} |
| 8532 | \DeclareUnicodeCharacter{00DE}{\TH} | ||
| 7935 | \DeclareUnicodeCharacter{00DF}{\ss} | 8533 | \DeclareUnicodeCharacter{00DF}{\ss} |
| 7936 | 8534 | ||
| 7937 | \DeclareUnicodeCharacter{00E0}{\`a} | 8535 | \DeclareUnicodeCharacter{00E0}{\`a} |
| @@ -7951,6 +8549,7 @@ should work if nowhere else does.} | |||
| 7951 | \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}} | 8549 | \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}} |
| 7952 | \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}} | 8550 | \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}} |
| 7953 | 8551 | ||
| 8552 | \DeclareUnicodeCharacter{00F0}{\dh} | ||
| 7954 | \DeclareUnicodeCharacter{00F1}{\~n} | 8553 | \DeclareUnicodeCharacter{00F1}{\~n} |
| 7955 | \DeclareUnicodeCharacter{00F2}{\`o} | 8554 | \DeclareUnicodeCharacter{00F2}{\`o} |
| 7956 | \DeclareUnicodeCharacter{00F3}{\'o} | 8555 | \DeclareUnicodeCharacter{00F3}{\'o} |
| @@ -7963,16 +8562,21 @@ should work if nowhere else does.} | |||
| 7963 | \DeclareUnicodeCharacter{00FB}{\^u} | 8562 | \DeclareUnicodeCharacter{00FB}{\^u} |
| 7964 | \DeclareUnicodeCharacter{00FC}{\"u} | 8563 | \DeclareUnicodeCharacter{00FC}{\"u} |
| 7965 | \DeclareUnicodeCharacter{00FD}{\'y} | 8564 | \DeclareUnicodeCharacter{00FD}{\'y} |
| 8565 | \DeclareUnicodeCharacter{00FE}{\th} | ||
| 7966 | \DeclareUnicodeCharacter{00FF}{\"y} | 8566 | \DeclareUnicodeCharacter{00FF}{\"y} |
| 7967 | 8567 | ||
| 7968 | \DeclareUnicodeCharacter{0100}{\=A} | 8568 | \DeclareUnicodeCharacter{0100}{\=A} |
| 7969 | \DeclareUnicodeCharacter{0101}{\=a} | 8569 | \DeclareUnicodeCharacter{0101}{\=a} |
| 7970 | \DeclareUnicodeCharacter{0102}{\u{A}} | 8570 | \DeclareUnicodeCharacter{0102}{\u{A}} |
| 7971 | \DeclareUnicodeCharacter{0103}{\u{a}} | 8571 | \DeclareUnicodeCharacter{0103}{\u{a}} |
| 8572 | \DeclareUnicodeCharacter{0104}{\ogonek{A}} | ||
| 8573 | \DeclareUnicodeCharacter{0105}{\ogonek{a}} | ||
| 7972 | \DeclareUnicodeCharacter{0106}{\'C} | 8574 | \DeclareUnicodeCharacter{0106}{\'C} |
| 7973 | \DeclareUnicodeCharacter{0107}{\'c} | 8575 | \DeclareUnicodeCharacter{0107}{\'c} |
| 7974 | \DeclareUnicodeCharacter{0108}{\^C} | 8576 | \DeclareUnicodeCharacter{0108}{\^C} |
| 7975 | \DeclareUnicodeCharacter{0109}{\^c} | 8577 | \DeclareUnicodeCharacter{0109}{\^c} |
| 8578 | \DeclareUnicodeCharacter{0118}{\ogonek{E}} | ||
| 8579 | \DeclareUnicodeCharacter{0119}{\ogonek{e}} | ||
| 7976 | \DeclareUnicodeCharacter{010A}{\dotaccent{C}} | 8580 | \DeclareUnicodeCharacter{010A}{\dotaccent{C}} |
| 7977 | \DeclareUnicodeCharacter{010B}{\dotaccent{c}} | 8581 | \DeclareUnicodeCharacter{010B}{\dotaccent{c}} |
| 7978 | \DeclareUnicodeCharacter{010C}{\v{C}} | 8582 | \DeclareUnicodeCharacter{010C}{\v{C}} |
| @@ -8120,6 +8724,8 @@ should work if nowhere else does.} | |||
| 8120 | \DeclareUnicodeCharacter{0233}{\=y} | 8724 | \DeclareUnicodeCharacter{0233}{\=y} |
| 8121 | \DeclareUnicodeCharacter{0237}{\dotless{j}} | 8725 | \DeclareUnicodeCharacter{0237}{\dotless{j}} |
| 8122 | 8726 | ||
| 8727 | \DeclareUnicodeCharacter{02DB}{\ogonek{ }} | ||
| 8728 | |||
| 8123 | \DeclareUnicodeCharacter{1E02}{\dotaccent{B}} | 8729 | \DeclareUnicodeCharacter{1E02}{\dotaccent{B}} |
| 8124 | \DeclareUnicodeCharacter{1E03}{\dotaccent{b}} | 8730 | \DeclareUnicodeCharacter{1E03}{\dotaccent{b}} |
| 8125 | \DeclareUnicodeCharacter{1E04}{\udotaccent{B}} | 8731 | \DeclareUnicodeCharacter{1E04}{\udotaccent{B}} |
| @@ -8249,8 +8855,16 @@ should work if nowhere else does.} | |||
| 8249 | 8855 | ||
| 8250 | \DeclareUnicodeCharacter{2013}{--} | 8856 | \DeclareUnicodeCharacter{2013}{--} |
| 8251 | \DeclareUnicodeCharacter{2014}{---} | 8857 | \DeclareUnicodeCharacter{2014}{---} |
| 8858 | \DeclareUnicodeCharacter{2018}{\quoteleft} | ||
| 8859 | \DeclareUnicodeCharacter{2019}{\quoteright} | ||
| 8860 | \DeclareUnicodeCharacter{201A}{\quotesinglbase} | ||
| 8861 | \DeclareUnicodeCharacter{201C}{\quotedblleft} | ||
| 8862 | \DeclareUnicodeCharacter{201D}{\quotedblright} | ||
| 8863 | \DeclareUnicodeCharacter{201E}{\quotedblbase} | ||
| 8252 | \DeclareUnicodeCharacter{2022}{\bullet} | 8864 | \DeclareUnicodeCharacter{2022}{\bullet} |
| 8253 | \DeclareUnicodeCharacter{2026}{\dots} | 8865 | \DeclareUnicodeCharacter{2026}{\dots} |
| 8866 | \DeclareUnicodeCharacter{2039}{\guilsinglleft} | ||
| 8867 | \DeclareUnicodeCharacter{203A}{\guilsinglright} | ||
| 8254 | \DeclareUnicodeCharacter{20AC}{\euro} | 8868 | \DeclareUnicodeCharacter{20AC}{\euro} |
| 8255 | 8869 | ||
| 8256 | \DeclareUnicodeCharacter{2192}{\expansion} | 8870 | \DeclareUnicodeCharacter{2192}{\expansion} |
| @@ -8288,7 +8902,7 @@ should work if nowhere else does.} | |||
| 8288 | % Don't be so finicky about underfull hboxes, either. | 8902 | % Don't be so finicky about underfull hboxes, either. |
| 8289 | \hbadness = 2000 | 8903 | \hbadness = 2000 |
| 8290 | 8904 | ||
| 8291 | % Following George Bush, just get rid of widows and orphans. | 8905 | % Following George Bush, get rid of widows and orphans. |
| 8292 | \widowpenalty=10000 | 8906 | \widowpenalty=10000 |
| 8293 | \clubpenalty=10000 | 8907 | \clubpenalty=10000 |
| 8294 | 8908 | ||
| @@ -8335,6 +8949,8 @@ should work if nowhere else does.} | |||
| 8335 | \ifpdf | 8949 | \ifpdf |
| 8336 | \pdfpageheight #7\relax | 8950 | \pdfpageheight #7\relax |
| 8337 | \pdfpagewidth #8\relax | 8951 | \pdfpagewidth #8\relax |
| 8952 | % if we don't reset these, they will remain at "1 true in" of | ||
| 8953 | % whatever layout pdftex was dumped with. | ||
| 8338 | \pdfhorigin = 1 true in | 8954 | \pdfhorigin = 1 true in |
| 8339 | \pdfvorigin = 1 true in | 8955 | \pdfvorigin = 1 true in |
| 8340 | \fi | 8956 | \fi |
| @@ -8351,7 +8967,7 @@ should work if nowhere else does.} | |||
| 8351 | \textleading = 13.2pt | 8967 | \textleading = 13.2pt |
| 8352 | % | 8968 | % |
| 8353 | % If page is nothing but text, make it come out even. | 8969 | % If page is nothing but text, make it come out even. |
| 8354 | \internalpagesizes{46\baselineskip}{6in}% | 8970 | \internalpagesizes{607.2pt}{6in}% that's 46 lines |
| 8355 | {\voffset}{.25in}% | 8971 | {\voffset}{.25in}% |
| 8356 | {\bindingoffset}{36pt}% | 8972 | {\bindingoffset}{36pt}% |
| 8357 | {11in}{8.5in}% | 8973 | {11in}{8.5in}% |
| @@ -8407,7 +9023,7 @@ should work if nowhere else does.} | |||
| 8407 | % \global\normaloffset = -6mm | 9023 | % \global\normaloffset = -6mm |
| 8408 | % \global\bindingoffset = 10mm | 9024 | % \global\bindingoffset = 10mm |
| 8409 | % @end tex | 9025 | % @end tex |
| 8410 | \internalpagesizes{51\baselineskip}{160mm} | 9026 | \internalpagesizes{673.2pt}{160mm}% that's 51 lines |
| 8411 | {\voffset}{\hoffset}% | 9027 | {\voffset}{\hoffset}% |
| 8412 | {\bindingoffset}{44pt}% | 9028 | {\bindingoffset}{44pt}% |
| 8413 | {297mm}{210mm}% | 9029 | {297mm}{210mm}% |
| @@ -8472,7 +9088,7 @@ should work if nowhere else does.} | |||
| 8472 | \parskip = 3pt plus 2pt minus 1pt | 9088 | \parskip = 3pt plus 2pt minus 1pt |
| 8473 | \setleading{\textleading}% | 9089 | \setleading{\textleading}% |
| 8474 | % | 9090 | % |
| 8475 | \dimen0 = #1 | 9091 | \dimen0 = #1\relax |
| 8476 | \advance\dimen0 by \voffset | 9092 | \advance\dimen0 by \voffset |
| 8477 | % | 9093 | % |
| 8478 | \dimen2 = \hsize | 9094 | \dimen2 = \hsize |
| @@ -8491,6 +9107,9 @@ should work if nowhere else does.} | |||
| 8491 | 9107 | ||
| 8492 | \message{and turning on texinfo input format.} | 9108 | \message{and turning on texinfo input format.} |
| 8493 | 9109 | ||
| 9110 | % DEL is a comment character, in case @c does not suffice. | ||
| 9111 | \catcode`\^^? = 14 | ||
| 9112 | |||
| 8494 | % Define macros to output various characters with catcode for normal text. | 9113 | % Define macros to output various characters with catcode for normal text. |
| 8495 | \catcode`\"=\other | 9114 | \catcode`\"=\other |
| 8496 | \catcode`\~=\other | 9115 | \catcode`\~=\other |
| @@ -8600,7 +9219,7 @@ should work if nowhere else does.} | |||
| 8600 | 9219 | ||
| 8601 | % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of | 9220 | % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of |
| 8602 | % the literal character `\'. | 9221 | % the literal character `\'. |
| 8603 | % | 9222 | % |
| 8604 | @def@normalturnoffactive{% | 9223 | @def@normalturnoffactive{% |
| 8605 | @let\=@normalbackslash | 9224 | @let\=@normalbackslash |
| 8606 | @let"=@normaldoublequote | 9225 | @let"=@normaldoublequote |
| @@ -8612,6 +9231,8 @@ should work if nowhere else does.} | |||
| 8612 | @let>=@normalgreater | 9231 | @let>=@normalgreater |
| 8613 | @let+=@normalplus | 9232 | @let+=@normalplus |
| 8614 | @let$=@normaldollar %$ font-lock fix | 9233 | @let$=@normaldollar %$ font-lock fix |
| 9234 | @markupsetuplqdefault | ||
| 9235 | @markupsetuprqdefault | ||
| 8615 | @unsepspaces | 9236 | @unsepspaces |
| 8616 | } | 9237 | } |
| 8617 | 9238 | ||
| @@ -8646,6 +9267,14 @@ should work if nowhere else does.} | |||
| 8646 | @catcode`@# = @other | 9267 | @catcode`@# = @other |
| 8647 | @catcode`@% = @other | 9268 | @catcode`@% = @other |
| 8648 | 9269 | ||
| 9270 | @c Finally, make ` and ' active, so that txicodequoteundirected and | ||
| 9271 | @c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we | ||
| 9272 | @c don't make ` and ' active, @code will not get them as active chars. | ||
| 9273 | @c Do this last of all since we use ` in the previous @catcode assignments. | ||
| 9274 | @catcode`@'=@active | ||
| 9275 | @catcode`@`=@active | ||
| 9276 | @markupsetuplqdefault | ||
| 9277 | @markupsetuprqdefault | ||
| 8649 | 9278 | ||
| 8650 | @c Local variables: | 9279 | @c Local variables: |
| 8651 | @c eval: (add-hook 'write-file-hooks 'time-stamp) | 9280 | @c eval: (add-hook 'write-file-hooks 'time-stamp) |