diff options
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/texinfo/texinfo.tex | 232 |
1 files changed, 160 insertions, 72 deletions
diff --git a/Master/texmf-dist/tex/texinfo/texinfo.tex b/Master/texmf-dist/tex/texinfo/texinfo.tex index b4caf96e082..2f11da59fb0 100644 --- a/Master/texmf-dist/tex/texinfo/texinfo.tex +++ b/Master/texmf-dist/tex/texinfo/texinfo.tex @@ -3,7 +3,7 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2023-01-02.21} +\def\texinfoversion{2023-03-04.12} % % Copyright 1985, 1986, 1988, 1990-2023 Free Software Foundation, Inc. % @@ -2683,25 +2683,21 @@ end } \setregularquotes -% Allow an option to not use regular directed right quote/apostrophe -% (char 0x27), but instead the undirected quote from cmtt (char 0x0d). -% The undirected quote is ugly, so don't make it the default, but it -% works for pasting with more pdf viewers (at least evince), the -% lilypond developers report. xpdf does work with the regular 0x27. +% output for ' in @code +% in tt font hex 0D (undirected) or 27 (curly right quote) % \def\codequoteright{% \ifusingtt {\ifflagclear{txicodequoteundirected}% {\ifflagclear{codequoteundirected}% {'}% - {\char'15 }}% - {\char'15 }}% + {\char"0D }}% + {\char"0D }}% {'}% } -% and a similar option for the left quote char vs. a grave accent. -% Modern fonts display ASCII 0x60 as a grave accent, so some people like -% the code environments to do likewise. +% output for ` in @code +% in tt font hex 12 (grave accent) or 60 (curly left quote) % \relax disables Spanish ligatures ?` and !` of \tt font. % \def\codequoteleft{% @@ -2709,8 +2705,8 @@ end {\ifflagclear{txicodequotebacktick}% {\ifflagclear{codequotebacktick}% {\relax`}% - {\char'22 }}% - {\char'22 }}% + {\char"12 }}% + {\char"12 }}% {\relax`}% } @@ -2729,7 +2725,7 @@ end \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}% \fi\fi } -% + \parseargdef\codequotebacktick{% \def\temp{#1}% \ifx\temp\onword @@ -2744,6 +2740,11 @@ end \fi\fi } +% Turn them on by default +\let\SETtxicodequoteundirected = t +\let\SETtxicodequotebacktick = t + + % [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font. \def\noligaturesquoteleft{\relax\lq} @@ -2929,10 +2930,6 @@ end \let-\dashnobreak \let_\realunder \fi - % Given -foo (with a single dash), we do not want to allow a break - % after the hyphen. - \global\let\codedashprev=\codedash - % \codex } % @@ -2942,21 +2939,30 @@ end % % Now, output a discretionary to allow a line break, unless % (a) the next character is a -, or - % (b) the preceding character is a -. + % (b) the preceding character is a -, or + % (c) we are at the start of the string. + % In both cases (b) and (c), \codedashnobreak should be set to \codedash. + % % E.g., given --posix, we do not want to allow a break after either -. % Given --foo-bar, we do want to allow a break between the - and the b. \ifx\next\codedash \else - \ifx\codedashprev\codedash + \ifx\codedashnobreak\codedash \else \discretionary{}{}{}\fi \fi % we need the space after the = for the case when \next itself is a % space token; it would get swallowed otherwise. As in @code{- a}. - \global\let\codedashprev= \next + \global\let\codedashnobreak= \next } } \def\normaldash{-} % -\def\codex #1{\tclose{#1}\endgroup} +\def\codex #1{\tclose{% + % Given -foo (with a single dash), we do not want to allow a break + % after the -. \codedashnobreak is set to the first character in + % @code. + \futurelet\codedashnobreak\relax + #1% +}\endgroup} \def\codeunder{% % this is all so @math{@code{var_name}+1} can work. In math mode, _ @@ -3950,33 +3956,23 @@ $$% \def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting -% When we turn headings on, set the page number to 1. +% Set the page number to 1. \def\pageone{ \global\pageno=1 \global\arabiccount = \pagecount } -% For double-sided printing, put current file name in lower left corner, -% chapter name on inside top of right hand pages, document -% title on inside top of left hand pages, and page numbers on outside top -% edge of all pages. -\def\HEADINGSdouble{% -\pageone -\HEADINGSdoublex -} \let\contentsalignmacro = \chappager -% For single-sided printing, chapter title goes across top left of page, -% page number on top right. -\def\HEADINGSsingle{% -\pageone -\HEADINGSsinglex -} % \def\HEADINGSon{\HEADINGSdouble} % defined by \CHAPPAGon -\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} +% For double-sided printing, put current file name in lower left corner, +% chapter name on inside top of right hand pages, document +% title on inside top of left hand pages, and page numbers on outside top +% edge of all pages. +\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdouble} \let\HEADINGSdoubleafter=\HEADINGSafter -\def\HEADINGSdoublex{% +\def\HEADINGSdouble{% \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\folio\hfil\thistitle}} @@ -3986,8 +3982,10 @@ $$% \global\let\contentsalignmacro = \chapoddpage } -\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} -\def\HEADINGSsinglex{% +% For single-sided printing, chapter title goes across top left of page, +% page number on top right. +\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsingle} +\def\HEADINGSsingle{% \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\thischapter\hfil\folio}} @@ -3999,7 +3997,6 @@ $$% % for @setchapternewpage off \def\HEADINGSsinglechapoff{% -\pageone \global\evenfootline={\hfil} \global\oddfootline={\hfil} \global\evenheadline={\line{\thischapter\hfil\folio}} @@ -4105,6 +4102,7 @@ $$% \nobreak\kern\dimen0 \endgroup \itemxneedsnegativevskiptrue + \penalty 10021 % for \indexpar \fi } @@ -4221,6 +4219,7 @@ $$% % We can be in inner vertical mode in a footnote, although an % @itemize looks awful there. }% + \penalty 10021 % for \indexpar \flushcr } @@ -4725,13 +4724,11 @@ $$% % except not \outer, so it can be used within macros and \if's. \edef\newwrite{\makecsname{ptexnewwrite}} -% \newindex {foo} defines an index named IX. +% \newindex {IX} defines an index named IX. % It automatically defines \IXindex such that % \IXindex ...rest of line... puts an entry in the index IX. % It also defines \IXindfile to be the number of the output channel for % the file that accumulates this index. The file's extension is IX. -% The name of an index should be no more than 2 characters long -% for the sake of vms. % \def\newindex#1{% \expandafter\chardef\csname#1indfile\endcsname=0 @@ -4787,11 +4784,17 @@ $$% % and it is the two-letter name of the index. \def\doindex#1{\edef\indexname{#1}\parsearg\doindexxxx} -\def\doindexxxx #1{\doind{\indexname}{#1}} +\def\doindexxxx #1{\indexpar\doind{\indexname}{#1}} % like the previous two, but they put @code around the argument. \def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx} -\def\docodeindexxxx #1{\docind{\indexname}{#1}} +\def\docodeindexxxx #1{\indexpar\docind{\indexname}{#1}} + +% End any open paragraph, unless we are immediately after @item in +% @itemize or @enumerate. +\def\indexpar{% +\ifnum\lastpenalty=10021 \else\endgraf\fi +} % \definedummyword defines \#1 as \string\#1\space, thus effectively @@ -4989,7 +4992,7 @@ $$% \commondummyword\ampchar {\normalamp}% \commondummyword\atchar {\@}% \commondummyword\arrow {->}% - \commondummyword\backslashchar {}% + \commondummyword\backslashchar {\realbackslash}% \commondummyword\bullet {bullet}% \commondummyword\comma {,}% \commondummyword\copyright {copyright}% @@ -5089,9 +5092,6 @@ $$% % % We need to get rid of all macros, leaving only the arguments (if present). % Of course this is not nearly correct, but it is the best we can do for now. - % makeinfo does not expand macros in the argument to @deffn, which ends up - % writing an index entry, and texindex isn't prepared for an index sort entry - % that starts with \. % % Since macro invocations are followed by braces, we can just redefine them % to take a single TeX argument. The case of a macro invocation that @@ -5351,7 +5351,9 @@ $$% % ..., ready, GO: % \def\safewhatsit#1{\ifhmode + \whatsitpenalty = \lastpenalty #1% + \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi \else % \lastskip and \lastpenalty cannot both be nonzero simultaneously. \whatsitskip = \lastskip @@ -7387,6 +7389,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% \def\setupverb{% \tt \def\par{\leavevmode\endgraf}% + \parindent = 0pt \setcodequotes \tabeightspaces % Respect line breaks, @@ -7562,11 +7565,6 @@ might help (with 'rm \jobname.?? \jobname.??s')% \exdentamount=\defbodyindent } -\newtoks\defidx -\newtoks\deftext - -\def\useindex#1{\defidx={#1}\ignorespaces} - % Called as \printdefunline \deffooheader{text} % \def\printdefunline#1#2{% @@ -7574,10 +7572,6 @@ might help (with 'rm \jobname.?? \jobname.??s')% \plainfrenchspacing % call \deffooheader: #1#2 \endheader - % create the index entry - \defcharsdefault - \edef\temp{\noexpand\doind{\the\defidx}{\the\deftext}}% - \temp % common ending: \interlinepenalty = 10000 \advance\rightskip by 0pt plus 1fil\relax @@ -7592,6 +7586,24 @@ might help (with 'rm \jobname.?? \jobname.??s')% \def\Edefun{\endgraf\medbreak} +% @defblock, @defline do not automatically create index entries +\envdef\defblock{% + \startdefun +} +\let\Edefblock\Edefun + +\def\defline{% + \doingtypefnfalse + \parseargusing\activeparens{\printdefunline\deflineheader}% +} +\def\deflineheader#1 #2 #3\endheader{% + \defname{#1}{}{#2}\magicamp\defunargs{#3\unskip}% +} +\def\deftypeline{% + \doingtypefntrue + \parseargusing\activeparens{\printdefunline\deflineheader}% +} + % \makedefun{deffoo} (\deffooheader parameters) { (\deffooheader expansion) } % % Define \deffoo, \deffoox \Edeffoo and \deffooheader. @@ -7643,23 +7655,18 @@ might help (with 'rm \jobname.?? \jobname.??s')% \fi\fi } -\def\defind#1#2{ - \defidx={#1}% - \deftext={#2}% -} - % Untyped functions: % @deffn category name args \makedefun{deffn}#1 #2 #3\endheader{% - \defind{fn}{\code{#2}}% + \doind{fn}{\code{#2}}% \defname{#1}{}{#2}\magicamp\defunargs{#3\unskip}% } % @defop category class name args \makedefun{defop}#1 {\defopheaderx{#1\ \putwordon}} \def\defopheaderx#1#2 #3 #4\endheader{% - \defind{fn}{\code{#3}\space\putwordon\ \code{#2}}% + \doind{fn}{\code{#3}\space\putwordon\ \code{#2}}% \defname{#1\ \code{#2}}{}{#3}\magicamp\defunargs{#4\unskip}% } @@ -7667,7 +7674,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% % @deftypefn category type name args \makedefun{deftypefn}#1 #2 #3 #4\endheader{% - \defind{fn}{\code{#3}}% + \doind{fn}{\code{#3}}% \doingtypefntrue \defname{#1}{#2}{#3}\defunargs{#4\unskip}% } @@ -7675,7 +7682,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% % @deftypeop category class type name args \makedefun{deftypeop}#1 {\deftypeopheaderx{#1\ \putwordon}} \def\deftypeopheaderx#1#2 #3 #4 #5\endheader{% - \defind{fn}{\code{#4}\space\putwordon\ \code{#1\ \code{#2}}}% + \doind{fn}{\code{#4}\space\putwordon\ \code{#1\ \code{#2}}}% \doingtypefntrue \defname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}% } @@ -7684,14 +7691,14 @@ might help (with 'rm \jobname.?? \jobname.??s')% % @deftypevr category type var args \makedefun{deftypevr}#1 #2 #3 #4\endheader{% - \defind{vr}{\code{#3}}% + \doind{vr}{\code{#3}}% \defname{#1}{#2}{#3}\defunargs{#4\unskip}% } % @deftypecv category class type var args \makedefun{deftypecv}#1 {\deftypecvheaderx{#1\ \putwordof}} \def\deftypecvheaderx#1#2 #3 #4 #5\endheader{% - \defind{vr}{\code{#4}\space\putwordof\ \code{#2}}% + \doind{vr}{\code{#4}\space\putwordof\ \code{#2}}% \defname{#1\ \code{#2}}{#3}{#4}\defunargs{#5\unskip}% } @@ -7708,7 +7715,7 @@ might help (with 'rm \jobname.?? \jobname.??s')% % @deftp category name args \makedefun{deftp}#1 #2 #3\endheader{% - \defind{tp}{\code{#2}}% + \doind{tp}{\code{#2}}% \defname{#1}{}{#2}\defunargs{#3\unskip}% } @@ -8580,6 +8587,87 @@ might help (with 'rm \jobname.?? \jobname.??s')% \fi \macnamexxx} +% @linemacro + +\parseargdef\linemacro{% + \linegetargs#1 \linegetargs + \expandafter\linegetparamlist\argl;% + \begingroup \macrobodyctxt \usembodybackslash + \parselinemacrobody +} + +% Parse the arguments to a @linemacro line. Set \macname to the name +% of the macro and \argl to the list of arguments. +\def\linegetargs#1 #2\linegetargs{% + \macname={#1}% + \def\argl{#2}% +} + +% Build up \paramlist which will be used as the parameter text for the macro. +% At the end it will be like "#1 #2 #3\endlinemacro". +\def\linegetparamlist#1;{% + \paramno=0\def\paramlist{}% + \let\hash\relax \let\xeatspaces\relax + \linegetparamlistxxx#1; % +} +\def\linegetparamlistxxx#1 {% + \if#1;\let\next=\linegetparamlistxxxx + \else \let\next=\linegetparamlistxxx + \advance\paramno by 1 + \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname + {\noexpand\xeatspaces{\hash\the\paramno}}% + \edef\paramlist{\paramlist\hash\the\paramno\space}% + \fi\next} +\def\linegetparamlistxxxx{% + \ifx\paramlist\empty + \def\paramlist{\hash 1\endlinemacro}% + \else + \expandafter\fixparamlist\paramlist\fixparamlist + \fi +} +% Replace final space token +\def\fixparamlist#1 \fixparamlist{% + \def\paramlist{#1\endlinemacro}% +} + +% Read the body of the macro, replacing backslash-surrounded variables +% +{\catcode`\ =\other\long\gdef\parselinemacrobody#1@end linemacro{% +\let\xeatspaces\relax +\xdef\macrobody{#1}% +\endgroup +\linemacrodef +}} + +% Make the definition +\def\linemacrodef{% + \let\hash=##% + \let\xeatspaces\relax + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup + \noexpand\scanctxt + \noexpand\parsearg + \expandafter\noexpand\csname\the\macname @@\endcsname + } + \expandafter\xdef\csname\the\macname @@\endcsname##1{% + \egroup + \expandafter\noexpand + \csname\the\macname @@@\endcsname##1 \noexpand\endlinemacro + % Note that we append a space to the macro line to terminate the last + % argument in case the final argument is empty. @xeatspaces may be needed + % to remove this space. + } + \expandafter\expandafter + \expandafter\xdef + \expandafter\expandafter\csname\the\macname @@@\endcsname\paramlist{% + \newlinechar=13 % split \macrobody into lines + \let\noexpand\xeatspaces\noexpand\eatspaces + \noexpand\scantokens{\macrobody}% + } +} + + + % @alias. % We need some trickery to remove the optional spaces around the equal % sign. Make them active and then expand them all to nothing. |