1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-21 18:23:59 +00:00

Update from gnulib

This incorporates:
2016-08-17 maint: preprocessor changes to support z/OS
2016-08-17 string: rename to avoid '__string'
* doc/misc/texinfo.tex, lib/alloca.in.h, lib/string.in.h:
Copy from gnulib.
This commit is contained in:
Paul Eggert 2016-08-21 04:25:24 -07:00
parent 886b9ed80c
commit 1f7302563a
3 changed files with 252 additions and 197 deletions

View File

@ -3,7 +3,7 @@
% 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{2016-08-03.13} \def\texinfoversion{2016-08-16.20}
% %
% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
@ -1108,9 +1108,14 @@
% For LuaTeX % For LuaTeX
% %
\newif\iftxiuseunicodedestname
\txiuseunicodedestnamefalse % For pdfTeX etc.
\ifx\luatexversion\thisisundefined \ifx\luatexversion\thisisundefined
\else \else
% Escape PDF strings UTF-8 to UTF-16 % Use Unicode destination names
\txiuseunicodedestnametrue
% Escape PDF strings with converting UTF-16 from UTF-8
\begingroup \begingroup
\catcode`\%=12 \catcode`\%=12
\directlua{ \directlua{
@ -1138,7 +1143,24 @@
end end
} }
\endgroup \endgroup
\def\pdfescapestring#1{\directlua{UTF16oct('\luaescapestring{#1}')}} \def\pdfescapestrutfsixteen#1{\directlua{UTF16oct('\luaescapestring{#1}')}}
% Escape PDF strings without converting
\begingroup
\directlua{
function PDFescstr(str)
for c in string.bytes(str) do
if c <= 0x20 or c >= 0x80 or c == 0x28 or c == 0x29 or c == 0x5c then
tex.sprint(
string.format(string.char(0x5c) .. string.char(0x25) .. '03o',
c))
else
tex.sprint(string.char(c))
end
end
end
}
\endgroup
\def\pdfescapestring#1{\directlua{PDFescstr('\luaescapestring{#1}')}}
\ifnum\luatexversion>84 \ifnum\luatexversion>84
% For LuaTeX >= 0.85 % For LuaTeX >= 0.85
\def\pdfdest{\pdfextension dest} \def\pdfdest{\pdfextension dest}
@ -1199,6 +1221,14 @@
\xdef#1{\pdfescapestring{#1}}% \xdef#1{\pdfescapestring{#1}}%
\fi \fi
} }
\def\txiescapepdfutfsixteen#1{%
\ifx\pdfescapestrutfsixteen\thisisundefined
% No UTF-16 converting macro available.
\txiescapepdf{#1}%
\else
\xdef#1{\pdfescapestrutfsixteen{#1}}%
\fi
}
\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images \newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
with PDF output, and none of those formats could be found. (.eps cannot with PDF output, and none of those formats could be found. (.eps cannot
@ -1308,19 +1338,77 @@
\pdfrefximage \pdflastximage \pdfrefximage \pdflastximage
\fi} \fi}
% %
\def\pdfmkdest#1{{% \def\setpdfdestname#1{{%
% We have to set dummies so commands such as @code, and characters % We have to set dummies so commands such as @code, and characters
% such as \, aren't expanded when present in a section title. % such as \, aren't expanded when present in a section title.
\indexnofonts \indexnofonts
\makevalueexpandable \makevalueexpandable
\turnoffactive \turnoffactive
% Use ASCII approximations in destination names. \iftxiuseunicodedestname
\passthroughcharsfalse \ifx \declaredencoding \latone
% Pass through Latin-1 characters.
% LuaTeX with byte wise I/O converts Latin-1 characters to Unicode.
\else
\ifx \declaredencoding \utfeight
% Pass through Unicode characters.
\else
% Use ASCII approximations in destination names.
\passthroughcharsfalse
\fi
\fi
\else
% Use ASCII approximations in destination names.
\passthroughcharsfalse
\fi
\def\pdfdestname{#1}% \def\pdfdestname{#1}%
\txiescapepdf\pdfdestname \txiescapepdf\pdfdestname
\safewhatsit{\pdfdest name{\pdfdestname} xyz}%
}} }}
% %
\def\setpdfoutlinetext#1{{%
\indexnofonts
\makevalueexpandable
\turnoffactive
\ifx \declaredencoding \latone
% The PDF format can use an extended form of Latin-1 in bookmark
% strings. See Appendix D of the PDF Reference, Sixth Edition, for
% the "PDFDocEncoding".
\passthroughcharstrue
% Pass through Latin-1 characters.
% LuaTeX: Convert to Unicode
% pdfTeX: Use Latin-1 as PDFDocEncoding
\def\pdfoutlinetext{#1}%
\else
\ifx \declaredencoding \utfeight
\ifx\luatexversion\thisisundefined
% For pdfTeX with UTF-8.
% TODO: the PDF format can use UTF-16 in bookmark strings,
% but the code for this isn't done yet.
% Use ASCII approximations.
\passthroughcharsfalse
\def\pdfoutlinetext{#1}%
\else
% For LuaTeX with UTF-8.
% Pass through Unicode characters for title texts.
\passthroughcharstrue
\def\pdfoutlinetext{#1}%
\fi
\else
% For non-Latin-1 or non-UTF-8 encodings.
% Use ASCII approximations.
\passthroughcharsfalse
\def\pdfoutlinetext{#1}%
\fi
\fi
% LuaTeX: Convert to UTF-16
% pdfTeX: Use Latin-1 as PDFDocEncoding
\txiescapepdfutfsixteen\pdfoutlinetext
}}
%
\def\pdfmkdest#1{%
\setpdfdestname{#1}%
\safewhatsit{\pdfdest name{\pdfdestname} xyz}%
}
%
% used to mark target names; must be expandable. % used to mark target names; must be expandable.
\def\pdfmkpgn#1{#1} \def\pdfmkpgn#1{#1}
% %
@ -1348,36 +1436,13 @@
% page number. We could generate a destination for the section % page number. We could generate a destination for the section
% text in the case where a section has no node, but it doesn't % text in the case where a section has no node, but it doesn't
% seem worth the trouble, since most documents are normally structured. % seem worth the trouble, since most documents are normally structured.
{ \setpdfoutlinetext{#1}
\ifx\luatexversion\thisisundefined \else \setpdfdestname{#3}
\turnoffactive % LuaTeX can use Unicode strings for PDF \ifx\pdfdestname\empty
\fi \def\pdfdestname{#4}%
\edef\pdfoutlinedest{#3}% \fi
\ifx\pdfoutlinedest\empty %
\def\pdfoutlinedest{#4}% \pdfoutline goto name{\pdfmkpgn{\pdfdestname}}#2{\pdfoutlinetext}%
\else
\txiescapepdf\pdfoutlinedest
\fi
%
% Also escape PDF chars in the display string.
\bgroup
\ifx \declaredencoding \latone
% The PDF format can use an extended form of Latin-1 in bookmark
% strings. See Appendix D of the PDF Reference, Sixth Edition, for
% the "PDFDocEncoding".
\passthroughcharstrue
\fi
\ifx \declaredencoding \utfeight
% TODO: the PDF format can use UTF-16 in bookmark strings, but the
% code for this isn't done yet.
\fi
\globaldefs=1
\edef\pdfoutlinetext{#1}%
\txiescapepdf\pdfoutlinetext
\egroup
%
\pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
}
} }
% %
\def\pdfmakeoutlines{% \def\pdfmakeoutlines{%
@ -1535,7 +1600,6 @@
% %
% For XeTeX % For XeTeX
% %
\newif\iftxiuseunicodedestname
\ifx\XeTeXrevision\thisisundefined \ifx\XeTeXrevision\thisisundefined
\else \else
% %
@ -1608,44 +1672,51 @@
\def\pdfdest name#1 xyz{% \def\pdfdest name#1 xyz{%
\special{pdf:dest (#1) [@thispage /XYZ @xpos @ypos null]}% \special{pdf:dest (#1) [@thispage /XYZ @xpos @ypos null]}%
} }
\def\pdfmkdest#1{{% %
\def\setpdfdestname#1{{%
% We have to set dummies so commands such as @code, and characters % We have to set dummies so commands such as @code, and characters
% such as \, aren't expanded when present in a section title. % such as \, aren't expanded when present in a section title.
\indexnofonts \indexnofonts
\iftxiuseunicodedestname
\def\pdfdestname{#1}% Pass through Unicode characters.
\else
\edef\pdfdestname{#1}% Replace Unicode characters with ASCII.
\fi
\turnoffactive
\makevalueexpandable \makevalueexpandable
\turnoffactive
\iftxiuseunicodedestname
% Pass through Unicode characters.
\else
% Use ASCII approximations in destination names.
\passthroughcharsfalse
\fi
\def\pdfdestname{#1}%
\txiescapepdf\pdfdestname \txiescapepdf\pdfdestname
\safewhatsit{\pdfdest name{\pdfdestname} xyz}%
}} }}
% %
\def\setpdfoutlinetext#1{{%
\turnoffactive
% Always use Unicode characters in title texts.
\def\pdfoutlinetext{#1}%
% For XeTeX, xdvipdfmx converts to UTF-16.
% So we do not convert.
\txiescapepdf\pdfoutlinetext
}}
%
\def\pdfmkdest#1{%
\setpdfdestname{#1}%
\safewhatsit{\pdfdest name{\pdfdestname} xyz}%
}
%
% by default, use black for everything. % by default, use black for everything.
\def\urlcolor{\rgbBlack} \def\urlcolor{\rgbBlack}
\def\linkcolor{\rgbBlack} \def\linkcolor{\rgbBlack}
\def\endlink{\setcolor{\maincolor}\pdfendlink} \def\endlink{\setcolor{\maincolor}\pdfendlink}
% %
\def\dopdfoutline#1#2#3#4{% \def\dopdfoutline#1#2#3#4{%
\iftxiuseunicodedestname \setpdfoutlinetext{#1}
\def\pdfoutlinedest{#3}% Pass through Unicode characters. \setpdfdestname{#3}
\else \ifx\pdfdestname\empty
\edef\pdfoutlinedest{#3}% Replace Unicode characters with ASCII. \def\pdfdestname{#4}%
\fi \fi
\ifx\pdfoutlinedest\empty %
\def\pdfoutlinedest{#4}% \special{pdf:out [-] #2 << /Title (\pdfoutlinetext) /A
\fi << /S /GoTo /D (\pdfdestname) >> >> }%
{
\turnoffactive
\txiescapepdf\pdfoutlinedest
\edef\pdfoutlinetext{#1}%
\txiescapepdf\pdfoutlinetext
%
\special{pdf:out [-] #2 << /Title (\pdfoutlinetext) /A
<< /S /GoTo /D (\pdfoutlinedest) >> >> }%
}
} }
% %
\def\pdfmakeoutlines{% \def\pdfmakeoutlines{%
@ -4842,8 +4913,8 @@
\definedummyletter\ % \definedummyletter\ %
% %
% For texindex which always views { and } as separators. % For texindex which always views { and } as separators.
\def\{{\lbracechar}% \def\{{\lbracechar{}}%
\def\}{\rbracechar}% \def\}{\rbracechar{}}%
% %
% Do the redefinitions. % Do the redefinitions.
\definedummies \definedummies
@ -4927,6 +4998,7 @@
\definedummyword\TeX \definedummyword\TeX
% %
% Assorted special characters. % Assorted special characters.
\definedummyword\atchar
\definedummyword\arrow \definedummyword\arrow
\definedummyword\bullet \definedummyword\bullet
\definedummyword\comma \definedummyword\comma
@ -5143,37 +5215,40 @@
\def\LaTeX{LaTeX}% \def\LaTeX{LaTeX}%
\def\TeX{TeX}% \def\TeX{TeX}%
% %
% Assorted special characters. % Assorted special characters. \defglyph gives the control sequence a
% (The following {} will end up in the sort string, but that's ok.) % definition that removes the {} that follows its use.
\def\arrow{->}% \defglyph\atchar{@}%
\def\bullet{bullet}% \defglyph\arrow{->}%
\def\comma{,}% \defglyph\bullet{bullet}%
\def\copyright{copyright}% \defglyph\comma{,}%
\def\dots{...}% \defglyph\copyright{copyright}%
\def\enddots{...}% \defglyph\dots{...}%
\def\equiv{==}% \defglyph\enddots{...}%
\def\error{error}% \defglyph\equiv{==}%
\def\euro{euro}% \defglyph\error{error}%
\def\expansion{==>}% \defglyph\euro{euro}%
\def\geq{>=}% \defglyph\expansion{==>}%
\def\guillemetleft{<<}% \defglyph\geq{>=}%
\def\guillemetright{>>}% \defglyph\guillemetleft{<<}%
\def\guilsinglleft{<}% \defglyph\guillemetright{>>}%
\def\guilsinglright{>}% \defglyph\guilsinglleft{<}%
\def\leq{<=}% \defglyph\guilsinglright{>}%
\def\minus{-}% \defglyph\leq{<=}%
\def\point{.}% \defglyph\lbracechar{\{}%
\def\pounds{pounds}% \defglyph\minus{-}%
\def\print{-|}% \defglyph\point{.}%
\def\quotedblbase{"}% \defglyph\pounds{pounds}%
\def\quotedblleft{"}% \defglyph\print{-|}%
\def\quotedblright{"}% \defglyph\quotedblbase{"}%
\def\quoteleft{`}% \defglyph\quotedblleft{"}%
\def\quoteright{'}% \defglyph\quotedblright{"}%
\def\quotesinglbase{,}% \defglyph\quoteleft{`}%
\def\registeredsymbol{R}% \defglyph\quoteright{'}%
\def\result{=>}% \defglyph\quotesinglbase{,}%
\def\textdegree{o}% \defglyph\rbracechar{\}}%
\defglyph\registeredsymbol{R}%
\defglyph\result{=>}%
\defglyph\textdegree{o}%
% %
% We need to get rid of all macros, leaving only the arguments (if present). % 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. % Of course this is not nearly correct, but it is the best we can do for now.
@ -5188,6 +5263,7 @@
\macrolist \macrolist
\let\value\indexnofontsvalue \let\value\indexnofontsvalue
} }
\def\defglyph#1#2{\def#1##1{#2}} % see above
@ -5465,7 +5541,7 @@
\let\indexlbrace\{ % Likewise, set these sequences for braces \let\indexlbrace\{ % Likewise, set these sequences for braces
\let\indexrbrace\} % used in the sort key. \let\indexrbrace\} % used in the sort key.
\begindoublecolumns \begindoublecolumns
\let\entryorphanpenalty=\indexorphanpenalty \let\entrywidowpenalty=\indexwidowpenalty
% %
% Read input from the index file line by line. % Read input from the index file line by line.
\loopdo \loopdo
@ -5565,6 +5641,12 @@
% %
\def\entry{% \def\entry{%
\begingroup \begingroup
%
% For pdfTeX and XeTeX.
% The redefinition of \domark stops marks being added in \pdflink to
% preserve coloured links across page boundaries. Otherwise the marks
% would get in the way of \lastbox in \insertindexentrybox.
\let\domark\relax
% %
% Start a new paragraph if necessary, so our assignments below can't % Start a new paragraph if necessary, so our assignments below can't
% affect previous text. % affect previous text.
@ -5579,10 +5661,6 @@
\def\*{\unskip\space\ignorespaces}% \def\*{\unskip\space\ignorespaces}%
\def\entrybreak{\hfil\break}% An undocumented command \def\entrybreak{\hfil\break}% An undocumented command
% %
% A bit of stretch before each entry for the benefit of balancing
% columns.
\vskip 0pt plus0.5pt
%
% Swallow the left brace of the text (first parameter): % Swallow the left brace of the text (first parameter):
\afterassignment\doentry \afterassignment\doentry
\let\temp = \let\temp =
@ -5616,20 +5694,13 @@
% %
\ifpdf \ifpdf
\pdfgettoks#1.% \pdfgettoks#1.%
\bgroup\let\domark\relax \hskip\skip\thinshrinkable\the\toksA
\hskip\skip\thinshrinkable\the\toksA
\egroup
% The redefinion of \domark stops marks being added in \pdflink to
% preserve coloured links across page boundaries. Otherwise the marks
% would get in the way of \lastbox in \insertindexentrybox.
\else \else
\ifx\XeTeXrevision\thisisundefined \ifx\XeTeXrevision\thisisundefined
\hskip\skip\thinshrinkable #1% \hskip\skip\thinshrinkable #1%
\else \else
\pdfgettoks#1.% \pdfgettoks#1.%
\bgroup\let\domark\relax \hskip\skip\thinshrinkable\the\toksA
\hskip\skip\thinshrinkable\the\toksA
\egroup
\fi \fi
\fi \fi
\fi \fi
@ -5638,11 +5709,10 @@
\global\setbox\entryindexbox=\vbox{\unhbox\boxA}% \global\setbox\entryindexbox=\vbox{\unhbox\boxA}%
\else \else
\global\setbox\entryindexbox=\vbox\bgroup \global\setbox\entryindexbox=\vbox\bgroup
\prevdepth=\entrylinedepth
\noindent
% We want the text of the entries to be aligned to the left, and the % We want the text of the entries to be aligned to the left, and the
% page numbers to be aligned to the right. % page numbers to be aligned to the right.
% %
\parindent = 0pt
\advance\leftskip by 0pt plus 1fil \advance\leftskip by 0pt plus 1fil
\advance\leftskip by 0pt plus -1fill \advance\leftskip by 0pt plus -1fill
\rightskip = 0pt plus -1fil \rightskip = 0pt plus -1fil
@ -5651,8 +5721,6 @@
% if the list of page numbers is long, to be aligned to the right. % if the list of page numbers is long, to be aligned to the right.
\parfillskip=0pt plus -1fill \parfillskip=0pt plus -1fill
% %
\hangindent=1em
%
\advance\rightskip by \entryrightmargin \advance\rightskip by \entryrightmargin
% Determine how far we can stretch into the margin. % Determine how far we can stretch into the margin.
% This allows, e.g., "Appendix H GNU Free Documentation License" to % This allows, e.g., "Appendix H GNU Free Documentation License" to
@ -5672,17 +5740,21 @@
\ifdim\dimen@ > 0.8\dimen@ii % due to long index text \ifdim\dimen@ > 0.8\dimen@ii % due to long index text
\dimen@ = 0.7\dimen@ % Try to split the text roughly evenly \dimen@ = 0.7\dimen@ % Try to split the text roughly evenly
\dimen@ii = \hsize \dimen@ii = \hsize
\advance \dimen@ii by -1em
\ifnum\dimen@>\dimen@ii \ifnum\dimen@>\dimen@ii
% If the entry is too long, use the whole line % If the entry is too long, use the whole line
\dimen@ = \dimen@ii \dimen@ = \dimen@ii
\fi \fi
\advance\leftskip by 0pt plus 1fill % ragged right \advance\leftskip by 0pt plus 1fill % ragged right
\advance \dimen@ by 1\rightskip \advance \dimen@ by 1\rightskip
\parshape = 2 0pt \dimen@ 1em \dimen@ii \parshape = 2 0pt \dimen@ 0em \dimen@ii
% Ideally we'd add a finite glue at the end of the first line only, but % Ideally we'd add a finite glue at the end of the first line only,
% TeX doesn't seem to provide a way to do such a thing. % instead of using \parshape with explicit line lengths, but TeX
% doesn't seem to provide a way to do such a thing.
%
\leftskip = 1em
\parindent = -1em
\fi\fi \fi\fi
\indent % start paragraph
\unhbox\boxA \unhbox\boxA
% %
% Do not prefer a separate line ending with a hyphen to fewer lines. % Do not prefer a separate line ending with a hyphen to fewer lines.
@ -5700,7 +5772,7 @@
\endgroup \endgroup
% delay text of entry until after penalty % delay text of entry until after penalty
\bgroup\aftergroup\insertindexentrybox \bgroup\aftergroup\insertindexentrybox
\entryorphanpenalty \entrywidowpenalty
}} }}
\newskip\thinshrinkable \newskip\thinshrinkable
@ -5708,40 +5780,43 @@
\newbox\entryindexbox \newbox\entryindexbox
\def\insertindexentrybox{% \def\insertindexentrybox{%
\copy\entryindexbox \ourunvbox\entryindexbox
% The following gets the depth of the last box. This is for even
% line spacing when entries span several lines.
\setbox\dummybox\vbox{%
\unvbox\entryindexbox
\nointerlineskip
\lastbox
\global\entrylinedepth=\prevdepth
}%
% Note that we couldn't simply \unvbox\entryindexbox followed by
% \nointerlineskip\lastbox to remove the last box and then reinstate it,
% because this resets how far the box has been \moveleft'ed to 0. \unvbox
% doesn't affect \prevdepth either.
} }
\newdimen\entrylinedepth
% Use \lastbox to take apart vbox box by box, and add each sub-box
% to the current vertical list.
\def\ourunvbox#1{%
\bgroup % for local binding of \delayedbox
% Remove the last box from box #1
\global\setbox#1=\vbox{%
\unvbox#1%
\unskip % remove any glue
\unpenalty
\global\setbox\interbox=\lastbox
}%
\setbox\delayedbox=\box\interbox
\ifdim\ht#1=0pt\else
\ourunvbox#1 % Repeat on what's left of the box
\nobreak
\fi
\box\delayedbox
\egroup
}
\newbox\delayedbox
\newbox\interbox
% Default is no penalty % Default is no penalty
\let\entryorphanpenalty\egroup \let\entrywidowpenalty\egroup
% Used from \printindex. \firsttoken should be the first token % Used from \printindex. \firsttoken should be the first token
% after the \entry. If it's not another \entry, we are at the last % after the \entry. If it's not another \entry, we are at the last
% line of a group of index entries, so insert a penalty to discourage % line of a group of index entries, so insert a penalty to discourage
% orphaned index entries. % widowed index entries.
\long\def\indexorphanpenalty{% \long\def\indexwidowpenalty{%
\def\isentry{\entry}% \def\isentry{\entry}%
\ifx\firsttoken\isentry \ifx\firsttoken\isentry
\else \else
\unskip\penalty 9000 \penalty 9000
% The \unskip here stops breaking before the glue. It relies on the
% \vskip above being there, otherwise there is an error
% "You can't use `\unskip' in vertical mode". There has to be glue
% in the current vertical list that hasn't been added to the
% "current page". See Chapter 24 of the TeXbook. This contradicts
% Section 8.3.7 in "TeX by Topic," though.
\fi \fi
\egroup % now comes the box added with \aftergroup \egroup % now comes the box added with \aftergroup
} }
@ -5781,8 +5856,6 @@
\newbox\partialpage \newbox\partialpage
\newdimen\doublecolumnhsize \newdimen\doublecolumnhsize
\newdimen\doublecolumntopgap
\doublecolumntopgap = 0pt
% Use inside an output routine to save \topmark and \firstmark % Use inside an output routine to save \topmark and \firstmark
\def\savemarks{% \def\savemarks{%
@ -5865,12 +5938,10 @@
% %
% 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.)
\global\doublecolumntopgap = \topskip
\global\advance\doublecolumntopgap by -1\baselineskip
\advance\vsize by -1\doublecolumntopgap
\vsize = 2\vsize \vsize = 2\vsize
\topskip=0pt %
\global\entrylinedepth=0pt\relax % For the benefit of balancing columns
\advance\baselineskip by 0pt plus 0.5pt
} }
% The double-column output routine for all double-column pages except % The double-column output routine for all double-column pages except
@ -5900,9 +5971,7 @@
% %
\hsize = \doublecolumnhsize \hsize = \doublecolumnhsize
\wd0=\hsize \wd2=\hsize \wd0=\hsize \wd2=\hsize
\vbox{% \hbox to\txipagewidth{\box0\hfil\box2}%
\vskip\doublecolumntopgap
\hbox to\txipagewidth{\box0\hfil\box2}}%
} }
@ -5982,10 +6051,6 @@
\loop \loop
\global\setbox3 = \copy0 \global\setbox3 = \copy0
\global\setbox1 = \vsplit3 to \dimen@ \global\setbox1 = \vsplit3 to \dimen@
% Remove glue from bottom of columns to compare
% apparent heights.
\global\setbox1 = \vbox{\unvbox1\unpenalty\unskip}%
\global\setbox3 = \vbox{\unvbox3\unpenalty\unskip}%
\ifdim\ht1<\ht3 \ifdim\ht1<\ht3
\global\advance\dimen@ by 1pt \global\advance\dimen@ by 1pt
\repeat \repeat
@ -5998,8 +6063,8 @@
% Just split the last of the double column material roughly in half. % Just split the last of the double column material roughly in half.
\setbox2=\box0 \setbox2=\box0
\setbox0 = \vsplit2 to \dimen@ii \setbox0 = \vsplit2 to \dimen@ii
\setbox0=\vbox to\dimen@ii{\unvbox0}% \setbox0=\vbox to \dimen@ii {\unvbox0\vfill}%
\setbox2=\vbox to\dimen@ii{\unvbox2}% \setbox2=\vbox to \dimen@ii {\unvbox2\vfill}%
\else \else
% Compare the heights of the two columns. % Compare the heights of the two columns.
\ifdim4\ht1>5\ht3 \ifdim4\ht1>5\ht3
@ -6009,8 +6074,8 @@
\setbox0=\vbox to \ht1 {\unvbox1\vfill}% \setbox0=\vbox to \ht1 {\unvbox1\vfill}%
\else \else
% Make column bottoms flush with each other. % Make column bottoms flush with each other.
\setbox0=\vbox to\dimen@{\unvbox1}% \setbox2=\vbox to\ht1{\unvbox3\unskip}%
\setbox2=\vbox to\dimen@{\unvbox3}% \setbox0=\vbox to\ht1{\unvbox1\unskip}%
\fi \fi
\fi \fi
\fi \fi
@ -8846,32 +8911,26 @@
% For pdfTeX and LuaTeX % For pdfTeX and LuaTeX
{\indexnofonts {\indexnofonts
\makevalueexpandable \makevalueexpandable
%
% This (wrongly) does not take account of leading or trailing
% spaces in #1, which should be ignored.
\ifx\luatexversion\thisisundefined
\edef\pdfxrefdest{#1}% pdfTeX: Replace Unicode characters with ASCII.
\else
\def\pdfxrefdest{#1}% LuaTeX: Pass through Unicode characters.
\fi
\turnoffactive \turnoffactive
% This expands tokens, so do it after making catcode changes, so _ % This expands tokens, so do it after making catcode changes, so _
% etc. don't get their TeX definitions. This ignores all spaces in % etc. don't get their TeX definitions. This ignores all spaces in
% #4, including (wrongly) those in the middle of the filename. % #4, including (wrongly) those in the middle of the filename.
\getfilename{#4}% \getfilename{#4}%
% %
\ifx\pdfxrefdest\empty % This (wrongly) does not take account of leading or trailing
\def\pdfxrefdest{Top}% no empty targets % spaces in #1, which should be ignored.
\else \setpdfdestname{#1}%
\txiescapepdf\pdfxrefdest % escape PDF special chars %
\ifx\pdfdestname\empty
\def\pdfdestname{Top}% no empty targets
\fi \fi
% %
\leavevmode \leavevmode
\startlink attr{/Border [0 0 0]}% \startlink attr{/Border [0 0 0]}%
\ifnum\filenamelength>0 \ifnum\filenamelength>0
goto file{\the\filename.pdf} name{\pdfxrefdest}% goto file{\the\filename.pdf} name{\pdfdestname}%
\else \else
goto name{\pdfmkpgn{\pdfxrefdest}}% goto name{\pdfmkpgn{\pdfdestname}}%
\fi \fi
}% }%
\setcolor{\linkcolor}% \setcolor{\linkcolor}%
@ -8881,24 +8940,18 @@
% For XeTeX % For XeTeX
{\indexnofonts {\indexnofonts
\makevalueexpandable \makevalueexpandable
%
% This (wrongly) does not take account of leading or trailing
% spaces in #1, which should be ignored.
\iftxiuseunicodedestname
\def\pdfxrefdest{#1}% Pass through Unicode characters.
\else
\edef\pdfxrefdest{#1}% Replace Unicode characters with ASCII.
\fi
\turnoffactive \turnoffactive
% This expands tokens, so do it after making catcode changes, so _ % This expands tokens, so do it after making catcode changes, so _
% etc. don't get their TeX definitions. This ignores all spaces in % etc. don't get their TeX definitions. This ignores all spaces in
% #4, including (wrongly) those in the middle of the filename. % #4, including (wrongly) those in the middle of the filename.
\getfilename{#4}% \getfilename{#4}%
% %
\ifx\pdfxrefdest\empty % This (wrongly) does not take account of leading or trailing
\def\pdfxrefdest{Top}% no empty targets % spaces in #1, which should be ignored.
\else \setpdfdestname{#1}%
\txiescapepdf\pdfxrefdest % escape PDF special chars %
\ifx\pdfdestname\empty
\def\pdfdestname{Top}% no empty targets
\fi \fi
% %
\leavevmode \leavevmode
@ -8912,10 +8965,10 @@
% this command line option is no longer necessary % this command line option is no longer necessary
% because we can use the `dvipdfmx:config' special. % because we can use the `dvipdfmx:config' special.
\special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A \special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A
<< /S /GoToR /F (\the\filename.pdf) /D (\pdfxrefdest) >> >>}% << /S /GoToR /F (\the\filename.pdf) /D (\pdfdestname) >> >>}%
\else \else
\special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A \special{pdf:bann << /Border [0 0 0] /Type /Annot /Subtype /Link /A
<< /S /GoTo /D (\pdfxrefdest) >> >>}% << /S /GoTo /D (\pdfdestname) >> >>}%
\fi \fi
}% }%
\setcolor{\linkcolor}% \setcolor{\linkcolor}%
@ -9975,7 +10028,7 @@
\ifx \declaredencoding \ascii \ifx \declaredencoding \ascii
\else \else
\message{Warning: XeTeX with non-UTF-8 encodings cannot handle % \message{Warning: XeTeX with non-UTF-8 encodings cannot handle %
non-ASCII characters in auxiallity files.}% non-ASCII characters in auxiliary files.}%
\fi \fi
\fi \fi
\fi \fi

View File

@ -51,6 +51,8 @@ extern "C"
void *_alloca (unsigned short); void *_alloca (unsigned short);
# pragma intrinsic (_alloca) # pragma intrinsic (_alloca)
# define alloca _alloca # define alloca _alloca
# elif defined __MVS__
# include <stdlib.h>
# else # else
# include <stddef.h> # include <stddef.h>
# ifdef __cplusplus # ifdef __cplusplus

View File

@ -416,15 +416,15 @@ _GL_WARN_ON_USE (strncat, "strncat is unportable - "
# undef strndup # undef strndup
# define strndup rpl_strndup # define strndup rpl_strndup
# endif # endif
_GL_FUNCDECL_RPL (strndup, char *, (char const *__string, size_t __n) _GL_FUNCDECL_RPL (strndup, char *, (char const *__s, size_t __n)
_GL_ARG_NONNULL ((1))); _GL_ARG_NONNULL ((1)));
_GL_CXXALIAS_RPL (strndup, char *, (char const *__string, size_t __n)); _GL_CXXALIAS_RPL (strndup, char *, (char const *__s, size_t __n));
# else # else
# if ! @HAVE_DECL_STRNDUP@ # if ! @HAVE_DECL_STRNDUP@
_GL_FUNCDECL_SYS (strndup, char *, (char const *__string, size_t __n) _GL_FUNCDECL_SYS (strndup, char *, (char const *__s, size_t __n)
_GL_ARG_NONNULL ((1))); _GL_ARG_NONNULL ((1)));
# endif # endif
_GL_CXXALIAS_SYS (strndup, char *, (char const *__string, size_t __n)); _GL_CXXALIAS_SYS (strndup, char *, (char const *__s, size_t __n));
# endif # endif
_GL_CXXALIASWARN (strndup); _GL_CXXALIASWARN (strndup);
#elif defined GNULIB_POSIXCHECK #elif defined GNULIB_POSIXCHECK
@ -444,17 +444,17 @@ _GL_WARN_ON_USE (strndup, "strndup is unportable - "
# undef strnlen # undef strnlen
# define strnlen rpl_strnlen # define strnlen rpl_strnlen
# endif # endif
_GL_FUNCDECL_RPL (strnlen, size_t, (char const *__string, size_t __maxlen) _GL_FUNCDECL_RPL (strnlen, size_t, (char const *__s, size_t __maxlen)
_GL_ATTRIBUTE_PURE _GL_ATTRIBUTE_PURE
_GL_ARG_NONNULL ((1))); _GL_ARG_NONNULL ((1)));
_GL_CXXALIAS_RPL (strnlen, size_t, (char const *__string, size_t __maxlen)); _GL_CXXALIAS_RPL (strnlen, size_t, (char const *__s, size_t __maxlen));
# else # else
# if ! @HAVE_DECL_STRNLEN@ # if ! @HAVE_DECL_STRNLEN@
_GL_FUNCDECL_SYS (strnlen, size_t, (char const *__string, size_t __maxlen) _GL_FUNCDECL_SYS (strnlen, size_t, (char const *__s, size_t __maxlen)
_GL_ATTRIBUTE_PURE _GL_ATTRIBUTE_PURE
_GL_ARG_NONNULL ((1))); _GL_ARG_NONNULL ((1)));
# endif # endif
_GL_CXXALIAS_SYS (strnlen, size_t, (char const *__string, size_t __maxlen)); _GL_CXXALIAS_SYS (strnlen, size_t, (char const *__s, size_t __maxlen));
# endif # endif
_GL_CXXALIASWARN (strnlen); _GL_CXXALIASWARN (strnlen);
#elif defined GNULIB_POSIXCHECK #elif defined GNULIB_POSIXCHECK