diff options
| -rwxr-xr-x | build-aux/config.sub | 4 | ||||
| -rw-r--r-- | doc/misc/texinfo.tex | 448 | ||||
| -rw-r--r-- | lib/_Noreturn.h | 16 | ||||
| -rw-r--r-- | lib/gnulib.mk.in | 1 |
4 files changed, 317 insertions, 152 deletions
diff --git a/build-aux/config.sub b/build-aux/config.sub index 3b4c7624b68..a44fd8ae908 100755 --- a/build-aux/config.sub +++ b/build-aux/config.sub | |||
| @@ -822,7 +822,9 @@ case $basic_machine in | |||
| 822 | cpu=m68k | 822 | cpu=m68k |
| 823 | vendor=next | 823 | vendor=next |
| 824 | case $os in | 824 | case $os in |
| 825 | nextstep* ) | 825 | openstep*) |
| 826 | ;; | ||
| 827 | nextstep*) | ||
| 826 | ;; | 828 | ;; |
| 827 | ns2*) | 829 | ns2*) |
| 828 | os=nextstep2 | 830 | os=nextstep2 |
diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex index 667292a96a1..192284cccc1 100644 --- a/doc/misc/texinfo.tex +++ b/doc/misc/texinfo.tex | |||
| @@ -3,7 +3,8 @@ | |||
| 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{2019-03-23.11} | 6 | \def\texinfoversion{2019-03-03.15} |
| 7 | |||
| 7 | % | 8 | % |
| 8 | % Copyright 1985, 1986, 1988, 1990-2019 Free Software Foundation, Inc. | 9 | % Copyright 1985, 1986, 1988, 1990-2019 Free Software Foundation, Inc. |
| 9 | % | 10 | % |
| @@ -386,8 +387,14 @@ | |||
| 386 | % take effect in \write's, yet the group defined by the \vbox ends | 387 | % take effect in \write's, yet the group defined by the \vbox ends |
| 387 | % before the \shipout runs. | 388 | % before the \shipout runs. |
| 388 | % | 389 | % |
| 389 | \atdummies % don't expand commands in the output. | 390 | \indexdummies % don't expand commands in the output. |
| 390 | \turnoffactive | 391 | \normalturnoffactive % \ in index entries must not stay \, e.g., if |
| 392 | % the page break happens to be in the middle of an example. | ||
| 393 | % We don't want .vr (or whatever) entries like this: | ||
| 394 | % \entry{{\indexbackslash }acronym}{32}{\code {\acronym}} | ||
| 395 | % "\acronym" won't work when it's read back in; | ||
| 396 | % it needs to be | ||
| 397 | % {\code {{\backslashcurfont }acronym} | ||
| 391 | \shipout\vbox{% | 398 | \shipout\vbox{% |
| 392 | % Do this early so pdf references go to the beginning of the page. | 399 | % Do this early so pdf references go to the beginning of the page. |
| 393 | \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi | 400 | \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi |
| @@ -448,10 +455,11 @@ | |||
| 448 | }% | 455 | }% |
| 449 | } | 456 | } |
| 450 | 457 | ||
| 451 | % First remove any @comment, then any @c comment. Pass the result on to | 458 | % First remove any @comment, then any @c comment. Also remove a @texinfoc |
| 452 | % \argcheckspaces. | 459 | % comment (see \scanmacro for details). Pass the result on to \argcheckspaces. |
| 453 | \def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} | 460 | \def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} |
| 454 | \def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} | 461 | \def\argremovec#1\c#2\ArgTerm{\argremovetexinfoc #1\texinfoc\ArgTerm} |
| 462 | \def\argremovetexinfoc#1\texinfoc#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} | ||
| 455 | 463 | ||
| 456 | % Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space. | 464 | % Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space. |
| 457 | % | 465 | % |
| @@ -1123,16 +1131,6 @@ where each line of input produces a line of output.} | |||
| 1123 | \fi | 1131 | \fi |
| 1124 | \fi | 1132 | \fi |
| 1125 | 1133 | ||
| 1126 | \newif\ifpdforxetex | ||
| 1127 | \pdforxetexfalse | ||
| 1128 | \ifpdf | ||
| 1129 | \pdforxetextrue | ||
| 1130 | \fi | ||
| 1131 | \ifx\XeTeXrevision\thisisundefined\else | ||
| 1132 | \pdforxetextrue | ||
| 1133 | \fi | ||
| 1134 | |||
| 1135 | |||
| 1136 | % PDF uses PostScript string constants for the names of xref targets, | 1134 | % PDF uses PostScript string constants for the names of xref targets, |
| 1137 | % for display in the outlines, and in other places. Thus, we have to | 1135 | % for display in the outlines, and in other places. Thus, we have to |
| 1138 | % double any backslashes. Otherwise, a name like "\node" will be | 1136 | % double any backslashes. Otherwise, a name like "\node" will be |
| @@ -2846,7 +2844,7 @@ end | |||
| 2846 | 2844 | ||
| 2847 | % @t, explicit typewriter. | 2845 | % @t, explicit typewriter. |
| 2848 | \def\t#1{% | 2846 | \def\t#1{% |
| 2849 | {\tt \plainfrenchspacing #1}% | 2847 | {\tt \rawbackslash \plainfrenchspacing #1}% |
| 2850 | \null | 2848 | \null |
| 2851 | } | 2849 | } |
| 2852 | 2850 | ||
| @@ -2873,6 +2871,7 @@ end | |||
| 2873 | % Turn off hyphenation. | 2871 | % Turn off hyphenation. |
| 2874 | \nohyphenation | 2872 | \nohyphenation |
| 2875 | % | 2873 | % |
| 2874 | \rawbackslash | ||
| 2876 | \plainfrenchspacing | 2875 | \plainfrenchspacing |
| 2877 | #1% | 2876 | #1% |
| 2878 | }% | 2877 | }% |
| @@ -3113,7 +3112,7 @@ end | |||
| 3113 | % So now @email is just like @uref, unless we are pdf. | 3112 | % So now @email is just like @uref, unless we are pdf. |
| 3114 | % | 3113 | % |
| 3115 | %\def\email#1{\angleleft{\tt #1}\angleright} | 3114 | %\def\email#1{\angleleft{\tt #1}\angleright} |
| 3116 | \ifpdforxetex | 3115 | \ifpdf |
| 3117 | \def\email#1{\doemail#1,,\finish} | 3116 | \def\email#1{\doemail#1,,\finish} |
| 3118 | \def\doemail#1,#2,#3\finish{\begingroup | 3117 | \def\doemail#1,#2,#3\finish{\begingroup |
| 3119 | \unsepspaces | 3118 | \unsepspaces |
| @@ -3123,7 +3122,18 @@ end | |||
| 3123 | \endlink | 3122 | \endlink |
| 3124 | \endgroup} | 3123 | \endgroup} |
| 3125 | \else | 3124 | \else |
| 3126 | \let\email=\uref | 3125 | \ifx\XeTeXrevision\thisisundefined |
| 3126 | \let\email=\uref | ||
| 3127 | \else | ||
| 3128 | \def\email#1{\doemail#1,,\finish} | ||
| 3129 | \def\doemail#1,#2,#3\finish{\begingroup | ||
| 3130 | \unsepspaces | ||
| 3131 | \pdfurl{mailto:#1}% | ||
| 3132 | \setbox0 = \hbox{\ignorespaces #2}% | ||
| 3133 | \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi | ||
| 3134 | \endlink | ||
| 3135 | \endgroup} | ||
| 3136 | \fi | ||
| 3127 | \fi | 3137 | \fi |
| 3128 | 3138 | ||
| 3129 | % @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), | 3139 | % @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), |
| @@ -4657,6 +4667,19 @@ end | |||
| 4657 | } | 4667 | } |
| 4658 | } | 4668 | } |
| 4659 | 4669 | ||
| 4670 | % We have this subroutine so that we can handle at least some @value's | ||
| 4671 | % properly in indexes (we call \makevalueexpandable in \indexdummies). | ||
| 4672 | % The command has to be fully expandable (if the variable is set), since | ||
| 4673 | % the result winds up in the index file. This means that if the | ||
| 4674 | % variable's value contains other Texinfo commands, it's almost certain | ||
| 4675 | % it will fail (although perhaps we could fix that with sufficient work | ||
| 4676 | % to do a one-level expansion on the result, instead of complete). | ||
| 4677 | % | ||
| 4678 | % Unfortunately, this has the consequence that when _ is in the *value* | ||
| 4679 | % of an @set, it does not print properly in the roman fonts (get the cmr | ||
| 4680 | % dot accent at position 126 instead). No fix comes to mind, and it's | ||
| 4681 | % been this way since 2003 or earlier, so just ignore it. | ||
| 4682 | % | ||
| 4660 | \def\expandablevalue#1{% | 4683 | \def\expandablevalue#1{% |
| 4661 | \expandafter\ifx\csname SET#1\endcsname\relax | 4684 | \expandafter\ifx\csname SET#1\endcsname\relax |
| 4662 | {[No value for ``#1'']}% | 4685 | {[No value for ``#1'']}% |
| @@ -4685,7 +4708,7 @@ end | |||
| 4685 | % if possible, otherwise sort late. | 4708 | % if possible, otherwise sort late. |
| 4686 | \def\indexnofontsvalue#1{% | 4709 | \def\indexnofontsvalue#1{% |
| 4687 | \expandafter\ifx\csname SET#1\endcsname\relax | 4710 | \expandafter\ifx\csname SET#1\endcsname\relax |
| 4688 | ZZZZZZZ% | 4711 | ZZZZZZZ |
| 4689 | \else | 4712 | \else |
| 4690 | \csname SET#1\endcsname | 4713 | \csname SET#1\endcsname |
| 4691 | \fi | 4714 | \fi |
| @@ -4835,8 +4858,23 @@ end | |||
| 4835 | \def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}} | 4858 | \def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}} |
| 4836 | 4859 | ||
| 4837 | 4860 | ||
| 4838 | % Used for the aux, toc and index files to prevent expansion of Texinfo | 4861 | % Used when writing an index entry out to an index file to prevent |
| 4839 | % commands. | 4862 | % expansion of Texinfo commands that can appear in an index entry. |
| 4863 | % | ||
| 4864 | \def\indexdummies{% | ||
| 4865 | \escapechar = `\\ % use backslash in output files. | ||
| 4866 | \definedummyletter\@% | ||
| 4867 | \definedummyletter\ % | ||
| 4868 | % | ||
| 4869 | % For texindex which always views { and } as separators. | ||
| 4870 | \def\{{\lbracechar{}}% | ||
| 4871 | \def\}{\rbracechar{}}% | ||
| 4872 | % | ||
| 4873 | % Do the redefinitions. | ||
| 4874 | \definedummies | ||
| 4875 | } | ||
| 4876 | |||
| 4877 | % Used for the aux and toc files, where @ is the escape character. | ||
| 4840 | % | 4878 | % |
| 4841 | \def\atdummies{% | 4879 | \def\atdummies{% |
| 4842 | \definedummyletter\@% | 4880 | \definedummyletter\@% |
| @@ -4866,7 +4904,8 @@ end | |||
| 4866 | \def\definedummyletter#1{\def#1{\string#1}}% | 4904 | \def\definedummyletter#1{\def#1{\string#1}}% |
| 4867 | \let\definedummyaccent\definedummyletter | 4905 | \let\definedummyaccent\definedummyletter |
| 4868 | 4906 | ||
| 4869 | % Called from \atdummies to prevent the expansion of commands. | 4907 | % Called from \indexdummies and \atdummies, to effectively prevent |
| 4908 | % the expansion of commands. | ||
| 4870 | % | 4909 | % |
| 4871 | \def\definedummies{% | 4910 | \def\definedummies{% |
| 4872 | % | 4911 | % |
| @@ -5031,9 +5070,11 @@ end | |||
| 5031 | \commondummyword\xref | 5070 | \commondummyword\xref |
| 5032 | } | 5071 | } |
| 5033 | 5072 | ||
| 5073 | % This does nothing, but for a time it was recommended to use | ||
| 5074 | % \usebracesinindexestrue to be able to use braces in index entries. | ||
| 5075 | |||
| 5034 | \let\indexlbrace\relax | 5076 | \let\indexlbrace\relax |
| 5035 | \let\indexrbrace\relax | 5077 | \let\indexrbrace\relax |
| 5036 | \let\indexatchar\relax | ||
| 5037 | 5078 | ||
| 5038 | {\catcode`\@=0 | 5079 | {\catcode`\@=0 |
| 5039 | \catcode`\\=13 | 5080 | \catcode`\\=13 |
| @@ -5067,8 +5108,10 @@ end | |||
| 5067 | } | 5108 | } |
| 5068 | 5109 | ||
| 5069 | \gdef\indexnonalnumreappear{% | 5110 | \gdef\indexnonalnumreappear{% |
| 5111 | \useindexbackslash | ||
| 5070 | \let-\normaldash | 5112 | \let-\normaldash |
| 5071 | \let<\normalless | 5113 | \let<\normalless |
| 5114 | \def\@{@}% | ||
| 5072 | } | 5115 | } |
| 5073 | } | 5116 | } |
| 5074 | 5117 | ||
| @@ -5179,6 +5222,8 @@ end | |||
| 5179 | 5222 | ||
| 5180 | 5223 | ||
| 5181 | 5224 | ||
| 5225 | \let\SETmarginindex=\relax % put index entries in margin (undocumented)? | ||
| 5226 | |||
| 5182 | % #1 is the index name, #2 is the entry text. | 5227 | % #1 is the index name, #2 is the entry text. |
| 5183 | \def\doind#1#2{% | 5228 | \def\doind#1#2{% |
| 5184 | \iflinks | 5229 | \iflinks |
| @@ -5210,6 +5255,13 @@ end | |||
| 5210 | \fi} | 5255 | \fi} |
| 5211 | \def\indexisfl{fl} | 5256 | \def\indexisfl{fl} |
| 5212 | 5257 | ||
| 5258 | % Output \ as {\indexbackslash}, because \ is an escape character in | ||
| 5259 | % the index files. | ||
| 5260 | \let\indexbackslash=\relax | ||
| 5261 | {\catcode`\@=0 \catcode`\\=\active | ||
| 5262 | @gdef@useindexbackslash{@def\{{@indexbackslash}}} | ||
| 5263 | } | ||
| 5264 | |||
| 5213 | % Definition for writing index entry sort key. | 5265 | % Definition for writing index entry sort key. |
| 5214 | { | 5266 | { |
| 5215 | \catcode`\-=13 | 5267 | \catcode`\-=13 |
| @@ -5221,25 +5273,14 @@ end | |||
| 5221 | \xdef\indexsortkey{#1}\endgroup} | 5273 | \xdef\indexsortkey{#1}\endgroup} |
| 5222 | } | 5274 | } |
| 5223 | 5275 | ||
| 5224 | \def\indexwriteseealso#1{ | ||
| 5225 | \gdef\pagenumbertext{@seealso{#1}}% | ||
| 5226 | } | ||
| 5227 | |||
| 5228 | % The default definitions | ||
| 5229 | \def\sortas#1{}% | ||
| 5230 | \def\seealso#1{\i{\putwordSeeAlso}\ #1}% for sorted index file only | ||
| 5231 | \def\putwordSeeAlso{see also} | ||
| 5232 | |||
| 5233 | % Given index entry text like "aaa @subentry bbb @sortas{ZZZ}": | 5276 | % Given index entry text like "aaa @subentry bbb @sortas{ZZZ}": |
| 5234 | % * Set \bracedtext to "{aaa}{bbb}" | 5277 | % * Set \bracedtext to "{aaa}{bbb}" |
| 5235 | % * Set \fullindexsortkey to "aaa @subentry ZZZ" | 5278 | % * Set \fullindexsortkey to "aaa @subentry ZZZ" |
| 5236 | % * If @seealso occurs, set \pagenumbertext | ||
| 5237 | % | 5279 | % |
| 5238 | \def\splitindexentry#1{% | 5280 | \def\splitindexentry#1{% |
| 5239 | \gdef\fullindexsortkey{}% | 5281 | \gdef\fullindexsortkey{}% |
| 5240 | \xdef\bracedtext{}% | 5282 | \xdef\bracedtext{}% |
| 5241 | \def\sep{}% | 5283 | \def\sep{}% |
| 5242 | \def\seealso##1{}% | ||
| 5243 | \expandafter\doindexsegment#1\subentry\finish\subentry | 5284 | \expandafter\doindexsegment#1\subentry\finish\subentry |
| 5244 | } | 5285 | } |
| 5245 | 5286 | ||
| @@ -5251,6 +5292,7 @@ end | |||
| 5251 | % | 5292 | % |
| 5252 | % Fully expand the segment, throwing away any @sortas directives, and | 5293 | % Fully expand the segment, throwing away any @sortas directives, and |
| 5253 | % trim spaces. | 5294 | % trim spaces. |
| 5295 | \def\sortas##1{}% | ||
| 5254 | \edef\trimmed{\segment}% | 5296 | \edef\trimmed{\segment}% |
| 5255 | \edef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}% | 5297 | \edef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}% |
| 5256 | % | 5298 | % |
| @@ -5260,20 +5302,16 @@ end | |||
| 5260 | % font commands turned off. | 5302 | % font commands turned off. |
| 5261 | \bgroup | 5303 | \bgroup |
| 5262 | \let\sortas\indexwritesortas | 5304 | \let\sortas\indexwritesortas |
| 5263 | \let\seealso\indexwriteseealso | ||
| 5264 | \indexnofonts | 5305 | \indexnofonts |
| 5265 | % The braces around the commands are recognized by texindex. | 5306 | % The braces around the commands are recognized by texindex. |
| 5266 | \def\lbracechar{{\indexlbrace}}% | 5307 | \def\lbracechar{{\indexlbrace}}% |
| 5267 | \def\rbracechar{{\indexrbrace}}% | 5308 | \def\rbracechar{{\indexrbrace}}% |
| 5268 | \let\{=\lbracechar | 5309 | \let\{=\lbracechar |
| 5269 | \let\}=\rbracechar | 5310 | \let\}=\rbracechar |
| 5270 | \def\@{{\indexatchar}}% | ||
| 5271 | \def\atchar##1{\@}% | ||
| 5272 | % | 5311 | % |
| 5273 | \let\indexsortkey\empty | 5312 | \let\indexsortkey\empty |
| 5274 | \global\let\pagenumbertext\empty | ||
| 5275 | % Execute the segment and throw away the typeset output. This executes | 5313 | % Execute the segment and throw away the typeset output. This executes |
| 5276 | % any @sortas or @seealso commands in this segment. | 5314 | % any @sortas commands in this segment. |
| 5277 | \setbox\dummybox = \hbox{\segment}% | 5315 | \setbox\dummybox = \hbox{\segment}% |
| 5278 | \ifx\indexsortkey\empty{% | 5316 | \ifx\indexsortkey\empty{% |
| 5279 | \indexnonalnumdisappear | 5317 | \indexnonalnumdisappear |
| @@ -5294,20 +5332,21 @@ end | |||
| 5294 | \fi | 5332 | \fi |
| 5295 | } | 5333 | } |
| 5296 | \def\isfinish{\finish}% | 5334 | \def\isfinish{\finish}% |
| 5297 | \newbox\dummybox % used above | ||
| 5298 | 5335 | ||
| 5299 | \let\subentry\relax | 5336 | \let\subentry\relax |
| 5300 | 5337 | ||
| 5301 | % Write the entry in \toks0 to the index file. | 5338 | % Write the entry in \toks0 to the index file. |
| 5302 | % | 5339 | % |
| 5303 | \def\doindwrite{% | 5340 | \def\doindwrite{% |
| 5304 | \maybemarginindex | 5341 | % Put the index entry in the margin if desired. |
| 5305 | % | 5342 | \ifx\SETmarginindex\relax\else |
| 5306 | \atdummies | 5343 | \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}% |
| 5344 | \fi | ||
| 5307 | % | 5345 | % |
| 5308 | % For texindex which always views { and } as separators. | 5346 | % Remember, we are within a group. |
| 5309 | \def\{{\lbracechar{}}% | 5347 | \indexdummies % Must do this here, since \bf, etc expand at this stage |
| 5310 | \def\}{\rbracechar{}}% | 5348 | \useindexbackslash % \indexbackslash isn't defined now so it will be output |
| 5349 | % as is; and it will print as backslash. | ||
| 5311 | % | 5350 | % |
| 5312 | % Split the entry into primary entry and any subentries, and get the index | 5351 | % Split the entry into primary entry and any subentries, and get the index |
| 5313 | % sort key. | 5352 | % sort key. |
| @@ -5321,21 +5360,11 @@ end | |||
| 5321 | % | 5360 | % |
| 5322 | \edef\temp{% | 5361 | \edef\temp{% |
| 5323 | \write\writeto{% | 5362 | \write\writeto{% |
| 5324 | \string\entry{\fullindexsortkey}% | 5363 | \string\entry{\fullindexsortkey}{\noexpand\folio}\bracedtext}% |
| 5325 | {\ifx\pagenumbertext\empty\noexpand\folio\else\pagenumbertext\fi}% | ||
| 5326 | \bracedtext}% | ||
| 5327 | }% | 5364 | }% |
| 5328 | \temp | 5365 | \temp |
| 5329 | } | 5366 | } |
| 5330 | 5367 | \newbox\dummybox % used above | |
| 5331 | % Put the index entry in the margin if desired (undocumented). | ||
| 5332 | \def\maybemarginindex{% | ||
| 5333 | \ifx\SETmarginindex\relax\else | ||
| 5334 | \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \relax\indextext}}% | ||
| 5335 | \fi | ||
| 5336 | } | ||
| 5337 | \let\SETmarginindex=\relax | ||
| 5338 | |||
| 5339 | 5368 | ||
| 5340 | % Take care of unwanted page breaks/skips around a whatsit: | 5369 | % Take care of unwanted page breaks/skips around a whatsit: |
| 5341 | % | 5370 | % |
| @@ -5423,14 +5452,9 @@ end | |||
| 5423 | % \entry {topic}{pagelist} | 5452 | % \entry {topic}{pagelist} |
| 5424 | % for a topic that is used without subtopics | 5453 | % for a topic that is used without subtopics |
| 5425 | % \primary {topic} | 5454 | % \primary {topic} |
| 5426 | % \entry {topic}{} | ||
| 5427 | % for the beginning of a topic that is used with subtopics | 5455 | % for the beginning of a topic that is used with subtopics |
| 5428 | % \secondary {subtopic}{pagelist} | 5456 | % \secondary {subtopic}{pagelist} |
| 5429 | % for each subtopic. | 5457 | % for each subtopic. |
| 5430 | % \secondary {subtopic}{} | ||
| 5431 | % for a subtopic with sub-subtopics | ||
| 5432 | % \tertiary {subtopic}{subsubtopic}{pagelist} | ||
| 5433 | % for each sub-subtopic. | ||
| 5434 | 5458 | ||
| 5435 | % Define the user-accessible indexing commands | 5459 | % Define the user-accessible indexing commands |
| 5436 | % @findex, @vindex, @kindex, @cindex. | 5460 | % @findex, @vindex, @kindex, @cindex. |
| @@ -5455,10 +5479,14 @@ end | |||
| 5455 | \plainfrenchspacing | 5479 | \plainfrenchspacing |
| 5456 | \everypar = {}% don't want the \kern\-parindent from indentation suppression. | 5480 | \everypar = {}% don't want the \kern\-parindent from indentation suppression. |
| 5457 | % | 5481 | % |
| 5482 | % See if the index file exists and is nonempty. | ||
| 5483 | % Change catcode of @ here so that if the index file contains | ||
| 5484 | % \initial {@} | ||
| 5485 | % as its first line, TeX doesn't complain about mismatched braces | ||
| 5486 | % (because it thinks @} is a control sequence). | ||
| 5487 | \catcode`\@ = 12 | ||
| 5458 | % See comment in \requireopenindexfile. | 5488 | % See comment in \requireopenindexfile. |
| 5459 | \def\indexname{#1}\ifx\indexname\indexisfl\def\indexname{f1}\fi | 5489 | \def\indexname{#1}\ifx\indexname\indexisfl\def\indexname{f1}\fi |
| 5460 | % | ||
| 5461 | % See if the index file exists and is nonempty. | ||
| 5462 | \openin 1 \jobname.\indexname s | 5490 | \openin 1 \jobname.\indexname s |
| 5463 | \ifeof 1 | 5491 | \ifeof 1 |
| 5464 | % \enddoublecolumns gets confused if there is no text in the index, | 5492 | % \enddoublecolumns gets confused if there is no text in the index, |
| @@ -5468,6 +5496,8 @@ end | |||
| 5468 | \putwordIndexNonexistent | 5496 | \putwordIndexNonexistent |
| 5469 | \typeout{No file \jobname.\indexname s.}% | 5497 | \typeout{No file \jobname.\indexname s.}% |
| 5470 | \else | 5498 | \else |
| 5499 | \catcode`\\ = 0 | ||
| 5500 | % | ||
| 5471 | % If the index file exists but is empty, then \openin leaves \ifeof | 5501 | % If the index file exists but is empty, then \openin leaves \ifeof |
| 5472 | % false. We have to make TeX try to read something from the file, so | 5502 | % false. We have to make TeX try to read something from the file, so |
| 5473 | % it can discover if there is anything in it. | 5503 | % it can discover if there is anything in it. |
| @@ -5475,27 +5505,47 @@ end | |||
| 5475 | \ifeof 1 | 5505 | \ifeof 1 |
| 5476 | \putwordIndexIsEmpty | 5506 | \putwordIndexIsEmpty |
| 5477 | \else | 5507 | \else |
| 5478 | \expandafter\printindexzz\thisline\relax\relax\finish% | 5508 | % Index files are almost Texinfo source, but we use \ as the escape |
| 5509 | % character. It would be better to use @, but that's too big a change | ||
| 5510 | % to make right now. | ||
| 5511 | \def\indexbackslash{\ttbackslash}% | ||
| 5512 | \let\indexlbrace\{ % Likewise, set these sequences for braces | ||
| 5513 | \let\indexrbrace\} % used in the sort key. | ||
| 5514 | \begindoublecolumns | ||
| 5515 | \let\dotheinsertentrybox\dotheinsertentryboxwithpenalty | ||
| 5516 | % | ||
| 5517 | % Read input from the index file line by line. | ||
| 5518 | \loopdo | ||
| 5519 | \ifeof1 \else | ||
| 5520 | \read 1 to \nextline | ||
| 5521 | \fi | ||
| 5522 | % | ||
| 5523 | \indexinputprocessing | ||
| 5524 | \thisline | ||
| 5525 | % | ||
| 5526 | \ifeof1\else | ||
| 5527 | \let\thisline\nextline | ||
| 5528 | \repeat | ||
| 5529 | %% | ||
| 5530 | \enddoublecolumns | ||
| 5479 | \fi | 5531 | \fi |
| 5480 | \fi | 5532 | \fi |
| 5481 | \closein 1 | 5533 | \closein 1 |
| 5482 | \endgroup} | 5534 | \endgroup} |
| 5535 | \def\loopdo#1\repeat{\def\body{#1}\loopdoxxx} | ||
| 5536 | \def\loopdoxxx{\let\next=\relax\body\let\next=\loopdoxxx\fi\next} | ||
| 5483 | 5537 | ||
| 5484 | % If the index file starts with a backslash, forgo reading the index | 5538 | \def\indexinputprocessing{% |
| 5485 | % file altogether. If somebody upgrades texinfo.tex they may still have | 5539 | \ifeof1 |
| 5486 | % old index files using \ as the escape character. Reading this would | 5540 | \let\firsttoken\relax |
| 5487 | % at best lead to typesetting garbage, at worst a TeX syntax error. | ||
| 5488 | \def\printindexzz#1#2\finish{% | ||
| 5489 | % NB this won't work if the index file starts with a group... | ||
| 5490 | \uccode`\~=`\\ \uppercase{\if\noexpand~}\noexpand#1 | ||
| 5491 | \message{skipping sorted index file}% | ||
| 5492 | (Skipped sorted index file in obsolete format) | ||
| 5493 | \else | 5541 | \else |
| 5494 | \begindoublecolumns | 5542 | \edef\act{\gdef\noexpand\firsttoken{\getfirsttoken\nextline}}% |
| 5495 | \input \jobname.\indexname s | 5543 | \act |
| 5496 | \enddoublecolumns | ||
| 5497 | \fi | 5544 | \fi |
| 5498 | } | 5545 | } |
| 5546 | \def\getfirsttoken#1{\expandafter\getfirsttokenx#1\endfirsttoken} | ||
| 5547 | \long\def\getfirsttokenx#1#2\endfirsttoken{\noexpand#1} | ||
| 5548 | |||
| 5499 | 5549 | ||
| 5500 | % These macros are used by the sorted index file itself. | 5550 | % These macros are used by the sorted index file itself. |
| 5501 | % Change them to control the appearance of the index. | 5551 | % Change them to control the appearance of the index. |
| @@ -5504,18 +5554,12 @@ end | |||
| 5504 | \catcode`\|=13 \catcode`\<=13 \catcode`\>=13 \catcode`\+=13 \catcode`\"=13 | 5554 | \catcode`\|=13 \catcode`\<=13 \catcode`\>=13 \catcode`\+=13 \catcode`\"=13 |
| 5505 | \catcode`\$=3 | 5555 | \catcode`\$=3 |
| 5506 | \gdef\initialglyphs{% | 5556 | \gdef\initialglyphs{% |
| 5507 | % special control sequences used in the index sort key | ||
| 5508 | \let\indexlbrace\{% | ||
| 5509 | \let\indexrbrace\}% | ||
| 5510 | \let\indexatchar\@% | ||
| 5511 | % | ||
| 5512 | % Some changes for non-alphabetic characters. Using the glyphs from the | 5557 | % Some changes for non-alphabetic characters. Using the glyphs from the |
| 5513 | % math fonts looks more consistent than the typewriter font used elsewhere | 5558 | % math fonts looks more consistent than the typewriter font used elsewhere |
| 5514 | % for these characters. | 5559 | % for these characters. |
| 5515 | \uccode`\~=`\\ \uppercase{\def~{\math{\backslash}}} | 5560 | \def\indexbackslash{\math{\backslash}}% |
| 5561 | \let\\=\indexbackslash | ||
| 5516 | % | 5562 | % |
| 5517 | % In case @\ is used for backslash | ||
| 5518 | \uppercase{\let\\=~} | ||
| 5519 | % Can't get bold backslash so don't use bold forward slash | 5563 | % Can't get bold backslash so don't use bold forward slash |
| 5520 | \catcode`\/=13 | 5564 | \catcode`\/=13 |
| 5521 | \def/{{\secrmnotbold \normalslash}}% | 5565 | \def/{{\secrmnotbold \normalslash}}% |
| @@ -5575,6 +5619,12 @@ end | |||
| 5575 | \def\entry{% | 5619 | \def\entry{% |
| 5576 | \begingroup | 5620 | \begingroup |
| 5577 | % | 5621 | % |
| 5622 | % For pdfTeX and XeTeX. | ||
| 5623 | % The redefinition of \domark stops marks being added in \pdflink to | ||
| 5624 | % preserve coloured links across page boundaries. Otherwise the marks | ||
| 5625 | % would get in the way of \lastbox in \insertentrybox. | ||
| 5626 | \let\domark\relax | ||
| 5627 | % | ||
| 5578 | % Start a new paragraph if necessary, so our assignments below can't | 5628 | % Start a new paragraph if necessary, so our assignments below can't |
| 5579 | % affect previous text. | 5629 | % affect previous text. |
| 5580 | \par | 5630 | \par |
| @@ -5607,31 +5657,35 @@ end | |||
| 5607 | \gdef\finishentry#1{% | 5657 | \gdef\finishentry#1{% |
| 5608 | \egroup % end box A | 5658 | \egroup % end box A |
| 5609 | \dimen@ = \wd\boxA % Length of text of entry | 5659 | \dimen@ = \wd\boxA % Length of text of entry |
| 5610 | \global\setbox\boxA=\hbox\bgroup | 5660 | \global\setbox\boxA=\hbox\bgroup\unhbox\boxA |
| 5611 | \unhbox\boxA | 5661 | % #1 is the page number. |
| 5612 | % #1 is the page number. | 5662 | % |
| 5663 | % Get the width of the page numbers, and only use | ||
| 5664 | % leaders if they are present. | ||
| 5665 | \global\setbox\boxB = \hbox{#1}% | ||
| 5666 | \ifdim\wd\boxB = 0pt | ||
| 5667 | \null\nobreak\hfill\ % | ||
| 5668 | \else | ||
| 5669 | % | ||
| 5670 | \null\nobreak\indexdotfill % Have leaders before the page number. | ||
| 5613 | % | 5671 | % |
| 5614 | % Get the width of the page numbers, and only use | 5672 | \ifpdf |
| 5615 | % leaders if they are present. | 5673 | \pdfgettoks#1.% |
| 5616 | \global\setbox\boxB = \hbox{#1}% | 5674 | \hskip\skip\thinshrinkable\the\toksA |
| 5617 | \ifdim\wd\boxB = 0pt | ||
| 5618 | \null\nobreak\hfill\ % | ||
| 5619 | \else | 5675 | \else |
| 5620 | % | 5676 | \ifx\XeTeXrevision\thisisundefined |
| 5621 | \null\nobreak\indexdotfill % Have leaders before the page number. | 5677 | \hskip\skip\thinshrinkable #1% |
| 5622 | % | 5678 | \else |
| 5623 | \ifpdforxetex | ||
| 5624 | \pdfgettoks#1.% | 5679 | \pdfgettoks#1.% |
| 5625 | \hskip\skip\thinshrinkable\the\toksA | 5680 | \hskip\skip\thinshrinkable\the\toksA |
| 5626 | \else | ||
| 5627 | \hskip\skip\thinshrinkable #1% | ||
| 5628 | \fi | 5681 | \fi |
| 5629 | \fi | 5682 | \fi |
| 5683 | \fi | ||
| 5630 | \egroup % end \boxA | 5684 | \egroup % end \boxA |
| 5631 | \ifdim\wd\boxB = 0pt | 5685 | \ifdim\wd\boxB = 0pt |
| 5632 | \noindent\unhbox\boxA\par | 5686 | \global\setbox\entrybox=\vbox{\unhbox\boxA}% |
| 5633 | \nobreak | 5687 | \else |
| 5634 | \else\bgroup | 5688 | \global\setbox\entrybox=\vbox\bgroup |
| 5635 | % We want the text of the entries to be aligned to the left, and the | 5689 | % We want the text of the entries to be aligned to the left, and the |
| 5636 | % page numbers to be aligned to the right. | 5690 | % page numbers to be aligned to the right. |
| 5637 | % | 5691 | % |
| @@ -5697,11 +5751,55 @@ end | |||
| 5697 | \egroup % The \vbox | 5751 | \egroup % The \vbox |
| 5698 | \fi | 5752 | \fi |
| 5699 | \endgroup | 5753 | \endgroup |
| 5754 | \dotheinsertentrybox | ||
| 5700 | }} | 5755 | }} |
| 5701 | 5756 | ||
| 5702 | \newskip\thinshrinkable | 5757 | \newskip\thinshrinkable |
| 5703 | \skip\thinshrinkable=.15em minus .15em | 5758 | \skip\thinshrinkable=.15em minus .15em |
| 5704 | 5759 | ||
| 5760 | \newbox\entrybox | ||
| 5761 | \def\insertentrybox{% | ||
| 5762 | \ourunvbox\entrybox | ||
| 5763 | } | ||
| 5764 | |||
| 5765 | % default definition | ||
| 5766 | \let\dotheinsertentrybox\insertentrybox | ||
| 5767 | |||
| 5768 | % Use \lastbox to take apart vbox box by box, and add each sub-box | ||
| 5769 | % to the current vertical list. | ||
| 5770 | \def\ourunvbox#1{% | ||
| 5771 | \bgroup % for local binding of \delayedbox | ||
| 5772 | % Remove the last box from box #1 | ||
| 5773 | \global\setbox#1=\vbox{% | ||
| 5774 | \unvbox#1% | ||
| 5775 | \unskip % remove any glue | ||
| 5776 | \unpenalty | ||
| 5777 | \global\setbox\interbox=\lastbox | ||
| 5778 | }% | ||
| 5779 | \setbox\delayedbox=\box\interbox | ||
| 5780 | \ifdim\ht#1=0pt\else | ||
| 5781 | \ourunvbox#1 % Repeat on what's left of the box | ||
| 5782 | \nobreak | ||
| 5783 | \fi | ||
| 5784 | \box\delayedbox | ||
| 5785 | \egroup | ||
| 5786 | } | ||
| 5787 | \newbox\delayedbox | ||
| 5788 | \newbox\interbox | ||
| 5789 | |||
| 5790 | % Used from \printindex. \firsttoken should be the first token | ||
| 5791 | % after the \entry. If it's not another \entry, we are at the last | ||
| 5792 | % line of a group of index entries, so insert a penalty to discourage | ||
| 5793 | % widowed index entries. | ||
| 5794 | \def\dotheinsertentryboxwithpenalty{% | ||
| 5795 | \ifx\firsttoken\isentry | ||
| 5796 | \else | ||
| 5797 | \penalty 9000 | ||
| 5798 | \fi | ||
| 5799 | \insertentrybox | ||
| 5800 | } | ||
| 5801 | \def\isentry{\entry}% | ||
| 5802 | |||
| 5705 | % Like plain.tex's \dotfill, except uses up at least 1 em. | 5803 | % Like plain.tex's \dotfill, except uses up at least 1 em. |
| 5706 | % The filll stretch here overpowers both the fil and fill stretch to push | 5804 | % The filll stretch here overpowers both the fil and fill stretch to push |
| 5707 | % the page number to the right. | 5805 | % the page number to the right. |
| @@ -5711,15 +5809,24 @@ end | |||
| 5711 | 5809 | ||
| 5712 | \def\primary #1{\line{#1\hfil}} | 5810 | \def\primary #1{\line{#1\hfil}} |
| 5713 | 5811 | ||
| 5714 | \def\secondary{\indententry{0.5cm}} | 5812 | \newskip\secondaryindent \secondaryindent=0.5cm |
| 5715 | \def\tertiary{\indententry{1cm}} | 5813 | \def\secondary#1#2{{% |
| 5716 | 5814 | \parfillskip=0in | |
| 5717 | \def\indententry#1#2#3{% | 5815 | \parskip=0in |
| 5718 | \bgroup | 5816 | \hangindent=1in |
| 5719 | \leftskip=#1 | 5817 | \hangafter=1 |
| 5720 | \entry{#2}{#3}% | 5818 | \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill |
| 5721 | \egroup | 5819 | \ifpdf |
| 5722 | } | 5820 | \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. |
| 5821 | \else | ||
| 5822 | \ifx\XeTeXrevision\thisisundefined | ||
| 5823 | #2 | ||
| 5824 | \else | ||
| 5825 | \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. | ||
| 5826 | \fi | ||
| 5827 | \fi | ||
| 5828 | \par | ||
| 5829 | }} | ||
| 5723 | 5830 | ||
| 5724 | % Define two-column mode, which we use to typeset indexes. | 5831 | % Define two-column mode, which we use to typeset indexes. |
| 5725 | % Adapted from the TeXbook, page 416, which is to say, | 5832 | % Adapted from the TeXbook, page 416, which is to say, |
| @@ -5737,6 +5844,17 @@ end | |||
| 5737 | \output = {% | 5844 | \output = {% |
| 5738 | \savetopmark | 5845 | \savetopmark |
| 5739 | % | 5846 | % |
| 5847 | % Here is a possibility not foreseen in manmac: if we accumulate a | ||
| 5848 | % whole lot of material, we might end up calling this \output | ||
| 5849 | % routine twice in a row (see the doublecol-lose test, which is | ||
| 5850 | % essentially a couple of indexes with @setchapternewpage off). In | ||
| 5851 | % that case we just ship out what is in \partialpage with the normal | ||
| 5852 | % output routine. Generally, \partialpage will be empty when this | ||
| 5853 | % runs and this will be a no-op. See the indexspread.tex test case. | ||
| 5854 | \ifvoid\partialpage \else | ||
| 5855 | \onepageout{\pagecontents\partialpage}% | ||
| 5856 | \fi | ||
| 5857 | % | ||
| 5740 | \global\setbox\partialpage = \vbox{% | 5858 | \global\setbox\partialpage = \vbox{% |
| 5741 | % Unvbox the main output page. | 5859 | % Unvbox the main output page. |
| 5742 | \unvbox\PAGE | 5860 | \unvbox\PAGE |
| @@ -6016,9 +6134,11 @@ end | |||
| 6016 | 6134 | ||
| 6017 | % @raisesections: treat @section as chapter, @subsection as section, etc. | 6135 | % @raisesections: treat @section as chapter, @subsection as section, etc. |
| 6018 | \def\raisesections{\global\advance\secbase by -1} | 6136 | \def\raisesections{\global\advance\secbase by -1} |
| 6137 | \let\up=\raisesections % original BFox name | ||
| 6019 | 6138 | ||
| 6020 | % @lowersections: treat @chapter as section, @section as subsection, etc. | 6139 | % @lowersections: treat @chapter as section, @section as subsection, etc. |
| 6021 | \def\lowersections{\global\advance\secbase by 1} | 6140 | \def\lowersections{\global\advance\secbase by 1} |
| 6141 | \let\down=\lowersections % original BFox name | ||
| 6022 | 6142 | ||
| 6023 | % we only have subsub. | 6143 | % we only have subsub. |
| 6024 | \chardef\maxseclevel = 3 | 6144 | \chardef\maxseclevel = 3 |
| @@ -6670,8 +6790,13 @@ end | |||
| 6670 | % 1 and 2 (the page numbers aren't printed), and so are the first | 6790 | % 1 and 2 (the page numbers aren't printed), and so are the first |
| 6671 | % two pages of the document. Thus, we'd have two destinations named | 6791 | % two pages of the document. Thus, we'd have two destinations named |
| 6672 | % `1', and two named `2'. | 6792 | % `1', and two named `2'. |
| 6673 | \ifpdforxetex | 6793 | \ifpdf |
| 6674 | \global\pdfmakepagedesttrue | 6794 | \global\pdfmakepagedesttrue |
| 6795 | \else | ||
| 6796 | \ifx\XeTeXrevision\thisisundefined | ||
| 6797 | \else | ||
| 6798 | \global\pdfmakepagedesttrue | ||
| 6799 | \fi | ||
| 6675 | \fi | 6800 | \fi |
| 6676 | } | 6801 | } |
| 6677 | 6802 | ||
| @@ -7034,7 +7159,11 @@ end | |||
| 7034 | 7159 | ||
| 7035 | % @cartouche ... @end cartouche: draw rectangle w/rounded corners around | 7160 | % @cartouche ... @end cartouche: draw rectangle w/rounded corners around |
| 7036 | % environment contents. | 7161 | % environment contents. |
| 7037 | 7162 | \font\circle=lcircle10 | |
| 7163 | \newdimen\circthick | ||
| 7164 | \newdimen\cartouter\newdimen\cartinner | ||
| 7165 | \newskip\normbskip\newskip\normpskip\newskip\normlskip | ||
| 7166 | \circthick=\fontdimen8\circle | ||
| 7038 | % | 7167 | % |
| 7039 | \def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth | 7168 | \def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth |
| 7040 | \def\ctr{{\hskip 6pt\circle\char'010}} | 7169 | \def\ctr{{\hskip 6pt\circle\char'010}} |
| @@ -7049,18 +7178,7 @@ end | |||
| 7049 | % | 7178 | % |
| 7050 | \newskip\lskip\newskip\rskip | 7179 | \newskip\lskip\newskip\rskip |
| 7051 | 7180 | ||
| 7052 | % only require the font if @cartouche is actually used | ||
| 7053 | \def\cartouchefontdefs{% | ||
| 7054 | \font\circle=lcircle10\relax | ||
| 7055 | \circthick=\fontdimen8\circle | ||
| 7056 | } | ||
| 7057 | \newdimen\circthick | ||
| 7058 | \newdimen\cartouter\newdimen\cartinner | ||
| 7059 | \newskip\normbskip\newskip\normpskip\newskip\normlskip | ||
| 7060 | |||
| 7061 | |||
| 7062 | \envdef\cartouche{% | 7181 | \envdef\cartouche{% |
| 7063 | \cartouchefontdefs | ||
| 7064 | \ifhmode\par\fi % can't be in the midst of a paragraph. | 7182 | \ifhmode\par\fi % can't be in the midst of a paragraph. |
| 7065 | \startsavinginserts | 7183 | \startsavinginserts |
| 7066 | \lskip=\leftskip \rskip=\rightskip | 7184 | \lskip=\leftskip \rskip=\rightskip |
| @@ -7932,18 +8050,36 @@ end | |||
| 7932 | } | 8050 | } |
| 7933 | \fi | 8051 | \fi |
| 7934 | 8052 | ||
| 8053 | % alias because \c means cedilla in @tex or @math | ||
| 8054 | \let\texinfoc=\c | ||
| 8055 | |||
| 8056 | \newcount\savedcatcodeone | ||
| 8057 | \newcount\savedcatcodetwo | ||
| 8058 | |||
| 7935 | % Used at the time of macro expansion. | 8059 | % Used at the time of macro expansion. |
| 7936 | % Argument is macro body with arguments substituted | 8060 | % Argument is macro body with arguments substituted |
| 7937 | \def\scanmacro#1{% | 8061 | \def\scanmacro#1{% |
| 7938 | \newlinechar`\^^M | 8062 | \newlinechar`\^^M |
| 7939 | \def\xeatspaces{\eatspaces}% | 8063 | \def\xeatspaces{\eatspaces}% |
| 7940 | % | 8064 | % |
| 8065 | % Temporarily undo catcode changes of \printindex. Set catcode of @ to | ||
| 8066 | % 0 so that @-commands in macro expansions aren't printed literally when | ||
| 8067 | % formatting an index file, where \ is used as the escape character. | ||
| 8068 | \savedcatcodeone=\catcode`\@ | ||
| 8069 | \savedcatcodetwo=\catcode`\\ | ||
| 8070 | \catcode`\@=0 | ||
| 8071 | \catcode`\\=\active | ||
| 8072 | % | ||
| 7941 | % Process the macro body under the current catcode regime. | 8073 | % Process the macro body under the current catcode regime. |
| 7942 | \scantokens{#1@comment}% | 8074 | \scantokens{#1@texinfoc}% |
| 7943 | % | 8075 | % |
| 7944 | % The \comment is to remove the \newlinechar added by \scantokens, and | 8076 | \catcode`\@=\savedcatcodeone |
| 7945 | % can be noticed by \parsearg. Note \c isn't used because this means cedilla | 8077 | \catcode`\\=\savedcatcodetwo |
| 7946 | % in math mode. | 8078 | % |
| 8079 | % The \texinfoc is to remove the \newlinechar added by \scantokens, and | ||
| 8080 | % can be noticed by \parsearg. | ||
| 8081 | % We avoid surrounding the call to \scantokens with \bgroup and \egroup | ||
| 8082 | % to allow macros to open or close groups themselves. | ||
| 7947 | } | 8083 | } |
| 7948 | 8084 | ||
| 7949 | % Used for copying and captions | 8085 | % Used for copying and captions |
| @@ -8044,14 +8180,12 @@ end | |||
| 8044 | \def\macroargctxt{% | 8180 | \def\macroargctxt{% |
| 8045 | \scanctxt | 8181 | \scanctxt |
| 8046 | \catcode`\ =\active | 8182 | \catcode`\ =\active |
| 8047 | \catcode`\@=\other | ||
| 8048 | \catcode`\^^M=\other | 8183 | \catcode`\^^M=\other |
| 8049 | \catcode`\\=\active | 8184 | \catcode`\\=\active |
| 8050 | } | 8185 | } |
| 8051 | 8186 | ||
| 8052 | \def\macrolineargctxt{% used for whole-line arguments without braces | 8187 | \def\macrolineargctxt{% used for whole-line arguments without braces |
| 8053 | \scanctxt | 8188 | \scanctxt |
| 8054 | \catcode`\@=\other | ||
| 8055 | \catcode`\{=\other | 8189 | \catcode`\{=\other |
| 8056 | \catcode`\}=\other | 8190 | \catcode`\}=\other |
| 8057 | } | 8191 | } |
| @@ -8615,21 +8749,9 @@ end | |||
| 8615 | % also remove a trailing comma, in case of something like this: | 8749 | % also remove a trailing comma, in case of something like this: |
| 8616 | % @node Help-Cross, , , Cross-refs | 8750 | % @node Help-Cross, , , Cross-refs |
| 8617 | \def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse} | 8751 | \def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse} |
| 8618 | \def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}\omittopnode} | 8752 | \def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}} |
| 8619 | |||
| 8620 | % Used so that the @top node doesn't have to be wrapped in an @ifnottex | ||
| 8621 | % conditional. | ||
| 8622 | % \doignore goes to more effort to skip nested conditionals but we don't need | ||
| 8623 | % that here. | ||
| 8624 | \def\omittopnode{% | ||
| 8625 | \ifx\lastnode\wordTop | ||
| 8626 | \expandafter\ignorenode\fi | ||
| 8627 | } | ||
| 8628 | \def\wordTop{Top} | ||
| 8629 | |||
| 8630 | % Divert output to a box that is not output until the next @node command. | ||
| 8631 | \def\ignorenode{\setbox\dummybox\vbox\bgroup\def\node{\egroup\node}} | ||
| 8632 | 8753 | ||
| 8754 | \let\nwnode=\node | ||
| 8633 | \let\lastnode=\empty | 8755 | \let\lastnode=\empty |
| 8634 | 8756 | ||
| 8635 | % Write a cross-reference definition for the current node. #1 is the | 8757 | % Write a cross-reference definition for the current node. #1 is the |
| @@ -9104,6 +9226,19 @@ end | |||
| 9104 | \catcode`\^^]=\other | 9226 | \catcode`\^^]=\other |
| 9105 | \catcode`\^^^=\other | 9227 | \catcode`\^^^=\other |
| 9106 | \catcode`\^^_=\other | 9228 | \catcode`\^^_=\other |
| 9229 | % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc. | ||
| 9230 | % in xref tags, i.e., node names. But since ^^e4 notation isn't | ||
| 9231 | % supported in the main text, it doesn't seem desirable. Furthermore, | ||
| 9232 | % that is not enough: for node names that actually contain a ^ | ||
| 9233 | % character, we would end up writing a line like this: 'xrdef {'hat | ||
| 9234 | % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first | ||
| 9235 | % argument, and \hat is not an expandable control sequence. It could | ||
| 9236 | % all be worked out, but why? Either we support ^^ or we don't. | ||
| 9237 | % | ||
| 9238 | % The other change necessary for this was to define \auxhat: | ||
| 9239 | % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter | ||
| 9240 | % and then to call \auxhat in \setq. | ||
| 9241 | % | ||
| 9107 | \catcode`\^=\other | 9242 | \catcode`\^=\other |
| 9108 | % | 9243 | % |
| 9109 | % Special characters. Should be turned off anyway, but... | 9244 | % Special characters. Should be turned off anyway, but... |
| @@ -9121,7 +9256,14 @@ end | |||
| 9121 | \catcode`\%=\other | 9256 | \catcode`\%=\other |
| 9122 | \catcode`+=\other % avoid \+ for paranoia even though we've turned it off | 9257 | \catcode`+=\other % avoid \+ for paranoia even though we've turned it off |
| 9123 | % | 9258 | % |
| 9124 | \catcode`\\=\active | 9259 | % This is to support \ in node names and titles, since the \ |
| 9260 | % characters end up in a \csname. It's easier than | ||
| 9261 | % leaving it active and making its active definition an actual \ | ||
| 9262 | % character. What I don't understand is why it works in the *value* | ||
| 9263 | % of the xrdef. Seems like it should be a catcode12 \, and that | ||
| 9264 | % should not typeset properly. But it works, so I'm moving on for | ||
| 9265 | % now. --karl, 15jan04. | ||
| 9266 | \catcode`\\=\other | ||
| 9125 | % | 9267 | % |
| 9126 | % @ is our escape character in .aux files, and we need braces. | 9268 | % @ is our escape character in .aux files, and we need braces. |
| 9127 | \catcode`\{=1 | 9269 | \catcode`\{=1 |
| @@ -11392,9 +11534,11 @@ directory should work if nowhere else does.} | |||
| 11392 | % \backslashcurfont outputs one backslash character in current font, | 11534 | % \backslashcurfont outputs one backslash character in current font, |
| 11393 | % as in \char`\\. | 11535 | % as in \char`\\. |
| 11394 | \global\chardef\backslashcurfont=`\\ | 11536 | \global\chardef\backslashcurfont=`\\ |
| 11537 | \global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work | ||
| 11395 | 11538 | ||
| 11396 | % \realbackslash is an actual character `\' with catcode other. | 11539 | % \realbackslash is an actual character `\' with catcode other, and |
| 11397 | {\catcode`\\=\other @gdef@realbackslash{\}} | 11540 | % \doublebackslash is two of them (for the pdf outlines). |
| 11541 | {\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}} | ||
| 11398 | 11542 | ||
| 11399 | % In Texinfo, backslash is an active character; it prints the backslash | 11543 | % In Texinfo, backslash is an active character; it prints the backslash |
| 11400 | % in fixed width font. | 11544 | % in fixed width font. |
| @@ -11412,8 +11556,10 @@ directory should work if nowhere else does.} | |||
| 11412 | @def@ttbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}} | 11556 | @def@ttbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}} |
| 11413 | @let@backslashchar = @ttbackslash % @backslashchar{} is for user documents. | 11557 | @let@backslashchar = @ttbackslash % @backslashchar{} is for user documents. |
| 11414 | 11558 | ||
| 11559 | % \rawbackslash defines an active \ to do \backslashcurfont. | ||
| 11415 | % \otherbackslash defines an active \ to be a literal `\' character with | 11560 | % \otherbackslash defines an active \ to be a literal `\' character with |
| 11416 | % catcode other. | 11561 | % catcode other. We switch back and forth between these. |
| 11562 | @gdef@rawbackslash{@let\=@backslashcurfont} | ||
| 11417 | @gdef@otherbackslash{@let\=@realbackslash} | 11563 | @gdef@otherbackslash{@let\=@realbackslash} |
| 11418 | 11564 | ||
| 11419 | % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of | 11565 | % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of |
| @@ -11485,7 +11631,7 @@ directory should work if nowhere else does.} | |||
| 11485 | @ifx\@eatinput @let\ = @ttbackslash @fi | 11631 | @ifx\@eatinput @let\ = @ttbackslash @fi |
| 11486 | @catcode13=5 % regular end of line | 11632 | @catcode13=5 % regular end of line |
| 11487 | @enableemergencynewline | 11633 | @enableemergencynewline |
| 11488 | @let@c=@comment | 11634 | @let@c=@texinfoc |
| 11489 | @let@parsearg@originalparsearg | 11635 | @let@parsearg@originalparsearg |
| 11490 | % Also turn back on active characters that might appear in the input | 11636 | % Also turn back on active characters that might appear in the input |
| 11491 | % file name, in case not using a pre-dumped format. | 11637 | % file name, in case not using a pre-dumped format. |
diff --git a/lib/_Noreturn.h b/lib/_Noreturn.h index 7594e4b0c0b..db9b45554c5 100644 --- a/lib/_Noreturn.h +++ b/lib/_Noreturn.h | |||
| @@ -1,3 +1,19 @@ | |||
| 1 | /* A C macro for declaring that a function does not return. | ||
| 2 | Copyright (C) 2011-2019 Free Software Foundation, Inc. | ||
| 3 | |||
| 4 | This program is free software: you can redistribute it and/or modify it | ||
| 5 | under the terms of the GNU General Public License as published | ||
| 6 | by the Free Software Foundation; either version 3 of the License, or | ||
| 7 | (at your option) any later version. | ||
| 8 | |||
| 9 | This program is distributed in the hope that it will be useful, | ||
| 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
| 12 | General Public License for more details. | ||
| 13 | |||
| 14 | You should have received a copy of the GNU General Public License | ||
| 15 | along with this program. If not, see <https://www.gnu.org/licenses/>. */ | ||
| 16 | |||
| 1 | #ifndef _Noreturn | 17 | #ifndef _Noreturn |
| 2 | # if (defined __cplusplus \ | 18 | # if (defined __cplusplus \ |
| 3 | && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \ | 19 | && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \ |
diff --git a/lib/gnulib.mk.in b/lib/gnulib.mk.in index 0d9a885be3d..1450df9f638 100644 --- a/lib/gnulib.mk.in +++ b/lib/gnulib.mk.in | |||
| @@ -179,6 +179,7 @@ CAIRO_LIBS = @CAIRO_LIBS@ | |||
| 179 | CC = @CC@ | 179 | CC = @CC@ |
| 180 | CFLAGS = @CFLAGS@ | 180 | CFLAGS = @CFLAGS@ |
| 181 | CFLAGS_SOUND = @CFLAGS_SOUND@ | 181 | CFLAGS_SOUND = @CFLAGS_SOUND@ |
| 182 | CHECK_STRUCTS = @CHECK_STRUCTS@ | ||
| 182 | CLIENTRES = @CLIENTRES@ | 183 | CLIENTRES = @CLIENTRES@ |
| 183 | CLIENTW = @CLIENTW@ | 184 | CLIENTW = @CLIENTW@ |
| 184 | CM_OBJ = @CM_OBJ@ | 185 | CM_OBJ = @CM_OBJ@ |