changeset 4918:7248b819ea26

update from texinfo
author Karl Berry <karl@freefriends.org>
date Mon, 19 Jan 2004 15:02:31 +0000
parents 92a465f11025
children 759a578edd98
files config/texinfo.tex
diffstat 1 files changed, 150 insertions(+), 42 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{2004-01-17.16}
+\def\texinfoversion{2004-01-19.07}
 %
 % Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
 % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
@@ -1279,7 +1279,15 @@
       \def\numsubsubsecentry##1##2##3##4{% count is always zero
         \dopdfoutline{##1}{}{##3}{##4}}%
       %
-      % Make special characters normal for writing to the pdf file.
+      % PDF outlines are displayed using system fonts, instead of
+      % document fonts.  Therefore we cannot use special characters,
+      % since the encoding is unknown.  For example, the eogonek from
+      % Latin 2 (0xea) gets translated to a | character.  Info from
+      % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
+      % 
+      % xx to do this right, we have to translate 8-bit characters to
+      % their "best" equivalent, based on the @documentencoding.  Right
+      % now, I guess we'll just let the pdf reader have its way.
       \indexnofonts
       \turnoffactive
       \input \jobname.toc
@@ -2338,7 +2346,7 @@
   {\let\par=\endgraf \smallbreak}% reasonable place to break
   {%
    % If the document has an @itemize directly after a section title, a
-   % \nobreak will be the last contribution, and \sectionheading will have
+   % \nobreak will be last on the list, and \sectionheading will have
    % done a \vskip-\parskip.  In that case, we don't want to zero
    % parskip, or the item text will crash with the heading.  On the
    % other hand, when there is normal text preceding the item (as there
@@ -3097,7 +3105,6 @@
   %
   \definedummyword{LaTeX}%
   \definedummyword{TeX}%
-  \definedummyword{dots}%
   %
   % Assorted special characters.
   \definedummyword{bullet}%
@@ -3132,13 +3139,19 @@
   \catcode`\~=\other
   \gdef\commondummiesnofonts{%
     % Control letters and accents.
-    \definedummyletter{,}%
+    \definedummyletter{!}%
     \definedummyletter{"}%
-    \definedummyletter{`}%
     \definedummyletter{'}%
+    \definedummyletter{*}%
+    \definedummyletter{,}%
+    \definedummyletter{.}%
+    \definedummyletter{/}%
+    \definedummyletter{:}%
+    \definedummyletter{=}%
+    \definedummyletter{?}%
     \definedummyletter{^}%
+    \definedummyletter{`}%
     \definedummyletter{~}%
-    \definedummyletter{=}%
     \definedummyword{u}%
     \definedummyword{v}%
     \definedummyword{H}%
@@ -3170,6 +3183,7 @@
     \definedummyword{option}%
     \definedummyword{samp}%
     \definedummyword{strong}%
+    \definedummyword{tie}%
     \definedummyword{uref}%
     \definedummyword{url}%
     \definedummyword{var}%
@@ -3469,12 +3483,12 @@
 % then page number (#2) flushed to the right margin.  It is used for index
 % and table of contents entries.  The paragraph is indented by \leftskip.
 %
-% A straigtforward implementation would start like this:
+% A straightforward implementation would start like this:
 %	\def\entry#1#2{...
 % But this frozes the catcodes in the argument, and can cause problems to
-% @code, which set's active ``-''.  This problem was fixed by a kludge---
-% ``-'' was active throughout whole index, but this isn't what we really
-% want.
+% @code, which sets - active.  This problem was fixed by a kludge---
+% ``-'' was active throughout whole index, but this isn't really right.
+% 
 % The right solution is to prevent \entry from swallowing the whole text.
 %                                 --kasal, 21nov03
 \def\entry{%
@@ -4476,7 +4490,8 @@
 \def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}}
 
 % This parameter controls the indentation of the various levels.
-\newdimen\tocindent \tocindent = 2pc
+% Same as \defaultparindent.
+\newdimen\tocindent \tocindent = 15pt
 
 % Now for the actual typesetting. In all these, #1 is the text and #2 is the
 % page number.
@@ -5141,7 +5156,7 @@
 % \deffngeneral {subind}category name args
 %
 \def\deffngeneral#1#2 #3 #4\endheader{%
-  % Remember that \dosubin{fn}{xxx}{} is equivalent to \doind{fn}{xxx}.
+  % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}.
   \dosubind{fn}{\code{#3}}{#1}%
   \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
 }
@@ -5709,17 +5724,16 @@
 
 % \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
 % anchor), which consists of three parts:
-% 1) NAME-title - the current sectioning name, taken from \thissection;
-% 2) NAME-snt   - section number and type, defined as the SNT arg;
+% 1) NAME-title - the current sectioning name taken from \thissection,
+%                 or the anchor name.
+% 2) NAME-snt   - section number and type, passed as the SNT arg, or
+%                 empty for anchors.
 % 3) NAME-pg    - the page number.
-% This is called from \donoderef, \anchor, and \dofloat.
 % 
-% We take care not to fully expand the title, since it may contain
-% arbitrary macros.
-%
-% Use \turnoffactive so that punctuation chars such as underscore
-% and backslash work in node names.
-%
+% This is called from \donoderef, \anchor, and \dofloat.  In the case of
+% floats, there is an additional part, which is not written here:
+% 4) NAME-lof   - the text as it should appear in a @listoffloats.
+% 
 \def\setref#1#2{%
   \pdfmkdest{#1}%
   \iflinks
@@ -5802,9 +5816,9 @@
     \turnoffactive
     \otherbackslash
     \expandafter\global\expandafter\let\expandafter\Xthisreftitle
-      \csname X#1-title\endcsname
+      \csname XR#1-title\endcsname
   }%
-  \ifx \Xthisreftitle \floatmagic
+  \iffloat\Xthisreftitle
     % If the user specified the print name (third arg) to the ref,
     % print it instead of our usual "Figure 1.2".
     \ifdim\wd0 = 0pt
@@ -5897,7 +5911,7 @@
     \indexnofonts
     \otherbackslash
     \expandafter\global\expandafter\let\expandafter\thisrefX
-      \csname X#1\endcsname
+      \csname XR#1\endcsname
   }%
   \ifx\thisrefX\relax
     % If not defined, say something at least.
@@ -5919,9 +5933,32 @@
   #2% Output the suffix in any case.
 }
 
-% This is the macro invoked by entries in the aux file.
-%
-\def\xrdef#1{\expandafter\gdef\csname X#1\endcsname}
+% This is the macro invoked by entries in the aux file.  Usually it's
+% just a \def (we prepend XR to the control sequence name to avoid
+% collisions).  But if this is a float type, we have more work to do.
+%
+\def\xrdef#1#2{%
+  \expandafter\gdef\csname XR#1\endcsname{#2}% remember this xref value.
+  %
+  % Was that xref control sequence that we just defined for a float?
+  \expandafter\iffloat\csname XR#1\endcsname
+    % it was a float, and we have the (safe) float type in \iffloattype.
+    \expandafter\let\expandafter\floatlist
+      \csname floatlist\iffloattype\endcsname
+    % 
+    % Is this the first time we've seen this float type?
+    \expandafter\ifx\floatlist\relax
+      \toks0 = {\do}% yes, so just \do
+    \else
+      % had it before, so preserve previous elements in list.
+      \toks0 = \expandafter{\floatlist\do}%
+    \fi
+    %
+    % Remember this xref in the control sequence \floatlistFLOATTYPE,
+    % for later use in \listoffloats.
+    \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0{#1}}%
+  \fi
+}
 
 % Read the last existing aux file, if any.  No error if none exists.
 % 
@@ -6277,9 +6314,10 @@
 	  % This magic value for \thissection is output by \setref as the
 	  % XREFLABEL-title value.  \xrefX uses it to distinguish float
 	  % labels (which have a completely different output format) from
-	  % node and anchor labels.
+	  % node and anchor labels.  And \xrdef uses it to construct the
+	  % lists of floats.
 	  % 
-	  \let\thissection=\floatmagic
+	  \edef\thissection{\floatmagic=\safefloattype}%
 	  \setref{\floatlabel}{Yfloat}%
 	}%
       \fi
@@ -6287,9 +6325,9 @@
 }
 
 % we have four possibilities:
-% @float Foo & @caption{Cap}: Foo 1.1: Cap
-% @float Foo & no caption:    Foo 1.1
-% @float & @caption{Cap}:     Cap
+% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap
+% @float Foo,lbl & no caption:    Foo 1.1
+% @float & @caption{Cap}:         Cap
 % @float & no caption:
 %
 \def\Efloat{%
@@ -6299,11 +6337,30 @@
       \vskip.5\parskip  % space above caption
       %
       % Print the float number preceded by the chapter-level number
-      % (empty in the case of unnumbered).  Although there are other
-      % styles of float numbering, we hardwire this one.
-      \floattype\space\chaplevelprefix\the\floatno
+      % (empty in the case of unnumbered), as in "Figure 1.1".  Although
+      % there are other styles of float numbering, we hardwire this one.
+      \def\floatident{\floattype\tie\chaplevelprefix\the\floatno}%
+      \floatident
       \let\printedsomething = t%
-    \fi
+      %
+      % Write the text that goes in the list of floats to the aux file
+      % as \floatlabel-lof.  Besides the float ident, we include the
+      % short caption if specified, else the full caption if specified,
+      % else nothing.
+      {%
+        \atdummies \turnoffactive \otherbackslash
+        \immediate\write\auxfile{@xrdef{\floatlabel-lof}{%
+          \floatident
+          \ifx\thisshortcaption\empty
+            \ifx\thiscaption\empty \else
+              : \thiscaption
+            \fi
+          \else
+            : \thisshortcaption
+          \fi
+        }}%
+      }%
+    \fi % end have xref label for this float
     %
     \ifx\thiscaption\empty \else
       \ifx\printedsomething\empty
@@ -6319,7 +6376,6 @@
     %
     % Space below caption, if we printed anything.
     \ifx\printedsomething\empty \else \vskip\parskip \fi
-    %
   \egroup  % end of \vtop
   \checkinserts
 }
@@ -6347,16 +6403,67 @@
 % to the FLOATLABEL to expand to "Figure 3.1".  We call \setref when we
 % first read the @float command.
 % 
-\def\Yfloat{\floattype @tie{}\chaplevelprefix\the\floatno}%
+\def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}%
 
 % Magic string used for the XREFLABEL-title value, so \xrefX can
 % distinguish floats from other xref types.
 \def\floatmagic{!!float!!}
 
+% #1 is the control sequence we are passed; we expand into a conditional
+% which is true if #1 represents a float ref.  That is, the magic
+% \thissection value which we \setref above.
+% 
+\def\iffloat#1{\expandafter\doiffloat#1==\finish}
+%
+% #1 is (maybe) the \floatmagic string.  If so, #2 will be the
+% (safe) float type for this float.  We set \iffloattype to #2.
+% 
+\def\doiffloat#1=#2=#3\finish{%
+  \def\temp{#1}%
+  \def\iffloattype{#2}%
+  \ifx\temp\floatmagic
+}
+
 % @listoffloats FLOATTYPE - print a list of floats like a table of contents.
-\parseargdef\listoffloats{%xx
-}
-
+% 
+\parseargdef\listoffloats{%
+  \def\floattype{#1}% floattype
+  {%
+    % the floattype might have accents or other special characters,
+    % but we need to use it in a control sequence name.
+    \indexnofonts
+    \turnoffactive
+    \xdef\safefloattype{\floattype}%
+  }%
+  %
+  % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE.
+  \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax
+    \ifhavexrefs
+      % if the user said @listoffloats foo but never @float foo.
+      \message{\linenumber No `\safefloattype' floats to list.}%
+    \fi
+  \else
+    \begingroup
+      \leftskip=\tocindent  % indent these entries like a toc
+      \let\do=\listoffloatsdo
+      \csname floatlist\safefloattype\endcsname
+    \endgroup
+  \fi
+}
+
+% This is called on each entry in a list of floats.  We're passed the
+% xref label, in the form LABEL-title, which is how we save it in the
+% aux file.  We strip off the -title and look up \XRLABEL-lof, which
+% has the text we're supposed to typeset here.
+% 
+% Figures without xref labels will not be included in the list (since
+% they won't appear in the aux file).
+% 
+\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish}
+\def\listoffloatsdoentry#1-title\finish{%
+  % use the same \entry we use for the TOC.
+  \entry{\csname XR#1-lof\endcsname}{\csname XR#1-pg\endcsname}%
+}
 
 \message{localization,}
 % and i18n.
@@ -6666,6 +6773,7 @@
 % \backslashcurfont outputs one backslash character in current font,
 % as in \char`\\.
 \global\chardef\backslashcurfont=`\\
+\global\let\rawbackslashxx=\backslashcurfont  % let existing .??s files work
 
 % \rawbackslash defines an active \ to do \backslashcurfont.
 % \otherbackslash defines an active \ to be a literal `\' character with