aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarl Berry2007-04-07 15:49:05 +0000
committerKarl Berry2007-04-07 15:49:05 +0000
commit98bf69dcf1bbd1d9d2a21ba172c1c2c63cdf98d3 (patch)
tree2696ef326583c250c339a8c62cc92b1f94e5e2dc
parent522a910368e0c2bdd053df0458eec7fc9381698c (diff)
downloademacs-98bf69dcf1bbd1d9d2a21ba172c1c2c63cdf98d3.tar.gz
emacs-98bf69dcf1bbd1d9d2a21ba172c1c2c63cdf98d3.zip
page break fixes
-rw-r--r--man/texinfo.tex957
1 files changed, 904 insertions, 53 deletions
diff --git a/man/texinfo.tex b/man/texinfo.tex
index 302204c2721..331986b2f3e 100644
--- a/man/texinfo.tex
+++ b/man/texinfo.tex
@@ -3,11 +3,11 @@
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
@@ -67,7 +67,7 @@
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.
@@ -1225,8 +1225,9 @@ where each line of input produces a line of output.}
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.
@@ -1262,7 +1263,8 @@ 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}%
@@ -1279,20 +1281,15 @@ output) for that.)}
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
@@ -1314,21 +1311,25 @@ output) for that.)}
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%
@@ -1583,7 +1584,7 @@ output) for that.)}
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}
@@ -3746,11 +3747,7 @@ output) for that.)}
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}
@@ -3787,13 +3784,13 @@ output) for that.)}
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 ...
@@ -3817,13 +3814,19 @@ output) for that.)}
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
@@ -3832,10 +3835,10 @@ output) for that.)}
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
@@ -3849,13 +3852,14 @@ output) for that.)}
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
@@ -4167,6 +4171,34 @@ output) for that.)}
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.
@@ -5283,12 +5315,18 @@ output) for that.)}
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}
@@ -5589,27 +5627,35 @@ output) for that.)}
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.
@@ -5627,7 +5673,7 @@ output) for that.)}
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%
@@ -5645,7 +5691,7 @@ output) for that.)}
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
@@ -6245,7 +6291,6 @@ output) for that.)}
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
@@ -6312,7 +6357,7 @@ output) for that.)}
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}
@@ -6358,7 +6403,8 @@ output) for that.)}
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}%
@@ -6505,10 +6551,18 @@ output) for that.)}
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
@@ -6523,7 +6577,8 @@ output) for that.)}
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
@@ -6627,6 +6682,7 @@ output) for that.)}
6627 \input\jobname.#1 6682 \input\jobname.#1
6628\endgroup} 6683\endgroup}
6629 6684
6685
6630\message{insertions,} 6686\message{insertions,}
6631% including footnotes. 6687% including footnotes.
6632 6688
@@ -7101,8 +7157,8 @@ output) for that.)}
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
@@ -7126,14 +7182,809 @@ output) for that.)}
7126is empty. Maybe you need to install it? In the current directory 7182is empty. Maybe you need to install it? In the current directory
7127should work if nowhere else does.} 7183should work if nowhere else does.}
7128 7184
7185% Set the catcode of characters 128 through 255 to the specified number.
7186%
7187\def\setnonasciicharscatcode#1{%
7188 \count255=128
7189 \loop\ifnum\count255<256
7190 \global\catcode\count255=#1
7191 \advance\count255 by 1
7192 \repeat
7193}
7129 7194
7130% @documentencoding should change something in TeX eventually, most 7195% @documentencoding sets the definition of non-ASCII characters
7131% likely, but for now just recognize it. 7196% according to the specified encoding.
7132\let\documentencoding = \comment 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}
7133 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
7134 7488
7135% Page size parameters. 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}
7136% 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