Mercurial > emacs
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 |