[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
texinfo update (Sat Feb 19 19:22:01 EST 2005)
From: |
Karl Berry |
Subject: |
texinfo update (Sat Feb 19 19:22:01 EST 2005) |
Date: |
Sat, 19 Feb 2005 19:22:09 -0500 |
Index: ChangeLog
===================================================================
RCS file: /cvsroot/texinfo/texinfo/ChangeLog,v
retrieving revision 1.467
retrieving revision 1.468
diff -c -r1.467 -r1.468
*** ChangeLog 19 Feb 2005 14:39:18 -0000 1.467
--- ChangeLog 20 Feb 2005 00:00:43 -0000 1.468
***************
*** 1,5 ****
--- 1,29 ----
2005-02-19 Karl Berry <address@hidden>
+ The main user-visible change of all this is to make
+ section names with \ characters work in pdf outlines. As a side
+ effect, .toc files now use @ instead of \ for the escape char.
+ * doc/texinfo.tex (\backChar, \plusChar): new \chardef's.
+ (\activebackslash): debugging macro.
+ (\activebackslashdouble): new macro.
+ (\HyPsdSubst): replace tokens.
+ (\HyReturnAfterFi): helper.
+ (\backslashparens): new macro, change () to \( and \) resp.
+ (\backslashlparen, \backslashrparen): new macros.
+ (\pdfmkdest): double backslashes, backslashparens, and @ for escape.
+ (\dopdfoutline): similarly.
+ (\pdfmakeoutlines): \readdatafile on the .toc the first time,
+ instead of straight \input.
+ (\makelinks, \picknum, \pn, \ppn, \ppnn, \pdfmklink): rm.
+ (\writetocentry): now we use @ for escape in the .toc instead of \.
+ (\activecatcodes, \readtocfile): new macros.
+ (\startcontents): don't swap \ and @ catcodes from Texinfo.
+ (\setref, \dofloat): no need to call \otherbackslash.
+ (\xrefX): no need to call \otherbackslash, also double backslashes
+ and backslash parens for pdf output.
+ (\readauxfile): generalize and rename to \readdatafile.
+ (\doublebackslash): new macro.
+
* util/texi2dvi: do not have -o (used by Autoconf/make) imply
--clean. That results in TeX always running at least twice, since
the aux files are stuck (and removed) in the temp directory for clean.
Index: NEWS
===================================================================
RCS file: /cvsroot/texinfo/texinfo/NEWS,v
retrieving revision 1.105
retrieving revision 1.106
diff -c -r1.105 -r1.106
*** NEWS 14 Feb 2005 00:20:27 -0000 1.105
--- NEWS 20 Feb 2005 00:00:43 -0000 1.106
***************
*** 1,4 ****
! $Id: NEWS,v 1.105 2005/02/14 00:20:27 karl Exp $
This file records noteworthy changes, very tersely.
See the manual for detailed information.
--- 1,4 ----
! $Id: NEWS,v 1.106 2005/02/20 00:00:43 karl Exp $
This file records noteworthy changes, very tersely.
See the manual for detailed information.
***************
*** 24,29 ****
--- 24,32 ----
-------------------------------------------------------------------------------
* Language:
. new command @frenchspacing to control spacing after sentences.
+ * texinfo.tex:
+ . section names with \ characters work properly in pdf outlines.
+ . .toc files use @ as the escape character, instead of \.
* Distribution:
. automake 1.9.5.
Index: doc/texinfo.tex
===================================================================
RCS file: /cvsroot/texinfo/texinfo/doc/texinfo.tex,v
retrieving revision 1.184
retrieving revision 1.185
diff -c -r1.184 -r1.185
*** doc/texinfo.tex 14 Feb 2005 00:20:27 -0000 1.184
--- doc/texinfo.tex 20 Feb 2005 00:00:43 -0000 1.185
***************
*** 3,9 ****
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
! \def\texinfoversion{2005-02-13.16}
%
% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software
--- 3,9 ----
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
! \def\texinfoversion{2005-02-19.15}
%
% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software
***************
*** 155,164 ****
--- 155,166 ----
% In some macros, we cannot use the `\? notation---the left quote is
% in some cases the escape char.
+ \chardef\backChar = `\\
\chardef\colonChar = `\:
\chardef\commaChar = `\,
\chardef\dotChar = `\.
\chardef\exclamChar= `\!
+ \chardef\plusChar = `\+
\chardef\questChar = `\?
\chardef\semiChar = `\;
\chardef\underChar = `\_
***************
*** 167,172 ****
--- 169,180 ----
\chardef\spacecat = 10
\def\spaceisspace{\catcode\spaceChar=\spacecat}
+ {% for help with debugging.
+ % example usage: \expandafter\show\activebackslash
+ \catcode`\! = 0 \catcode`\\ = \active
+ !global!def!activebackslash{\}
+ }
+
% Ignore a token.
%
\def\gobble#1{}
***************
*** 566,572 ****
\let\}=\myrbrace
\begingroup
% Definitions to produce \{ and \} commands for indices,
! % and @{ and @} for the aux file.
\catcode`\{ = \other \catcode`\} = \other
\catcode`\[ = 1 \catcode`\] = 2
\catcode`\! = 0 \catcode`\\ = \other
--- 574,580 ----
\let\}=\myrbrace
\begingroup
% Definitions to produce \{ and \} commands for indices,
! % and @{ and @} for the aux/toc files.
\catcode`\{ = \other \catcode`\} = \other
\catcode`\[ = 1 \catcode`\] = 2
\catcode`\! = 0 \catcode`\\ = \other
***************
*** 1191,1197 ****
\fi
\fi
\fi
! %
\ifpdf
\input pdfcolor
\pdfcatalog{/PageMode /UseOutlines}%
--- 1199,1260 ----
\fi
\fi
\fi
!
! % PDF uses PostScript string constants for the names of xref targets, to
! % for display in the outlines, and in other places. Thus, we have to
! % double any backslashes. Otherwise, a name like "\node" will be
! % interpreted as a newline (\n), followed by o, d, e. Not good.
! % http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html
! % (and related messages, the final outcome is that it is up to the TeX
! % user to double the backslashes and otherwise make the string valid, so
! % that's we do).
!
! % double active backslashes.
! %
! address@hidden \catcode`\\=\active
! @address@hidden@address@hidden@active @otherbackslash}
! @address@hidden
! @address@hidden@active
! @address@hidden
! }
!
! % To handle parens, we must adopt a different approach, since parens are
! % not active characters. hyperref.dtx (which has the same problem as
! % us) handles it with this amazing macro to replace tokens. I've
! % tinkered with it a little for texinfo, but it's definitely from there.
! %
! % #1 is the tokens to replace.
! % #2 is the replacement.
! % #3 is the control sequence with the string.
! %
! \def\HyPsdSubst#1#2#3{%
! \def\HyPsdReplace##1#1##2\END{%
! ##1%
! \ifx\\##2\\%
! \else
! #2%
! \HyReturnAfterFi{%
! \HyPsdReplace##2\END
! }%
! \fi
! }%
! \xdef#3{\expandafter\HyPsdReplace#3#1\END}%
! }
! \long\def\HyReturnAfterFi#1\fi{\fi#1}
!
! % #1 is a control sequence in which to do the replacements.
! \def\backslashparens#1{%
! \xdef#1{#1}% redefine it as its expansion; the definition is simply
! % \lastnode when called from \setref -> \pdfmkdest.
! \HyPsdSubst{(}{\backslashlparen}{#1}%
! \HyPsdSubst{)}{\backslashrparen}{#1}%
! }
!
! {\catcode\exclamChar = 0 \catcode\backChar = \other
! !gdef!backslashlparen{\(}%
! !gdef!backslashrparen{\)}%
! }
!
\ifpdf
\input pdfcolor
\pdfcatalog{/PageMode /UseOutlines}%
***************
*** 1216,1228 ****
\pdfrefximage \pdflastximage
\fi}
\def\pdfmkdest#1{{%
! % We have to set dummies so commands such as @code in a section title
! % aren't expanded.
\atdummies
! \normalturnoffactive
! \pdfdest name{#1} xyz%
! }}
! \def\pdfmkpgn#1{#1}
\let\linkcolor = \Blue % was Cyan, but that seems light?
\def\endlink{\Black\pdfendlink}
% Adding outlines to PDF; macros for calculating structure of outlines
--- 1279,1297 ----
\pdfrefximage \pdflastximage
\fi}
\def\pdfmkdest#1{{%
! % We have to set dummies so commands such as @code, and characters
! % such as \, aren't expanded when present in a section title.
\atdummies
! \turnoffactive
! \activebackslashdouble
! \def\pdfdestname{#1}%
! \backslashparens\pdfdestname
! \pdfdest name{\pdfdestname} xyz%
! }}%
! %
! % used to mark target names; must be expandable.
! \def\pdfmkpgn#1{#1}%
! %
\let\linkcolor = \Blue % was Cyan, but that seems light?
\def\endlink{\Black\pdfendlink}
% Adding outlines to PDF; macros for calculating structure of outlines
***************
*** 1233,1252 ****
\advance\tempnum by 1
\expandafter\xdef\csname#1\endcsname{\the\tempnum}}
%
! % #1 is the section text. #2 is the pdf expression for the number
! % of subentries (or empty, for subsubsections). #3 is the node
! % text, which might be empty if this toc entry had no
! % corresponding node. #4 is the page number.
%
\def\dopdfoutline#1#2#3#4{%
% Generate a link to the node text if that exists; else, use the
% page number. We could generate a destination for the section
% text in the case where a section has no node, but it doesn't
! % seem worthwhile, since most documents are normally structured.
\def\pdfoutlinedest{#3}%
! \ifx\pdfoutlinedest\empty \def\pdfoutlinedest{#4}\fi
%
! \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{#1}%
}
%
\def\pdfmakeoutlines{%
--- 1302,1332 ----
\advance\tempnum by 1
\expandafter\xdef\csname#1\endcsname{\the\tempnum}}
%
! % #1 is the section text, which is what will be displayed in the
! % outline by the pdf viewer. #2 is the pdf expression for the number
! % of subentries (or empty, for subsubsections). #3 is the node text,
! % which might be empty if this toc entry had no corresponding node.
! % #4 is the page number
%
\def\dopdfoutline#1#2#3#4{%
% Generate a link to the node text if that exists; else, use the
% page number. We could generate a destination for the section
% text in the case where a section has no node, but it doesn't
! % seem worth the trouble, since most documents are normally structured.
\def\pdfoutlinedest{#3}%
! \ifx\pdfoutlinedest\empty
! \def\pdfoutlinedest{#4}%
! \else
! % Doubled backslashes in the name.
! {\activebackslashdouble \xdef\pdfoutlinedest{#3}%
! \backslashparens\pdfoutlinedest}%
! \fi
%
! % Also double the backslashes in the display string.
! {\activebackslashdouble \xdef\pdfoutlinetext{#1}%
! \backslashparens\pdfoutlinetext}%
! %
! \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
}
%
\def\pdfmakeoutlines{%
***************
*** 1287,1293 ****
\def\unnsecentry{\numsecentry}%
\def\unnsubsecentry{\numsubsecentry}%
\def\unnsubsubsecentry{\numsubsubsecentry}%
! \input \jobname.toc
%
% Read toc second time, this time actually producing the outlines.
% The `-' means take the \expnumber as the absolute number of
--- 1367,1373 ----
\def\unnsecentry{\numsecentry}%
\def\unnsubsecentry{\numsubsecentry}%
\def\unnsubsubsecentry{\numsubsubsecentry}%
! \readdatafile{toc}%
%
% Read toc second time, this time actually producing the outlines.
% The `-' means take the \expnumber as the absolute number of
***************
*** 1313,1353 ****
% 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
\endgroup
}
%
- \def\makelinks #1,{%
- \def\params{#1}\def\E{END}%
- \ifx\params\E
- \let\nextmakelinks=\relax
- \else
- \let\nextmakelinks=\makelinks
- \ifnum\lnkcount>0,\fi
- \picknum{#1}%
- \startlink attr{/Border [0 0 0]}
- goto name{\pdfmkpgn{\the\pgn}}%
- \linkcolor #1%
- \advance\lnkcount by 1%
- \endlink
- \fi
- \nextmakelinks
- }
- \def\picknum#1{\expandafter\pn#1}
- \def\pn#1{%
- \def\p{#1}%
- \ifx\p\lbrace
- \let\nextpn=\ppn
- \else
- \let\nextpn=\ppnn
- \def\first{#1}
- \fi
- \nextpn
- }
- \def\ppn#1{\pgn=#1\gobble}
- \def\ppnn{\pgn=\first}
- \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,}
\def\skipspaces#1{\def\PP{#1}\def\D{|}%
\ifx\PP\D\let\nextsp\relax
\else\let\nextsp\skipspaces
--- 1393,1404 ----
% their "best" equivalent, based on the @documentencoding. Right
% now, I guess we'll just let the pdf reader have its way.
\indexnofonts
! \setupdatafile
! \activebackslash
\input \jobname.toc
\endgroup
}
%
\def\skipspaces#1{\def\PP{#1}\def\D{|}%
\ifx\PP\D\let\nextsp\relax
\else\let\nextsp\skipspaces
***************
*** 3176,3184 ****
\commondummies
}
! % For the aux file, @ is the escape character. So we want to redefine
! % everything using @ instead of \realbackslash. When everything uses
! % @, this will be simpler.
%
\def\atdummies{%
address@hidden@@}%
--- 3227,3236 ----
\commondummies
}
! % For the aux and toc files, @ is the escape character. So we want to
! % redefine everything using @ as the escape character (instead of
! % \realbackslash, still used for index files). When everything uses @,
! % this will be simpler.
%
\def\atdummies{%
address@hidden@@}%
***************
*** 4504,4514 ****
\fi
%
\iflinks
! \toks0 = {#2}%
! \toks2 = \expandafter{\lastnode}%
! \edef\temp{\write\tocfile{\realbackslash #1entry{\the\toks0}{#3}%
! {\the\toks2}{\noexpand\folio}}}%
! \temp
\fi
\fi
%
--- 4556,4566 ----
\fi
%
\iflinks
! {\atdummies \turnoffactive
! \edef\temp{%
! address@hidden
! \temp
! }
\fi
\fi
%
***************
*** 4521,4526 ****
--- 4573,4603 ----
\ifpdf \global\pdfmakepagedesttrue \fi
}
+
+ % These characters do not print properly in the Computer Modern roman
+ % fonts, so we must take special care. This is more or less redundant
+ % with the Texinfo input format setup at the end of this file.
+ %
+ \def\activecatcodes{%
+ \catcode`\"=\active
+ \catcode`\$=\active
+ \catcode`\<=\active
+ \catcode`\>=\active
+ \catcode`\\=\active
+ \catcode`\^=\active
+ \catcode`\_=\active
+ \catcode`\|=\active
+ \catcode`\~=\active
+ }
+
+
+ % Read the toc file, which is essentially Texinfo input.
+ \def\readtocfile{%
+ \setupdatafile
+ \activecatcodes
+ \input \jobname.toc
+ }
+
\newskip\contentsrightmargin \contentsrightmargin=1in
\newcount\savepageno
\newcount\lastnegativepageno \lastnegativepageno = -1
***************
*** 4542,4552 ****
%
\savepageno = \pageno
\begingroup % Set up to handle contents files properly.
! \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 address@hidden
! % We can't do this, because then an actual ^ in a section
! % title fails, e.g., @chapter ^ -- exponentiation. --karl, 9jul97.
! %\catcode`\^=7 % to see ^^e4 as \"a etc. address@hidden
! \raggedbottom % Worry more about breakpoints than the bottom.
\advance\hsize by -\contentsrightmargin % Don't use the full line length.
%
% Roman numerals for page numbers.
--- 4619,4625 ----
%
\savepageno = \pageno
\begingroup % Set up to handle contents files properly.
! \raggedbottom % Worry more about breakpoints than the bottom.
\advance\hsize by -\contentsrightmargin % Don't use the full line length.
%
% Roman numerals for page numbers.
***************
*** 4559,4565 ****
\startcontents{\putwordTOC}%
\openin 1 \jobname.toc
\ifeof 1 \else
! \input \jobname.toc
\fi
\vfill \eject
\contentsalignmacro % in case @setchapternewpage odd is in effect
--- 4632,4638 ----
\startcontents{\putwordTOC}%
\openin 1 \jobname.toc
\ifeof 1 \else
! \readtocfile
\fi
\vfill \eject
\contentsalignmacro % in case @setchapternewpage odd is in effect
***************
*** 4597,4603 ****
\let\unnsubsubsecentry = \numsecentry
\openin 1 \jobname.toc
\ifeof 1 \else
! \input \jobname.toc
\fi
\closein 1
\vfill \eject
--- 4670,4676 ----
\let\unnsubsubsecentry = \numsecentry
\openin 1 \jobname.toc
\ifeof 1 \else
! \readtocfile
\fi
\closein 1
\vfill \eject
***************
*** 5925,5931 ****
{%
\atdummies % preserve commands, but don't expand them
\turnoffactive
- \otherbackslash
\edef\writexrdef##1##2{%
address@hidden #1 of \setref, expanded by the \edef
##1}{##2}}% these are parameters of \writexrdef
--- 5998,6003 ----
***************
*** 5979,5991 ****
\ifpdf
\leavevmode
\getfilename{#4}%
! {\turnoffactive \otherbackslash
\ifnum\filenamelength>0
\startlink attr{/Border [0 0 0]}%
! goto file{\the\filename.pdf} name{#1}%
\else
\startlink attr{/Border [0 0 0]}%
! goto name{\pdfmkpgn{#1}}%
\fi
}%
\linkcolor
--- 6051,6067 ----
\ifpdf
\leavevmode
\getfilename{#4}%
! {\turnoffactive
! % See comments at \activebackslashdouble.
! {\activebackslashdouble \xdef\pdfxrefdest{#1}%
! \backslashparens\pdfxrefdest}%
! %
\ifnum\filenamelength>0
\startlink attr{/Border [0 0 0]}%
! goto file{\the\filename.pdf} name{\pdfxrefdest}%
\else
\startlink attr{/Border [0 0 0]}%
! goto name{\pdfmkpgn{\pdfxrefdest}}%
\fi
}%
\linkcolor
***************
*** 5999,6005 ****
% include an _ in the xref name, etc.
\indexnofonts
\turnoffactive
- \otherbackslash
\expandafter\global\expandafter\let\expandafter\Xthisreftitle
\csname XR#1-title\endcsname
}%
--- 6075,6080 ----
***************
*** 6034,6040 ****
% into the usual \leavevmode...\vrule stuff for purposes of
% printing. So we \turnoffactive for the \refx-snt, back on for the
% printing, back off for the \refx-pg.
! {\turnoffactive \otherbackslash
% Only output a following space if the -snt ref is nonempty; for
% @unnumbered and @anchor, it won't be.
\setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
--- 6109,6115 ----
% into the usual \leavevmode...\vrule stuff for purposes of
% printing. So we \turnoffactive for the \refx-snt, back on for the
% printing, back off for the \refx-pg.
! {\turnoffactive
% Only output a following space if the -snt ref is nonempty; for
% @unnumbered and @anchor, it won't be.
\setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
***************
*** 6047,6053 ****
,\space
%
% output the `page 3'.
! \turnoffactive \otherbackslash \putwordpage\tie\refx{#1-pg}{}%
\fi
\fi
\endlink
--- 6122,6128 ----
,\space
%
% output the `page 3'.
! \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
\fi
\fi
\endlink
***************
*** 6150,6162 ****
\def\tryauxfile{%
\openin 1 \jobname.aux
\ifeof 1 \else
! \readauxfile
\global\havexrefstrue
\fi
\closein 1
}
! \def\readauxfile{\begingroup
address@hidden
\catcode`\^^A=\other
\catcode`\^^B=\other
--- 6225,6237 ----
\def\tryauxfile{%
\openin 1 \jobname.aux
\ifeof 1 \else
! \readdatafile{aux}%
\global\havexrefstrue
\fi
\closein 1
}
! \def\setupdatafile{%
address@hidden
\catcode`\^^A=\other
\catcode`\^^B=\other
***************
*** 6225,6235 ****
%
% Make the characters 128-255 be printing characters.
{%
! \count 1=128
\def\loop{%
! \catcode\count 1=\other
! \advance\count 1 by 1
! \ifnum \count 1<256 \loop \fi
}%
}%
%
--- 6300,6310 ----
%
% Make the characters 128-255 be printing characters.
{%
! \count1=128
\def\loop{%
! \catcode\count1=\other
! \advance\count1 by 1
! \ifnum \count1<256 \loop \fi
}%
}%
%
***************
*** 6237,6246 ****
\catcode`\{=1
\catcode`\}=2
address@hidden
! %
! \input \jobname.aux
! \endgroup}
\message{insertions,}
% including footnotes.
--- 6312,6324 ----
\catcode`\{=1
\catcode`\}=2
address@hidden
! }
+ \def\readdatafile#1{%
+ \begingroup
+ \setupdatafile
+ \input\jobname.#1
+ \endgroup}
\message{insertions,}
% including footnotes.
***************
*** 6587,6593 ****
% \floatlabel-lof. Besides \floatident, we include the short
% caption if specified, else the full caption if specified, else
nothing.
{%
! \atdummies \turnoffactive \otherbackslash
% since we read the caption text in the macro world, where ^^M
% is turned into a normal character, we have to scan it back, so
% we don't write the literal three characters "^^M" into the aux file.
--- 6665,6671 ----
% \floatlabel-lof. Besides \floatident, we include the short
% caption if specified, else the full caption if specified, else
nothing.
{%
! \atdummies \turnoffactive
% since we read the caption text in the macro world, where ^^M
% is turned into a normal character, we have to scan it back, so
% we don't write the literal three characters "^^M" into the aux file.
***************
*** 7032,7039 ****
@address@hidden@address@hidden
}
! % \realbackslash is an actual character `\' with catcode other.
! {\catcode`\\=\other @address@hidden
% \normalbackslash outputs one backslash in fixed width font.
\def\normalbackslash{{\tt\backslashcurfont}}
--- 7110,7118 ----
@address@hidden@address@hidden
}
! % \realbackslash is an actual character `\' with catcode other, and
! % \doublebackslash is two of them (for the pdf outlines).
! {\catcode`\\=\other @address@hidden @address@hidden
% \normalbackslash outputs one backslash in fixed width font.
\def\normalbackslash{{\tt\backslashcurfont}}
***************
*** 7076,7082 ****
% On the other hand, perhaps the file did not have a `\input texinfo'. Then
% the first `\{ in the file would cause an error. This macro tries to fix
% that, assuming it is called before the first `\' could plausibly occur.
! % Also back turn on active characters that might appear in the input
% file name, in case not using a pre-dumped format.
%
@address@hidden
--- 7155,7161 ----
% On the other hand, perhaps the file did not have a `\input texinfo'. Then
% the first `\{ in the file would cause an error. This macro tries to fix
% that, assuming it is called before the first `\' could plausibly occur.
! % Also turn back on active characters that might appear in the input
% file name, in case not using a pre-dumped format.
%
@address@hidden
P ChangeLog
P NEWS
P doc/texinfo.tex
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- texinfo update (Sat Feb 19 19:22:01 EST 2005),
Karl Berry <=