changeset 4775:66df8a590e8d

update from texinfo
author Karl Berry <karl@freefriends.org>
date Tue, 07 Oct 2003 12:58:45 +0000
parents 01f61a103347
children 58c3cf12fb22
files config/texinfo.tex
diffstat 1 files changed, 115 insertions(+), 112 deletions(-) [+]
line wrap: on
line diff
--- a/config/texinfo.tex
+++ b/config/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{2003-10-04.06}
+\def\texinfoversion{2003-10-06.08}
 %
 % Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
 % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
@@ -3144,12 +3144,9 @@
 \let\indexbackslash=0  %overridden during \printindex.
 \let\SETmarginindex=\relax % put index entries in margin (undocumented)?
 
-% For \ifx comparisons.
-\def\emptymacro{\empty}
-
 % Most index entries go through here, but \dosubind is the general case.
 %
-\def\doind#1#2{\dosubind{#1}{#2}\empty}
+\def\doind#1#2{\dosubind{#1}{#2}{}}
 
 % Workhorse for all \fooindexes.
 % #1 is name of index, #2 is stuff to put there, #3 is subentry --
@@ -3157,102 +3154,111 @@
 % is with defuns, which call us directly.
 %
 \def\dosubind#1#2#3{%
+  \iflinks
+  {%
+    % Store the main index entry text (including the third arg).
+    \toks0 = {#2}%
+    % If third arg is present, precede it with space.
+    \def\thirdarg{#3}%
+    \ifx\thirdarg\empty \else
+      \toks0 = \expandafter{\the\toks0 \space #3}%
+    \fi
+    %
+    \edef\writeto{\csname#1indfile\endcsname}%
+    %
+    \ifvmode
+      \dosubindsanitize
+    \else
+      \dosubindwrite
+    \fi
+  }%
+  \fi
+}
+
+% Write the entry to the index file:
+%
+\def\dosubindwrite{%
   % Put the index entry in the margin if desired.
   \ifx\SETmarginindex\relax\else
-    \insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}%
+    \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}%
   \fi
-  {%
-    \indexdummies % Must do this here, since \bf, etc expand at this stage
-    \escapechar=`\\
-    {%
-      \let\folio = 0% We will expand all macros now EXCEPT \folio.
-      \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now
+  %
+  % Remember, we are within a group.
+  \indexdummies % Must do this here, since \bf, etc expand at this stage
+  \escapechar=`\\
+  \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now
       % so it will be output as is; and it will print as backslash.
-      %
-      % The main index entry text.
-      \toks0 = {#2}%
-      %
-      % If third arg is present, precede it with space in sort key.
-      \def\thirdarg{#3}%
-      \ifx\thirdarg\emptymacro \else
-         % If the third (subentry) arg is present, add it to the index
-         % line to write.
-        \toks0 = \expandafter{\the\toks0 \space #3}%
-      \fi
-      %
-      % Process the index entry with all font commands turned off, to
-      % get the string to sort by.
-      {\indexnofonts
-       \edef\temp{\the\toks0}% need full expansion
-       \xdef\indexsorttmp{\temp}%
-      }%
-      %
-      % Set up the complete index entry, with both the sort key and
-      % the original text, including any font commands.  We write
-      % three arguments to \entry to the .?? file (four in the
-      % subentry case), texindex reduces to two when writing the .??s
-      % sorted result.
-      \edef\temp{%
-        \write\csname#1indfile\endcsname{%
-          \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}%
-      }%
-      %
-      % If a skip is the last thing on the list now, preserve it
-      % by backing up by \lastskip, doing the \write, then inserting
-      % the skip again.  Otherwise, the whatsit generated by the
-      % \write will make \lastskip zero.  The result is that sequences
-      % like this:
-      % @end defun
-      % @tindex whatever
-      % @defun ...
-      % will have extra space inserted, because the \medbreak in the
-      % start of the @defun won't see the skip inserted by the @end of
-      % the previous defun.
-      %
-      % But don't do any of this if we're not in vertical mode.  We
-      % don't want to do a \vskip and prematurely end a paragraph.
-      %
-      % Avoid page breaks due to these extra skips, too.
-      %
-      \iflinks
-        \ifvmode
-          % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
-          \skip0 = \lastskip
-          \count255 = \lastpenalty
-          %
-          % If \lastskip is nonzero, that means the last item was a
-          % skip.  And since a skip is discardable, that means this
-          % -\skip0 glue we're inserting is preceded by a
-          % non-discardable item, therefore it is not a potential
-          % breakpoint, therefore no \nobreak needed.
-          \ifdim\lastskip = 0pt \else \vskip-\skip0 \fi
-        \fi
-        %
-        \temp  % do the write
-        %
-        \ifvmode
-           \ifdim\skip0 = 0pt
-             % if \lastskip was zero, perhaps the last item was a
-             % penalty, and perhaps it was >=10000, e.g., a \nobreak.
-             % In that case, we want to re-insert the penalty; since we
-             % just inserted a non-discardable item, any following glue
-             % (such as a \parskip) would be a breakpoint.  For example:
-             %   @deffn deffn-whatever
-             %   @vindex index-whatever
-             %   Description.
-             % would allow a break between the index-whatever whatsit
-             % and the "Description." paragraph.
-             \ifnum\count255>9999 \nobreak \fi
-           \else
-             % On the other hand, if we had a nonzero \lastskip,
-             % this make-up glue would be preceded by a non-discardable item
-             % (the whatsit from the \write), we must insert a \nobreak.
-             \nobreak\vskip\skip0
-           \fi
-        \fi
-      \fi
-    }%
+  %
+  % Process the index entry with all font commands turned off, to
+  % get the string to sort by.
+  {\indexnofonts
+   \edef\temp{\the\toks0}% need full expansion
+   \xdef\indexsorttmp{\temp}%
+  }%
+  %
+  % Set up the complete index entry, with both the sort key and
+  % the original text, including any font commands.  We write
+  % three arguments to \entry to the .?? file (four in the
+  % subentry case), texindex reduces to two when writing the .??s
+  % sorted result.
+  \edef\temp{%
+    \write\writeto{%
+      \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}%
   }%
+  \temp
+}
+
+%  Take care of unwanted page breaks:
+%
+% If a skip is the last thing on the list now, preserve it
+% by backing up by \lastskip, doing the \write, then inserting
+% the skip again.  Otherwise, the whatsit generated by the
+% \write will make \lastskip zero.  The result is that sequences
+% like this:
+% @end defun
+% @tindex whatever
+% @defun ...
+% will have extra space inserted, because the \medbreak in the
+% start of the @defun won't see the skip inserted by the @end of
+% the previous defun.
+%
+% But don't do any of this if we're not in vertical mode.  We
+% don't want to do a \vskip and prematurely end a paragraph.
+%
+% Avoid page breaks due to these extra skips, too.
+%
+\def\dosubindsanitize{%
+  % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
+  \skip0 = \lastskip
+  \count255 = \lastpenalty
+  %
+  % If \lastskip is nonzero, that means the last item was a
+  % skip.  And since a skip is discardable, that means this
+  % -\skip0 glue we're inserting is preceded by a
+  % non-discardable item, therefore it is not a potential
+  % breakpoint, therefore no \nobreak needed.
+  \ifdim\lastskip = 0pt \else \vskip-\skip0 \fi
+  %
+  \dosubindwrite
+  %
+  \ifdim\skip0 = 0pt
+    % if \lastskip was zero, perhaps the last item was a
+    % penalty, and perhaps it was >=10000, e.g., a \nobreak.
+    % In that case, we want to re-insert the penalty; since we
+    % just inserted a non-discardable item, any following glue
+    % (such as a \parskip) would be a breakpoint.  For example:
+    %   @deffn deffn-whatever
+    %   @vindex index-whatever
+    %   Description.
+    % would allow a break between the index-whatever whatsit
+    % and the "Description." paragraph.
+    \ifnum\count255>9999 \nobreak \fi
+  \else
+    % On the other hand, if we had a nonzero \lastskip,
+    % this make-up glue would be preceded by a non-discardable item
+    % (the whatsit from the \write), so we must insert a \nobreak.
+    \nobreak\vskip\skip0
+  \fi
 }
 
 % The index entry written in the file actually looks like
@@ -4950,9 +4956,6 @@
 \message{defuns,}
 % @defun etc.
 
-% Allow user to change definition object font (\df) internally
-\def\setdeffont#1 {\csname DEF#1\endcsname}
-
 \newskip\defbodyindent \defbodyindent=.4in
 \newskip\defargsindent \defargsindent=50pt
 \newskip\deflastargmargin \deflastargmargin=18pt
@@ -5864,10 +5867,10 @@
 % anchor), namely NAME-title (the corresponding @chapter/etc. name),
 % NAME-pg (the page number), and NAME-snt (section number and type).
 % Called from \foonoderef.
-%
-% We have to set \indexdummies so commands such as @code in a section
-% title aren't expanded.  It would be nicer not to expand the titles in
-% the first place, but there's so many layers that that is hard to do.
+% 
+% We have to set dummies so commands such as @code in a section title
+% aren't expanded.  It would be nicer not to expand the titles in the
+% first place, but that is hard to do.
 %
 % Likewise, use \turnoffactive so that punctuation chars such as underscore
 % and backslash work in node names.
@@ -5876,10 +5879,12 @@
   \atdummies
   \pdfmkdest{#1}%
   %
-  \turnoffactive
-  \dosetq{#1-title}{Ytitle}%
-  \dosetq{#1-pg}{Ypagenumber}%
-  \dosetq{#1-snt}{#2}%
+  \iflinks
+    \turnoffactive
+    \dosetq{#1-title}{Ytitle}%
+    \dosetq{#1-pg}{Ypagenumber}%
+    \dosetq{#1-snt}{#2}%
+  \fi
 }}
 
 % @xref, @pxref, and @ref generate cross-references.  For \xrefX, #1 is
@@ -5976,10 +5981,8 @@
 % \dosetq is called from \setref to do the actual \write (\iflinks).
 %
 \def\dosetq#1#2{%
-  {\let\folio=0%
-   \edef\next{\write\auxfile{\internalsetq{#1}{#2}}}%
-   \iflinks \next \fi
-  }%
+  \edef\next{\write\auxfile{\internalsetq{#1}{#2}}}%
+  \next
 }
 
 % \internalsetq{foo}{page} expands into
@@ -5988,7 +5991,7 @@
 
 % Things to be expanded by \internalsetq.
 %
-\def\Ypagenumber{\folio}
+\def\Ypagenumber{\noexpand\folio}
 \def\Ytitle{\thissection}
 \def\Ynothing{}
 \def\Yomitfromtoc{}