comparison man/texinfo.tex @ 77025:76a4a875ce2c

page break fixes
author Karl Berry <karl@gnu.org>
date Sat, 07 Apr 2007 15:49:05 +0000
parents a0b90c38e931
children e4064040a3af
comparison
equal deleted inserted replaced
77024:601da3d38bfc 77025:76a4a875ce2c
1 % texinfo.tex -- TeX macros to handle Texinfo files. 1 % texinfo.tex -- TeX macros to handle Texinfo files.
2 % 2 %
3 % Load plain if necessary, i.e., if running under initex. 3 % Load plain if necessary, i.e., if running under initex.
4 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi 4 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
5 % 5 %
6 \def\texinfoversion{2006-11-08.17} 6 \def\texinfoversion{2007-04-07.08}
7 % 7 %
8 % Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, 8 % Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
9 % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 9 % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
10 % 2007 Free Software Foundation, Inc. 10 % 2007 Free Software Foundation, Inc.
11 % 11 %
12 % This texinfo.tex file is free software; you can redistribute it and/or 12 % This texinfo.tex file is free software; you can redistribute it and/or
13 % modify it under the terms of the GNU General Public License as 13 % modify it under the terms of the GNU General Public License as
14 % published by the Free Software Foundation; either version 2, or (at 14 % published by the Free Software Foundation; either version 2, or (at
15 % your option) any later version. 15 % your option) any later version.
65 % and turn on active characters that we couldn't do earlier because 65 % and turn on active characters that we couldn't do earlier because
66 % they might have appeared in the input file name. 66 % they might have appeared in the input file name.
67 \everyjob{\message{[Texinfo version \texinfoversion]}% 67 \everyjob{\message{[Texinfo version \texinfoversion]}%
68 \catcode`+=\active \catcode`\_=\active} 68 \catcode`+=\active \catcode`\_=\active}
69 69
70 \message{Basics,} 70
71 \chardef\other=12 71 \chardef\other=12
72 72
73 % We never want plain's \outer definition of \+ in Texinfo. 73 % We never want plain's \outer definition of \+ in Texinfo.
74 % For @tex, we can use \tabalign. 74 % For @tex, we can use \tabalign.
75 \let\+ = \relax 75 \let\+ = \relax
1223 @let\=@doublebackslash} 1223 @let\=@doublebackslash}
1224 } 1224 }
1225 1225
1226 % To handle parens, we must adopt a different approach, since parens are 1226 % To handle parens, we must adopt a different approach, since parens are
1227 % not active characters. hyperref.dtx (which has the same problem as 1227 % not active characters. hyperref.dtx (which has the same problem as
1228 % us) handles it with this amazing macro to replace tokens. I've 1228 % us) handles it with this amazing macro to replace tokens, with minor
1229 % tinkered with it a little for texinfo, but it's definitely from there. 1229 % changes for Texinfo. It is included here under the GPL by permission
1230 % from the author, Heiko Oberdiek.
1230 % 1231 %
1231 % #1 is the tokens to replace. 1232 % #1 is the tokens to replace.
1232 % #2 is the replacement. 1233 % #2 is the replacement.
1233 % #3 is the control sequence with the string. 1234 % #3 is the control sequence with the string.
1234 % 1235 %
1260 be supported due to the design of the PDF format; use regular TeX (DVI 1261 be supported due to the design of the PDF format; use regular TeX (DVI
1261 output) for that.)} 1262 output) for that.)}
1262 1263
1263 \ifpdf 1264 \ifpdf
1264 \input pdfcolor 1265 \input pdfcolor
1265 \pdfcatalog{/PageMode /UseOutlines}% 1266 \pdfcatalog{/PageMode /UseOutlines}
1267 %
1266 % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). 1268 % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
1267 \def\dopdfimage#1#2#3{% 1269 \def\dopdfimage#1#2#3{%
1268 \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% 1270 \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
1269 \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% 1271 \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
1270 % 1272 %
1277 \openin 1 #1.jpeg \ifeof 1 1279 \openin 1 #1.jpeg \ifeof 1
1278 \openin 1 #1.JPG \ifeof 1 1280 \openin 1 #1.JPG \ifeof 1
1279 \openin 1 #1.pdf \ifeof 1 1281 \openin 1 #1.pdf \ifeof 1
1280 \errhelp = \nopdfimagehelp 1282 \errhelp = \nopdfimagehelp
1281 \errmessage{Could not find image file #1 for pdf}% 1283 \errmessage{Could not find image file #1 for pdf}%
1282 \else 1284 \else \gdef\pdfimgext{pdf}%
1283 \gdef\pdfimgext{pdf}%
1284 \fi 1285 \fi
1285 \else 1286 \else \gdef\pdfimgext{JPG}%
1286 \gdef\pdfimgext{JPG}%
1287 \fi 1287 \fi
1288 \else 1288 \else \gdef\pdfimgext{jpeg}%
1289 \gdef\pdfimgext{jpeg}%
1290 \fi 1289 \fi
1291 \else 1290 \else \gdef\pdfimgext{jpg}%
1292 \gdef\pdfimgext{jpg}%
1293 \fi 1291 \fi
1294 \else 1292 \else \gdef\pdfimgext{png}%
1295 \gdef\pdfimgext{png}%
1296 \fi 1293 \fi
1297 \closein 1 1294 \closein 1
1298 \endgroup 1295 \endgroup
1299 % 1296 %
1300 % without \immediate, pdftex seg faults when the same image is 1297 % without \immediate, pdftex seg faults when the same image is
1312 {#1.\pdfimgext}% 1309 {#1.\pdfimgext}%
1313 \fi 1310 \fi
1314 \ifnum\pdftexversion < 14 \else 1311 \ifnum\pdftexversion < 14 \else
1315 \pdfrefximage \pdflastximage 1312 \pdfrefximage \pdflastximage
1316 \fi} 1313 \fi}
1314 %
1317 \def\pdfmkdest#1{{% 1315 \def\pdfmkdest#1{{%
1318 % We have to set dummies so commands such as @code, and characters 1316 % We have to set dummies so commands such as @code, and characters
1319 % such as \, aren't expanded when present in a section title. 1317 % such as \, aren't expanded when present in a section title.
1320 \atdummies 1318 \indexnofonts
1319 \turnoffactive
1321 \activebackslashdouble 1320 \activebackslashdouble
1321 \makevalueexpandable
1322 \def\pdfdestname{#1}% 1322 \def\pdfdestname{#1}%
1323 \backslashparens\pdfdestname 1323 \backslashparens\pdfdestname
1324 \pdfdest name{\pdfdestname} xyz% 1324 \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
1325 }}% 1325 }}
1326 % 1326 %
1327 % used to mark target names; must be expandable. 1327 % used to mark target names; must be expandable.
1328 \def\pdfmkpgn#1{#1}% 1328 \def\pdfmkpgn#1{#1}
1329 % 1329 %
1330 \let\linkcolor = \Blue % was Cyan, but that seems light? 1330 \let\linkcolor = \Blue % was Cyan, but that seems light?
1331 \def\endlink{\Black\pdfendlink} 1331 \def\endlink{\Black\pdfendlink}
1332 %
1332 % Adding outlines to PDF; macros for calculating structure of outlines 1333 % Adding outlines to PDF; macros for calculating structure of outlines
1333 % come from Petr Olsak 1334 % come from Petr Olsak
1334 \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% 1335 \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
1335 \else \csname#1\endcsname \fi} 1336 \else \csname#1\endcsname \fi}
1336 \def\advancenumber#1{\tempnum=\expnumber{#1}\relax 1337 \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
1581 \def\scbshape{csc} 1582 \def\scbshape{csc}
1582 1583
1583 % Definitions for a main text size of 11pt. This is the default in 1584 % Definitions for a main text size of 11pt. This is the default in
1584 % Texinfo. 1585 % Texinfo.
1585 % 1586 %
1586 \def\definetextfontsizexi{ 1587 \def\definetextfontsizexi{%
1587 % Text fonts (11.2pt, magstep1). 1588 % Text fonts (11.2pt, magstep1).
1588 \def\textnominalsize{11pt} 1589 \def\textnominalsize{11pt}
1589 \edef\mainmagstep{\magstephalf} 1590 \edef\mainmagstep{\magstephalf}
1590 \setfont\textrm\rmshape{10}{\mainmagstep} 1591 \setfont\textrm\rmshape{10}{\mainmagstep}
1591 \setfont\texttt\ttshape{10}{\mainmagstep} 1592 \setfont\texttt\ttshape{10}{\mainmagstep}
3744 \toks0 = \expandafter{\the\toks0 \space #3}% 3745 \toks0 = \expandafter{\the\toks0 \space #3}%
3745 \fi 3746 \fi
3746 % 3747 %
3747 \edef\writeto{\csname#1indfile\endcsname}% 3748 \edef\writeto{\csname#1indfile\endcsname}%
3748 % 3749 %
3749 \ifvmode 3750 \safewhatsit\dosubindwrite
3750 \dosubindsanitize
3751 \else
3752 \dosubindwrite
3753 \fi
3754 }% 3751 }%
3755 \fi 3752 \fi
3756 } 3753 }
3757 3754
3758 % Write the entry in \toks0 to the index file: 3755 % Write the entry in \toks0 to the index file:
3785 \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}% 3782 \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}%
3786 }% 3783 }%
3787 \temp 3784 \temp
3788 } 3785 }
3789 3786
3790 % Take care of unwanted page breaks: 3787 % Take care of unwanted page breaks/skips around a whatsit:
3791 % 3788 %
3792 % If a skip is the last thing on the list now, preserve it 3789 % If a skip is the last thing on the list now, preserve it
3793 % by backing up by \lastskip, doing the \write, then inserting 3790 % by backing up by \lastskip, doing the \write, then inserting
3794 % the skip again. Otherwise, the whatsit generated by the 3791 % the skip again. Otherwise, the whatsit generated by the
3795 % \write will make \lastskip zero. The result is that sequences 3792 % \write or \pdfdest will make \lastskip zero. The result is that
3796 % like this: 3793 % sequences like this:
3797 % @end defun 3794 % @end defun
3798 % @tindex whatever 3795 % @tindex whatever
3799 % @defun ... 3796 % @defun ...
3800 % will have extra space inserted, because the \medbreak in the 3797 % will have extra space inserted, because the \medbreak in the
3801 % start of the @defun won't see the skip inserted by the @end of 3798 % start of the @defun won't see the skip inserted by the @end of
3815 % The following is almost like \def\zeroskipmacro{0.0pt} except that 3812 % The following is almost like \def\zeroskipmacro{0.0pt} except that
3816 % the ``p'' and ``t'' characters have catcode \other, not 11 (letter). 3813 % the ``p'' and ``t'' characters have catcode \other, not 11 (letter).
3817 % 3814 %
3818 \edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname} 3815 \edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname}
3819 % 3816 %
3817 \newskip\whatsitskip
3818 \newcount\whatsitpenalty
3819 %
3820 % ..., ready, GO: 3820 % ..., ready, GO:
3821 % 3821 %
3822 \def\dosubindsanitize{% 3822 \def\safewhatsit#1{%
3823 \ifhmode
3824 #1%
3825 \else
3823 % \lastskip and \lastpenalty cannot both be nonzero simultaneously. 3826 % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
3824 \skip0 = \lastskip 3827 \whatsitskip = \lastskip
3825 \edef\lastskipmacro{\the\lastskip}% 3828 \edef\lastskipmacro{\the\lastskip}%
3826 \count255 = \lastpenalty 3829 \whatsitpenalty = \lastpenalty
3827 % 3830 %
3828 % If \lastskip is nonzero, that means the last item was a 3831 % If \lastskip is nonzero, that means the last item was a
3829 % skip. And since a skip is discardable, that means this 3832 % skip. And since a skip is discardable, that means this
3830 % -\skip0 glue we're inserting is preceded by a 3833 % -\skip0 glue we're inserting is preceded by a
3831 % non-discardable item, therefore it is not a potential 3834 % non-discardable item, therefore it is not a potential
3832 % breakpoint, therefore no \nobreak needed. 3835 % breakpoint, therefore no \nobreak needed.
3833 \ifx\lastskipmacro\zeroskipmacro 3836 \ifx\lastskipmacro\zeroskipmacro
3834 \else 3837 \else
3835 \vskip-\skip0 3838 \vskip-\whatsitskip
3836 \fi 3839 \fi
3837 % 3840 %
3838 \dosubindwrite 3841 #1%
3839 % 3842 %
3840 \ifx\lastskipmacro\zeroskipmacro 3843 \ifx\lastskipmacro\zeroskipmacro
3841 % If \lastskip was zero, perhaps the last item was a penalty, and 3844 % If \lastskip was zero, perhaps the last item was a penalty, and
3842 % perhaps it was >=10000, e.g., a \nobreak. In that case, we want 3845 % perhaps it was >=10000, e.g., a \nobreak. In that case, we want
3843 % to re-insert the same penalty (values >10000 are used for various 3846 % to re-insert the same penalty (values >10000 are used for various
3847 % @deffn deffn-whatever 3850 % @deffn deffn-whatever
3848 % @vindex index-whatever 3851 % @vindex index-whatever
3849 % Description. 3852 % Description.
3850 % would allow a break between the index-whatever whatsit 3853 % would allow a break between the index-whatever whatsit
3851 % and the "Description." paragraph. 3854 % and the "Description." paragraph.
3852 \ifnum\count255>9999 \penalty\count255 \fi 3855 \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi
3853 \else 3856 \else
3854 % On the other hand, if we had a nonzero \lastskip, 3857 % On the other hand, if we had a nonzero \lastskip,
3855 % this make-up glue would be preceded by a non-discardable item 3858 % this make-up glue would be preceded by a non-discardable item
3856 % (the whatsit from the \write), so we must insert a \nobreak. 3859 % (the whatsit from the \write), so we must insert a \nobreak.
3857 \nobreak\vskip\skip0 3860 \nobreak\vskip\whatsitskip
3858 \fi 3861 \fi
3862 \fi
3859 } 3863 }
3860 3864
3861 % The index entry written in the file actually looks like 3865 % The index entry written in the file actually looks like
3862 % \entry {sortstring}{page}{topic} 3866 % \entry {sortstring}{page}{topic}
3863 % or 3867 % or
4165 \hbox to\pagewidth{\box0\hfil\box2}% 4169 \hbox to\pagewidth{\box0\hfil\box2}%
4166 } 4170 }
4167 % 4171 %
4168 % All done with double columns. 4172 % All done with double columns.
4169 \def\enddoublecolumns{% 4173 \def\enddoublecolumns{%
4174 % The following penalty ensures that the page builder is exercised
4175 % _before_ we change the output routine. This is necessary in the
4176 % following situation:
4177 %
4178 % The last section of the index consists only of a single entry.
4179 % Before this section, \pagetotal is less than \pagegoal, so no
4180 % break occurs before the last section starts. However, the last
4181 % section, consisting of \initial and the single \entry, does not
4182 % fit on the page and has to be broken off. Without the following
4183 % penalty the page builder will not be exercised until \eject
4184 % below, and by that time we'll already have changed the output
4185 % routine to the \balancecolumns version, so the next-to-last
4186 % double-column page will be processed with \balancecolumns, which
4187 % is wrong: The two columns will go to the main vertical list, with
4188 % the broken-off section in the recent contributions. As soon as
4189 % the output routine finishes, TeX starts reconsidering the page
4190 % break. The two columns and the broken-off section both fit on the
4191 % page, because the two columns now take up only half of the page
4192 % goal. When TeX sees \eject from below which follows the final
4193 % section, it invokes the new output routine that we've set after
4194 % \balancecolumns below; \onepageout will try to fit the two columns
4195 % and the final section into the vbox of \pageheight (see
4196 % \pagebody), causing an overfull box.
4197 %
4198 % Note that glue won't work here, because glue does not exercise the
4199 % page builder, unlike penalties (see The TeXbook, pp. 280-281).
4200 \penalty0
4201 %
4170 \output = {% 4202 \output = {%
4171 % Split the last of the double-column material. Leave it on the 4203 % Split the last of the double-column material. Leave it on the
4172 % current page, no automatic page break. 4204 % current page, no automatic page break.
4173 \balancecolumns 4205 \balancecolumns
4174 % 4206 %
5281 \def\smallword{small} 5313 \def\smallword{small}
5282 \def\nosmallword{nosmall} 5314 \def\nosmallword{nosmall}
5283 \let\SETdispenvsize\relax 5315 \let\SETdispenvsize\relax
5284 \def\setnormaldispenv{% 5316 \def\setnormaldispenv{%
5285 \ifx\SETdispenvsize\smallword 5317 \ifx\SETdispenvsize\smallword
5318 % end paragraph for sake of leading, in case document has no blank
5319 % line. This is redundant with what happens in \aboveenvbreak, but
5320 % we need to do it before changing the fonts, and it's inconvenient
5321 % to change the fonts afterward.
5322 \ifnum \lastpenalty=10000 \else \endgraf \fi
5286 \smallexamplefonts \rm 5323 \smallexamplefonts \rm
5287 \fi 5324 \fi
5288 } 5325 }
5289 \def\setsmalldispenv{% 5326 \def\setsmalldispenv{%
5290 \ifx\SETdispenvsize\nosmallword 5327 \ifx\SETdispenvsize\nosmallword
5291 \else 5328 \else
5329 \ifnum \lastpenalty=10000 \else \endgraf \fi
5292 \smallexamplefonts \rm 5330 \smallexamplefonts \rm
5293 \fi 5331 \fi
5294 } 5332 }
5295 5333
5296 % We often define two environments, @foo and @smallfoo. 5334 % We often define two environments, @foo and @smallfoo.
5587 \parindent = 0pt % paragraph indentation looks wrong on title page 5625 \parindent = 0pt % paragraph indentation looks wrong on title page
5588 \scanexp\copyingtext 5626 \scanexp\copyingtext
5589 \endgroup 5627 \endgroup
5590 } 5628 }
5591 5629
5630
5592 \message{defuns,} 5631 \message{defuns,}
5593 % @defun etc. 5632 % @defun etc.
5594 5633
5595 \newskip\defbodyindent \defbodyindent=.4in 5634 \newskip\defbodyindent \defbodyindent=.4in
5596 \newskip\defargsindent \defargsindent=50pt 5635 \newskip\defargsindent \defargsindent=50pt
5597 \newskip\deflastargmargin \deflastargmargin=18pt 5636 \newskip\deflastargmargin \deflastargmargin=18pt
5637 \newcount\defunpenalty
5598 5638
5599 % Start the processing of @deffn: 5639 % Start the processing of @deffn:
5600 \def\startdefun{% 5640 \def\startdefun{%
5601 \ifnum\lastpenalty<10000 5641 \ifnum\lastpenalty<10000
5602 \medbreak 5642 \medbreak
5643 \defunpenalty=10003 % Will keep this @deffn together with the
5644 % following @def command, see below.
5603 \else 5645 \else
5604 % If there are two @def commands in a row, we'll have a \nobreak, 5646 % If there are two @def commands in a row, we'll have a \nobreak,
5605 % which is there to keep the function description together with its 5647 % which is there to keep the function description together with its
5606 % header. But if there's nothing but headers, we need to allow a 5648 % header. But if there's nothing but headers, we need to allow a
5607 % break somewhere. Check specifically for penalty 10002, inserted 5649 % break somewhere. Check specifically for penalty 10002, inserted
5608 % by \defargscommonending, instead of 10000, since the sectioning 5650 % by \printdefunline, instead of 10000, since the sectioning
5609 % commands also insert a nobreak penalty, and we don't want to allow 5651 % commands also insert a nobreak penalty, and we don't want to allow
5610 % a break between a section heading and a defun. 5652 % a break between a section heading and a defun.
5611 % 5653 %
5612 \ifnum\lastpenalty=10002 \penalty2000 \fi 5654 % As a minor refinement, we avoid "club" headers by signalling
5655 % with penalty of 10003 after the very first @deffn in the
5656 % sequence (see above), and penalty of 10002 after any following
5657 % @def command.
5658 \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi
5613 % 5659 %
5614 % Similarly, after a section heading, do not allow a break. 5660 % Similarly, after a section heading, do not allow a break.
5615 % But do insert the glue. 5661 % But do insert the glue.
5616 \medskip % preceded by discardable penalty, so not a breakpoint 5662 \medskip % preceded by discardable penalty, so not a breakpoint
5617 \fi 5663 \fi
5625 % First, check whether we are in the right environment: 5671 % First, check whether we are in the right environment:
5626 \checkenv#1% 5672 \checkenv#1%
5627 % 5673 %
5628 % As above, allow line break if we have multiple x headers in a row. 5674 % As above, allow line break if we have multiple x headers in a row.
5629 % It's not a great place, though. 5675 % It's not a great place, though.
5630 \ifnum\lastpenalty=10002 \penalty3000 \fi 5676 \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi
5631 % 5677 %
5632 % And now, it's time to reuse the body of the original defun: 5678 % And now, it's time to reuse the body of the original defun:
5633 \expandafter\gobbledefun#1% 5679 \expandafter\gobbledefun#1%
5634 } 5680 }
5635 \def\gobbledefun#1\startdefun{} 5681 \def\gobbledefun#1\startdefun{}
5643 % common ending: 5689 % common ending:
5644 \interlinepenalty = 10000 5690 \interlinepenalty = 10000
5645 \advance\rightskip by 0pt plus 1fil 5691 \advance\rightskip by 0pt plus 1fil
5646 \endgraf 5692 \endgraf
5647 \nobreak\vskip -\parskip 5693 \nobreak\vskip -\parskip
5648 \penalty 10002 % signal to \startdefun and \dodefunx 5694 \penalty\defunpenalty % signal to \startdefun and \dodefunx
5649 % Some of the @defun-type tags do not enable magic parentheses, 5695 % Some of the @defun-type tags do not enable magic parentheses,
5650 % rendering the following check redundant. But we don't optimize. 5696 % rendering the following check redundant. But we don't optimize.
5651 \checkparencounts 5697 \checkparencounts
5652 \endgroup 5698 \endgroup
5653 } 5699 }
6243 6289
6244 6290
6245 \message{cross references,} 6291 \message{cross references,}
6246 6292
6247 \newwrite\auxfile 6293 \newwrite\auxfile
6248
6249 \newif\ifhavexrefs % True if xref values are known. 6294 \newif\ifhavexrefs % True if xref values are known.
6250 \newif\ifwarnedxrefs % True if we warned once that they aren't known. 6295 \newif\ifwarnedxrefs % True if we warned once that they aren't known.
6251 6296
6252 % @inforef is relatively simple. 6297 % @inforef is relatively simple.
6253 \def\inforef #1{\inforefzzz #1,,,,**} 6298 \def\inforef #1{\inforefzzz #1,,,,**}
6310 ##1}{##2}}% these are parameters of \writexrdef 6355 ##1}{##2}}% these are parameters of \writexrdef
6311 }% 6356 }%
6312 \toks0 = \expandafter{\thissection}% 6357 \toks0 = \expandafter{\thissection}%
6313 \immediate \writexrdef{title}{\the\toks0 }% 6358 \immediate \writexrdef{title}{\the\toks0 }%
6314 \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc. 6359 \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
6315 \writexrdef{pg}{\folio}% will be written later, during \shipout 6360 \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, during \shipout
6316 }% 6361 }%
6317 \fi 6362 \fi
6318 } 6363 }
6319 6364
6320 % @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is 6365 % @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is
6356 % 6401 %
6357 % Make link in pdf output. 6402 % Make link in pdf output.
6358 \ifpdf 6403 \ifpdf
6359 \leavevmode 6404 \leavevmode
6360 \getfilename{#4}% 6405 \getfilename{#4}%
6361 {\turnoffactive 6406 {\indexnofonts
6407 \turnoffactive
6362 % See comments at \activebackslashdouble. 6408 % See comments at \activebackslashdouble.
6363 {\activebackslashdouble \xdef\pdfxrefdest{#1}% 6409 {\activebackslashdouble \xdef\pdfxrefdest{#1}%
6364 \backslashparens\pdfxrefdest}% 6410 \backslashparens\pdfxrefdest}%
6365 % 6411 %
6366 \ifnum\filenamelength>0 6412 \ifnum\filenamelength>0
6503 % This is the macro invoked by entries in the aux file. Usually it's 6549 % This is the macro invoked by entries in the aux file. Usually it's
6504 % just a \def (we prepend XR to the control sequence name to avoid 6550 % just a \def (we prepend XR to the control sequence name to avoid
6505 % collisions). But if this is a float type, we have more work to do. 6551 % collisions). But if this is a float type, we have more work to do.
6506 % 6552 %
6507 \def\xrdef#1#2{% 6553 \def\xrdef#1#2{%
6508 \expandafter\gdef\csname XR#1\endcsname{#2}% remember this xref value. 6554 {% The node name might contain 8-bit characters, which in our current
6555 % implementation are changed to commands like @'e. Don't let these
6556 % mess up the control sequence name.
6557 \indexnofonts
6558 \turnoffactive
6559 \xdef\safexrefname{#1}%
6560 }%
6561 %
6562 \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref
6509 % 6563 %
6510 % Was that xref control sequence that we just defined for a float? 6564 % Was that xref control sequence that we just defined for a float?
6511 \expandafter\iffloat\csname XR#1\endcsname 6565 \expandafter\iffloat\csname XR\safexrefname\endcsname
6512 % it was a float, and we have the (safe) float type in \iffloattype. 6566 % it was a float, and we have the (safe) float type in \iffloattype.
6513 \expandafter\let\expandafter\floatlist 6567 \expandafter\let\expandafter\floatlist
6514 \csname floatlist\iffloattype\endcsname 6568 \csname floatlist\iffloattype\endcsname
6515 % 6569 %
6516 % Is this the first time we've seen this float type? 6570 % Is this the first time we've seen this float type?
6521 \toks0 = \expandafter{\floatlist\do}% 6575 \toks0 = \expandafter{\floatlist\do}%
6522 \fi 6576 \fi
6523 % 6577 %
6524 % Remember this xref in the control sequence \floatlistFLOATTYPE, 6578 % Remember this xref in the control sequence \floatlistFLOATTYPE,
6525 % for later use in \listoffloats. 6579 % for later use in \listoffloats.
6526 \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0{#1}}% 6580 \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0
6581 {\safexrefname}}%
6527 \fi 6582 \fi
6528 } 6583 }
6529 6584
6530 % Read the last existing aux file, if any. No error if none exists. 6585 % Read the last existing aux file, if any. No error if none exists.
6531 % 6586 %
6624 \def\readdatafile#1{% 6679 \def\readdatafile#1{%
6625 \begingroup 6680 \begingroup
6626 \setupdatafile 6681 \setupdatafile
6627 \input\jobname.#1 6682 \input\jobname.#1
6628 \endgroup} 6683 \endgroup}
6684
6629 6685
6630 \message{insertions,} 6686 \message{insertions,}
6631 % including footnotes. 6687 % including footnotes.
6632 6688
6633 \newcount \footnoteno 6689 \newcount \footnoteno
7099 % use the same \entry macro we use to generate the TOC and index. 7155 % use the same \entry macro we use to generate the TOC and index.
7100 \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}% 7156 \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}%
7101 \writeentry 7157 \writeentry
7102 }} 7158 }}
7103 7159
7160
7104 \message{localization,} 7161 \message{localization,}
7105 % and i18n.
7106 7162
7107 % @documentlanguage is usually given very early, just after 7163 % @documentlanguage is usually given very early, just after
7108 % @setfilename. If done too late, it may not override everything 7164 % @setfilename. If done too late, it may not override everything
7109 % properly. Single argument is the language abbreviation. 7165 % properly. Single argument is the language abbreviation.
7110 % It would be nice if we could set up a hyphenation file here. 7166 % It would be nice if we could set up a hyphenation file here.
7124 } 7180 }
7125 \newhelp\nolanghelp{The given language definition file cannot be found or 7181 \newhelp\nolanghelp{The given language definition file cannot be found or
7126 is empty. Maybe you need to install it? In the current directory 7182 is empty. Maybe you need to install it? In the current directory
7127 should work if nowhere else does.} 7183 should work if nowhere else does.}
7128 7184
7129 7185 % Set the catcode of characters 128 through 255 to the specified number.
7130 % @documentencoding should change something in TeX eventually, most 7186 %
7131 % likely, but for now just recognize it. 7187 \def\setnonasciicharscatcode#1{%
7132 \let\documentencoding = \comment 7188 \count255=128
7133 7189 \loop\ifnum\count255<256
7134 7190 \global\catcode\count255=#1
7135 % Page size parameters. 7191 \advance\count255 by 1
7136 % 7192 \repeat
7193 }
7194
7195 % @documentencoding sets the definition of non-ASCII characters
7196 % according to the specified encoding.
7197 %
7198 \parseargdef\documentencoding{%
7199 % Encoding being declared for the document.
7200 \def\declaredencoding{\csname #1.enc\endcsname}%
7201 %
7202 % Supported encodings: names converted to tokens in order to be able
7203 % to compare them with \ifx.
7204 \def\ascii{\csname US-ASCII.enc\endcsname}%
7205 \def\latnine{\csname ISO-8859-15.enc\endcsname}%
7206 \def\latone{\csname ISO-8859-1.enc\endcsname}%
7207 \def\lattwo{\csname ISO-8859-2.enc\endcsname}%
7208 \def\utfeight{\csname UTF-8.enc\endcsname}%
7209 %
7210 \ifx \declaredencoding \ascii
7211 \asciichardefs
7212 %
7213 \else \ifx \declaredencoding \lattwo
7214 \setnonasciicharscatcode\active
7215 \lattwochardefs
7216 %
7217 \else \ifx \declaredencoding \latone
7218 \setnonasciicharscatcode\active
7219 \latonechardefs
7220 %
7221 \else \ifx \declaredencoding \latnine
7222 \setnonasciicharscatcode\active
7223 \latninechardefs
7224 %
7225 \else \ifx \declaredencoding \utfeight
7226 \setnonasciicharscatcode\active
7227 \utfeightchardefs
7228 %
7229 \else
7230 \message{Unknown document encoding #1, ignoring.}%
7231 %
7232 \fi % utfeight
7233 \fi % latnine
7234 \fi % latone
7235 \fi % lattwo
7236 \fi % ascii
7237 }
7238
7239 % A message to be logged when using a character that isn't available
7240 % the default font encoding (OT1).
7241 %
7242 \def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}}
7243
7244 % Take account of \c (plain) vs. \, (Texinfo) difference.
7245 \def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi}
7246
7247 % First, make active non-ASCII characters in order for them to be
7248 % correctly categorized when TeX reads the replacement text of
7249 % macros containing the character definitions.
7250 \setnonasciicharscatcode\active
7251 %
7252 % Latin1 (ISO-8859-1) character definitions.
7253 \def\latonechardefs{%
7254 \gdef^^a0{~}
7255 \gdef^^a1{\exclamdown}
7256 \gdef^^a2{\missingcharmsg{CENT SIGN}}
7257 \gdef^^a3{{\pounds}}
7258 \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
7259 \gdef^^a5{\missingcharmsg{YEN SIGN}}
7260 \gdef^^a6{\missingcharmsg{BROKEN BAR}}
7261 \gdef^^a7{\S}
7262 \gdef^^a8{\"{}}
7263 \gdef^^a9{\copyright}
7264 \gdef^^aa{\ordf}
7265 \gdef^^ab{\missingcharmsg{LEFT-POINTING DOUBLE ANGLE QUOTATION MARK}}
7266 \gdef^^ac{$\lnot$}
7267 \gdef^^ad{\-}
7268 \gdef^^ae{\registeredsymbol}
7269 \gdef^^af{\={}}
7270 %
7271 \gdef^^b0{\textdegree}
7272 \gdef^^b1{$\pm$}
7273 \gdef^^b2{$^2$}
7274 \gdef^^b3{$^3$}
7275 \gdef^^b4{\'{}}
7276 \gdef^^b5{$\mu$}
7277 \gdef^^b6{\P}
7278 %
7279 \gdef^^b7{$^.$}
7280 \gdef^^b8{\cedilla\ }
7281 \gdef^^b9{$^1$}
7282 \gdef^^ba{\ordm}
7283 %
7284 \gdef^^bb{\missingcharmsg{RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK}}
7285 \gdef^^bc{$1\over4$}
7286 \gdef^^bd{$1\over2$}
7287 \gdef^^be{$3\over4$}
7288 \gdef^^bf{\questiondown}
7289 %
7290 \gdef^^c0{\`A}
7291 \gdef^^c1{\'A}
7292 \gdef^^c2{\^A}
7293 \gdef^^c3{\~A}
7294 \gdef^^c4{\"A}
7295 \gdef^^c5{\ringaccent A}
7296 \gdef^^c6{\AE}
7297 \gdef^^c7{\cedilla C}
7298 \gdef^^c8{\`E}
7299 \gdef^^c9{\'E}
7300 \gdef^^ca{\^E}
7301 \gdef^^cb{\"E}
7302 \gdef^^cc{\`I}
7303 \gdef^^cd{\'I}
7304 \gdef^^ce{\^I}
7305 \gdef^^cf{\"I}
7306 %
7307 \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER ETH}}
7308 \gdef^^d1{\~N}
7309 \gdef^^d2{\`O}
7310 \gdef^^d3{\'O}
7311 \gdef^^d4{\^O}
7312 \gdef^^d5{\~O}
7313 \gdef^^d6{\"O}
7314 \gdef^^d7{$\times$}
7315 \gdef^^d8{\O}
7316 \gdef^^d9{\`U}
7317 \gdef^^da{\'U}
7318 \gdef^^db{\^U}
7319 \gdef^^dc{\"U}
7320 \gdef^^dd{\'Y}
7321 \gdef^^de{\missingcharmsg{LATIN CAPITAL LETTER THORN}}
7322 \gdef^^df{\ss}
7323 %
7324 \gdef^^e0{\`a}
7325 \gdef^^e1{\'a}
7326 \gdef^^e2{\^a}
7327 \gdef^^e3{\~a}
7328 \gdef^^e4{\"a}
7329 \gdef^^e5{\ringaccent a}
7330 \gdef^^e6{\ae}
7331 \gdef^^e7{\cedilla c}
7332 \gdef^^e8{\`e}
7333 \gdef^^e9{\'e}
7334 \gdef^^ea{\^e}
7335 \gdef^^eb{\"e}
7336 \gdef^^ec{\`{\dotless i}}
7337 \gdef^^ed{\'{\dotless i}}
7338 \gdef^^ee{\^{\dotless i}}
7339 \gdef^^ef{\"{\dotless i}}
7340 %
7341 \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER ETH}}
7342 \gdef^^f1{\~n}
7343 \gdef^^f2{\`o}
7344 \gdef^^f3{\'o}
7345 \gdef^^f4{\^o}
7346 \gdef^^f5{\~o}
7347 \gdef^^f6{\"o}
7348 \gdef^^f7{$\div$}
7349 \gdef^^f8{\o}
7350 \gdef^^f9{\`u}
7351 \gdef^^fa{\'u}
7352 \gdef^^fb{\^u}
7353 \gdef^^fc{\"u}
7354 \gdef^^fd{\'y}
7355 \gdef^^fe{\missingcharmsg{LATIN SMALL LETTER THORN}}
7356 \gdef^^ff{\"y}
7357 }
7358
7359 % Latin9 (ISO-8859-15) encoding character definitions.
7360 \def\latninechardefs{%
7361 % Encoding is almost identical to Latin1.
7362 \latonechardefs
7363 %
7364 \gdef^^a4{\euro}
7365 \gdef^^a6{\v S}
7366 \gdef^^a8{\v s}
7367 \gdef^^b4{\v Z}
7368 \gdef^^b8{\v z}
7369 \gdef^^bc{\OE}
7370 \gdef^^bd{\oe}
7371 \gdef^^be{\"Y}
7372 }
7373
7374 % Latin2 (ISO-8859-2) character definitions.
7375 \def\lattwochardefs{%
7376 \gdef^^a0{~}
7377 \gdef^^a1{\missingcharmsg{LATIN CAPITAL LETTER A WITH OGONEK}}
7378 \gdef^^a2{\u{}}
7379 \gdef^^a3{\L}
7380 \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
7381 \gdef^^a5{\v L}
7382 \gdef^^a6{\'S}
7383 \gdef^^a7{\S}
7384 \gdef^^a8{\"{}}
7385 \gdef^^a9{\v S}
7386 \gdef^^aa{\cedilla S}
7387 \gdef^^ab{\v T}
7388 \gdef^^ac{\'Z}
7389 \gdef^^ad{\-}
7390 \gdef^^ae{\v Z}
7391 \gdef^^af{\dotaccent Z}
7392 %
7393 \gdef^^b0{\textdegree}
7394 \gdef^^b1{\missingcharmsg{LATIN SMALL LETTER A WITH OGONEK}}
7395 \gdef^^b2{\missingcharmsg{OGONEK}}
7396 \gdef^^b3{\l}
7397 \gdef^^b4{\'{}}
7398 \gdef^^b5{\v l}
7399 \gdef^^b6{\'s}
7400 \gdef^^b7{\v{}}
7401 \gdef^^b8{\cedilla\ }
7402 \gdef^^b9{\v s}
7403 \gdef^^ba{\cedilla s}
7404 \gdef^^bb{\v t}
7405 \gdef^^bc{\'z}
7406 \gdef^^bd{\H{}}
7407 \gdef^^be{\v z}
7408 \gdef^^bf{\dotaccent z}
7409 %
7410 \gdef^^c0{\'R}
7411 \gdef^^c1{\'A}
7412 \gdef^^c2{\^A}
7413 \gdef^^c3{\u A}
7414 \gdef^^c4{\"A}
7415 \gdef^^c5{\'L}
7416 \gdef^^c6{\'C}
7417 \gdef^^c7{\cedilla C}
7418 \gdef^^c8{\v C}
7419 \gdef^^c9{\'E}
7420 \gdef^^ca{\missingcharmsg{LATIN CAPITAL LETTER E WITH OGONEK}}
7421 \gdef^^cb{\"E}
7422 \gdef^^cc{\v E}
7423 \gdef^^cd{\'I}
7424 \gdef^^ce{\^I}
7425 \gdef^^cf{\v D}
7426 %
7427 \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER D WITH STROKE}}
7428 \gdef^^d1{\'N}
7429 \gdef^^d2{\v N}
7430 \gdef^^d3{\'O}
7431 \gdef^^d4{\^O}
7432 \gdef^^d5{\H O}
7433 \gdef^^d6{\"O}
7434 \gdef^^d7{$\times$}
7435 \gdef^^d8{\v R}
7436 \gdef^^d9{\ringaccent U}
7437 \gdef^^da{\'U}
7438 \gdef^^db{\H U}
7439 \gdef^^dc{\"U}
7440 \gdef^^dd{\'Y}
7441 \gdef^^de{\cedilla T}
7442 \gdef^^df{\ss}
7443 %
7444 \gdef^^e0{\'r}
7445 \gdef^^e1{\'a}
7446 \gdef^^e2{\^a}
7447 \gdef^^e3{\u a}
7448 \gdef^^e4{\"a}
7449 \gdef^^e5{\'l}
7450 \gdef^^e6{\'c}
7451 \gdef^^e7{\cedilla c}
7452 \gdef^^e8{\v c}
7453 \gdef^^e9{\'e}
7454 \gdef^^ea{\missingcharmsg{LATIN SMALL LETTER E WITH OGONEK}}
7455 \gdef^^eb{\"e}
7456 \gdef^^ec{\v e}
7457 \gdef^^ed{\'\i}
7458 \gdef^^ee{\^\i}
7459 \gdef^^ef{\v d}
7460 %
7461 \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER D WITH STROKE}}
7462 \gdef^^f1{\'n}
7463 \gdef^^f2{\v n}
7464 \gdef^^f3{\'o}
7465 \gdef^^f4{\^o}
7466 \gdef^^f5{\H o}
7467 \gdef^^f6{\"o}
7468 \gdef^^f7{$\div$}
7469 \gdef^^f8{\v r}
7470 \gdef^^f9{\ringaccent u}
7471 \gdef^^fa{\'u}
7472 \gdef^^fb{\H u}
7473 \gdef^^fc{\"u}
7474 \gdef^^fd{\'y}
7475 \gdef^^fe{\cedilla t}
7476 \gdef^^ff{\dotaccent{}}
7477 }
7478
7479 % UTF-8 character definitions.
7480 %
7481 % This code to support UTF-8 is based on LaTeX's utf8.def, with some
7482 % changes for Texinfo conventions. It is included here under the GPL by
7483 % permission from Frank Mittelbach and the LaTeX team.
7484 %
7485 \newcount\countUTFx
7486 \newcount\countUTFy
7487 \newcount\countUTFz
7488
7489 \gdef\UTFviiiTwoOctets#1#2{\expandafter
7490 \UTFviiiDefined\csname u8:#1\string #2\endcsname}
7491 %
7492 \gdef\UTFviiiThreeOctets#1#2#3{\expandafter
7493 \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname}
7494 %
7495 \gdef\UTFviiiFourOctets#1#2#3#4{\expandafter
7496 \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname}
7497
7498 \gdef\UTFviiiDefined#1{%
7499 \ifx #1\relax
7500 \message{\linenumber Unicode char \string #1 not defined for Texinfo}%
7501 \else
7502 \expandafter #1%
7503 \fi
7504 }
7505
7506 \begingroup
7507 \catcode`\~13
7508 \catcode`\"12
7509
7510 \def\UTFviiiLoop{%
7511 \global\catcode\countUTFx\active
7512 \uccode`\~\countUTFx
7513 \uppercase\expandafter{\UTFviiiTmp}%
7514 \advance\countUTFx by 1
7515 \ifnum\countUTFx < \countUTFy
7516 \expandafter\UTFviiiLoop
7517 \fi}
7518
7519 \countUTFx = "C2
7520 \countUTFy = "E0
7521 \def\UTFviiiTmp{%
7522 \xdef~{\noexpand\UTFviiiTwoOctets\string~}}
7523 \UTFviiiLoop
7524
7525 \countUTFx = "E0
7526 \countUTFy = "F0
7527 \def\UTFviiiTmp{%
7528 \xdef~{\noexpand\UTFviiiThreeOctets\string~}}
7529 \UTFviiiLoop
7530
7531 \countUTFx = "F0
7532 \countUTFy = "F4
7533 \def\UTFviiiTmp{%
7534 \xdef~{\noexpand\UTFviiiFourOctets\string~}}
7535 \UTFviiiLoop
7536 \endgroup
7537
7538 \begingroup
7539 \catcode`\"=12
7540 \catcode`\<=12
7541 \catcode`\.=12
7542 \catcode`\,=12
7543 \catcode`\;=12
7544 \catcode`\!=12
7545 \catcode`\~=13
7546
7547 \gdef\DeclareUnicodeCharacter#1#2{%
7548 \countUTFz = "#1\relax
7549 \wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
7550 \begingroup
7551 \parseXMLCharref
7552 \def\UTFviiiTwoOctets##1##2{%
7553 \csname u8:##1\string ##2\endcsname}%
7554 \def\UTFviiiThreeOctets##1##2##3{%
7555 \csname u8:##1\string ##2\string ##3\endcsname}%
7556 \def\UTFviiiFourOctets##1##2##3##4{%
7557 \csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
7558 \expandafter\expandafter\expandafter\expandafter
7559 \expandafter\expandafter\expandafter
7560 \gdef\UTFviiiTmp{#2}%
7561 \endgroup}
7562
7563 \gdef\parseXMLCharref{%
7564 \ifnum\countUTFz < "A0\relax
7565 \errhelp = \EMsimple
7566 \errmessage{Cannot define Unicode char value < 00A0}%
7567 \else\ifnum\countUTFz < "800\relax
7568 \parseUTFviiiA,%
7569 \parseUTFviiiB C\UTFviiiTwoOctets.,%
7570 \else\ifnum\countUTFz < "10000\relax
7571 \parseUTFviiiA;%
7572 \parseUTFviiiA,%
7573 \parseUTFviiiB E\UTFviiiThreeOctets.{,;}%
7574 \else
7575 \parseUTFviiiA;%
7576 \parseUTFviiiA,%
7577 \parseUTFviiiA!%
7578 \parseUTFviiiB F\UTFviiiFourOctets.{!,;}%
7579 \fi\fi\fi
7580 }
7581
7582 \gdef\parseUTFviiiA#1{%
7583 \countUTFx = \countUTFz
7584 \divide\countUTFz by 64
7585 \countUTFy = \countUTFz
7586 \multiply\countUTFz by 64
7587 \advance\countUTFx by -\countUTFz
7588 \advance\countUTFx by 128
7589 \uccode `#1\countUTFx
7590 \countUTFz = \countUTFy}
7591
7592 \gdef\parseUTFviiiB#1#2#3#4{%
7593 \advance\countUTFz by "#10\relax
7594 \uccode `#3\countUTFz
7595 \uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
7596 \endgroup
7597
7598 \def\utfeightchardefs{%
7599 \DeclareUnicodeCharacter{00A0}{\tie}
7600 \DeclareUnicodeCharacter{00A1}{\exclamdown}
7601 \DeclareUnicodeCharacter{00A3}{\pounds}
7602 \DeclareUnicodeCharacter{00A8}{\"{ }}
7603 \DeclareUnicodeCharacter{00A9}{\copyright}
7604 \DeclareUnicodeCharacter{00AA}{\ordf}
7605 \DeclareUnicodeCharacter{00AD}{\-}
7606 \DeclareUnicodeCharacter{00AE}{\registeredsymbol}
7607 \DeclareUnicodeCharacter{00AF}{\={ }}
7608
7609 \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
7610 \DeclareUnicodeCharacter{00B4}{\'{ }}
7611 \DeclareUnicodeCharacter{00B8}{\cedilla{ }}
7612 \DeclareUnicodeCharacter{00BA}{\ordm}
7613 \DeclareUnicodeCharacter{00BF}{\questiondown}
7614
7615 \DeclareUnicodeCharacter{00C0}{\`A}
7616 \DeclareUnicodeCharacter{00C1}{\'A}
7617 \DeclareUnicodeCharacter{00C2}{\^A}
7618 \DeclareUnicodeCharacter{00C3}{\~A}
7619 \DeclareUnicodeCharacter{00C4}{\"A}
7620 \DeclareUnicodeCharacter{00C5}{\AA}
7621 \DeclareUnicodeCharacter{00C6}{\AE}
7622 \DeclareUnicodeCharacter{00C7}{\cedilla{C}}
7623 \DeclareUnicodeCharacter{00C8}{\`E}
7624 \DeclareUnicodeCharacter{00C9}{\'E}
7625 \DeclareUnicodeCharacter{00CA}{\^E}
7626 \DeclareUnicodeCharacter{00CB}{\"E}
7627 \DeclareUnicodeCharacter{00CC}{\`I}
7628 \DeclareUnicodeCharacter{00CD}{\'I}
7629 \DeclareUnicodeCharacter{00CE}{\^I}
7630 \DeclareUnicodeCharacter{00CF}{\"I}
7631
7632 \DeclareUnicodeCharacter{00D1}{\~N}
7633 \DeclareUnicodeCharacter{00D2}{\`O}
7634 \DeclareUnicodeCharacter{00D3}{\'O}
7635 \DeclareUnicodeCharacter{00D4}{\^O}
7636 \DeclareUnicodeCharacter{00D5}{\~O}
7637 \DeclareUnicodeCharacter{00D6}{\"O}
7638 \DeclareUnicodeCharacter{00D8}{\O}
7639 \DeclareUnicodeCharacter{00D9}{\`U}
7640 \DeclareUnicodeCharacter{00DA}{\'U}
7641 \DeclareUnicodeCharacter{00DB}{\^U}
7642 \DeclareUnicodeCharacter{00DC}{\"U}
7643 \DeclareUnicodeCharacter{00DD}{\'Y}
7644 \DeclareUnicodeCharacter{00DF}{\ss}
7645
7646 \DeclareUnicodeCharacter{00E0}{\`a}
7647 \DeclareUnicodeCharacter{00E1}{\'a}
7648 \DeclareUnicodeCharacter{00E2}{\^a}
7649 \DeclareUnicodeCharacter{00E3}{\~a}
7650 \DeclareUnicodeCharacter{00E4}{\"a}
7651 \DeclareUnicodeCharacter{00E5}{\aa}
7652 \DeclareUnicodeCharacter{00E6}{\ae}
7653 \DeclareUnicodeCharacter{00E7}{\cedilla{c}}
7654 \DeclareUnicodeCharacter{00E8}{\`e}
7655 \DeclareUnicodeCharacter{00E9}{\'e}
7656 \DeclareUnicodeCharacter{00EA}{\^e}
7657 \DeclareUnicodeCharacter{00EB}{\"e}
7658 \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}
7659 \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}
7660 \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}
7661 \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}
7662
7663 \DeclareUnicodeCharacter{00F1}{\~n}
7664 \DeclareUnicodeCharacter{00F2}{\`o}
7665 \DeclareUnicodeCharacter{00F3}{\'o}
7666 \DeclareUnicodeCharacter{00F4}{\^o}
7667 \DeclareUnicodeCharacter{00F5}{\~o}
7668 \DeclareUnicodeCharacter{00F6}{\"o}
7669 \DeclareUnicodeCharacter{00F8}{\o}
7670 \DeclareUnicodeCharacter{00F9}{\`u}
7671 \DeclareUnicodeCharacter{00FA}{\'u}
7672 \DeclareUnicodeCharacter{00FB}{\^u}
7673 \DeclareUnicodeCharacter{00FC}{\"u}
7674 \DeclareUnicodeCharacter{00FD}{\'y}
7675 \DeclareUnicodeCharacter{00FF}{\"y}
7676
7677 \DeclareUnicodeCharacter{0100}{\=A}
7678 \DeclareUnicodeCharacter{0101}{\=a}
7679 \DeclareUnicodeCharacter{0102}{\u{A}}
7680 \DeclareUnicodeCharacter{0103}{\u{a}}
7681 \DeclareUnicodeCharacter{0106}{\'C}
7682 \DeclareUnicodeCharacter{0107}{\'c}
7683 \DeclareUnicodeCharacter{0108}{\^C}
7684 \DeclareUnicodeCharacter{0109}{\^c}
7685 \DeclareUnicodeCharacter{010A}{\dotaccent{C}}
7686 \DeclareUnicodeCharacter{010B}{\dotaccent{c}}
7687 \DeclareUnicodeCharacter{010C}{\v{C}}
7688 \DeclareUnicodeCharacter{010D}{\v{c}}
7689 \DeclareUnicodeCharacter{010E}{\v{D}}
7690
7691 \DeclareUnicodeCharacter{0112}{\=E}
7692 \DeclareUnicodeCharacter{0113}{\=e}
7693 \DeclareUnicodeCharacter{0114}{\u{E}}
7694 \DeclareUnicodeCharacter{0115}{\u{e}}
7695 \DeclareUnicodeCharacter{0116}{\dotaccent{E}}
7696 \DeclareUnicodeCharacter{0117}{\dotaccent{e}}
7697 \DeclareUnicodeCharacter{011A}{\v{E}}
7698 \DeclareUnicodeCharacter{011B}{\v{e}}
7699 \DeclareUnicodeCharacter{011C}{\^G}
7700 \DeclareUnicodeCharacter{011D}{\^g}
7701 \DeclareUnicodeCharacter{011E}{\u{G}}
7702 \DeclareUnicodeCharacter{011F}{\u{g}}
7703
7704 \DeclareUnicodeCharacter{0120}{\dotaccent{G}}
7705 \DeclareUnicodeCharacter{0121}{\dotaccent{g}}
7706 \DeclareUnicodeCharacter{0124}{\^H}
7707 \DeclareUnicodeCharacter{0125}{\^h}
7708 \DeclareUnicodeCharacter{0128}{\~I}
7709 \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}
7710 \DeclareUnicodeCharacter{012A}{\=I}
7711 \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}
7712 \DeclareUnicodeCharacter{012C}{\u{I}}
7713 \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}
7714
7715 \DeclareUnicodeCharacter{0130}{\dotaccent{I}}
7716 \DeclareUnicodeCharacter{0131}{\dotless{i}}
7717 \DeclareUnicodeCharacter{0132}{IJ}
7718 \DeclareUnicodeCharacter{0133}{ij}
7719 \DeclareUnicodeCharacter{0134}{\^J}
7720 \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}
7721 \DeclareUnicodeCharacter{0139}{\'L}
7722 \DeclareUnicodeCharacter{013A}{\'l}
7723
7724 \DeclareUnicodeCharacter{0141}{\L}
7725 \DeclareUnicodeCharacter{0142}{\l}
7726 \DeclareUnicodeCharacter{0143}{\'N}
7727 \DeclareUnicodeCharacter{0144}{\'n}
7728 \DeclareUnicodeCharacter{0147}{\v{N}}
7729 \DeclareUnicodeCharacter{0148}{\v{n}}
7730 \DeclareUnicodeCharacter{014C}{\=O}
7731 \DeclareUnicodeCharacter{014D}{\=o}
7732 \DeclareUnicodeCharacter{014E}{\u{O}}
7733 \DeclareUnicodeCharacter{014F}{\u{o}}
7734
7735 \DeclareUnicodeCharacter{0150}{\H{O}}
7736 \DeclareUnicodeCharacter{0151}{\H{o}}
7737 \DeclareUnicodeCharacter{0152}{\OE}
7738 \DeclareUnicodeCharacter{0153}{\oe}
7739 \DeclareUnicodeCharacter{0154}{\'R}
7740 \DeclareUnicodeCharacter{0155}{\'r}
7741 \DeclareUnicodeCharacter{0158}{\v{R}}
7742 \DeclareUnicodeCharacter{0159}{\v{r}}
7743 \DeclareUnicodeCharacter{015A}{\'S}
7744 \DeclareUnicodeCharacter{015B}{\'s}
7745 \DeclareUnicodeCharacter{015C}{\^S}
7746 \DeclareUnicodeCharacter{015D}{\^s}
7747 \DeclareUnicodeCharacter{015E}{\cedilla{S}}
7748 \DeclareUnicodeCharacter{015F}{\cedilla{s}}
7749
7750 \DeclareUnicodeCharacter{0160}{\v{S}}
7751 \DeclareUnicodeCharacter{0161}{\v{s}}
7752 \DeclareUnicodeCharacter{0162}{\cedilla{t}}
7753 \DeclareUnicodeCharacter{0163}{\cedilla{T}}
7754 \DeclareUnicodeCharacter{0164}{\v{T}}
7755
7756 \DeclareUnicodeCharacter{0168}{\~U}
7757 \DeclareUnicodeCharacter{0169}{\~u}
7758 \DeclareUnicodeCharacter{016A}{\=U}
7759 \DeclareUnicodeCharacter{016B}{\=u}
7760 \DeclareUnicodeCharacter{016C}{\u{U}}
7761 \DeclareUnicodeCharacter{016D}{\u{u}}
7762 \DeclareUnicodeCharacter{016E}{\ringaccent{U}}
7763 \DeclareUnicodeCharacter{016F}{\ringaccent{u}}
7764
7765 \DeclareUnicodeCharacter{0170}{\H{U}}
7766 \DeclareUnicodeCharacter{0171}{\H{u}}
7767 \DeclareUnicodeCharacter{0174}{\^W}
7768 \DeclareUnicodeCharacter{0175}{\^w}
7769 \DeclareUnicodeCharacter{0176}{\^Y}
7770 \DeclareUnicodeCharacter{0177}{\^y}
7771 \DeclareUnicodeCharacter{0178}{\"Y}
7772 \DeclareUnicodeCharacter{0179}{\'Z}
7773 \DeclareUnicodeCharacter{017A}{\'z}
7774 \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}
7775 \DeclareUnicodeCharacter{017C}{\dotaccent{z}}
7776 \DeclareUnicodeCharacter{017D}{\v{Z}}
7777 \DeclareUnicodeCharacter{017E}{\v{z}}
7778
7779 \DeclareUnicodeCharacter{01C4}{D\v{Z}}
7780 \DeclareUnicodeCharacter{01C5}{D\v{z}}
7781 \DeclareUnicodeCharacter{01C6}{d\v{z}}
7782 \DeclareUnicodeCharacter{01C7}{LJ}
7783 \DeclareUnicodeCharacter{01C8}{Lj}
7784 \DeclareUnicodeCharacter{01C9}{lj}
7785 \DeclareUnicodeCharacter{01CA}{NJ}
7786 \DeclareUnicodeCharacter{01CB}{Nj}
7787 \DeclareUnicodeCharacter{01CC}{nj}
7788 \DeclareUnicodeCharacter{01CD}{\v{A}}
7789 \DeclareUnicodeCharacter{01CE}{\v{a}}
7790 \DeclareUnicodeCharacter{01CF}{\v{I}}
7791
7792 \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}
7793 \DeclareUnicodeCharacter{01D1}{\v{O}}
7794 \DeclareUnicodeCharacter{01D2}{\v{o}}
7795 \DeclareUnicodeCharacter{01D3}{\v{U}}
7796 \DeclareUnicodeCharacter{01D4}{\v{u}}
7797
7798 \DeclareUnicodeCharacter{01E2}{\={\AE}}
7799 \DeclareUnicodeCharacter{01E3}{\={\ae}}
7800 \DeclareUnicodeCharacter{01E6}{\v{G}}
7801 \DeclareUnicodeCharacter{01E7}{\v{g}}
7802 \DeclareUnicodeCharacter{01E8}{\v{K}}
7803 \DeclareUnicodeCharacter{01E9}{\v{k}}
7804
7805 \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}
7806 \DeclareUnicodeCharacter{01F1}{DZ}
7807 \DeclareUnicodeCharacter{01F2}{Dz}
7808 \DeclareUnicodeCharacter{01F3}{dz}
7809 \DeclareUnicodeCharacter{01F4}{\'G}
7810 \DeclareUnicodeCharacter{01F5}{\'g}
7811 \DeclareUnicodeCharacter{01F8}{\`N}
7812 \DeclareUnicodeCharacter{01F9}{\`n}
7813 \DeclareUnicodeCharacter{01FC}{\'{\AE}}
7814 \DeclareUnicodeCharacter{01FD}{\'{\ae}}
7815 \DeclareUnicodeCharacter{01FE}{\'{\O}}
7816 \DeclareUnicodeCharacter{01FF}{\'{\o}}
7817
7818 \DeclareUnicodeCharacter{021E}{\v{H}}
7819 \DeclareUnicodeCharacter{021F}{\v{h}}
7820
7821 \DeclareUnicodeCharacter{0226}{\dotaccent{A}}
7822 \DeclareUnicodeCharacter{0227}{\dotaccent{a}}
7823 \DeclareUnicodeCharacter{0228}{\cedilla{E}}
7824 \DeclareUnicodeCharacter{0229}{\cedilla{e}}
7825 \DeclareUnicodeCharacter{022E}{\dotaccent{O}}
7826 \DeclareUnicodeCharacter{022F}{\dotaccent{o}}
7827
7828 \DeclareUnicodeCharacter{0232}{\=Y}
7829 \DeclareUnicodeCharacter{0233}{\=y}
7830 \DeclareUnicodeCharacter{0237}{\dotless{j}}
7831
7832 \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
7833 \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
7834 \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}
7835 \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}
7836 \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}
7837 \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}
7838 \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}
7839 \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}
7840 \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}
7841 \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}
7842 \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}
7843 \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}
7844
7845 \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}
7846 \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}
7847
7848 \DeclareUnicodeCharacter{1E20}{\=G}
7849 \DeclareUnicodeCharacter{1E21}{\=g}
7850 \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}
7851 \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}
7852 \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}
7853 \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}
7854 \DeclareUnicodeCharacter{1E26}{\"H}
7855 \DeclareUnicodeCharacter{1E27}{\"h}
7856
7857 \DeclareUnicodeCharacter{1E30}{\'K}
7858 \DeclareUnicodeCharacter{1E31}{\'k}
7859 \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}
7860 \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}
7861 \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}
7862 \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}
7863 \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}
7864 \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}
7865 \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}
7866 \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}
7867 \DeclareUnicodeCharacter{1E3E}{\'M}
7868 \DeclareUnicodeCharacter{1E3F}{\'m}
7869
7870 \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}
7871 \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}
7872 \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}
7873 \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}
7874 \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}
7875 \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}
7876 \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}
7877 \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}
7878 \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}
7879 \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}
7880
7881 \DeclareUnicodeCharacter{1E54}{\'P}
7882 \DeclareUnicodeCharacter{1E55}{\'p}
7883 \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}
7884 \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}
7885 \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}
7886 \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}
7887 \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}
7888 \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}
7889 \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}
7890 \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}
7891
7892 \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}
7893 \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}
7894 \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}
7895 \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}
7896 \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}
7897 \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}
7898 \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}
7899 \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}
7900 \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}
7901 \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}
7902
7903 \DeclareUnicodeCharacter{1E7C}{\~V}
7904 \DeclareUnicodeCharacter{1E7D}{\~v}
7905 \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}
7906 \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}
7907
7908 \DeclareUnicodeCharacter{1E80}{\`W}
7909 \DeclareUnicodeCharacter{1E81}{\`w}
7910 \DeclareUnicodeCharacter{1E82}{\'W}
7911 \DeclareUnicodeCharacter{1E83}{\'w}
7912 \DeclareUnicodeCharacter{1E84}{\"W}
7913 \DeclareUnicodeCharacter{1E85}{\"w}
7914 \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}
7915 \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}
7916 \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}
7917 \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}
7918 \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}
7919 \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}
7920 \DeclareUnicodeCharacter{1E8C}{\"X}
7921 \DeclareUnicodeCharacter{1E8D}{\"x}
7922 \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}
7923 \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}
7924
7925 \DeclareUnicodeCharacter{1E90}{\^Z}
7926 \DeclareUnicodeCharacter{1E91}{\^z}
7927 \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}
7928 \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}
7929 \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}
7930 \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}
7931 \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}
7932 \DeclareUnicodeCharacter{1E97}{\"t}
7933 \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}
7934 \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}
7935
7936 \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}
7937 \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}
7938
7939 \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}
7940 \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}
7941 \DeclareUnicodeCharacter{1EBC}{\~E}
7942 \DeclareUnicodeCharacter{1EBD}{\~e}
7943
7944 \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}
7945 \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}
7946 \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}
7947 \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}
7948
7949 \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}
7950 \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}
7951
7952 \DeclareUnicodeCharacter{1EF2}{\`Y}
7953 \DeclareUnicodeCharacter{1EF3}{\`y}
7954 \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}
7955
7956 \DeclareUnicodeCharacter{1EF8}{\~Y}
7957 \DeclareUnicodeCharacter{1EF9}{\~y}
7958
7959 \DeclareUnicodeCharacter{2013}{--}
7960 \DeclareUnicodeCharacter{2014}{---}
7961 \DeclareUnicodeCharacter{2022}{\bullet}
7962 \DeclareUnicodeCharacter{2026}{\dots}
7963 \DeclareUnicodeCharacter{20AC}{\euro}
7964
7965 \DeclareUnicodeCharacter{2192}{\expansion}
7966 \DeclareUnicodeCharacter{21D2}{\result}
7967
7968 \DeclareUnicodeCharacter{2212}{\minus}
7969 \DeclareUnicodeCharacter{2217}{\point}
7970 \DeclareUnicodeCharacter{2261}{\equiv}
7971 }% end of \utfeightchardefs
7972
7973
7974 % US-ASCII character definitions.
7975 \def\asciichardefs{% nothing need be done
7976 \relax
7977 }
7978
7979 % Make non-ASCII characters printable again for compatibility with
7980 % existing Texinfo documents that may use them, even without declaring a
7981 % document encoding.
7982 %
7983 \setnonasciicharscatcode \other
7984
7985
7986 \message{formatting,}
7987
7137 \newdimen\defaultparindent \defaultparindent = 15pt 7988 \newdimen\defaultparindent \defaultparindent = 15pt
7138 7989
7139 \chapheadingskip = 15pt plus 4pt minus 2pt 7990 \chapheadingskip = 15pt plus 4pt minus 2pt
7140 \secheadingskip = 12pt plus 3pt minus 2pt 7991 \secheadingskip = 12pt plus 3pt minus 2pt
7141 \subsecheadingskip = 9pt plus 2pt minus 2pt 7992 \subsecheadingskip = 9pt plus 2pt minus 2pt