summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2015-12-22 02:14:52 +0000
committerKarl Berry <karl@freefriends.org>2015-12-22 02:14:52 +0000
commit3c29385b53c3b33157aa98c689c4685adc500ef9 (patch)
tree20fb5fe5ae40a520bb745083d5d0c365d0e21fdc /Master
parent7299ab4c17ea98e8c232c8abe8df9fd4e9105897 (diff)
/home/texlive/karl/Master/tlpkg/bin/tl-update-auto
git-svn-id: svn://tug.org/texlive/trunk@39168 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/doc.html4
-rw-r--r--Master/texmf-dist/tex/texinfo/texinfo.tex739
2 files changed, 512 insertions, 231 deletions
diff --git a/Master/doc.html b/Master/doc.html
index 8e3616275a2..d12ace3606b 100644
--- a/Master/doc.html
+++ b/Master/doc.html
@@ -8662,9 +8662,13 @@ Set of slide fonts based on CM
A preprocessor for pmx
<a href="texmf-dist/doc/generic/m-tx/halleluja.pdf">halleluja.pdf</a>,
<a href="texmf-dist/doc/generic/m-tx/kanons.pdf">kanons.pdf</a>,
+<a href="texmf-dist/doc/generic/m-tx/m-tx.html">m-tx.html</a>,
<a href="texmf-dist/doc/generic/m-tx/mtx-install.pdf">mtx-install.pdf</a>,
+<a href="texmf-dist/doc/generic/m-tx/mtx060.pdf">mtx060.pdf</a>,
<a href="texmf-dist/doc/generic/m-tx/mtxdoc.pdf">mtxdoc.pdf</a>,
+<a href="texmf-dist/doc/generic/m-tx/prepmx.html">prepmx.html</a>,
<a href="texmf-dist/doc/generic/m-tx/prepmx.pdf">prepmx.pdf</a>,
+<a href="texmf-dist/doc/man/man1/m-tx.man1.pdf">m-tx.man1.pdf</a>,
<a href="texmf-dist/doc/man/man1/prepmx.man1.pdf">prepmx.man1.pdf</a>.
</small></li>
diff --git a/Master/texmf-dist/tex/texinfo/texinfo.tex b/Master/texmf-dist/tex/texinfo/texinfo.tex
index b5ebbcfafeb..34fd353a9dc 100644
--- a/Master/texmf-dist/tex/texinfo/texinfo.tex
+++ b/Master/texmf-dist/tex/texinfo/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{2015-10-21.19}
+\def\texinfoversion{2015-12-17.20}
%
% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
@@ -158,22 +158,10 @@
\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi
\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi
-% Since the category of space is not known, we have to be careful.
-\chardef\spacecat = 10
-\def\spaceisspace{\catcode`\ =\spacecat}
+% Give the space character the catcode for a space.
+\def\spaceisspace{\catcode`\ =10\relax}
-% sometimes characters are active, so we need control sequences.
-\chardef\ampChar = `\&
-\chardef\colonChar = `\:
-\chardef\commaChar = `\,
\chardef\dashChar = `\-
-\chardef\dotChar = `\.
-\chardef\exclamChar= `\!
-\chardef\hashChar = `\#
-\chardef\lquoteChar= `\`
-\chardef\questChar = `\?
-\chardef\rquoteChar= `\'
-\chardef\semiChar = `\;
\chardef\slashChar = `\/
\chardef\underChar = `\_
@@ -271,11 +259,18 @@
%
% Another complication is to let the user choose whether \thischapter
% (\thissection) refers to the chapter (section) in effect at the top
-% of a page, or that at the bottom of a page. The solution is
-% described on page 260 of The TeXbook. It involves outputting two
-% marks for the sectioning macros, one before the section break, and
-% one after. I won't pretend I can describe this better than DEK...
-%
+% of a page, or that at the bottom of a page.
+
+% \domark is called twice inside \chapmacro, to add one
+% mark before the section break, and one after.
+% In the second call \prevchapterdefs is the same as \lastchapterdefs,
+% and \prevsectiondefs is the same as \lastsectiondefs.
+% Then if the page is not broken at the mark, some of the previous
+% section appears on the page, and we can get the name of this section
+% from \firstmark for @everyheadingmarks top.
+% @everyheadingmarks bottom uses \botmark.
+%
+% See page 260 of The TeXbook.
\def\domark{%
\toks0=\expandafter{\lastchapterdefs}%
\toks2=\expandafter{\lastsectiondefs}%
@@ -283,13 +278,14 @@
\toks6=\expandafter{\prevsectiondefs}%
\toks8=\expandafter{\lastcolordefs}%
\mark{%
- \the\toks0 \the\toks2 % 0: top marks (\last...)
- \noexpand\or \the\toks4 \the\toks6 % 1: bottom marks (default, \prev...)
+ \the\toks0 \the\toks2 % 0: marks for @everyheadingmarks top
+ \noexpand\or \the\toks4 \the\toks6 % 1: for @everyheadingmarks bottom
\noexpand\else \the\toks8 % 2: color marks
}%
}
-% \gettopheadingmarks, \getbottomheadingmarks - extract needed part of mark.
+% \gettopheadingmarks, \getbottomheadingmarks,
+% \getcolormarks - extract needed part of mark.
%
% \topmark doesn't work for the very first chapter (after the title
% page or the contents), so we use \firstmark there -- this gets us
@@ -345,28 +341,21 @@
% values in \headline and \footline.
%
% This is used to check if we are on the first page of a chapter.
- \ifcase0\topmark\fi
- \ifx\thischapter\empty
- % See comment for \gettopheadingmarks
- \ifcase0\firstmark\fi
- \let\curchaptername\thischaptername
- \ifcase1\firstmark\fi
- \let\prevchaptername\thischaptername
- \else
- \let\curchaptername\thischaptername
- \ifcase1\topmark\fi
- \let\prevchaptername\thischaptername
- \fi
+ \ifcase1\topmark\fi
+ \let\prevchaptername\thischaptername
+ \ifcase0\firstmark\fi
+ \let\curchaptername\thischaptername
%
\ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
\ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
%
\ifx\curchaptername\prevchaptername
+ \let\thischapterheading\thischapter
\else
- % If on the first page of a chapter, clear @thischapter so it
- % doesn't appear in the headline, because the chapter is already
- % shown in the chapter heading.
- \def\thischapter{}%
+ % \thischapterheading is the same as \thischapter except it is blank
+ % for the first page of a chapter. This is to prevent the chapter name
+ % being shown twice.
+ \def\thischapterheading{}%
\fi
%
\global\setbox\headlinebox = \vbox{\commmonheadfootline \makeheadline}%
@@ -1164,8 +1153,8 @@ output) for that.)}
\def\rgbDarkRed{0.50 0.09 0.12}
\def\rgbBlack{0 0 0}
%
- % k sets the color for filling (usual text, etc.);
- % K sets the color for stroking (thin rules, e.g., normal _'s).
+ % rg sets the color for filling (usual text, etc.);
+ % RG sets the color for stroking (thin rules, e.g., normal _'s).
\def\pdfsetcolor#1{\pdfliteral{#1 rg #1 RG}}
%
% Set color, and create a mark which defines \thiscolor accordingly,
@@ -1416,7 +1405,6 @@ output) for that.)}
\normalturnoffactive
\def\@{@}%
\let\/=\empty
- \let\xprocessmacroarg=\eatspaces % in case we are in a macro expansion
\makevalueexpandable
% do we want to go so far as to use \indexnofonts instead of just
% special-casing \var here?
@@ -2452,8 +2440,8 @@ end
%
\catcode`@=11
\def\plainfrenchspacing{%
- \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
- \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m
+ \sfcode`\.=\@m \sfcode`\?=\@m \sfcode`\!=\@m
+ \sfcode`\:=\@m \sfcode`\;=\@m \sfcode`\,=\@m
\def\endofsentencespacefactor{1000}% for @. and friends
}
\def\plainnonfrenchspacing{%
@@ -2641,9 +2629,9 @@ end
% Allow line breaks around only a few characters (only).
\def\urefcatcodes{%
- \catcode\ampChar=\active \catcode\dotChar=\active
- \catcode\hashChar=\active \catcode\questChar=\active
- \catcode\slashChar=\active
+ \catcode`\&=\active \catcode`\.=\active
+ \catcode`\#=\active \catcode`\?=\active
+ \catcode`\/=\active
}
{
\urefcatcodes
@@ -2852,23 +2840,24 @@ end
\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
%
\def\math{%
- \tex
- \mathunderscore
- \let\\ = \mathbackslash
- \mathactive
- % make the texinfo accent commands work in math mode
- \let\"=\ddot
- \let\'=\acute
- \let\==\bar
- \let\^=\hat
- \let\`=\grave
- \let\u=\breve
- \let\v=\check
- \let\~=\tilde
- \let\dotaccent=\dot
- % have to provide another name for sup operator
- \let\mathopsup=\sup
- $\finishmath
+ \ifmmode\else % only go into math if not in math mode already
+ \tex
+ \mathunderscore
+ \let\\ = \mathbackslash
+ \mathactive
+ % make the texinfo accent commands work in math mode
+ \let\"=\ddot
+ \let\'=\acute
+ \let\==\bar
+ \let\^=\hat
+ \let\`=\grave
+ \let\u=\breve
+ \let\v=\check
+ \let\~=\tilde
+ \let\dotaccent=\dot
+ % have to provide another name for sup operator
+ \let\mathopsup=\sup
+ $\expandafter\finishmath\fi
}
\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex.
@@ -3517,7 +3506,7 @@ end
\global\evenfootline={\hfil}
\global\oddfootline={\hfil}
\global\evenheadline={\line{\folio\hfil\thistitle}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapterheading\hfil\folio}}
\global\let\contentsalignmacro = \chapoddpage
}
\let\contentsalignmacro = \chappager
@@ -3528,8 +3517,8 @@ end
\global\pageno=1
\global\evenfootline={\hfil}
\global\oddfootline={\hfil}
-\global\evenheadline={\line{\thischapter\hfil\folio}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\evenheadline={\line{\thischapterheading\hfil\folio}}
+\global\oddheadline={\line{\thischapterheading\hfil\folio}}
\global\let\contentsalignmacro = \chappager
}
\def\HEADINGSon{\HEADINGSdouble}
@@ -3540,7 +3529,7 @@ end
\global\evenfootline={\hfil}
\global\oddfootline={\hfil}
\global\evenheadline={\line{\folio\hfil\thistitle}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapterheading\hfil\folio}}
\global\let\contentsalignmacro = \chapoddpage
}
@@ -3548,8 +3537,8 @@ end
\def\HEADINGSsinglex{%
\global\evenfootline={\hfil}
\global\oddfootline={\hfil}
-\global\evenheadline={\line{\thischapter\hfil\folio}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\evenheadline={\line{\thischapterheading\hfil\folio}}
+\global\oddheadline={\line{\thischapterheading\hfil\folio}}
\global\let\contentsalignmacro = \chappager
}
@@ -4676,16 +4665,6 @@ end
\definedummyword\verb
\definedummyword\w
\definedummyword\xref
- %
- % Consider:
- % @macro mkind{arg1,arg2}
- % @cindex \arg2\
- % @end macro
- % @mkind{foo, bar}
- % The space after the comma will end up in the temporary definition
- % that we make for arg2 (see \parsemargdef ff.). We want all this to be
- % expanded for the sake of the index, so we end up just seeing "bar".
- \let\xprocessmacroarg\eatspaces
}
% For testing: output @{ and @} in index sort strings as \{ and \}.
@@ -5212,23 +5191,19 @@ end
% from @* into spaces. The user might give these in long section
% titles, for instance.
\def\*{\unskip\space\ignorespaces}%
- \def\entrybreak{\hfil\break}%
+ \def\entrybreak{\hfil\break}% An undocumented command
%
% A bit of stretch before each entry for the benefit of balancing
% columns.
\vskip 0pt plus0.5pt
%
- % Badness calculation for paragraph affected by -
- % How much \indexdotfill is stretched, or how much \parfillskip is shrunk
- % Number of lines (\linepenalty)
- %
% Swallow the left brace of the text (first parameter):
\afterassignment\doentry
\let\temp =
}
\def\entrybreak{\unskip\space\ignorespaces}%
\def\doentry{%
- % Save the text of the entry in a \vtop.
+ % Save the text of the entry
\global\setbox\boxA=\hbox\bgroup
\bgroup % Instead of the swallowed brace.
\noindent
@@ -5244,10 +5219,9 @@ end
\global\setbox\boxA=\hbox\bgroup\unhbox\boxA
% #1 is the page number.
%
- % The following is kludged to not output a line of dots in the index if
- % there are no page numbers. The next person who breaks this will be
- % cursed by a Unix daemon.
- \setbox\boxB = \hbox{#1}%
+ % Get the width of the page numbers, and only use
+ % leaders if they are present.
+ \global\setbox\boxB = \hbox{#1}%
\ifdim\wd\boxB = 0pt
\null\nobreak\hfill\ %
\else
@@ -5256,62 +5230,80 @@ end
%
\ifpdf
\pdfgettoks#1.%
- \hskip\skip\thinshrinkable\the\toksA
+ \bgroup\let\domark\relax
+ \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
\hskip\skip\thinshrinkable #1%
\fi
\fi
\egroup % end \boxA
- \global\setbox\entryindexbox=\vtop\bgroup\noindent
- % We want the text of the entries to be aligned to the left, and the
- % page numbers to be aligned to the right.
- %
- \advance\leftskip by 0pt plus 1fil
- \advance\leftskip by 0pt plus -1fill
- \rightskip = 0pt plus -1fil
- \advance\rightskip by 0pt plus 1fill
- % Cause last line, which could consist of page numbers on their own if the
- % list of page numbers is long, to be aligned to the right.
- \parfillskip=0pt plus -1fill
- %
- \hangindent=1em
- %
- \advance\rightskip by \entryrightmargin
- % Determine how far we can stretch into the margin.
- % This allows, e.g., "Appendix H GNU Free Documentation License" to fit
- % on one line.
- \advance \parfillskip by 0pt minus .6\entryrightmargin
- %
- \ifdim\wd\boxA > \hsize % If the entry doesn't fit in one line
- \ifdim\dimen@ > 0.9\hsize % due to long index text
- \dimen@ = 0.6\dimen@ % Try to split the text roughly evenly
- \dimen@ii = \hsize
- \advance \dimen@ii by -1em
- \ifnum\dimen@>\dimen@ii
- % If the entry is too long, use the whole line
- \dimen@ = \dimen@ii
+ \ifdim\wd\boxB = 0pt
+ \global\setbox\entryindexbox=\vbox{\unhbox\boxA}%
+ \else
+ \global\setbox\entryindexbox=\vbox\bgroup
+ \prevdepth=\entrylinedepth
+ \noindent
+ % We want the text of the entries to be aligned to the left, and the
+ % page numbers to be aligned to the right.
+ %
+ \advance\leftskip by 0pt plus 1fil
+ \advance\leftskip by 0pt plus -1fill
+ \rightskip = 0pt plus -1fil
+ \advance\rightskip by 0pt plus 1fill
+ % Cause last line, which could consist of page numbers on their own
+ % if the list of page numbers is long, to be aligned to the right.
+ \parfillskip=0pt plus -1fill
+ %
+ \hangindent=1em
+ %
+ \advance\rightskip by \entryrightmargin
+ % Determine how far we can stretch into the margin.
+ % This allows, e.g., "Appendix H GNU Free Documentation License" to
+ % fit on one line in @letterpaper format.
+ \ifdim\entryrightmargin>2.1em
+ \dimen@i=2.1em
\else
- % Cause stretch of 1fill at the end of the first line, to avoid
- % extra spacing in a short first line.
- \hskip 0pt plus 1fill
+ \dimen@i=0em
\fi
- \parshape = 2 0pt \dimen@ 1em \dimen@ii
- % Ideally we'd add a finite glue at the end of the first line only, but
- % TeX doesn't seem to provide a way to do such a thing.
- \fi\fi
- \unhbox\boxA
- %
- % Do not prefer a separate line ending with a hyphen to fewer lines.
- \finalhyphendemerits = 0
- %
- % Word spacing - no stretch
- \spaceskip=\fontdimen2\font minus \fontdimen4\font
- %
- \linepenalty=1000 % Discourage line breaks.
- \hyphenpenalty=10000 % Discourage hyphenation.
- %
- \par % format the paragraph
- \egroup % The \vtop
+ \advance \parfillskip by 0pt minus 1\dimen@i
+ %
+ \dimen@ii = \hsize
+ \advance\dimen@ii by -1\leftskip
+ \advance\dimen@ii by -1\entryrightmargin
+ \advance\dimen@ii by 1\dimen@i
+ \ifdim\wd\boxA > \dimen@ii % If the entry doesn't fit in one line
+ \ifdim\dimen@ > 0.8\dimen@ii % due to long index text
+ \dimen@ = 0.7\dimen@ % Try to split the text roughly evenly
+ \dimen@ii = \hsize
+ \advance \dimen@ii by -1em
+ \ifnum\dimen@>\dimen@ii
+ % If the entry is too long, use the whole line
+ \dimen@ = \dimen@ii
+ \fi
+ \advance\leftskip by 0pt plus 1fill % ragged right
+ \advance \dimen@ by 1\rightskip
+ \parshape = 2 0pt \dimen@ 1em \dimen@ii
+ % Ideally we'd add a finite glue at the end of the first line only, but
+ % TeX doesn't seem to provide a way to do such a thing.
+ \fi\fi
+ \unhbox\boxA
+ %
+ % Do not prefer a separate line ending with a hyphen to fewer lines.
+ \finalhyphendemerits = 0
+ %
+ % Word spacing - no stretch
+ \spaceskip=\fontdimen2\font minus \fontdimen4\font
+ %
+ \linepenalty=1000 % Discourage line breaks.
+ \hyphenpenalty=5000 % Discourage hyphenation.
+ %
+ \par % format the paragraph
+ \egroup % The \vbox
+ \fi
\endgroup
% delay text of entry until after penalty
\bgroup\aftergroup\insertindexentrybox
@@ -5323,10 +5315,21 @@ end
\newbox\entryindexbox
\def\insertindexentrybox{%
-\lineskip=.8ex plus .6ex % This comes into effect when the \vtop has a large
- % depth due to the paragraph in it having several
- % lines.
-\box\entryindexbox}
+ \copy\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
% Default is no penalty
\let\entryorphanpenalty\egroup
@@ -5377,14 +5380,35 @@ end
% Define two-column mode, which we use to typeset indexes.
% Adapted from the TeXbook, page 416, which is to say,
% the manmac.tex format used to print the TeXbook itself.
-\catcode`\@=11
+\catcode`\@=11 % private names
\newbox\partialpage
\newdimen\doublecolumnhsize
+\newdimen\doublecolumntopgap
+\doublecolumntopgap = 0pt
-\newtoks\savedtopmark % Used in \begindoublecolumns
+% Use inside an output routine to save \topmark and \firstmark
+\def\savemarks{%
+ \global\savedtopmark=\expandafter{\topmark }%
+ \global\savedfirstmark=\expandafter{\firstmark }%
+}
+\newtoks\savedtopmark
\newtoks\savedfirstmark
+% Set \topmark and \firstmark for next time \output runs.
+% Can't be run from withinside \output (because any material
+% added while an output routine is active, including
+% penalties, is saved for after it finishes). The page so far
+% should be empty, otherwise what's on it will be thrown away.
+\def\restoremarks{%
+ \mark{\the\savedtopmark}%
+ \bgroup\output = {%
+ \setbox\dummybox=\box\PAGE
+ }abc\eject\egroup
+ % "abc" because output routine doesn't fire for a completely empty page.
+ \mark{\the\savedfirstmark}%
+}
+
\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
% Grab any single-column material above us.
\output = {%
@@ -5405,22 +5429,15 @@ end
\unvbox\PAGE
\kern-\topskip \kern\baselineskip
}%
- % Save \topmark and \firstmark
- \global\savedtopmark=\expandafter{\topmark}%
- \global\savedfirstmark=\expandafter{\firstmark}%
+ \savemarks
}%
\eject % run that output routine to set \partialpage
+ \restoremarks
%
% We recover the two marks that the last output routine saved in order
% to propagate the information in marks added around a chapter heading,
% which could be otherwise be lost by the time the final page is output.
%
- \mark{\the\savedtopmark}% Only mark in page passed to following \output.
- \output = {%
- \setbox0=\box\PAGE % clear box 255
- }abc\eject
- %
- \mark{\the\savedfirstmark}%
%
% Use the double-column output routine for subsequent pages.
\output = {\doublecolumnout}%
@@ -5448,13 +5465,19 @@ end
%
% Double the \vsize as well. (We don't need a separate register here,
% since nobody clobbers \vsize.)
+ \global\doublecolumntopgap = \topskip
+ \global\advance\doublecolumntopgap by -1\baselineskip
+ \global\advance\vsize by -1\doublecolumntopgap
\vsize = 2\vsize
+ \topskip=0pt
+ \global\entrylinedepth=0pt\relax
}
% The double-column output routine for all double-column pages except
% the last, which is done by \balancecolumns.
%
\def\doublecolumnout{%
+ %
\splittopskip=\topskip \splitmaxdepth=\maxdepth
% Get the available space for the double columns -- the normal
% (undoubled) page height minus any material left over from the
@@ -5477,10 +5500,13 @@ end
%
\hsize = \doublecolumnhsize
\wd0=\hsize \wd2=\hsize
- \hbox to\pagewidth{\box0\hfil\box2}%
+ \vbox{%
+ \vskip\doublecolumntopgap
+ \hbox to\pagewidth{\box0\hfil\box2}}%
}
-%
-% All done with double columns.
+
+
+% Finished with with double columns.
\def\enddoublecolumns{%
% The following penalty ensures that the page builder is exercised
% _before_ we change the output routine. This is necessary in the
@@ -5513,6 +5539,7 @@ end
\output = {%
% Split the last of the double-column material. Leave it on the
% current page, no automatic page break.
+ \savemarks
\balancecolumns
%
% If we end up splitting too much material for the current page,
@@ -5526,6 +5553,8 @@ end
}%
\eject
\endgroup % started in \begindoublecolumns
+ \restoremarks
+ \box\balancedcolumns
%
% \pagegoal was set to the doubled \vsize above, since we restarted
% the current page. We're now back to normal single-column
@@ -5533,6 +5562,8 @@ end
% \endgroup where \vsize got restored).
\pagegoal = \vsize
}
+\newbox\balancedcolumns
+\setbox\balancedcolumns=\vbox{shouldnt see this}%
%
% Only called for the last of the double column material. \doublecolumnout
% does the others.
@@ -5576,7 +5607,7 @@ end
\fi
\fi
%
- \pagesofar
+ \global\setbox\balancedcolumns=\vbox{\pagesofar}%
}
\catcode`\@ = \other
@@ -7593,8 +7624,7 @@ end
% Argument is macro body with arguments substituted
\def\scanmacro#1{%
\newlinechar`\^^M
- % Reduce doubled backslashes to one
- \def\xprocessmacroarg{\passargtomacro\eatspaces}%
+ \def\xprocessmacroarg{\eatspaces}%
%
% Process the macro body under the current catcode regime.
\scantokens{#1\texinfoc}\aftermacro%
@@ -7610,6 +7640,7 @@ end
% to allow macros to open or close groups themselves.
}
+% Used for copying and captions
\def\scanexp#1{%
\bgroup
% Undo catcode changes of \startcontents and \printindex
@@ -7714,6 +7745,7 @@ end
% an argument to another Texinfo command.
\def\macroargctxt{%
\scanctxt
+ \catcode`\ =\active
\catcode`\^^M=\other
\catcode`\\=\active
}
@@ -8108,16 +8140,23 @@ end
\egroup\noexpand\scanmacro{\macrobody}}%
\else
\ifnum\paramno<10\relax % at most 9
+ % See non-recursive section below for comments
\expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \noexpand\csname\the\macname @@\endcsname}%
+ \bgroup
+ \noexpand\expandafter
+ \noexpand\macroargctxt
+ \noexpand\expandafter
+ \expandafter\noexpand\csname\the\macname @@\endcsname}%
\expandafter\xdef\csname\the\macname @@\endcsname##1{%
- \expandafter\noexpand\csname\the\macname @@@\endcsname ##1,}%
+ \noexpand\passargtomacro
+ \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}%
+ \expandafter\xdef\csname\the\macname @@@\endcsname##1{%
+ \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}%
\expandafter\expandafter
\expandafter\xdef
\expandafter\expandafter
- \csname\the\macname @@@\endcsname
- \paramlist{\egroup\noexpand\scanmacro{\macrobody}}%
+ \csname\the\macname @@@@\endcsname\paramlist{%
+ \egroup\noexpand\scanmacro{\macrobody}}%
\else % 10 or more
\expandafter\xdef\csname\the\macname\endcsname{%
\noexpand\getargvals@{\the\macname}{\argl}%
@@ -8147,19 +8186,27 @@ end
}%
\else % at most 9
\ifnum\paramno<10\relax
+ % @MACNAME sets the context for reading the macro argument
+ % @MACNAME@@ gets the argument, processes backslashes and appends a
+ % comma.
+ % @MACNAME@@@ removes braces surrounding the argument list.
+ % @MACNAME@@@@ scans the macro body with arguments substituted.
\expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \expandafter\noexpand\csname\the\macname @@\endcsname}%
+ \bgroup
+ \noexpand\expandafter % This \expandafter skip any spaces after the
+ \noexpand\macroargctxt % macro before we change the catcode of space.
+ \noexpand\expandafter
+ \expandafter\noexpand\csname\the\macname @@\endcsname}%
\expandafter\xdef\csname\the\macname @@\endcsname##1{%
- \expandafter\noexpand\csname\the\macname @@@\endcsname ##1,}%
+ \noexpand\passargtomacro
+ \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}%
+ \expandafter\xdef\csname\the\macname @@@\endcsname##1{%
+ \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}%
\expandafter\expandafter
\expandafter\xdef
\expandafter\expandafter
- \csname\the\macname @@@\endcsname
- \paramlist{%
- \egroup
- \noexpand\scanmacro{\macrobody}%
- }%
+ \csname\the\macname @@@@\endcsname\paramlist{%
+ \egroup\noexpand\scanmacro{\macrobody}}%
\else % 10 or more:
\expandafter\xdef\csname\the\macname\endcsname{%
\noexpand\getargvals@{\the\macname}{\argl}%
@@ -8175,71 +8222,96 @@ end
\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
-{\catcode`\@=0 \catcode`\\=13
-@catcode`@_=11
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+{\catcode`\@=0 \catcode`\\=13 % We need to manipulate \ so use @ as escape
+@catcode`@_=11 % private names
+@catcode`@!=11 % used as argument separator
+% \passargtomacro#1#2 -
% Call #1 with a list of tokens #2, with any doubled backslashes in #2
% compressed to one.
+%
+% This implementation works by expansion, and not execution (so we cannot use
+% \def or similar). This reduces the risk of this failing in contexts where
+% complete expansion is done with no execution (for example, in writing out to
+% an auxiliary file for an index entry).
+%
+% State is kept in the input stream: the argument passed to
+% @look_ahead, @gobble_and_check_finish and @add_segment is
+%
+% THE_MACRO ARG_RESULT ! {PENDING_BS} NEXT_TOKEN (... rest of input)
+%
+% where:
+% THE_MACRO - name of the macro we want to call
+% ARG_RESULT - argument list we build to pass to that macro
+% PENDING_BS - either a backslash or nothing
+% NEXT_TOKEN - used to look ahead in the input stream to see what's coming next
+
@gdef@passargtomacro#1#2{%
- @def@the_macro{#1}%
- @def@pending_backslash{}%
- @def@finish{@finish}%
- @def@arg_result{}%
- @let@next_token=@relax
- @add_segment#2\@finish\%
-}
-
-% Input stream is just after a backslash. If the next token is not a
-% backslash, process the rest of the argument; otherwise, remove the next
-% token.
-@gdef@look_ahead{%
- @futurelet@next_token@look_aheadzzz}
-@gdef@look_aheadzzz{%
- @ifx@next_token\%
- @let@next=@gobble_and_check_finish
- @else
- @let@next=@add_segment
- @fi@next
+ @add_segment #1!{}@relax#2\@_finish\%
}
+@gdef@_finish{@_finishx} @global@let@_finishx@relax
-% Double backslash found. Add a single backslash here.
-@gdef@gobble_and_check_finish#1{%
- @add_the_backslash
- @def@pending_backslash{}%
- @futurelet@next_token@add_segment
+% #1 - THE_MACRO ARG_RESULT
+% #2 - PENDING_BS
+% #3 - NEXT_TOKEN
+% #4 used to look ahead
+%
+% If the next token is not a backslash, process the rest of the argument;
+% otherwise, remove the next token.
+@gdef@look_ahead#1!#2#3#4{%
+ @ifx#4\%
+ @expandafter@gobble_and_check_finish
+ @else
+ @expandafter@add_segment
+ @fi#1!{#2}#4#4%
}
-% append a backslash to \arg_result
-@gdef@add_the_backslash{%
- @expandafter@gdef@expandafter@arg_result@expandafter{@arg_result\}%
+% #1 - THE_MACRO ARG_RESULT
+% #2 - PENDING_BS
+% #3 - NEXT_TOKEN
+% #4 should be a backslash, which is gobbled.
+% #5 looks ahead
+%
+% Double backslash found. Add a single backslash, and look ahead.
+@gdef@gobble_and_check_finish#1!#2#3#4#5{%
+ @add_segment#1\!{}#5#5%
}
+@gdef@is_fi{@fi}
+
+% #1 - THE_MACRO ARG_RESULT
+% #2 - PENDING_BS
+% #3 - NEXT_TOKEN
+% #4 is input stream until next backslash
+%
% Input stream is either at the start of the argument, or just after a
% backslash sequence, either a lone backslash, or a doubled backslash.
-% \next_token contains the first token in the input stream: if it is \finish,
-% finish; otherwise, append to \arg_result the segment of the argument up until
-% the next backslash. \pending_backslash contains a backslash to represent
+% NEXT_TOKEN contains the first token in the input stream: if it is \finish,
+% finish; otherwise, append to ARG_RESULT the segment of the argument up until
+% the next backslash. PENDING_BACKSLASH contains a backslash to represent
% a backslash just before the start of the input stream that has not been
-% added to \arg_result.
-@gdef@add_segment#1\{%
-@ifx@next_token@finish
- @let@next=@call_the_macro%
+% added to ARG_RESULT.
+@gdef@add_segment#1!#2#3#4\{%
+@ifx#3@_finish
+ @call_the_macro#1!%
@else
- @let@next=@look_ahead
- %
- % append to @arg_result
- % token list registers might be better
- @expandafter@expandafter@expandafter@gdef
- @expandafter@expandafter@expandafter@arg_result
- @expandafter@expandafter@expandafter{%
- @expandafter@arg_result
- @pending_backslash#1}%
- @def@pending_backslash{\}%
-@fi@next}
+ % append the pending backslash to the result, followed by the next segment
+ @expandafter@is_fi@look_ahead#1#2#4!{\}@fi
+ % this @fi is discarded by @look_ahead.
+ % we can't get rid of it with \expandafter because we don't know how
+ % long #4 is.
+}
-@gdef@call_the_macro{@expandafter@the_macro@expandafter{@arg_result}}
+% #1 - THE_MACRO
+% #2 - ARG_RESULT
+% #3 discards the res of the conditional in @add_segment, and @is_fi ends the
+% conditional.
+@gdef@call_the_macro#1#2!#3@fi{@is_fi #1{#2}}
}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% \braceorline MAC is used for a one-argument macro MAC. It checks
% whether the next non-whitespace character is a {. It sets the context
@@ -9756,7 +9828,7 @@ directory should work if nowhere else does.}
\gdef\UTFviiiTmp{#2}%
%
\expandafter\ifx\csname uni:#1\endcsname \relax \else
- \errmessage{Internal error, already defined: #1}%
+ \message{Internal error, already defined: #1}%
\fi
%
% define an additional control sequence for this code point.
@@ -10106,8 +10178,82 @@ directory should work if nowhere else does.}
\DeclareUnicodeCharacter{02DB}{\ogonek{ }}
- % Greek letters
+ % Greek letters upper case
+ \DeclareUnicodeCharacter{0391}{{\it A}}
+ \DeclareUnicodeCharacter{0392}{{\it B}}
+ \DeclareUnicodeCharacter{0393}{\ensuremath{\mit\Gamma}}
+ \DeclareUnicodeCharacter{0394}{\ensuremath{\mit\Delta}}
+ \DeclareUnicodeCharacter{0395}{{\it E}}
+ \DeclareUnicodeCharacter{0396}{{\it Z}}
+ \DeclareUnicodeCharacter{0397}{{\it H}}
+ \DeclareUnicodeCharacter{0398}{\ensuremath{\mit\Theta}}
+ \DeclareUnicodeCharacter{0399}{{\it I}}
+ \DeclareUnicodeCharacter{039A}{{\it K}}
+ \DeclareUnicodeCharacter{039B}{\ensuremath{\mit\Lambda}}
+ \DeclareUnicodeCharacter{039C}{{\it M}}
+ \DeclareUnicodeCharacter{039D}{{\it N}}
+ \DeclareUnicodeCharacter{039E}{\ensuremath{\mit\Xi}}
+ \DeclareUnicodeCharacter{039F}{{\it O}}
+ \DeclareUnicodeCharacter{03A0}{\ensuremath{\mit\Pi}}
+ \DeclareUnicodeCharacter{03A1}{{\it P}}
+ %\DeclareUnicodeCharacter{03A2}{} % none - corresponds to final sigma
+ \DeclareUnicodeCharacter{03A3}{\ensuremath{\mit\Sigma}}
+ \DeclareUnicodeCharacter{03A4}{{\it T}}
+ \DeclareUnicodeCharacter{03A5}{\ensuremath{\mit\Upsilon}}
+ \DeclareUnicodeCharacter{03A6}{\ensuremath{\mit\Phi}}
+ \DeclareUnicodeCharacter{03A7}{{\it X}}
+ \DeclareUnicodeCharacter{03A8}{\ensuremath{\mit\Psi}}
+ \DeclareUnicodeCharacter{03A9}{\ensuremath{\mit\Omega}}
+
+ % Vowels with accents
+ \DeclareUnicodeCharacter{0390}{\ensuremath{\ddot{\acute\iota}}}
+ \DeclareUnicodeCharacter{03AC}{\ensuremath{\acute\alpha}}
+ \DeclareUnicodeCharacter{03AD}{\ensuremath{\acute\epsilon}}
+ \DeclareUnicodeCharacter{03AE}{\ensuremath{\acute\eta}}
+ \DeclareUnicodeCharacter{03AF}{\ensuremath{\acute\iota}}
+ \DeclareUnicodeCharacter{03B0}{\ensuremath{\acute{\ddot\upsilon}}}
+
+ % Standalone accent
+ \DeclareUnicodeCharacter{0384}{\ensuremath{\acute{\ }}}
+
+ % Greek letters lower case
+ \DeclareUnicodeCharacter{03B1}{\ensuremath\alpha}
+ \DeclareUnicodeCharacter{03B2}{\ensuremath\beta}
+ \DeclareUnicodeCharacter{03B3}{\ensuremath\gamma}
+ \DeclareUnicodeCharacter{03B4}{\ensuremath\delta}
+ \DeclareUnicodeCharacter{03B5}{\ensuremath\epsilon}
+ \DeclareUnicodeCharacter{03B6}{\ensuremath\zeta}
+ \DeclareUnicodeCharacter{03B7}{\ensuremath\eta}
+ \DeclareUnicodeCharacter{03B8}{\ensuremath\theta}
+ \DeclareUnicodeCharacter{03B9}{\ensuremath\iota}
+ \DeclareUnicodeCharacter{03BA}{\ensuremath\kappa}
+ \DeclareUnicodeCharacter{03BB}{\ensuremath\lambda}
+ \DeclareUnicodeCharacter{03BC}{\ensuremath\mu}
+ \DeclareUnicodeCharacter{03BD}{\ensuremath\nu}
+ \DeclareUnicodeCharacter{03BE}{\ensuremath\xi}
+ \DeclareUnicodeCharacter{03BF}{{\it o}} % omicron
\DeclareUnicodeCharacter{03C0}{\ensuremath\pi}
+ \DeclareUnicodeCharacter{03C1}{\ensuremath\rho}
+ \DeclareUnicodeCharacter{03C2}{\ensuremath\varsigma}
+ \DeclareUnicodeCharacter{03C3}{\ensuremath\sigma}
+ \DeclareUnicodeCharacter{03C4}{\ensuremath\tau}
+ \DeclareUnicodeCharacter{03C5}{\ensuremath\upsilon}
+ \DeclareUnicodeCharacter{03C6}{\ensuremath\phi}
+ \DeclareUnicodeCharacter{03C7}{\ensuremath\chi}
+ \DeclareUnicodeCharacter{03C8}{\ensuremath\psi}
+ \DeclareUnicodeCharacter{03C9}{\ensuremath\omega}
+
+ % More Greek vowels with accents
+ \DeclareUnicodeCharacter{03CA}{\ensuremath{\ddot\iota}}
+ \DeclareUnicodeCharacter{03CB}{\ensuremath{\ddot\upsilon}}
+ \DeclareUnicodeCharacter{03CC}{\ensuremath{\acute o}}
+ \DeclareUnicodeCharacter{03CD}{\ensuremath{\acute\upsilon}}
+ \DeclareUnicodeCharacter{03CE}{\ensuremath{\acute\omega}}
+
+ % Variant Greek letters
+ \DeclareUnicodeCharacter{03D1}{\ensuremath\vartheta}
+ \DeclareUnicodeCharacter{03D6}{\ensuremath\varpi}
+ \DeclareUnicodeCharacter{03F1}{\ensuremath\varrho}
\DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
\DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
@@ -10263,7 +10409,7 @@ directory should work if nowhere else does.}
\DeclareUnicodeCharacter{2203}{\ensuremath\exists}
\DeclareUnicodeCharacter{2208}{\ensuremath\in}
\DeclareUnicodeCharacter{2212}{\minus}
- \DeclareUnicodeCharacter{2217}{\point}
+ \DeclareUnicodeCharacter{2217}{\ast}
\DeclareUnicodeCharacter{221E}{\ensuremath\infty}
\DeclareUnicodeCharacter{2225}{\ensuremath\parallel}
\DeclareUnicodeCharacter{2227}{\ensuremath\wedge}
@@ -10274,6 +10420,138 @@ directory should work if nowhere else does.}
\DeclareUnicodeCharacter{2282}{\ensuremath\subset}
\DeclareUnicodeCharacter{2287}{\ensuremath\supseteq}
+ \DeclareUnicodeCharacter{2016}{\ensuremath\Vert}
+ \DeclareUnicodeCharacter{2032}{\ensuremath\prime}
+ \DeclareUnicodeCharacter{210F}{\ensuremath\hbar}
+ \DeclareUnicodeCharacter{2111}{\ensuremath\Im}
+ \DeclareUnicodeCharacter{2113}{\ensuremath\ell}
+ \DeclareUnicodeCharacter{2118}{\ensuremath\wp}
+ \DeclareUnicodeCharacter{211C}{\ensuremath\Re}
+ \DeclareUnicodeCharacter{2127}{\ensuremath\mho}
+ \DeclareUnicodeCharacter{2135}{\ensuremath\aleph}
+ \DeclareUnicodeCharacter{2190}{\ensuremath\leftarrow}
+ \DeclareUnicodeCharacter{2191}{\ensuremath\uparrow}
+ \DeclareUnicodeCharacter{2193}{\ensuremath\downarrow}
+ \DeclareUnicodeCharacter{2194}{\ensuremath\leftrightarrow}
+ \DeclareUnicodeCharacter{2195}{\ensuremath\updownarrow}
+ \DeclareUnicodeCharacter{2196}{\ensuremath\nwarrow}
+ \DeclareUnicodeCharacter{2197}{\ensuremath\nearrow}
+ \DeclareUnicodeCharacter{2198}{\ensuremath\searrow}
+ \DeclareUnicodeCharacter{2199}{\ensuremath\swarrow}
+ \DeclareUnicodeCharacter{21A6}{\ensuremath\mapsto}
+ \DeclareUnicodeCharacter{21A9}{\ensuremath\hookleftarrow}
+ \DeclareUnicodeCharacter{21AA}{\ensuremath\hookrightarrow}
+ \DeclareUnicodeCharacter{21BC}{\ensuremath\leftharpoonup}
+ \DeclareUnicodeCharacter{21BD}{\ensuremath\leftharpoondown}
+ \DeclareUnicodeCharacter{21BE}{\ensuremath\upharpoonright}
+ \DeclareUnicodeCharacter{21C0}{\ensuremath\rightharpoonup}
+ \DeclareUnicodeCharacter{21C1}{\ensuremath\rightharpoondown}
+ \DeclareUnicodeCharacter{21CC}{\ensuremath\rightleftharpoons}
+ \DeclareUnicodeCharacter{21D0}{\ensuremath\Leftarrow}
+ \DeclareUnicodeCharacter{21D1}{\ensuremath\Uparrow}
+ \DeclareUnicodeCharacter{21D3}{\ensuremath\Downarrow}
+ \DeclareUnicodeCharacter{21D4}{\ensuremath\Leftrightarrow}
+ \DeclareUnicodeCharacter{21D5}{\ensuremath\Updownarrow}
+ \DeclareUnicodeCharacter{21DD}{\ensuremath\leadsto}
+ \DeclareUnicodeCharacter{2201}{\ensuremath\complement}
+ \DeclareUnicodeCharacter{2202}{\ensuremath\partial}
+ \DeclareUnicodeCharacter{2205}{\ensuremath\emptyset}
+ \DeclareUnicodeCharacter{2207}{\ensuremath\nabla}
+ \DeclareUnicodeCharacter{2209}{\ensuremath\notin}
+ \DeclareUnicodeCharacter{220B}{\ensuremath\owns}
+ \DeclareUnicodeCharacter{220F}{\ensuremath\prod}
+ \DeclareUnicodeCharacter{2210}{\ensuremath\coprod}
+ \DeclareUnicodeCharacter{2211}{\ensuremath\sum}
+ \DeclareUnicodeCharacter{2213}{\ensuremath\mp}
+ \DeclareUnicodeCharacter{2218}{\ensuremath\circ}
+ \DeclareUnicodeCharacter{221A}{\ensuremath\surd}
+ \DeclareUnicodeCharacter{221D}{\ensuremath\propto}
+ \DeclareUnicodeCharacter{2220}{\ensuremath\angle}
+ \DeclareUnicodeCharacter{2223}{\ensuremath\mid}
+ \DeclareUnicodeCharacter{2228}{\ensuremath\vee}
+ \DeclareUnicodeCharacter{222A}{\ensuremath\cup}
+ \DeclareUnicodeCharacter{222B}{\ensuremath\smallint}
+ \DeclareUnicodeCharacter{222E}{\ensuremath\oint}
+ \DeclareUnicodeCharacter{223C}{\ensuremath\sim}
+ \DeclareUnicodeCharacter{2240}{\ensuremath\wr}
+ \DeclareUnicodeCharacter{2243}{\ensuremath\simeq}
+ \DeclareUnicodeCharacter{2245}{\ensuremath\cong}
+ \DeclareUnicodeCharacter{2248}{\ensuremath\approx}
+ \DeclareUnicodeCharacter{224D}{\ensuremath\asymp}
+ \DeclareUnicodeCharacter{2250}{\ensuremath\doteq}
+ \DeclareUnicodeCharacter{2260}{\ensuremath\neq}
+ \DeclareUnicodeCharacter{226A}{\ensuremath\ll}
+ \DeclareUnicodeCharacter{226B}{\ensuremath\gg}
+ \DeclareUnicodeCharacter{227A}{\ensuremath\prec}
+ \DeclareUnicodeCharacter{227B}{\ensuremath\succ}
+ \DeclareUnicodeCharacter{2283}{\ensuremath\supset}
+ \DeclareUnicodeCharacter{2286}{\ensuremath\subseteq}
+ \DeclareUnicodeCharacter{228E}{\ensuremath\uplus}
+ \DeclareUnicodeCharacter{228F}{\ensuremath\sqsubset}
+ \DeclareUnicodeCharacter{2290}{\ensuremath\sqsupset}
+ \DeclareUnicodeCharacter{2291}{\ensuremath\sqsubseteq}
+ \DeclareUnicodeCharacter{2292}{\ensuremath\sqsupseteq}
+ \DeclareUnicodeCharacter{2293}{\ensuremath\sqcap}
+ \DeclareUnicodeCharacter{2294}{\ensuremath\sqcup}
+ \DeclareUnicodeCharacter{2295}{\ensuremath\oplus}
+ \DeclareUnicodeCharacter{2296}{\ensuremath\ominus}
+ \DeclareUnicodeCharacter{2297}{\ensuremath\otimes}
+ \DeclareUnicodeCharacter{2298}{\ensuremath\oslash}
+ \DeclareUnicodeCharacter{2299}{\ensuremath\odot}
+ \DeclareUnicodeCharacter{22A2}{\ensuremath\vdash}
+ \DeclareUnicodeCharacter{22A3}{\ensuremath\dashv}
+ \DeclareUnicodeCharacter{22A4}{\ensuremath\ptextop}
+ \DeclareUnicodeCharacter{22A5}{\ensuremath\bot}
+ \DeclareUnicodeCharacter{22A8}{\ensuremath\models}
+ \DeclareUnicodeCharacter{22B4}{\ensuremath\unlhd}
+ \DeclareUnicodeCharacter{22B5}{\ensuremath\unrhd}
+ \DeclareUnicodeCharacter{22C0}{\ensuremath\bigwedge}
+ \DeclareUnicodeCharacter{22C1}{\ensuremath\bigvee}
+ \DeclareUnicodeCharacter{22C2}{\ensuremath\bigcap}
+ \DeclareUnicodeCharacter{22C3}{\ensuremath\bigcup}
+ \DeclareUnicodeCharacter{22C4}{\ensuremath\diamond}
+ \DeclareUnicodeCharacter{22C5}{\ensuremath\cdot}
+ \DeclareUnicodeCharacter{22C6}{\ensuremath\star}
+ \DeclareUnicodeCharacter{22C8}{\ensuremath\bowtie}
+ \DeclareUnicodeCharacter{2308}{\ensuremath\lceil}
+ \DeclareUnicodeCharacter{2309}{\ensuremath\rceil}
+ \DeclareUnicodeCharacter{230A}{\ensuremath\lfloor}
+ \DeclareUnicodeCharacter{230B}{\ensuremath\rfloor}
+ \DeclareUnicodeCharacter{2322}{\ensuremath\frown}
+ \DeclareUnicodeCharacter{2323}{\ensuremath\smile}
+
+ \DeclareUnicodeCharacter{25A1}{\ensuremath\Box}
+ \DeclareUnicodeCharacter{25B3}{\ensuremath\triangle}
+ \DeclareUnicodeCharacter{25B7}{\ensuremath\triangleright}
+ \DeclareUnicodeCharacter{25BD}{\ensuremath\bigtriangledown}
+ \DeclareUnicodeCharacter{25C1}{\ensuremath\triangleleft}
+ \DeclareUnicodeCharacter{25C7}{\ensuremath\Diamond}
+ \DeclareUnicodeCharacter{2660}{\ensuremath\spadesuit}
+ \DeclareUnicodeCharacter{2661}{\ensuremath\heartsuit}
+ \DeclareUnicodeCharacter{2662}{\ensuremath\diamondsuit}
+ \DeclareUnicodeCharacter{2663}{\ensuremath\clubsuit}
+ \DeclareUnicodeCharacter{266D}{\ensuremath\flat}
+ \DeclareUnicodeCharacter{266E}{\ensuremath\natural}
+ \DeclareUnicodeCharacter{266F}{\ensuremath\sharp}
+ \DeclareUnicodeCharacter{26AA}{\ensuremath\bigcirc}
+ \DeclareUnicodeCharacter{27B9}{\ensuremath\rangle}
+ \DeclareUnicodeCharacter{27C2}{\ensuremath\perp}
+ \DeclareUnicodeCharacter{27E8}{\ensuremath\langle}
+ \DeclareUnicodeCharacter{27F5}{\ensuremath\longleftarrow}
+ \DeclareUnicodeCharacter{27F6}{\ensuremath\longrightarrow}
+ \DeclareUnicodeCharacter{27F7}{\ensuremath\longleftrightarrow}
+ \DeclareUnicodeCharacter{27FC}{\ensuremath\longmapsto}
+ \DeclareUnicodeCharacter{29F5}{\ensuremath\setminus}
+ \DeclareUnicodeCharacter{2A00}{\ensuremath\bigodot}
+ \DeclareUnicodeCharacter{2A01}{\ensuremath\bigoplus}
+ \DeclareUnicodeCharacter{2A02}{\ensuremath\bigotimes}
+ \DeclareUnicodeCharacter{2A04}{\ensuremath\biguplus}
+ \DeclareUnicodeCharacter{2A06}{\ensuremath\bigsqcup}
+ \DeclareUnicodeCharacter{2A1D}{\ensuremath\Join}
+ \DeclareUnicodeCharacter{2A3F}{\ensuremath\amalg}
+ \DeclareUnicodeCharacter{2AAF}{\ensuremath\preceq}
+ \DeclareUnicodeCharacter{2AB0}{\ensuremath\succeq}
+
\global\mathchardef\checkmark="1370 % actually the square root sign
\DeclareUnicodeCharacter{2713}{\ensuremath\checkmark}
}% end of \utfeightchardefs
@@ -10593,11 +10871,12 @@ directory should work if nowhere else does.}
% this is not a problem.
\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
-% Turn off all special characters except @
-% (and those which the user can use as if they were ordinary).
+% Set catcodes for Texinfo file
+
+% Active characters for printing the wanted glyph.
% Most of these we simply print from the \tt font, but for some, we can
% use math or other variants that look better in normal text.
-
+%
\catcode`\"=\active
\def\activedoublequote{{\tt\char34}}
\let"=\activedoublequote
@@ -10607,12 +10886,10 @@ directory should work if nowhere else does.}
\catcode`\_=\active
\def_{\ifusingtt\normalunderscore\_}
-\let\realunder=_
-% Subroutine for the previous macro.
\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
+\let\realunder=_
-\catcode`\|=\active
-\def|{{\tt\char124}}
+\catcode`\|=\active \def|{{\tt\char124}}
\chardef \less=`\<
\catcode`\<=\active \def\activeless{{\tt \less}}\let< = \activeless