Update from upstream version.

This commit is contained in:
Ulrich Drepper 2001-01-14 03:32:41 +00:00
parent 467cc99edc
commit 366d6851b1

View File

@ -3,9 +3,9 @@
% Load plain if necessary, i.e., if running under initex. % Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
% %
\def\texinfoversion{2000-05-28.15} \def\texinfoversion{2000-12-11.07}
% %
% Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99 % Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
% Free Software Foundation, Inc. % Free Software Foundation, Inc.
% %
% This texinfo.tex file is free software; you can redistribute it and/or % This texinfo.tex file is free software; you can redistribute it and/or
@ -688,16 +688,54 @@ where each line of input produces a line of output.}
\def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount \def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount
\leftline{\hskip\leftskip{\rm#1}}}} \leftline{\hskip\leftskip{\rm#1}}}}
% @inmargin{TEXT} puts TEXT in the margin next to the current paragraph. % @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
% paragraph. For more general purposes, use the \margin insertion
\def\inmargin#1{% % class. WHICH is `l' or `r'.
\strut\vadjust{\nobreak\kern-\strutdepth %
\vtop to \strutdepth{\baselineskip\strutdepth\vss
\llap{\rightskip=\inmarginspacing \vbox{\noindent #1}}\null}}}
\newskip\inmarginspacing \inmarginspacing=1cm \newskip\inmarginspacing \inmarginspacing=1cm
\def\strutdepth{\dp\strutbox} \def\strutdepth{\dp\strutbox}
%
%\hbox{{\rm#1}}\hfil\break}} \def\doinmargin#1#2{\strut\vadjust{%
\nobreak
\kern-\strutdepth
\vtop to \strutdepth{%
\baselineskip=\strutdepth
\vss
% if you have multiple lines of stuff to put here, you'll need to
% make the vbox yourself of the appropriate size.
\ifx#1l%
\llap{\ignorespaces #2\hskip\inmarginspacing}%
\else
\rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}%
\fi
\null
}%
}}
\def\inleftmargin{\doinmargin l}
\def\inrightmargin{\doinmargin r}
%
% @inmargin{TEXT [, RIGHT-TEXT]}
% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right;
% else use TEXT for both).
%
\def\inmargin#1{\parseinmargin #1,,\finish}
\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing.
\setbox0 = \hbox{\ignorespaces #2}%
\ifdim\wd0 > 0pt
\def\lefttext{#1}% have both texts
\def\righttext{#2}%
\else
\def\lefttext{#1}% have only one text
\def\righttext{#1}%
\fi
%
\ifodd\pageno
\def\temp{\inleftmargin\lefttext}%
\else
\def\temp{\inrightmargin\righttext}%
\fi
\temp
}
% @include file insert text of that file as input. % @include file insert text of that file as input.
% Allow normal characters that we make active in the argument (a file name). % Allow normal characters that we make active in the argument (a file name).
@ -2593,42 +2631,48 @@ width0pt\relax} \fi
} }
% @defindex foo == \newindex{foo} % @defindex foo == \newindex{foo}
%
\def\defindex{\parsearg\newindex} \def\defindex{\parsearg\newindex}
% Define @defcodeindex, like @defindex except put all entries in @code. % Define @defcodeindex, like @defindex except put all entries in @code.
%
\def\defcodeindex{\parsearg\newcodeindex}
%
\def\newcodeindex#1{% \def\newcodeindex#1{%
\iflinks \iflinks
\expandafter\newwrite \csname#1indfile\endcsname \expandafter\newwrite \csname#1indfile\endcsname
\openout \csname#1indfile\endcsname \jobname.#1 \openout \csname#1indfile\endcsname \jobname.#1
\fi \fi
\expandafter\xdef\csname#1index\endcsname{% \expandafter\xdef\csname#1index\endcsname{%
\noexpand\docodeindex{#1}} \noexpand\docodeindex{#1}}%
} }
\def\defcodeindex{\parsearg\newcodeindex}
% @synindex foo bar makes index foo feed into index bar. % @synindex foo bar makes index foo feed into index bar.
% Do this instead of @defindex foo if you don't want it as a separate index. % Do this instead of @defindex foo if you don't want it as a separate index.
% The \closeout helps reduce unnecessary open files; the limit on the %
% Acorn RISC OS is a mere 16 files.
\def\synindex#1 #2 {%
\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname
\expandafter\closeout\csname#1indfile\endcsname
\expandafter\let\csname#1indfile\endcsname=\synindexfoo
\expandafter\xdef\csname#1index\endcsname{% define \xxxindex
\noexpand\doindex{#2}}%
}
% @syncodeindex foo bar similar, but put all entries made for index foo % @syncodeindex foo bar similar, but put all entries made for index foo
% inside @code. % inside @code.
\def\syncodeindex#1 #2 {% %
\expandafter\let\expandafter\synindexfoo\expandafter=\csname#2indfile\endcsname \def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}}
\expandafter\closeout\csname#1indfile\endcsname \def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}}
\expandafter\let\csname#1indfile\endcsname=\synindexfoo
\expandafter\xdef\csname#1index\endcsname{% define \xxxindex % #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
\noexpand\docodeindex{#2}}% % #3 the target index (bar).
\def\dosynindex#1#2#3{%
% Only do \closeout if we haven't already done it, else we'll end up
% closing the target index.
\expandafter \ifx\csname donesynindex#2\endcsname \undefined
% The \closeout helps reduce unnecessary open files; the limit on the
% Acorn RISC OS is a mere 16 files.
\expandafter\closeout\csname#2indfile\endcsname
\expandafter\let\csname\donesynindex#2\endcsname = 1
\fi
% redefine \fooindfile:
\expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
\expandafter\let\csname#2indfile\endcsname=\temp
% redefine \fooindex:
\expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}%
} }
% Define \doindex, the driver for all \fooindex macros. % Define \doindex, the driver for all \fooindex macros.
@ -3155,7 +3199,6 @@ width0pt\relax} \fi
% %
% Double the \vsize as well. (We don't need a separate register here, % Double the \vsize as well. (We don't need a separate register here,
% since nobody clobbers \vsize.) % since nobody clobbers \vsize.)
\advance\vsize by -\ht\partialpage
\vsize = 2\vsize \vsize = 2\vsize
} }
@ -3169,6 +3212,7 @@ width0pt\relax} \fi
% previous page. % previous page.
\dimen@ = \vsize \dimen@ = \vsize
\divide\dimen@ by 2 \divide\dimen@ by 2
\advance\dimen@ by -\ht\partialpage
% %
% box0 will be the left-hand column, box2 the right. % box0 will be the left-hand column, box2 the right.
\setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
@ -3176,15 +3220,18 @@ width0pt\relax} \fi
\unvbox255 \unvbox255
\penalty\outputpenalty \penalty\outputpenalty
} }
\def\pagesofar{% %
% Re-output the contents of the output page -- any previous material, % Re-output the contents of the output page -- any previous material,
% followed by the two boxes we just split, in box0 and box2. % followed by the two boxes we just split, in box0 and box2.
\def\pagesofar{%
\unvbox\partialpage \unvbox\partialpage
% %
\hsize = \doublecolumnhsize \hsize = \doublecolumnhsize
\wd0=\hsize \wd2=\hsize \wd0=\hsize \wd2=\hsize
\hbox to\pagewidth{\box0\hfil\box2}% \hbox to\pagewidth{\box0\hfil\box2}%
} }
%
% All done with double columns.
\def\enddoublecolumns{% \def\enddoublecolumns{%
\output = {% \output = {%
% Split the last of the double-column material. Leave it on the % Split the last of the double-column material. Leave it on the
@ -3209,8 +3256,9 @@ width0pt\relax} \fi
% \endgroup where \vsize got restored). % \endgroup where \vsize got restored).
\pagegoal = \vsize \pagegoal = \vsize
} }
\def\balancecolumns{% %
% Called at the end of the double column material. % Called at the end of the double column material.
\def\balancecolumns{%
\setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120. \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
\dimen@ = \ht0 \dimen@ = \ht0
\advance\dimen@ by \topskip \advance\dimen@ by \topskip
@ -4271,6 +4319,7 @@ width0pt\relax} \fi
\gobble \gobble
} }
% @quotation does normal linebreaking (hence we can't use \nonfillstart) % @quotation does normal linebreaking (hence we can't use \nonfillstart)
% and narrows the margins. % and narrows the margins.
% %
@ -4293,6 +4342,158 @@ width0pt\relax} \fi
} }
% LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>}
% If we want to allow any <char> as delimiter,
% we need the curly braces so that makeinfo sees the @verb command, eg:
% `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org
%
% [Knuth]: Donald Ervin Knuth, 1996. The TeXbook.
%
% [Knuth] p. 344; only we need to do '@' too
\def\dospecials{%
\do\ \do\\\do\@\do\{\do\}\do\$\do\&%
\do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~}
%
% [Knuth] p. 380
\def\uncatcodespecials{%
\def\do##1{\catcode`##1=12}\dospecials}
%
% [Knuth] pp. 380,381,391
% Disable Spanish ligatures ?` and !` of \tt font
\begingroup
\catcode`\`=\active\gdef`{\relax\lq}
\endgroup
%
% Setup for the @verb command.
%
% Eight spaces for a tab
\begingroup
\catcode`\^^I=\active
\gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }}
\endgroup
%
\def\setupverb{%
\tt % easiest (and conventionally used) font for verbatim
\def\par{\leavevmode\endgraf}%
\catcode`\`=\active
\tabeightspaces
% Respect line breaks,
% print special symbols as themselves, and
% make each space count
% must do in this order:
\obeylines \uncatcodespecials \sepspaces
}
% Setup for the @verbatim environment
%
% Real tab expansion
\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
%
\def\starttabbox{\setbox0=\hbox\bgroup}
\begingroup
\catcode`\^^I=\active
\gdef\tabexpand{%
\catcode`\^^I=\active
\def^^I{\leavevmode\egroup
\dimen0=\wd0 % the width so far, or since the previous tab
\divide\dimen0 by\tabw
\multiply\dimen0 by\tabw % compute previous multiple of \tabw
\advance\dimen0 by\tabw % advance to next multiple of \tabw
\wd0=\dimen0 \box0 \starttabbox
}%
}
\endgroup
\def\setupverbatim{%
% Easiest (and conventionally used) font for verbatim
\tt
\def\par{\leavevmode\egroup\box0\endgraf}%
\catcode`\`=\active
\tabexpand
% Respect line breaks,
% print special symbols as themselves, and
% make each space count
% must do in this order:
\obeylines \uncatcodespecials \sepspaces
\everypar{\starttabbox}%
}
% Do the @verb magic: verbatim text is quoted by unique
% delimiter characters. Before first delimiter expect a
% right brace, after last delimiter expect closing brace:
%
% \def\doverb'{'<char>#1<char>'}'{#1}
%
% [Knuth] p. 382; only eat outer {}
\begingroup
\catcode`[=1\catcode`]=2\catcode`\{=12\catcode`\}=12
\gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next]
\endgroup
%
\def\verb{\begingroup\setupverb\doverb}
%
%
% Do the @verbatim magic: define the macro \doverbatim so that
% the (first) argument ends when '@end verbatim' is reached, ie:
%
% \def\doverbatim#1@end verbatim{#1}
%
% For Texinfo it's a lot easier than for LaTeX,
% because texinfo's \verbatim doesn't stop at '\end{verbatim}':
% we need not redefine '\', '{' and '}'
%
% Inspired by LaTeX's verbatim command set [latex.ltx]
%% Include LaTeX hack for completeness -- never know
%% \begingroup
%% \catcode`|=0 \catcode`[=1
%% \catcode`]=2\catcode`\{=12\catcode`\}=12\catcode`\ =\active
%% \catcode`\\=12|gdef|doverbatim#1@end verbatim[
%% #1|endgroup|def|Everbatim[]|end[verbatim]]
%% |endgroup
\begingroup
\catcode`\ =\active
\gdef\doverbatim#1@end verbatim{#1\end{verbatim}}
\endgroup
%
\def\verbatim{%
\def\Everbatim{\nonfillfinish\endgroup}%
\begingroup
\nonfillstart
\advance\leftskip by -\defbodyindent
\begingroup\setupverbatim\doverbatim
}
% @verbatiminclude FILE - insert text of file in verbatim environment.
%
% Allow normal characters that we make active in the argument (a file name).
\def\verbatiminclude{%
\begingroup
\catcode`\\=12
\catcode`~=12
\catcode`^=12
\catcode`_=12
\catcode`|=12
\catcode`<=12
\catcode`>=12
\catcode`+=12
\parsearg\doverbatiminclude
}
\def\setupverbatiminclude{%
\begingroup
\nonfillstart
\advance\leftskip by -\defbodyindent
\begingroup\setupverbatim
}
%
\def\doverbatiminclude#1{%
% Restore active chars for included file.
\endgroup
\begingroup
\def\thisfile{#1}%
\expandafter\expandafter\setupverbatiminclude\input\thisfile
\endgroup\nonfillfinish\endgroup
}
\message{defuns,} \message{defuns,}
% @defun etc. % @defun etc.