root/doc_inner/gnu_global/S/1902.html

/* [<][>][^][v][top][bottom][index][help] */
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<title>doc_inner/gnu_global/S/8196.html</title>
<meta name='robots' content='noindex,nofollow' />
<meta name='generator' content='GLOBAL-6.6.14' />
<meta http-equiv='Content-Style-Type' content='text/css' />
<link rel='stylesheet' type='text/css' href='../style.css' />
</head>
<body>
<a id='TOP' name='TOP'></a><h2 class='header'><a href='../mains.html'>root</a>/<a href='../files/13684.html'>doc_inner</a>/<a href='../files/13687.html'>gnu_global</a>/<a href='../files/13692.html'>S</a>/8196.html</h2>
<em class='comment'>/* [&lt;][&gt;][^][v][top]<a href='#BOTTOM'>[bottom]</a><a href='../mains.html'>[index]</a><a href='../help.html'>[help]</a> */</em>
<hr />
<pre>
<a id='L1' name='L1'></a>&lt;!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'&gt;
<a id='L2' name='L2'></a>&lt;html xmlns='http://www.w3.org/1999/xhtml'&gt;
<a id='L3' name='L3'></a>&lt;head&gt;
<a id='L4' name='L4'></a>&lt;title&gt;doc/texinfo.tex&lt;/title&gt;
<a id='L5' name='L5'></a>&lt;meta name='robots' content='noindex,nofollow' /&gt;
<a id='L6' name='L6'></a>&lt;meta name='generator' content='GLOBAL-6.6.14' /&gt;
<a id='L7' name='L7'></a>&lt;meta http-equiv='Content-Style-Type' content='text/css' /&gt;
<a id='L8' name='L8'></a>&lt;link rel='stylesheet' type='text/css' href='../style.css' /&gt;
<a id='L9' name='L9'></a>&lt;/head&gt;
<a id='L10' name='L10'></a>&lt;body&gt;
<a id='L11' name='L11'></a>&lt;a id='TOP' name='TOP'&gt;&lt;/a&gt;&lt;h2 class='header'&gt;&lt;a href='../mains.html'&gt;root&lt;/a&gt;/&lt;a href='../files/8297.html'&gt;doc&lt;/a&gt;/texinfo.tex&lt;/h2&gt;
<a id='L12' name='L12'></a>&lt;em class='comment'&gt;/* [&amp;lt;][&amp;gt;][^][v][top]&lt;a href='#BOTTOM'&gt;[bottom]&lt;/a&gt;&lt;a href='../mains.html'&gt;[index]&lt;/a&gt;&lt;a href='../help.html'&gt;[help]&lt;/a&gt; */&lt;/em&gt;
<a id='L13' name='L13'></a>&lt;hr /&gt;
<a id='L14' name='L14'></a>&lt;pre&gt;
<a id='L15' name='L15'></a>&lt;a id='L1' name='L1'&gt;&lt;/a&gt;% texinfo.tex -- TeX macros to handle Texinfo files.
<a id='L16' name='L16'></a>&lt;a id='L2' name='L2'&gt;&lt;/a&gt;%
<a id='L17' name='L17'></a>&lt;a id='L3' name='L3'&gt;&lt;/a&gt;% Load plain if necessary, i.e., if running under initex.
<a id='L18' name='L18'></a>&lt;a id='L4' name='L4'&gt;&lt;/a&gt;\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
<a id='L19' name='L19'></a>&lt;a id='L5' name='L5'&gt;&lt;/a&gt;%
<a id='L20' name='L20'></a>&lt;a id='L6' name='L6'&gt;&lt;/a&gt;\def\texinfoversion{2013-12-21.11}
<a id='L21' name='L21'></a>&lt;a id='L7' name='L7'&gt;&lt;/a&gt;%
<a id='L22' name='L22'></a>&lt;a id='L8' name='L8'&gt;&lt;/a&gt;% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
<a id='L23' name='L23'></a>&lt;a id='L9' name='L9'&gt;&lt;/a&gt;% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
<a id='L24' name='L24'></a>&lt;a id='L10' name='L10'&gt;&lt;/a&gt;% 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
<a id='L25' name='L25'></a>&lt;a id='L11' name='L11'&gt;&lt;/a&gt;%
<a id='L26' name='L26'></a>&lt;a id='L12' name='L12'&gt;&lt;/a&gt;% This texinfo.tex file is free software: you can redistribute it and/or
<a id='L27' name='L27'></a>&lt;a id='L13' name='L13'&gt;&lt;/a&gt;% modify it under the terms of the GNU General Public License as
<a id='L28' name='L28'></a>&lt;a id='L14' name='L14'&gt;&lt;/a&gt;% published by the Free Software Foundation, either version 3 of the
<a id='L29' name='L29'></a>&lt;a id='L15' name='L15'&gt;&lt;/a&gt;% License, or (at your option) any later version.
<a id='L30' name='L30'></a>&lt;a id='L16' name='L16'&gt;&lt;/a&gt;%
<a id='L31' name='L31'></a>&lt;a id='L17' name='L17'&gt;&lt;/a&gt;% This texinfo.tex file is distributed in the hope that it will be
<a id='L32' name='L32'></a>&lt;a id='L18' name='L18'&gt;&lt;/a&gt;% useful, but WITHOUT ANY WARRANTY; without even the implied warranty
<a id='L33' name='L33'></a>&lt;a id='L19' name='L19'&gt;&lt;/a&gt;% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
<a id='L34' name='L34'></a>&lt;a id='L20' name='L20'&gt;&lt;/a&gt;% General Public License for more details.
<a id='L35' name='L35'></a>&lt;a id='L21' name='L21'&gt;&lt;/a&gt;%
<a id='L36' name='L36'></a>&lt;a id='L22' name='L22'&gt;&lt;/a&gt;% You should have received a copy of the GNU General Public License
<a id='L37' name='L37'></a>&lt;a id='L23' name='L23'&gt;&lt;/a&gt;% along with this program.  If not, see &amp;lt;http://www.gnu.org/licenses/&amp;gt;.
<a id='L38' name='L38'></a>&lt;a id='L24' name='L24'&gt;&lt;/a&gt;%
<a id='L39' name='L39'></a>&lt;a id='L25' name='L25'&gt;&lt;/a&gt;% As a special exception, when this file is read by TeX when processing
<a id='L40' name='L40'></a>&lt;a id='L26' name='L26'&gt;&lt;/a&gt;% a Texinfo source document, you may use the result without
<a id='L41' name='L41'></a>&lt;a id='L27' name='L27'&gt;&lt;/a&gt;% restriction. This Exception is an additional permission under section 7
<a id='L42' name='L42'></a>&lt;a id='L28' name='L28'&gt;&lt;/a&gt;% of the GNU General Public License, version 3 ("GPLv3").
<a id='L43' name='L43'></a>&lt;a id='L29' name='L29'&gt;&lt;/a&gt;%
<a id='L44' name='L44'></a>&lt;a id='L30' name='L30'&gt;&lt;/a&gt;% Please try the latest version of texinfo.tex before submitting bug
<a id='L45' name='L45'></a>&lt;a id='L31' name='L31'&gt;&lt;/a&gt;% reports; you can get the latest version from:
<a id='L46' name='L46'></a>&lt;a id='L32' name='L32'&gt;&lt;/a&gt;%   http://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or
<a id='L47' name='L47'></a>&lt;a id='L33' name='L33'&gt;&lt;/a&gt;%   http://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or
<a id='L48' name='L48'></a>&lt;a id='L34' name='L34'&gt;&lt;/a&gt;%   http://www.gnu.org/software/texinfo/ (the Texinfo home page)
<a id='L49' name='L49'></a>&lt;a id='L35' name='L35'&gt;&lt;/a&gt;% The texinfo.tex in any given distribution could well be out
<a id='L50' name='L50'></a>&lt;a id='L36' name='L36'&gt;&lt;/a&gt;% of date, so if that's what you're using, please check.
<a id='L51' name='L51'></a>&lt;a id='L37' name='L37'&gt;&lt;/a&gt;%
<a id='L52' name='L52'></a>&lt;a id='L38' name='L38'&gt;&lt;/a&gt;% Send bug reports to bug-texinfo@gnu.org.  Please include including a
<a id='L53' name='L53'></a>&lt;a id='L39' name='L39'&gt;&lt;/a&gt;% complete document in each bug report with which we can reproduce the
<a id='L54' name='L54'></a>&lt;a id='L40' name='L40'&gt;&lt;/a&gt;% problem.  Patches are, of course, greatly appreciated.
<a id='L55' name='L55'></a>&lt;a id='L41' name='L41'&gt;&lt;/a&gt;%
<a id='L56' name='L56'></a>&lt;a id='L42' name='L42'&gt;&lt;/a&gt;% To process a Texinfo manual with TeX, it's most reliable to use the
<a id='L57' name='L57'></a>&lt;a id='L43' name='L43'&gt;&lt;/a&gt;% texi2dvi shell script that comes with the distribution.  For a simple
<a id='L58' name='L58'></a>&lt;a id='L44' name='L44'&gt;&lt;/a&gt;% manual foo.texi, however, you can get away with this:
<a id='L59' name='L59'></a>&lt;a id='L45' name='L45'&gt;&lt;/a&gt;%   tex foo.texi
<a id='L60' name='L60'></a>&lt;a id='L46' name='L46'&gt;&lt;/a&gt;%   texindex foo.??
<a id='L61' name='L61'></a>&lt;a id='L47' name='L47'&gt;&lt;/a&gt;%   tex foo.texi
<a id='L62' name='L62'></a>&lt;a id='L48' name='L48'&gt;&lt;/a&gt;%   tex foo.texi
<a id='L63' name='L63'></a>&lt;a id='L49' name='L49'&gt;&lt;/a&gt;%   dvips foo.dvi -o  # or whatever; this makes foo.ps.
<a id='L64' name='L64'></a>&lt;a id='L50' name='L50'&gt;&lt;/a&gt;% The extra TeX runs get the cross-reference information correct.
<a id='L65' name='L65'></a>&lt;a id='L51' name='L51'&gt;&lt;/a&gt;% Sometimes one run after texindex suffices, and sometimes you need more
<a id='L66' name='L66'></a>&lt;a id='L52' name='L52'&gt;&lt;/a&gt;% than two; texi2dvi does it as many times as necessary.
<a id='L67' name='L67'></a>&lt;a id='L53' name='L53'&gt;&lt;/a&gt;%
<a id='L68' name='L68'></a>&lt;a id='L54' name='L54'&gt;&lt;/a&gt;% It is possible to adapt texinfo.tex for other languages, to some
<a id='L69' name='L69'></a>&lt;a id='L55' name='L55'&gt;&lt;/a&gt;% extent.  You can get the existing language-specific files from the
<a id='L70' name='L70'></a>&lt;a id='L56' name='L56'&gt;&lt;/a&gt;% full Texinfo distribution.
<a id='L71' name='L71'></a>&lt;a id='L57' name='L57'&gt;&lt;/a&gt;%
<a id='L72' name='L72'></a>&lt;a id='L58' name='L58'&gt;&lt;/a&gt;% The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
<a id='L73' name='L73'></a>&lt;a id='L59' name='L59'&gt;&lt;/a&gt;
<a id='L74' name='L74'></a>&lt;a id='L60' name='L60'&gt;&lt;/a&gt;
<a id='L75' name='L75'></a>&lt;a id='L61' name='L61'&gt;&lt;/a&gt;\message{Loading texinfo [version \texinfoversion]:}
<a id='L76' name='L76'></a>&lt;a id='L62' name='L62'&gt;&lt;/a&gt;
<a id='L77' name='L77'></a>&lt;a id='L63' name='L63'&gt;&lt;/a&gt;% If in a .fmt file, print the version number
<a id='L78' name='L78'></a>&lt;a id='L64' name='L64'&gt;&lt;/a&gt;% and turn on active characters that we couldn't do earlier because
<a id='L79' name='L79'></a>&lt;a id='L65' name='L65'&gt;&lt;/a&gt;% they might have appeared in the input file name.
<a id='L80' name='L80'></a>&lt;a id='L66' name='L66'&gt;&lt;/a&gt;\everyjob{\message{[Texinfo version \texinfoversion]}%
<a id='L81' name='L81'></a>&lt;a id='L67' name='L67'&gt;&lt;/a&gt;  \catcode`+=\active \catcode`\_=\active}
<a id='L82' name='L82'></a>&lt;a id='L68' name='L68'&gt;&lt;/a&gt;
<a id='L83' name='L83'></a>&lt;a id='L69' name='L69'&gt;&lt;/a&gt;% (Aug. 17, 1999 --ak)
<a id='L84' name='L84'></a>&lt;a id='L70' name='L70'&gt;&lt;/a&gt;% Japanese support. (pTeX is a free Japanese TeX by ASCII corp., Japan,
<a id='L85' name='L85'></a>&lt;a id='L71' name='L71'&gt;&lt;/a&gt;% and jTeX is a free Japanese TeX by NTT corp. and T. Sakurai)
<a id='L86' name='L86'></a>&lt;a id='L72' name='L72'&gt;&lt;/a&gt;\newif\ifjaTeX
<a id='L87' name='L87'></a>&lt;a id='L73' name='L73'&gt;&lt;/a&gt;\newif\ifpTeX
<a id='L88' name='L88'></a>&lt;a id='L74' name='L74'&gt;&lt;/a&gt;\newif\ifjTeX
<a id='L89' name='L89'></a>&lt;a id='L75' name='L75'&gt;&lt;/a&gt;\ifx\kanjiskip\undefined\else
<a id='L90' name='L90'></a>&lt;a id='L76' name='L76'&gt;&lt;/a&gt;  \pTeXtrue
<a id='L91' name='L91'></a>&lt;a id='L77' name='L77'&gt;&lt;/a&gt;  \jaTeXtrue
<a id='L92' name='L92'></a>&lt;a id='L78' name='L78'&gt;&lt;/a&gt;\fi
<a id='L93' name='L93'></a>&lt;a id='L79' name='L79'&gt;&lt;/a&gt;\ifx\jkern\undefined\else
<a id='L94' name='L94'></a>&lt;a id='L80' name='L80'&gt;&lt;/a&gt;  \jTeXtrue
<a id='L95' name='L95'></a>&lt;a id='L81' name='L81'&gt;&lt;/a&gt;  \jaTeXtrue
<a id='L96' name='L96'></a>&lt;a id='L82' name='L82'&gt;&lt;/a&gt;\fi
<a id='L97' name='L97'></a>&lt;a id='L83' name='L83'&gt;&lt;/a&gt;
<a id='L98' name='L98'></a>&lt;a id='L84' name='L84'&gt;&lt;/a&gt;\ifpTeX
<a id='L99' name='L99'></a>&lt;a id='L85' name='L85'&gt;&lt;/a&gt;\message{ASCII-pTeX,}
<a id='L100' name='L100'></a>&lt;a id='L86' name='L86'&gt;&lt;/a&gt;\fi
<a id='L101' name='L101'></a>&lt;a id='L87' name='L87'&gt;&lt;/a&gt;\ifjTeX
<a id='L102' name='L102'></a>&lt;a id='L88' name='L88'&gt;&lt;/a&gt;\message{NTT-jTeX,}
<a id='L103' name='L103'></a>&lt;a id='L89' name='L89'&gt;&lt;/a&gt;\fi
<a id='L104' name='L104'></a>&lt;a id='L90' name='L90'&gt;&lt;/a&gt;\chardef\other=12
<a id='L105' name='L105'></a>&lt;a id='L91' name='L91'&gt;&lt;/a&gt;
<a id='L106' name='L106'></a>&lt;a id='L92' name='L92'&gt;&lt;/a&gt;% We never want plain's \outer definition of \+ in Texinfo.
<a id='L107' name='L107'></a>&lt;a id='L93' name='L93'&gt;&lt;/a&gt;% For @tex, we can use \tabalign.
<a id='L108' name='L108'></a>&lt;a id='L94' name='L94'&gt;&lt;/a&gt;\let\+ = \relax
<a id='L109' name='L109'></a>&lt;a id='L95' name='L95'&gt;&lt;/a&gt;
<a id='L110' name='L110'></a>&lt;a id='L96' name='L96'&gt;&lt;/a&gt;% Save some plain tex macros whose names we will redefine.
<a id='L111' name='L111'></a>&lt;a id='L97' name='L97'&gt;&lt;/a&gt;\let\ptexb=\b
<a id='L112' name='L112'></a>&lt;a id='L98' name='L98'&gt;&lt;/a&gt;\let\ptexbullet=\bullet
<a id='L113' name='L113'></a>&lt;a id='L99' name='L99'&gt;&lt;/a&gt;\let\ptexc=\c
<a id='L114' name='L114'></a>&lt;a id='L100' name='L100'&gt;&lt;/a&gt;\let\ptexcomma=\,
<a id='L115' name='L115'></a>&lt;a id='L101' name='L101'&gt;&lt;/a&gt;\let\ptexdot=\.
<a id='L116' name='L116'></a>&lt;a id='L102' name='L102'&gt;&lt;/a&gt;\let\ptexdots=\dots
<a id='L117' name='L117'></a>&lt;a id='L103' name='L103'&gt;&lt;/a&gt;\let\ptexend=\end
<a id='L118' name='L118'></a>&lt;a id='L104' name='L104'&gt;&lt;/a&gt;\let\ptexequiv=\equiv
<a id='L119' name='L119'></a>&lt;a id='L105' name='L105'&gt;&lt;/a&gt;\let\ptexexclam=\!
<a id='L120' name='L120'></a>&lt;a id='L106' name='L106'&gt;&lt;/a&gt;\let\ptexfootnote=\footnote
<a id='L121' name='L121'></a>&lt;a id='L107' name='L107'&gt;&lt;/a&gt;\let\ptexgtr=&amp;gt;
<a id='L122' name='L122'></a>&lt;a id='L108' name='L108'&gt;&lt;/a&gt;\let\ptexhat=^
<a id='L123' name='L123'></a>&lt;a id='L109' name='L109'&gt;&lt;/a&gt;\let\ptexi=\i
<a id='L124' name='L124'></a>&lt;a id='L110' name='L110'&gt;&lt;/a&gt;\let\ptexindent=\indent
<a id='L125' name='L125'></a>&lt;a id='L111' name='L111'&gt;&lt;/a&gt;\let\ptexinsert=\insert
<a id='L126' name='L126'></a>&lt;a id='L112' name='L112'&gt;&lt;/a&gt;\let\ptexlbrace=\{
<a id='L127' name='L127'></a>&lt;a id='L113' name='L113'&gt;&lt;/a&gt;\let\ptexless=&amp;lt;
<a id='L128' name='L128'></a>&lt;a id='L114' name='L114'&gt;&lt;/a&gt;\let\ptexnewwrite\newwrite
<a id='L129' name='L129'></a>&lt;a id='L115' name='L115'&gt;&lt;/a&gt;\let\ptexnoindent=\noindent
<a id='L130' name='L130'></a>&lt;a id='L116' name='L116'&gt;&lt;/a&gt;\let\ptexplus=+
<a id='L131' name='L131'></a>&lt;a id='L117' name='L117'&gt;&lt;/a&gt;\let\ptexraggedright=\raggedright
<a id='L132' name='L132'></a>&lt;a id='L118' name='L118'&gt;&lt;/a&gt;\let\ptexrbrace=\}
<a id='L133' name='L133'></a>&lt;a id='L119' name='L119'&gt;&lt;/a&gt;\let\ptexslash=\/
<a id='L134' name='L134'></a>&lt;a id='L120' name='L120'&gt;&lt;/a&gt;\let\ptexstar=\*
<a id='L135' name='L135'></a>&lt;a id='L121' name='L121'&gt;&lt;/a&gt;\let\ptext=\t
<a id='L136' name='L136'></a>&lt;a id='L122' name='L122'&gt;&lt;/a&gt;\let\ptextop=\top
<a id='L137' name='L137'></a>&lt;a id='L123' name='L123'&gt;&lt;/a&gt;{\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode
<a id='L138' name='L138'></a>&lt;a id='L124' name='L124'&gt;&lt;/a&gt;
<a id='L139' name='L139'></a>&lt;a id='L125' name='L125'&gt;&lt;/a&gt;% If this character appears in an error message or help string, it
<a id='L140' name='L140'></a>&lt;a id='L126' name='L126'&gt;&lt;/a&gt;% starts a new line in the output.
<a id='L141' name='L141'></a>&lt;a id='L127' name='L127'&gt;&lt;/a&gt;\newlinechar = `^^J
<a id='L142' name='L142'></a>&lt;a id='L128' name='L128'&gt;&lt;/a&gt;
<a id='L143' name='L143'></a>&lt;a id='L129' name='L129'&gt;&lt;/a&gt;% Use TeX 3.0's \inputlineno to get the line number, for better error
<a id='L144' name='L144'></a>&lt;a id='L130' name='L130'&gt;&lt;/a&gt;% messages, but if we're using an old version of TeX, don't do anything.
<a id='L145' name='L145'></a>&lt;a id='L131' name='L131'&gt;&lt;/a&gt;%
<a id='L146' name='L146'></a>&lt;a id='L132' name='L132'&gt;&lt;/a&gt;\ifx\inputlineno\thisisundefined
<a id='L147' name='L147'></a>&lt;a id='L133' name='L133'&gt;&lt;/a&gt;  \let\linenumber = \empty % Pre-3.0.
<a id='L148' name='L148'></a>&lt;a id='L134' name='L134'&gt;&lt;/a&gt;\else
<a id='L149' name='L149'></a>&lt;a id='L135' name='L135'&gt;&lt;/a&gt;  \def\linenumber{l.\the\inputlineno:\space}
<a id='L150' name='L150'></a>&lt;a id='L136' name='L136'&gt;&lt;/a&gt;\fi
<a id='L151' name='L151'></a>&lt;a id='L137' name='L137'&gt;&lt;/a&gt;
<a id='L152' name='L152'></a>&lt;a id='L138' name='L138'&gt;&lt;/a&gt;% Set up fixed words for English if not already set.
<a id='L153' name='L153'></a>&lt;a id='L139' name='L139'&gt;&lt;/a&gt;\ifx\putwordAppendix\undefined  \gdef\putwordAppendix{付録}\fi
<a id='L154' name='L154'></a>&lt;a id='L140' name='L140'&gt;&lt;/a&gt;\ifx\putwordChapter\undefined   \gdef\putwordChapter{章}\fi
<a id='L155' name='L155'></a>&lt;a id='L141' name='L141'&gt;&lt;/a&gt;\ifx\putworderror\undefined     \gdef\putworderror{エラー}\fi
<a id='L156' name='L156'></a>&lt;a id='L142' name='L142'&gt;&lt;/a&gt;\ifx\putwordfile\undefined      \gdef\putwordfile{ファイル}\fi
<a id='L157' name='L157'></a>&lt;a id='L143' name='L143'&gt;&lt;/a&gt;\ifx\putwordin\undefined        \gdef\putwordin{in}\fi
<a id='L158' name='L158'></a>&lt;a id='L144' name='L144'&gt;&lt;/a&gt;\ifx\putwordIndexIsEmpty\undefined       \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
<a id='L159' name='L159'></a>&lt;a id='L145' name='L145'&gt;&lt;/a&gt;\ifx\putwordIndexNonexistent\undefined   \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
<a id='L160' name='L160'></a>&lt;a id='L146' name='L146'&gt;&lt;/a&gt;\ifx\putwordInfo\undefined      \gdef\putwordInfo{Info}\fi
<a id='L161' name='L161'></a>&lt;a id='L147' name='L147'&gt;&lt;/a&gt;\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
<a id='L162' name='L162'></a>&lt;a id='L148' name='L148'&gt;&lt;/a&gt;\ifx\putwordMethodon\undefined  \gdef\putwordMethodon{Method on}\fi
<a id='L163' name='L163'></a>&lt;a id='L149' name='L149'&gt;&lt;/a&gt;\ifx\putwordNoTitle\undefined   \gdef\putwordNoTitle{No Title}\fi
<a id='L164' name='L164'></a>&lt;a id='L150' name='L150'&gt;&lt;/a&gt;\ifx\putwordof\undefined        \gdef\putwordof{of}\fi
<a id='L165' name='L165'></a>&lt;a id='L151' name='L151'&gt;&lt;/a&gt;\ifx\putwordon\undefined        \gdef\putwordon{on}\fi
<a id='L166' name='L166'></a>&lt;a id='L152' name='L152'&gt;&lt;/a&gt;\ifx\putwordpage\undefined      \gdef\putwordpage{ページ}\fi
<a id='L167' name='L167'></a>&lt;a id='L153' name='L153'&gt;&lt;/a&gt;\ifx\putwordsection\undefined   \gdef\putwordsection{セクション}\fi
<a id='L168' name='L168'></a>&lt;a id='L154' name='L154'&gt;&lt;/a&gt;\ifx\putwordSection\undefined   \gdef\putwordSection{セクション}\fi
<a id='L169' name='L169'></a>&lt;a id='L155' name='L155'&gt;&lt;/a&gt;\ifx\putwordsee\undefined       \gdef\putwordsee{See}\fi
<a id='L170' name='L170'></a>&lt;a id='L156' name='L156'&gt;&lt;/a&gt;\ifx\putwordSee\undefined       \gdef\putwordSee{See}\fi
<a id='L171' name='L171'></a>&lt;a id='L157' name='L157'&gt;&lt;/a&gt;\ifx\putwordShortTOC\undefined  \gdef\putwordShortTOC{Short Contents}\fi
<a id='L172' name='L172'></a>&lt;a id='L158' name='L158'&gt;&lt;/a&gt;\ifx\putwordTOC\undefined       \gdef\putwordTOC{目次}\fi
<a id='L173' name='L173'></a>&lt;a id='L159' name='L159'&gt;&lt;/a&gt;%
<a id='L174' name='L174'></a>&lt;a id='L160' name='L160'&gt;&lt;/a&gt;\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi
<a id='L175' name='L175'></a>&lt;a id='L161' name='L161'&gt;&lt;/a&gt;\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi
<a id='L176' name='L176'></a>&lt;a id='L162' name='L162'&gt;&lt;/a&gt;\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi
<a id='L177' name='L177'></a>&lt;a id='L163' name='L163'&gt;&lt;/a&gt;\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi
<a id='L178' name='L178'></a>&lt;a id='L164' name='L164'&gt;&lt;/a&gt;\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi
<a id='L179' name='L179'></a>&lt;a id='L165' name='L165'&gt;&lt;/a&gt;\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi
<a id='L180' name='L180'></a>&lt;a id='L166' name='L166'&gt;&lt;/a&gt;\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi
<a id='L181' name='L181'></a>&lt;a id='L167' name='L167'&gt;&lt;/a&gt;\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi
<a id='L182' name='L182'></a>&lt;a id='L168' name='L168'&gt;&lt;/a&gt;\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi
<a id='L183' name='L183'></a>&lt;a id='L169' name='L169'&gt;&lt;/a&gt;\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi
<a id='L184' name='L184'></a>&lt;a id='L170' name='L170'&gt;&lt;/a&gt;\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi
<a id='L185' name='L185'></a>&lt;a id='L171' name='L171'&gt;&lt;/a&gt;\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi
<a id='L186' name='L186'></a>&lt;a id='L172' name='L172'&gt;&lt;/a&gt;%
<a id='L187' name='L187'></a>&lt;a id='L173' name='L173'&gt;&lt;/a&gt;\ifx\putwordDefmac\undefined    \gdef\putwordDefmac{Macro}\fi
<a id='L188' name='L188'></a>&lt;a id='L174' name='L174'&gt;&lt;/a&gt;\ifx\putwordDefspec\undefined   \gdef\putwordDefspec{Special Form}\fi
<a id='L189' name='L189'></a>&lt;a id='L175' name='L175'&gt;&lt;/a&gt;\ifx\putwordDefvar\undefined    \gdef\putwordDefvar{Variable}\fi
<a id='L190' name='L190'></a>&lt;a id='L176' name='L176'&gt;&lt;/a&gt;\ifx\putwordDefopt\undefined    \gdef\putwordDefopt{User Option}\fi
<a id='L191' name='L191'></a>&lt;a id='L177' name='L177'&gt;&lt;/a&gt;\ifx\putwordDeffunc\undefined   \gdef\putwordDeffunc{Function}\fi
<a id='L192' name='L192'></a>&lt;a id='L178' name='L178'&gt;&lt;/a&gt;
<a id='L193' name='L193'></a>&lt;a id='L179' name='L179'&gt;&lt;/a&gt;% Since the category of space is not known, we have to be careful.
<a id='L194' name='L194'></a>&lt;a id='L180' name='L180'&gt;&lt;/a&gt;\chardef\spacecat = 10
<a id='L195' name='L195'></a>&lt;a id='L181' name='L181'&gt;&lt;/a&gt;\def\spaceisspace{\catcode`\ =\spacecat}
<a id='L196' name='L196'></a>&lt;a id='L182' name='L182'&gt;&lt;/a&gt;
<a id='L197' name='L197'></a>&lt;a id='L183' name='L183'&gt;&lt;/a&gt;% sometimes characters are active, so we need control sequences.
<a id='L198' name='L198'></a>&lt;a id='L184' name='L184'&gt;&lt;/a&gt;\chardef\ampChar   = `\&amp;amp;
<a id='L199' name='L199'></a>&lt;a id='L185' name='L185'&gt;&lt;/a&gt;\chardef\colonChar = `\:
<a id='L200' name='L200'></a>&lt;a id='L186' name='L186'&gt;&lt;/a&gt;\chardef\commaChar = `\,
<a id='L201' name='L201'></a>&lt;a id='L187' name='L187'&gt;&lt;/a&gt;\chardef\dashChar  = `\-
<a id='L202' name='L202'></a>&lt;a id='L188' name='L188'&gt;&lt;/a&gt;\chardef\dotChar   = `\.
<a id='L203' name='L203'></a>&lt;a id='L189' name='L189'&gt;&lt;/a&gt;\chardef\exclamChar= `\!
<a id='L204' name='L204'></a>&lt;a id='L190' name='L190'&gt;&lt;/a&gt;\chardef\hashChar  = `\#
<a id='L205' name='L205'></a>&lt;a id='L191' name='L191'&gt;&lt;/a&gt;\chardef\lquoteChar= `\`
<a id='L206' name='L206'></a>&lt;a id='L192' name='L192'&gt;&lt;/a&gt;\chardef\questChar = `\?
<a id='L207' name='L207'></a>&lt;a id='L193' name='L193'&gt;&lt;/a&gt;\chardef\rquoteChar= `\'
<a id='L208' name='L208'></a>&lt;a id='L194' name='L194'&gt;&lt;/a&gt;\chardef\semiChar  = `\;
<a id='L209' name='L209'></a>&lt;a id='L195' name='L195'&gt;&lt;/a&gt;\chardef\slashChar = `\/
<a id='L210' name='L210'></a>&lt;a id='L196' name='L196'&gt;&lt;/a&gt;\chardef\underChar = `\_
<a id='L211' name='L211'></a>&lt;a id='L197' name='L197'&gt;&lt;/a&gt;
<a id='L212' name='L212'></a>&lt;a id='L198' name='L198'&gt;&lt;/a&gt;% Ignore a token.
<a id='L213' name='L213'></a>&lt;a id='L199' name='L199'&gt;&lt;/a&gt;%
<a id='L214' name='L214'></a>&lt;a id='L200' name='L200'&gt;&lt;/a&gt;\def\gobble#1{}
<a id='L215' name='L215'></a>&lt;a id='L201' name='L201'&gt;&lt;/a&gt;
<a id='L216' name='L216'></a>&lt;a id='L202' name='L202'&gt;&lt;/a&gt;% The following is used inside several \edef's.
<a id='L217' name='L217'></a>&lt;a id='L203' name='L203'&gt;&lt;/a&gt;\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname}
<a id='L218' name='L218'></a>&lt;a id='L204' name='L204'&gt;&lt;/a&gt;
<a id='L219' name='L219'></a>&lt;a id='L205' name='L205'&gt;&lt;/a&gt;% Hyphenation fixes.
<a id='L220' name='L220'></a>&lt;a id='L206' name='L206'&gt;&lt;/a&gt;\hyphenation{
<a id='L221' name='L221'></a>&lt;a id='L207' name='L207'&gt;&lt;/a&gt;  Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script
<a id='L222' name='L222'></a>&lt;a id='L208' name='L208'&gt;&lt;/a&gt;  ap-pen-dix bit-map bit-maps
<a id='L223' name='L223'></a>&lt;a id='L209' name='L209'&gt;&lt;/a&gt;  data-base data-bases eshell fall-ing half-way long-est man-u-script
<a id='L224' name='L224'></a>&lt;a id='L210' name='L210'&gt;&lt;/a&gt;  man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm
<a id='L225' name='L225'></a>&lt;a id='L211' name='L211'&gt;&lt;/a&gt;  par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces
<a id='L226' name='L226'></a>&lt;a id='L212' name='L212'&gt;&lt;/a&gt;  spell-ing spell-ings
<a id='L227' name='L227'></a>&lt;a id='L213' name='L213'&gt;&lt;/a&gt;  stand-alone strong-est time-stamp time-stamps which-ever white-space
<a id='L228' name='L228'></a>&lt;a id='L214' name='L214'&gt;&lt;/a&gt;  wide-spread wrap-around
<a id='L229' name='L229'></a>&lt;a id='L215' name='L215'&gt;&lt;/a&gt;}
<a id='L230' name='L230'></a>&lt;a id='L216' name='L216'&gt;&lt;/a&gt;
<a id='L231' name='L231'></a>&lt;a id='L217' name='L217'&gt;&lt;/a&gt;% Margin to add to right of even pages, to left of odd pages.
<a id='L232' name='L232'></a>&lt;a id='L218' name='L218'&gt;&lt;/a&gt;\newdimen\bindingoffset
<a id='L233' name='L233'></a>&lt;a id='L219' name='L219'&gt;&lt;/a&gt;\newdimen\normaloffset
<a id='L234' name='L234'></a>&lt;a id='L220' name='L220'&gt;&lt;/a&gt;\newdimen\pagewidth \newdimen\pageheight
<a id='L235' name='L235'></a>&lt;a id='L221' name='L221'&gt;&lt;/a&gt;
<a id='L236' name='L236'></a>&lt;a id='L222' name='L222'&gt;&lt;/a&gt;% For a final copy, take out the rectangles
<a id='L237' name='L237'></a>&lt;a id='L223' name='L223'&gt;&lt;/a&gt;% that mark overfull boxes (in case you have decided
<a id='L238' name='L238'></a>&lt;a id='L224' name='L224'&gt;&lt;/a&gt;% that the text looks ok even though it passes the margin).
<a id='L239' name='L239'></a>&lt;a id='L225' name='L225'&gt;&lt;/a&gt;%
<a id='L240' name='L240'></a>&lt;a id='L226' name='L226'&gt;&lt;/a&gt;\def\finalout{\overfullrule=0pt }
<a id='L241' name='L241'></a>&lt;a id='L227' name='L227'&gt;&lt;/a&gt;
<a id='L242' name='L242'></a>&lt;a id='L228' name='L228'&gt;&lt;/a&gt;% Sometimes it is convenient to have everything in the transcript file
<a id='L243' name='L243'></a>&lt;a id='L229' name='L229'&gt;&lt;/a&gt;% and nothing on the terminal.  We don't just call \tracingall here,
<a id='L244' name='L244'></a>&lt;a id='L230' name='L230'&gt;&lt;/a&gt;% since that produces some useless output on the terminal.  We also make
<a id='L245' name='L245'></a>&lt;a id='L231' name='L231'&gt;&lt;/a&gt;% some effort to order the tracing commands to reduce output in the log
<a id='L246' name='L246'></a>&lt;a id='L232' name='L232'&gt;&lt;/a&gt;% file; cf. trace.sty in LaTeX.
<a id='L247' name='L247'></a>&lt;a id='L233' name='L233'&gt;&lt;/a&gt;%
<a id='L248' name='L248'></a>&lt;a id='L234' name='L234'&gt;&lt;/a&gt;\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
<a id='L249' name='L249'></a>&lt;a id='L235' name='L235'&gt;&lt;/a&gt;\def\loggingall{%
<a id='L250' name='L250'></a>&lt;a id='L236' name='L236'&gt;&lt;/a&gt;  \tracingstats2
<a id='L251' name='L251'></a>&lt;a id='L237' name='L237'&gt;&lt;/a&gt;  \tracingpages1
<a id='L252' name='L252'></a>&lt;a id='L238' name='L238'&gt;&lt;/a&gt;  \tracinglostchars2  % 2 gives us more in etex
<a id='L253' name='L253'></a>&lt;a id='L239' name='L239'&gt;&lt;/a&gt;  \tracingparagraphs1
<a id='L254' name='L254'></a>&lt;a id='L240' name='L240'&gt;&lt;/a&gt;  \tracingoutput1
<a id='L255' name='L255'></a>&lt;a id='L241' name='L241'&gt;&lt;/a&gt;  \tracingmacros2
<a id='L256' name='L256'></a>&lt;a id='L242' name='L242'&gt;&lt;/a&gt;  \tracingrestores1
<a id='L257' name='L257'></a>&lt;a id='L243' name='L243'&gt;&lt;/a&gt;  \showboxbreadth\maxdimen \showboxdepth\maxdimen
<a id='L258' name='L258'></a>&lt;a id='L244' name='L244'&gt;&lt;/a&gt;  \ifx\eTeXversion\thisisundefined\else % etex gives us more logging
<a id='L259' name='L259'></a>&lt;a id='L245' name='L245'&gt;&lt;/a&gt;    \tracingscantokens1
<a id='L260' name='L260'></a>&lt;a id='L246' name='L246'&gt;&lt;/a&gt;    \tracingifs1
<a id='L261' name='L261'></a>&lt;a id='L247' name='L247'&gt;&lt;/a&gt;    \tracinggroups1
<a id='L262' name='L262'></a>&lt;a id='L248' name='L248'&gt;&lt;/a&gt;    \tracingnesting2
<a id='L263' name='L263'></a>&lt;a id='L249' name='L249'&gt;&lt;/a&gt;    \tracingassigns1
<a id='L264' name='L264'></a>&lt;a id='L250' name='L250'&gt;&lt;/a&gt;  \fi
<a id='L265' name='L265'></a>&lt;a id='L251' name='L251'&gt;&lt;/a&gt;  \tracingcommands3  % 3 gives us more in etex
<a id='L266' name='L266'></a>&lt;a id='L252' name='L252'&gt;&lt;/a&gt;  \errorcontextlines16
<a id='L267' name='L267'></a>&lt;a id='L253' name='L253'&gt;&lt;/a&gt;}%
<a id='L268' name='L268'></a>&lt;a id='L254' name='L254'&gt;&lt;/a&gt;
<a id='L269' name='L269'></a>&lt;a id='L255' name='L255'&gt;&lt;/a&gt;% @errormsg{MSG}.  Do the index-like expansions on MSG, but if things
<a id='L270' name='L270'></a>&lt;a id='L256' name='L256'&gt;&lt;/a&gt;% aren't perfect, it's not the end of the world, being an error message,
<a id='L271' name='L271'></a>&lt;a id='L257' name='L257'&gt;&lt;/a&gt;% after all.
<a id='L272' name='L272'></a>&lt;a id='L258' name='L258'&gt;&lt;/a&gt;% 
<a id='L273' name='L273'></a>&lt;a id='L259' name='L259'&gt;&lt;/a&gt;\def\errormsg{\begingroup \indexnofonts \doerrormsg}
<a id='L274' name='L274'></a>&lt;a id='L260' name='L260'&gt;&lt;/a&gt;\def\doerrormsg#1{\errmessage{#1}}
<a id='L275' name='L275'></a>&lt;a id='L261' name='L261'&gt;&lt;/a&gt;
<a id='L276' name='L276'></a>&lt;a id='L262' name='L262'&gt;&lt;/a&gt;% add check for \lastpenalty to plain's definitions.  If the last thing
<a id='L277' name='L277'></a>&lt;a id='L263' name='L263'&gt;&lt;/a&gt;% we did was a \nobreak, we don't want to insert more space.
<a id='L278' name='L278'></a>&lt;a id='L264' name='L264'&gt;&lt;/a&gt;%
<a id='L279' name='L279'></a>&lt;a id='L265' name='L265'&gt;&lt;/a&gt;\def\smallbreak{\ifnum\lastpenalty&amp;lt;10000\par\ifdim\lastskip&amp;lt;\smallskipamount
<a id='L280' name='L280'></a>&lt;a id='L266' name='L266'&gt;&lt;/a&gt;  \removelastskip\penalty-50\smallskip\fi\fi}
<a id='L281' name='L281'></a>&lt;a id='L267' name='L267'&gt;&lt;/a&gt;\def\medbreak{\ifnum\lastpenalty&amp;lt;10000\par\ifdim\lastskip&amp;lt;\medskipamount
<a id='L282' name='L282'></a>&lt;a id='L268' name='L268'&gt;&lt;/a&gt;  \removelastskip\penalty-100\medskip\fi\fi}
<a id='L283' name='L283'></a>&lt;a id='L269' name='L269'&gt;&lt;/a&gt;\def\bigbreak{\ifnum\lastpenalty&amp;lt;10000\par\ifdim\lastskip&amp;lt;\bigskipamount
<a id='L284' name='L284'></a>&lt;a id='L270' name='L270'&gt;&lt;/a&gt;  \removelastskip\penalty-200\bigskip\fi\fi}
<a id='L285' name='L285'></a>&lt;a id='L271' name='L271'&gt;&lt;/a&gt;
<a id='L286' name='L286'></a>&lt;a id='L272' name='L272'&gt;&lt;/a&gt;% Do @cropmarks to get crop marks.
<a id='L287' name='L287'></a>&lt;a id='L273' name='L273'&gt;&lt;/a&gt;%
<a id='L288' name='L288'></a>&lt;a id='L274' name='L274'&gt;&lt;/a&gt;\newif\ifcropmarks
<a id='L289' name='L289'></a>&lt;a id='L275' name='L275'&gt;&lt;/a&gt;\let\cropmarks = \cropmarkstrue
<a id='L290' name='L290'></a>&lt;a id='L276' name='L276'&gt;&lt;/a&gt;%
<a id='L291' name='L291'></a>&lt;a id='L277' name='L277'&gt;&lt;/a&gt;% Dimensions to add cropmarks at corners.
<a id='L292' name='L292'></a>&lt;a id='L278' name='L278'&gt;&lt;/a&gt;% Added by P. A. MacKay, 12 Nov. 1986
<a id='L293' name='L293'></a>&lt;a id='L279' name='L279'&gt;&lt;/a&gt;%
<a id='L294' name='L294'></a>&lt;a id='L280' name='L280'&gt;&lt;/a&gt;\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines
<a id='L295' name='L295'></a>&lt;a id='L281' name='L281'&gt;&lt;/a&gt;\newdimen\cornerlong  \cornerlong=1pc
<a id='L296' name='L296'></a>&lt;a id='L282' name='L282'&gt;&lt;/a&gt;\newdimen\cornerthick \cornerthick=.3pt
<a id='L297' name='L297'></a>&lt;a id='L283' name='L283'&gt;&lt;/a&gt;\newdimen\topandbottommargin \topandbottommargin=.75in
<a id='L298' name='L298'></a>&lt;a id='L284' name='L284'&gt;&lt;/a&gt;
<a id='L299' name='L299'></a>&lt;a id='L285' name='L285'&gt;&lt;/a&gt;% Output a mark which sets \thischapter, \thissection and \thiscolor.
<a id='L300' name='L300'></a>&lt;a id='L286' name='L286'&gt;&lt;/a&gt;% We dump everything together because we only have one kind of mark.
<a id='L301' name='L301'></a>&lt;a id='L287' name='L287'&gt;&lt;/a&gt;% This works because we only use \botmark / \topmark, not \firstmark.
<a id='L302' name='L302'></a>&lt;a id='L288' name='L288'&gt;&lt;/a&gt;%
<a id='L303' name='L303'></a>&lt;a id='L289' name='L289'&gt;&lt;/a&gt;% A mark contains a subexpression of the \ifcase ... \fi construct.
<a id='L304' name='L304'></a>&lt;a id='L290' name='L290'&gt;&lt;/a&gt;% \get*marks macros below extract the needed part using \ifcase.
<a id='L305' name='L305'></a>&lt;a id='L291' name='L291'&gt;&lt;/a&gt;%
<a id='L306' name='L306'></a>&lt;a id='L292' name='L292'&gt;&lt;/a&gt;% Another complication is to let the user choose whether \thischapter
<a id='L307' name='L307'></a>&lt;a id='L293' name='L293'&gt;&lt;/a&gt;% (\thissection) refers to the chapter (section) in effect at the top
<a id='L308' name='L308'></a>&lt;a id='L294' name='L294'&gt;&lt;/a&gt;% of a page, or that at the bottom of a page.  The solution is
<a id='L309' name='L309'></a>&lt;a id='L295' name='L295'&gt;&lt;/a&gt;% described on page 260 of The TeXbook.  It involves outputting two
<a id='L310' name='L310'></a>&lt;a id='L296' name='L296'&gt;&lt;/a&gt;% marks for the sectioning macros, one before the section break, and
<a id='L311' name='L311'></a>&lt;a id='L297' name='L297'&gt;&lt;/a&gt;% one after.  I won't pretend I can describe this better than DEK...
<a id='L312' name='L312'></a>&lt;a id='L298' name='L298'&gt;&lt;/a&gt;\def\domark{%
<a id='L313' name='L313'></a>&lt;a id='L299' name='L299'&gt;&lt;/a&gt;  \toks0=\expandafter{\lastchapterdefs}%
<a id='L314' name='L314'></a>&lt;a id='L300' name='L300'&gt;&lt;/a&gt;  \toks2=\expandafter{\lastsectiondefs}%
<a id='L315' name='L315'></a>&lt;a id='L301' name='L301'&gt;&lt;/a&gt;  \toks4=\expandafter{\prevchapterdefs}%
<a id='L316' name='L316'></a>&lt;a id='L302' name='L302'&gt;&lt;/a&gt;  \toks6=\expandafter{\prevsectiondefs}%
<a id='L317' name='L317'></a>&lt;a id='L303' name='L303'&gt;&lt;/a&gt;  \toks8=\expandafter{\lastcolordefs}%
<a id='L318' name='L318'></a>&lt;a id='L304' name='L304'&gt;&lt;/a&gt;  \mark{%
<a id='L319' name='L319'></a>&lt;a id='L305' name='L305'&gt;&lt;/a&gt;                   \the\toks0 \the\toks2
<a id='L320' name='L320'></a>&lt;a id='L306' name='L306'&gt;&lt;/a&gt;      \noexpand\or \the\toks4 \the\toks6
<a id='L321' name='L321'></a>&lt;a id='L307' name='L307'&gt;&lt;/a&gt;    \noexpand\else \the\toks8
<a id='L322' name='L322'></a>&lt;a id='L308' name='L308'&gt;&lt;/a&gt;  }%
<a id='L323' name='L323'></a>&lt;a id='L309' name='L309'&gt;&lt;/a&gt;}
<a id='L324' name='L324'></a>&lt;a id='L310' name='L310'&gt;&lt;/a&gt;% \topmark doesn't work for the very first chapter (after the title
<a id='L325' name='L325'></a>&lt;a id='L311' name='L311'&gt;&lt;/a&gt;% page or the contents), so we use \firstmark there -- this gets us
<a id='L326' name='L326'></a>&lt;a id='L312' name='L312'&gt;&lt;/a&gt;% the mark with the chapter defs, unless the user sneaks in, e.g.,
<a id='L327' name='L327'></a>&lt;a id='L313' name='L313'&gt;&lt;/a&gt;% @setcolor (or @url, or @link, etc.) between @contents and the very
<a id='L328' name='L328'></a>&lt;a id='L314' name='L314'&gt;&lt;/a&gt;% first @chapter.
<a id='L329' name='L329'></a>&lt;a id='L315' name='L315'&gt;&lt;/a&gt;\def\gettopheadingmarks{%
<a id='L330' name='L330'></a>&lt;a id='L316' name='L316'&gt;&lt;/a&gt;  \ifcase0\topmark\fi
<a id='L331' name='L331'></a>&lt;a id='L317' name='L317'&gt;&lt;/a&gt;  \ifx\thischapter\empty \ifcase0\firstmark\fi \fi
<a id='L332' name='L332'></a>&lt;a id='L318' name='L318'&gt;&lt;/a&gt;}
<a id='L333' name='L333'></a>&lt;a id='L319' name='L319'&gt;&lt;/a&gt;\def\getbottomheadingmarks{\ifcase1\botmark\fi}
<a id='L334' name='L334'></a>&lt;a id='L320' name='L320'&gt;&lt;/a&gt;\def\getcolormarks{\ifcase2\topmark\fi}
<a id='L335' name='L335'></a>&lt;a id='L321' name='L321'&gt;&lt;/a&gt;
<a id='L336' name='L336'></a>&lt;a id='L322' name='L322'&gt;&lt;/a&gt;% Avoid "undefined control sequence" errors.
<a id='L337' name='L337'></a>&lt;a id='L323' name='L323'&gt;&lt;/a&gt;\def\lastchapterdefs{}
<a id='L338' name='L338'></a>&lt;a id='L324' name='L324'&gt;&lt;/a&gt;\def\lastsectiondefs{}
<a id='L339' name='L339'></a>&lt;a id='L325' name='L325'&gt;&lt;/a&gt;\def\prevchapterdefs{}
<a id='L340' name='L340'></a>&lt;a id='L326' name='L326'&gt;&lt;/a&gt;\def\prevsectiondefs{}
<a id='L341' name='L341'></a>&lt;a id='L327' name='L327'&gt;&lt;/a&gt;\def\lastcolordefs{}
<a id='L342' name='L342'></a>&lt;a id='L328' name='L328'&gt;&lt;/a&gt;
<a id='L343' name='L343'></a>&lt;a id='L329' name='L329'&gt;&lt;/a&gt;% Main output routine.
<a id='L344' name='L344'></a>&lt;a id='L330' name='L330'&gt;&lt;/a&gt;\chardef\PAGE = 255
<a id='L345' name='L345'></a>&lt;a id='L331' name='L331'&gt;&lt;/a&gt;\output = {\onepageout{\pagecontents\PAGE}}
<a id='L346' name='L346'></a>&lt;a id='L332' name='L332'&gt;&lt;/a&gt;
<a id='L347' name='L347'></a>&lt;a id='L333' name='L333'&gt;&lt;/a&gt;\newbox\headlinebox
<a id='L348' name='L348'></a>&lt;a id='L334' name='L334'&gt;&lt;/a&gt;\newbox\footlinebox
<a id='L349' name='L349'></a>&lt;a id='L335' name='L335'&gt;&lt;/a&gt;
<a id='L350' name='L350'></a>&lt;a id='L336' name='L336'&gt;&lt;/a&gt;% \onepageout takes a vbox as an argument.  Note that \pagecontents
<a id='L351' name='L351'></a>&lt;a id='L337' name='L337'&gt;&lt;/a&gt;% does insertions, but you have to call it yourself.
<a id='L352' name='L352'></a>&lt;a id='L338' name='L338'&gt;&lt;/a&gt;\def\onepageout#1{%
<a id='L353' name='L353'></a>&lt;a id='L339' name='L339'&gt;&lt;/a&gt;  \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi
<a id='L354' name='L354'></a>&lt;a id='L340' name='L340'&gt;&lt;/a&gt;  %
<a id='L355' name='L355'></a>&lt;a id='L341' name='L341'&gt;&lt;/a&gt;  \ifodd\pageno  \advance\hoffset by \bindingoffset
<a id='L356' name='L356'></a>&lt;a id='L342' name='L342'&gt;&lt;/a&gt;  \else \advance\hoffset by -\bindingoffset\fi
<a id='L357' name='L357'></a>&lt;a id='L343' name='L343'&gt;&lt;/a&gt;  %
<a id='L358' name='L358'></a>&lt;a id='L344' name='L344'&gt;&lt;/a&gt;  % Do this outside of the \shipout so @code etc. will be expanded in
<a id='L359' name='L359'></a>&lt;a id='L345' name='L345'&gt;&lt;/a&gt;  % the headline as they should be, not taken literally (outputting ''code).
<a id='L360' name='L360'></a>&lt;a id='L346' name='L346'&gt;&lt;/a&gt;  \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
<a id='L361' name='L361'></a>&lt;a id='L347' name='L347'&gt;&lt;/a&gt;  \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}%
<a id='L362' name='L362'></a>&lt;a id='L348' name='L348'&gt;&lt;/a&gt;  \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
<a id='L363' name='L363'></a>&lt;a id='L349' name='L349'&gt;&lt;/a&gt;  \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}%
<a id='L364' name='L364'></a>&lt;a id='L350' name='L350'&gt;&lt;/a&gt;  %
<a id='L365' name='L365'></a>&lt;a id='L351' name='L351'&gt;&lt;/a&gt;  {%
<a id='L366' name='L366'></a>&lt;a id='L352' name='L352'&gt;&lt;/a&gt;    % Have to do this stuff outside the \shipout because we want it to
<a id='L367' name='L367'></a>&lt;a id='L353' name='L353'&gt;&lt;/a&gt;    % take effect in \write's, yet the group defined by the \vbox ends
<a id='L368' name='L368'></a>&lt;a id='L354' name='L354'&gt;&lt;/a&gt;    % before the \shipout runs.
<a id='L369' name='L369'></a>&lt;a id='L355' name='L355'&gt;&lt;/a&gt;    %
<a id='L370' name='L370'></a>&lt;a id='L356' name='L356'&gt;&lt;/a&gt;    \indexdummies         % don't expand commands in the output.
<a id='L371' name='L371'></a>&lt;a id='L357' name='L357'&gt;&lt;/a&gt;    \normalturnoffactive  % \ in index entries must not stay \, e.g., if
<a id='L372' name='L372'></a>&lt;a id='L358' name='L358'&gt;&lt;/a&gt;               % the page break happens to be in the middle of an example.
<a id='L373' name='L373'></a>&lt;a id='L359' name='L359'&gt;&lt;/a&gt;               % We don't want .vr (or whatever) entries like this:
<a id='L374' name='L374'></a>&lt;a id='L360' name='L360'&gt;&lt;/a&gt;               % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}}
<a id='L375' name='L375'></a>&lt;a id='L361' name='L361'&gt;&lt;/a&gt;               % "\acronym" won't work when it's read back in;
<a id='L376' name='L376'></a>&lt;a id='L362' name='L362'&gt;&lt;/a&gt;               % it needs to be
<a id='L377' name='L377'></a>&lt;a id='L363' name='L363'&gt;&lt;/a&gt;               % {\code {{\tt \backslashcurfont }acronym}
<a id='L378' name='L378'></a>&lt;a id='L364' name='L364'&gt;&lt;/a&gt;    \shipout\vbox{%
<a id='L379' name='L379'></a>&lt;a id='L365' name='L365'&gt;&lt;/a&gt;      % Do this early so pdf references go to the beginning of the page.
<a id='L380' name='L380'></a>&lt;a id='L366' name='L366'&gt;&lt;/a&gt;      \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
<a id='L381' name='L381'></a>&lt;a id='L367' name='L367'&gt;&lt;/a&gt;      %
<a id='L382' name='L382'></a>&lt;a id='L368' name='L368'&gt;&lt;/a&gt;      \ifcropmarks \vbox to \outervsize\bgroup
<a id='L383' name='L383'></a>&lt;a id='L369' name='L369'&gt;&lt;/a&gt;        \hsize = \outerhsize
<a id='L384' name='L384'></a>&lt;a id='L370' name='L370'&gt;&lt;/a&gt;        \vskip-\topandbottommargin
<a id='L385' name='L385'></a>&lt;a id='L371' name='L371'&gt;&lt;/a&gt;        \vtop to0pt{%
<a id='L386' name='L386'></a>&lt;a id='L372' name='L372'&gt;&lt;/a&gt;          \line{\ewtop\hfil\ewtop}%
<a id='L387' name='L387'></a>&lt;a id='L373' name='L373'&gt;&lt;/a&gt;          \nointerlineskip
<a id='L388' name='L388'></a>&lt;a id='L374' name='L374'&gt;&lt;/a&gt;          \line{%
<a id='L389' name='L389'></a>&lt;a id='L375' name='L375'&gt;&lt;/a&gt;            \vbox{\moveleft\cornerthick\nstop}%
<a id='L390' name='L390'></a>&lt;a id='L376' name='L376'&gt;&lt;/a&gt;            \hfill
<a id='L391' name='L391'></a>&lt;a id='L377' name='L377'&gt;&lt;/a&gt;            \vbox{\moveright\cornerthick\nstop}%
<a id='L392' name='L392'></a>&lt;a id='L378' name='L378'&gt;&lt;/a&gt;          }%
<a id='L393' name='L393'></a>&lt;a id='L379' name='L379'&gt;&lt;/a&gt;          \vss}%
<a id='L394' name='L394'></a>&lt;a id='L380' name='L380'&gt;&lt;/a&gt;        \vskip\topandbottommargin
<a id='L395' name='L395'></a>&lt;a id='L381' name='L381'&gt;&lt;/a&gt;        \line\bgroup
<a id='L396' name='L396'></a>&lt;a id='L382' name='L382'&gt;&lt;/a&gt;          \hfil % center the page within the outer (page) hsize.
<a id='L397' name='L397'></a>&lt;a id='L383' name='L383'&gt;&lt;/a&gt;          \ifodd\pageno\hskip\bindingoffset\fi
<a id='L398' name='L398'></a>&lt;a id='L384' name='L384'&gt;&lt;/a&gt;          \vbox\bgroup
<a id='L399' name='L399'></a>&lt;a id='L385' name='L385'&gt;&lt;/a&gt;      \fi
<a id='L400' name='L400'></a>&lt;a id='L386' name='L386'&gt;&lt;/a&gt;      %
<a id='L401' name='L401'></a>&lt;a id='L387' name='L387'&gt;&lt;/a&gt;      \unvbox\headlinebox
<a id='L402' name='L402'></a>&lt;a id='L388' name='L388'&gt;&lt;/a&gt;      \pagebody{#1}%
<a id='L403' name='L403'></a>&lt;a id='L389' name='L389'&gt;&lt;/a&gt;      \ifdim\ht\footlinebox &amp;gt; 0pt
<a id='L404' name='L404'></a>&lt;a id='L390' name='L390'&gt;&lt;/a&gt;        % Only leave this space if the footline is nonempty.
<a id='L405' name='L405'></a>&lt;a id='L391' name='L391'&gt;&lt;/a&gt;        % (We lessened \vsize for it in \oddfootingyyy.)
<a id='L406' name='L406'></a>&lt;a id='L392' name='L392'&gt;&lt;/a&gt;        % The \baselineskip=24pt in plain's \makefootline has no effect.
<a id='L407' name='L407'></a>&lt;a id='L393' name='L393'&gt;&lt;/a&gt;        \vskip 24pt
<a id='L408' name='L408'></a>&lt;a id='L394' name='L394'&gt;&lt;/a&gt;        \unvbox\footlinebox
<a id='L409' name='L409'></a>&lt;a id='L395' name='L395'&gt;&lt;/a&gt;      \fi
<a id='L410' name='L410'></a>&lt;a id='L396' name='L396'&gt;&lt;/a&gt;      %
<a id='L411' name='L411'></a>&lt;a id='L397' name='L397'&gt;&lt;/a&gt;      \ifcropmarks
<a id='L412' name='L412'></a>&lt;a id='L398' name='L398'&gt;&lt;/a&gt;          \egroup % end of \vbox\bgroup
<a id='L413' name='L413'></a>&lt;a id='L399' name='L399'&gt;&lt;/a&gt;        \hfil\egroup % end of (centering) \line\bgroup
<a id='L414' name='L414'></a>&lt;a id='L400' name='L400'&gt;&lt;/a&gt;        \vskip\topandbottommargin plus1fill minus1fill
<a id='L415' name='L415'></a>&lt;a id='L401' name='L401'&gt;&lt;/a&gt;        \boxmaxdepth = \cornerthick
<a id='L416' name='L416'></a>&lt;a id='L402' name='L402'&gt;&lt;/a&gt;        \vbox to0pt{\vss
<a id='L417' name='L417'></a>&lt;a id='L403' name='L403'&gt;&lt;/a&gt;          \line{%
<a id='L418' name='L418'></a>&lt;a id='L404' name='L404'&gt;&lt;/a&gt;            \vbox{\moveleft\cornerthick\nsbot}%
<a id='L419' name='L419'></a>&lt;a id='L405' name='L405'&gt;&lt;/a&gt;            \hfill
<a id='L420' name='L420'></a>&lt;a id='L406' name='L406'&gt;&lt;/a&gt;            \vbox{\moveright\cornerthick\nsbot}%
<a id='L421' name='L421'></a>&lt;a id='L407' name='L407'&gt;&lt;/a&gt;          }%
<a id='L422' name='L422'></a>&lt;a id='L408' name='L408'&gt;&lt;/a&gt;          \nointerlineskip
<a id='L423' name='L423'></a>&lt;a id='L409' name='L409'&gt;&lt;/a&gt;          \line{\ewbot\hfil\ewbot}%
<a id='L424' name='L424'></a>&lt;a id='L410' name='L410'&gt;&lt;/a&gt;        }%
<a id='L425' name='L425'></a>&lt;a id='L411' name='L411'&gt;&lt;/a&gt;      \egroup % \vbox from first cropmarks clause
<a id='L426' name='L426'></a>&lt;a id='L412' name='L412'&gt;&lt;/a&gt;      \fi
<a id='L427' name='L427'></a>&lt;a id='L413' name='L413'&gt;&lt;/a&gt;    }% end of \shipout\vbox
<a id='L428' name='L428'></a>&lt;a id='L414' name='L414'&gt;&lt;/a&gt;  }% end of group with \indexdummies
<a id='L429' name='L429'></a>&lt;a id='L415' name='L415'&gt;&lt;/a&gt;  \advancepageno
<a id='L430' name='L430'></a>&lt;a id='L416' name='L416'&gt;&lt;/a&gt;  \ifnum\outputpenalty&amp;gt;-20000 \else\dosupereject\fi
<a id='L431' name='L431'></a>&lt;a id='L417' name='L417'&gt;&lt;/a&gt;}
<a id='L432' name='L432'></a>&lt;a id='L418' name='L418'&gt;&lt;/a&gt;
<a id='L433' name='L433'></a>&lt;a id='L419' name='L419'&gt;&lt;/a&gt;\newinsert\margin \dimen\margin=\maxdimen
<a id='L434' name='L434'></a>&lt;a id='L420' name='L420'&gt;&lt;/a&gt;
<a id='L435' name='L435'></a>&lt;a id='L421' name='L421'&gt;&lt;/a&gt;\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
<a id='L436' name='L436'></a>&lt;a id='L422' name='L422'&gt;&lt;/a&gt;{\catcode`\@ =11
<a id='L437' name='L437'></a>&lt;a id='L423' name='L423'&gt;&lt;/a&gt;\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
<a id='L438' name='L438'></a>&lt;a id='L424' name='L424'&gt;&lt;/a&gt;% marginal hacks, juha@viisa.uucp (Juha Takala)
<a id='L439' name='L439'></a>&lt;a id='L425' name='L425'&gt;&lt;/a&gt;\ifvoid\margin\else % marginal info is present
<a id='L440' name='L440'></a>&lt;a id='L426' name='L426'&gt;&lt;/a&gt;  \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi
<a id='L441' name='L441'></a>&lt;a id='L427' name='L427'&gt;&lt;/a&gt;\dimen@=\dp#1\relax \unvbox#1\relax
<a id='L442' name='L442'></a>&lt;a id='L428' name='L428'&gt;&lt;/a&gt;\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
<a id='L443' name='L443'></a>&lt;a id='L429' name='L429'&gt;&lt;/a&gt;\ifr@ggedbottom \kern-\dimen@ \vfil \fi}
<a id='L444' name='L444'></a>&lt;a id='L430' name='L430'&gt;&lt;/a&gt;}
<a id='L445' name='L445'></a>&lt;a id='L431' name='L431'&gt;&lt;/a&gt;
<a id='L446' name='L446'></a>&lt;a id='L432' name='L432'&gt;&lt;/a&gt;% Here are the rules for the cropmarks.  Note that they are
<a id='L447' name='L447'></a>&lt;a id='L433' name='L433'&gt;&lt;/a&gt;% offset so that the space between them is truly \outerhsize or \outervsize
<a id='L448' name='L448'></a>&lt;a id='L434' name='L434'&gt;&lt;/a&gt;% (P. A. MacKay, 12 November, 1986)
<a id='L449' name='L449'></a>&lt;a id='L435' name='L435'&gt;&lt;/a&gt;%
<a id='L450' name='L450'></a>&lt;a id='L436' name='L436'&gt;&lt;/a&gt;\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
<a id='L451' name='L451'></a>&lt;a id='L437' name='L437'&gt;&lt;/a&gt;\def\nstop{\vbox
<a id='L452' name='L452'></a>&lt;a id='L438' name='L438'&gt;&lt;/a&gt;  {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
<a id='L453' name='L453'></a>&lt;a id='L439' name='L439'&gt;&lt;/a&gt;\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
<a id='L454' name='L454'></a>&lt;a id='L440' name='L440'&gt;&lt;/a&gt;\def\nsbot{\vbox
<a id='L455' name='L455'></a>&lt;a id='L441' name='L441'&gt;&lt;/a&gt;  {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
<a id='L456' name='L456'></a>&lt;a id='L442' name='L442'&gt;&lt;/a&gt;
<a id='L457' name='L457'></a>&lt;a id='L443' name='L443'&gt;&lt;/a&gt;% Parse an argument, then pass it to #1.  The argument is the rest of
<a id='L458' name='L458'></a>&lt;a id='L444' name='L444'&gt;&lt;/a&gt;% the input line (except we remove a trailing comment).  #1 should be a
<a id='L459' name='L459'></a>&lt;a id='L445' name='L445'&gt;&lt;/a&gt;% macro which expects an ordinary undelimited TeX argument.
<a id='L460' name='L460'></a>&lt;a id='L446' name='L446'&gt;&lt;/a&gt;%
<a id='L461' name='L461'></a>&lt;a id='L447' name='L447'&gt;&lt;/a&gt;\def\parsearg{\parseargusing{}}
<a id='L462' name='L462'></a>&lt;a id='L448' name='L448'&gt;&lt;/a&gt;\def\parseargusing#1#2{%
<a id='L463' name='L463'></a>&lt;a id='L449' name='L449'&gt;&lt;/a&gt;  \def\argtorun{#2}%
<a id='L464' name='L464'></a>&lt;a id='L450' name='L450'&gt;&lt;/a&gt;  \begingroup
<a id='L465' name='L465'></a>&lt;a id='L451' name='L451'&gt;&lt;/a&gt;    \obeylines
<a id='L466' name='L466'></a>&lt;a id='L452' name='L452'&gt;&lt;/a&gt;    \spaceisspace
<a id='L467' name='L467'></a>&lt;a id='L453' name='L453'&gt;&lt;/a&gt;    #1%
<a id='L468' name='L468'></a>&lt;a id='L454' name='L454'&gt;&lt;/a&gt;    \parseargline\empty% Insert the \empty token, see \finishparsearg below.
<a id='L469' name='L469'></a>&lt;a id='L455' name='L455'&gt;&lt;/a&gt;}
<a id='L470' name='L470'></a>&lt;a id='L456' name='L456'&gt;&lt;/a&gt;
<a id='L471' name='L471'></a>&lt;a id='L457' name='L457'&gt;&lt;/a&gt;{\obeylines %
<a id='L472' name='L472'></a>&lt;a id='L458' name='L458'&gt;&lt;/a&gt;  \gdef\parseargline#1^^M{%
<a id='L473' name='L473'></a>&lt;a id='L459' name='L459'&gt;&lt;/a&gt;    \endgroup % End of the group started in \parsearg.
<a id='L474' name='L474'></a>&lt;a id='L460' name='L460'&gt;&lt;/a&gt;    \argremovecomment #1\comment\ArgTerm%
<a id='L475' name='L475'></a>&lt;a id='L461' name='L461'&gt;&lt;/a&gt;  }%
<a id='L476' name='L476'></a>&lt;a id='L462' name='L462'&gt;&lt;/a&gt;}
<a id='L477' name='L477'></a>&lt;a id='L463' name='L463'&gt;&lt;/a&gt;
<a id='L478' name='L478'></a>&lt;a id='L464' name='L464'&gt;&lt;/a&gt;% First remove any @comment, then any @c comment.
<a id='L479' name='L479'></a>&lt;a id='L465' name='L465'&gt;&lt;/a&gt;\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
<a id='L480' name='L480'></a>&lt;a id='L466' name='L466'&gt;&lt;/a&gt;\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
<a id='L481' name='L481'></a>&lt;a id='L467' name='L467'&gt;&lt;/a&gt;
<a id='L482' name='L482'></a>&lt;a id='L468' name='L468'&gt;&lt;/a&gt;% Each occurrence of `\^^M' or `&amp;lt;space&amp;gt;\^^M' is replaced by a single space.
<a id='L483' name='L483'></a>&lt;a id='L469' name='L469'&gt;&lt;/a&gt;%
<a id='L484' name='L484'></a>&lt;a id='L470' name='L470'&gt;&lt;/a&gt;% \argremovec might leave us with trailing space, e.g.,
<a id='L485' name='L485'></a>&lt;a id='L471' name='L471'&gt;&lt;/a&gt;%    @end itemize  @c foo
<a id='L486' name='L486'></a>&lt;a id='L472' name='L472'&gt;&lt;/a&gt;% This space token undergoes the same procedure and is eventually removed
<a id='L487' name='L487'></a>&lt;a id='L473' name='L473'&gt;&lt;/a&gt;% by \finishparsearg.
<a id='L488' name='L488'></a>&lt;a id='L474' name='L474'&gt;&lt;/a&gt;%
<a id='L489' name='L489'></a>&lt;a id='L475' name='L475'&gt;&lt;/a&gt;\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M}
<a id='L490' name='L490'></a>&lt;a id='L476' name='L476'&gt;&lt;/a&gt;\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M}
<a id='L491' name='L491'></a>&lt;a id='L477' name='L477'&gt;&lt;/a&gt;\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{%
<a id='L492' name='L492'></a>&lt;a id='L478' name='L478'&gt;&lt;/a&gt;  \def\temp{#3}%
<a id='L493' name='L493'></a>&lt;a id='L479' name='L479'&gt;&lt;/a&gt;  \ifx\temp\empty
<a id='L494' name='L494'></a>&lt;a id='L480' name='L480'&gt;&lt;/a&gt;    % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp:
<a id='L495' name='L495'></a>&lt;a id='L481' name='L481'&gt;&lt;/a&gt;    \let\temp\finishparsearg
<a id='L496' name='L496'></a>&lt;a id='L482' name='L482'&gt;&lt;/a&gt;  \else
<a id='L497' name='L497'></a>&lt;a id='L483' name='L483'&gt;&lt;/a&gt;    \let\temp\argcheckspaces
<a id='L498' name='L498'></a>&lt;a id='L484' name='L484'&gt;&lt;/a&gt;  \fi
<a id='L499' name='L499'></a>&lt;a id='L485' name='L485'&gt;&lt;/a&gt;  % Put the space token in:
<a id='L500' name='L500'></a>&lt;a id='L486' name='L486'&gt;&lt;/a&gt;  \temp#1 #3\ArgTerm
<a id='L501' name='L501'></a>&lt;a id='L487' name='L487'&gt;&lt;/a&gt;}
<a id='L502' name='L502'></a>&lt;a id='L488' name='L488'&gt;&lt;/a&gt;
<a id='L503' name='L503'></a>&lt;a id='L489' name='L489'&gt;&lt;/a&gt;% If a _delimited_ argument is enclosed in braces, they get stripped; so
<a id='L504' name='L504'></a>&lt;a id='L490' name='L490'&gt;&lt;/a&gt;% to get _exactly_ the rest of the line, we had to prevent such situation.
<a id='L505' name='L505'></a>&lt;a id='L491' name='L491'&gt;&lt;/a&gt;% We prepended an \empty token at the very beginning and we expand it now,
<a id='L506' name='L506'></a>&lt;a id='L492' name='L492'&gt;&lt;/a&gt;% just before passing the control to \argtorun.
<a id='L507' name='L507'></a>&lt;a id='L493' name='L493'&gt;&lt;/a&gt;% (Similarly, we have to think about #3 of \argcheckspacesY above: it is
<a id='L508' name='L508'></a>&lt;a id='L494' name='L494'&gt;&lt;/a&gt;% either the null string, or it ends with \^^M---thus there is no danger
<a id='L509' name='L509'></a>&lt;a id='L495' name='L495'&gt;&lt;/a&gt;% that a pair of braces would be stripped.
<a id='L510' name='L510'></a>&lt;a id='L496' name='L496'&gt;&lt;/a&gt;%
<a id='L511' name='L511'></a>&lt;a id='L497' name='L497'&gt;&lt;/a&gt;% But first, we have to remove the trailing space token.
<a id='L512' name='L512'></a>&lt;a id='L498' name='L498'&gt;&lt;/a&gt;%
<a id='L513' name='L513'></a>&lt;a id='L499' name='L499'&gt;&lt;/a&gt;\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}}
<a id='L514' name='L514'></a>&lt;a id='L500' name='L500'&gt;&lt;/a&gt;
<a id='L515' name='L515'></a>&lt;a id='L501' name='L501'&gt;&lt;/a&gt;% \parseargdef\foo{...}
<a id='L516' name='L516'></a>&lt;a id='L502' name='L502'&gt;&lt;/a&gt;%       is roughly equivalent to
<a id='L517' name='L517'></a>&lt;a id='L503' name='L503'&gt;&lt;/a&gt;% \def\foo{\parsearg\Xfoo}
<a id='L518' name='L518'></a>&lt;a id='L504' name='L504'&gt;&lt;/a&gt;% \def\Xfoo#1{...}
<a id='L519' name='L519'></a>&lt;a id='L505' name='L505'&gt;&lt;/a&gt;%
<a id='L520' name='L520'></a>&lt;a id='L506' name='L506'&gt;&lt;/a&gt;% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my
<a id='L521' name='L521'></a>&lt;a id='L507' name='L507'&gt;&lt;/a&gt;% favourite TeX trick.  --kasal, 16nov03
<a id='L522' name='L522'></a>&lt;a id='L508' name='L508'&gt;&lt;/a&gt;
<a id='L523' name='L523'></a>&lt;a id='L509' name='L509'&gt;&lt;/a&gt;\def\parseargdef#1{%
<a id='L524' name='L524'></a>&lt;a id='L510' name='L510'&gt;&lt;/a&gt;  \expandafter \doparseargdef \csname\string#1\endcsname #1%
<a id='L525' name='L525'></a>&lt;a id='L511' name='L511'&gt;&lt;/a&gt;}
<a id='L526' name='L526'></a>&lt;a id='L512' name='L512'&gt;&lt;/a&gt;\def\doparseargdef#1#2{%
<a id='L527' name='L527'></a>&lt;a id='L513' name='L513'&gt;&lt;/a&gt;  \def#2{\parsearg#1}%
<a id='L528' name='L528'></a>&lt;a id='L514' name='L514'&gt;&lt;/a&gt;  \def#1##1%
<a id='L529' name='L529'></a>&lt;a id='L515' name='L515'&gt;&lt;/a&gt;}
<a id='L530' name='L530'></a>&lt;a id='L516' name='L516'&gt;&lt;/a&gt;
<a id='L531' name='L531'></a>&lt;a id='L517' name='L517'&gt;&lt;/a&gt;% Several utility definitions with active space:
<a id='L532' name='L532'></a>&lt;a id='L518' name='L518'&gt;&lt;/a&gt;{
<a id='L533' name='L533'></a>&lt;a id='L519' name='L519'&gt;&lt;/a&gt;  \obeyspaces
<a id='L534' name='L534'></a>&lt;a id='L520' name='L520'&gt;&lt;/a&gt;  \gdef\obeyedspace{ }
<a id='L535' name='L535'></a>&lt;a id='L521' name='L521'&gt;&lt;/a&gt;
<a id='L536' name='L536'></a>&lt;a id='L522' name='L522'&gt;&lt;/a&gt;  % Make each space character in the input produce a normal interword
<a id='L537' name='L537'></a>&lt;a id='L523' name='L523'&gt;&lt;/a&gt;  % space in the output.  Don't allow a line break at this space, as this
<a id='L538' name='L538'></a>&lt;a id='L524' name='L524'&gt;&lt;/a&gt;  % is used only in environments like @example, where each line of input
<a id='L539' name='L539'></a>&lt;a id='L525' name='L525'&gt;&lt;/a&gt;  % should produce a line of output anyway.
<a id='L540' name='L540'></a>&lt;a id='L526' name='L526'&gt;&lt;/a&gt;  %
<a id='L541' name='L541'></a>&lt;a id='L527' name='L527'&gt;&lt;/a&gt;  \gdef\sepspaces{\obeyspaces\let =\tie}
<a id='L542' name='L542'></a>&lt;a id='L528' name='L528'&gt;&lt;/a&gt;
<a id='L543' name='L543'></a>&lt;a id='L529' name='L529'&gt;&lt;/a&gt;  % If an index command is used in an @example environment, any spaces
<a id='L544' name='L544'></a>&lt;a id='L530' name='L530'&gt;&lt;/a&gt;  % therein should become regular spaces in the raw index file, not the
<a id='L545' name='L545'></a>&lt;a id='L531' name='L531'&gt;&lt;/a&gt;  % expansion of \tie (\leavevmode \penalty \@M \ ).
<a id='L546' name='L546'></a>&lt;a id='L532' name='L532'&gt;&lt;/a&gt;  \gdef\unsepspaces{\let =\space}
<a id='L547' name='L547'></a>&lt;a id='L533' name='L533'&gt;&lt;/a&gt;}
<a id='L548' name='L548'></a>&lt;a id='L534' name='L534'&gt;&lt;/a&gt;
<a id='L549' name='L549'></a>&lt;a id='L535' name='L535'&gt;&lt;/a&gt;
<a id='L550' name='L550'></a>&lt;a id='L536' name='L536'&gt;&lt;/a&gt;\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
<a id='L551' name='L551'></a>&lt;a id='L537' name='L537'&gt;&lt;/a&gt;
<a id='L552' name='L552'></a>&lt;a id='L538' name='L538'&gt;&lt;/a&gt;% Define the framework for environments in texinfo.tex.  It's used like this:
<a id='L553' name='L553'></a>&lt;a id='L539' name='L539'&gt;&lt;/a&gt;%
<a id='L554' name='L554'></a>&lt;a id='L540' name='L540'&gt;&lt;/a&gt;%   \envdef\foo{...}
<a id='L555' name='L555'></a>&lt;a id='L541' name='L541'&gt;&lt;/a&gt;%   \def\Efoo{...}
<a id='L556' name='L556'></a>&lt;a id='L542' name='L542'&gt;&lt;/a&gt;%
<a id='L557' name='L557'></a>&lt;a id='L543' name='L543'&gt;&lt;/a&gt;% It's the responsibility of \envdef to insert \begingroup before the
<a id='L558' name='L558'></a>&lt;a id='L544' name='L544'&gt;&lt;/a&gt;% actual body; @end closes the group after calling \Efoo.  \envdef also
<a id='L559' name='L559'></a>&lt;a id='L545' name='L545'&gt;&lt;/a&gt;% defines \thisenv, so the current environment is known; @end checks
<a id='L560' name='L560'></a>&lt;a id='L546' name='L546'&gt;&lt;/a&gt;% whether the environment name matches.  The \checkenv macro can also be
<a id='L561' name='L561'></a>&lt;a id='L547' name='L547'&gt;&lt;/a&gt;% used to check whether the current environment is the one expected.
<a id='L562' name='L562'></a>&lt;a id='L548' name='L548'&gt;&lt;/a&gt;%
<a id='L563' name='L563'></a>&lt;a id='L549' name='L549'&gt;&lt;/a&gt;% Non-false conditionals (@iftex, @ifset) don't fit into this, so they
<a id='L564' name='L564'></a>&lt;a id='L550' name='L550'&gt;&lt;/a&gt;% are not treated as environments; they don't open a group.  (The
<a id='L565' name='L565'></a>&lt;a id='L551' name='L551'&gt;&lt;/a&gt;% implementation of @end takes care not to call \endgroup in this
<a id='L566' name='L566'></a>&lt;a id='L552' name='L552'&gt;&lt;/a&gt;% special case.)
<a id='L567' name='L567'></a>&lt;a id='L553' name='L553'&gt;&lt;/a&gt;
<a id='L568' name='L568'></a>&lt;a id='L554' name='L554'&gt;&lt;/a&gt;
<a id='L569' name='L569'></a>&lt;a id='L555' name='L555'&gt;&lt;/a&gt;% At run-time, environments start with this:
<a id='L570' name='L570'></a>&lt;a id='L556' name='L556'&gt;&lt;/a&gt;\def\startenvironment#1{\begingroup\def\thisenv{#1}}
<a id='L571' name='L571'></a>&lt;a id='L557' name='L557'&gt;&lt;/a&gt;% initialize
<a id='L572' name='L572'></a>&lt;a id='L558' name='L558'&gt;&lt;/a&gt;\let\thisenv\empty
<a id='L573' name='L573'></a>&lt;a id='L559' name='L559'&gt;&lt;/a&gt;
<a id='L574' name='L574'></a>&lt;a id='L560' name='L560'&gt;&lt;/a&gt;% ... but they get defined via ``\envdef\foo{...}'':
<a id='L575' name='L575'></a>&lt;a id='L561' name='L561'&gt;&lt;/a&gt;\long\def\envdef#1#2{\def#1{\startenvironment#1#2}}
<a id='L576' name='L576'></a>&lt;a id='L562' name='L562'&gt;&lt;/a&gt;\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}}
<a id='L577' name='L577'></a>&lt;a id='L563' name='L563'&gt;&lt;/a&gt;
<a id='L578' name='L578'></a>&lt;a id='L564' name='L564'&gt;&lt;/a&gt;% Check whether we're in the right environment:
<a id='L579' name='L579'></a>&lt;a id='L565' name='L565'&gt;&lt;/a&gt;\def\checkenv#1{%
<a id='L580' name='L580'></a>&lt;a id='L566' name='L566'&gt;&lt;/a&gt;  \def\temp{#1}%
<a id='L581' name='L581'></a>&lt;a id='L567' name='L567'&gt;&lt;/a&gt;  \ifx\thisenv\temp
<a id='L582' name='L582'></a>&lt;a id='L568' name='L568'&gt;&lt;/a&gt;  \else
<a id='L583' name='L583'></a>&lt;a id='L569' name='L569'&gt;&lt;/a&gt;    \badenverr
<a id='L584' name='L584'></a>&lt;a id='L570' name='L570'&gt;&lt;/a&gt;  \fi
<a id='L585' name='L585'></a>&lt;a id='L571' name='L571'&gt;&lt;/a&gt;}
<a id='L586' name='L586'></a>&lt;a id='L572' name='L572'&gt;&lt;/a&gt;
<a id='L587' name='L587'></a>&lt;a id='L573' name='L573'&gt;&lt;/a&gt;% Environment mismatch, #1 expected:
<a id='L588' name='L588'></a>&lt;a id='L574' name='L574'&gt;&lt;/a&gt;\def\badenverr{%
<a id='L589' name='L589'></a>&lt;a id='L575' name='L575'&gt;&lt;/a&gt;  \errhelp = \EMsimple
<a id='L590' name='L590'></a>&lt;a id='L576' name='L576'&gt;&lt;/a&gt;  \errmessage{This command can appear only \inenvironment\temp,
<a id='L591' name='L591'></a>&lt;a id='L577' name='L577'&gt;&lt;/a&gt;    not \inenvironment\thisenv}%
<a id='L592' name='L592'></a>&lt;a id='L578' name='L578'&gt;&lt;/a&gt;}
<a id='L593' name='L593'></a>&lt;a id='L579' name='L579'&gt;&lt;/a&gt;\def\inenvironment#1{%
<a id='L594' name='L594'></a>&lt;a id='L580' name='L580'&gt;&lt;/a&gt;  \ifx#1\empty
<a id='L595' name='L595'></a>&lt;a id='L581' name='L581'&gt;&lt;/a&gt;    outside of any environment%
<a id='L596' name='L596'></a>&lt;a id='L582' name='L582'&gt;&lt;/a&gt;  \else
<a id='L597' name='L597'></a>&lt;a id='L583' name='L583'&gt;&lt;/a&gt;    in environment \expandafter\string#1%
<a id='L598' name='L598'></a>&lt;a id='L584' name='L584'&gt;&lt;/a&gt;  \fi
<a id='L599' name='L599'></a>&lt;a id='L585' name='L585'&gt;&lt;/a&gt;}
<a id='L600' name='L600'></a>&lt;a id='L586' name='L586'&gt;&lt;/a&gt;
<a id='L601' name='L601'></a>&lt;a id='L587' name='L587'&gt;&lt;/a&gt;% @end foo executes the definition of \Efoo.
<a id='L602' name='L602'></a>&lt;a id='L588' name='L588'&gt;&lt;/a&gt;% But first, it executes a specialized version of \checkenv
<a id='L603' name='L603'></a>&lt;a id='L589' name='L589'&gt;&lt;/a&gt;%
<a id='L604' name='L604'></a>&lt;a id='L590' name='L590'&gt;&lt;/a&gt;\parseargdef\end{%
<a id='L605' name='L605'></a>&lt;a id='L591' name='L591'&gt;&lt;/a&gt;  \if 1\csname iscond.#1\endcsname
<a id='L606' name='L606'></a>&lt;a id='L592' name='L592'&gt;&lt;/a&gt;  \else
<a id='L607' name='L607'></a>&lt;a id='L593' name='L593'&gt;&lt;/a&gt;    % The general wording of \badenverr may not be ideal.
<a id='L608' name='L608'></a>&lt;a id='L594' name='L594'&gt;&lt;/a&gt;    \expandafter\checkenv\csname#1\endcsname
<a id='L609' name='L609'></a>&lt;a id='L595' name='L595'&gt;&lt;/a&gt;    \csname E#1\endcsname
<a id='L610' name='L610'></a>&lt;a id='L596' name='L596'&gt;&lt;/a&gt;    \endgroup
<a id='L611' name='L611'></a>&lt;a id='L597' name='L597'&gt;&lt;/a&gt;  \fi
<a id='L612' name='L612'></a>&lt;a id='L598' name='L598'&gt;&lt;/a&gt;}
<a id='L613' name='L613'></a>&lt;a id='L599' name='L599'&gt;&lt;/a&gt;
<a id='L614' name='L614'></a>&lt;a id='L600' name='L600'&gt;&lt;/a&gt;\newhelp\EMsimple{Press RETURN to continue.}
<a id='L615' name='L615'></a>&lt;a id='L601' name='L601'&gt;&lt;/a&gt;
<a id='L616' name='L616'></a>&lt;a id='L602' name='L602'&gt;&lt;/a&gt;
<a id='L617' name='L617'></a>&lt;a id='L603' name='L603'&gt;&lt;/a&gt;% Be sure we're in horizontal mode when doing a tie, since we make space
<a id='L618' name='L618'></a>&lt;a id='L604' name='L604'&gt;&lt;/a&gt;% equivalent to this in @example-like environments. Otherwise, a space
<a id='L619' name='L619'></a>&lt;a id='L605' name='L605'&gt;&lt;/a&gt;% at the beginning of a line will start with \penalty -- and
<a id='L620' name='L620'></a>&lt;a id='L606' name='L606'&gt;&lt;/a&gt;% since \penalty is valid in vertical mode, we'd end up putting the
<a id='L621' name='L621'></a>&lt;a id='L607' name='L607'&gt;&lt;/a&gt;% penalty on the vertical list instead of in the new paragraph.
<a id='L622' name='L622'></a>&lt;a id='L608' name='L608'&gt;&lt;/a&gt;{\catcode`@ = 11
<a id='L623' name='L623'></a>&lt;a id='L609' name='L609'&gt;&lt;/a&gt; % Avoid using \@M directly, because that causes trouble
<a id='L624' name='L624'></a>&lt;a id='L610' name='L610'&gt;&lt;/a&gt; % if the definition is written into an index file.
<a id='L625' name='L625'></a>&lt;a id='L611' name='L611'&gt;&lt;/a&gt; \global\let\tiepenalty = \@M
<a id='L626' name='L626'></a>&lt;a id='L612' name='L612'&gt;&lt;/a&gt; \gdef\tie{\leavevmode\penalty\tiepenalty\ }
<a id='L627' name='L627'></a>&lt;a id='L613' name='L613'&gt;&lt;/a&gt;}
<a id='L628' name='L628'></a>&lt;a id='L614' name='L614'&gt;&lt;/a&gt;
<a id='L629' name='L629'></a>&lt;a id='L615' name='L615'&gt;&lt;/a&gt;% @: forces normal size whitespace following.
<a id='L630' name='L630'></a>&lt;a id='L616' name='L616'&gt;&lt;/a&gt;\def\:{\spacefactor=1000 }
<a id='L631' name='L631'></a>&lt;a id='L617' name='L617'&gt;&lt;/a&gt;
<a id='L632' name='L632'></a>&lt;a id='L618' name='L618'&gt;&lt;/a&gt;% @* forces a line break.
<a id='L633' name='L633'></a>&lt;a id='L619' name='L619'&gt;&lt;/a&gt;\def\*{\unskip\hfil\break\hbox{}\ignorespaces}
<a id='L634' name='L634'></a>&lt;a id='L620' name='L620'&gt;&lt;/a&gt;
<a id='L635' name='L635'></a>&lt;a id='L621' name='L621'&gt;&lt;/a&gt;% @/ allows a line break.
<a id='L636' name='L636'></a>&lt;a id='L622' name='L622'&gt;&lt;/a&gt;\let\/=\allowbreak
<a id='L637' name='L637'></a>&lt;a id='L623' name='L623'&gt;&lt;/a&gt;
<a id='L638' name='L638'></a>&lt;a id='L624' name='L624'&gt;&lt;/a&gt;% @. is an end-of-sentence period.
<a id='L639' name='L639'></a>&lt;a id='L625' name='L625'&gt;&lt;/a&gt;\def\.{.\spacefactor=\endofsentencespacefactor\space}
<a id='L640' name='L640'></a>&lt;a id='L626' name='L626'&gt;&lt;/a&gt;
<a id='L641' name='L641'></a>&lt;a id='L627' name='L627'&gt;&lt;/a&gt;% @! is an end-of-sentence bang.
<a id='L642' name='L642'></a>&lt;a id='L628' name='L628'&gt;&lt;/a&gt;\def\!{!\spacefactor=\endofsentencespacefactor\space}
<a id='L643' name='L643'></a>&lt;a id='L629' name='L629'&gt;&lt;/a&gt;
<a id='L644' name='L644'></a>&lt;a id='L630' name='L630'&gt;&lt;/a&gt;% @? is an end-of-sentence query.
<a id='L645' name='L645'></a>&lt;a id='L631' name='L631'&gt;&lt;/a&gt;\def\?{?\spacefactor=\endofsentencespacefactor\space}
<a id='L646' name='L646'></a>&lt;a id='L632' name='L632'&gt;&lt;/a&gt;
<a id='L647' name='L647'></a>&lt;a id='L633' name='L633'&gt;&lt;/a&gt;% @frenchspacing on|off  says whether to put extra space after punctuation.
<a id='L648' name='L648'></a>&lt;a id='L634' name='L634'&gt;&lt;/a&gt;%
<a id='L649' name='L649'></a>&lt;a id='L635' name='L635'&gt;&lt;/a&gt;\def\onword{on}
<a id='L650' name='L650'></a>&lt;a id='L636' name='L636'&gt;&lt;/a&gt;\def\offword{off}
<a id='L651' name='L651'></a>&lt;a id='L637' name='L637'&gt;&lt;/a&gt;%
<a id='L652' name='L652'></a>&lt;a id='L638' name='L638'&gt;&lt;/a&gt;\parseargdef\frenchspacing{%
<a id='L653' name='L653'></a>&lt;a id='L639' name='L639'&gt;&lt;/a&gt;  \def\temp{#1}%
<a id='L654' name='L654'></a>&lt;a id='L640' name='L640'&gt;&lt;/a&gt;  \ifx\temp\onword \plainfrenchspacing
<a id='L655' name='L655'></a>&lt;a id='L641' name='L641'&gt;&lt;/a&gt;  \else\ifx\temp\offword \plainnonfrenchspacing
<a id='L656' name='L656'></a>&lt;a id='L642' name='L642'&gt;&lt;/a&gt;  \else
<a id='L657' name='L657'></a>&lt;a id='L643' name='L643'&gt;&lt;/a&gt;    \errhelp = \EMsimple
<a id='L658' name='L658'></a>&lt;a id='L644' name='L644'&gt;&lt;/a&gt;    \errmessage{Unknown @frenchspacing option `\temp', must be on|off}%
<a id='L659' name='L659'></a>&lt;a id='L645' name='L645'&gt;&lt;/a&gt;  \fi\fi
<a id='L660' name='L660'></a>&lt;a id='L646' name='L646'&gt;&lt;/a&gt;}
<a id='L661' name='L661'></a>&lt;a id='L647' name='L647'&gt;&lt;/a&gt;
<a id='L662' name='L662'></a>&lt;a id='L648' name='L648'&gt;&lt;/a&gt;% @w prevents a word break.  Without the \leavevmode, @w at the
<a id='L663' name='L663'></a>&lt;a id='L649' name='L649'&gt;&lt;/a&gt;% beginning of a paragraph, when TeX is still in vertical mode, would
<a id='L664' name='L664'></a>&lt;a id='L650' name='L650'&gt;&lt;/a&gt;% produce a whole line of output instead of starting the paragraph.
<a id='L665' name='L665'></a>&lt;a id='L651' name='L651'&gt;&lt;/a&gt;\def\w#1{\leavevmode\hbox{#1}}
<a id='L666' name='L666'></a>&lt;a id='L652' name='L652'&gt;&lt;/a&gt;
<a id='L667' name='L667'></a>&lt;a id='L653' name='L653'&gt;&lt;/a&gt;% @group ... @end group forces ... to be all on one page, by enclosing
<a id='L668' name='L668'></a>&lt;a id='L654' name='L654'&gt;&lt;/a&gt;% it in a TeX vbox.  We use \vtop instead of \vbox to construct the box
<a id='L669' name='L669'></a>&lt;a id='L655' name='L655'&gt;&lt;/a&gt;% to keep its height that of a normal line.  According to the rules for
<a id='L670' name='L670'></a>&lt;a id='L656' name='L656'&gt;&lt;/a&gt;% \topskip (p.114 of the TeXbook), the glue inserted is
<a id='L671' name='L671'></a>&lt;a id='L657' name='L657'&gt;&lt;/a&gt;% max (\topskip - \ht (first item), 0).  If that height is large,
<a id='L672' name='L672'></a>&lt;a id='L658' name='L658'&gt;&lt;/a&gt;% therefore, no glue is inserted, and the space between the headline and
<a id='L673' name='L673'></a>&lt;a id='L659' name='L659'&gt;&lt;/a&gt;% the text is small, which looks bad.
<a id='L674' name='L674'></a>&lt;a id='L660' name='L660'&gt;&lt;/a&gt;%
<a id='L675' name='L675'></a>&lt;a id='L661' name='L661'&gt;&lt;/a&gt;% Another complication is that the group might be very large.  This can
<a id='L676' name='L676'></a>&lt;a id='L662' name='L662'&gt;&lt;/a&gt;% cause the glue on the previous page to be unduly stretched, because it
<a id='L677' name='L677'></a>&lt;a id='L663' name='L663'&gt;&lt;/a&gt;% does not have much material.  In this case, it's better to add an
<a id='L678' name='L678'></a>&lt;a id='L664' name='L664'&gt;&lt;/a&gt;% explicit \vfill so that the extra space is at the bottom.  The
<a id='L679' name='L679'></a>&lt;a id='L665' name='L665'&gt;&lt;/a&gt;% threshold for doing this is if the group is more than \vfilllimit
<a id='L680' name='L680'></a>&lt;a id='L666' name='L666'&gt;&lt;/a&gt;% percent of a page (\vfilllimit can be changed inside of @tex).
<a id='L681' name='L681'></a>&lt;a id='L667' name='L667'&gt;&lt;/a&gt;%
<a id='L682' name='L682'></a>&lt;a id='L668' name='L668'&gt;&lt;/a&gt;\newbox\groupbox
<a id='L683' name='L683'></a>&lt;a id='L669' name='L669'&gt;&lt;/a&gt;\def\vfilllimit{0.7}
<a id='L684' name='L684'></a>&lt;a id='L670' name='L670'&gt;&lt;/a&gt;%
<a id='L685' name='L685'></a>&lt;a id='L671' name='L671'&gt;&lt;/a&gt;\envdef\group{%
<a id='L686' name='L686'></a>&lt;a id='L672' name='L672'&gt;&lt;/a&gt;  \ifnum\catcode`\^^M=\active \else
<a id='L687' name='L687'></a>&lt;a id='L673' name='L673'&gt;&lt;/a&gt;    \errhelp = \groupinvalidhelp
<a id='L688' name='L688'></a>&lt;a id='L674' name='L674'&gt;&lt;/a&gt;    \errmessage{@group invalid in context where filling is enabled}%
<a id='L689' name='L689'></a>&lt;a id='L675' name='L675'&gt;&lt;/a&gt;  \fi
<a id='L690' name='L690'></a>&lt;a id='L676' name='L676'&gt;&lt;/a&gt;  \startsavinginserts
<a id='L691' name='L691'></a>&lt;a id='L677' name='L677'&gt;&lt;/a&gt;  %
<a id='L692' name='L692'></a>&lt;a id='L678' name='L678'&gt;&lt;/a&gt;  \setbox\groupbox = \vtop\bgroup
<a id='L693' name='L693'></a>&lt;a id='L679' name='L679'&gt;&lt;/a&gt;    % Do @comment since we are called inside an environment such as
<a id='L694' name='L694'></a>&lt;a id='L680' name='L680'&gt;&lt;/a&gt;    % @example, where each end-of-line in the input causes an
<a id='L695' name='L695'></a>&lt;a id='L681' name='L681'&gt;&lt;/a&gt;    % end-of-line in the output.  We don't want the end-of-line after
<a id='L696' name='L696'></a>&lt;a id='L682' name='L682'&gt;&lt;/a&gt;    % the `@group' to put extra space in the output.  Since @group
<a id='L697' name='L697'></a>&lt;a id='L683' name='L683'&gt;&lt;/a&gt;    % should appear on a line by itself (according to the Texinfo
<a id='L698' name='L698'></a>&lt;a id='L684' name='L684'&gt;&lt;/a&gt;    % manual), we don't worry about eating any user text.
<a id='L699' name='L699'></a>&lt;a id='L685' name='L685'&gt;&lt;/a&gt;    \comment
<a id='L700' name='L700'></a>&lt;a id='L686' name='L686'&gt;&lt;/a&gt;}
<a id='L701' name='L701'></a>&lt;a id='L687' name='L687'&gt;&lt;/a&gt;%
<a id='L702' name='L702'></a>&lt;a id='L688' name='L688'&gt;&lt;/a&gt;% The \vtop produces a box with normal height and large depth; thus, TeX puts
<a id='L703' name='L703'></a>&lt;a id='L689' name='L689'&gt;&lt;/a&gt;% \baselineskip glue before it, and (when the next line of text is done)
<a id='L704' name='L704'></a>&lt;a id='L690' name='L690'&gt;&lt;/a&gt;% \lineskip glue after it.  Thus, space below is not quite equal to space
<a id='L705' name='L705'></a>&lt;a id='L691' name='L691'&gt;&lt;/a&gt;% above.  But it's pretty close.
<a id='L706' name='L706'></a>&lt;a id='L692' name='L692'&gt;&lt;/a&gt;\def\Egroup{%
<a id='L707' name='L707'></a>&lt;a id='L693' name='L693'&gt;&lt;/a&gt;    % To get correct interline space between the last line of the group
<a id='L708' name='L708'></a>&lt;a id='L694' name='L694'&gt;&lt;/a&gt;    % and the first line afterwards, we have to propagate \prevdepth.
<a id='L709' name='L709'></a>&lt;a id='L695' name='L695'&gt;&lt;/a&gt;    \endgraf % Not \par, as it may have been set to \lisppar.
<a id='L710' name='L710'></a>&lt;a id='L696' name='L696'&gt;&lt;/a&gt;    \global\dimen1 = \prevdepth
<a id='L711' name='L711'></a>&lt;a id='L697' name='L697'&gt;&lt;/a&gt;  \egroup           % End the \vtop.
<a id='L712' name='L712'></a>&lt;a id='L698' name='L698'&gt;&lt;/a&gt;  % \dimen0 is the vertical size of the group's box.
<a id='L713' name='L713'></a>&lt;a id='L699' name='L699'&gt;&lt;/a&gt;  \dimen0 = \ht\groupbox  \advance\dimen0 by \dp\groupbox
<a id='L714' name='L714'></a>&lt;a id='L700' name='L700'&gt;&lt;/a&gt;  % \dimen2 is how much space is left on the page (more or less).
<a id='L715' name='L715'></a>&lt;a id='L701' name='L701'&gt;&lt;/a&gt;  \dimen2 = \pageheight   \advance\dimen2 by -\pagetotal
<a id='L716' name='L716'></a>&lt;a id='L702' name='L702'&gt;&lt;/a&gt;  % if the group doesn't fit on the current page, and it's a big big
<a id='L717' name='L717'></a>&lt;a id='L703' name='L703'&gt;&lt;/a&gt;  % group, force a page break.
<a id='L718' name='L718'></a>&lt;a id='L704' name='L704'&gt;&lt;/a&gt;  \ifdim \dimen0 &amp;gt; \dimen2
<a id='L719' name='L719'></a>&lt;a id='L705' name='L705'&gt;&lt;/a&gt;    \ifdim \pagetotal &amp;lt; \vfilllimit\pageheight
<a id='L720' name='L720'></a>&lt;a id='L706' name='L706'&gt;&lt;/a&gt;      \page
<a id='L721' name='L721'></a>&lt;a id='L707' name='L707'&gt;&lt;/a&gt;    \fi
<a id='L722' name='L722'></a>&lt;a id='L708' name='L708'&gt;&lt;/a&gt;  \fi
<a id='L723' name='L723'></a>&lt;a id='L709' name='L709'&gt;&lt;/a&gt;  \box\groupbox
<a id='L724' name='L724'></a>&lt;a id='L710' name='L710'&gt;&lt;/a&gt;  \prevdepth = \dimen1
<a id='L725' name='L725'></a>&lt;a id='L711' name='L711'&gt;&lt;/a&gt;  \checkinserts
<a id='L726' name='L726'></a>&lt;a id='L712' name='L712'&gt;&lt;/a&gt;}
<a id='L727' name='L727'></a>&lt;a id='L713' name='L713'&gt;&lt;/a&gt;%
<a id='L728' name='L728'></a>&lt;a id='L714' name='L714'&gt;&lt;/a&gt;% TeX puts in an \escapechar (i.e., `@') at the beginning of the help
<a id='L729' name='L729'></a>&lt;a id='L715' name='L715'&gt;&lt;/a&gt;% message, so this ends up printing `@group can only ...'.
<a id='L730' name='L730'></a>&lt;a id='L716' name='L716'&gt;&lt;/a&gt;%
<a id='L731' name='L731'></a>&lt;a id='L717' name='L717'&gt;&lt;/a&gt;\newhelp\groupinvalidhelp{%
<a id='L732' name='L732'></a>&lt;a id='L718' name='L718'&gt;&lt;/a&gt;group can only be used in environments such as @example,^^J%
<a id='L733' name='L733'></a>&lt;a id='L719' name='L719'&gt;&lt;/a&gt;where each line of input produces a line of output.}
<a id='L734' name='L734'></a>&lt;a id='L720' name='L720'&gt;&lt;/a&gt;
<a id='L735' name='L735'></a>&lt;a id='L721' name='L721'&gt;&lt;/a&gt;% @need space-in-mils
<a id='L736' name='L736'></a>&lt;a id='L722' name='L722'&gt;&lt;/a&gt;% forces a page break if there is not space-in-mils remaining.
<a id='L737' name='L737'></a>&lt;a id='L723' name='L723'&gt;&lt;/a&gt;
<a id='L738' name='L738'></a>&lt;a id='L724' name='L724'&gt;&lt;/a&gt;\newdimen\mil  \mil=0.001in
<a id='L739' name='L739'></a>&lt;a id='L725' name='L725'&gt;&lt;/a&gt;
<a id='L740' name='L740'></a>&lt;a id='L726' name='L726'&gt;&lt;/a&gt;\parseargdef\need{%
<a id='L741' name='L741'></a>&lt;a id='L727' name='L727'&gt;&lt;/a&gt;  % Ensure vertical mode, so we don't make a big box in the middle of a
<a id='L742' name='L742'></a>&lt;a id='L728' name='L728'&gt;&lt;/a&gt;  % paragraph.
<a id='L743' name='L743'></a>&lt;a id='L729' name='L729'&gt;&lt;/a&gt;  \par
<a id='L744' name='L744'></a>&lt;a id='L730' name='L730'&gt;&lt;/a&gt;  %
<a id='L745' name='L745'></a>&lt;a id='L731' name='L731'&gt;&lt;/a&gt;  % If the @need value is less than one line space, it's useless.
<a id='L746' name='L746'></a>&lt;a id='L732' name='L732'&gt;&lt;/a&gt;  \dimen0 = #1\mil
<a id='L747' name='L747'></a>&lt;a id='L733' name='L733'&gt;&lt;/a&gt;  \dimen2 = \ht\strutbox
<a id='L748' name='L748'></a>&lt;a id='L734' name='L734'&gt;&lt;/a&gt;  \advance\dimen2 by \dp\strutbox
<a id='L749' name='L749'></a>&lt;a id='L735' name='L735'&gt;&lt;/a&gt;  \ifdim\dimen0 &amp;gt; \dimen2
<a id='L750' name='L750'></a>&lt;a id='L736' name='L736'&gt;&lt;/a&gt;    %
<a id='L751' name='L751'></a>&lt;a id='L737' name='L737'&gt;&lt;/a&gt;    % Do a \strut just to make the height of this box be normal, so the
<a id='L752' name='L752'></a>&lt;a id='L738' name='L738'&gt;&lt;/a&gt;    % normal leading is inserted relative to the preceding line.
<a id='L753' name='L753'></a>&lt;a id='L739' name='L739'&gt;&lt;/a&gt;    % And a page break here is fine.
<a id='L754' name='L754'></a>&lt;a id='L740' name='L740'&gt;&lt;/a&gt;    \vtop to #1\mil{\strut\vfil}%
<a id='L755' name='L755'></a>&lt;a id='L741' name='L741'&gt;&lt;/a&gt;    %
<a id='L756' name='L756'></a>&lt;a id='L742' name='L742'&gt;&lt;/a&gt;    % TeX does not even consider page breaks if a penalty added to the
<a id='L757' name='L757'></a>&lt;a id='L743' name='L743'&gt;&lt;/a&gt;    % main vertical list is 10000 or more.  But in order to see if the
<a id='L758' name='L758'></a>&lt;a id='L744' name='L744'&gt;&lt;/a&gt;    % empty box we just added fits on the page, we must make it consider
<a id='L759' name='L759'></a>&lt;a id='L745' name='L745'&gt;&lt;/a&gt;    % page breaks.  On the other hand, we don't want to actually break the
<a id='L760' name='L760'></a>&lt;a id='L746' name='L746'&gt;&lt;/a&gt;    % page after the empty box.  So we use a penalty of 9999.
<a id='L761' name='L761'></a>&lt;a id='L747' name='L747'&gt;&lt;/a&gt;    %
<a id='L762' name='L762'></a>&lt;a id='L748' name='L748'&gt;&lt;/a&gt;    % There is an extremely small chance that TeX will actually break the
<a id='L763' name='L763'></a>&lt;a id='L749' name='L749'&gt;&lt;/a&gt;    % page at this \penalty, if there are no other feasible breakpoints in
<a id='L764' name='L764'></a>&lt;a id='L750' name='L750'&gt;&lt;/a&gt;    % sight.  (If the user is using lots of big @group commands, which
<a id='L765' name='L765'></a>&lt;a id='L751' name='L751'&gt;&lt;/a&gt;    % almost-but-not-quite fill up a page, TeX will have a hard time doing
<a id='L766' name='L766'></a>&lt;a id='L752' name='L752'&gt;&lt;/a&gt;    % good page breaking, for example.)  However, I could not construct an
<a id='L767' name='L767'></a>&lt;a id='L753' name='L753'&gt;&lt;/a&gt;    % example where a page broke at this \penalty; if it happens in a real
<a id='L768' name='L768'></a>&lt;a id='L754' name='L754'&gt;&lt;/a&gt;    % document, then we can reconsider our strategy.
<a id='L769' name='L769'></a>&lt;a id='L755' name='L755'&gt;&lt;/a&gt;    \penalty9999
<a id='L770' name='L770'></a>&lt;a id='L756' name='L756'&gt;&lt;/a&gt;    %
<a id='L771' name='L771'></a>&lt;a id='L757' name='L757'&gt;&lt;/a&gt;    % Back up by the size of the box, whether we did a page break or not.
<a id='L772' name='L772'></a>&lt;a id='L758' name='L758'&gt;&lt;/a&gt;    \kern -#1\mil
<a id='L773' name='L773'></a>&lt;a id='L759' name='L759'&gt;&lt;/a&gt;    %
<a id='L774' name='L774'></a>&lt;a id='L760' name='L760'&gt;&lt;/a&gt;    % Do not allow a page break right after this kern.
<a id='L775' name='L775'></a>&lt;a id='L761' name='L761'&gt;&lt;/a&gt;    \nobreak
<a id='L776' name='L776'></a>&lt;a id='L762' name='L762'&gt;&lt;/a&gt;  \fi
<a id='L777' name='L777'></a>&lt;a id='L763' name='L763'&gt;&lt;/a&gt;}
<a id='L778' name='L778'></a>&lt;a id='L764' name='L764'&gt;&lt;/a&gt;
<a id='L779' name='L779'></a>&lt;a id='L765' name='L765'&gt;&lt;/a&gt;% @br   forces paragraph break (and is undocumented).
<a id='L780' name='L780'></a>&lt;a id='L766' name='L766'&gt;&lt;/a&gt;
<a id='L781' name='L781'></a>&lt;a id='L767' name='L767'&gt;&lt;/a&gt;\let\br = \par
<a id='L782' name='L782'></a>&lt;a id='L768' name='L768'&gt;&lt;/a&gt;
<a id='L783' name='L783'></a>&lt;a id='L769' name='L769'&gt;&lt;/a&gt;% @page forces the start of a new page.
<a id='L784' name='L784'></a>&lt;a id='L770' name='L770'&gt;&lt;/a&gt;%
<a id='L785' name='L785'></a>&lt;a id='L771' name='L771'&gt;&lt;/a&gt;\def\page{\par\vfill\supereject}
<a id='L786' name='L786'></a>&lt;a id='L772' name='L772'&gt;&lt;/a&gt;
<a id='L787' name='L787'></a>&lt;a id='L773' name='L773'&gt;&lt;/a&gt;% @exdent text....
<a id='L788' name='L788'></a>&lt;a id='L774' name='L774'&gt;&lt;/a&gt;% outputs text on separate line in roman font, starting at standard page margin
<a id='L789' name='L789'></a>&lt;a id='L775' name='L775'&gt;&lt;/a&gt;
<a id='L790' name='L790'></a>&lt;a id='L776' name='L776'&gt;&lt;/a&gt;% This records the amount of indent in the innermost environment.
<a id='L791' name='L791'></a>&lt;a id='L777' name='L777'&gt;&lt;/a&gt;% That's how much \exdent should take out.
<a id='L792' name='L792'></a>&lt;a id='L778' name='L778'&gt;&lt;/a&gt;\newskip\exdentamount
<a id='L793' name='L793'></a>&lt;a id='L779' name='L779'&gt;&lt;/a&gt;
<a id='L794' name='L794'></a>&lt;a id='L780' name='L780'&gt;&lt;/a&gt;% This defn is used inside fill environments such as @defun.
<a id='L795' name='L795'></a>&lt;a id='L781' name='L781'&gt;&lt;/a&gt;\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}
<a id='L796' name='L796'></a>&lt;a id='L782' name='L782'&gt;&lt;/a&gt;
<a id='L797' name='L797'></a>&lt;a id='L783' name='L783'&gt;&lt;/a&gt;% This defn is used inside nofill environments such as @example.
<a id='L798' name='L798'></a>&lt;a id='L784' name='L784'&gt;&lt;/a&gt;\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount
<a id='L799' name='L799'></a>&lt;a id='L785' name='L785'&gt;&lt;/a&gt;  \leftline{\hskip\leftskip{\rm#1}}}}
<a id='L800' name='L800'></a>&lt;a id='L786' name='L786'&gt;&lt;/a&gt;
<a id='L801' name='L801'></a>&lt;a id='L787' name='L787'&gt;&lt;/a&gt;% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
<a id='L802' name='L802'></a>&lt;a id='L788' name='L788'&gt;&lt;/a&gt;% paragraph.  For more general purposes, use the \margin insertion
<a id='L803' name='L803'></a>&lt;a id='L789' name='L789'&gt;&lt;/a&gt;% class.  WHICH is `l' or `r'.  Not documented, written for gawk manual.
<a id='L804' name='L804'></a>&lt;a id='L790' name='L790'&gt;&lt;/a&gt;%
<a id='L805' name='L805'></a>&lt;a id='L791' name='L791'&gt;&lt;/a&gt;\newskip\inmarginspacing \inmarginspacing=1cm
<a id='L806' name='L806'></a>&lt;a id='L792' name='L792'&gt;&lt;/a&gt;\def\strutdepth{\dp\strutbox}
<a id='L807' name='L807'></a>&lt;a id='L793' name='L793'&gt;&lt;/a&gt;%
<a id='L808' name='L808'></a>&lt;a id='L794' name='L794'&gt;&lt;/a&gt;\def\doinmargin#1#2{\strut\vadjust{%
<a id='L809' name='L809'></a>&lt;a id='L795' name='L795'&gt;&lt;/a&gt;  \nobreak
<a id='L810' name='L810'></a>&lt;a id='L796' name='L796'&gt;&lt;/a&gt;  \kern-\strutdepth
<a id='L811' name='L811'></a>&lt;a id='L797' name='L797'&gt;&lt;/a&gt;  \vtop to \strutdepth{%
<a id='L812' name='L812'></a>&lt;a id='L798' name='L798'&gt;&lt;/a&gt;    \baselineskip=\strutdepth
<a id='L813' name='L813'></a>&lt;a id='L799' name='L799'&gt;&lt;/a&gt;    \vss
<a id='L814' name='L814'></a>&lt;a id='L800' name='L800'&gt;&lt;/a&gt;    % if you have multiple lines of stuff to put here, you'll need to
<a id='L815' name='L815'></a>&lt;a id='L801' name='L801'&gt;&lt;/a&gt;    % make the vbox yourself of the appropriate size.
<a id='L816' name='L816'></a>&lt;a id='L802' name='L802'&gt;&lt;/a&gt;    \ifx#1l%
<a id='L817' name='L817'></a>&lt;a id='L803' name='L803'&gt;&lt;/a&gt;      \llap{\ignorespaces #2\hskip\inmarginspacing}%
<a id='L818' name='L818'></a>&lt;a id='L804' name='L804'&gt;&lt;/a&gt;    \else
<a id='L819' name='L819'></a>&lt;a id='L805' name='L805'&gt;&lt;/a&gt;      \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}%
<a id='L820' name='L820'></a>&lt;a id='L806' name='L806'&gt;&lt;/a&gt;    \fi
<a id='L821' name='L821'></a>&lt;a id='L807' name='L807'&gt;&lt;/a&gt;    \null
<a id='L822' name='L822'></a>&lt;a id='L808' name='L808'&gt;&lt;/a&gt;  }%
<a id='L823' name='L823'></a>&lt;a id='L809' name='L809'&gt;&lt;/a&gt;}}
<a id='L824' name='L824'></a>&lt;a id='L810' name='L810'&gt;&lt;/a&gt;\def\inleftmargin{\doinmargin l}
<a id='L825' name='L825'></a>&lt;a id='L811' name='L811'&gt;&lt;/a&gt;\def\inrightmargin{\doinmargin r}
<a id='L826' name='L826'></a>&lt;a id='L812' name='L812'&gt;&lt;/a&gt;%
<a id='L827' name='L827'></a>&lt;a id='L813' name='L813'&gt;&lt;/a&gt;% @inmargin{TEXT [, RIGHT-TEXT]}
<a id='L828' name='L828'></a>&lt;a id='L814' name='L814'&gt;&lt;/a&gt;% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right;
<a id='L829' name='L829'></a>&lt;a id='L815' name='L815'&gt;&lt;/a&gt;% else use TEXT for both).
<a id='L830' name='L830'></a>&lt;a id='L816' name='L816'&gt;&lt;/a&gt;%
<a id='L831' name='L831'></a>&lt;a id='L817' name='L817'&gt;&lt;/a&gt;\def\inmargin#1{\parseinmargin #1,,\finish}
<a id='L832' name='L832'></a>&lt;a id='L818' name='L818'&gt;&lt;/a&gt;\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing.
<a id='L833' name='L833'></a>&lt;a id='L819' name='L819'&gt;&lt;/a&gt;  \setbox0 = \hbox{\ignorespaces #2}%
<a id='L834' name='L834'></a>&lt;a id='L820' name='L820'&gt;&lt;/a&gt;  \ifdim\wd0 &amp;gt; 0pt
<a id='L835' name='L835'></a>&lt;a id='L821' name='L821'&gt;&lt;/a&gt;    \def\lefttext{#1}%  have both texts
<a id='L836' name='L836'></a>&lt;a id='L822' name='L822'&gt;&lt;/a&gt;    \def\righttext{#2}%
<a id='L837' name='L837'></a>&lt;a id='L823' name='L823'&gt;&lt;/a&gt;  \else
<a id='L838' name='L838'></a>&lt;a id='L824' name='L824'&gt;&lt;/a&gt;    \def\lefttext{#1}%  have only one text
<a id='L839' name='L839'></a>&lt;a id='L825' name='L825'&gt;&lt;/a&gt;    \def\righttext{#1}%
<a id='L840' name='L840'></a>&lt;a id='L826' name='L826'&gt;&lt;/a&gt;  \fi
<a id='L841' name='L841'></a>&lt;a id='L827' name='L827'&gt;&lt;/a&gt;  %
<a id='L842' name='L842'></a>&lt;a id='L828' name='L828'&gt;&lt;/a&gt;  \ifodd\pageno
<a id='L843' name='L843'></a>&lt;a id='L829' name='L829'&gt;&lt;/a&gt;    \def\temp{\inrightmargin\righttext}% odd page -&amp;gt; outside is right margin
<a id='L844' name='L844'></a>&lt;a id='L830' name='L830'&gt;&lt;/a&gt;  \else
<a id='L845' name='L845'></a>&lt;a id='L831' name='L831'&gt;&lt;/a&gt;    \def\temp{\inleftmargin\lefttext}%
<a id='L846' name='L846'></a>&lt;a id='L832' name='L832'&gt;&lt;/a&gt;  \fi
<a id='L847' name='L847'></a>&lt;a id='L833' name='L833'&gt;&lt;/a&gt;  \temp
<a id='L848' name='L848'></a>&lt;a id='L834' name='L834'&gt;&lt;/a&gt;}
<a id='L849' name='L849'></a>&lt;a id='L835' name='L835'&gt;&lt;/a&gt;
<a id='L850' name='L850'></a>&lt;a id='L836' name='L836'&gt;&lt;/a&gt;% @| inserts a changebar to the left of the current line.  It should
<a id='L851' name='L851'></a>&lt;a id='L837' name='L837'&gt;&lt;/a&gt;% surround any changed text.  This approach does *not* work if the
<a id='L852' name='L852'></a>&lt;a id='L838' name='L838'&gt;&lt;/a&gt;% change spans more than two lines of output.  To handle that, we would
<a id='L853' name='L853'></a>&lt;a id='L839' name='L839'&gt;&lt;/a&gt;% have adopt a much more difficult approach (putting marks into the main
<a id='L854' name='L854'></a>&lt;a id='L840' name='L840'&gt;&lt;/a&gt;% vertical list for the beginning and end of each change).  This command
<a id='L855' name='L855'></a>&lt;a id='L841' name='L841'&gt;&lt;/a&gt;% is not documented, not supported, and doesn't work.
<a id='L856' name='L856'></a>&lt;a id='L842' name='L842'&gt;&lt;/a&gt;%
<a id='L857' name='L857'></a>&lt;a id='L843' name='L843'&gt;&lt;/a&gt;\def\|{%
<a id='L858' name='L858'></a>&lt;a id='L844' name='L844'&gt;&lt;/a&gt;  % \vadjust can only be used in horizontal mode.
<a id='L859' name='L859'></a>&lt;a id='L845' name='L845'&gt;&lt;/a&gt;  \leavevmode
<a id='L860' name='L860'></a>&lt;a id='L846' name='L846'&gt;&lt;/a&gt;  %
<a id='L861' name='L861'></a>&lt;a id='L847' name='L847'&gt;&lt;/a&gt;  % Append this vertical mode material after the current line in the output.
<a id='L862' name='L862'></a>&lt;a id='L848' name='L848'&gt;&lt;/a&gt;  \vadjust{%
<a id='L863' name='L863'></a>&lt;a id='L849' name='L849'&gt;&lt;/a&gt;    % We want to insert a rule with the height and depth of the current
<a id='L864' name='L864'></a>&lt;a id='L850' name='L850'&gt;&lt;/a&gt;    % leading; that is exactly what \strutbox is supposed to record.
<a id='L865' name='L865'></a>&lt;a id='L851' name='L851'&gt;&lt;/a&gt;    \vskip-\baselineskip
<a id='L866' name='L866'></a>&lt;a id='L852' name='L852'&gt;&lt;/a&gt;    %
<a id='L867' name='L867'></a>&lt;a id='L853' name='L853'&gt;&lt;/a&gt;    % \vadjust-items are inserted at the left edge of the type.  So
<a id='L868' name='L868'></a>&lt;a id='L854' name='L854'&gt;&lt;/a&gt;    % the \llap here moves out into the left-hand margin.
<a id='L869' name='L869'></a>&lt;a id='L855' name='L855'&gt;&lt;/a&gt;    \llap{%
<a id='L870' name='L870'></a>&lt;a id='L856' name='L856'&gt;&lt;/a&gt;      %
<a id='L871' name='L871'></a>&lt;a id='L857' name='L857'&gt;&lt;/a&gt;      % For a thicker or thinner bar, change the `1pt'.
<a id='L872' name='L872'></a>&lt;a id='L858' name='L858'&gt;&lt;/a&gt;      \vrule height\baselineskip width1pt
<a id='L873' name='L873'></a>&lt;a id='L859' name='L859'&gt;&lt;/a&gt;      %
<a id='L874' name='L874'></a>&lt;a id='L860' name='L860'&gt;&lt;/a&gt;      % This is the space between the bar and the text.
<a id='L875' name='L875'></a>&lt;a id='L861' name='L861'&gt;&lt;/a&gt;      \hskip 12pt
<a id='L876' name='L876'></a>&lt;a id='L862' name='L862'&gt;&lt;/a&gt;    }%
<a id='L877' name='L877'></a>&lt;a id='L863' name='L863'&gt;&lt;/a&gt;  }%
<a id='L878' name='L878'></a>&lt;a id='L864' name='L864'&gt;&lt;/a&gt;}
<a id='L879' name='L879'></a>&lt;a id='L865' name='L865'&gt;&lt;/a&gt;
<a id='L880' name='L880'></a>&lt;a id='L866' name='L866'&gt;&lt;/a&gt;% @include FILE -- \input text of FILE.
<a id='L881' name='L881'></a>&lt;a id='L867' name='L867'&gt;&lt;/a&gt;%
<a id='L882' name='L882'></a>&lt;a id='L868' name='L868'&gt;&lt;/a&gt;\def\include{\parseargusing\filenamecatcodes\includezzz}
<a id='L883' name='L883'></a>&lt;a id='L869' name='L869'&gt;&lt;/a&gt;\def\includezzz#1{%
<a id='L884' name='L884'></a>&lt;a id='L870' name='L870'&gt;&lt;/a&gt;  \pushthisfilestack
<a id='L885' name='L885'></a>&lt;a id='L871' name='L871'&gt;&lt;/a&gt;  \def\thisfile{#1}%
<a id='L886' name='L886'></a>&lt;a id='L872' name='L872'&gt;&lt;/a&gt;  {%
<a id='L887' name='L887'></a>&lt;a id='L873' name='L873'&gt;&lt;/a&gt;    \makevalueexpandable  % we want to expand any @value in FILE.
<a id='L888' name='L888'></a>&lt;a id='L874' name='L874'&gt;&lt;/a&gt;    \turnoffactive        % and allow special characters in the expansion
<a id='L889' name='L889'></a>&lt;a id='L875' name='L875'&gt;&lt;/a&gt;    \indexnofonts         % Allow `@@' and other weird things in file names.
<a id='L890' name='L890'></a>&lt;a id='L876' name='L876'&gt;&lt;/a&gt;    \wlog{texinfo.tex: doing @include of #1^^J}%
<a id='L891' name='L891'></a>&lt;a id='L877' name='L877'&gt;&lt;/a&gt;    \edef\temp{\noexpand\input #1 }%
<a id='L892' name='L892'></a>&lt;a id='L878' name='L878'&gt;&lt;/a&gt;    %
<a id='L893' name='L893'></a>&lt;a id='L879' name='L879'&gt;&lt;/a&gt;    % This trickery is to read FILE outside of a group, in case it makes
<a id='L894' name='L894'></a>&lt;a id='L880' name='L880'&gt;&lt;/a&gt;    % definitions, etc.
<a id='L895' name='L895'></a>&lt;a id='L881' name='L881'&gt;&lt;/a&gt;    \expandafter
<a id='L896' name='L896'></a>&lt;a id='L882' name='L882'&gt;&lt;/a&gt;  }\temp
<a id='L897' name='L897'></a>&lt;a id='L883' name='L883'&gt;&lt;/a&gt;  \popthisfilestack
<a id='L898' name='L898'></a>&lt;a id='L884' name='L884'&gt;&lt;/a&gt;}
<a id='L899' name='L899'></a>&lt;a id='L885' name='L885'&gt;&lt;/a&gt;\def\filenamecatcodes{%
<a id='L900' name='L900'></a>&lt;a id='L886' name='L886'&gt;&lt;/a&gt;  \catcode`\\=\other
<a id='L901' name='L901'></a>&lt;a id='L887' name='L887'&gt;&lt;/a&gt;  \catcode`~=\other
<a id='L902' name='L902'></a>&lt;a id='L888' name='L888'&gt;&lt;/a&gt;  \catcode`^=\other
<a id='L903' name='L903'></a>&lt;a id='L889' name='L889'&gt;&lt;/a&gt;  \catcode`_=\other
<a id='L904' name='L904'></a>&lt;a id='L890' name='L890'&gt;&lt;/a&gt;  \catcode`|=\other
<a id='L905' name='L905'></a>&lt;a id='L891' name='L891'&gt;&lt;/a&gt;  \catcode`&amp;lt;=\other
<a id='L906' name='L906'></a>&lt;a id='L892' name='L892'&gt;&lt;/a&gt;  \catcode`&amp;gt;=\other
<a id='L907' name='L907'></a>&lt;a id='L893' name='L893'&gt;&lt;/a&gt;  \catcode`+=\other
<a id='L908' name='L908'></a>&lt;a id='L894' name='L894'&gt;&lt;/a&gt;  \catcode`-=\other
<a id='L909' name='L909'></a>&lt;a id='L895' name='L895'&gt;&lt;/a&gt;  \catcode`\`=\other
<a id='L910' name='L910'></a>&lt;a id='L896' name='L896'&gt;&lt;/a&gt;  \catcode`\'=\other
<a id='L911' name='L911'></a>&lt;a id='L897' name='L897'&gt;&lt;/a&gt;}
<a id='L912' name='L912'></a>&lt;a id='L898' name='L898'&gt;&lt;/a&gt;
<a id='L913' name='L913'></a>&lt;a id='L899' name='L899'&gt;&lt;/a&gt;\def\pushthisfilestack{%
<a id='L914' name='L914'></a>&lt;a id='L900' name='L900'&gt;&lt;/a&gt;  \expandafter\pushthisfilestackX\popthisfilestack\StackTerm
<a id='L915' name='L915'></a>&lt;a id='L901' name='L901'&gt;&lt;/a&gt;}
<a id='L916' name='L916'></a>&lt;a id='L902' name='L902'&gt;&lt;/a&gt;\def\pushthisfilestackX{%
<a id='L917' name='L917'></a>&lt;a id='L903' name='L903'&gt;&lt;/a&gt;  \expandafter\pushthisfilestackY\thisfile\StackTerm
<a id='L918' name='L918'></a>&lt;a id='L904' name='L904'&gt;&lt;/a&gt;}
<a id='L919' name='L919'></a>&lt;a id='L905' name='L905'&gt;&lt;/a&gt;\def\pushthisfilestackY #1\StackTerm #2\StackTerm {%
<a id='L920' name='L920'></a>&lt;a id='L906' name='L906'&gt;&lt;/a&gt;  \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}%
<a id='L921' name='L921'></a>&lt;a id='L907' name='L907'&gt;&lt;/a&gt;}
<a id='L922' name='L922'></a>&lt;a id='L908' name='L908'&gt;&lt;/a&gt;
<a id='L923' name='L923'></a>&lt;a id='L909' name='L909'&gt;&lt;/a&gt;\def\popthisfilestack{\errthisfilestackempty}
<a id='L924' name='L924'></a>&lt;a id='L910' name='L910'&gt;&lt;/a&gt;\def\errthisfilestackempty{\errmessage{Internal error:
<a id='L925' name='L925'></a>&lt;a id='L911' name='L911'&gt;&lt;/a&gt;  the stack of filenames is empty.}}
<a id='L926' name='L926'></a>&lt;a id='L912' name='L912'&gt;&lt;/a&gt;%
<a id='L927' name='L927'></a>&lt;a id='L913' name='L913'&gt;&lt;/a&gt;\def\thisfile{}
<a id='L928' name='L928'></a>&lt;a id='L914' name='L914'&gt;&lt;/a&gt;
<a id='L929' name='L929'></a>&lt;a id='L915' name='L915'&gt;&lt;/a&gt;% @center line
<a id='L930' name='L930'></a>&lt;a id='L916' name='L916'&gt;&lt;/a&gt;% outputs that line, centered.
<a id='L931' name='L931'></a>&lt;a id='L917' name='L917'&gt;&lt;/a&gt;%
<a id='L932' name='L932'></a>&lt;a id='L918' name='L918'&gt;&lt;/a&gt;\parseargdef\center{%
<a id='L933' name='L933'></a>&lt;a id='L919' name='L919'&gt;&lt;/a&gt;  \ifhmode
<a id='L934' name='L934'></a>&lt;a id='L920' name='L920'&gt;&lt;/a&gt;    \let\centersub\centerH
<a id='L935' name='L935'></a>&lt;a id='L921' name='L921'&gt;&lt;/a&gt;  \else
<a id='L936' name='L936'></a>&lt;a id='L922' name='L922'&gt;&lt;/a&gt;    \let\centersub\centerV
<a id='L937' name='L937'></a>&lt;a id='L923' name='L923'&gt;&lt;/a&gt;  \fi
<a id='L938' name='L938'></a>&lt;a id='L924' name='L924'&gt;&lt;/a&gt;  \centersub{\hfil \ignorespaces#1\unskip \hfil}%
<a id='L939' name='L939'></a>&lt;a id='L925' name='L925'&gt;&lt;/a&gt;  \let\centersub\relax % don't let the definition persist, just in case
<a id='L940' name='L940'></a>&lt;a id='L926' name='L926'&gt;&lt;/a&gt;}
<a id='L941' name='L941'></a>&lt;a id='L927' name='L927'&gt;&lt;/a&gt;\def\centerH#1{{%
<a id='L942' name='L942'></a>&lt;a id='L928' name='L928'&gt;&lt;/a&gt;  \hfil\break
<a id='L943' name='L943'></a>&lt;a id='L929' name='L929'&gt;&lt;/a&gt;  \advance\hsize by -\leftskip
<a id='L944' name='L944'></a>&lt;a id='L930' name='L930'&gt;&lt;/a&gt;  \advance\hsize by -\rightskip
<a id='L945' name='L945'></a>&lt;a id='L931' name='L931'&gt;&lt;/a&gt;  \line{#1}%
<a id='L946' name='L946'></a>&lt;a id='L932' name='L932'&gt;&lt;/a&gt;  \break
<a id='L947' name='L947'></a>&lt;a id='L933' name='L933'&gt;&lt;/a&gt;}}
<a id='L948' name='L948'></a>&lt;a id='L934' name='L934'&gt;&lt;/a&gt;%
<a id='L949' name='L949'></a>&lt;a id='L935' name='L935'&gt;&lt;/a&gt;\newcount\centerpenalty
<a id='L950' name='L950'></a>&lt;a id='L936' name='L936'&gt;&lt;/a&gt;\def\centerV#1{%
<a id='L951' name='L951'></a>&lt;a id='L937' name='L937'&gt;&lt;/a&gt;  % The idea here is the same as in \startdefun, \cartouche, etc.: if
<a id='L952' name='L952'></a>&lt;a id='L938' name='L938'&gt;&lt;/a&gt;  % @center is the first thing after a section heading, we need to wipe
<a id='L953' name='L953'></a>&lt;a id='L939' name='L939'&gt;&lt;/a&gt;  % out the negative parskip inserted by \sectionheading, but still
<a id='L954' name='L954'></a>&lt;a id='L940' name='L940'&gt;&lt;/a&gt;  % prevent a page break here.
<a id='L955' name='L955'></a>&lt;a id='L941' name='L941'&gt;&lt;/a&gt;  \centerpenalty = \lastpenalty
<a id='L956' name='L956'></a>&lt;a id='L942' name='L942'&gt;&lt;/a&gt;  \ifnum\centerpenalty&amp;gt;10000 \vskip\parskip \fi
<a id='L957' name='L957'></a>&lt;a id='L943' name='L943'&gt;&lt;/a&gt;  \ifnum\centerpenalty&amp;gt;9999 \penalty\centerpenalty \fi
<a id='L958' name='L958'></a>&lt;a id='L944' name='L944'&gt;&lt;/a&gt;  \line{\kern\leftskip #1\kern\rightskip}%
<a id='L959' name='L959'></a>&lt;a id='L945' name='L945'&gt;&lt;/a&gt;}
<a id='L960' name='L960'></a>&lt;a id='L946' name='L946'&gt;&lt;/a&gt;
<a id='L961' name='L961'></a>&lt;a id='L947' name='L947'&gt;&lt;/a&gt;% @sp n   outputs n lines of vertical space
<a id='L962' name='L962'></a>&lt;a id='L948' name='L948'&gt;&lt;/a&gt;%
<a id='L963' name='L963'></a>&lt;a id='L949' name='L949'&gt;&lt;/a&gt;\parseargdef\sp{\vskip #1\baselineskip}
<a id='L964' name='L964'></a>&lt;a id='L950' name='L950'&gt;&lt;/a&gt;
<a id='L965' name='L965'></a>&lt;a id='L951' name='L951'&gt;&lt;/a&gt;% @comment ...line which is ignored...
<a id='L966' name='L966'></a>&lt;a id='L952' name='L952'&gt;&lt;/a&gt;% @c is the same as @comment
<a id='L967' name='L967'></a>&lt;a id='L953' name='L953'&gt;&lt;/a&gt;% @ignore ... @end ignore  is another way to write a comment
<a id='L968' name='L968'></a>&lt;a id='L954' name='L954'&gt;&lt;/a&gt;%
<a id='L969' name='L969'></a>&lt;a id='L955' name='L955'&gt;&lt;/a&gt;\def\comment{\begingroup \catcode`\^^M=\other%
<a id='L970' name='L970'></a>&lt;a id='L956' name='L956'&gt;&lt;/a&gt;\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
<a id='L971' name='L971'></a>&lt;a id='L957' name='L957'&gt;&lt;/a&gt;\commentxxx}
<a id='L972' name='L972'></a>&lt;a id='L958' name='L958'&gt;&lt;/a&gt;{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
<a id='L973' name='L973'></a>&lt;a id='L959' name='L959'&gt;&lt;/a&gt;%
<a id='L974' name='L974'></a>&lt;a id='L960' name='L960'&gt;&lt;/a&gt;\let\c=\comment
<a id='L975' name='L975'></a>&lt;a id='L961' name='L961'&gt;&lt;/a&gt;
<a id='L976' name='L976'></a>&lt;a id='L962' name='L962'&gt;&lt;/a&gt;% @paragraphindent NCHARS
<a id='L977' name='L977'></a>&lt;a id='L963' name='L963'&gt;&lt;/a&gt;% We'll use ems for NCHARS, close enough.
<a id='L978' name='L978'></a>&lt;a id='L964' name='L964'&gt;&lt;/a&gt;% NCHARS can also be the word `asis' or `none'.
<a id='L979' name='L979'></a>&lt;a id='L965' name='L965'&gt;&lt;/a&gt;% We cannot feasibly implement @paragraphindent asis, though.
<a id='L980' name='L980'></a>&lt;a id='L966' name='L966'&gt;&lt;/a&gt;%
<a id='L981' name='L981'></a>&lt;a id='L967' name='L967'&gt;&lt;/a&gt;\def\asisword{asis} % no translation, these are keywords
<a id='L982' name='L982'></a>&lt;a id='L968' name='L968'&gt;&lt;/a&gt;\def\noneword{none}
<a id='L983' name='L983'></a>&lt;a id='L969' name='L969'&gt;&lt;/a&gt;%
<a id='L984' name='L984'></a>&lt;a id='L970' name='L970'&gt;&lt;/a&gt;\parseargdef\paragraphindent{%
<a id='L985' name='L985'></a>&lt;a id='L971' name='L971'&gt;&lt;/a&gt;  \def\temp{#1}%
<a id='L986' name='L986'></a>&lt;a id='L972' name='L972'&gt;&lt;/a&gt;  \ifx\temp\asisword
<a id='L987' name='L987'></a>&lt;a id='L973' name='L973'&gt;&lt;/a&gt;  \else
<a id='L988' name='L988'></a>&lt;a id='L974' name='L974'&gt;&lt;/a&gt;    \ifx\temp\noneword
<a id='L989' name='L989'></a>&lt;a id='L975' name='L975'&gt;&lt;/a&gt;      \defaultparindent = 0pt
<a id='L990' name='L990'></a>&lt;a id='L976' name='L976'&gt;&lt;/a&gt;    \else
<a id='L991' name='L991'></a>&lt;a id='L977' name='L977'&gt;&lt;/a&gt;      \defaultparindent = #1em
<a id='L992' name='L992'></a>&lt;a id='L978' name='L978'&gt;&lt;/a&gt;    \fi
<a id='L993' name='L993'></a>&lt;a id='L979' name='L979'&gt;&lt;/a&gt;  \fi
<a id='L994' name='L994'></a>&lt;a id='L980' name='L980'&gt;&lt;/a&gt;  \parindent = \defaultparindent
<a id='L995' name='L995'></a>&lt;a id='L981' name='L981'&gt;&lt;/a&gt;}
<a id='L996' name='L996'></a>&lt;a id='L982' name='L982'&gt;&lt;/a&gt;
<a id='L997' name='L997'></a>&lt;a id='L983' name='L983'&gt;&lt;/a&gt;% @exampleindent NCHARS
<a id='L998' name='L998'></a>&lt;a id='L984' name='L984'&gt;&lt;/a&gt;% We'll use ems for NCHARS like @paragraphindent.
<a id='L999' name='L999'></a>&lt;a id='L985' name='L985'&gt;&lt;/a&gt;% It seems @exampleindent asis isn't necessary, but
<a id='L1000' name='L1000'></a>&lt;a id='L986' name='L986'&gt;&lt;/a&gt;% I preserve it to make it similar to @paragraphindent.
<a id='L1001' name='L1001'></a>&lt;a id='L987' name='L987'&gt;&lt;/a&gt;\parseargdef\exampleindent{%
<a id='L1002' name='L1002'></a>&lt;a id='L988' name='L988'&gt;&lt;/a&gt;  \def\temp{#1}%
<a id='L1003' name='L1003'></a>&lt;a id='L989' name='L989'&gt;&lt;/a&gt;  \ifx\temp\asisword
<a id='L1004' name='L1004'></a>&lt;a id='L990' name='L990'&gt;&lt;/a&gt;  \else
<a id='L1005' name='L1005'></a>&lt;a id='L991' name='L991'&gt;&lt;/a&gt;    \ifx\temp\noneword
<a id='L1006' name='L1006'></a>&lt;a id='L992' name='L992'&gt;&lt;/a&gt;      \lispnarrowing = 0pt
<a id='L1007' name='L1007'></a>&lt;a id='L993' name='L993'&gt;&lt;/a&gt;    \else
<a id='L1008' name='L1008'></a>&lt;a id='L994' name='L994'&gt;&lt;/a&gt;      \lispnarrowing = #1em
<a id='L1009' name='L1009'></a>&lt;a id='L995' name='L995'&gt;&lt;/a&gt;    \fi
<a id='L1010' name='L1010'></a>&lt;a id='L996' name='L996'&gt;&lt;/a&gt;  \fi
<a id='L1011' name='L1011'></a>&lt;a id='L997' name='L997'&gt;&lt;/a&gt;}
<a id='L1012' name='L1012'></a>&lt;a id='L998' name='L998'&gt;&lt;/a&gt;
<a id='L1013' name='L1013'></a>&lt;a id='L999' name='L999'&gt;&lt;/a&gt;% @firstparagraphindent WORD
<a id='L1014' name='L1014'></a>&lt;a id='L1000' name='L1000'&gt;&lt;/a&gt;% If WORD is `none', then suppress indentation of the first paragraph
<a id='L1015' name='L1015'></a>&lt;a id='L1001' name='L1001'&gt;&lt;/a&gt;% after a section heading.  If WORD is `insert', then do indent at such
<a id='L1016' name='L1016'></a>&lt;a id='L1002' name='L1002'&gt;&lt;/a&gt;% paragraphs.
<a id='L1017' name='L1017'></a>&lt;a id='L1003' name='L1003'&gt;&lt;/a&gt;%
<a id='L1018' name='L1018'></a>&lt;a id='L1004' name='L1004'&gt;&lt;/a&gt;% The paragraph indentation is suppressed or not by calling
<a id='L1019' name='L1019'></a>&lt;a id='L1005' name='L1005'&gt;&lt;/a&gt;% \suppressfirstparagraphindent, which the sectioning commands do.
<a id='L1020' name='L1020'></a>&lt;a id='L1006' name='L1006'&gt;&lt;/a&gt;% We switch the definition of this back and forth according to WORD.
<a id='L1021' name='L1021'></a>&lt;a id='L1007' name='L1007'&gt;&lt;/a&gt;% By default, we suppress indentation.
<a id='L1022' name='L1022'></a>&lt;a id='L1008' name='L1008'&gt;&lt;/a&gt;%
<a id='L1023' name='L1023'></a>&lt;a id='L1009' name='L1009'&gt;&lt;/a&gt;\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent}
<a id='L1024' name='L1024'></a>&lt;a id='L1010' name='L1010'&gt;&lt;/a&gt;\def\insertword{insert}
<a id='L1025' name='L1025'></a>&lt;a id='L1011' name='L1011'&gt;&lt;/a&gt;%
<a id='L1026' name='L1026'></a>&lt;a id='L1012' name='L1012'&gt;&lt;/a&gt;\parseargdef\firstparagraphindent{%
<a id='L1027' name='L1027'></a>&lt;a id='L1013' name='L1013'&gt;&lt;/a&gt;  \def\temp{#1}%
<a id='L1028' name='L1028'></a>&lt;a id='L1014' name='L1014'&gt;&lt;/a&gt;  \ifx\temp\noneword
<a id='L1029' name='L1029'></a>&lt;a id='L1015' name='L1015'&gt;&lt;/a&gt;    \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent
<a id='L1030' name='L1030'></a>&lt;a id='L1016' name='L1016'&gt;&lt;/a&gt;  \else\ifx\temp\insertword
<a id='L1031' name='L1031'></a>&lt;a id='L1017' name='L1017'&gt;&lt;/a&gt;    \let\suppressfirstparagraphindent = \relax
<a id='L1032' name='L1032'></a>&lt;a id='L1018' name='L1018'&gt;&lt;/a&gt;  \else
<a id='L1033' name='L1033'></a>&lt;a id='L1019' name='L1019'&gt;&lt;/a&gt;    \errhelp = \EMsimple
<a id='L1034' name='L1034'></a>&lt;a id='L1020' name='L1020'&gt;&lt;/a&gt;    \errmessage{Unknown @firstparagraphindent option `\temp'}%
<a id='L1035' name='L1035'></a>&lt;a id='L1021' name='L1021'&gt;&lt;/a&gt;  \fi\fi
<a id='L1036' name='L1036'></a>&lt;a id='L1022' name='L1022'&gt;&lt;/a&gt;}
<a id='L1037' name='L1037'></a>&lt;a id='L1023' name='L1023'&gt;&lt;/a&gt;
<a id='L1038' name='L1038'></a>&lt;a id='L1024' name='L1024'&gt;&lt;/a&gt;% Here is how we actually suppress indentation.  Redefine \everypar to
<a id='L1039' name='L1039'></a>&lt;a id='L1025' name='L1025'&gt;&lt;/a&gt;% \kern backwards by \parindent, and then reset itself to empty.
<a id='L1040' name='L1040'></a>&lt;a id='L1026' name='L1026'&gt;&lt;/a&gt;%
<a id='L1041' name='L1041'></a>&lt;a id='L1027' name='L1027'&gt;&lt;/a&gt;% We also make \indent itself not actually do anything until the next
<a id='L1042' name='L1042'></a>&lt;a id='L1028' name='L1028'&gt;&lt;/a&gt;% paragraph.
<a id='L1043' name='L1043'></a>&lt;a id='L1029' name='L1029'&gt;&lt;/a&gt;%
<a id='L1044' name='L1044'></a>&lt;a id='L1030' name='L1030'&gt;&lt;/a&gt;\gdef\dosuppressfirstparagraphindent{%
<a id='L1045' name='L1045'></a>&lt;a id='L1031' name='L1031'&gt;&lt;/a&gt;  \gdef\indent{%
<a id='L1046' name='L1046'></a>&lt;a id='L1032' name='L1032'&gt;&lt;/a&gt;    \restorefirstparagraphindent
<a id='L1047' name='L1047'></a>&lt;a id='L1033' name='L1033'&gt;&lt;/a&gt;    \indent
<a id='L1048' name='L1048'></a>&lt;a id='L1034' name='L1034'&gt;&lt;/a&gt;  }%
<a id='L1049' name='L1049'></a>&lt;a id='L1035' name='L1035'&gt;&lt;/a&gt;  \gdef\noindent{%
<a id='L1050' name='L1050'></a>&lt;a id='L1036' name='L1036'&gt;&lt;/a&gt;    \restorefirstparagraphindent
<a id='L1051' name='L1051'></a>&lt;a id='L1037' name='L1037'&gt;&lt;/a&gt;    \noindent
<a id='L1052' name='L1052'></a>&lt;a id='L1038' name='L1038'&gt;&lt;/a&gt;  }%
<a id='L1053' name='L1053'></a>&lt;a id='L1039' name='L1039'&gt;&lt;/a&gt;  \global\everypar = {%
<a id='L1054' name='L1054'></a>&lt;a id='L1040' name='L1040'&gt;&lt;/a&gt;    \kern -\parindent
<a id='L1055' name='L1055'></a>&lt;a id='L1041' name='L1041'&gt;&lt;/a&gt;    \restorefirstparagraphindent
<a id='L1056' name='L1056'></a>&lt;a id='L1042' name='L1042'&gt;&lt;/a&gt;  }%
<a id='L1057' name='L1057'></a>&lt;a id='L1043' name='L1043'&gt;&lt;/a&gt;}
<a id='L1058' name='L1058'></a>&lt;a id='L1044' name='L1044'&gt;&lt;/a&gt;
<a id='L1059' name='L1059'></a>&lt;a id='L1045' name='L1045'&gt;&lt;/a&gt;\gdef\restorefirstparagraphindent{%
<a id='L1060' name='L1060'></a>&lt;a id='L1046' name='L1046'&gt;&lt;/a&gt;  \global \let \indent = \ptexindent
<a id='L1061' name='L1061'></a>&lt;a id='L1047' name='L1047'&gt;&lt;/a&gt;  \global \let \noindent = \ptexnoindent
<a id='L1062' name='L1062'></a>&lt;a id='L1048' name='L1048'&gt;&lt;/a&gt;  \global \everypar = {}%
<a id='L1063' name='L1063'></a>&lt;a id='L1049' name='L1049'&gt;&lt;/a&gt;}
<a id='L1064' name='L1064'></a>&lt;a id='L1050' name='L1050'&gt;&lt;/a&gt;
<a id='L1065' name='L1065'></a>&lt;a id='L1051' name='L1051'&gt;&lt;/a&gt;
<a id='L1066' name='L1066'></a>&lt;a id='L1052' name='L1052'&gt;&lt;/a&gt;% @refill is a no-op.
<a id='L1067' name='L1067'></a>&lt;a id='L1053' name='L1053'&gt;&lt;/a&gt;\let\refill=\relax
<a id='L1068' name='L1068'></a>&lt;a id='L1054' name='L1054'&gt;&lt;/a&gt;
<a id='L1069' name='L1069'></a>&lt;a id='L1055' name='L1055'&gt;&lt;/a&gt;% If working on a large document in chapters, it is convenient to
<a id='L1070' name='L1070'></a>&lt;a id='L1056' name='L1056'&gt;&lt;/a&gt;% be able to disable indexing, cross-referencing, and contents, for test runs.
<a id='L1071' name='L1071'></a>&lt;a id='L1057' name='L1057'&gt;&lt;/a&gt;% This is done with @novalidate (before @setfilename).
<a id='L1072' name='L1072'></a>&lt;a id='L1058' name='L1058'&gt;&lt;/a&gt;%
<a id='L1073' name='L1073'></a>&lt;a id='L1059' name='L1059'&gt;&lt;/a&gt;\newif\iflinks \linkstrue % by default we want the aux files.
<a id='L1074' name='L1074'></a>&lt;a id='L1060' name='L1060'&gt;&lt;/a&gt;\let\novalidate = \linksfalse
<a id='L1075' name='L1075'></a>&lt;a id='L1061' name='L1061'&gt;&lt;/a&gt;
<a id='L1076' name='L1076'></a>&lt;a id='L1062' name='L1062'&gt;&lt;/a&gt;% @setfilename is done at the beginning of every texinfo file.
<a id='L1077' name='L1077'></a>&lt;a id='L1063' name='L1063'&gt;&lt;/a&gt;% So open here the files we need to have open while reading the input.
<a id='L1078' name='L1078'></a>&lt;a id='L1064' name='L1064'&gt;&lt;/a&gt;% This makes it possible to make a .fmt file for texinfo.
<a id='L1079' name='L1079'></a>&lt;a id='L1065' name='L1065'&gt;&lt;/a&gt;\def\setfilename{%
<a id='L1080' name='L1080'></a>&lt;a id='L1066' name='L1066'&gt;&lt;/a&gt;   \fixbackslash  % Turn off hack to swallow `\input texinfo'.
<a id='L1081' name='L1081'></a>&lt;a id='L1067' name='L1067'&gt;&lt;/a&gt;   \iflinks
<a id='L1082' name='L1082'></a>&lt;a id='L1068' name='L1068'&gt;&lt;/a&gt;     \tryauxfile
<a id='L1083' name='L1083'></a>&lt;a id='L1069' name='L1069'&gt;&lt;/a&gt;     % Open the new aux file.  TeX will close it automatically at exit.
<a id='L1084' name='L1084'></a>&lt;a id='L1070' name='L1070'&gt;&lt;/a&gt;     \immediate\openout\auxfile=\jobname.aux
<a id='L1085' name='L1085'></a>&lt;a id='L1071' name='L1071'&gt;&lt;/a&gt;   \fi % \openindices needs to do some work in any case.
<a id='L1086' name='L1086'></a>&lt;a id='L1072' name='L1072'&gt;&lt;/a&gt;   \openindices
<a id='L1087' name='L1087'></a>&lt;a id='L1073' name='L1073'&gt;&lt;/a&gt;   \let\setfilename=\comment % Ignore extra @setfilename cmds.
<a id='L1088' name='L1088'></a>&lt;a id='L1074' name='L1074'&gt;&lt;/a&gt;   %
<a id='L1089' name='L1089'></a>&lt;a id='L1075' name='L1075'&gt;&lt;/a&gt;   % If texinfo.cnf is present on the system, read it.
<a id='L1090' name='L1090'></a>&lt;a id='L1076' name='L1076'&gt;&lt;/a&gt;   % Useful for site-wide @afourpaper, etc.
<a id='L1091' name='L1091'></a>&lt;a id='L1077' name='L1077'&gt;&lt;/a&gt;   \openin 1 texinfo.cnf
<a id='L1092' name='L1092'></a>&lt;a id='L1078' name='L1078'&gt;&lt;/a&gt;   \ifeof 1 \else \input texinfo.cnf \fi
<a id='L1093' name='L1093'></a>&lt;a id='L1079' name='L1079'&gt;&lt;/a&gt;   \closein 1
<a id='L1094' name='L1094'></a>&lt;a id='L1080' name='L1080'&gt;&lt;/a&gt;   %
<a id='L1095' name='L1095'></a>&lt;a id='L1081' name='L1081'&gt;&lt;/a&gt;   \comment % Ignore the actual filename.
<a id='L1096' name='L1096'></a>&lt;a id='L1082' name='L1082'&gt;&lt;/a&gt;}
<a id='L1097' name='L1097'></a>&lt;a id='L1083' name='L1083'&gt;&lt;/a&gt;
<a id='L1098' name='L1098'></a>&lt;a id='L1084' name='L1084'&gt;&lt;/a&gt;% Called from \setfilename.
<a id='L1099' name='L1099'></a>&lt;a id='L1085' name='L1085'&gt;&lt;/a&gt;%
<a id='L1100' name='L1100'></a>&lt;a id='L1086' name='L1086'&gt;&lt;/a&gt;\def\openindices{%
<a id='L1101' name='L1101'></a>&lt;a id='L1087' name='L1087'&gt;&lt;/a&gt;  \newindex{cp}%
<a id='L1102' name='L1102'></a>&lt;a id='L1088' name='L1088'&gt;&lt;/a&gt;  \newcodeindex{fn}%
<a id='L1103' name='L1103'></a>&lt;a id='L1089' name='L1089'&gt;&lt;/a&gt;  \newcodeindex{vr}%
<a id='L1104' name='L1104'></a>&lt;a id='L1090' name='L1090'&gt;&lt;/a&gt;  \newcodeindex{tp}%
<a id='L1105' name='L1105'></a>&lt;a id='L1091' name='L1091'&gt;&lt;/a&gt;  \newcodeindex{ky}%
<a id='L1106' name='L1106'></a>&lt;a id='L1092' name='L1092'&gt;&lt;/a&gt;  \newcodeindex{pg}%
<a id='L1107' name='L1107'></a>&lt;a id='L1093' name='L1093'&gt;&lt;/a&gt;}
<a id='L1108' name='L1108'></a>&lt;a id='L1094' name='L1094'&gt;&lt;/a&gt;
<a id='L1109' name='L1109'></a>&lt;a id='L1095' name='L1095'&gt;&lt;/a&gt;% @bye.
<a id='L1110' name='L1110'></a>&lt;a id='L1096' name='L1096'&gt;&lt;/a&gt;\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
<a id='L1111' name='L1111'></a>&lt;a id='L1097' name='L1097'&gt;&lt;/a&gt;
<a id='L1112' name='L1112'></a>&lt;a id='L1098' name='L1098'&gt;&lt;/a&gt;
<a id='L1113' name='L1113'></a>&lt;a id='L1099' name='L1099'&gt;&lt;/a&gt;\message{pdf,}
<a id='L1114' name='L1114'></a>&lt;a id='L1100' name='L1100'&gt;&lt;/a&gt;% adobe `portable' document format
<a id='L1115' name='L1115'></a>&lt;a id='L1101' name='L1101'&gt;&lt;/a&gt;\newcount\tempnum
<a id='L1116' name='L1116'></a>&lt;a id='L1102' name='L1102'&gt;&lt;/a&gt;\newcount\lnkcount
<a id='L1117' name='L1117'></a>&lt;a id='L1103' name='L1103'&gt;&lt;/a&gt;\newtoks\filename
<a id='L1118' name='L1118'></a>&lt;a id='L1104' name='L1104'&gt;&lt;/a&gt;\newcount\filenamelength
<a id='L1119' name='L1119'></a>&lt;a id='L1105' name='L1105'&gt;&lt;/a&gt;\newcount\pgn
<a id='L1120' name='L1120'></a>&lt;a id='L1106' name='L1106'&gt;&lt;/a&gt;\newtoks\toksA
<a id='L1121' name='L1121'></a>&lt;a id='L1107' name='L1107'&gt;&lt;/a&gt;\newtoks\toksB
<a id='L1122' name='L1122'></a>&lt;a id='L1108' name='L1108'&gt;&lt;/a&gt;\newtoks\toksC
<a id='L1123' name='L1123'></a>&lt;a id='L1109' name='L1109'&gt;&lt;/a&gt;\newtoks\toksD
<a id='L1124' name='L1124'></a>&lt;a id='L1110' name='L1110'&gt;&lt;/a&gt;\newbox\boxA
<a id='L1125' name='L1125'></a>&lt;a id='L1111' name='L1111'&gt;&lt;/a&gt;\newcount\countA
<a id='L1126' name='L1126'></a>&lt;a id='L1112' name='L1112'&gt;&lt;/a&gt;\newif\ifpdf
<a id='L1127' name='L1127'></a>&lt;a id='L1113' name='L1113'&gt;&lt;/a&gt;\newif\ifpdfmakepagedest
<a id='L1128' name='L1128'></a>&lt;a id='L1114' name='L1114'&gt;&lt;/a&gt;
<a id='L1129' name='L1129'></a>&lt;a id='L1115' name='L1115'&gt;&lt;/a&gt;% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
<a id='L1130' name='L1130'></a>&lt;a id='L1116' name='L1116'&gt;&lt;/a&gt;% can be set).  So we test for \relax and 0 as well as being undefined.
<a id='L1131' name='L1131'></a>&lt;a id='L1117' name='L1117'&gt;&lt;/a&gt;\ifx\pdfoutput\thisisundefined
<a id='L1132' name='L1132'></a>&lt;a id='L1118' name='L1118'&gt;&lt;/a&gt;\else
<a id='L1133' name='L1133'></a>&lt;a id='L1119' name='L1119'&gt;&lt;/a&gt;  \ifx\pdfoutput\relax
<a id='L1134' name='L1134'></a>&lt;a id='L1120' name='L1120'&gt;&lt;/a&gt;  \else
<a id='L1135' name='L1135'></a>&lt;a id='L1121' name='L1121'&gt;&lt;/a&gt;    \ifcase\pdfoutput
<a id='L1136' name='L1136'></a>&lt;a id='L1122' name='L1122'&gt;&lt;/a&gt;    \else
<a id='L1137' name='L1137'></a>&lt;a id='L1123' name='L1123'&gt;&lt;/a&gt;      \pdftrue
<a id='L1138' name='L1138'></a>&lt;a id='L1124' name='L1124'&gt;&lt;/a&gt;    \fi
<a id='L1139' name='L1139'></a>&lt;a id='L1125' name='L1125'&gt;&lt;/a&gt;  \fi
<a id='L1140' name='L1140'></a>&lt;a id='L1126' name='L1126'&gt;&lt;/a&gt;\fi
<a id='L1141' name='L1141'></a>&lt;a id='L1127' name='L1127'&gt;&lt;/a&gt;
<a id='L1142' name='L1142'></a>&lt;a id='L1128' name='L1128'&gt;&lt;/a&gt;% PDF uses PostScript string constants for the names of xref targets,
<a id='L1143' name='L1143'></a>&lt;a id='L1129' name='L1129'&gt;&lt;/a&gt;% for display in the outlines, and in other places.  Thus, we have to
<a id='L1144' name='L1144'></a>&lt;a id='L1130' name='L1130'&gt;&lt;/a&gt;% double any backslashes.  Otherwise, a name like "\node" will be
<a id='L1145' name='L1145'></a>&lt;a id='L1131' name='L1131'&gt;&lt;/a&gt;% interpreted as a newline (\n), followed by o, d, e.  Not good.
<a id='L1146' name='L1146'></a>&lt;a id='L1132' name='L1132'&gt;&lt;/a&gt;% 
<a id='L1147' name='L1147'></a>&lt;a id='L1133' name='L1133'&gt;&lt;/a&gt;% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and
<a id='L1148' name='L1148'></a>&lt;a id='L1134' name='L1134'&gt;&lt;/a&gt;% related messages.  The final outcome is that it is up to the TeX user
<a id='L1149' name='L1149'></a>&lt;a id='L1135' name='L1135'&gt;&lt;/a&gt;% to double the backslashes and otherwise make the string valid, so
<a id='L1150' name='L1150'></a>&lt;a id='L1136' name='L1136'&gt;&lt;/a&gt;% that's what we do.  pdftex 1.30.0 (ca.2005) introduced a primitive to
<a id='L1151' name='L1151'></a>&lt;a id='L1137' name='L1137'&gt;&lt;/a&gt;% do this reliably, so we use it.
<a id='L1152' name='L1152'></a>&lt;a id='L1138' name='L1138'&gt;&lt;/a&gt;
<a id='L1153' name='L1153'></a>&lt;a id='L1139' name='L1139'&gt;&lt;/a&gt;% #1 is a control sequence in which to do the replacements,
<a id='L1154' name='L1154'></a>&lt;a id='L1140' name='L1140'&gt;&lt;/a&gt;% which we \xdef.
<a id='L1155' name='L1155'></a>&lt;a id='L1141' name='L1141'&gt;&lt;/a&gt;\def\txiescapepdf#1{%
<a id='L1156' name='L1156'></a>&lt;a id='L1142' name='L1142'&gt;&lt;/a&gt;  \ifx\pdfescapestring\thisisundefined
<a id='L1157' name='L1157'></a>&lt;a id='L1143' name='L1143'&gt;&lt;/a&gt;    % No primitive available; should we give a warning or log?
<a id='L1158' name='L1158'></a>&lt;a id='L1144' name='L1144'&gt;&lt;/a&gt;    % Many times it won't matter.
<a id='L1159' name='L1159'></a>&lt;a id='L1145' name='L1145'&gt;&lt;/a&gt;  \else
<a id='L1160' name='L1160'></a>&lt;a id='L1146' name='L1146'&gt;&lt;/a&gt;    % The expandable \pdfescapestring primitive escapes parentheses,
<a id='L1161' name='L1161'></a>&lt;a id='L1147' name='L1147'&gt;&lt;/a&gt;    % backslashes, and other special chars.
<a id='L1162' name='L1162'></a>&lt;a id='L1148' name='L1148'&gt;&lt;/a&gt;    \xdef#1{\pdfescapestring{#1}}%
<a id='L1163' name='L1163'></a>&lt;a id='L1149' name='L1149'&gt;&lt;/a&gt;  \fi
<a id='L1164' name='L1164'></a>&lt;a id='L1150' name='L1150'&gt;&lt;/a&gt;}
<a id='L1165' name='L1165'></a>&lt;a id='L1151' name='L1151'&gt;&lt;/a&gt;
<a id='L1166' name='L1166'></a>&lt;a id='L1152' name='L1152'&gt;&lt;/a&gt;\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
<a id='L1167' name='L1167'></a>&lt;a id='L1153' name='L1153'&gt;&lt;/a&gt;with PDF output, and none of those formats could be found.  (.eps cannot
<a id='L1168' name='L1168'></a>&lt;a id='L1154' name='L1154'&gt;&lt;/a&gt;be supported due to the design of the PDF format; use regular TeX (DVI
<a id='L1169' name='L1169'></a>&lt;a id='L1155' name='L1155'&gt;&lt;/a&gt;output) for that.)}
<a id='L1170' name='L1170'></a>&lt;a id='L1156' name='L1156'&gt;&lt;/a&gt;
<a id='L1171' name='L1171'></a>&lt;a id='L1157' name='L1157'&gt;&lt;/a&gt;\ifpdf
<a id='L1172' name='L1172'></a>&lt;a id='L1158' name='L1158'&gt;&lt;/a&gt;  %
<a id='L1173' name='L1173'></a>&lt;a id='L1159' name='L1159'&gt;&lt;/a&gt;  % Color manipulation macros based on pdfcolor.tex,
<a id='L1174' name='L1174'></a>&lt;a id='L1160' name='L1160'&gt;&lt;/a&gt;  % except using rgb instead of cmyk; the latter is said to render as a
<a id='L1175' name='L1175'></a>&lt;a id='L1161' name='L1161'&gt;&lt;/a&gt;  % very dark gray on-screen and a very dark halftone in print, instead
<a id='L1176' name='L1176'></a>&lt;a id='L1162' name='L1162'&gt;&lt;/a&gt;  % of actual black.
<a id='L1177' name='L1177'></a>&lt;a id='L1163' name='L1163'&gt;&lt;/a&gt;  \def\rgbDarkRed{0.50 0.09 0.12}
<a id='L1178' name='L1178'></a>&lt;a id='L1164' name='L1164'&gt;&lt;/a&gt;  \def\rgbBlack{0 0 0}
<a id='L1179' name='L1179'></a>&lt;a id='L1165' name='L1165'&gt;&lt;/a&gt;  %
<a id='L1180' name='L1180'></a>&lt;a id='L1166' name='L1166'&gt;&lt;/a&gt;  % k sets the color for filling (usual text, etc.);
<a id='L1181' name='L1181'></a>&lt;a id='L1167' name='L1167'&gt;&lt;/a&gt;  % K sets the color for stroking (thin rules, e.g., normal _'s).
<a id='L1182' name='L1182'></a>&lt;a id='L1168' name='L1168'&gt;&lt;/a&gt;  \def\pdfsetcolor#1{\pdfliteral{#1 rg  #1 RG}}
<a id='L1183' name='L1183'></a>&lt;a id='L1169' name='L1169'&gt;&lt;/a&gt;  %
<a id='L1184' name='L1184'></a>&lt;a id='L1170' name='L1170'&gt;&lt;/a&gt;  % Set color, and create a mark which defines \thiscolor accordingly,
<a id='L1185' name='L1185'></a>&lt;a id='L1171' name='L1171'&gt;&lt;/a&gt;  % so that \makeheadline knows which color to restore.
<a id='L1186' name='L1186'></a>&lt;a id='L1172' name='L1172'&gt;&lt;/a&gt;  \def\setcolor#1{%
<a id='L1187' name='L1187'></a>&lt;a id='L1173' name='L1173'&gt;&lt;/a&gt;    \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}%
<a id='L1188' name='L1188'></a>&lt;a id='L1174' name='L1174'&gt;&lt;/a&gt;    \domark
<a id='L1189' name='L1189'></a>&lt;a id='L1175' name='L1175'&gt;&lt;/a&gt;    \pdfsetcolor{#1}%
<a id='L1190' name='L1190'></a>&lt;a id='L1176' name='L1176'&gt;&lt;/a&gt;  }
<a id='L1191' name='L1191'></a>&lt;a id='L1177' name='L1177'&gt;&lt;/a&gt;  %
<a id='L1192' name='L1192'></a>&lt;a id='L1178' name='L1178'&gt;&lt;/a&gt;  \def\maincolor{\rgbBlack}
<a id='L1193' name='L1193'></a>&lt;a id='L1179' name='L1179'&gt;&lt;/a&gt;  \pdfsetcolor{\maincolor}
<a id='L1194' name='L1194'></a>&lt;a id='L1180' name='L1180'&gt;&lt;/a&gt;  \edef\thiscolor{\maincolor}
<a id='L1195' name='L1195'></a>&lt;a id='L1181' name='L1181'&gt;&lt;/a&gt;  \def\lastcolordefs{}
<a id='L1196' name='L1196'></a>&lt;a id='L1182' name='L1182'&gt;&lt;/a&gt;  %
<a id='L1197' name='L1197'></a>&lt;a id='L1183' name='L1183'&gt;&lt;/a&gt;  \def\makefootline{%
<a id='L1198' name='L1198'></a>&lt;a id='L1184' name='L1184'&gt;&lt;/a&gt;    \baselineskip24pt
<a id='L1199' name='L1199'></a>&lt;a id='L1185' name='L1185'&gt;&lt;/a&gt;    \line{\pdfsetcolor{\maincolor}\the\footline}%
<a id='L1200' name='L1200'></a>&lt;a id='L1186' name='L1186'&gt;&lt;/a&gt;  }
<a id='L1201' name='L1201'></a>&lt;a id='L1187' name='L1187'&gt;&lt;/a&gt;  %
<a id='L1202' name='L1202'></a>&lt;a id='L1188' name='L1188'&gt;&lt;/a&gt;  \def\makeheadline{%
<a id='L1203' name='L1203'></a>&lt;a id='L1189' name='L1189'&gt;&lt;/a&gt;    \vbox to 0pt{%
<a id='L1204' name='L1204'></a>&lt;a id='L1190' name='L1190'&gt;&lt;/a&gt;      \vskip-22.5pt
<a id='L1205' name='L1205'></a>&lt;a id='L1191' name='L1191'&gt;&lt;/a&gt;      \line{%
<a id='L1206' name='L1206'></a>&lt;a id='L1192' name='L1192'&gt;&lt;/a&gt;        \vbox to8.5pt{}%
<a id='L1207' name='L1207'></a>&lt;a id='L1193' name='L1193'&gt;&lt;/a&gt;        % Extract \thiscolor definition from the marks.
<a id='L1208' name='L1208'></a>&lt;a id='L1194' name='L1194'&gt;&lt;/a&gt;        \getcolormarks
<a id='L1209' name='L1209'></a>&lt;a id='L1195' name='L1195'&gt;&lt;/a&gt;        % Typeset the headline with \maincolor, then restore the color.
<a id='L1210' name='L1210'></a>&lt;a id='L1196' name='L1196'&gt;&lt;/a&gt;        \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}%
<a id='L1211' name='L1211'></a>&lt;a id='L1197' name='L1197'&gt;&lt;/a&gt;      }%
<a id='L1212' name='L1212'></a>&lt;a id='L1198' name='L1198'&gt;&lt;/a&gt;      \vss
<a id='L1213' name='L1213'></a>&lt;a id='L1199' name='L1199'&gt;&lt;/a&gt;    }%
<a id='L1214' name='L1214'></a>&lt;a id='L1200' name='L1200'&gt;&lt;/a&gt;    \nointerlineskip
<a id='L1215' name='L1215'></a>&lt;a id='L1201' name='L1201'&gt;&lt;/a&gt;  }
<a id='L1216' name='L1216'></a>&lt;a id='L1202' name='L1202'&gt;&lt;/a&gt;  %
<a id='L1217' name='L1217'></a>&lt;a id='L1203' name='L1203'&gt;&lt;/a&gt;  %
<a id='L1218' name='L1218'></a>&lt;a id='L1204' name='L1204'&gt;&lt;/a&gt;  \pdfcatalog{/PageMode /UseOutlines}
<a id='L1219' name='L1219'></a>&lt;a id='L1205' name='L1205'&gt;&lt;/a&gt;  %
<a id='L1220' name='L1220'></a>&lt;a id='L1206' name='L1206'&gt;&lt;/a&gt;  % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
<a id='L1221' name='L1221'></a>&lt;a id='L1207' name='L1207'&gt;&lt;/a&gt;  \def\dopdfimage#1#2#3{%
<a id='L1222' name='L1222'></a>&lt;a id='L1208' name='L1208'&gt;&lt;/a&gt;    \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
<a id='L1223' name='L1223'></a>&lt;a id='L1209' name='L1209'&gt;&lt;/a&gt;    \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
<a id='L1224' name='L1224'></a>&lt;a id='L1210' name='L1210'&gt;&lt;/a&gt;    %
<a id='L1225' name='L1225'></a>&lt;a id='L1211' name='L1211'&gt;&lt;/a&gt;    % pdftex (and the PDF format) support .pdf, .png, .jpg (among
<a id='L1226' name='L1226'></a>&lt;a id='L1212' name='L1212'&gt;&lt;/a&gt;    % others).  Let's try in that order, PDF first since if
<a id='L1227' name='L1227'></a>&lt;a id='L1213' name='L1213'&gt;&lt;/a&gt;    % someone has a scalable image, presumably better to use that than a
<a id='L1228' name='L1228'></a>&lt;a id='L1214' name='L1214'&gt;&lt;/a&gt;    % bitmap.
<a id='L1229' name='L1229'></a>&lt;a id='L1215' name='L1215'&gt;&lt;/a&gt;    \let\pdfimgext=\empty
<a id='L1230' name='L1230'></a>&lt;a id='L1216' name='L1216'&gt;&lt;/a&gt;    \begingroup
<a id='L1231' name='L1231'></a>&lt;a id='L1217' name='L1217'&gt;&lt;/a&gt;      \openin 1 #1.pdf \ifeof 1
<a id='L1232' name='L1232'></a>&lt;a id='L1218' name='L1218'&gt;&lt;/a&gt;        \openin 1 #1.PDF \ifeof 1
<a id='L1233' name='L1233'></a>&lt;a id='L1219' name='L1219'&gt;&lt;/a&gt;          \openin 1 #1.png \ifeof 1
<a id='L1234' name='L1234'></a>&lt;a id='L1220' name='L1220'&gt;&lt;/a&gt;            \openin 1 #1.jpg \ifeof 1
<a id='L1235' name='L1235'></a>&lt;a id='L1221' name='L1221'&gt;&lt;/a&gt;              \openin 1 #1.jpeg \ifeof 1
<a id='L1236' name='L1236'></a>&lt;a id='L1222' name='L1222'&gt;&lt;/a&gt;                \openin 1 #1.JPG \ifeof 1
<a id='L1237' name='L1237'></a>&lt;a id='L1223' name='L1223'&gt;&lt;/a&gt;                  \errhelp = \nopdfimagehelp
<a id='L1238' name='L1238'></a>&lt;a id='L1224' name='L1224'&gt;&lt;/a&gt;                  \errmessage{Could not find image file #1 for pdf}%
<a id='L1239' name='L1239'></a>&lt;a id='L1225' name='L1225'&gt;&lt;/a&gt;                \else \gdef\pdfimgext{JPG}%
<a id='L1240' name='L1240'></a>&lt;a id='L1226' name='L1226'&gt;&lt;/a&gt;                \fi
<a id='L1241' name='L1241'></a>&lt;a id='L1227' name='L1227'&gt;&lt;/a&gt;              \else \gdef\pdfimgext{jpeg}%
<a id='L1242' name='L1242'></a>&lt;a id='L1228' name='L1228'&gt;&lt;/a&gt;              \fi
<a id='L1243' name='L1243'></a>&lt;a id='L1229' name='L1229'&gt;&lt;/a&gt;            \else \gdef\pdfimgext{jpg}%
<a id='L1244' name='L1244'></a>&lt;a id='L1230' name='L1230'&gt;&lt;/a&gt;            \fi
<a id='L1245' name='L1245'></a>&lt;a id='L1231' name='L1231'&gt;&lt;/a&gt;          \else \gdef\pdfimgext{png}%
<a id='L1246' name='L1246'></a>&lt;a id='L1232' name='L1232'&gt;&lt;/a&gt;          \fi
<a id='L1247' name='L1247'></a>&lt;a id='L1233' name='L1233'&gt;&lt;/a&gt;        \else \gdef\pdfimgext{PDF}%
<a id='L1248' name='L1248'></a>&lt;a id='L1234' name='L1234'&gt;&lt;/a&gt;        \fi
<a id='L1249' name='L1249'></a>&lt;a id='L1235' name='L1235'&gt;&lt;/a&gt;      \else \gdef\pdfimgext{pdf}%
<a id='L1250' name='L1250'></a>&lt;a id='L1236' name='L1236'&gt;&lt;/a&gt;      \fi
<a id='L1251' name='L1251'></a>&lt;a id='L1237' name='L1237'&gt;&lt;/a&gt;      \closein 1
<a id='L1252' name='L1252'></a>&lt;a id='L1238' name='L1238'&gt;&lt;/a&gt;    \endgroup
<a id='L1253' name='L1253'></a>&lt;a id='L1239' name='L1239'&gt;&lt;/a&gt;    %
<a id='L1254' name='L1254'></a>&lt;a id='L1240' name='L1240'&gt;&lt;/a&gt;    % without \immediate, ancient pdftex seg faults when the same image is
<a id='L1255' name='L1255'></a>&lt;a id='L1241' name='L1241'&gt;&lt;/a&gt;    % included twice.  (Version 3.14159-pre-1.0-unofficial-20010704.)
<a id='L1256' name='L1256'></a>&lt;a id='L1242' name='L1242'&gt;&lt;/a&gt;    \ifnum\pdftexversion &amp;lt; 14
<a id='L1257' name='L1257'></a>&lt;a id='L1243' name='L1243'&gt;&lt;/a&gt;      \immediate\pdfimage
<a id='L1258' name='L1258'></a>&lt;a id='L1244' name='L1244'&gt;&lt;/a&gt;    \else
<a id='L1259' name='L1259'></a>&lt;a id='L1245' name='L1245'&gt;&lt;/a&gt;      \immediate\pdfximage
<a id='L1260' name='L1260'></a>&lt;a id='L1246' name='L1246'&gt;&lt;/a&gt;    \fi
<a id='L1261' name='L1261'></a>&lt;a id='L1247' name='L1247'&gt;&lt;/a&gt;      \ifdim \wd0 &amp;gt;0pt width \pdfimagewidth \fi
<a id='L1262' name='L1262'></a>&lt;a id='L1248' name='L1248'&gt;&lt;/a&gt;      \ifdim \wd2 &amp;gt;0pt height \pdfimageheight \fi
<a id='L1263' name='L1263'></a>&lt;a id='L1249' name='L1249'&gt;&lt;/a&gt;      \ifnum\pdftexversion&amp;lt;13
<a id='L1264' name='L1264'></a>&lt;a id='L1250' name='L1250'&gt;&lt;/a&gt;         #1.\pdfimgext
<a id='L1265' name='L1265'></a>&lt;a id='L1251' name='L1251'&gt;&lt;/a&gt;       \else
<a id='L1266' name='L1266'></a>&lt;a id='L1252' name='L1252'&gt;&lt;/a&gt;         {#1.\pdfimgext}%
<a id='L1267' name='L1267'></a>&lt;a id='L1253' name='L1253'&gt;&lt;/a&gt;       \fi
<a id='L1268' name='L1268'></a>&lt;a id='L1254' name='L1254'&gt;&lt;/a&gt;    \ifnum\pdftexversion &amp;lt; 14 \else
<a id='L1269' name='L1269'></a>&lt;a id='L1255' name='L1255'&gt;&lt;/a&gt;      \pdfrefximage \pdflastximage
<a id='L1270' name='L1270'></a>&lt;a id='L1256' name='L1256'&gt;&lt;/a&gt;    \fi}
<a id='L1271' name='L1271'></a>&lt;a id='L1257' name='L1257'&gt;&lt;/a&gt;  %
<a id='L1272' name='L1272'></a>&lt;a id='L1258' name='L1258'&gt;&lt;/a&gt;  \def\pdfmkdest#1{{%
<a id='L1273' name='L1273'></a>&lt;a id='L1259' name='L1259'&gt;&lt;/a&gt;    % We have to set dummies so commands such as @code, and characters
<a id='L1274' name='L1274'></a>&lt;a id='L1260' name='L1260'&gt;&lt;/a&gt;    % such as \, aren't expanded when present in a section title.
<a id='L1275' name='L1275'></a>&lt;a id='L1261' name='L1261'&gt;&lt;/a&gt;    \indexnofonts
<a id='L1276' name='L1276'></a>&lt;a id='L1262' name='L1262'&gt;&lt;/a&gt;    \turnoffactive
<a id='L1277' name='L1277'></a>&lt;a id='L1263' name='L1263'&gt;&lt;/a&gt;    \makevalueexpandable
<a id='L1278' name='L1278'></a>&lt;a id='L1264' name='L1264'&gt;&lt;/a&gt;    \def\pdfdestname{#1}%
<a id='L1279' name='L1279'></a>&lt;a id='L1265' name='L1265'&gt;&lt;/a&gt;    \txiescapepdf\pdfdestname
<a id='L1280' name='L1280'></a>&lt;a id='L1266' name='L1266'&gt;&lt;/a&gt;    \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
<a id='L1281' name='L1281'></a>&lt;a id='L1267' name='L1267'&gt;&lt;/a&gt;  }}
<a id='L1282' name='L1282'></a>&lt;a id='L1268' name='L1268'&gt;&lt;/a&gt;  %
<a id='L1283' name='L1283'></a>&lt;a id='L1269' name='L1269'&gt;&lt;/a&gt;  % used to mark target names; must be expandable.
<a id='L1284' name='L1284'></a>&lt;a id='L1270' name='L1270'&gt;&lt;/a&gt;  \def\pdfmkpgn#1{#1}
<a id='L1285' name='L1285'></a>&lt;a id='L1271' name='L1271'&gt;&lt;/a&gt;  %
<a id='L1286' name='L1286'></a>&lt;a id='L1272' name='L1272'&gt;&lt;/a&gt;  % by default, use a color that is dark enough to print on paper as
<a id='L1287' name='L1287'></a>&lt;a id='L1273' name='L1273'&gt;&lt;/a&gt;  % nearly black, but still distinguishable for online viewing.
<a id='L1288' name='L1288'></a>&lt;a id='L1274' name='L1274'&gt;&lt;/a&gt;  \def\urlcolor{\rgbDarkRed}
<a id='L1289' name='L1289'></a>&lt;a id='L1275' name='L1275'&gt;&lt;/a&gt;  \def\linkcolor{\rgbDarkRed}
<a id='L1290' name='L1290'></a>&lt;a id='L1276' name='L1276'&gt;&lt;/a&gt;  \def\endlink{\setcolor{\maincolor}\pdfendlink}
<a id='L1291' name='L1291'></a>&lt;a id='L1277' name='L1277'&gt;&lt;/a&gt;  %
<a id='L1292' name='L1292'></a>&lt;a id='L1278' name='L1278'&gt;&lt;/a&gt;  % Adding outlines to PDF; macros for calculating structure of outlines
<a id='L1293' name='L1293'></a>&lt;a id='L1279' name='L1279'&gt;&lt;/a&gt;  % come from Petr Olsak
<a id='L1294' name='L1294'></a>&lt;a id='L1280' name='L1280'&gt;&lt;/a&gt;  \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
<a id='L1295' name='L1295'></a>&lt;a id='L1281' name='L1281'&gt;&lt;/a&gt;    \else \csname#1\endcsname \fi}
<a id='L1296' name='L1296'></a>&lt;a id='L1282' name='L1282'&gt;&lt;/a&gt;  \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
<a id='L1297' name='L1297'></a>&lt;a id='L1283' name='L1283'&gt;&lt;/a&gt;    \advance\tempnum by 1
<a id='L1298' name='L1298'></a>&lt;a id='L1284' name='L1284'&gt;&lt;/a&gt;    \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
<a id='L1299' name='L1299'></a>&lt;a id='L1285' name='L1285'&gt;&lt;/a&gt;  %
<a id='L1300' name='L1300'></a>&lt;a id='L1286' name='L1286'&gt;&lt;/a&gt;  % #1 is the section text, which is what will be displayed in the
<a id='L1301' name='L1301'></a>&lt;a id='L1287' name='L1287'&gt;&lt;/a&gt;  % outline by the pdf viewer.  #2 is the pdf expression for the number
<a id='L1302' name='L1302'></a>&lt;a id='L1288' name='L1288'&gt;&lt;/a&gt;  % of subentries (or empty, for subsubsections).  #3 is the node text,
<a id='L1303' name='L1303'></a>&lt;a id='L1289' name='L1289'&gt;&lt;/a&gt;  % which might be empty if this toc entry had no corresponding node.
<a id='L1304' name='L1304'></a>&lt;a id='L1290' name='L1290'&gt;&lt;/a&gt;  % #4 is the page number
<a id='L1305' name='L1305'></a>&lt;a id='L1291' name='L1291'&gt;&lt;/a&gt;  %
<a id='L1306' name='L1306'></a>&lt;a id='L1292' name='L1292'&gt;&lt;/a&gt;  \def\dopdfoutline#1#2#3#4{%
<a id='L1307' name='L1307'></a>&lt;a id='L1293' name='L1293'&gt;&lt;/a&gt;    % Generate a link to the node text if that exists; else, use the
<a id='L1308' name='L1308'></a>&lt;a id='L1294' name='L1294'&gt;&lt;/a&gt;    % page number.  We could generate a destination for the section
<a id='L1309' name='L1309'></a>&lt;a id='L1295' name='L1295'&gt;&lt;/a&gt;    % text in the case where a section has no node, but it doesn't
<a id='L1310' name='L1310'></a>&lt;a id='L1296' name='L1296'&gt;&lt;/a&gt;    % seem worth the trouble, since most documents are normally structured.
<a id='L1311' name='L1311'></a>&lt;a id='L1297' name='L1297'&gt;&lt;/a&gt;    \edef\pdfoutlinedest{#3}%
<a id='L1312' name='L1312'></a>&lt;a id='L1298' name='L1298'&gt;&lt;/a&gt;    \ifx\pdfoutlinedest\empty
<a id='L1313' name='L1313'></a>&lt;a id='L1299' name='L1299'&gt;&lt;/a&gt;      \def\pdfoutlinedest{#4}%
<a id='L1314' name='L1314'></a>&lt;a id='L1300' name='L1300'&gt;&lt;/a&gt;    \else
<a id='L1315' name='L1315'></a>&lt;a id='L1301' name='L1301'&gt;&lt;/a&gt;      \txiescapepdf\pdfoutlinedest
<a id='L1316' name='L1316'></a>&lt;a id='L1302' name='L1302'&gt;&lt;/a&gt;    \fi
<a id='L1317' name='L1317'></a>&lt;a id='L1303' name='L1303'&gt;&lt;/a&gt;    %
<a id='L1318' name='L1318'></a>&lt;a id='L1304' name='L1304'&gt;&lt;/a&gt;    % Also escape PDF chars in the display string.
<a id='L1319' name='L1319'></a>&lt;a id='L1305' name='L1305'&gt;&lt;/a&gt;    \edef\pdfoutlinetext{#1}%
<a id='L1320' name='L1320'></a>&lt;a id='L1306' name='L1306'&gt;&lt;/a&gt;    \txiescapepdf\pdfoutlinetext
<a id='L1321' name='L1321'></a>&lt;a id='L1307' name='L1307'&gt;&lt;/a&gt;    %
<a id='L1322' name='L1322'></a>&lt;a id='L1308' name='L1308'&gt;&lt;/a&gt;    \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
<a id='L1323' name='L1323'></a>&lt;a id='L1309' name='L1309'&gt;&lt;/a&gt;  }
<a id='L1324' name='L1324'></a>&lt;a id='L1310' name='L1310'&gt;&lt;/a&gt;  %
<a id='L1325' name='L1325'></a>&lt;a id='L1311' name='L1311'&gt;&lt;/a&gt;  \def\pdfmakeoutlines{%
<a id='L1326' name='L1326'></a>&lt;a id='L1312' name='L1312'&gt;&lt;/a&gt;    \begingroup
<a id='L1327' name='L1327'></a>&lt;a id='L1313' name='L1313'&gt;&lt;/a&gt;      % Read toc silently, to get counts of subentries for \pdfoutline.
<a id='L1328' name='L1328'></a>&lt;a id='L1314' name='L1314'&gt;&lt;/a&gt;      \def\partentry##1##2##3##4{}% ignore parts in the outlines
<a id='L1329' name='L1329'></a>&lt;a id='L1315' name='L1315'&gt;&lt;/a&gt;      \def\numchapentry##1##2##3##4{%
<a id='L1330' name='L1330'></a>&lt;a id='L1316' name='L1316'&gt;&lt;/a&gt;        \def\thischapnum{##2}%
<a id='L1331' name='L1331'></a>&lt;a id='L1317' name='L1317'&gt;&lt;/a&gt;        \def\thissecnum{0}%
<a id='L1332' name='L1332'></a>&lt;a id='L1318' name='L1318'&gt;&lt;/a&gt;        \def\thissubsecnum{0}%
<a id='L1333' name='L1333'></a>&lt;a id='L1319' name='L1319'&gt;&lt;/a&gt;      }%
<a id='L1334' name='L1334'></a>&lt;a id='L1320' name='L1320'&gt;&lt;/a&gt;      \def\numsecentry##1##2##3##4{%
<a id='L1335' name='L1335'></a>&lt;a id='L1321' name='L1321'&gt;&lt;/a&gt;        \advancenumber{chap\thischapnum}%
<a id='L1336' name='L1336'></a>&lt;a id='L1322' name='L1322'&gt;&lt;/a&gt;        \def\thissecnum{##2}%
<a id='L1337' name='L1337'></a>&lt;a id='L1323' name='L1323'&gt;&lt;/a&gt;        \def\thissubsecnum{0}%
<a id='L1338' name='L1338'></a>&lt;a id='L1324' name='L1324'&gt;&lt;/a&gt;      }%
<a id='L1339' name='L1339'></a>&lt;a id='L1325' name='L1325'&gt;&lt;/a&gt;      \def\numsubsecentry##1##2##3##4{%
<a id='L1340' name='L1340'></a>&lt;a id='L1326' name='L1326'&gt;&lt;/a&gt;        \advancenumber{sec\thissecnum}%
<a id='L1341' name='L1341'></a>&lt;a id='L1327' name='L1327'&gt;&lt;/a&gt;        \def\thissubsecnum{##2}%
<a id='L1342' name='L1342'></a>&lt;a id='L1328' name='L1328'&gt;&lt;/a&gt;      }%
<a id='L1343' name='L1343'></a>&lt;a id='L1329' name='L1329'&gt;&lt;/a&gt;      \def\numsubsubsecentry##1##2##3##4{%
<a id='L1344' name='L1344'></a>&lt;a id='L1330' name='L1330'&gt;&lt;/a&gt;        \advancenumber{subsec\thissubsecnum}%
<a id='L1345' name='L1345'></a>&lt;a id='L1331' name='L1331'&gt;&lt;/a&gt;      }%
<a id='L1346' name='L1346'></a>&lt;a id='L1332' name='L1332'&gt;&lt;/a&gt;      \def\thischapnum{0}%
<a id='L1347' name='L1347'></a>&lt;a id='L1333' name='L1333'&gt;&lt;/a&gt;      \def\thissecnum{0}%
<a id='L1348' name='L1348'></a>&lt;a id='L1334' name='L1334'&gt;&lt;/a&gt;      \def\thissubsecnum{0}%
<a id='L1349' name='L1349'></a>&lt;a id='L1335' name='L1335'&gt;&lt;/a&gt;      %
<a id='L1350' name='L1350'></a>&lt;a id='L1336' name='L1336'&gt;&lt;/a&gt;      % use \def rather than \let here because we redefine \chapentry et
<a id='L1351' name='L1351'></a>&lt;a id='L1337' name='L1337'&gt;&lt;/a&gt;      % al. a second time, below.
<a id='L1352' name='L1352'></a>&lt;a id='L1338' name='L1338'&gt;&lt;/a&gt;      \def\appentry{\numchapentry}%
<a id='L1353' name='L1353'></a>&lt;a id='L1339' name='L1339'&gt;&lt;/a&gt;      \def\appsecentry{\numsecentry}%
<a id='L1354' name='L1354'></a>&lt;a id='L1340' name='L1340'&gt;&lt;/a&gt;      \def\appsubsecentry{\numsubsecentry}%
<a id='L1355' name='L1355'></a>&lt;a id='L1341' name='L1341'&gt;&lt;/a&gt;      \def\appsubsubsecentry{\numsubsubsecentry}%
<a id='L1356' name='L1356'></a>&lt;a id='L1342' name='L1342'&gt;&lt;/a&gt;      \def\unnchapentry{\numchapentry}%
<a id='L1357' name='L1357'></a>&lt;a id='L1343' name='L1343'&gt;&lt;/a&gt;      \def\unnsecentry{\numsecentry}%
<a id='L1358' name='L1358'></a>&lt;a id='L1344' name='L1344'&gt;&lt;/a&gt;      \def\unnsubsecentry{\numsubsecentry}%
<a id='L1359' name='L1359'></a>&lt;a id='L1345' name='L1345'&gt;&lt;/a&gt;      \def\unnsubsubsecentry{\numsubsubsecentry}%
<a id='L1360' name='L1360'></a>&lt;a id='L1346' name='L1346'&gt;&lt;/a&gt;      \readdatafile{toc}%
<a id='L1361' name='L1361'></a>&lt;a id='L1347' name='L1347'&gt;&lt;/a&gt;      %
<a id='L1362' name='L1362'></a>&lt;a id='L1348' name='L1348'&gt;&lt;/a&gt;      % Read toc second time, this time actually producing the outlines.
<a id='L1363' name='L1363'></a>&lt;a id='L1349' name='L1349'&gt;&lt;/a&gt;      % The `-' means take the \expnumber as the absolute number of
<a id='L1364' name='L1364'></a>&lt;a id='L1350' name='L1350'&gt;&lt;/a&gt;      % subentries, which we calculated on our first read of the .toc above.
<a id='L1365' name='L1365'></a>&lt;a id='L1351' name='L1351'&gt;&lt;/a&gt;      %
<a id='L1366' name='L1366'></a>&lt;a id='L1352' name='L1352'&gt;&lt;/a&gt;      % We use the node names as the destinations.
<a id='L1367' name='L1367'></a>&lt;a id='L1353' name='L1353'&gt;&lt;/a&gt;      \def\numchapentry##1##2##3##4{%
<a id='L1368' name='L1368'></a>&lt;a id='L1354' name='L1354'&gt;&lt;/a&gt;        \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}%
<a id='L1369' name='L1369'></a>&lt;a id='L1355' name='L1355'&gt;&lt;/a&gt;      \def\numsecentry##1##2##3##4{%
<a id='L1370' name='L1370'></a>&lt;a id='L1356' name='L1356'&gt;&lt;/a&gt;        \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}%
<a id='L1371' name='L1371'></a>&lt;a id='L1357' name='L1357'&gt;&lt;/a&gt;      \def\numsubsecentry##1##2##3##4{%
<a id='L1372' name='L1372'></a>&lt;a id='L1358' name='L1358'&gt;&lt;/a&gt;        \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}%
<a id='L1373' name='L1373'></a>&lt;a id='L1359' name='L1359'&gt;&lt;/a&gt;      \def\numsubsubsecentry##1##2##3##4{% count is always zero
<a id='L1374' name='L1374'></a>&lt;a id='L1360' name='L1360'&gt;&lt;/a&gt;        \dopdfoutline{##1}{}{##3}{##4}}%
<a id='L1375' name='L1375'></a>&lt;a id='L1361' name='L1361'&gt;&lt;/a&gt;      %
<a id='L1376' name='L1376'></a>&lt;a id='L1362' name='L1362'&gt;&lt;/a&gt;      % PDF outlines are displayed using system fonts, instead of
<a id='L1377' name='L1377'></a>&lt;a id='L1363' name='L1363'&gt;&lt;/a&gt;      % document fonts.  Therefore we cannot use special characters,
<a id='L1378' name='L1378'></a>&lt;a id='L1364' name='L1364'&gt;&lt;/a&gt;      % since the encoding is unknown.  For example, the eogonek from
<a id='L1379' name='L1379'></a>&lt;a id='L1365' name='L1365'&gt;&lt;/a&gt;      % Latin 2 (0xea) gets translated to a | character.  Info from
<a id='L1380' name='L1380'></a>&lt;a id='L1366' name='L1366'&gt;&lt;/a&gt;      % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
<a id='L1381' name='L1381'></a>&lt;a id='L1367' name='L1367'&gt;&lt;/a&gt;      %
<a id='L1382' name='L1382'></a>&lt;a id='L1368' name='L1368'&gt;&lt;/a&gt;      % TODO this right, we have to translate 8-bit characters to
<a id='L1383' name='L1383'></a>&lt;a id='L1369' name='L1369'&gt;&lt;/a&gt;      % their "best" equivalent, based on the @documentencoding.  Too
<a id='L1384' name='L1384'></a>&lt;a id='L1370' name='L1370'&gt;&lt;/a&gt;      % much work for too little return.  Just use the ASCII equivalents
<a id='L1385' name='L1385'></a>&lt;a id='L1371' name='L1371'&gt;&lt;/a&gt;      % we use for the index sort strings.
<a id='L1386' name='L1386'></a>&lt;a id='L1372' name='L1372'&gt;&lt;/a&gt;      % 
<a id='L1387' name='L1387'></a>&lt;a id='L1373' name='L1373'&gt;&lt;/a&gt;      \indexnofonts
<a id='L1388' name='L1388'></a>&lt;a id='L1374' name='L1374'&gt;&lt;/a&gt;      \setupdatafile
<a id='L1389' name='L1389'></a>&lt;a id='L1375' name='L1375'&gt;&lt;/a&gt;      % We can have normal brace characters in the PDF outlines, unlike
<a id='L1390' name='L1390'></a>&lt;a id='L1376' name='L1376'&gt;&lt;/a&gt;      % Texinfo index files.  So set that up.
<a id='L1391' name='L1391'></a>&lt;a id='L1377' name='L1377'&gt;&lt;/a&gt;      \def\{{\lbracecharliteral}%
<a id='L1392' name='L1392'></a>&lt;a id='L1378' name='L1378'&gt;&lt;/a&gt;      \def\}{\rbracecharliteral}%
<a id='L1393' name='L1393'></a>&lt;a id='L1379' name='L1379'&gt;&lt;/a&gt;      \catcode`\\=\active \otherbackslash
<a id='L1394' name='L1394'></a>&lt;a id='L1380' name='L1380'&gt;&lt;/a&gt;      \input \tocreadfilename
<a id='L1395' name='L1395'></a>&lt;a id='L1381' name='L1381'&gt;&lt;/a&gt;    \endgroup
<a id='L1396' name='L1396'></a>&lt;a id='L1382' name='L1382'&gt;&lt;/a&gt;  }
<a id='L1397' name='L1397'></a>&lt;a id='L1383' name='L1383'&gt;&lt;/a&gt;  {\catcode`[=1 \catcode`]=2
<a id='L1398' name='L1398'></a>&lt;a id='L1384' name='L1384'&gt;&lt;/a&gt;   \catcode`{=\other \catcode`}=\other
<a id='L1399' name='L1399'></a>&lt;a id='L1385' name='L1385'&gt;&lt;/a&gt;   \gdef\lbracecharliteral[{]%
<a id='L1400' name='L1400'></a>&lt;a id='L1386' name='L1386'&gt;&lt;/a&gt;   \gdef\rbracecharliteral[}]%
<a id='L1401' name='L1401'></a>&lt;a id='L1387' name='L1387'&gt;&lt;/a&gt;  ]
<a id='L1402' name='L1402'></a>&lt;a id='L1388' name='L1388'&gt;&lt;/a&gt;  %
<a id='L1403' name='L1403'></a>&lt;a id='L1389' name='L1389'&gt;&lt;/a&gt;  \def\skipspaces#1{\def\PP{#1}\def\D{|}%
<a id='L1404' name='L1404'></a>&lt;a id='L1390' name='L1390'&gt;&lt;/a&gt;    \ifx\PP\D\let\nextsp\relax
<a id='L1405' name='L1405'></a>&lt;a id='L1391' name='L1391'&gt;&lt;/a&gt;    \else\let\nextsp\skipspaces
<a id='L1406' name='L1406'></a>&lt;a id='L1392' name='L1392'&gt;&lt;/a&gt;      \addtokens{\filename}{\PP}%
<a id='L1407' name='L1407'></a>&lt;a id='L1393' name='L1393'&gt;&lt;/a&gt;      \advance\filenamelength by 1
<a id='L1408' name='L1408'></a>&lt;a id='L1394' name='L1394'&gt;&lt;/a&gt;    \fi
<a id='L1409' name='L1409'></a>&lt;a id='L1395' name='L1395'&gt;&lt;/a&gt;    \nextsp}
<a id='L1410' name='L1410'></a>&lt;a id='L1396' name='L1396'&gt;&lt;/a&gt;  \def\getfilename#1{%
<a id='L1411' name='L1411'></a>&lt;a id='L1397' name='L1397'&gt;&lt;/a&gt;    \filenamelength=0
<a id='L1412' name='L1412'></a>&lt;a id='L1398' name='L1398'&gt;&lt;/a&gt;    % If we don't expand the argument now, \skipspaces will get
<a id='L1413' name='L1413'></a>&lt;a id='L1399' name='L1399'&gt;&lt;/a&gt;    % snagged on things like "@value{foo}".
<a id='L1414' name='L1414'></a>&lt;a id='L1400' name='L1400'&gt;&lt;/a&gt;    \edef\temp{#1}%
<a id='L1415' name='L1415'></a>&lt;a id='L1401' name='L1401'&gt;&lt;/a&gt;    \expandafter\skipspaces\temp|\relax
<a id='L1416' name='L1416'></a>&lt;a id='L1402' name='L1402'&gt;&lt;/a&gt;  }
<a id='L1417' name='L1417'></a>&lt;a id='L1403' name='L1403'&gt;&lt;/a&gt;  \ifnum\pdftexversion &amp;lt; 14
<a id='L1418' name='L1418'></a>&lt;a id='L1404' name='L1404'&gt;&lt;/a&gt;    \let \startlink \pdfannotlink
<a id='L1419' name='L1419'></a>&lt;a id='L1405' name='L1405'&gt;&lt;/a&gt;  \else
<a id='L1420' name='L1420'></a>&lt;a id='L1406' name='L1406'&gt;&lt;/a&gt;    \let \startlink \pdfstartlink
<a id='L1421' name='L1421'></a>&lt;a id='L1407' name='L1407'&gt;&lt;/a&gt;  \fi
<a id='L1422' name='L1422'></a>&lt;a id='L1408' name='L1408'&gt;&lt;/a&gt;  % make a live url in pdf output.
<a id='L1423' name='L1423'></a>&lt;a id='L1409' name='L1409'&gt;&lt;/a&gt;  \def\pdfurl#1{%
<a id='L1424' name='L1424'></a>&lt;a id='L1410' name='L1410'&gt;&lt;/a&gt;    \begingroup
<a id='L1425' name='L1425'></a>&lt;a id='L1411' name='L1411'&gt;&lt;/a&gt;      % it seems we really need yet another set of dummies; have not
<a id='L1426' name='L1426'></a>&lt;a id='L1412' name='L1412'&gt;&lt;/a&gt;      % tried to figure out what each command should do in the context
<a id='L1427' name='L1427'></a>&lt;a id='L1413' name='L1413'&gt;&lt;/a&gt;      % of @url.  for now, just make @/ a no-op, that's the only one
<a id='L1428' name='L1428'></a>&lt;a id='L1414' name='L1414'&gt;&lt;/a&gt;      % people have actually reported a problem with.
<a id='L1429' name='L1429'></a>&lt;a id='L1415' name='L1415'&gt;&lt;/a&gt;      %
<a id='L1430' name='L1430'></a>&lt;a id='L1416' name='L1416'&gt;&lt;/a&gt;      \normalturnoffactive
<a id='L1431' name='L1431'></a>&lt;a id='L1417' name='L1417'&gt;&lt;/a&gt;      \def\@{@}%
<a id='L1432' name='L1432'></a>&lt;a id='L1418' name='L1418'&gt;&lt;/a&gt;      \let\/=\empty
<a id='L1433' name='L1433'></a>&lt;a id='L1419' name='L1419'&gt;&lt;/a&gt;      \makevalueexpandable
<a id='L1434' name='L1434'></a>&lt;a id='L1420' name='L1420'&gt;&lt;/a&gt;      % do we want to go so far as to use \indexnofonts instead of just
<a id='L1435' name='L1435'></a>&lt;a id='L1421' name='L1421'&gt;&lt;/a&gt;      % special-casing \var here?
<a id='L1436' name='L1436'></a>&lt;a id='L1422' name='L1422'&gt;&lt;/a&gt;      \def\var##1{##1}%
<a id='L1437' name='L1437'></a>&lt;a id='L1423' name='L1423'&gt;&lt;/a&gt;      %
<a id='L1438' name='L1438'></a>&lt;a id='L1424' name='L1424'&gt;&lt;/a&gt;      \leavevmode\setcolor{\urlcolor}%
<a id='L1439' name='L1439'></a>&lt;a id='L1425' name='L1425'&gt;&lt;/a&gt;      \startlink attr{/Border [0 0 0]}%
<a id='L1440' name='L1440'></a>&lt;a id='L1426' name='L1426'&gt;&lt;/a&gt;        user{/Subtype /Link /A &amp;lt;&amp;lt; /S /URI /URI (#1) &amp;gt;&amp;gt;}%
<a id='L1441' name='L1441'></a>&lt;a id='L1427' name='L1427'&gt;&lt;/a&gt;    \endgroup}
<a id='L1442' name='L1442'></a>&lt;a id='L1428' name='L1428'&gt;&lt;/a&gt;  \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
<a id='L1443' name='L1443'></a>&lt;a id='L1429' name='L1429'&gt;&lt;/a&gt;  \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
<a id='L1444' name='L1444'></a>&lt;a id='L1430' name='L1430'&gt;&lt;/a&gt;  \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
<a id='L1445' name='L1445'></a>&lt;a id='L1431' name='L1431'&gt;&lt;/a&gt;  \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
<a id='L1446' name='L1446'></a>&lt;a id='L1432' name='L1432'&gt;&lt;/a&gt;  \def\maketoks{%
<a id='L1447' name='L1447'></a>&lt;a id='L1433' name='L1433'&gt;&lt;/a&gt;    \expandafter\poptoks\the\toksA|ENDTOKS|\relax
<a id='L1448' name='L1448'></a>&lt;a id='L1434' name='L1434'&gt;&lt;/a&gt;    \ifx\first0\adn0
<a id='L1449' name='L1449'></a>&lt;a id='L1435' name='L1435'&gt;&lt;/a&gt;    \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
<a id='L1450' name='L1450'></a>&lt;a id='L1436' name='L1436'&gt;&lt;/a&gt;    \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
<a id='L1451' name='L1451'></a>&lt;a id='L1437' name='L1437'&gt;&lt;/a&gt;    \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
<a id='L1452' name='L1452'></a>&lt;a id='L1438' name='L1438'&gt;&lt;/a&gt;    \else
<a id='L1453' name='L1453'></a>&lt;a id='L1439' name='L1439'&gt;&lt;/a&gt;      \ifnum0=\countA\else\makelink\fi
<a id='L1454' name='L1454'></a>&lt;a id='L1440' name='L1440'&gt;&lt;/a&gt;      \ifx\first.\let\next=\done\else
<a id='L1455' name='L1455'></a>&lt;a id='L1441' name='L1441'&gt;&lt;/a&gt;        \let\next=\maketoks
<a id='L1456' name='L1456'></a>&lt;a id='L1442' name='L1442'&gt;&lt;/a&gt;        \addtokens{\toksB}{\the\toksD}
<a id='L1457' name='L1457'></a>&lt;a id='L1443' name='L1443'&gt;&lt;/a&gt;        \ifx\first,\addtokens{\toksB}{\space}\fi
<a id='L1458' name='L1458'></a>&lt;a id='L1444' name='L1444'&gt;&lt;/a&gt;      \fi
<a id='L1459' name='L1459'></a>&lt;a id='L1445' name='L1445'&gt;&lt;/a&gt;    \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
<a id='L1460' name='L1460'></a>&lt;a id='L1446' name='L1446'&gt;&lt;/a&gt;    \next}
<a id='L1461' name='L1461'></a>&lt;a id='L1447' name='L1447'&gt;&lt;/a&gt;  \def\makelink{\addtokens{\toksB}%
<a id='L1462' name='L1462'></a>&lt;a id='L1448' name='L1448'&gt;&lt;/a&gt;    {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
<a id='L1463' name='L1463'></a>&lt;a id='L1449' name='L1449'&gt;&lt;/a&gt;  \def\pdflink#1{%
<a id='L1464' name='L1464'></a>&lt;a id='L1450' name='L1450'&gt;&lt;/a&gt;    \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
<a id='L1465' name='L1465'></a>&lt;a id='L1451' name='L1451'&gt;&lt;/a&gt;    \setcolor{\linkcolor}#1\endlink}
<a id='L1466' name='L1466'></a>&lt;a id='L1452' name='L1452'&gt;&lt;/a&gt;  \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
<a id='L1467' name='L1467'></a>&lt;a id='L1453' name='L1453'&gt;&lt;/a&gt;\else
<a id='L1468' name='L1468'></a>&lt;a id='L1454' name='L1454'&gt;&lt;/a&gt;  % non-pdf mode
<a id='L1469' name='L1469'></a>&lt;a id='L1455' name='L1455'&gt;&lt;/a&gt;  \let\pdfmkdest = \gobble
<a id='L1470' name='L1470'></a>&lt;a id='L1456' name='L1456'&gt;&lt;/a&gt;  \let\pdfurl = \gobble
<a id='L1471' name='L1471'></a>&lt;a id='L1457' name='L1457'&gt;&lt;/a&gt;  \let\endlink = \relax
<a id='L1472' name='L1472'></a>&lt;a id='L1458' name='L1458'&gt;&lt;/a&gt;  \let\setcolor = \gobble
<a id='L1473' name='L1473'></a>&lt;a id='L1459' name='L1459'&gt;&lt;/a&gt;  \let\pdfsetcolor = \gobble
<a id='L1474' name='L1474'></a>&lt;a id='L1460' name='L1460'&gt;&lt;/a&gt;  \let\pdfmakeoutlines = \relax
<a id='L1475' name='L1475'></a>&lt;a id='L1461' name='L1461'&gt;&lt;/a&gt;\fi  % \ifx\pdfoutput
<a id='L1476' name='L1476'></a>&lt;a id='L1462' name='L1462'&gt;&lt;/a&gt;
<a id='L1477' name='L1477'></a>&lt;a id='L1463' name='L1463'&gt;&lt;/a&gt;
<a id='L1478' name='L1478'></a>&lt;a id='L1464' name='L1464'&gt;&lt;/a&gt;\message{fonts,}
<a id='L1479' name='L1479'></a>&lt;a id='L1465' name='L1465'&gt;&lt;/a&gt;
<a id='L1480' name='L1480'></a>&lt;a id='L1466' name='L1466'&gt;&lt;/a&gt;% Change the current font style to #1, remembering it in \curfontstyle.
<a id='L1481' name='L1481'></a>&lt;a id='L1467' name='L1467'&gt;&lt;/a&gt;% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in
<a id='L1482' name='L1482'></a>&lt;a id='L1468' name='L1468'&gt;&lt;/a&gt;% italics, not bold italics.
<a id='L1483' name='L1483'></a>&lt;a id='L1469' name='L1469'&gt;&lt;/a&gt;%
<a id='L1484' name='L1484'></a>&lt;a id='L1470' name='L1470'&gt;&lt;/a&gt;\def\setfontstyle#1{%
<a id='L1485' name='L1485'></a>&lt;a id='L1471' name='L1471'&gt;&lt;/a&gt;  \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd.
<a id='L1486' name='L1486'></a>&lt;a id='L1472' name='L1472'&gt;&lt;/a&gt;  \csname ten#1\endcsname  % change the current font
<a id='L1487' name='L1487'></a>&lt;a id='L1473' name='L1473'&gt;&lt;/a&gt;}
<a id='L1488' name='L1488'></a>&lt;a id='L1474' name='L1474'&gt;&lt;/a&gt;
<a id='L1489' name='L1489'></a>&lt;a id='L1475' name='L1475'&gt;&lt;/a&gt;% Select #1 fonts with the current style.
<a id='L1490' name='L1490'></a>&lt;a id='L1476' name='L1476'&gt;&lt;/a&gt;%
<a id='L1491' name='L1491'></a>&lt;a id='L1477' name='L1477'&gt;&lt;/a&gt;\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname}
<a id='L1492' name='L1492'></a>&lt;a id='L1478' name='L1478'&gt;&lt;/a&gt;
<a id='L1493' name='L1493'></a>&lt;a id='L1479' name='L1479'&gt;&lt;/a&gt;% Japanese fonts. (--ak)
<a id='L1494' name='L1494'></a>&lt;a id='L1480' name='L1480'&gt;&lt;/a&gt;\ifjaTeX
<a id='L1495' name='L1495'></a>&lt;a id='L1481' name='L1481'&gt;&lt;/a&gt;\csname newfam\endcsname\mcfam
<a id='L1496' name='L1496'></a>&lt;a id='L1482' name='L1482'&gt;&lt;/a&gt;\csname newfam\endcsname\gtfam
<a id='L1497' name='L1497'></a>&lt;a id='L1483' name='L1483'&gt;&lt;/a&gt;\def\mc{\fam\mcfam \setfontstyle{min}}
<a id='L1498' name='L1498'></a>&lt;a id='L1484' name='L1484'&gt;&lt;/a&gt;\def\gt{\fam\gtfam \setfontstyle{gt}}
<a id='L1499' name='L1499'></a>&lt;a id='L1485' name='L1485'&gt;&lt;/a&gt;\def\rm{\mc \fam=0 \setfontstyle{rm}}
<a id='L1500' name='L1500'></a>&lt;a id='L1486' name='L1486'&gt;&lt;/a&gt;\def\it{\fam=\itfam \setfontstyle{it}}
<a id='L1501' name='L1501'></a>&lt;a id='L1487' name='L1487'&gt;&lt;/a&gt;\def\sl{\fam=\slfam \setfontstyle{sl}}
<a id='L1502' name='L1502'></a>&lt;a id='L1488' name='L1488'&gt;&lt;/a&gt;\def\bf{\gt \fam\bffam \setfontstyle{bf}}\def\bfstylename{bf}
<a id='L1503' name='L1503'></a>&lt;a id='L1489' name='L1489'&gt;&lt;/a&gt;\def\tt{\fam=\ttfam \setfontstyle{tt}}
<a id='L1504' name='L1504'></a>&lt;a id='L1490' name='L1490'&gt;&lt;/a&gt;\else
<a id='L1505' name='L1505'></a>&lt;a id='L1491' name='L1491'&gt;&lt;/a&gt;\def\rm{\fam=0 \setfontstyle{rm}}
<a id='L1506' name='L1506'></a>&lt;a id='L1492' name='L1492'&gt;&lt;/a&gt;\def\it{\fam=\itfam \setfontstyle{it}}
<a id='L1507' name='L1507'></a>&lt;a id='L1493' name='L1493'&gt;&lt;/a&gt;\def\sl{\fam=\slfam \setfontstyle{sl}}
<a id='L1508' name='L1508'></a>&lt;a id='L1494' name='L1494'&gt;&lt;/a&gt;\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
<a id='L1509' name='L1509'></a>&lt;a id='L1495' name='L1495'&gt;&lt;/a&gt;\def\tt{\fam=\ttfam \setfontstyle{tt}}
<a id='L1510' name='L1510'></a>&lt;a id='L1496' name='L1496'&gt;&lt;/a&gt;\fi
<a id='L1511' name='L1511'></a>&lt;a id='L1497' name='L1497'&gt;&lt;/a&gt;
<a id='L1512' name='L1512'></a>&lt;a id='L1498' name='L1498'&gt;&lt;/a&gt;% Unfortunately, we have to override this for titles and the like, since
<a id='L1513' name='L1513'></a>&lt;a id='L1499' name='L1499'&gt;&lt;/a&gt;% in those cases "rm" is bold.  Sigh.
<a id='L1514' name='L1514'></a>&lt;a id='L1500' name='L1500'&gt;&lt;/a&gt;\ifjaTeX
<a id='L1515' name='L1515'></a>&lt;a id='L1501' name='L1501'&gt;&lt;/a&gt;\def\rmisbold{\rm\gt\def\curfontstyle{bf}}
<a id='L1516' name='L1516'></a>&lt;a id='L1502' name='L1502'&gt;&lt;/a&gt;\else
<a id='L1517' name='L1517'></a>&lt;a id='L1503' name='L1503'&gt;&lt;/a&gt;\def\rmisbold{\rm\def\curfontstyle{bf}}
<a id='L1518' name='L1518'></a>&lt;a id='L1504' name='L1504'&gt;&lt;/a&gt;\fi
<a id='L1519' name='L1519'></a>&lt;a id='L1505' name='L1505'&gt;&lt;/a&gt;
<a id='L1520' name='L1520'></a>&lt;a id='L1506' name='L1506'&gt;&lt;/a&gt;% Texinfo sort of supports the sans serif font style, which plain TeX does not.
<a id='L1521' name='L1521'></a>&lt;a id='L1507' name='L1507'&gt;&lt;/a&gt;% So we set up a \sf.
<a id='L1522' name='L1522'></a>&lt;a id='L1508' name='L1508'&gt;&lt;/a&gt;\newfam\sffam
<a id='L1523' name='L1523'></a>&lt;a id='L1509' name='L1509'&gt;&lt;/a&gt;\ifjaTeX
<a id='L1524' name='L1524'></a>&lt;a id='L1510' name='L1510'&gt;&lt;/a&gt;\def\sf{\gt \fam\sffam \setfontstyle{sf}}
<a id='L1525' name='L1525'></a>&lt;a id='L1511' name='L1511'&gt;&lt;/a&gt;\else
<a id='L1526' name='L1526'></a>&lt;a id='L1512' name='L1512'&gt;&lt;/a&gt;\def\sf{\fam=\sffam \setfontstyle{sf}}
<a id='L1527' name='L1527'></a>&lt;a id='L1513' name='L1513'&gt;&lt;/a&gt;\fi
<a id='L1528' name='L1528'></a>&lt;a id='L1514' name='L1514'&gt;&lt;/a&gt;\let\li = \sf % Sometimes we call it \li, not \sf.
<a id='L1529' name='L1529'></a>&lt;a id='L1515' name='L1515'&gt;&lt;/a&gt;
<a id='L1530' name='L1530'></a>&lt;a id='L1516' name='L1516'&gt;&lt;/a&gt;% We don't need math for this font style.
<a id='L1531' name='L1531'></a>&lt;a id='L1517' name='L1517'&gt;&lt;/a&gt;\def\ttsl{\setfontstyle{ttsl}}
<a id='L1532' name='L1532'></a>&lt;a id='L1518' name='L1518'&gt;&lt;/a&gt;
<a id='L1533' name='L1533'></a>&lt;a id='L1519' name='L1519'&gt;&lt;/a&gt;
<a id='L1534' name='L1534'></a>&lt;a id='L1520' name='L1520'&gt;&lt;/a&gt;% Set the baselineskip to #1, and the lineskip and strut size
<a id='L1535' name='L1535'></a>&lt;a id='L1521' name='L1521'&gt;&lt;/a&gt;% correspondingly.  There is no deep meaning behind these magic numbers
<a id='L1536' name='L1536'></a>&lt;a id='L1522' name='L1522'&gt;&lt;/a&gt;% used as factors; they just match (closely enough) what Knuth defined.
<a id='L1537' name='L1537'></a>&lt;a id='L1523' name='L1523'&gt;&lt;/a&gt;%
<a id='L1538' name='L1538'></a>&lt;a id='L1524' name='L1524'&gt;&lt;/a&gt;\def\lineskipfactor{.08333}
<a id='L1539' name='L1539'></a>&lt;a id='L1525' name='L1525'&gt;&lt;/a&gt;\def\strutheightpercent{.70833}
<a id='L1540' name='L1540'></a>&lt;a id='L1526' name='L1526'&gt;&lt;/a&gt;\def\strutdepthpercent {.29167}
<a id='L1541' name='L1541'></a>&lt;a id='L1527' name='L1527'&gt;&lt;/a&gt;%
<a id='L1542' name='L1542'></a>&lt;a id='L1528' name='L1528'&gt;&lt;/a&gt;% can get a sort of poor man's double spacing by redefining this.
<a id='L1543' name='L1543'></a>&lt;a id='L1529' name='L1529'&gt;&lt;/a&gt;\def\baselinefactor{1}
<a id='L1544' name='L1544'></a>&lt;a id='L1530' name='L1530'&gt;&lt;/a&gt;%
<a id='L1545' name='L1545'></a>&lt;a id='L1531' name='L1531'&gt;&lt;/a&gt;\newdimen\textleading
<a id='L1546' name='L1546'></a>&lt;a id='L1532' name='L1532'&gt;&lt;/a&gt;\def\setleading#1{%
<a id='L1547' name='L1547'></a>&lt;a id='L1533' name='L1533'&gt;&lt;/a&gt;  \dimen0 = #1\relax
<a id='L1548' name='L1548'></a>&lt;a id='L1534' name='L1534'&gt;&lt;/a&gt;  \normalbaselineskip = \baselinefactor\dimen0
<a id='L1549' name='L1549'></a>&lt;a id='L1535' name='L1535'&gt;&lt;/a&gt;  \normallineskip = \lineskipfactor\normalbaselineskip
<a id='L1550' name='L1550'></a>&lt;a id='L1536' name='L1536'&gt;&lt;/a&gt;  \normalbaselines
<a id='L1551' name='L1551'></a>&lt;a id='L1537' name='L1537'&gt;&lt;/a&gt;  \setbox\strutbox =\hbox{%
<a id='L1552' name='L1552'></a>&lt;a id='L1538' name='L1538'&gt;&lt;/a&gt;    \vrule width0pt height\strutheightpercent\baselineskip
<a id='L1553' name='L1553'></a>&lt;a id='L1539' name='L1539'&gt;&lt;/a&gt;                    depth \strutdepthpercent \baselineskip
<a id='L1554' name='L1554'></a>&lt;a id='L1540' name='L1540'&gt;&lt;/a&gt;  }%
<a id='L1555' name='L1555'></a>&lt;a id='L1541' name='L1541'&gt;&lt;/a&gt;}
<a id='L1556' name='L1556'></a>&lt;a id='L1542' name='L1542'&gt;&lt;/a&gt;
<a id='L1557' name='L1557'></a>&lt;a id='L1543' name='L1543'&gt;&lt;/a&gt;% PDF CMaps.  See also LaTeX's t1.cmap.
<a id='L1558' name='L1558'></a>&lt;a id='L1544' name='L1544'&gt;&lt;/a&gt;%
<a id='L1559' name='L1559'></a>&lt;a id='L1545' name='L1545'&gt;&lt;/a&gt;% do nothing with this by default.
<a id='L1560' name='L1560'></a>&lt;a id='L1546' name='L1546'&gt;&lt;/a&gt;\expandafter\let\csname cmapOT1\endcsname\gobble
<a id='L1561' name='L1561'></a>&lt;a id='L1547' name='L1547'&gt;&lt;/a&gt;\expandafter\let\csname cmapOT1IT\endcsname\gobble
<a id='L1562' name='L1562'></a>&lt;a id='L1548' name='L1548'&gt;&lt;/a&gt;\expandafter\let\csname cmapOT1TT\endcsname\gobble
<a id='L1563' name='L1563'></a>&lt;a id='L1549' name='L1549'&gt;&lt;/a&gt;
<a id='L1564' name='L1564'></a>&lt;a id='L1550' name='L1550'&gt;&lt;/a&gt;% if we are producing pdf, and we have \pdffontattr, then define cmaps.
<a id='L1565' name='L1565'></a>&lt;a id='L1551' name='L1551'&gt;&lt;/a&gt;% (\pdffontattr was introduced many years ago, but people still run
<a id='L1566' name='L1566'></a>&lt;a id='L1552' name='L1552'&gt;&lt;/a&gt;% older pdftex's; it's easy to conditionalize, so we do.)
<a id='L1567' name='L1567'></a>&lt;a id='L1553' name='L1553'&gt;&lt;/a&gt;\ifpdf \ifx\pdffontattr\thisisundefined \else
<a id='L1568' name='L1568'></a>&lt;a id='L1554' name='L1554'&gt;&lt;/a&gt;  \begingroup
<a id='L1569' name='L1569'></a>&lt;a id='L1555' name='L1555'&gt;&lt;/a&gt;    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
<a id='L1570' name='L1570'></a>&lt;a id='L1556' name='L1556'&gt;&lt;/a&gt;    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
<a id='L1571' name='L1571'></a>&lt;a id='L1557' name='L1557'&gt;&lt;/a&gt;%%DocumentNeededResources: ProcSet (CIDInit)
<a id='L1572' name='L1572'></a>&lt;a id='L1558' name='L1558'&gt;&lt;/a&gt;%%IncludeResource: ProcSet (CIDInit)
<a id='L1573' name='L1573'></a>&lt;a id='L1559' name='L1559'&gt;&lt;/a&gt;%%BeginResource: CMap (TeX-OT1-0)
<a id='L1574' name='L1574'></a>&lt;a id='L1560' name='L1560'&gt;&lt;/a&gt;%%Title: (TeX-OT1-0 TeX OT1 0)
<a id='L1575' name='L1575'></a>&lt;a id='L1561' name='L1561'&gt;&lt;/a&gt;%%Version: 1.000
<a id='L1576' name='L1576'></a>&lt;a id='L1562' name='L1562'&gt;&lt;/a&gt;%%EndComments
<a id='L1577' name='L1577'></a>&lt;a id='L1563' name='L1563'&gt;&lt;/a&gt;/CIDInit /ProcSet findresource begin
<a id='L1578' name='L1578'></a>&lt;a id='L1564' name='L1564'&gt;&lt;/a&gt;12 dict begin
<a id='L1579' name='L1579'></a>&lt;a id='L1565' name='L1565'&gt;&lt;/a&gt;begincmap
<a id='L1580' name='L1580'></a>&lt;a id='L1566' name='L1566'&gt;&lt;/a&gt;/CIDSystemInfo
<a id='L1581' name='L1581'></a>&lt;a id='L1567' name='L1567'&gt;&lt;/a&gt;&amp;lt;&amp;lt; /Registry (TeX)
<a id='L1582' name='L1582'></a>&lt;a id='L1568' name='L1568'&gt;&lt;/a&gt;/Ordering (OT1)
<a id='L1583' name='L1583'></a>&lt;a id='L1569' name='L1569'&gt;&lt;/a&gt;/Supplement 0
<a id='L1584' name='L1584'></a>&lt;a id='L1570' name='L1570'&gt;&lt;/a&gt;&amp;gt;&amp;gt; def
<a id='L1585' name='L1585'></a>&lt;a id='L1571' name='L1571'&gt;&lt;/a&gt;/CMapName /TeX-OT1-0 def
<a id='L1586' name='L1586'></a>&lt;a id='L1572' name='L1572'&gt;&lt;/a&gt;/CMapType 2 def
<a id='L1587' name='L1587'></a>&lt;a id='L1573' name='L1573'&gt;&lt;/a&gt;1 begincodespacerange
<a id='L1588' name='L1588'></a>&lt;a id='L1574' name='L1574'&gt;&lt;/a&gt;&amp;lt;00&amp;gt; &amp;lt;7F&amp;gt;
<a id='L1589' name='L1589'></a>&lt;a id='L1575' name='L1575'&gt;&lt;/a&gt;endcodespacerange
<a id='L1590' name='L1590'></a>&lt;a id='L1576' name='L1576'&gt;&lt;/a&gt;8 beginbfrange
<a id='L1591' name='L1591'></a>&lt;a id='L1577' name='L1577'&gt;&lt;/a&gt;&amp;lt;00&amp;gt; &amp;lt;01&amp;gt; &amp;lt;0393&amp;gt;
<a id='L1592' name='L1592'></a>&lt;a id='L1578' name='L1578'&gt;&lt;/a&gt;&amp;lt;09&amp;gt; &amp;lt;0A&amp;gt; &amp;lt;03A8&amp;gt;
<a id='L1593' name='L1593'></a>&lt;a id='L1579' name='L1579'&gt;&lt;/a&gt;&amp;lt;23&amp;gt; &amp;lt;26&amp;gt; &amp;lt;0023&amp;gt;
<a id='L1594' name='L1594'></a>&lt;a id='L1580' name='L1580'&gt;&lt;/a&gt;&amp;lt;28&amp;gt; &amp;lt;3B&amp;gt; &amp;lt;0028&amp;gt;
<a id='L1595' name='L1595'></a>&lt;a id='L1581' name='L1581'&gt;&lt;/a&gt;&amp;lt;3F&amp;gt; &amp;lt;5B&amp;gt; &amp;lt;003F&amp;gt;
<a id='L1596' name='L1596'></a>&lt;a id='L1582' name='L1582'&gt;&lt;/a&gt;&amp;lt;5D&amp;gt; &amp;lt;5E&amp;gt; &amp;lt;005D&amp;gt;
<a id='L1597' name='L1597'></a>&lt;a id='L1583' name='L1583'&gt;&lt;/a&gt;&amp;lt;61&amp;gt; &amp;lt;7A&amp;gt; &amp;lt;0061&amp;gt;
<a id='L1598' name='L1598'></a>&lt;a id='L1584' name='L1584'&gt;&lt;/a&gt;&amp;lt;7B&amp;gt; &amp;lt;7C&amp;gt; &amp;lt;2013&amp;gt;
<a id='L1599' name='L1599'></a>&lt;a id='L1585' name='L1585'&gt;&lt;/a&gt;endbfrange
<a id='L1600' name='L1600'></a>&lt;a id='L1586' name='L1586'&gt;&lt;/a&gt;40 beginbfchar
<a id='L1601' name='L1601'></a>&lt;a id='L1587' name='L1587'&gt;&lt;/a&gt;&amp;lt;02&amp;gt; &amp;lt;0398&amp;gt;
<a id='L1602' name='L1602'></a>&lt;a id='L1588' name='L1588'&gt;&lt;/a&gt;&amp;lt;03&amp;gt; &amp;lt;039B&amp;gt;
<a id='L1603' name='L1603'></a>&lt;a id='L1589' name='L1589'&gt;&lt;/a&gt;&amp;lt;04&amp;gt; &amp;lt;039E&amp;gt;
<a id='L1604' name='L1604'></a>&lt;a id='L1590' name='L1590'&gt;&lt;/a&gt;&amp;lt;05&amp;gt; &amp;lt;03A0&amp;gt;
<a id='L1605' name='L1605'></a>&lt;a id='L1591' name='L1591'&gt;&lt;/a&gt;&amp;lt;06&amp;gt; &amp;lt;03A3&amp;gt;
<a id='L1606' name='L1606'></a>&lt;a id='L1592' name='L1592'&gt;&lt;/a&gt;&amp;lt;07&amp;gt; &amp;lt;03D2&amp;gt;
<a id='L1607' name='L1607'></a>&lt;a id='L1593' name='L1593'&gt;&lt;/a&gt;&amp;lt;08&amp;gt; &amp;lt;03A6&amp;gt;
<a id='L1608' name='L1608'></a>&lt;a id='L1594' name='L1594'&gt;&lt;/a&gt;&amp;lt;0B&amp;gt; &amp;lt;00660066&amp;gt;
<a id='L1609' name='L1609'></a>&lt;a id='L1595' name='L1595'&gt;&lt;/a&gt;&amp;lt;0C&amp;gt; &amp;lt;00660069&amp;gt;
<a id='L1610' name='L1610'></a>&lt;a id='L1596' name='L1596'&gt;&lt;/a&gt;&amp;lt;0D&amp;gt; &amp;lt;0066006C&amp;gt;
<a id='L1611' name='L1611'></a>&lt;a id='L1597' name='L1597'&gt;&lt;/a&gt;&amp;lt;0E&amp;gt; &amp;lt;006600660069&amp;gt;
<a id='L1612' name='L1612'></a>&lt;a id='L1598' name='L1598'&gt;&lt;/a&gt;&amp;lt;0F&amp;gt; &amp;lt;00660066006C&amp;gt;
<a id='L1613' name='L1613'></a>&lt;a id='L1599' name='L1599'&gt;&lt;/a&gt;&amp;lt;10&amp;gt; &amp;lt;0131&amp;gt;
<a id='L1614' name='L1614'></a>&lt;a id='L1600' name='L1600'&gt;&lt;/a&gt;&amp;lt;11&amp;gt; &amp;lt;0237&amp;gt;
<a id='L1615' name='L1615'></a>&lt;a id='L1601' name='L1601'&gt;&lt;/a&gt;&amp;lt;12&amp;gt; &amp;lt;0060&amp;gt;
<a id='L1616' name='L1616'></a>&lt;a id='L1602' name='L1602'&gt;&lt;/a&gt;&amp;lt;13&amp;gt; &amp;lt;00B4&amp;gt;
<a id='L1617' name='L1617'></a>&lt;a id='L1603' name='L1603'&gt;&lt;/a&gt;&amp;lt;14&amp;gt; &amp;lt;02C7&amp;gt;
<a id='L1618' name='L1618'></a>&lt;a id='L1604' name='L1604'&gt;&lt;/a&gt;&amp;lt;15&amp;gt; &amp;lt;02D8&amp;gt;
<a id='L1619' name='L1619'></a>&lt;a id='L1605' name='L1605'&gt;&lt;/a&gt;&amp;lt;16&amp;gt; &amp;lt;00AF&amp;gt;
<a id='L1620' name='L1620'></a>&lt;a id='L1606' name='L1606'&gt;&lt;/a&gt;&amp;lt;17&amp;gt; &amp;lt;02DA&amp;gt;
<a id='L1621' name='L1621'></a>&lt;a id='L1607' name='L1607'&gt;&lt;/a&gt;&amp;lt;18&amp;gt; &amp;lt;00B8&amp;gt;
<a id='L1622' name='L1622'></a>&lt;a id='L1608' name='L1608'&gt;&lt;/a&gt;&amp;lt;19&amp;gt; &amp;lt;00DF&amp;gt;
<a id='L1623' name='L1623'></a>&lt;a id='L1609' name='L1609'&gt;&lt;/a&gt;&amp;lt;1A&amp;gt; &amp;lt;00E6&amp;gt;
<a id='L1624' name='L1624'></a>&lt;a id='L1610' name='L1610'&gt;&lt;/a&gt;&amp;lt;1B&amp;gt; &amp;lt;0153&amp;gt;
<a id='L1625' name='L1625'></a>&lt;a id='L1611' name='L1611'&gt;&lt;/a&gt;&amp;lt;1C&amp;gt; &amp;lt;00F8&amp;gt;
<a id='L1626' name='L1626'></a>&lt;a id='L1612' name='L1612'&gt;&lt;/a&gt;&amp;lt;1D&amp;gt; &amp;lt;00C6&amp;gt;
<a id='L1627' name='L1627'></a>&lt;a id='L1613' name='L1613'&gt;&lt;/a&gt;&amp;lt;1E&amp;gt; &amp;lt;0152&amp;gt;
<a id='L1628' name='L1628'></a>&lt;a id='L1614' name='L1614'&gt;&lt;/a&gt;&amp;lt;1F&amp;gt; &amp;lt;00D8&amp;gt;
<a id='L1629' name='L1629'></a>&lt;a id='L1615' name='L1615'&gt;&lt;/a&gt;&amp;lt;21&amp;gt; &amp;lt;0021&amp;gt;
<a id='L1630' name='L1630'></a>&lt;a id='L1616' name='L1616'&gt;&lt;/a&gt;&amp;lt;22&amp;gt; &amp;lt;201D&amp;gt;
<a id='L1631' name='L1631'></a>&lt;a id='L1617' name='L1617'&gt;&lt;/a&gt;&amp;lt;27&amp;gt; &amp;lt;2019&amp;gt;
<a id='L1632' name='L1632'></a>&lt;a id='L1618' name='L1618'&gt;&lt;/a&gt;&amp;lt;3C&amp;gt; &amp;lt;00A1&amp;gt;
<a id='L1633' name='L1633'></a>&lt;a id='L1619' name='L1619'&gt;&lt;/a&gt;&amp;lt;3D&amp;gt; &amp;lt;003D&amp;gt;
<a id='L1634' name='L1634'></a>&lt;a id='L1620' name='L1620'&gt;&lt;/a&gt;&amp;lt;3E&amp;gt; &amp;lt;00BF&amp;gt;
<a id='L1635' name='L1635'></a>&lt;a id='L1621' name='L1621'&gt;&lt;/a&gt;&amp;lt;5C&amp;gt; &amp;lt;201C&amp;gt;
<a id='L1636' name='L1636'></a>&lt;a id='L1622' name='L1622'&gt;&lt;/a&gt;&amp;lt;5F&amp;gt; &amp;lt;02D9&amp;gt;
<a id='L1637' name='L1637'></a>&lt;a id='L1623' name='L1623'&gt;&lt;/a&gt;&amp;lt;60&amp;gt; &amp;lt;2018&amp;gt;
<a id='L1638' name='L1638'></a>&lt;a id='L1624' name='L1624'&gt;&lt;/a&gt;&amp;lt;7D&amp;gt; &amp;lt;02DD&amp;gt;
<a id='L1639' name='L1639'></a>&lt;a id='L1625' name='L1625'&gt;&lt;/a&gt;&amp;lt;7E&amp;gt; &amp;lt;007E&amp;gt;
<a id='L1640' name='L1640'></a>&lt;a id='L1626' name='L1626'&gt;&lt;/a&gt;&amp;lt;7F&amp;gt; &amp;lt;00A8&amp;gt;
<a id='L1641' name='L1641'></a>&lt;a id='L1627' name='L1627'&gt;&lt;/a&gt;endbfchar
<a id='L1642' name='L1642'></a>&lt;a id='L1628' name='L1628'&gt;&lt;/a&gt;endcmap
<a id='L1643' name='L1643'></a>&lt;a id='L1629' name='L1629'&gt;&lt;/a&gt;CMapName currentdict /CMap defineresource pop
<a id='L1644' name='L1644'></a>&lt;a id='L1630' name='L1630'&gt;&lt;/a&gt;end
<a id='L1645' name='L1645'></a>&lt;a id='L1631' name='L1631'&gt;&lt;/a&gt;end
<a id='L1646' name='L1646'></a>&lt;a id='L1632' name='L1632'&gt;&lt;/a&gt;%%EndResource
<a id='L1647' name='L1647'></a>&lt;a id='L1633' name='L1633'&gt;&lt;/a&gt;%%EOF
<a id='L1648' name='L1648'></a>&lt;a id='L1634' name='L1634'&gt;&lt;/a&gt;    }\endgroup
<a id='L1649' name='L1649'></a>&lt;a id='L1635' name='L1635'&gt;&lt;/a&gt;  \expandafter\edef\csname cmapOT1\endcsname#1{%
<a id='L1650' name='L1650'></a>&lt;a id='L1636' name='L1636'&gt;&lt;/a&gt;    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
<a id='L1651' name='L1651'></a>&lt;a id='L1637' name='L1637'&gt;&lt;/a&gt;  }%
<a id='L1652' name='L1652'></a>&lt;a id='L1638' name='L1638'&gt;&lt;/a&gt;%
<a id='L1653' name='L1653'></a>&lt;a id='L1639' name='L1639'&gt;&lt;/a&gt;% \cmapOT1IT
<a id='L1654' name='L1654'></a>&lt;a id='L1640' name='L1640'&gt;&lt;/a&gt;  \begingroup
<a id='L1655' name='L1655'></a>&lt;a id='L1641' name='L1641'&gt;&lt;/a&gt;    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
<a id='L1656' name='L1656'></a>&lt;a id='L1642' name='L1642'&gt;&lt;/a&gt;    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
<a id='L1657' name='L1657'></a>&lt;a id='L1643' name='L1643'&gt;&lt;/a&gt;%%DocumentNeededResources: ProcSet (CIDInit)
<a id='L1658' name='L1658'></a>&lt;a id='L1644' name='L1644'&gt;&lt;/a&gt;%%IncludeResource: ProcSet (CIDInit)
<a id='L1659' name='L1659'></a>&lt;a id='L1645' name='L1645'&gt;&lt;/a&gt;%%BeginResource: CMap (TeX-OT1IT-0)
<a id='L1660' name='L1660'></a>&lt;a id='L1646' name='L1646'&gt;&lt;/a&gt;%%Title: (TeX-OT1IT-0 TeX OT1IT 0)
<a id='L1661' name='L1661'></a>&lt;a id='L1647' name='L1647'&gt;&lt;/a&gt;%%Version: 1.000
<a id='L1662' name='L1662'></a>&lt;a id='L1648' name='L1648'&gt;&lt;/a&gt;%%EndComments
<a id='L1663' name='L1663'></a>&lt;a id='L1649' name='L1649'&gt;&lt;/a&gt;/CIDInit /ProcSet findresource begin
<a id='L1664' name='L1664'></a>&lt;a id='L1650' name='L1650'&gt;&lt;/a&gt;12 dict begin
<a id='L1665' name='L1665'></a>&lt;a id='L1651' name='L1651'&gt;&lt;/a&gt;begincmap
<a id='L1666' name='L1666'></a>&lt;a id='L1652' name='L1652'&gt;&lt;/a&gt;/CIDSystemInfo
<a id='L1667' name='L1667'></a>&lt;a id='L1653' name='L1653'&gt;&lt;/a&gt;&amp;lt;&amp;lt; /Registry (TeX)
<a id='L1668' name='L1668'></a>&lt;a id='L1654' name='L1654'&gt;&lt;/a&gt;/Ordering (OT1IT)
<a id='L1669' name='L1669'></a>&lt;a id='L1655' name='L1655'&gt;&lt;/a&gt;/Supplement 0
<a id='L1670' name='L1670'></a>&lt;a id='L1656' name='L1656'&gt;&lt;/a&gt;&amp;gt;&amp;gt; def
<a id='L1671' name='L1671'></a>&lt;a id='L1657' name='L1657'&gt;&lt;/a&gt;/CMapName /TeX-OT1IT-0 def
<a id='L1672' name='L1672'></a>&lt;a id='L1658' name='L1658'&gt;&lt;/a&gt;/CMapType 2 def
<a id='L1673' name='L1673'></a>&lt;a id='L1659' name='L1659'&gt;&lt;/a&gt;1 begincodespacerange
<a id='L1674' name='L1674'></a>&lt;a id='L1660' name='L1660'&gt;&lt;/a&gt;&amp;lt;00&amp;gt; &amp;lt;7F&amp;gt;
<a id='L1675' name='L1675'></a>&lt;a id='L1661' name='L1661'&gt;&lt;/a&gt;endcodespacerange
<a id='L1676' name='L1676'></a>&lt;a id='L1662' name='L1662'&gt;&lt;/a&gt;8 beginbfrange
<a id='L1677' name='L1677'></a>&lt;a id='L1663' name='L1663'&gt;&lt;/a&gt;&amp;lt;00&amp;gt; &amp;lt;01&amp;gt; &amp;lt;0393&amp;gt;
<a id='L1678' name='L1678'></a>&lt;a id='L1664' name='L1664'&gt;&lt;/a&gt;&amp;lt;09&amp;gt; &amp;lt;0A&amp;gt; &amp;lt;03A8&amp;gt;
<a id='L1679' name='L1679'></a>&lt;a id='L1665' name='L1665'&gt;&lt;/a&gt;&amp;lt;25&amp;gt; &amp;lt;26&amp;gt; &amp;lt;0025&amp;gt;
<a id='L1680' name='L1680'></a>&lt;a id='L1666' name='L1666'&gt;&lt;/a&gt;&amp;lt;28&amp;gt; &amp;lt;3B&amp;gt; &amp;lt;0028&amp;gt;
<a id='L1681' name='L1681'></a>&lt;a id='L1667' name='L1667'&gt;&lt;/a&gt;&amp;lt;3F&amp;gt; &amp;lt;5B&amp;gt; &amp;lt;003F&amp;gt;
<a id='L1682' name='L1682'></a>&lt;a id='L1668' name='L1668'&gt;&lt;/a&gt;&amp;lt;5D&amp;gt; &amp;lt;5E&amp;gt; &amp;lt;005D&amp;gt;
<a id='L1683' name='L1683'></a>&lt;a id='L1669' name='L1669'&gt;&lt;/a&gt;&amp;lt;61&amp;gt; &amp;lt;7A&amp;gt; &amp;lt;0061&amp;gt;
<a id='L1684' name='L1684'></a>&lt;a id='L1670' name='L1670'&gt;&lt;/a&gt;&amp;lt;7B&amp;gt; &amp;lt;7C&amp;gt; &amp;lt;2013&amp;gt;
<a id='L1685' name='L1685'></a>&lt;a id='L1671' name='L1671'&gt;&lt;/a&gt;endbfrange
<a id='L1686' name='L1686'></a>&lt;a id='L1672' name='L1672'&gt;&lt;/a&gt;42 beginbfchar
<a id='L1687' name='L1687'></a>&lt;a id='L1673' name='L1673'&gt;&lt;/a&gt;&amp;lt;02&amp;gt; &amp;lt;0398&amp;gt;
<a id='L1688' name='L1688'></a>&lt;a id='L1674' name='L1674'&gt;&lt;/a&gt;&amp;lt;03&amp;gt; &amp;lt;039B&amp;gt;
<a id='L1689' name='L1689'></a>&lt;a id='L1675' name='L1675'&gt;&lt;/a&gt;&amp;lt;04&amp;gt; &amp;lt;039E&amp;gt;
<a id='L1690' name='L1690'></a>&lt;a id='L1676' name='L1676'&gt;&lt;/a&gt;&amp;lt;05&amp;gt; &amp;lt;03A0&amp;gt;
<a id='L1691' name='L1691'></a>&lt;a id='L1677' name='L1677'&gt;&lt;/a&gt;&amp;lt;06&amp;gt; &amp;lt;03A3&amp;gt;
<a id='L1692' name='L1692'></a>&lt;a id='L1678' name='L1678'&gt;&lt;/a&gt;&amp;lt;07&amp;gt; &amp;lt;03D2&amp;gt;
<a id='L1693' name='L1693'></a>&lt;a id='L1679' name='L1679'&gt;&lt;/a&gt;&amp;lt;08&amp;gt; &amp;lt;03A6&amp;gt;
<a id='L1694' name='L1694'></a>&lt;a id='L1680' name='L1680'&gt;&lt;/a&gt;&amp;lt;0B&amp;gt; &amp;lt;00660066&amp;gt;
<a id='L1695' name='L1695'></a>&lt;a id='L1681' name='L1681'&gt;&lt;/a&gt;&amp;lt;0C&amp;gt; &amp;lt;00660069&amp;gt;
<a id='L1696' name='L1696'></a>&lt;a id='L1682' name='L1682'&gt;&lt;/a&gt;&amp;lt;0D&amp;gt; &amp;lt;0066006C&amp;gt;
<a id='L1697' name='L1697'></a>&lt;a id='L1683' name='L1683'&gt;&lt;/a&gt;&amp;lt;0E&amp;gt; &amp;lt;006600660069&amp;gt;
<a id='L1698' name='L1698'></a>&lt;a id='L1684' name='L1684'&gt;&lt;/a&gt;&amp;lt;0F&amp;gt; &amp;lt;00660066006C&amp;gt;
<a id='L1699' name='L1699'></a>&lt;a id='L1685' name='L1685'&gt;&lt;/a&gt;&amp;lt;10&amp;gt; &amp;lt;0131&amp;gt;
<a id='L1700' name='L1700'></a>&lt;a id='L1686' name='L1686'&gt;&lt;/a&gt;&amp;lt;11&amp;gt; &amp;lt;0237&amp;gt;
<a id='L1701' name='L1701'></a>&lt;a id='L1687' name='L1687'&gt;&lt;/a&gt;&amp;lt;12&amp;gt; &amp;lt;0060&amp;gt;
<a id='L1702' name='L1702'></a>&lt;a id='L1688' name='L1688'&gt;&lt;/a&gt;&amp;lt;13&amp;gt; &amp;lt;00B4&amp;gt;
<a id='L1703' name='L1703'></a>&lt;a id='L1689' name='L1689'&gt;&lt;/a&gt;&amp;lt;14&amp;gt; &amp;lt;02C7&amp;gt;
<a id='L1704' name='L1704'></a>&lt;a id='L1690' name='L1690'&gt;&lt;/a&gt;&amp;lt;15&amp;gt; &amp;lt;02D8&amp;gt;
<a id='L1705' name='L1705'></a>&lt;a id='L1691' name='L1691'&gt;&lt;/a&gt;&amp;lt;16&amp;gt; &amp;lt;00AF&amp;gt;
<a id='L1706' name='L1706'></a>&lt;a id='L1692' name='L1692'&gt;&lt;/a&gt;&amp;lt;17&amp;gt; &amp;lt;02DA&amp;gt;
<a id='L1707' name='L1707'></a>&lt;a id='L1693' name='L1693'&gt;&lt;/a&gt;&amp;lt;18&amp;gt; &amp;lt;00B8&amp;gt;
<a id='L1708' name='L1708'></a>&lt;a id='L1694' name='L1694'&gt;&lt;/a&gt;&amp;lt;19&amp;gt; &amp;lt;00DF&amp;gt;
<a id='L1709' name='L1709'></a>&lt;a id='L1695' name='L1695'&gt;&lt;/a&gt;&amp;lt;1A&amp;gt; &amp;lt;00E6&amp;gt;
<a id='L1710' name='L1710'></a>&lt;a id='L1696' name='L1696'&gt;&lt;/a&gt;&amp;lt;1B&amp;gt; &amp;lt;0153&amp;gt;
<a id='L1711' name='L1711'></a>&lt;a id='L1697' name='L1697'&gt;&lt;/a&gt;&amp;lt;1C&amp;gt; &amp;lt;00F8&amp;gt;
<a id='L1712' name='L1712'></a>&lt;a id='L1698' name='L1698'&gt;&lt;/a&gt;&amp;lt;1D&amp;gt; &amp;lt;00C6&amp;gt;
<a id='L1713' name='L1713'></a>&lt;a id='L1699' name='L1699'&gt;&lt;/a&gt;&amp;lt;1E&amp;gt; &amp;lt;0152&amp;gt;
<a id='L1714' name='L1714'></a>&lt;a id='L1700' name='L1700'&gt;&lt;/a&gt;&amp;lt;1F&amp;gt; &amp;lt;00D8&amp;gt;
<a id='L1715' name='L1715'></a>&lt;a id='L1701' name='L1701'&gt;&lt;/a&gt;&amp;lt;21&amp;gt; &amp;lt;0021&amp;gt;
<a id='L1716' name='L1716'></a>&lt;a id='L1702' name='L1702'&gt;&lt;/a&gt;&amp;lt;22&amp;gt; &amp;lt;201D&amp;gt;
<a id='L1717' name='L1717'></a>&lt;a id='L1703' name='L1703'&gt;&lt;/a&gt;&amp;lt;23&amp;gt; &amp;lt;0023&amp;gt;
<a id='L1718' name='L1718'></a>&lt;a id='L1704' name='L1704'&gt;&lt;/a&gt;&amp;lt;24&amp;gt; &amp;lt;00A3&amp;gt;
<a id='L1719' name='L1719'></a>&lt;a id='L1705' name='L1705'&gt;&lt;/a&gt;&amp;lt;27&amp;gt; &amp;lt;2019&amp;gt;
<a id='L1720' name='L1720'></a>&lt;a id='L1706' name='L1706'&gt;&lt;/a&gt;&amp;lt;3C&amp;gt; &amp;lt;00A1&amp;gt;
<a id='L1721' name='L1721'></a>&lt;a id='L1707' name='L1707'&gt;&lt;/a&gt;&amp;lt;3D&amp;gt; &amp;lt;003D&amp;gt;
<a id='L1722' name='L1722'></a>&lt;a id='L1708' name='L1708'&gt;&lt;/a&gt;&amp;lt;3E&amp;gt; &amp;lt;00BF&amp;gt;
<a id='L1723' name='L1723'></a>&lt;a id='L1709' name='L1709'&gt;&lt;/a&gt;&amp;lt;5C&amp;gt; &amp;lt;201C&amp;gt;
<a id='L1724' name='L1724'></a>&lt;a id='L1710' name='L1710'&gt;&lt;/a&gt;&amp;lt;5F&amp;gt; &amp;lt;02D9&amp;gt;
<a id='L1725' name='L1725'></a>&lt;a id='L1711' name='L1711'&gt;&lt;/a&gt;&amp;lt;60&amp;gt; &amp;lt;2018&amp;gt;
<a id='L1726' name='L1726'></a>&lt;a id='L1712' name='L1712'&gt;&lt;/a&gt;&amp;lt;7D&amp;gt; &amp;lt;02DD&amp;gt;
<a id='L1727' name='L1727'></a>&lt;a id='L1713' name='L1713'&gt;&lt;/a&gt;&amp;lt;7E&amp;gt; &amp;lt;007E&amp;gt;
<a id='L1728' name='L1728'></a>&lt;a id='L1714' name='L1714'&gt;&lt;/a&gt;&amp;lt;7F&amp;gt; &amp;lt;00A8&amp;gt;
<a id='L1729' name='L1729'></a>&lt;a id='L1715' name='L1715'&gt;&lt;/a&gt;endbfchar
<a id='L1730' name='L1730'></a>&lt;a id='L1716' name='L1716'&gt;&lt;/a&gt;endcmap
<a id='L1731' name='L1731'></a>&lt;a id='L1717' name='L1717'&gt;&lt;/a&gt;CMapName currentdict /CMap defineresource pop
<a id='L1732' name='L1732'></a>&lt;a id='L1718' name='L1718'&gt;&lt;/a&gt;end
<a id='L1733' name='L1733'></a>&lt;a id='L1719' name='L1719'&gt;&lt;/a&gt;end
<a id='L1734' name='L1734'></a>&lt;a id='L1720' name='L1720'&gt;&lt;/a&gt;%%EndResource
<a id='L1735' name='L1735'></a>&lt;a id='L1721' name='L1721'&gt;&lt;/a&gt;%%EOF
<a id='L1736' name='L1736'></a>&lt;a id='L1722' name='L1722'&gt;&lt;/a&gt;    }\endgroup
<a id='L1737' name='L1737'></a>&lt;a id='L1723' name='L1723'&gt;&lt;/a&gt;  \expandafter\edef\csname cmapOT1IT\endcsname#1{%
<a id='L1738' name='L1738'></a>&lt;a id='L1724' name='L1724'&gt;&lt;/a&gt;    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
<a id='L1739' name='L1739'></a>&lt;a id='L1725' name='L1725'&gt;&lt;/a&gt;  }%
<a id='L1740' name='L1740'></a>&lt;a id='L1726' name='L1726'&gt;&lt;/a&gt;%
<a id='L1741' name='L1741'></a>&lt;a id='L1727' name='L1727'&gt;&lt;/a&gt;% \cmapOT1TT
<a id='L1742' name='L1742'></a>&lt;a id='L1728' name='L1728'&gt;&lt;/a&gt;  \begingroup
<a id='L1743' name='L1743'></a>&lt;a id='L1729' name='L1729'&gt;&lt;/a&gt;    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
<a id='L1744' name='L1744'></a>&lt;a id='L1730' name='L1730'&gt;&lt;/a&gt;    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
<a id='L1745' name='L1745'></a>&lt;a id='L1731' name='L1731'&gt;&lt;/a&gt;%%DocumentNeededResources: ProcSet (CIDInit)
<a id='L1746' name='L1746'></a>&lt;a id='L1732' name='L1732'&gt;&lt;/a&gt;%%IncludeResource: ProcSet (CIDInit)
<a id='L1747' name='L1747'></a>&lt;a id='L1733' name='L1733'&gt;&lt;/a&gt;%%BeginResource: CMap (TeX-OT1TT-0)
<a id='L1748' name='L1748'></a>&lt;a id='L1734' name='L1734'&gt;&lt;/a&gt;%%Title: (TeX-OT1TT-0 TeX OT1TT 0)
<a id='L1749' name='L1749'></a>&lt;a id='L1735' name='L1735'&gt;&lt;/a&gt;%%Version: 1.000
<a id='L1750' name='L1750'></a>&lt;a id='L1736' name='L1736'&gt;&lt;/a&gt;%%EndComments
<a id='L1751' name='L1751'></a>&lt;a id='L1737' name='L1737'&gt;&lt;/a&gt;/CIDInit /ProcSet findresource begin
<a id='L1752' name='L1752'></a>&lt;a id='L1738' name='L1738'&gt;&lt;/a&gt;12 dict begin
<a id='L1753' name='L1753'></a>&lt;a id='L1739' name='L1739'&gt;&lt;/a&gt;begincmap
<a id='L1754' name='L1754'></a>&lt;a id='L1740' name='L1740'&gt;&lt;/a&gt;/CIDSystemInfo
<a id='L1755' name='L1755'></a>&lt;a id='L1741' name='L1741'&gt;&lt;/a&gt;&amp;lt;&amp;lt; /Registry (TeX)
<a id='L1756' name='L1756'></a>&lt;a id='L1742' name='L1742'&gt;&lt;/a&gt;/Ordering (OT1TT)
<a id='L1757' name='L1757'></a>&lt;a id='L1743' name='L1743'&gt;&lt;/a&gt;/Supplement 0
<a id='L1758' name='L1758'></a>&lt;a id='L1744' name='L1744'&gt;&lt;/a&gt;&amp;gt;&amp;gt; def
<a id='L1759' name='L1759'></a>&lt;a id='L1745' name='L1745'&gt;&lt;/a&gt;/CMapName /TeX-OT1TT-0 def
<a id='L1760' name='L1760'></a>&lt;a id='L1746' name='L1746'&gt;&lt;/a&gt;/CMapType 2 def
<a id='L1761' name='L1761'></a>&lt;a id='L1747' name='L1747'&gt;&lt;/a&gt;1 begincodespacerange
<a id='L1762' name='L1762'></a>&lt;a id='L1748' name='L1748'&gt;&lt;/a&gt;&amp;lt;00&amp;gt; &amp;lt;7F&amp;gt;
<a id='L1763' name='L1763'></a>&lt;a id='L1749' name='L1749'&gt;&lt;/a&gt;endcodespacerange
<a id='L1764' name='L1764'></a>&lt;a id='L1750' name='L1750'&gt;&lt;/a&gt;5 beginbfrange
<a id='L1765' name='L1765'></a>&lt;a id='L1751' name='L1751'&gt;&lt;/a&gt;&amp;lt;00&amp;gt; &amp;lt;01&amp;gt; &amp;lt;0393&amp;gt;
<a id='L1766' name='L1766'></a>&lt;a id='L1752' name='L1752'&gt;&lt;/a&gt;&amp;lt;09&amp;gt; &amp;lt;0A&amp;gt; &amp;lt;03A8&amp;gt;
<a id='L1767' name='L1767'></a>&lt;a id='L1753' name='L1753'&gt;&lt;/a&gt;&amp;lt;21&amp;gt; &amp;lt;26&amp;gt; &amp;lt;0021&amp;gt;
<a id='L1768' name='L1768'></a>&lt;a id='L1754' name='L1754'&gt;&lt;/a&gt;&amp;lt;28&amp;gt; &amp;lt;5F&amp;gt; &amp;lt;0028&amp;gt;
<a id='L1769' name='L1769'></a>&lt;a id='L1755' name='L1755'&gt;&lt;/a&gt;&amp;lt;61&amp;gt; &amp;lt;7E&amp;gt; &amp;lt;0061&amp;gt;
<a id='L1770' name='L1770'></a>&lt;a id='L1756' name='L1756'&gt;&lt;/a&gt;endbfrange
<a id='L1771' name='L1771'></a>&lt;a id='L1757' name='L1757'&gt;&lt;/a&gt;32 beginbfchar
<a id='L1772' name='L1772'></a>&lt;a id='L1758' name='L1758'&gt;&lt;/a&gt;&amp;lt;02&amp;gt; &amp;lt;0398&amp;gt;
<a id='L1773' name='L1773'></a>&lt;a id='L1759' name='L1759'&gt;&lt;/a&gt;&amp;lt;03&amp;gt; &amp;lt;039B&amp;gt;
<a id='L1774' name='L1774'></a>&lt;a id='L1760' name='L1760'&gt;&lt;/a&gt;&amp;lt;04&amp;gt; &amp;lt;039E&amp;gt;
<a id='L1775' name='L1775'></a>&lt;a id='L1761' name='L1761'&gt;&lt;/a&gt;&amp;lt;05&amp;gt; &amp;lt;03A0&amp;gt;
<a id='L1776' name='L1776'></a>&lt;a id='L1762' name='L1762'&gt;&lt;/a&gt;&amp;lt;06&amp;gt; &amp;lt;03A3&amp;gt;
<a id='L1777' name='L1777'></a>&lt;a id='L1763' name='L1763'&gt;&lt;/a&gt;&amp;lt;07&amp;gt; &amp;lt;03D2&amp;gt;
<a id='L1778' name='L1778'></a>&lt;a id='L1764' name='L1764'&gt;&lt;/a&gt;&amp;lt;08&amp;gt; &amp;lt;03A6&amp;gt;
<a id='L1779' name='L1779'></a>&lt;a id='L1765' name='L1765'&gt;&lt;/a&gt;&amp;lt;0B&amp;gt; &amp;lt;2191&amp;gt;
<a id='L1780' name='L1780'></a>&lt;a id='L1766' name='L1766'&gt;&lt;/a&gt;&amp;lt;0C&amp;gt; &amp;lt;2193&amp;gt;
<a id='L1781' name='L1781'></a>&lt;a id='L1767' name='L1767'&gt;&lt;/a&gt;&amp;lt;0D&amp;gt; &amp;lt;0027&amp;gt;
<a id='L1782' name='L1782'></a>&lt;a id='L1768' name='L1768'&gt;&lt;/a&gt;&amp;lt;0E&amp;gt; &amp;lt;00A1&amp;gt;
<a id='L1783' name='L1783'></a>&lt;a id='L1769' name='L1769'&gt;&lt;/a&gt;&amp;lt;0F&amp;gt; &amp;lt;00BF&amp;gt;
<a id='L1784' name='L1784'></a>&lt;a id='L1770' name='L1770'&gt;&lt;/a&gt;&amp;lt;10&amp;gt; &amp;lt;0131&amp;gt;
<a id='L1785' name='L1785'></a>&lt;a id='L1771' name='L1771'&gt;&lt;/a&gt;&amp;lt;11&amp;gt; &amp;lt;0237&amp;gt;
<a id='L1786' name='L1786'></a>&lt;a id='L1772' name='L1772'&gt;&lt;/a&gt;&amp;lt;12&amp;gt; &amp;lt;0060&amp;gt;
<a id='L1787' name='L1787'></a>&lt;a id='L1773' name='L1773'&gt;&lt;/a&gt;&amp;lt;13&amp;gt; &amp;lt;00B4&amp;gt;
<a id='L1788' name='L1788'></a>&lt;a id='L1774' name='L1774'&gt;&lt;/a&gt;&amp;lt;14&amp;gt; &amp;lt;02C7&amp;gt;
<a id='L1789' name='L1789'></a>&lt;a id='L1775' name='L1775'&gt;&lt;/a&gt;&amp;lt;15&amp;gt; &amp;lt;02D8&amp;gt;
<a id='L1790' name='L1790'></a>&lt;a id='L1776' name='L1776'&gt;&lt;/a&gt;&amp;lt;16&amp;gt; &amp;lt;00AF&amp;gt;
<a id='L1791' name='L1791'></a>&lt;a id='L1777' name='L1777'&gt;&lt;/a&gt;&amp;lt;17&amp;gt; &amp;lt;02DA&amp;gt;
<a id='L1792' name='L1792'></a>&lt;a id='L1778' name='L1778'&gt;&lt;/a&gt;&amp;lt;18&amp;gt; &amp;lt;00B8&amp;gt;
<a id='L1793' name='L1793'></a>&lt;a id='L1779' name='L1779'&gt;&lt;/a&gt;&amp;lt;19&amp;gt; &amp;lt;00DF&amp;gt;
<a id='L1794' name='L1794'></a>&lt;a id='L1780' name='L1780'&gt;&lt;/a&gt;&amp;lt;1A&amp;gt; &amp;lt;00E6&amp;gt;
<a id='L1795' name='L1795'></a>&lt;a id='L1781' name='L1781'&gt;&lt;/a&gt;&amp;lt;1B&amp;gt; &amp;lt;0153&amp;gt;
<a id='L1796' name='L1796'></a>&lt;a id='L1782' name='L1782'&gt;&lt;/a&gt;&amp;lt;1C&amp;gt; &amp;lt;00F8&amp;gt;
<a id='L1797' name='L1797'></a>&lt;a id='L1783' name='L1783'&gt;&lt;/a&gt;&amp;lt;1D&amp;gt; &amp;lt;00C6&amp;gt;
<a id='L1798' name='L1798'></a>&lt;a id='L1784' name='L1784'&gt;&lt;/a&gt;&amp;lt;1E&amp;gt; &amp;lt;0152&amp;gt;
<a id='L1799' name='L1799'></a>&lt;a id='L1785' name='L1785'&gt;&lt;/a&gt;&amp;lt;1F&amp;gt; &amp;lt;00D8&amp;gt;
<a id='L1800' name='L1800'></a>&lt;a id='L1786' name='L1786'&gt;&lt;/a&gt;&amp;lt;20&amp;gt; &amp;lt;2423&amp;gt;
<a id='L1801' name='L1801'></a>&lt;a id='L1787' name='L1787'&gt;&lt;/a&gt;&amp;lt;27&amp;gt; &amp;lt;2019&amp;gt;
<a id='L1802' name='L1802'></a>&lt;a id='L1788' name='L1788'&gt;&lt;/a&gt;&amp;lt;60&amp;gt; &amp;lt;2018&amp;gt;
<a id='L1803' name='L1803'></a>&lt;a id='L1789' name='L1789'&gt;&lt;/a&gt;&amp;lt;7F&amp;gt; &amp;lt;00A8&amp;gt;
<a id='L1804' name='L1804'></a>&lt;a id='L1790' name='L1790'&gt;&lt;/a&gt;endbfchar
<a id='L1805' name='L1805'></a>&lt;a id='L1791' name='L1791'&gt;&lt;/a&gt;endcmap
<a id='L1806' name='L1806'></a>&lt;a id='L1792' name='L1792'&gt;&lt;/a&gt;CMapName currentdict /CMap defineresource pop
<a id='L1807' name='L1807'></a>&lt;a id='L1793' name='L1793'&gt;&lt;/a&gt;end
<a id='L1808' name='L1808'></a>&lt;a id='L1794' name='L1794'&gt;&lt;/a&gt;end
<a id='L1809' name='L1809'></a>&lt;a id='L1795' name='L1795'&gt;&lt;/a&gt;%%EndResource
<a id='L1810' name='L1810'></a>&lt;a id='L1796' name='L1796'&gt;&lt;/a&gt;%%EOF
<a id='L1811' name='L1811'></a>&lt;a id='L1797' name='L1797'&gt;&lt;/a&gt;    }\endgroup
<a id='L1812' name='L1812'></a>&lt;a id='L1798' name='L1798'&gt;&lt;/a&gt;  \expandafter\edef\csname cmapOT1TT\endcsname#1{%
<a id='L1813' name='L1813'></a>&lt;a id='L1799' name='L1799'&gt;&lt;/a&gt;    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
<a id='L1814' name='L1814'></a>&lt;a id='L1800' name='L1800'&gt;&lt;/a&gt;  }%
<a id='L1815' name='L1815'></a>&lt;a id='L1801' name='L1801'&gt;&lt;/a&gt;\fi\fi
<a id='L1816' name='L1816'></a>&lt;a id='L1802' name='L1802'&gt;&lt;/a&gt;
<a id='L1817' name='L1817'></a>&lt;a id='L1803' name='L1803'&gt;&lt;/a&gt;
<a id='L1818' name='L1818'></a>&lt;a id='L1804' name='L1804'&gt;&lt;/a&gt;% Set the font macro #1 to the font named \fontprefix#2.
<a id='L1819' name='L1819'></a>&lt;a id='L1805' name='L1805'&gt;&lt;/a&gt;% #3 is the font's design size, #4 is a scale factor, #5 is the CMap
<a id='L1820' name='L1820'></a>&lt;a id='L1806' name='L1806'&gt;&lt;/a&gt;% encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit).
<a id='L1821' name='L1821'></a>&lt;a id='L1807' name='L1807'&gt;&lt;/a&gt;% Example:
<a id='L1822' name='L1822'></a>&lt;a id='L1808' name='L1808'&gt;&lt;/a&gt;% #1 = \textrm
<a id='L1823' name='L1823'></a>&lt;a id='L1809' name='L1809'&gt;&lt;/a&gt;% #2 = \rmshape
<a id='L1824' name='L1824'></a>&lt;a id='L1810' name='L1810'&gt;&lt;/a&gt;% #3 = 10
<a id='L1825' name='L1825'></a>&lt;a id='L1811' name='L1811'&gt;&lt;/a&gt;% #4 = \mainmagstep
<a id='L1826' name='L1826'></a>&lt;a id='L1812' name='L1812'&gt;&lt;/a&gt;% #5 = OT1
<a id='L1827' name='L1827'></a>&lt;a id='L1813' name='L1813'&gt;&lt;/a&gt;%
<a id='L1828' name='L1828'></a>&lt;a id='L1814' name='L1814'&gt;&lt;/a&gt;\def\setfont#1#2#3#4#5{%
<a id='L1829' name='L1829'></a>&lt;a id='L1815' name='L1815'&gt;&lt;/a&gt;  \font#1=\fontprefix#2#3 scaled #4
<a id='L1830' name='L1830'></a>&lt;a id='L1816' name='L1816'&gt;&lt;/a&gt;  \csname cmap#5\endcsname#1%
<a id='L1831' name='L1831'></a>&lt;a id='L1817' name='L1817'&gt;&lt;/a&gt;}
<a id='L1832' name='L1832'></a>&lt;a id='L1818' name='L1818'&gt;&lt;/a&gt;% This is what gets called when #5 of \setfont is empty.
<a id='L1833' name='L1833'></a>&lt;a id='L1819' name='L1819'&gt;&lt;/a&gt;\let\cmap\gobble
<a id='L1834' name='L1834'></a>&lt;a id='L1820' name='L1820'&gt;&lt;/a&gt;%
<a id='L1835' name='L1835'></a>&lt;a id='L1821' name='L1821'&gt;&lt;/a&gt;% (end of cmaps)
<a id='L1836' name='L1836'></a>&lt;a id='L1822' name='L1822'&gt;&lt;/a&gt;
<a id='L1837' name='L1837'></a>&lt;a id='L1823' name='L1823'&gt;&lt;/a&gt;% Use cm as the default font prefix.
<a id='L1838' name='L1838'></a>&lt;a id='L1824' name='L1824'&gt;&lt;/a&gt;% To specify the font prefix, you must define \fontprefix
<a id='L1839' name='L1839'></a>&lt;a id='L1825' name='L1825'&gt;&lt;/a&gt;% before you read in texinfo.tex.
<a id='L1840' name='L1840'></a>&lt;a id='L1826' name='L1826'&gt;&lt;/a&gt;\ifx\fontprefix\thisisundefined
<a id='L1841' name='L1841'></a>&lt;a id='L1827' name='L1827'&gt;&lt;/a&gt;\def\fontprefix{cm}
<a id='L1842' name='L1842'></a>&lt;a id='L1828' name='L1828'&gt;&lt;/a&gt;\fi
<a id='L1843' name='L1843'></a>&lt;a id='L1829' name='L1829'&gt;&lt;/a&gt;% Support font families that don't use the same naming scheme as CM.
<a id='L1844' name='L1844'></a>&lt;a id='L1830' name='L1830'&gt;&lt;/a&gt;\def\rmshape{r}
<a id='L1845' name='L1845'></a>&lt;a id='L1831' name='L1831'&gt;&lt;/a&gt;\def\rmbshape{bx}               % where the normal face is bold
<a id='L1846' name='L1846'></a>&lt;a id='L1832' name='L1832'&gt;&lt;/a&gt;\def\bfshape{b}
<a id='L1847' name='L1847'></a>&lt;a id='L1833' name='L1833'&gt;&lt;/a&gt;\def\bxshape{bx}
<a id='L1848' name='L1848'></a>&lt;a id='L1834' name='L1834'&gt;&lt;/a&gt;\def\ttshape{tt}
<a id='L1849' name='L1849'></a>&lt;a id='L1835' name='L1835'&gt;&lt;/a&gt;\def\ttbshape{tt}
<a id='L1850' name='L1850'></a>&lt;a id='L1836' name='L1836'&gt;&lt;/a&gt;\def\ttslshape{sltt}
<a id='L1851' name='L1851'></a>&lt;a id='L1837' name='L1837'&gt;&lt;/a&gt;\def\itshape{ti}
<a id='L1852' name='L1852'></a>&lt;a id='L1838' name='L1838'&gt;&lt;/a&gt;\def\itbshape{bxti}
<a id='L1853' name='L1853'></a>&lt;a id='L1839' name='L1839'&gt;&lt;/a&gt;\def\slshape{sl}
<a id='L1854' name='L1854'></a>&lt;a id='L1840' name='L1840'&gt;&lt;/a&gt;\def\slbshape{bxsl}
<a id='L1855' name='L1855'></a>&lt;a id='L1841' name='L1841'&gt;&lt;/a&gt;\def\sfshape{ss}
<a id='L1856' name='L1856'></a>&lt;a id='L1842' name='L1842'&gt;&lt;/a&gt;\def\sfbshape{ss}
<a id='L1857' name='L1857'></a>&lt;a id='L1843' name='L1843'&gt;&lt;/a&gt;\def\scshape{csc}
<a id='L1858' name='L1858'></a>&lt;a id='L1844' name='L1844'&gt;&lt;/a&gt;\def\scbshape{csc}
<a id='L1859' name='L1859'></a>&lt;a id='L1845' name='L1845'&gt;&lt;/a&gt;
<a id='L1860' name='L1860'></a>&lt;a id='L1846' name='L1846'&gt;&lt;/a&gt;% Definitions for a main text size of 11pt.  (The default in Texinfo.)
<a id='L1861' name='L1861'></a>&lt;a id='L1847' name='L1847'&gt;&lt;/a&gt;%
<a id='L1862' name='L1862'></a>&lt;a id='L1848' name='L1848'&gt;&lt;/a&gt;\def\definetextfontsizexi{%
<a id='L1863' name='L1863'></a>&lt;a id='L1849' name='L1849'&gt;&lt;/a&gt;% Text fonts (11.2pt, magstep1).
<a id='L1864' name='L1864'></a>&lt;a id='L1850' name='L1850'&gt;&lt;/a&gt;\def\textnominalsize{11pt}
<a id='L1865' name='L1865'></a>&lt;a id='L1851' name='L1851'&gt;&lt;/a&gt;\edef\mainmagstep{\magstephalf}
<a id='L1866' name='L1866'></a>&lt;a id='L1852' name='L1852'&gt;&lt;/a&gt;\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
<a id='L1867' name='L1867'></a>&lt;a id='L1853' name='L1853'&gt;&lt;/a&gt;\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
<a id='L1868' name='L1868'></a>&lt;a id='L1854' name='L1854'&gt;&lt;/a&gt;\ifpTeX
<a id='L1869' name='L1869'></a>&lt;a id='L1855' name='L1855'&gt;&lt;/a&gt;\font\textmc=min10 scaled \mainmagstep
<a id='L1870' name='L1870'></a>&lt;a id='L1856' name='L1856'&gt;&lt;/a&gt;\font\textgt=goth10 scaled \mainmagstep
<a id='L1871' name='L1871'></a>&lt;a id='L1857' name='L1857'&gt;&lt;/a&gt;\fi
<a id='L1872' name='L1872'></a>&lt;a id='L1858' name='L1858'&gt;&lt;/a&gt;\ifjTeX
<a id='L1873' name='L1873'></a>&lt;a id='L1859' name='L1859'&gt;&lt;/a&gt;\jfont\textmc=dm10 scaled \mainmagstep
<a id='L1874' name='L1874'></a>&lt;a id='L1860' name='L1860'&gt;&lt;/a&gt;\jfont\textgt=dg10 scaled \mainmagstep
<a id='L1875' name='L1875'></a>&lt;a id='L1861' name='L1861'&gt;&lt;/a&gt;\fi
<a id='L1876' name='L1876'></a>&lt;a id='L1862' name='L1862'&gt;&lt;/a&gt;\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
<a id='L1877' name='L1877'></a>&lt;a id='L1863' name='L1863'&gt;&lt;/a&gt;\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
<a id='L1878' name='L1878'></a>&lt;a id='L1864' name='L1864'&gt;&lt;/a&gt;\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
<a id='L1879' name='L1879'></a>&lt;a id='L1865' name='L1865'&gt;&lt;/a&gt;\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
<a id='L1880' name='L1880'></a>&lt;a id='L1866' name='L1866'&gt;&lt;/a&gt;\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
<a id='L1881' name='L1881'></a>&lt;a id='L1867' name='L1867'&gt;&lt;/a&gt;\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
<a id='L1882' name='L1882'></a>&lt;a id='L1868' name='L1868'&gt;&lt;/a&gt;\font\texti=cmmi10 scaled \mainmagstep
<a id='L1883' name='L1883'></a>&lt;a id='L1869' name='L1869'&gt;&lt;/a&gt;\font\textsy=cmsy10 scaled \mainmagstep
<a id='L1884' name='L1884'></a>&lt;a id='L1870' name='L1870'&gt;&lt;/a&gt;\def\textecsize{1095}
<a id='L1885' name='L1885'></a>&lt;a id='L1871' name='L1871'&gt;&lt;/a&gt;
<a id='L1886' name='L1886'></a>&lt;a id='L1872' name='L1872'&gt;&lt;/a&gt;% A few fonts for @defun names and args.
<a id='L1887' name='L1887'></a>&lt;a id='L1873' name='L1873'&gt;&lt;/a&gt;\ifpTeX
<a id='L1888' name='L1888'></a>&lt;a id='L1874' name='L1874'&gt;&lt;/a&gt;\setfont\defbf\bfshape{10}{\magstep1}{OT1}
<a id='L1889' name='L1889'></a>&lt;a id='L1875' name='L1875'&gt;&lt;/a&gt;\setfont\deftt\ttshape{10}{\magstep1}{OT1TT}
<a id='L1890' name='L1890'></a>&lt;a id='L1876' name='L1876'&gt;&lt;/a&gt;\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}
<a id='L1891' name='L1891'></a>&lt;a id='L1877' name='L1877'&gt;&lt;/a&gt;\font\defmc=min10 scaled \magstep1
<a id='L1892' name='L1892'></a>&lt;a id='L1878' name='L1878'&gt;&lt;/a&gt;\font\defgt=goth10 scaled \magstep1
<a id='L1893' name='L1893'></a>&lt;a id='L1879' name='L1879'&gt;&lt;/a&gt;\def\df{\let\tentt=\deftt \let\tenmin=\defmc
<a id='L1894' name='L1894'></a>&lt;a id='L1880' name='L1880'&gt;&lt;/a&gt;\let\tengt=\defgt \let\tenbf=\defbf \let\tenttsl=\defttsl \bf}
<a id='L1895' name='L1895'></a>&lt;a id='L1881' name='L1881'&gt;&lt;/a&gt;\else\ifjTeX
<a id='L1896' name='L1896'></a>&lt;a id='L1882' name='L1882'&gt;&lt;/a&gt;\setfont\defbf\bfshape{10}{\magstep1}{OT1}
<a id='L1897' name='L1897'></a>&lt;a id='L1883' name='L1883'&gt;&lt;/a&gt;\setfont\deftt\ttshape{10}{\magstep1}{OT1TT}
<a id='L1898' name='L1898'></a>&lt;a id='L1884' name='L1884'&gt;&lt;/a&gt;\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}
<a id='L1899' name='L1899'></a>&lt;a id='L1885' name='L1885'&gt;&lt;/a&gt;\jfont\defmc=dm10 scaled \magstep1
<a id='L1900' name='L1900'></a>&lt;a id='L1886' name='L1886'&gt;&lt;/a&gt;\jfont\defgt=dg10 scaled \magstep1
<a id='L1901' name='L1901'></a>&lt;a id='L1887' name='L1887'&gt;&lt;/a&gt;\def\df{\let\tentt=\deftt \let\tenmin=\defmc
<a id='L1902' name='L1902'></a>&lt;a id='L1888' name='L1888'&gt;&lt;/a&gt;\let\tengt=\defgt\let\tenbf=\defbf \let\tenttsl=\defttsl \bf}
<a id='L1903' name='L1903'></a>&lt;a id='L1889' name='L1889'&gt;&lt;/a&gt;\else
<a id='L1904' name='L1904'></a>&lt;a id='L1890' name='L1890'&gt;&lt;/a&gt;\setfont\defbf\bfshape{10}{\magstep1}{OT1}
<a id='L1905' name='L1905'></a>&lt;a id='L1891' name='L1891'&gt;&lt;/a&gt;\setfont\deftt\ttshape{10}{\magstep1}{OT1TT}
<a id='L1906' name='L1906'></a>&lt;a id='L1892' name='L1892'&gt;&lt;/a&gt;\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}
<a id='L1907' name='L1907'></a>&lt;a id='L1893' name='L1893'&gt;&lt;/a&gt;\def\df{\let\tentt=\deftt \let\tenbf=\defbf \let\tenttsl=\defttsl \bf}
<a id='L1908' name='L1908'></a>&lt;a id='L1894' name='L1894'&gt;&lt;/a&gt;\fi\fi
<a id='L1909' name='L1909'></a>&lt;a id='L1895' name='L1895'&gt;&lt;/a&gt;
<a id='L1910' name='L1910'></a>&lt;a id='L1896' name='L1896'&gt;&lt;/a&gt;% Fonts for indices, footnotes, small examples (9pt).
<a id='L1911' name='L1911'></a>&lt;a id='L1897' name='L1897'&gt;&lt;/a&gt;\def\smallnominalsize{9pt}
<a id='L1912' name='L1912'></a>&lt;a id='L1898' name='L1898'&gt;&lt;/a&gt;\setfont\smallrm\rmshape{9}{1000}{OT1}
<a id='L1913' name='L1913'></a>&lt;a id='L1899' name='L1899'&gt;&lt;/a&gt;\setfont\smalltt\ttshape{9}{1000}{OT1TT}
<a id='L1914' name='L1914'></a>&lt;a id='L1900' name='L1900'&gt;&lt;/a&gt;\setfont\smallbf\bfshape{10}{900}{OT1}
<a id='L1915' name='L1915'></a>&lt;a id='L1901' name='L1901'&gt;&lt;/a&gt;\setfont\smallit\itshape{9}{1000}{OT1IT}
<a id='L1916' name='L1916'></a>&lt;a id='L1902' name='L1902'&gt;&lt;/a&gt;\setfont\smallsl\slshape{9}{1000}{OT1}
<a id='L1917' name='L1917'></a>&lt;a id='L1903' name='L1903'&gt;&lt;/a&gt;\setfont\smallsf\sfshape{9}{1000}{OT1}
<a id='L1918' name='L1918'></a>&lt;a id='L1904' name='L1904'&gt;&lt;/a&gt;\setfont\smallsc\scshape{10}{900}{OT1}
<a id='L1919' name='L1919'></a>&lt;a id='L1905' name='L1905'&gt;&lt;/a&gt;\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
<a id='L1920' name='L1920'></a>&lt;a id='L1906' name='L1906'&gt;&lt;/a&gt;\font\smalli=cmmi9
<a id='L1921' name='L1921'></a>&lt;a id='L1907' name='L1907'&gt;&lt;/a&gt;\font\smallsy=cmsy9
<a id='L1922' name='L1922'></a>&lt;a id='L1908' name='L1908'&gt;&lt;/a&gt;\ifpTeX
<a id='L1923' name='L1923'></a>&lt;a id='L1909' name='L1909'&gt;&lt;/a&gt;\font\smallmc=min9
<a id='L1924' name='L1924'></a>&lt;a id='L1910' name='L1910'&gt;&lt;/a&gt;\font\smallgt=goth9
<a id='L1925' name='L1925'></a>&lt;a id='L1911' name='L1911'&gt;&lt;/a&gt;\fi
<a id='L1926' name='L1926'></a>&lt;a id='L1912' name='L1912'&gt;&lt;/a&gt;\ifjTeX
<a id='L1927' name='L1927'></a>&lt;a id='L1913' name='L1913'&gt;&lt;/a&gt;\jfont\smallmc=dm9
<a id='L1928' name='L1928'></a>&lt;a id='L1914' name='L1914'&gt;&lt;/a&gt;\jfont\smallgt=dg9
<a id='L1929' name='L1929'></a>&lt;a id='L1915' name='L1915'&gt;&lt;/a&gt;\fi
<a id='L1930' name='L1930'></a>&lt;a id='L1916' name='L1916'&gt;&lt;/a&gt;\def\smallecsize{0900}
<a id='L1931' name='L1931'></a>&lt;a id='L1917' name='L1917'&gt;&lt;/a&gt;
<a id='L1932' name='L1932'></a>&lt;a id='L1918' name='L1918'&gt;&lt;/a&gt;% Fonts for small examples (8pt).
<a id='L1933' name='L1933'></a>&lt;a id='L1919' name='L1919'&gt;&lt;/a&gt;\def\smallernominalsize{8pt}
<a id='L1934' name='L1934'></a>&lt;a id='L1920' name='L1920'&gt;&lt;/a&gt;\setfont\smallerrm\rmshape{8}{1000}{OT1}
<a id='L1935' name='L1935'></a>&lt;a id='L1921' name='L1921'&gt;&lt;/a&gt;\setfont\smallertt\ttshape{8}{1000}{OT1TT}
<a id='L1936' name='L1936'></a>&lt;a id='L1922' name='L1922'&gt;&lt;/a&gt;\setfont\smallerbf\bfshape{10}{800}{OT1}
<a id='L1937' name='L1937'></a>&lt;a id='L1923' name='L1923'&gt;&lt;/a&gt;\setfont\smallerit\itshape{8}{1000}{OT1IT}
<a id='L1938' name='L1938'></a>&lt;a id='L1924' name='L1924'&gt;&lt;/a&gt;\setfont\smallersl\slshape{8}{1000}{OT1}
<a id='L1939' name='L1939'></a>&lt;a id='L1925' name='L1925'&gt;&lt;/a&gt;\setfont\smallersf\sfshape{8}{1000}{OT1}
<a id='L1940' name='L1940'></a>&lt;a id='L1926' name='L1926'&gt;&lt;/a&gt;\setfont\smallersc\scshape{10}{800}{OT1}
<a id='L1941' name='L1941'></a>&lt;a id='L1927' name='L1927'&gt;&lt;/a&gt;\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
<a id='L1942' name='L1942'></a>&lt;a id='L1928' name='L1928'&gt;&lt;/a&gt;\font\smalleri=cmmi8
<a id='L1943' name='L1943'></a>&lt;a id='L1929' name='L1929'&gt;&lt;/a&gt;\font\smallersy=cmsy8
<a id='L1944' name='L1944'></a>&lt;a id='L1930' name='L1930'&gt;&lt;/a&gt;\ifpTeX
<a id='L1945' name='L1945'></a>&lt;a id='L1931' name='L1931'&gt;&lt;/a&gt;\font\smallermc=min8
<a id='L1946' name='L1946'></a>&lt;a id='L1932' name='L1932'&gt;&lt;/a&gt;\font\smallergt=goth8
<a id='L1947' name='L1947'></a>&lt;a id='L1933' name='L1933'&gt;&lt;/a&gt;\fi
<a id='L1948' name='L1948'></a>&lt;a id='L1934' name='L1934'&gt;&lt;/a&gt;\ifjTeX
<a id='L1949' name='L1949'></a>&lt;a id='L1935' name='L1935'&gt;&lt;/a&gt;\jfont\smallermc=dm8
<a id='L1950' name='L1950'></a>&lt;a id='L1936' name='L1936'&gt;&lt;/a&gt;\jfont\smallergt=dg8
<a id='L1951' name='L1951'></a>&lt;a id='L1937' name='L1937'&gt;&lt;/a&gt;\fi
<a id='L1952' name='L1952'></a>&lt;a id='L1938' name='L1938'&gt;&lt;/a&gt;\def\smallerecsize{0800}
<a id='L1953' name='L1953'></a>&lt;a id='L1939' name='L1939'&gt;&lt;/a&gt;
<a id='L1954' name='L1954'></a>&lt;a id='L1940' name='L1940'&gt;&lt;/a&gt;% Fonts for title page (20.4pt):
<a id='L1955' name='L1955'></a>&lt;a id='L1941' name='L1941'&gt;&lt;/a&gt;\def\titlenominalsize{20pt}
<a id='L1956' name='L1956'></a>&lt;a id='L1942' name='L1942'&gt;&lt;/a&gt;\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
<a id='L1957' name='L1957'></a>&lt;a id='L1943' name='L1943'&gt;&lt;/a&gt;\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
<a id='L1958' name='L1958'></a>&lt;a id='L1944' name='L1944'&gt;&lt;/a&gt;\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
<a id='L1959' name='L1959'></a>&lt;a id='L1945' name='L1945'&gt;&lt;/a&gt;\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
<a id='L1960' name='L1960'></a>&lt;a id='L1946' name='L1946'&gt;&lt;/a&gt;\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
<a id='L1961' name='L1961'></a>&lt;a id='L1947' name='L1947'&gt;&lt;/a&gt;\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
<a id='L1962' name='L1962'></a>&lt;a id='L1948' name='L1948'&gt;&lt;/a&gt;\ifpTeX
<a id='L1963' name='L1963'></a>&lt;a id='L1949' name='L1949'&gt;&lt;/a&gt;\font\titlemc=min10 scaled \magstep4
<a id='L1964' name='L1964'></a>&lt;a id='L1950' name='L1950'&gt;&lt;/a&gt;\font\titlegt=goth10 scaled \magstep4
<a id='L1965' name='L1965'></a>&lt;a id='L1951' name='L1951'&gt;&lt;/a&gt;\fi
<a id='L1966' name='L1966'></a>&lt;a id='L1952' name='L1952'&gt;&lt;/a&gt;\ifjTeX
<a id='L1967' name='L1967'></a>&lt;a id='L1953' name='L1953'&gt;&lt;/a&gt;\jfont\titlemc=dm10 scaled \magstep4
<a id='L1968' name='L1968'></a>&lt;a id='L1954' name='L1954'&gt;&lt;/a&gt;\jfont\titlegt=dg10 scaled \magstep4
<a id='L1969' name='L1969'></a>&lt;a id='L1955' name='L1955'&gt;&lt;/a&gt;\fi
<a id='L1970' name='L1970'></a>&lt;a id='L1956' name='L1956'&gt;&lt;/a&gt;\let\titlebf=\titlerm
<a id='L1971' name='L1971'></a>&lt;a id='L1957' name='L1957'&gt;&lt;/a&gt;\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
<a id='L1972' name='L1972'></a>&lt;a id='L1958' name='L1958'&gt;&lt;/a&gt;\font\titlei=cmmi12 scaled \magstep3
<a id='L1973' name='L1973'></a>&lt;a id='L1959' name='L1959'&gt;&lt;/a&gt;\font\titlesy=cmsy10 scaled \magstep4
<a id='L1974' name='L1974'></a>&lt;a id='L1960' name='L1960'&gt;&lt;/a&gt;\def\titleecsize{2074}
<a id='L1975' name='L1975'></a>&lt;a id='L1961' name='L1961'&gt;&lt;/a&gt;
<a id='L1976' name='L1976'></a>&lt;a id='L1962' name='L1962'&gt;&lt;/a&gt;% Chapter (and unnumbered) fonts (17.28pt).
<a id='L1977' name='L1977'></a>&lt;a id='L1963' name='L1963'&gt;&lt;/a&gt;\def\chapnominalsize{17pt}
<a id='L1978' name='L1978'></a>&lt;a id='L1964' name='L1964'&gt;&lt;/a&gt;\setfont\chaprm\rmbshape{12}{\magstep2}{OT1}
<a id='L1979' name='L1979'></a>&lt;a id='L1965' name='L1965'&gt;&lt;/a&gt;\setfont\chapit\itbshape{10}{\magstep3}{OT1IT}
<a id='L1980' name='L1980'></a>&lt;a id='L1966' name='L1966'&gt;&lt;/a&gt;\setfont\chapsl\slbshape{10}{\magstep3}{OT1}
<a id='L1981' name='L1981'></a>&lt;a id='L1967' name='L1967'&gt;&lt;/a&gt;\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT}
<a id='L1982' name='L1982'></a>&lt;a id='L1968' name='L1968'&gt;&lt;/a&gt;\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT}
<a id='L1983' name='L1983'></a>&lt;a id='L1969' name='L1969'&gt;&lt;/a&gt;\setfont\chapsf\sfbshape{17}{1000}{OT1}
<a id='L1984' name='L1984'></a>&lt;a id='L1970' name='L1970'&gt;&lt;/a&gt;\ifpTeX
<a id='L1985' name='L1985'></a>&lt;a id='L1971' name='L1971'&gt;&lt;/a&gt;\font\chapmc=min10 scaled \magstep3
<a id='L1986' name='L1986'></a>&lt;a id='L1972' name='L1972'&gt;&lt;/a&gt;\font\chapgt=goth10 scaled \magstep3
<a id='L1987' name='L1987'></a>&lt;a id='L1973' name='L1973'&gt;&lt;/a&gt;\fi
<a id='L1988' name='L1988'></a>&lt;a id='L1974' name='L1974'&gt;&lt;/a&gt;\ifjTeX
<a id='L1989' name='L1989'></a>&lt;a id='L1975' name='L1975'&gt;&lt;/a&gt;\jfont\chapmc=dm10 scaled \magstep3
<a id='L1990' name='L1990'></a>&lt;a id='L1976' name='L1976'&gt;&lt;/a&gt;\jfont\chapgt=dg10 scaled \magstep3
<a id='L1991' name='L1991'></a>&lt;a id='L1977' name='L1977'&gt;&lt;/a&gt;\fi
<a id='L1992' name='L1992'></a>&lt;a id='L1978' name='L1978'&gt;&lt;/a&gt;\let\chapbf=\chaprm
<a id='L1993' name='L1993'></a>&lt;a id='L1979' name='L1979'&gt;&lt;/a&gt;\setfont\chapsc\scbshape{10}{\magstep3}{OT1}
<a id='L1994' name='L1994'></a>&lt;a id='L1980' name='L1980'&gt;&lt;/a&gt;\font\chapi=cmmi12 scaled \magstep2
<a id='L1995' name='L1995'></a>&lt;a id='L1981' name='L1981'&gt;&lt;/a&gt;\font\chapsy=cmsy10 scaled \magstep3
<a id='L1996' name='L1996'></a>&lt;a id='L1982' name='L1982'&gt;&lt;/a&gt;\def\chapecsize{1728}
<a id='L1997' name='L1997'></a>&lt;a id='L1983' name='L1983'&gt;&lt;/a&gt;
<a id='L1998' name='L1998'></a>&lt;a id='L1984' name='L1984'&gt;&lt;/a&gt;% Section fonts (14.4pt).
<a id='L1999' name='L1999'></a>&lt;a id='L1985' name='L1985'&gt;&lt;/a&gt;\def\secnominalsize{14pt}
<a id='L2000' name='L2000'></a>&lt;a id='L1986' name='L1986'&gt;&lt;/a&gt;\setfont\secrm\rmbshape{12}{\magstep1}{OT1}
<a id='L2001' name='L2001'></a>&lt;a id='L1987' name='L1987'&gt;&lt;/a&gt;\setfont\secit\itbshape{10}{\magstep2}{OT1IT}
<a id='L2002' name='L2002'></a>&lt;a id='L1988' name='L1988'&gt;&lt;/a&gt;\setfont\secsl\slbshape{10}{\magstep2}{OT1}
<a id='L2003' name='L2003'></a>&lt;a id='L1989' name='L1989'&gt;&lt;/a&gt;\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT}
<a id='L2004' name='L2004'></a>&lt;a id='L1990' name='L1990'&gt;&lt;/a&gt;\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT}
<a id='L2005' name='L2005'></a>&lt;a id='L1991' name='L1991'&gt;&lt;/a&gt;\setfont\secsf\sfbshape{12}{\magstep1}{OT1}
<a id='L2006' name='L2006'></a>&lt;a id='L1992' name='L1992'&gt;&lt;/a&gt;\ifpTeX
<a id='L2007' name='L2007'></a>&lt;a id='L1993' name='L1993'&gt;&lt;/a&gt;\font\secmc=min10 scaled \magstep2
<a id='L2008' name='L2008'></a>&lt;a id='L1994' name='L1994'&gt;&lt;/a&gt;\font\secgt=goth10 scaled \magstep2
<a id='L2009' name='L2009'></a>&lt;a id='L1995' name='L1995'&gt;&lt;/a&gt;\fi
<a id='L2010' name='L2010'></a>&lt;a id='L1996' name='L1996'&gt;&lt;/a&gt;\ifjTeX
<a id='L2011' name='L2011'></a>&lt;a id='L1997' name='L1997'&gt;&lt;/a&gt;\jfont\secmc=dm10 scaled \magstep2
<a id='L2012' name='L2012'></a>&lt;a id='L1998' name='L1998'&gt;&lt;/a&gt;\jfont\secgt=dg10 scaled \magstep2
<a id='L2013' name='L2013'></a>&lt;a id='L1999' name='L1999'&gt;&lt;/a&gt;\fi
<a id='L2014' name='L2014'></a>&lt;a id='L2000' name='L2000'&gt;&lt;/a&gt;\let\secbf\secrm
<a id='L2015' name='L2015'></a>&lt;a id='L2001' name='L2001'&gt;&lt;/a&gt;\setfont\secsc\scbshape{10}{\magstep2}{OT1}
<a id='L2016' name='L2016'></a>&lt;a id='L2002' name='L2002'&gt;&lt;/a&gt;\font\seci=cmmi12 scaled \magstep1
<a id='L2017' name='L2017'></a>&lt;a id='L2003' name='L2003'&gt;&lt;/a&gt;\font\secsy=cmsy10 scaled \magstep2
<a id='L2018' name='L2018'></a>&lt;a id='L2004' name='L2004'&gt;&lt;/a&gt;\def\sececsize{1440}
<a id='L2019' name='L2019'></a>&lt;a id='L2005' name='L2005'&gt;&lt;/a&gt;
<a id='L2020' name='L2020'></a>&lt;a id='L2006' name='L2006'&gt;&lt;/a&gt;% Subsection fonts (13.15pt).
<a id='L2021' name='L2021'></a>&lt;a id='L2007' name='L2007'&gt;&lt;/a&gt;\def\ssecnominalsize{13pt}
<a id='L2022' name='L2022'></a>&lt;a id='L2008' name='L2008'&gt;&lt;/a&gt;\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1}
<a id='L2023' name='L2023'></a>&lt;a id='L2009' name='L2009'&gt;&lt;/a&gt;\setfont\ssecit\itbshape{10}{1315}{OT1IT}
<a id='L2024' name='L2024'></a>&lt;a id='L2010' name='L2010'&gt;&lt;/a&gt;\setfont\ssecsl\slbshape{10}{1315}{OT1}
<a id='L2025' name='L2025'></a>&lt;a id='L2011' name='L2011'&gt;&lt;/a&gt;\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT}
<a id='L2026' name='L2026'></a>&lt;a id='L2012' name='L2012'&gt;&lt;/a&gt;\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT}
<a id='L2027' name='L2027'></a>&lt;a id='L2013' name='L2013'&gt;&lt;/a&gt;\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1}
<a id='L2028' name='L2028'></a>&lt;a id='L2014' name='L2014'&gt;&lt;/a&gt;\ifpTeX
<a id='L2029' name='L2029'></a>&lt;a id='L2015' name='L2015'&gt;&lt;/a&gt;\font\ssecmc=min10 scaled 1315
<a id='L2030' name='L2030'></a>&lt;a id='L2016' name='L2016'&gt;&lt;/a&gt;\font\ssecgt=goth10 scaled 1315
<a id='L2031' name='L2031'></a>&lt;a id='L2017' name='L2017'&gt;&lt;/a&gt;\fi
<a id='L2032' name='L2032'></a>&lt;a id='L2018' name='L2018'&gt;&lt;/a&gt;\ifjTeX
<a id='L2033' name='L2033'></a>&lt;a id='L2019' name='L2019'&gt;&lt;/a&gt;\jfont\ssecmc=dm10 scaled 1315
<a id='L2034' name='L2034'></a>&lt;a id='L2020' name='L2020'&gt;&lt;/a&gt;\jfont\ssecgt=dg10 scaled 1315
<a id='L2035' name='L2035'></a>&lt;a id='L2021' name='L2021'&gt;&lt;/a&gt;\fi
<a id='L2036' name='L2036'></a>&lt;a id='L2022' name='L2022'&gt;&lt;/a&gt;\let\ssecbf\ssecrm
<a id='L2037' name='L2037'></a>&lt;a id='L2023' name='L2023'&gt;&lt;/a&gt;\setfont\ssecsc\scbshape{10}{1315}{OT1}
<a id='L2038' name='L2038'></a>&lt;a id='L2024' name='L2024'&gt;&lt;/a&gt;\font\sseci=cmmi12 scaled \magstephalf
<a id='L2039' name='L2039'></a>&lt;a id='L2025' name='L2025'&gt;&lt;/a&gt;\font\ssecsy=cmsy10 scaled 1315
<a id='L2040' name='L2040'></a>&lt;a id='L2026' name='L2026'&gt;&lt;/a&gt;\def\ssececsize{1200}
<a id='L2041' name='L2041'></a>&lt;a id='L2027' name='L2027'&gt;&lt;/a&gt;
<a id='L2042' name='L2042'></a>&lt;a id='L2028' name='L2028'&gt;&lt;/a&gt;% Reduced fonts for @acro in text (10pt).
<a id='L2043' name='L2043'></a>&lt;a id='L2029' name='L2029'&gt;&lt;/a&gt;\def\reducednominalsize{10pt}
<a id='L2044' name='L2044'></a>&lt;a id='L2030' name='L2030'&gt;&lt;/a&gt;\setfont\reducedrm\rmshape{10}{1000}{OT1}
<a id='L2045' name='L2045'></a>&lt;a id='L2031' name='L2031'&gt;&lt;/a&gt;\setfont\reducedtt\ttshape{10}{1000}{OT1TT}
<a id='L2046' name='L2046'></a>&lt;a id='L2032' name='L2032'&gt;&lt;/a&gt;\setfont\reducedbf\bfshape{10}{1000}{OT1}
<a id='L2047' name='L2047'></a>&lt;a id='L2033' name='L2033'&gt;&lt;/a&gt;\setfont\reducedit\itshape{10}{1000}{OT1IT}
<a id='L2048' name='L2048'></a>&lt;a id='L2034' name='L2034'&gt;&lt;/a&gt;\setfont\reducedsl\slshape{10}{1000}{OT1}
<a id='L2049' name='L2049'></a>&lt;a id='L2035' name='L2035'&gt;&lt;/a&gt;\setfont\reducedsf\sfshape{10}{1000}{OT1}
<a id='L2050' name='L2050'></a>&lt;a id='L2036' name='L2036'&gt;&lt;/a&gt;\setfont\reducedsc\scshape{10}{1000}{OT1}
<a id='L2051' name='L2051'></a>&lt;a id='L2037' name='L2037'&gt;&lt;/a&gt;\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT}
<a id='L2052' name='L2052'></a>&lt;a id='L2038' name='L2038'&gt;&lt;/a&gt;\font\reducedi=cmmi10
<a id='L2053' name='L2053'></a>&lt;a id='L2039' name='L2039'&gt;&lt;/a&gt;\font\reducedsy=cmsy10
<a id='L2054' name='L2054'></a>&lt;a id='L2040' name='L2040'&gt;&lt;/a&gt;\ifpTeX
<a id='L2055' name='L2055'></a>&lt;a id='L2041' name='L2041'&gt;&lt;/a&gt;\font\reducedmc=min10
<a id='L2056' name='L2056'></a>&lt;a id='L2042' name='L2042'&gt;&lt;/a&gt;\font\reducedgt=goth10
<a id='L2057' name='L2057'></a>&lt;a id='L2043' name='L2043'&gt;&lt;/a&gt;\fi
<a id='L2058' name='L2058'></a>&lt;a id='L2044' name='L2044'&gt;&lt;/a&gt;\ifjTeX
<a id='L2059' name='L2059'></a>&lt;a id='L2045' name='L2045'&gt;&lt;/a&gt;\jfont\reducedmc=dm10
<a id='L2060' name='L2060'></a>&lt;a id='L2046' name='L2046'&gt;&lt;/a&gt;\jfont\reducedgt=dg10
<a id='L2061' name='L2061'></a>&lt;a id='L2047' name='L2047'&gt;&lt;/a&gt;\fi
<a id='L2062' name='L2062'></a>&lt;a id='L2048' name='L2048'&gt;&lt;/a&gt;\def\reducedecsize{1000}
<a id='L2063' name='L2063'></a>&lt;a id='L2049' name='L2049'&gt;&lt;/a&gt;
<a id='L2064' name='L2064'></a>&lt;a id='L2050' name='L2050'&gt;&lt;/a&gt;\textleading = 13.2pt % line spacing for 11pt CM
<a id='L2065' name='L2065'></a>&lt;a id='L2051' name='L2051'&gt;&lt;/a&gt;\textfonts            % reset the current fonts
<a id='L2066' name='L2066'></a>&lt;a id='L2052' name='L2052'&gt;&lt;/a&gt;\rm
<a id='L2067' name='L2067'></a>&lt;a id='L2053' name='L2053'&gt;&lt;/a&gt;} % end of 11pt text font size definitions, \definetextfontsizexi
<a id='L2068' name='L2068'></a>&lt;a id='L2054' name='L2054'&gt;&lt;/a&gt;
<a id='L2069' name='L2069'></a>&lt;a id='L2055' name='L2055'&gt;&lt;/a&gt;
<a id='L2070' name='L2070'></a>&lt;a id='L2056' name='L2056'&gt;&lt;/a&gt;% Definitions to make the main text be 10pt Computer Modern, with
<a id='L2071' name='L2071'></a>&lt;a id='L2057' name='L2057'&gt;&lt;/a&gt;% section, chapter, etc., sizes following suit.  This is for the GNU
<a id='L2072' name='L2072'></a>&lt;a id='L2058' name='L2058'&gt;&lt;/a&gt;% Press printing of the Emacs 22 manual.  Maybe other manuals in the
<a id='L2073' name='L2073'></a>&lt;a id='L2059' name='L2059'&gt;&lt;/a&gt;% future.  Used with @smallbook, which sets the leading to 12pt.
<a id='L2074' name='L2074'></a>&lt;a id='L2060' name='L2060'&gt;&lt;/a&gt;%
<a id='L2075' name='L2075'></a>&lt;a id='L2061' name='L2061'&gt;&lt;/a&gt;\def\definetextfontsizex{%
<a id='L2076' name='L2076'></a>&lt;a id='L2062' name='L2062'&gt;&lt;/a&gt;% Text fonts (10pt).
<a id='L2077' name='L2077'></a>&lt;a id='L2063' name='L2063'&gt;&lt;/a&gt;\def\textnominalsize{10pt}
<a id='L2078' name='L2078'></a>&lt;a id='L2064' name='L2064'&gt;&lt;/a&gt;\edef\mainmagstep{1000}
<a id='L2079' name='L2079'></a>&lt;a id='L2065' name='L2065'&gt;&lt;/a&gt;\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
<a id='L2080' name='L2080'></a>&lt;a id='L2066' name='L2066'&gt;&lt;/a&gt;\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
<a id='L2081' name='L2081'></a>&lt;a id='L2067' name='L2067'&gt;&lt;/a&gt;\ifpTeX
<a id='L2082' name='L2082'></a>&lt;a id='L2068' name='L2068'&gt;&lt;/a&gt;\font\textmc=min10 scaled \mainmagstep
<a id='L2083' name='L2083'></a>&lt;a id='L2069' name='L2069'&gt;&lt;/a&gt;\font\textgt=goth10 scaled \mainmagstep
<a id='L2084' name='L2084'></a>&lt;a id='L2070' name='L2070'&gt;&lt;/a&gt;\fi
<a id='L2085' name='L2085'></a>&lt;a id='L2071' name='L2071'&gt;&lt;/a&gt;\ifjTeX
<a id='L2086' name='L2086'></a>&lt;a id='L2072' name='L2072'&gt;&lt;/a&gt;\jfont\textmc=dm10 scaled \mainmagstep
<a id='L2087' name='L2087'></a>&lt;a id='L2073' name='L2073'&gt;&lt;/a&gt;\jfont\textgt=dg10 scaled \mainmagstep
<a id='L2088' name='L2088'></a>&lt;a id='L2074' name='L2074'&gt;&lt;/a&gt;\fi
<a id='L2089' name='L2089'></a>&lt;a id='L2075' name='L2075'&gt;&lt;/a&gt;\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
<a id='L2090' name='L2090'></a>&lt;a id='L2076' name='L2076'&gt;&lt;/a&gt;\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
<a id='L2091' name='L2091'></a>&lt;a id='L2077' name='L2077'&gt;&lt;/a&gt;\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
<a id='L2092' name='L2092'></a>&lt;a id='L2078' name='L2078'&gt;&lt;/a&gt;\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
<a id='L2093' name='L2093'></a>&lt;a id='L2079' name='L2079'&gt;&lt;/a&gt;\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
<a id='L2094' name='L2094'></a>&lt;a id='L2080' name='L2080'&gt;&lt;/a&gt;\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
<a id='L2095' name='L2095'></a>&lt;a id='L2081' name='L2081'&gt;&lt;/a&gt;\font\texti=cmmi10 scaled \mainmagstep
<a id='L2096' name='L2096'></a>&lt;a id='L2082' name='L2082'&gt;&lt;/a&gt;\font\textsy=cmsy10 scaled \mainmagstep
<a id='L2097' name='L2097'></a>&lt;a id='L2083' name='L2083'&gt;&lt;/a&gt;\def\textecsize{1000}
<a id='L2098' name='L2098'></a>&lt;a id='L2084' name='L2084'&gt;&lt;/a&gt;
<a id='L2099' name='L2099'></a>&lt;a id='L2085' name='L2085'&gt;&lt;/a&gt;% A few fonts for @defun names and args.
<a id='L2100' name='L2100'></a>&lt;a id='L2086' name='L2086'&gt;&lt;/a&gt;\ifpTeX
<a id='L2101' name='L2101'></a>&lt;a id='L2087' name='L2087'&gt;&lt;/a&gt;\setfont\defbf\bfshape{10}{\magstephalf}{OT1}
<a id='L2102' name='L2102'></a>&lt;a id='L2088' name='L2088'&gt;&lt;/a&gt;\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT}
<a id='L2103' name='L2103'></a>&lt;a id='L2089' name='L2089'&gt;&lt;/a&gt;\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT}
<a id='L2104' name='L2104'></a>&lt;a id='L2090' name='L2090'&gt;&lt;/a&gt;\font\defmc=min10 scaled \magstephalf
<a id='L2105' name='L2105'></a>&lt;a id='L2091' name='L2091'&gt;&lt;/a&gt;\font\defgt=goth10 scaled \magstephalf
<a id='L2106' name='L2106'></a>&lt;a id='L2092' name='L2092'&gt;&lt;/a&gt;\def\df{\let\tentt=\deftt \let\tenmin=\defmc
<a id='L2107' name='L2107'></a>&lt;a id='L2093' name='L2093'&gt;&lt;/a&gt;\let\tengt=\defgt \let\tenbf=\defbf \let\tenttsl=\defttsl \bf}
<a id='L2108' name='L2108'></a>&lt;a id='L2094' name='L2094'&gt;&lt;/a&gt;\else\ifjTeX
<a id='L2109' name='L2109'></a>&lt;a id='L2095' name='L2095'&gt;&lt;/a&gt;\setfont\defbf\bfshape{10}{\magstephalf}{OT1}
<a id='L2110' name='L2110'></a>&lt;a id='L2096' name='L2096'&gt;&lt;/a&gt;\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT}
<a id='L2111' name='L2111'></a>&lt;a id='L2097' name='L2097'&gt;&lt;/a&gt;\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT}
<a id='L2112' name='L2112'></a>&lt;a id='L2098' name='L2098'&gt;&lt;/a&gt;\jfont\defmc=dm10 scaled \magstephalf
<a id='L2113' name='L2113'></a>&lt;a id='L2099' name='L2099'&gt;&lt;/a&gt;\jfont\defgt=dg10 scaled \magstephalf
<a id='L2114' name='L2114'></a>&lt;a id='L2100' name='L2100'&gt;&lt;/a&gt;\def\df{\let\tentt=\deftt \let\tenmin=\defmc
<a id='L2115' name='L2115'></a>&lt;a id='L2101' name='L2101'&gt;&lt;/a&gt;\let\tengt=\defgt \let\tenbf=\defbf \let\tenttsl=\defttsl \bf}
<a id='L2116' name='L2116'></a>&lt;a id='L2102' name='L2102'&gt;&lt;/a&gt;\else
<a id='L2117' name='L2117'></a>&lt;a id='L2103' name='L2103'&gt;&lt;/a&gt;\setfont\defbf\bfshape{10}{\magstephalf}{OT1}
<a id='L2118' name='L2118'></a>&lt;a id='L2104' name='L2104'&gt;&lt;/a&gt;\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT}
<a id='L2119' name='L2119'></a>&lt;a id='L2105' name='L2105'&gt;&lt;/a&gt;\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT}
<a id='L2120' name='L2120'></a>&lt;a id='L2106' name='L2106'&gt;&lt;/a&gt;\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
<a id='L2121' name='L2121'></a>&lt;a id='L2107' name='L2107'&gt;&lt;/a&gt;\fi\fi
<a id='L2122' name='L2122'></a>&lt;a id='L2108' name='L2108'&gt;&lt;/a&gt;
<a id='L2123' name='L2123'></a>&lt;a id='L2109' name='L2109'&gt;&lt;/a&gt;% Fonts for indices, footnotes, small examples (9pt).
<a id='L2124' name='L2124'></a>&lt;a id='L2110' name='L2110'&gt;&lt;/a&gt;\def\smallnominalsize{9pt}
<a id='L2125' name='L2125'></a>&lt;a id='L2111' name='L2111'&gt;&lt;/a&gt;\setfont\smallrm\rmshape{9}{1000}{OT1}
<a id='L2126' name='L2126'></a>&lt;a id='L2112' name='L2112'&gt;&lt;/a&gt;\setfont\smalltt\ttshape{9}{1000}{OT1TT}
<a id='L2127' name='L2127'></a>&lt;a id='L2113' name='L2113'&gt;&lt;/a&gt;\setfont\smallbf\bfshape{10}{900}{OT1}
<a id='L2128' name='L2128'></a>&lt;a id='L2114' name='L2114'&gt;&lt;/a&gt;\setfont\smallit\itshape{9}{1000}{OT1IT}
<a id='L2129' name='L2129'></a>&lt;a id='L2115' name='L2115'&gt;&lt;/a&gt;\setfont\smallsl\slshape{9}{1000}{OT1}
<a id='L2130' name='L2130'></a>&lt;a id='L2116' name='L2116'&gt;&lt;/a&gt;\setfont\smallsf\sfshape{9}{1000}{OT1}
<a id='L2131' name='L2131'></a>&lt;a id='L2117' name='L2117'&gt;&lt;/a&gt;\setfont\smallsc\scshape{10}{900}{OT1}
<a id='L2132' name='L2132'></a>&lt;a id='L2118' name='L2118'&gt;&lt;/a&gt;\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
<a id='L2133' name='L2133'></a>&lt;a id='L2119' name='L2119'&gt;&lt;/a&gt;\font\smalli=cmmi9
<a id='L2134' name='L2134'></a>&lt;a id='L2120' name='L2120'&gt;&lt;/a&gt;\font\smallsy=cmsy9
<a id='L2135' name='L2135'></a>&lt;a id='L2121' name='L2121'&gt;&lt;/a&gt;\ifpTeX
<a id='L2136' name='L2136'></a>&lt;a id='L2122' name='L2122'&gt;&lt;/a&gt;\font\smallmc=min9
<a id='L2137' name='L2137'></a>&lt;a id='L2123' name='L2123'&gt;&lt;/a&gt;\font\smallgt=goth9
<a id='L2138' name='L2138'></a>&lt;a id='L2124' name='L2124'&gt;&lt;/a&gt;\fi
<a id='L2139' name='L2139'></a>&lt;a id='L2125' name='L2125'&gt;&lt;/a&gt;\ifjTeX
<a id='L2140' name='L2140'></a>&lt;a id='L2126' name='L2126'&gt;&lt;/a&gt;\jfont\smallmc=dm9
<a id='L2141' name='L2141'></a>&lt;a id='L2127' name='L2127'&gt;&lt;/a&gt;\jfont\smallgt=dg9
<a id='L2142' name='L2142'></a>&lt;a id='L2128' name='L2128'&gt;&lt;/a&gt;\fi
<a id='L2143' name='L2143'></a>&lt;a id='L2129' name='L2129'&gt;&lt;/a&gt;\def\smallecsize{0900}
<a id='L2144' name='L2144'></a>&lt;a id='L2130' name='L2130'&gt;&lt;/a&gt;
<a id='L2145' name='L2145'></a>&lt;a id='L2131' name='L2131'&gt;&lt;/a&gt;% Fonts for small examples (8pt).
<a id='L2146' name='L2146'></a>&lt;a id='L2132' name='L2132'&gt;&lt;/a&gt;\def\smallernominalsize{8pt}
<a id='L2147' name='L2147'></a>&lt;a id='L2133' name='L2133'&gt;&lt;/a&gt;\setfont\smallerrm\rmshape{8}{1000}{OT1}
<a id='L2148' name='L2148'></a>&lt;a id='L2134' name='L2134'&gt;&lt;/a&gt;\setfont\smallertt\ttshape{8}{1000}{OT1TT}
<a id='L2149' name='L2149'></a>&lt;a id='L2135' name='L2135'&gt;&lt;/a&gt;\setfont\smallerbf\bfshape{10}{800}{OT1}
<a id='L2150' name='L2150'></a>&lt;a id='L2136' name='L2136'&gt;&lt;/a&gt;\setfont\smallerit\itshape{8}{1000}{OT1IT}
<a id='L2151' name='L2151'></a>&lt;a id='L2137' name='L2137'&gt;&lt;/a&gt;\setfont\smallersl\slshape{8}{1000}{OT1}
<a id='L2152' name='L2152'></a>&lt;a id='L2138' name='L2138'&gt;&lt;/a&gt;\setfont\smallersf\sfshape{8}{1000}{OT1}
<a id='L2153' name='L2153'></a>&lt;a id='L2139' name='L2139'&gt;&lt;/a&gt;\setfont\smallersc\scshape{10}{800}{OT1}
<a id='L2154' name='L2154'></a>&lt;a id='L2140' name='L2140'&gt;&lt;/a&gt;\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
<a id='L2155' name='L2155'></a>&lt;a id='L2141' name='L2141'&gt;&lt;/a&gt;\font\smalleri=cmmi8
<a id='L2156' name='L2156'></a>&lt;a id='L2142' name='L2142'&gt;&lt;/a&gt;\font\smallersy=cmsy8
<a id='L2157' name='L2157'></a>&lt;a id='L2143' name='L2143'&gt;&lt;/a&gt;\ifpTeX
<a id='L2158' name='L2158'></a>&lt;a id='L2144' name='L2144'&gt;&lt;/a&gt;\font\smallermc=min8
<a id='L2159' name='L2159'></a>&lt;a id='L2145' name='L2145'&gt;&lt;/a&gt;\font\smallergt=goth8
<a id='L2160' name='L2160'></a>&lt;a id='L2146' name='L2146'&gt;&lt;/a&gt;\fi
<a id='L2161' name='L2161'></a>&lt;a id='L2147' name='L2147'&gt;&lt;/a&gt;\ifjTeX
<a id='L2162' name='L2162'></a>&lt;a id='L2148' name='L2148'&gt;&lt;/a&gt;\jfont\smallermc=dm8
<a id='L2163' name='L2163'></a>&lt;a id='L2149' name='L2149'&gt;&lt;/a&gt;\jfont\smallergt=dg8
<a id='L2164' name='L2164'></a>&lt;a id='L2150' name='L2150'&gt;&lt;/a&gt;\fi
<a id='L2165' name='L2165'></a>&lt;a id='L2151' name='L2151'&gt;&lt;/a&gt;\def\smallerecsize{0800}
<a id='L2166' name='L2166'></a>&lt;a id='L2152' name='L2152'&gt;&lt;/a&gt;
<a id='L2167' name='L2167'></a>&lt;a id='L2153' name='L2153'&gt;&lt;/a&gt;% Fonts for title page (20.4pt):
<a id='L2168' name='L2168'></a>&lt;a id='L2154' name='L2154'&gt;&lt;/a&gt;\def\titlenominalsize{20pt}
<a id='L2169' name='L2169'></a>&lt;a id='L2155' name='L2155'&gt;&lt;/a&gt;\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
<a id='L2170' name='L2170'></a>&lt;a id='L2156' name='L2156'&gt;&lt;/a&gt;\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
<a id='L2171' name='L2171'></a>&lt;a id='L2157' name='L2157'&gt;&lt;/a&gt;\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
<a id='L2172' name='L2172'></a>&lt;a id='L2158' name='L2158'&gt;&lt;/a&gt;\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
<a id='L2173' name='L2173'></a>&lt;a id='L2159' name='L2159'&gt;&lt;/a&gt;\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
<a id='L2174' name='L2174'></a>&lt;a id='L2160' name='L2160'&gt;&lt;/a&gt;\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
<a id='L2175' name='L2175'></a>&lt;a id='L2161' name='L2161'&gt;&lt;/a&gt;\ifpTeX
<a id='L2176' name='L2176'></a>&lt;a id='L2162' name='L2162'&gt;&lt;/a&gt;\font\titlemc=min10 scaled \magstep4
<a id='L2177' name='L2177'></a>&lt;a id='L2163' name='L2163'&gt;&lt;/a&gt;\font\titlegt=goth10 scaled \magstep4
<a id='L2178' name='L2178'></a>&lt;a id='L2164' name='L2164'&gt;&lt;/a&gt;\fi
<a id='L2179' name='L2179'></a>&lt;a id='L2165' name='L2165'&gt;&lt;/a&gt;\ifjTeX
<a id='L2180' name='L2180'></a>&lt;a id='L2166' name='L2166'&gt;&lt;/a&gt;\jfont\titlemc=dm10 scaled \magstep4
<a id='L2181' name='L2181'></a>&lt;a id='L2167' name='L2167'&gt;&lt;/a&gt;\jfont\titlegt=dg10 scaled \magstep4
<a id='L2182' name='L2182'></a>&lt;a id='L2168' name='L2168'&gt;&lt;/a&gt;\fi
<a id='L2183' name='L2183'></a>&lt;a id='L2169' name='L2169'&gt;&lt;/a&gt;\let\titlebf=\titlerm
<a id='L2184' name='L2184'></a>&lt;a id='L2170' name='L2170'&gt;&lt;/a&gt;\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
<a id='L2185' name='L2185'></a>&lt;a id='L2171' name='L2171'&gt;&lt;/a&gt;\font\titlei=cmmi12 scaled \magstep3
<a id='L2186' name='L2186'></a>&lt;a id='L2172' name='L2172'&gt;&lt;/a&gt;\font\titlesy=cmsy10 scaled \magstep4
<a id='L2187' name='L2187'></a>&lt;a id='L2173' name='L2173'&gt;&lt;/a&gt;\def\titleecsize{2074}
<a id='L2188' name='L2188'></a>&lt;a id='L2174' name='L2174'&gt;&lt;/a&gt;
<a id='L2189' name='L2189'></a>&lt;a id='L2175' name='L2175'&gt;&lt;/a&gt;% Chapter fonts (14.4pt).
<a id='L2190' name='L2190'></a>&lt;a id='L2176' name='L2176'&gt;&lt;/a&gt;\def\chapnominalsize{14pt}
<a id='L2191' name='L2191'></a>&lt;a id='L2177' name='L2177'&gt;&lt;/a&gt;\setfont\chaprm\rmbshape{12}{\magstep1}{OT1}
<a id='L2192' name='L2192'></a>&lt;a id='L2178' name='L2178'&gt;&lt;/a&gt;\setfont\chapit\itbshape{10}{\magstep2}{OT1IT}
<a id='L2193' name='L2193'></a>&lt;a id='L2179' name='L2179'&gt;&lt;/a&gt;\setfont\chapsl\slbshape{10}{\magstep2}{OT1}
<a id='L2194' name='L2194'></a>&lt;a id='L2180' name='L2180'&gt;&lt;/a&gt;\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT}
<a id='L2195' name='L2195'></a>&lt;a id='L2181' name='L2181'&gt;&lt;/a&gt;\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT}
<a id='L2196' name='L2196'></a>&lt;a id='L2182' name='L2182'&gt;&lt;/a&gt;\setfont\chapsf\sfbshape{12}{\magstep1}{OT1}
<a id='L2197' name='L2197'></a>&lt;a id='L2183' name='L2183'&gt;&lt;/a&gt;\ifpTeX
<a id='L2198' name='L2198'></a>&lt;a id='L2184' name='L2184'&gt;&lt;/a&gt;\font\chapmc=min10 scaled \magstep2
<a id='L2199' name='L2199'></a>&lt;a id='L2185' name='L2185'&gt;&lt;/a&gt;\font\chapgt=goth10 scaled \magstep2
<a id='L2200' name='L2200'></a>&lt;a id='L2186' name='L2186'&gt;&lt;/a&gt;\fi
<a id='L2201' name='L2201'></a>&lt;a id='L2187' name='L2187'&gt;&lt;/a&gt;\ifjTeX
<a id='L2202' name='L2202'></a>&lt;a id='L2188' name='L2188'&gt;&lt;/a&gt;\jfont\chapmc=dm10 scaled \magstep2
<a id='L2203' name='L2203'></a>&lt;a id='L2189' name='L2189'&gt;&lt;/a&gt;\jfont\chapgt=dg10 scaled \magstep2
<a id='L2204' name='L2204'></a>&lt;a id='L2190' name='L2190'&gt;&lt;/a&gt;\fi
<a id='L2205' name='L2205'></a>&lt;a id='L2191' name='L2191'&gt;&lt;/a&gt;\let\chapbf\chaprm
<a id='L2206' name='L2206'></a>&lt;a id='L2192' name='L2192'&gt;&lt;/a&gt;\setfont\chapsc\scbshape{10}{\magstep2}{OT1}
<a id='L2207' name='L2207'></a>&lt;a id='L2193' name='L2193'&gt;&lt;/a&gt;\font\chapi=cmmi12 scaled \magstep1
<a id='L2208' name='L2208'></a>&lt;a id='L2194' name='L2194'&gt;&lt;/a&gt;\font\chapsy=cmsy10 scaled \magstep2
<a id='L2209' name='L2209'></a>&lt;a id='L2195' name='L2195'&gt;&lt;/a&gt;\def\chapecsize{1440}
<a id='L2210' name='L2210'></a>&lt;a id='L2196' name='L2196'&gt;&lt;/a&gt;
<a id='L2211' name='L2211'></a>&lt;a id='L2197' name='L2197'&gt;&lt;/a&gt;% Section fonts (12pt).
<a id='L2212' name='L2212'></a>&lt;a id='L2198' name='L2198'&gt;&lt;/a&gt;\def\secnominalsize{12pt}
<a id='L2213' name='L2213'></a>&lt;a id='L2199' name='L2199'&gt;&lt;/a&gt;\setfont\secrm\rmbshape{12}{1000}{OT1}
<a id='L2214' name='L2214'></a>&lt;a id='L2200' name='L2200'&gt;&lt;/a&gt;\setfont\secit\itbshape{10}{\magstep1}{OT1IT}
<a id='L2215' name='L2215'></a>&lt;a id='L2201' name='L2201'&gt;&lt;/a&gt;\setfont\secsl\slbshape{10}{\magstep1}{OT1}
<a id='L2216' name='L2216'></a>&lt;a id='L2202' name='L2202'&gt;&lt;/a&gt;\setfont\sectt\ttbshape{12}{1000}{OT1TT}
<a id='L2217' name='L2217'></a>&lt;a id='L2203' name='L2203'&gt;&lt;/a&gt;\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT}
<a id='L2218' name='L2218'></a>&lt;a id='L2204' name='L2204'&gt;&lt;/a&gt;\setfont\secsf\sfbshape{12}{1000}{OT1}
<a id='L2219' name='L2219'></a>&lt;a id='L2205' name='L2205'&gt;&lt;/a&gt;\ifpTeX
<a id='L2220' name='L2220'></a>&lt;a id='L2206' name='L2206'&gt;&lt;/a&gt;\font\secmc=min10 scaled \magstep1
<a id='L2221' name='L2221'></a>&lt;a id='L2207' name='L2207'&gt;&lt;/a&gt;\font\secgt=goth10 scaled \magstep1
<a id='L2222' name='L2222'></a>&lt;a id='L2208' name='L2208'&gt;&lt;/a&gt;\fi
<a id='L2223' name='L2223'></a>&lt;a id='L2209' name='L2209'&gt;&lt;/a&gt;\ifjTeX
<a id='L2224' name='L2224'></a>&lt;a id='L2210' name='L2210'&gt;&lt;/a&gt;\jfont\secmc=dm10 scaled \magstep1
<a id='L2225' name='L2225'></a>&lt;a id='L2211' name='L2211'&gt;&lt;/a&gt;\jfont\secgt=dg10 scaled \magstep1
<a id='L2226' name='L2226'></a>&lt;a id='L2212' name='L2212'&gt;&lt;/a&gt;\fi
<a id='L2227' name='L2227'></a>&lt;a id='L2213' name='L2213'&gt;&lt;/a&gt;\let\secbf\secrm
<a id='L2228' name='L2228'></a>&lt;a id='L2214' name='L2214'&gt;&lt;/a&gt;\setfont\secsc\scbshape{10}{\magstep1}{OT1}
<a id='L2229' name='L2229'></a>&lt;a id='L2215' name='L2215'&gt;&lt;/a&gt;\font\seci=cmmi12
<a id='L2230' name='L2230'></a>&lt;a id='L2216' name='L2216'&gt;&lt;/a&gt;\font\secsy=cmsy10 scaled \magstep1
<a id='L2231' name='L2231'></a>&lt;a id='L2217' name='L2217'&gt;&lt;/a&gt;\def\sececsize{1200}
<a id='L2232' name='L2232'></a>&lt;a id='L2218' name='L2218'&gt;&lt;/a&gt;
<a id='L2233' name='L2233'></a>&lt;a id='L2219' name='L2219'&gt;&lt;/a&gt;% Subsection fonts (10pt).
<a id='L2234' name='L2234'></a>&lt;a id='L2220' name='L2220'&gt;&lt;/a&gt;\def\ssecnominalsize{10pt}
<a id='L2235' name='L2235'></a>&lt;a id='L2221' name='L2221'&gt;&lt;/a&gt;\setfont\ssecrm\rmbshape{10}{1000}{OT1}
<a id='L2236' name='L2236'></a>&lt;a id='L2222' name='L2222'&gt;&lt;/a&gt;\setfont\ssecit\itbshape{10}{1000}{OT1IT}
<a id='L2237' name='L2237'></a>&lt;a id='L2223' name='L2223'&gt;&lt;/a&gt;\setfont\ssecsl\slbshape{10}{1000}{OT1}
<a id='L2238' name='L2238'></a>&lt;a id='L2224' name='L2224'&gt;&lt;/a&gt;\setfont\ssectt\ttbshape{10}{1000}{OT1TT}
<a id='L2239' name='L2239'></a>&lt;a id='L2225' name='L2225'&gt;&lt;/a&gt;\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT}
<a id='L2240' name='L2240'></a>&lt;a id='L2226' name='L2226'&gt;&lt;/a&gt;\setfont\ssecsf\sfbshape{10}{1000}{OT1}
<a id='L2241' name='L2241'></a>&lt;a id='L2227' name='L2227'&gt;&lt;/a&gt;\ifpTeX
<a id='L2242' name='L2242'></a>&lt;a id='L2228' name='L2228'&gt;&lt;/a&gt;\font\ssecmc=min10
<a id='L2243' name='L2243'></a>&lt;a id='L2229' name='L2229'&gt;&lt;/a&gt;\font\ssecgt=goth10
<a id='L2244' name='L2244'></a>&lt;a id='L2230' name='L2230'&gt;&lt;/a&gt;\fi
<a id='L2245' name='L2245'></a>&lt;a id='L2231' name='L2231'&gt;&lt;/a&gt;\ifjTeX
<a id='L2246' name='L2246'></a>&lt;a id='L2232' name='L2232'&gt;&lt;/a&gt;\jfont\ssecmc=dm10
<a id='L2247' name='L2247'></a>&lt;a id='L2233' name='L2233'&gt;&lt;/a&gt;\jfont\ssecgt=dg10
<a id='L2248' name='L2248'></a>&lt;a id='L2234' name='L2234'&gt;&lt;/a&gt;\fi
<a id='L2249' name='L2249'></a>&lt;a id='L2235' name='L2235'&gt;&lt;/a&gt;\let\ssecbf\ssecrm
<a id='L2250' name='L2250'></a>&lt;a id='L2236' name='L2236'&gt;&lt;/a&gt;\setfont\ssecsc\scbshape{10}{1000}{OT1}
<a id='L2251' name='L2251'></a>&lt;a id='L2237' name='L2237'&gt;&lt;/a&gt;\font\sseci=cmmi10
<a id='L2252' name='L2252'></a>&lt;a id='L2238' name='L2238'&gt;&lt;/a&gt;\font\ssecsy=cmsy10
<a id='L2253' name='L2253'></a>&lt;a id='L2239' name='L2239'&gt;&lt;/a&gt;\def\ssececsize{1000}
<a id='L2254' name='L2254'></a>&lt;a id='L2240' name='L2240'&gt;&lt;/a&gt;
<a id='L2255' name='L2255'></a>&lt;a id='L2241' name='L2241'&gt;&lt;/a&gt;% Reduced fonts for @acro in text (9pt).
<a id='L2256' name='L2256'></a>&lt;a id='L2242' name='L2242'&gt;&lt;/a&gt;\def\reducednominalsize{9pt}
<a id='L2257' name='L2257'></a>&lt;a id='L2243' name='L2243'&gt;&lt;/a&gt;\setfont\reducedrm\rmshape{9}{1000}{OT1}
<a id='L2258' name='L2258'></a>&lt;a id='L2244' name='L2244'&gt;&lt;/a&gt;\setfont\reducedtt\ttshape{9}{1000}{OT1TT}
<a id='L2259' name='L2259'></a>&lt;a id='L2245' name='L2245'&gt;&lt;/a&gt;\setfont\reducedbf\bfshape{10}{900}{OT1}
<a id='L2260' name='L2260'></a>&lt;a id='L2246' name='L2246'&gt;&lt;/a&gt;\setfont\reducedit\itshape{9}{1000}{OT1IT}
<a id='L2261' name='L2261'></a>&lt;a id='L2247' name='L2247'&gt;&lt;/a&gt;\setfont\reducedsl\slshape{9}{1000}{OT1}
<a id='L2262' name='L2262'></a>&lt;a id='L2248' name='L2248'&gt;&lt;/a&gt;\setfont\reducedsf\sfshape{9}{1000}{OT1}
<a id='L2263' name='L2263'></a>&lt;a id='L2249' name='L2249'&gt;&lt;/a&gt;\setfont\reducedsc\scshape{10}{900}{OT1}
<a id='L2264' name='L2264'></a>&lt;a id='L2250' name='L2250'&gt;&lt;/a&gt;\setfont\reducedttsl\ttslshape{10}{900}{OT1TT}
<a id='L2265' name='L2265'></a>&lt;a id='L2251' name='L2251'&gt;&lt;/a&gt;\font\reducedi=cmmi9
<a id='L2266' name='L2266'></a>&lt;a id='L2252' name='L2252'&gt;&lt;/a&gt;\font\reducedsy=cmsy9
<a id='L2267' name='L2267'></a>&lt;a id='L2253' name='L2253'&gt;&lt;/a&gt;\ifpTeX
<a id='L2268' name='L2268'></a>&lt;a id='L2254' name='L2254'&gt;&lt;/a&gt;\font\reducedmc=min9
<a id='L2269' name='L2269'></a>&lt;a id='L2255' name='L2255'&gt;&lt;/a&gt;\font\reducedgt=goth9
<a id='L2270' name='L2270'></a>&lt;a id='L2256' name='L2256'&gt;&lt;/a&gt;\fi
<a id='L2271' name='L2271'></a>&lt;a id='L2257' name='L2257'&gt;&lt;/a&gt;\ifjTeX
<a id='L2272' name='L2272'></a>&lt;a id='L2258' name='L2258'&gt;&lt;/a&gt;\jfont\reducedmc=dm9
<a id='L2273' name='L2273'></a>&lt;a id='L2259' name='L2259'&gt;&lt;/a&gt;\jfont\reducedgt=dg9
<a id='L2274' name='L2274'></a>&lt;a id='L2260' name='L2260'&gt;&lt;/a&gt;\fi
<a id='L2275' name='L2275'></a>&lt;a id='L2261' name='L2261'&gt;&lt;/a&gt;\def\reducedecsize{0900}
<a id='L2276' name='L2276'></a>&lt;a id='L2262' name='L2262'&gt;&lt;/a&gt;
<a id='L2277' name='L2277'></a>&lt;a id='L2263' name='L2263'&gt;&lt;/a&gt;\divide\parskip by 2  % reduce space between paragraphs
<a id='L2278' name='L2278'></a>&lt;a id='L2264' name='L2264'&gt;&lt;/a&gt;\textleading = 12pt   % line spacing for 10pt CM
<a id='L2279' name='L2279'></a>&lt;a id='L2265' name='L2265'&gt;&lt;/a&gt;\textfonts            % reset the current fonts
<a id='L2280' name='L2280'></a>&lt;a id='L2266' name='L2266'&gt;&lt;/a&gt;\rm
<a id='L2281' name='L2281'></a>&lt;a id='L2267' name='L2267'&gt;&lt;/a&gt;} % end of 10pt text font size definitions, \definetextfontsizex
<a id='L2282' name='L2282'></a>&lt;a id='L2268' name='L2268'&gt;&lt;/a&gt;
<a id='L2283' name='L2283'></a>&lt;a id='L2269' name='L2269'&gt;&lt;/a&gt;
<a id='L2284' name='L2284'></a>&lt;a id='L2270' name='L2270'&gt;&lt;/a&gt;% We provide the user-level command
<a id='L2285' name='L2285'></a>&lt;a id='L2271' name='L2271'&gt;&lt;/a&gt;%   @fonttextsize 10
<a id='L2286' name='L2286'></a>&lt;a id='L2272' name='L2272'&gt;&lt;/a&gt;% (or 11) to redefine the text font size.  pt is assumed.
<a id='L2287' name='L2287'></a>&lt;a id='L2273' name='L2273'&gt;&lt;/a&gt;%
<a id='L2288' name='L2288'></a>&lt;a id='L2274' name='L2274'&gt;&lt;/a&gt;\def\xiword{11}
<a id='L2289' name='L2289'></a>&lt;a id='L2275' name='L2275'&gt;&lt;/a&gt;\def\xword{10}
<a id='L2290' name='L2290'></a>&lt;a id='L2276' name='L2276'&gt;&lt;/a&gt;\def\xwordpt{10pt}
<a id='L2291' name='L2291'></a>&lt;a id='L2277' name='L2277'&gt;&lt;/a&gt;%
<a id='L2292' name='L2292'></a>&lt;a id='L2278' name='L2278'&gt;&lt;/a&gt;\parseargdef\fonttextsize{%
<a id='L2293' name='L2293'></a>&lt;a id='L2279' name='L2279'&gt;&lt;/a&gt;  \def\textsizearg{#1}%
<a id='L2294' name='L2294'></a>&lt;a id='L2280' name='L2280'&gt;&lt;/a&gt;  %\wlog{doing @fonttextsize \textsizearg}%
<a id='L2295' name='L2295'></a>&lt;a id='L2281' name='L2281'&gt;&lt;/a&gt;  %
<a id='L2296' name='L2296'></a>&lt;a id='L2282' name='L2282'&gt;&lt;/a&gt;  % Set \globaldefs so that documents can use this inside @tex, since
<a id='L2297' name='L2297'></a>&lt;a id='L2283' name='L2283'&gt;&lt;/a&gt;  % makeinfo 4.8 does not support it, but we need it nonetheless.
<a id='L2298' name='L2298'></a>&lt;a id='L2284' name='L2284'&gt;&lt;/a&gt;  %
<a id='L2299' name='L2299'></a>&lt;a id='L2285' name='L2285'&gt;&lt;/a&gt; \begingroup \globaldefs=1
<a id='L2300' name='L2300'></a>&lt;a id='L2286' name='L2286'&gt;&lt;/a&gt;  \ifx\textsizearg\xword \definetextfontsizex
<a id='L2301' name='L2301'></a>&lt;a id='L2287' name='L2287'&gt;&lt;/a&gt;  \else \ifx\textsizearg\xiword \definetextfontsizexi
<a id='L2302' name='L2302'></a>&lt;a id='L2288' name='L2288'&gt;&lt;/a&gt;  \else
<a id='L2303' name='L2303'></a>&lt;a id='L2289' name='L2289'&gt;&lt;/a&gt;    \errhelp=\EMsimple
<a id='L2304' name='L2304'></a>&lt;a id='L2290' name='L2290'&gt;&lt;/a&gt;    \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'}
<a id='L2305' name='L2305'></a>&lt;a id='L2291' name='L2291'&gt;&lt;/a&gt;  \fi\fi
<a id='L2306' name='L2306'></a>&lt;a id='L2292' name='L2292'&gt;&lt;/a&gt; \endgroup
<a id='L2307' name='L2307'></a>&lt;a id='L2293' name='L2293'&gt;&lt;/a&gt;}
<a id='L2308' name='L2308'></a>&lt;a id='L2294' name='L2294'&gt;&lt;/a&gt;
<a id='L2309' name='L2309'></a>&lt;a id='L2295' name='L2295'&gt;&lt;/a&gt;
<a id='L2310' name='L2310'></a>&lt;a id='L2296' name='L2296'&gt;&lt;/a&gt;% In order for the font changes to affect most math symbols and letters,
<a id='L2311' name='L2311'></a>&lt;a id='L2297' name='L2297'&gt;&lt;/a&gt;% we have to define the \textfont of the standard families.  Since
<a id='L2312' name='L2312'></a>&lt;a id='L2298' name='L2298'&gt;&lt;/a&gt;% texinfo doesn't allow for producing subscripts and superscripts except
<a id='L2313' name='L2313'></a>&lt;a id='L2299' name='L2299'&gt;&lt;/a&gt;% in the main text, we don't bother to reset \scriptfont and
<a id='L2314' name='L2314'></a>&lt;a id='L2300' name='L2300'&gt;&lt;/a&gt;% \scriptscriptfont (which would also require loading a lot more fonts).
<a id='L2315' name='L2315'></a>&lt;a id='L2301' name='L2301'&gt;&lt;/a&gt;%
<a id='L2316' name='L2316'></a>&lt;a id='L2302' name='L2302'&gt;&lt;/a&gt;\ifpTeX
<a id='L2317' name='L2317'></a>&lt;a id='L2303' name='L2303'&gt;&lt;/a&gt;\def\resetmathfonts{%
<a id='L2318' name='L2318'></a>&lt;a id='L2304' name='L2304'&gt;&lt;/a&gt;  \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
<a id='L2319' name='L2319'></a>&lt;a id='L2305' name='L2305'&gt;&lt;/a&gt;  \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
<a id='L2320' name='L2320'></a>&lt;a id='L2306' name='L2306'&gt;&lt;/a&gt;  \textfont\ttfam=\tentt \textfont\sffam=\tensf
<a id='L2321' name='L2321'></a>&lt;a id='L2307' name='L2307'&gt;&lt;/a&gt;  \textfont\mcfam = \tenmin \textfont\gtfam = \tengt
<a id='L2322' name='L2322'></a>&lt;a id='L2308' name='L2308'&gt;&lt;/a&gt;}
<a id='L2323' name='L2323'></a>&lt;a id='L2309' name='L2309'&gt;&lt;/a&gt;\else
<a id='L2324' name='L2324'></a>&lt;a id='L2310' name='L2310'&gt;&lt;/a&gt;\def\resetmathfonts{%
<a id='L2325' name='L2325'></a>&lt;a id='L2311' name='L2311'&gt;&lt;/a&gt;  \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
<a id='L2326' name='L2326'></a>&lt;a id='L2312' name='L2312'&gt;&lt;/a&gt;  \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
<a id='L2327' name='L2327'></a>&lt;a id='L2313' name='L2313'&gt;&lt;/a&gt;  \textfont\ttfam=\tentt \textfont\sffam=\tensf
<a id='L2328' name='L2328'></a>&lt;a id='L2314' name='L2314'&gt;&lt;/a&gt;}
<a id='L2329' name='L2329'></a>&lt;a id='L2315' name='L2315'&gt;&lt;/a&gt;\fi
<a id='L2330' name='L2330'></a>&lt;a id='L2316' name='L2316'&gt;&lt;/a&gt;
<a id='L2331' name='L2331'></a>&lt;a id='L2317' name='L2317'&gt;&lt;/a&gt;% The font-changing commands redefine the meanings of \tenSTYLE, instead
<a id='L2332' name='L2332'></a>&lt;a id='L2318' name='L2318'&gt;&lt;/a&gt;% of just \STYLE.  We do this because \STYLE needs to also set the
<a id='L2333' name='L2333'></a>&lt;a id='L2319' name='L2319'&gt;&lt;/a&gt;% current \fam for math mode.  Our \STYLE (e.g., \rm) commands hardwire
<a id='L2334' name='L2334'></a>&lt;a id='L2320' name='L2320'&gt;&lt;/a&gt;% \tenSTYLE to set the current font.
<a id='L2335' name='L2335'></a>&lt;a id='L2321' name='L2321'&gt;&lt;/a&gt;%
<a id='L2336' name='L2336'></a>&lt;a id='L2322' name='L2322'&gt;&lt;/a&gt;% Each font-changing command also sets the names \lsize (one size lower)
<a id='L2337' name='L2337'></a>&lt;a id='L2323' name='L2323'&gt;&lt;/a&gt;% and \lllsize (three sizes lower).  These relative commands are used in
<a id='L2338' name='L2338'></a>&lt;a id='L2324' name='L2324'&gt;&lt;/a&gt;% the LaTeX logo and acronyms.
<a id='L2339' name='L2339'></a>&lt;a id='L2325' name='L2325'&gt;&lt;/a&gt;%
<a id='L2340' name='L2340'></a>&lt;a id='L2326' name='L2326'&gt;&lt;/a&gt;% This all needs generalizing, badly.
<a id='L2341' name='L2341'></a>&lt;a id='L2327' name='L2327'&gt;&lt;/a&gt;%
<a id='L2342' name='L2342'></a>&lt;a id='L2328' name='L2328'&gt;&lt;/a&gt;\ifjaTeX
<a id='L2343' name='L2343'></a>&lt;a id='L2329' name='L2329'&gt;&lt;/a&gt;\def\textfonts{%
<a id='L2344' name='L2344'></a>&lt;a id='L2330' name='L2330'&gt;&lt;/a&gt;  \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
<a id='L2345' name='L2345'></a>&lt;a id='L2331' name='L2331'&gt;&lt;/a&gt;  \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
<a id='L2346' name='L2346'></a>&lt;a id='L2332' name='L2332'&gt;&lt;/a&gt;  \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
<a id='L2347' name='L2347'></a>&lt;a id='L2333' name='L2333'&gt;&lt;/a&gt;  \let\tenttsl=\textttsl
<a id='L2348' name='L2348'></a>&lt;a id='L2334' name='L2334'&gt;&lt;/a&gt;  \let\tenmin=\textmc \let\tengt=\textgt
<a id='L2349' name='L2349'></a>&lt;a id='L2335' name='L2335'&gt;&lt;/a&gt;  \def\curfontsize{text}%
<a id='L2350' name='L2350'></a>&lt;a id='L2336' name='L2336'&gt;&lt;/a&gt;  \def\lsize{reduced}\def\lllsize{smaller}%
<a id='L2351' name='L2351'></a>&lt;a id='L2337' name='L2337'&gt;&lt;/a&gt;  \resetmathfonts \setleading{\textleading}}
<a id='L2352' name='L2352'></a>&lt;a id='L2338' name='L2338'&gt;&lt;/a&gt;\else
<a id='L2353' name='L2353'></a>&lt;a id='L2339' name='L2339'&gt;&lt;/a&gt;\def\textfonts{%
<a id='L2354' name='L2354'></a>&lt;a id='L2340' name='L2340'&gt;&lt;/a&gt;  \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
<a id='L2355' name='L2355'></a>&lt;a id='L2341' name='L2341'&gt;&lt;/a&gt;  \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
<a id='L2356' name='L2356'></a>&lt;a id='L2342' name='L2342'&gt;&lt;/a&gt;  \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
<a id='L2357' name='L2357'></a>&lt;a id='L2343' name='L2343'&gt;&lt;/a&gt;  \let\tenttsl=\textttsl
<a id='L2358' name='L2358'></a>&lt;a id='L2344' name='L2344'&gt;&lt;/a&gt;  \def\curfontsize{text}%
<a id='L2359' name='L2359'></a>&lt;a id='L2345' name='L2345'&gt;&lt;/a&gt;  \def\lsize{reduced}\def\lllsize{smaller}%
<a id='L2360' name='L2360'></a>&lt;a id='L2346' name='L2346'&gt;&lt;/a&gt;  \resetmathfonts \setleading{\textleading}}
<a id='L2361' name='L2361'></a>&lt;a id='L2347' name='L2347'&gt;&lt;/a&gt;\fi
<a id='L2362' name='L2362'></a>&lt;a id='L2348' name='L2348'&gt;&lt;/a&gt;\ifjaTeX
<a id='L2363' name='L2363'></a>&lt;a id='L2349' name='L2349'&gt;&lt;/a&gt;\def\titlefonts{%
<a id='L2364' name='L2364'></a>&lt;a id='L2350' name='L2350'&gt;&lt;/a&gt;  \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
<a id='L2365' name='L2365'></a>&lt;a id='L2351' name='L2351'&gt;&lt;/a&gt;  \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
<a id='L2366' name='L2366'></a>&lt;a id='L2352' name='L2352'&gt;&lt;/a&gt;  \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
<a id='L2367' name='L2367'></a>&lt;a id='L2353' name='L2353'&gt;&lt;/a&gt;  \let\tenttsl=\titlettsl
<a id='L2368' name='L2368'></a>&lt;a id='L2354' name='L2354'&gt;&lt;/a&gt;  \let\tenmin=\titlemc \let\tengt=\titlegt
<a id='L2369' name='L2369'></a>&lt;a id='L2355' name='L2355'&gt;&lt;/a&gt;  \def\curfontsize{title}%
<a id='L2370' name='L2370'></a>&lt;a id='L2356' name='L2356'&gt;&lt;/a&gt;  \def\lsize{chap}\def\lllsize{subsec}%
<a id='L2371' name='L2371'></a>&lt;a id='L2357' name='L2357'&gt;&lt;/a&gt;  \resetmathfonts \setleading{27pt}}
<a id='L2372' name='L2372'></a>&lt;a id='L2358' name='L2358'&gt;&lt;/a&gt;\def\titlefont#1{{\titlefonts\rmisbold #1}}
<a id='L2373' name='L2373'></a>&lt;a id='L2359' name='L2359'&gt;&lt;/a&gt;\else
<a id='L2374' name='L2374'></a>&lt;a id='L2360' name='L2360'&gt;&lt;/a&gt;\def\titlefonts{%
<a id='L2375' name='L2375'></a>&lt;a id='L2361' name='L2361'&gt;&lt;/a&gt;  \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
<a id='L2376' name='L2376'></a>&lt;a id='L2362' name='L2362'&gt;&lt;/a&gt;  \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
<a id='L2377' name='L2377'></a>&lt;a id='L2363' name='L2363'&gt;&lt;/a&gt;  \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
<a id='L2378' name='L2378'></a>&lt;a id='L2364' name='L2364'&gt;&lt;/a&gt;  \let\tenttsl=\titlettsl
<a id='L2379' name='L2379'></a>&lt;a id='L2365' name='L2365'&gt;&lt;/a&gt;  \def\curfontsize{title}%
<a id='L2380' name='L2380'></a>&lt;a id='L2366' name='L2366'&gt;&lt;/a&gt;  \def\lsize{chap}\def\lllsize{subsec}%
<a id='L2381' name='L2381'></a>&lt;a id='L2367' name='L2367'&gt;&lt;/a&gt;  \resetmathfonts \setleading{25pt}}
<a id='L2382' name='L2382'></a>&lt;a id='L2368' name='L2368'&gt;&lt;/a&gt;\def\titlefont#1{{\titlefonts\rmisbold #1}}
<a id='L2383' name='L2383'></a>&lt;a id='L2369' name='L2369'&gt;&lt;/a&gt;\fi
<a id='L2384' name='L2384'></a>&lt;a id='L2370' name='L2370'&gt;&lt;/a&gt;\ifjaTeX
<a id='L2385' name='L2385'></a>&lt;a id='L2371' name='L2371'&gt;&lt;/a&gt;\def\chapfonts{%
<a id='L2386' name='L2386'></a>&lt;a id='L2372' name='L2372'&gt;&lt;/a&gt;  \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
<a id='L2387' name='L2387'></a>&lt;a id='L2373' name='L2373'&gt;&lt;/a&gt;  \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
<a id='L2388' name='L2388'></a>&lt;a id='L2374' name='L2374'&gt;&lt;/a&gt;  \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
<a id='L2389' name='L2389'></a>&lt;a id='L2375' name='L2375'&gt;&lt;/a&gt;  \let\tenttsl=\chapttsl
<a id='L2390' name='L2390'></a>&lt;a id='L2376' name='L2376'&gt;&lt;/a&gt;  \let\tenmin=\chapmc \let\tengt=\chapgt
<a id='L2391' name='L2391'></a>&lt;a id='L2377' name='L2377'&gt;&lt;/a&gt;  \def\curfontsize{chap}%
<a id='L2392' name='L2392'></a>&lt;a id='L2378' name='L2378'&gt;&lt;/a&gt;  \def\lsize{sec}\def\lllsize{text}%
<a id='L2393' name='L2393'></a>&lt;a id='L2379' name='L2379'&gt;&lt;/a&gt;  \resetmathfonts \setleading{19pt}}
<a id='L2394' name='L2394'></a>&lt;a id='L2380' name='L2380'&gt;&lt;/a&gt;\else
<a id='L2395' name='L2395'></a>&lt;a id='L2381' name='L2381'&gt;&lt;/a&gt;\def\chapfonts{%
<a id='L2396' name='L2396'></a>&lt;a id='L2382' name='L2382'&gt;&lt;/a&gt;  \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
<a id='L2397' name='L2397'></a>&lt;a id='L2383' name='L2383'&gt;&lt;/a&gt;  \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
<a id='L2398' name='L2398'></a>&lt;a id='L2384' name='L2384'&gt;&lt;/a&gt;  \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
<a id='L2399' name='L2399'></a>&lt;a id='L2385' name='L2385'&gt;&lt;/a&gt;  \let\tenttsl=\chapttsl
<a id='L2400' name='L2400'></a>&lt;a id='L2386' name='L2386'&gt;&lt;/a&gt;  \def\curfontsize{chap}%
<a id='L2401' name='L2401'></a>&lt;a id='L2387' name='L2387'&gt;&lt;/a&gt;  \def\lsize{sec}\def\lllsize{text}%
<a id='L2402' name='L2402'></a>&lt;a id='L2388' name='L2388'&gt;&lt;/a&gt;  \resetmathfonts \setleading{19pt}}
<a id='L2403' name='L2403'></a>&lt;a id='L2389' name='L2389'&gt;&lt;/a&gt;\fi
<a id='L2404' name='L2404'></a>&lt;a id='L2390' name='L2390'&gt;&lt;/a&gt;\ifjaTeX
<a id='L2405' name='L2405'></a>&lt;a id='L2391' name='L2391'&gt;&lt;/a&gt;\def\secfonts{%
<a id='L2406' name='L2406'></a>&lt;a id='L2392' name='L2392'&gt;&lt;/a&gt;  \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
<a id='L2407' name='L2407'></a>&lt;a id='L2393' name='L2393'&gt;&lt;/a&gt;  \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
<a id='L2408' name='L2408'></a>&lt;a id='L2394' name='L2394'&gt;&lt;/a&gt;  \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
<a id='L2409' name='L2409'></a>&lt;a id='L2395' name='L2395'&gt;&lt;/a&gt;  \let\tenttsl=\secttsl
<a id='L2410' name='L2410'></a>&lt;a id='L2396' name='L2396'&gt;&lt;/a&gt;  \let\tenmin=\secmc \let\tengt=\secgt
<a id='L2411' name='L2411'></a>&lt;a id='L2397' name='L2397'&gt;&lt;/a&gt;  \def\curfontsize{sec}%
<a id='L2412' name='L2412'></a>&lt;a id='L2398' name='L2398'&gt;&lt;/a&gt;  \def\lsize{subsec}\def\lllsize{reduced}%
<a id='L2413' name='L2413'></a>&lt;a id='L2399' name='L2399'&gt;&lt;/a&gt;  \resetmathfonts \setleading{16pt}}
<a id='L2414' name='L2414'></a>&lt;a id='L2400' name='L2400'&gt;&lt;/a&gt;\else
<a id='L2415' name='L2415'></a>&lt;a id='L2401' name='L2401'&gt;&lt;/a&gt;\def\secfonts{%
<a id='L2416' name='L2416'></a>&lt;a id='L2402' name='L2402'&gt;&lt;/a&gt;  \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
<a id='L2417' name='L2417'></a>&lt;a id='L2403' name='L2403'&gt;&lt;/a&gt;  \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
<a id='L2418' name='L2418'></a>&lt;a id='L2404' name='L2404'&gt;&lt;/a&gt;  \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
<a id='L2419' name='L2419'></a>&lt;a id='L2405' name='L2405'&gt;&lt;/a&gt;  \let\tenttsl=\secttsl
<a id='L2420' name='L2420'></a>&lt;a id='L2406' name='L2406'&gt;&lt;/a&gt;  \def\curfontsize{sec}%
<a id='L2421' name='L2421'></a>&lt;a id='L2407' name='L2407'&gt;&lt;/a&gt;  \def\lsize{subsec}\def\lllsize{reduced}%
<a id='L2422' name='L2422'></a>&lt;a id='L2408' name='L2408'&gt;&lt;/a&gt;  \resetmathfonts \setleading{16pt}}
<a id='L2423' name='L2423'></a>&lt;a id='L2409' name='L2409'&gt;&lt;/a&gt;\fi
<a id='L2424' name='L2424'></a>&lt;a id='L2410' name='L2410'&gt;&lt;/a&gt;\ifjaTeX
<a id='L2425' name='L2425'></a>&lt;a id='L2411' name='L2411'&gt;&lt;/a&gt;\def\subsecfonts{%
<a id='L2426' name='L2426'></a>&lt;a id='L2412' name='L2412'&gt;&lt;/a&gt;  \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
<a id='L2427' name='L2427'></a>&lt;a id='L2413' name='L2413'&gt;&lt;/a&gt;  \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
<a id='L2428' name='L2428'></a>&lt;a id='L2414' name='L2414'&gt;&lt;/a&gt;  \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
<a id='L2429' name='L2429'></a>&lt;a id='L2415' name='L2415'&gt;&lt;/a&gt;  \let\tenttsl=\ssecttsl
<a id='L2430' name='L2430'></a>&lt;a id='L2416' name='L2416'&gt;&lt;/a&gt;  \let\tenmin=\ssecmc \let\tengt=\ssecgt
<a id='L2431' name='L2431'></a>&lt;a id='L2417' name='L2417'&gt;&lt;/a&gt;  \def\curfontsize{ssec}%
<a id='L2432' name='L2432'></a>&lt;a id='L2418' name='L2418'&gt;&lt;/a&gt;  \def\lsize{text}\def\lllsize{small}%
<a id='L2433' name='L2433'></a>&lt;a id='L2419' name='L2419'&gt;&lt;/a&gt;  \resetmathfonts \setleading{15pt}}
<a id='L2434' name='L2434'></a>&lt;a id='L2420' name='L2420'&gt;&lt;/a&gt;\else
<a id='L2435' name='L2435'></a>&lt;a id='L2421' name='L2421'&gt;&lt;/a&gt;\def\subsecfonts{%
<a id='L2436' name='L2436'></a>&lt;a id='L2422' name='L2422'&gt;&lt;/a&gt;  \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
<a id='L2437' name='L2437'></a>&lt;a id='L2423' name='L2423'&gt;&lt;/a&gt;  \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
<a id='L2438' name='L2438'></a>&lt;a id='L2424' name='L2424'&gt;&lt;/a&gt;  \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
<a id='L2439' name='L2439'></a>&lt;a id='L2425' name='L2425'&gt;&lt;/a&gt;  \let\tenttsl=\ssecttsl
<a id='L2440' name='L2440'></a>&lt;a id='L2426' name='L2426'&gt;&lt;/a&gt;  \def\curfontsize{ssec}%
<a id='L2441' name='L2441'></a>&lt;a id='L2427' name='L2427'&gt;&lt;/a&gt;  \def\lsize{text}\def\lllsize{small}%
<a id='L2442' name='L2442'></a>&lt;a id='L2428' name='L2428'&gt;&lt;/a&gt;  \resetmathfonts \setleading{15pt}}
<a id='L2443' name='L2443'></a>&lt;a id='L2429' name='L2429'&gt;&lt;/a&gt;\fi
<a id='L2444' name='L2444'></a>&lt;a id='L2430' name='L2430'&gt;&lt;/a&gt;\ifjaTeX
<a id='L2445' name='L2445'></a>&lt;a id='L2431' name='L2431'&gt;&lt;/a&gt;\let\subsubsecfonts = \subsecfonts
<a id='L2446' name='L2446'></a>&lt;a id='L2432' name='L2432'&gt;&lt;/a&gt;\def\reducedfonts{%
<a id='L2447' name='L2447'></a>&lt;a id='L2433' name='L2433'&gt;&lt;/a&gt;  \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl
<a id='L2448' name='L2448'></a>&lt;a id='L2434' name='L2434'&gt;&lt;/a&gt;  \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc
<a id='L2449' name='L2449'></a>&lt;a id='L2435' name='L2435'&gt;&lt;/a&gt;  \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy
<a id='L2450' name='L2450'></a>&lt;a id='L2436' name='L2436'&gt;&lt;/a&gt;  \let\tenttsl=\reducedttsl
<a id='L2451' name='L2451'></a>&lt;a id='L2437' name='L2437'&gt;&lt;/a&gt;  \let\tenmc=\reducedmc
<a id='L2452' name='L2452'></a>&lt;a id='L2438' name='L2438'&gt;&lt;/a&gt;  \let\tengt=\reducedgt
<a id='L2453' name='L2453'></a>&lt;a id='L2439' name='L2439'&gt;&lt;/a&gt;  \def\curfontsize{reduced}%
<a id='L2454' name='L2454'></a>&lt;a id='L2440' name='L2440'&gt;&lt;/a&gt;  \def\lsize{small}\def\lllsize{smaller}%
<a id='L2455' name='L2455'></a>&lt;a id='L2441' name='L2441'&gt;&lt;/a&gt;  \resetmathfonts \setleading{10.5pt}}
<a id='L2456' name='L2456'></a>&lt;a id='L2442' name='L2442'&gt;&lt;/a&gt;\else
<a id='L2457' name='L2457'></a>&lt;a id='L2443' name='L2443'&gt;&lt;/a&gt;\let\subsubsecfonts = \subsecfonts
<a id='L2458' name='L2458'></a>&lt;a id='L2444' name='L2444'&gt;&lt;/a&gt;\def\reducedfonts{%
<a id='L2459' name='L2459'></a>&lt;a id='L2445' name='L2445'&gt;&lt;/a&gt;  \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl
<a id='L2460' name='L2460'></a>&lt;a id='L2446' name='L2446'&gt;&lt;/a&gt;  \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc
<a id='L2461' name='L2461'></a>&lt;a id='L2447' name='L2447'&gt;&lt;/a&gt;  \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy
<a id='L2462' name='L2462'></a>&lt;a id='L2448' name='L2448'&gt;&lt;/a&gt;  \let\tenttsl=\reducedttsl
<a id='L2463' name='L2463'></a>&lt;a id='L2449' name='L2449'&gt;&lt;/a&gt;  \def\curfontsize{reduced}%
<a id='L2464' name='L2464'></a>&lt;a id='L2450' name='L2450'&gt;&lt;/a&gt;  \def\lsize{small}\def\lllsize{smaller}%
<a id='L2465' name='L2465'></a>&lt;a id='L2451' name='L2451'&gt;&lt;/a&gt;  \resetmathfonts \setleading{10.5pt}}
<a id='L2466' name='L2466'></a>&lt;a id='L2452' name='L2452'&gt;&lt;/a&gt;\fi
<a id='L2467' name='L2467'></a>&lt;a id='L2453' name='L2453'&gt;&lt;/a&gt;\ifjaTeX
<a id='L2468' name='L2468'></a>&lt;a id='L2454' name='L2454'&gt;&lt;/a&gt;\def\smallfonts{%
<a id='L2469' name='L2469'></a>&lt;a id='L2455' name='L2455'&gt;&lt;/a&gt;  \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
<a id='L2470' name='L2470'></a>&lt;a id='L2456' name='L2456'&gt;&lt;/a&gt;  \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
<a id='L2471' name='L2471'></a>&lt;a id='L2457' name='L2457'&gt;&lt;/a&gt;  \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
<a id='L2472' name='L2472'></a>&lt;a id='L2458' name='L2458'&gt;&lt;/a&gt;  \let\tenttsl=\smallttsl
<a id='L2473' name='L2473'></a>&lt;a id='L2459' name='L2459'&gt;&lt;/a&gt;  \let\tenmin=\smallmc \let\tengt=\smallgt
<a id='L2474' name='L2474'></a>&lt;a id='L2460' name='L2460'&gt;&lt;/a&gt;  \def\curfontsize{small}%
<a id='L2475' name='L2475'></a>&lt;a id='L2461' name='L2461'&gt;&lt;/a&gt;  \def\lsize{smaller}\def\lllsize{smaller}%
<a id='L2476' name='L2476'></a>&lt;a id='L2462' name='L2462'&gt;&lt;/a&gt;  \resetmathfonts \setleading{10.5pt}}
<a id='L2477' name='L2477'></a>&lt;a id='L2463' name='L2463'&gt;&lt;/a&gt;\else
<a id='L2478' name='L2478'></a>&lt;a id='L2464' name='L2464'&gt;&lt;/a&gt;\def\smallfonts{%
<a id='L2479' name='L2479'></a>&lt;a id='L2465' name='L2465'&gt;&lt;/a&gt;  \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
<a id='L2480' name='L2480'></a>&lt;a id='L2466' name='L2466'&gt;&lt;/a&gt;  \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
<a id='L2481' name='L2481'></a>&lt;a id='L2467' name='L2467'&gt;&lt;/a&gt;  \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
<a id='L2482' name='L2482'></a>&lt;a id='L2468' name='L2468'&gt;&lt;/a&gt;  \let\tenttsl=\smallttsl
<a id='L2483' name='L2483'></a>&lt;a id='L2469' name='L2469'&gt;&lt;/a&gt;  \def\curfontsize{small}%
<a id='L2484' name='L2484'></a>&lt;a id='L2470' name='L2470'&gt;&lt;/a&gt;  \def\lsize{smaller}\def\lllsize{smaller}%
<a id='L2485' name='L2485'></a>&lt;a id='L2471' name='L2471'&gt;&lt;/a&gt;  \resetmathfonts \setleading{10.5pt}}
<a id='L2486' name='L2486'></a>&lt;a id='L2472' name='L2472'&gt;&lt;/a&gt;\fi
<a id='L2487' name='L2487'></a>&lt;a id='L2473' name='L2473'&gt;&lt;/a&gt;\ifjaTeX
<a id='L2488' name='L2488'></a>&lt;a id='L2474' name='L2474'&gt;&lt;/a&gt;\def\smallerfonts{%
<a id='L2489' name='L2489'></a>&lt;a id='L2475' name='L2475'&gt;&lt;/a&gt;  \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
<a id='L2490' name='L2490'></a>&lt;a id='L2476' name='L2476'&gt;&lt;/a&gt;  \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
<a id='L2491' name='L2491'></a>&lt;a id='L2477' name='L2477'&gt;&lt;/a&gt;  \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
<a id='L2492' name='L2492'></a>&lt;a id='L2478' name='L2478'&gt;&lt;/a&gt;  \let\tenttsl=\smallerttsl
<a id='L2493' name='L2493'></a>&lt;a id='L2479' name='L2479'&gt;&lt;/a&gt;  \let\tenmin=\smallermc \let\tengt=\smallergt
<a id='L2494' name='L2494'></a>&lt;a id='L2480' name='L2480'&gt;&lt;/a&gt;  \def\curfontsize{smaller}%
<a id='L2495' name='L2495'></a>&lt;a id='L2481' name='L2481'&gt;&lt;/a&gt;  \def\lsize{smaller}\def\lllsize{smaller}%
<a id='L2496' name='L2496'></a>&lt;a id='L2482' name='L2482'&gt;&lt;/a&gt;  \resetmathfonts \setleading{9.5pt}}
<a id='L2497' name='L2497'></a>&lt;a id='L2483' name='L2483'&gt;&lt;/a&gt;\else
<a id='L2498' name='L2498'></a>&lt;a id='L2484' name='L2484'&gt;&lt;/a&gt;\def\smallerfonts{%
<a id='L2499' name='L2499'></a>&lt;a id='L2485' name='L2485'&gt;&lt;/a&gt;  \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
<a id='L2500' name='L2500'></a>&lt;a id='L2486' name='L2486'&gt;&lt;/a&gt;  \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
<a id='L2501' name='L2501'></a>&lt;a id='L2487' name='L2487'&gt;&lt;/a&gt;  \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
<a id='L2502' name='L2502'></a>&lt;a id='L2488' name='L2488'&gt;&lt;/a&gt;  \let\tenttsl=\smallerttsl
<a id='L2503' name='L2503'></a>&lt;a id='L2489' name='L2489'&gt;&lt;/a&gt;  \def\curfontsize{smaller}%
<a id='L2504' name='L2504'></a>&lt;a id='L2490' name='L2490'&gt;&lt;/a&gt;  \def\lsize{smaller}\def\lllsize{smaller}%
<a id='L2505' name='L2505'></a>&lt;a id='L2491' name='L2491'&gt;&lt;/a&gt;  \resetmathfonts \setleading{9.5pt}}
<a id='L2506' name='L2506'></a>&lt;a id='L2492' name='L2492'&gt;&lt;/a&gt;\fi
<a id='L2507' name='L2507'></a>&lt;a id='L2493' name='L2493'&gt;&lt;/a&gt;
<a id='L2508' name='L2508'></a>&lt;a id='L2494' name='L2494'&gt;&lt;/a&gt;% Fonts for short table of contents.
<a id='L2509' name='L2509'></a>&lt;a id='L2495' name='L2495'&gt;&lt;/a&gt;\setfont\shortcontrm\rmshape{12}{1000}{OT1}
<a id='L2510' name='L2510'></a>&lt;a id='L2496' name='L2496'&gt;&lt;/a&gt;\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1}  % no cmb12
<a id='L2511' name='L2511'></a>&lt;a id='L2497' name='L2497'&gt;&lt;/a&gt;\setfont\shortcontsl\slshape{12}{1000}{OT1}
<a id='L2512' name='L2512'></a>&lt;a id='L2498' name='L2498'&gt;&lt;/a&gt;\setfont\shortconttt\ttshape{12}{1000}{OT1TT}
<a id='L2513' name='L2513'></a>&lt;a id='L2499' name='L2499'&gt;&lt;/a&gt;\ifpTeX
<a id='L2514' name='L2514'></a>&lt;a id='L2500' name='L2500'&gt;&lt;/a&gt;\font\shortcontmc=min10 scaled \magstep1
<a id='L2515' name='L2515'></a>&lt;a id='L2501' name='L2501'&gt;&lt;/a&gt;\font\shortcontgt=goth10 scaled \magstep1
<a id='L2516' name='L2516'></a>&lt;a id='L2502' name='L2502'&gt;&lt;/a&gt;\fi
<a id='L2517' name='L2517'></a>&lt;a id='L2503' name='L2503'&gt;&lt;/a&gt;\ifjTeX
<a id='L2518' name='L2518'></a>&lt;a id='L2504' name='L2504'&gt;&lt;/a&gt;\jfont\shortcontmc=dm10 scaled \magstep1
<a id='L2519' name='L2519'></a>&lt;a id='L2505' name='L2505'&gt;&lt;/a&gt;\jfont\shortcontgt=dg10 scaled \magstep1
<a id='L2520' name='L2520'></a>&lt;a id='L2506' name='L2506'&gt;&lt;/a&gt;\fi
<a id='L2521' name='L2521'></a>&lt;a id='L2507' name='L2507'&gt;&lt;/a&gt;
<a id='L2522' name='L2522'></a>&lt;a id='L2508' name='L2508'&gt;&lt;/a&gt;% Define these just so they can be easily changed for other fonts.
<a id='L2523' name='L2523'></a>&lt;a id='L2509' name='L2509'&gt;&lt;/a&gt;\def\angleleft{$\langle$}
<a id='L2524' name='L2524'></a>&lt;a id='L2510' name='L2510'&gt;&lt;/a&gt;\def\angleright{$\rangle$}
<a id='L2525' name='L2525'></a>&lt;a id='L2511' name='L2511'&gt;&lt;/a&gt;
<a id='L2526' name='L2526'></a>&lt;a id='L2512' name='L2512'&gt;&lt;/a&gt;% Set the fonts to use with the @small... environments.
<a id='L2527' name='L2527'></a>&lt;a id='L2513' name='L2513'&gt;&lt;/a&gt;\let\smallexamplefonts = \smallfonts
<a id='L2528' name='L2528'></a>&lt;a id='L2514' name='L2514'&gt;&lt;/a&gt;
<a id='L2529' name='L2529'></a>&lt;a id='L2515' name='L2515'&gt;&lt;/a&gt;% About \smallexamplefonts.  If we use \smallfonts (9pt), @smallexample
<a id='L2530' name='L2530'></a>&lt;a id='L2516' name='L2516'&gt;&lt;/a&gt;% can fit this many characters:
<a id='L2531' name='L2531'></a>&lt;a id='L2517' name='L2517'&gt;&lt;/a&gt;%   8.5x11=86   smallbook=72  a4=90  a5=69
<a id='L2532' name='L2532'></a>&lt;a id='L2518' name='L2518'&gt;&lt;/a&gt;% If we use \scriptfonts (8pt), then we can fit this many characters:
<a id='L2533' name='L2533'></a>&lt;a id='L2519' name='L2519'&gt;&lt;/a&gt;%   8.5x11=90+  smallbook=80  a4=90+  a5=77
<a id='L2534' name='L2534'></a>&lt;a id='L2520' name='L2520'&gt;&lt;/a&gt;% For me, subjectively, the few extra characters that fit aren't worth
<a id='L2535' name='L2535'></a>&lt;a id='L2521' name='L2521'&gt;&lt;/a&gt;% the additional smallness of 8pt.  So I'm making the default 9pt.
<a id='L2536' name='L2536'></a>&lt;a id='L2522' name='L2522'&gt;&lt;/a&gt;%
<a id='L2537' name='L2537'></a>&lt;a id='L2523' name='L2523'&gt;&lt;/a&gt;% By the way, for comparison, here's what fits with @example (10pt):
<a id='L2538' name='L2538'></a>&lt;a id='L2524' name='L2524'&gt;&lt;/a&gt;%   8.5x11=71  smallbook=60  a4=75  a5=58
<a id='L2539' name='L2539'></a>&lt;a id='L2525' name='L2525'&gt;&lt;/a&gt;% --karl, 24jan03.
<a id='L2540' name='L2540'></a>&lt;a id='L2526' name='L2526'&gt;&lt;/a&gt;
<a id='L2541' name='L2541'></a>&lt;a id='L2527' name='L2527'&gt;&lt;/a&gt;% Set up the default fonts, so we can use them for creating boxes.
<a id='L2542' name='L2542'></a>&lt;a id='L2528' name='L2528'&gt;&lt;/a&gt;%
<a id='L2543' name='L2543'></a>&lt;a id='L2529' name='L2529'&gt;&lt;/a&gt;\definetextfontsizexi
<a id='L2544' name='L2544'></a>&lt;a id='L2530' name='L2530'&gt;&lt;/a&gt;
<a id='L2545' name='L2545'></a>&lt;a id='L2531' name='L2531'&gt;&lt;/a&gt;
<a id='L2546' name='L2546'></a>&lt;a id='L2532' name='L2532'&gt;&lt;/a&gt;\message{markup,}
<a id='L2547' name='L2547'></a>&lt;a id='L2533' name='L2533'&gt;&lt;/a&gt;
<a id='L2548' name='L2548'></a>&lt;a id='L2534' name='L2534'&gt;&lt;/a&gt;% Check if we are currently using a typewriter font.  Since all the
<a id='L2549' name='L2549'></a>&lt;a id='L2535' name='L2535'&gt;&lt;/a&gt;% Computer Modern typewriter fonts have zero interword stretch (and
<a id='L2550' name='L2550'></a>&lt;a id='L2536' name='L2536'&gt;&lt;/a&gt;% shrink), and it is reasonable to expect all typewriter fonts to have
<a id='L2551' name='L2551'></a>&lt;a id='L2537' name='L2537'&gt;&lt;/a&gt;% this property, we can check that font parameter.
<a id='L2552' name='L2552'></a>&lt;a id='L2538' name='L2538'&gt;&lt;/a&gt;%
<a id='L2553' name='L2553'></a>&lt;a id='L2539' name='L2539'&gt;&lt;/a&gt;\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
<a id='L2554' name='L2554'></a>&lt;a id='L2540' name='L2540'&gt;&lt;/a&gt;
<a id='L2555' name='L2555'></a>&lt;a id='L2541' name='L2541'&gt;&lt;/a&gt;% Markup style infrastructure.  \defmarkupstylesetup\INITMACRO will
<a id='L2556' name='L2556'></a>&lt;a id='L2542' name='L2542'&gt;&lt;/a&gt;% define and register \INITMACRO to be called on markup style changes.
<a id='L2557' name='L2557'></a>&lt;a id='L2543' name='L2543'&gt;&lt;/a&gt;% \INITMACRO can check \currentmarkupstyle for the innermost
<a id='L2558' name='L2558'></a>&lt;a id='L2544' name='L2544'&gt;&lt;/a&gt;% style and the set of \ifmarkupSTYLE switches for all styles
<a id='L2559' name='L2559'></a>&lt;a id='L2545' name='L2545'&gt;&lt;/a&gt;% currently in effect.
<a id='L2560' name='L2560'></a>&lt;a id='L2546' name='L2546'&gt;&lt;/a&gt;\newif\ifmarkupvar
<a id='L2561' name='L2561'></a>&lt;a id='L2547' name='L2547'&gt;&lt;/a&gt;\newif\ifmarkupsamp
<a id='L2562' name='L2562'></a>&lt;a id='L2548' name='L2548'&gt;&lt;/a&gt;\newif\ifmarkupkey
<a id='L2563' name='L2563'></a>&lt;a id='L2549' name='L2549'&gt;&lt;/a&gt;%\newif\ifmarkupfile % @file == @samp.
<a id='L2564' name='L2564'></a>&lt;a id='L2550' name='L2550'&gt;&lt;/a&gt;%\newif\ifmarkupoption % @option == @samp.
<a id='L2565' name='L2565'></a>&lt;a id='L2551' name='L2551'&gt;&lt;/a&gt;\newif\ifmarkupcode
<a id='L2566' name='L2566'></a>&lt;a id='L2552' name='L2552'&gt;&lt;/a&gt;\newif\ifmarkupkbd
<a id='L2567' name='L2567'></a>&lt;a id='L2553' name='L2553'&gt;&lt;/a&gt;%\newif\ifmarkupenv % @env == @code.
<a id='L2568' name='L2568'></a>&lt;a id='L2554' name='L2554'&gt;&lt;/a&gt;%\newif\ifmarkupcommand % @command == @code.
<a id='L2569' name='L2569'></a>&lt;a id='L2555' name='L2555'&gt;&lt;/a&gt;\newif\ifmarkuptex % @tex (and part of @math, for now).
<a id='L2570' name='L2570'></a>&lt;a id='L2556' name='L2556'&gt;&lt;/a&gt;\newif\ifmarkupexample
<a id='L2571' name='L2571'></a>&lt;a id='L2557' name='L2557'&gt;&lt;/a&gt;\newif\ifmarkupverb
<a id='L2572' name='L2572'></a>&lt;a id='L2558' name='L2558'&gt;&lt;/a&gt;\newif\ifmarkupverbatim
<a id='L2573' name='L2573'></a>&lt;a id='L2559' name='L2559'&gt;&lt;/a&gt;
<a id='L2574' name='L2574'></a>&lt;a id='L2560' name='L2560'&gt;&lt;/a&gt;\let\currentmarkupstyle\empty
<a id='L2575' name='L2575'></a>&lt;a id='L2561' name='L2561'&gt;&lt;/a&gt;
<a id='L2576' name='L2576'></a>&lt;a id='L2562' name='L2562'&gt;&lt;/a&gt;\def\setupmarkupstyle#1{%
<a id='L2577' name='L2577'></a>&lt;a id='L2563' name='L2563'&gt;&lt;/a&gt;  \csname markup#1true\endcsname
<a id='L2578' name='L2578'></a>&lt;a id='L2564' name='L2564'&gt;&lt;/a&gt;  \def\currentmarkupstyle{#1}%
<a id='L2579' name='L2579'></a>&lt;a id='L2565' name='L2565'&gt;&lt;/a&gt;  \markupstylesetup
<a id='L2580' name='L2580'></a>&lt;a id='L2566' name='L2566'&gt;&lt;/a&gt;}
<a id='L2581' name='L2581'></a>&lt;a id='L2567' name='L2567'&gt;&lt;/a&gt;
<a id='L2582' name='L2582'></a>&lt;a id='L2568' name='L2568'&gt;&lt;/a&gt;\let\markupstylesetup\empty
<a id='L2583' name='L2583'></a>&lt;a id='L2569' name='L2569'&gt;&lt;/a&gt;
<a id='L2584' name='L2584'></a>&lt;a id='L2570' name='L2570'&gt;&lt;/a&gt;\def\defmarkupstylesetup#1{%
<a id='L2585' name='L2585'></a>&lt;a id='L2571' name='L2571'&gt;&lt;/a&gt;  \expandafter\def\expandafter\markupstylesetup
<a id='L2586' name='L2586'></a>&lt;a id='L2572' name='L2572'&gt;&lt;/a&gt;    \expandafter{\markupstylesetup #1}%
<a id='L2587' name='L2587'></a>&lt;a id='L2573' name='L2573'&gt;&lt;/a&gt;  \def#1%
<a id='L2588' name='L2588'></a>&lt;a id='L2574' name='L2574'&gt;&lt;/a&gt;}
<a id='L2589' name='L2589'></a>&lt;a id='L2575' name='L2575'&gt;&lt;/a&gt;
<a id='L2590' name='L2590'></a>&lt;a id='L2576' name='L2576'&gt;&lt;/a&gt;% Markup style setup for left and right quotes.
<a id='L2591' name='L2591'></a>&lt;a id='L2577' name='L2577'&gt;&lt;/a&gt;\defmarkupstylesetup\markupsetuplq{%
<a id='L2592' name='L2592'></a>&lt;a id='L2578' name='L2578'&gt;&lt;/a&gt;  \expandafter\let\expandafter \temp
<a id='L2593' name='L2593'></a>&lt;a id='L2579' name='L2579'&gt;&lt;/a&gt;    \csname markupsetuplq\currentmarkupstyle\endcsname
<a id='L2594' name='L2594'></a>&lt;a id='L2580' name='L2580'&gt;&lt;/a&gt;  \ifx\temp\relax \markupsetuplqdefault \else \temp \fi
<a id='L2595' name='L2595'></a>&lt;a id='L2581' name='L2581'&gt;&lt;/a&gt;}
<a id='L2596' name='L2596'></a>&lt;a id='L2582' name='L2582'&gt;&lt;/a&gt;
<a id='L2597' name='L2597'></a>&lt;a id='L2583' name='L2583'&gt;&lt;/a&gt;\defmarkupstylesetup\markupsetuprq{%
<a id='L2598' name='L2598'></a>&lt;a id='L2584' name='L2584'&gt;&lt;/a&gt;  \expandafter\let\expandafter \temp
<a id='L2599' name='L2599'></a>&lt;a id='L2585' name='L2585'&gt;&lt;/a&gt;    \csname markupsetuprq\currentmarkupstyle\endcsname
<a id='L2600' name='L2600'></a>&lt;a id='L2586' name='L2586'&gt;&lt;/a&gt;  \ifx\temp\relax \markupsetuprqdefault \else \temp \fi
<a id='L2601' name='L2601'></a>&lt;a id='L2587' name='L2587'&gt;&lt;/a&gt;}
<a id='L2602' name='L2602'></a>&lt;a id='L2588' name='L2588'&gt;&lt;/a&gt;
<a id='L2603' name='L2603'></a>&lt;a id='L2589' name='L2589'&gt;&lt;/a&gt;{
<a id='L2604' name='L2604'></a>&lt;a id='L2590' name='L2590'&gt;&lt;/a&gt;\catcode`\'=\active
<a id='L2605' name='L2605'></a>&lt;a id='L2591' name='L2591'&gt;&lt;/a&gt;\catcode`\`=\active
<a id='L2606' name='L2606'></a>&lt;a id='L2592' name='L2592'&gt;&lt;/a&gt;
<a id='L2607' name='L2607'></a>&lt;a id='L2593' name='L2593'&gt;&lt;/a&gt;\gdef\markupsetuplqdefault{\let`\lq}
<a id='L2608' name='L2608'></a>&lt;a id='L2594' name='L2594'&gt;&lt;/a&gt;\gdef\markupsetuprqdefault{\let'\rq}
<a id='L2609' name='L2609'></a>&lt;a id='L2595' name='L2595'&gt;&lt;/a&gt;
<a id='L2610' name='L2610'></a>&lt;a id='L2596' name='L2596'&gt;&lt;/a&gt;\gdef\markupsetcodequoteleft{\let`\codequoteleft}
<a id='L2611' name='L2611'></a>&lt;a id='L2597' name='L2597'&gt;&lt;/a&gt;\gdef\markupsetcodequoteright{\let'\codequoteright}
<a id='L2612' name='L2612'></a>&lt;a id='L2598' name='L2598'&gt;&lt;/a&gt;}
<a id='L2613' name='L2613'></a>&lt;a id='L2599' name='L2599'&gt;&lt;/a&gt;
<a id='L2614' name='L2614'></a>&lt;a id='L2600' name='L2600'&gt;&lt;/a&gt;\let\markupsetuplqcode \markupsetcodequoteleft
<a id='L2615' name='L2615'></a>&lt;a id='L2601' name='L2601'&gt;&lt;/a&gt;\let\markupsetuprqcode \markupsetcodequoteright
<a id='L2616' name='L2616'></a>&lt;a id='L2602' name='L2602'&gt;&lt;/a&gt;%
<a id='L2617' name='L2617'></a>&lt;a id='L2603' name='L2603'&gt;&lt;/a&gt;\let\markupsetuplqexample \markupsetcodequoteleft
<a id='L2618' name='L2618'></a>&lt;a id='L2604' name='L2604'&gt;&lt;/a&gt;\let\markupsetuprqexample \markupsetcodequoteright
<a id='L2619' name='L2619'></a>&lt;a id='L2605' name='L2605'&gt;&lt;/a&gt;%
<a id='L2620' name='L2620'></a>&lt;a id='L2606' name='L2606'&gt;&lt;/a&gt;\let\markupsetuplqkbd     \markupsetcodequoteleft
<a id='L2621' name='L2621'></a>&lt;a id='L2607' name='L2607'&gt;&lt;/a&gt;\let\markupsetuprqkbd     \markupsetcodequoteright
<a id='L2622' name='L2622'></a>&lt;a id='L2608' name='L2608'&gt;&lt;/a&gt;%
<a id='L2623' name='L2623'></a>&lt;a id='L2609' name='L2609'&gt;&lt;/a&gt;\let\markupsetuplqsamp \markupsetcodequoteleft
<a id='L2624' name='L2624'></a>&lt;a id='L2610' name='L2610'&gt;&lt;/a&gt;\let\markupsetuprqsamp \markupsetcodequoteright
<a id='L2625' name='L2625'></a>&lt;a id='L2611' name='L2611'&gt;&lt;/a&gt;%
<a id='L2626' name='L2626'></a>&lt;a id='L2612' name='L2612'&gt;&lt;/a&gt;\let\markupsetuplqverb \markupsetcodequoteleft
<a id='L2627' name='L2627'></a>&lt;a id='L2613' name='L2613'&gt;&lt;/a&gt;\let\markupsetuprqverb \markupsetcodequoteright
<a id='L2628' name='L2628'></a>&lt;a id='L2614' name='L2614'&gt;&lt;/a&gt;%
<a id='L2629' name='L2629'></a>&lt;a id='L2615' name='L2615'&gt;&lt;/a&gt;\let\markupsetuplqverbatim \markupsetcodequoteleft
<a id='L2630' name='L2630'></a>&lt;a id='L2616' name='L2616'&gt;&lt;/a&gt;\let\markupsetuprqverbatim \markupsetcodequoteright
<a id='L2631' name='L2631'></a>&lt;a id='L2617' name='L2617'&gt;&lt;/a&gt;
<a id='L2632' name='L2632'></a>&lt;a id='L2618' name='L2618'&gt;&lt;/a&gt;% Allow an option to not use regular directed right quote/apostrophe
<a id='L2633' name='L2633'></a>&lt;a id='L2619' name='L2619'&gt;&lt;/a&gt;% (char 0x27), but instead the undirected quote from cmtt (char 0x0d).
<a id='L2634' name='L2634'></a>&lt;a id='L2620' name='L2620'&gt;&lt;/a&gt;% The undirected quote is ugly, so don't make it the default, but it
<a id='L2635' name='L2635'></a>&lt;a id='L2621' name='L2621'&gt;&lt;/a&gt;% works for pasting with more pdf viewers (at least evince), the
<a id='L2636' name='L2636'></a>&lt;a id='L2622' name='L2622'&gt;&lt;/a&gt;% lilypond developers report.  xpdf does work with the regular 0x27.
<a id='L2637' name='L2637'></a>&lt;a id='L2623' name='L2623'&gt;&lt;/a&gt;%
<a id='L2638' name='L2638'></a>&lt;a id='L2624' name='L2624'&gt;&lt;/a&gt;\def\codequoteright{%
<a id='L2639' name='L2639'></a>&lt;a id='L2625' name='L2625'&gt;&lt;/a&gt;  \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
<a id='L2640' name='L2640'></a>&lt;a id='L2626' name='L2626'&gt;&lt;/a&gt;    \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
<a id='L2641' name='L2641'></a>&lt;a id='L2627' name='L2627'&gt;&lt;/a&gt;      '%
<a id='L2642' name='L2642'></a>&lt;a id='L2628' name='L2628'&gt;&lt;/a&gt;    \else \char'15 \fi
<a id='L2643' name='L2643'></a>&lt;a id='L2629' name='L2629'&gt;&lt;/a&gt;  \else \char'15 \fi
<a id='L2644' name='L2644'></a>&lt;a id='L2630' name='L2630'&gt;&lt;/a&gt;}
<a id='L2645' name='L2645'></a>&lt;a id='L2631' name='L2631'&gt;&lt;/a&gt;%
<a id='L2646' name='L2646'></a>&lt;a id='L2632' name='L2632'&gt;&lt;/a&gt;% and a similar option for the left quote char vs. a grave accent.
<a id='L2647' name='L2647'></a>&lt;a id='L2633' name='L2633'&gt;&lt;/a&gt;% Modern fonts display ASCII 0x60 as a grave accent, so some people like
<a id='L2648' name='L2648'></a>&lt;a id='L2634' name='L2634'&gt;&lt;/a&gt;% the code environments to do likewise.
<a id='L2649' name='L2649'></a>&lt;a id='L2635' name='L2635'&gt;&lt;/a&gt;%
<a id='L2650' name='L2650'></a>&lt;a id='L2636' name='L2636'&gt;&lt;/a&gt;\def\codequoteleft{%
<a id='L2651' name='L2651'></a>&lt;a id='L2637' name='L2637'&gt;&lt;/a&gt;  \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax
<a id='L2652' name='L2652'></a>&lt;a id='L2638' name='L2638'&gt;&lt;/a&gt;    \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
<a id='L2653' name='L2653'></a>&lt;a id='L2639' name='L2639'&gt;&lt;/a&gt;      % [Knuth] pp. 380,381,391
<a id='L2654' name='L2654'></a>&lt;a id='L2640' name='L2640'&gt;&lt;/a&gt;      % \relax disables Spanish ligatures ?` and !` of \tt font.
<a id='L2655' name='L2655'></a>&lt;a id='L2641' name='L2641'&gt;&lt;/a&gt;      \relax`%
<a id='L2656' name='L2656'></a>&lt;a id='L2642' name='L2642'&gt;&lt;/a&gt;    \else \char'22 \fi
<a id='L2657' name='L2657'></a>&lt;a id='L2643' name='L2643'&gt;&lt;/a&gt;  \else \char'22 \fi
<a id='L2658' name='L2658'></a>&lt;a id='L2644' name='L2644'&gt;&lt;/a&gt;}
<a id='L2659' name='L2659'></a>&lt;a id='L2645' name='L2645'&gt;&lt;/a&gt;
<a id='L2660' name='L2660'></a>&lt;a id='L2646' name='L2646'&gt;&lt;/a&gt;% Commands to set the quote options.
<a id='L2661' name='L2661'></a>&lt;a id='L2647' name='L2647'&gt;&lt;/a&gt;% 
<a id='L2662' name='L2662'></a>&lt;a id='L2648' name='L2648'&gt;&lt;/a&gt;\parseargdef\codequoteundirected{%
<a id='L2663' name='L2663'></a>&lt;a id='L2649' name='L2649'&gt;&lt;/a&gt;  \def\temp{#1}%
<a id='L2664' name='L2664'></a>&lt;a id='L2650' name='L2650'&gt;&lt;/a&gt;  \ifx\temp\onword
<a id='L2665' name='L2665'></a>&lt;a id='L2651' name='L2651'&gt;&lt;/a&gt;    \expandafter\let\csname SETtxicodequoteundirected\endcsname
<a id='L2666' name='L2666'></a>&lt;a id='L2652' name='L2652'&gt;&lt;/a&gt;      = t%
<a id='L2667' name='L2667'></a>&lt;a id='L2653' name='L2653'&gt;&lt;/a&gt;  \else\ifx\temp\offword
<a id='L2668' name='L2668'></a>&lt;a id='L2654' name='L2654'&gt;&lt;/a&gt;    \expandafter\let\csname SETtxicodequoteundirected\endcsname
<a id='L2669' name='L2669'></a>&lt;a id='L2655' name='L2655'&gt;&lt;/a&gt;      = \relax
<a id='L2670' name='L2670'></a>&lt;a id='L2656' name='L2656'&gt;&lt;/a&gt;  \else
<a id='L2671' name='L2671'></a>&lt;a id='L2657' name='L2657'&gt;&lt;/a&gt;    \errhelp = \EMsimple
<a id='L2672' name='L2672'></a>&lt;a id='L2658' name='L2658'&gt;&lt;/a&gt;    \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}%
<a id='L2673' name='L2673'></a>&lt;a id='L2659' name='L2659'&gt;&lt;/a&gt;  \fi\fi
<a id='L2674' name='L2674'></a>&lt;a id='L2660' name='L2660'&gt;&lt;/a&gt;}
<a id='L2675' name='L2675'></a>&lt;a id='L2661' name='L2661'&gt;&lt;/a&gt;%
<a id='L2676' name='L2676'></a>&lt;a id='L2662' name='L2662'&gt;&lt;/a&gt;\parseargdef\codequotebacktick{%
<a id='L2677' name='L2677'></a>&lt;a id='L2663' name='L2663'&gt;&lt;/a&gt;  \def\temp{#1}%
<a id='L2678' name='L2678'></a>&lt;a id='L2664' name='L2664'&gt;&lt;/a&gt;  \ifx\temp\onword
<a id='L2679' name='L2679'></a>&lt;a id='L2665' name='L2665'&gt;&lt;/a&gt;    \expandafter\let\csname SETtxicodequotebacktick\endcsname
<a id='L2680' name='L2680'></a>&lt;a id='L2666' name='L2666'&gt;&lt;/a&gt;      = t%
<a id='L2681' name='L2681'></a>&lt;a id='L2667' name='L2667'&gt;&lt;/a&gt;  \else\ifx\temp\offword
<a id='L2682' name='L2682'></a>&lt;a id='L2668' name='L2668'&gt;&lt;/a&gt;    \expandafter\let\csname SETtxicodequotebacktick\endcsname
<a id='L2683' name='L2683'></a>&lt;a id='L2669' name='L2669'&gt;&lt;/a&gt;      = \relax
<a id='L2684' name='L2684'></a>&lt;a id='L2670' name='L2670'&gt;&lt;/a&gt;  \else
<a id='L2685' name='L2685'></a>&lt;a id='L2671' name='L2671'&gt;&lt;/a&gt;    \errhelp = \EMsimple
<a id='L2686' name='L2686'></a>&lt;a id='L2672' name='L2672'&gt;&lt;/a&gt;    \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}%
<a id='L2687' name='L2687'></a>&lt;a id='L2673' name='L2673'&gt;&lt;/a&gt;  \fi\fi
<a id='L2688' name='L2688'></a>&lt;a id='L2674' name='L2674'&gt;&lt;/a&gt;}
<a id='L2689' name='L2689'></a>&lt;a id='L2675' name='L2675'&gt;&lt;/a&gt;
<a id='L2690' name='L2690'></a>&lt;a id='L2676' name='L2676'&gt;&lt;/a&gt;% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font.
<a id='L2691' name='L2691'></a>&lt;a id='L2677' name='L2677'&gt;&lt;/a&gt;\def\noligaturesquoteleft{\relax\lq}
<a id='L2692' name='L2692'></a>&lt;a id='L2678' name='L2678'&gt;&lt;/a&gt;
<a id='L2693' name='L2693'></a>&lt;a id='L2679' name='L2679'&gt;&lt;/a&gt;% Count depth in font-changes, for error checks
<a id='L2694' name='L2694'></a>&lt;a id='L2680' name='L2680'&gt;&lt;/a&gt;\newcount\fontdepth \fontdepth=0
<a id='L2695' name='L2695'></a>&lt;a id='L2681' name='L2681'&gt;&lt;/a&gt;
<a id='L2696' name='L2696'></a>&lt;a id='L2682' name='L2682'&gt;&lt;/a&gt;% Font commands.
<a id='L2697' name='L2697'></a>&lt;a id='L2683' name='L2683'&gt;&lt;/a&gt;
<a id='L2698' name='L2698'></a>&lt;a id='L2684' name='L2684'&gt;&lt;/a&gt;% #1 is the font command (\sl or \it), #2 is the text to slant.
<a id='L2699' name='L2699'></a>&lt;a id='L2685' name='L2685'&gt;&lt;/a&gt;% If we are in a monospaced environment, however, 1) always use \ttsl,
<a id='L2700' name='L2700'></a>&lt;a id='L2686' name='L2686'&gt;&lt;/a&gt;% and 2) do not add an italic correction.
<a id='L2701' name='L2701'></a>&lt;a id='L2687' name='L2687'&gt;&lt;/a&gt;\def\dosmartslant#1#2{%
<a id='L2702' name='L2702'></a>&lt;a id='L2688' name='L2688'&gt;&lt;/a&gt;  \ifusingtt 
<a id='L2703' name='L2703'></a>&lt;a id='L2689' name='L2689'&gt;&lt;/a&gt;    {{\ttsl #2}\let\next=\relax}%
<a id='L2704' name='L2704'></a>&lt;a id='L2690' name='L2690'&gt;&lt;/a&gt;    {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}%
<a id='L2705' name='L2705'></a>&lt;a id='L2691' name='L2691'&gt;&lt;/a&gt;  \next
<a id='L2706' name='L2706'></a>&lt;a id='L2692' name='L2692'&gt;&lt;/a&gt;}
<a id='L2707' name='L2707'></a>&lt;a id='L2693' name='L2693'&gt;&lt;/a&gt;\def\smartslanted{\dosmartslant\sl}
<a id='L2708' name='L2708'></a>&lt;a id='L2694' name='L2694'&gt;&lt;/a&gt;\def\smartitalic{\dosmartslant\it}
<a id='L2709' name='L2709'></a>&lt;a id='L2695' name='L2695'&gt;&lt;/a&gt;
<a id='L2710' name='L2710'></a>&lt;a id='L2696' name='L2696'&gt;&lt;/a&gt;% Output an italic correction unless \next (presumed to be the following
<a id='L2711' name='L2711'></a>&lt;a id='L2697' name='L2697'&gt;&lt;/a&gt;% character) is such as not to need one.
<a id='L2712' name='L2712'></a>&lt;a id='L2698' name='L2698'&gt;&lt;/a&gt;\def\smartitaliccorrection{%
<a id='L2713' name='L2713'></a>&lt;a id='L2699' name='L2699'&gt;&lt;/a&gt;  \ifx\next,%
<a id='L2714' name='L2714'></a>&lt;a id='L2700' name='L2700'&gt;&lt;/a&gt;  \else\ifx\next-%
<a id='L2715' name='L2715'></a>&lt;a id='L2701' name='L2701'&gt;&lt;/a&gt;  \else\ifx\next.%
<a id='L2716' name='L2716'></a>&lt;a id='L2702' name='L2702'&gt;&lt;/a&gt;  \else\ptexslash
<a id='L2717' name='L2717'></a>&lt;a id='L2703' name='L2703'&gt;&lt;/a&gt;  \fi\fi\fi
<a id='L2718' name='L2718'></a>&lt;a id='L2704' name='L2704'&gt;&lt;/a&gt;  \aftersmartic
<a id='L2719' name='L2719'></a>&lt;a id='L2705' name='L2705'&gt;&lt;/a&gt;}
<a id='L2720' name='L2720'></a>&lt;a id='L2706' name='L2706'&gt;&lt;/a&gt;
<a id='L2721' name='L2721'></a>&lt;a id='L2707' name='L2707'&gt;&lt;/a&gt;% Unconditional use \ttsl, and no ic.  @var is set to this for defuns.
<a id='L2722' name='L2722'></a>&lt;a id='L2708' name='L2708'&gt;&lt;/a&gt;\def\ttslanted#1{{\ttsl #1}}
<a id='L2723' name='L2723'></a>&lt;a id='L2709' name='L2709'&gt;&lt;/a&gt;
<a id='L2724' name='L2724'></a>&lt;a id='L2710' name='L2710'&gt;&lt;/a&gt;% @cite is like \smartslanted except unconditionally use \sl.  We never want
<a id='L2725' name='L2725'></a>&lt;a id='L2711' name='L2711'&gt;&lt;/a&gt;% ttsl for book titles, do we?
<a id='L2726' name='L2726'></a>&lt;a id='L2712' name='L2712'&gt;&lt;/a&gt;\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection}
<a id='L2727' name='L2727'></a>&lt;a id='L2713' name='L2713'&gt;&lt;/a&gt;
<a id='L2728' name='L2728'></a>&lt;a id='L2714' name='L2714'&gt;&lt;/a&gt;\def\aftersmartic{}
<a id='L2729' name='L2729'></a>&lt;a id='L2715' name='L2715'&gt;&lt;/a&gt;\def\var#1{%
<a id='L2730' name='L2730'></a>&lt;a id='L2716' name='L2716'&gt;&lt;/a&gt;  \let\saveaftersmartic = \aftersmartic
<a id='L2731' name='L2731'></a>&lt;a id='L2717' name='L2717'&gt;&lt;/a&gt;  \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}%
<a id='L2732' name='L2732'></a>&lt;a id='L2718' name='L2718'&gt;&lt;/a&gt;  \smartslanted{#1}%
<a id='L2733' name='L2733'></a>&lt;a id='L2719' name='L2719'&gt;&lt;/a&gt;}
<a id='L2734' name='L2734'></a>&lt;a id='L2720' name='L2720'&gt;&lt;/a&gt;
<a id='L2735' name='L2735'></a>&lt;a id='L2721' name='L2721'&gt;&lt;/a&gt;\let\i=\smartitalic
<a id='L2736' name='L2736'></a>&lt;a id='L2722' name='L2722'&gt;&lt;/a&gt;\let\slanted=\smartslanted
<a id='L2737' name='L2737'></a>&lt;a id='L2723' name='L2723'&gt;&lt;/a&gt;\let\dfn=\smartslanted
<a id='L2738' name='L2738'></a>&lt;a id='L2724' name='L2724'&gt;&lt;/a&gt;\let\emph=\smartitalic
<a id='L2739' name='L2739'></a>&lt;a id='L2725' name='L2725'&gt;&lt;/a&gt;
<a id='L2740' name='L2740'></a>&lt;a id='L2726' name='L2726'&gt;&lt;/a&gt;% Explicit font changes: @r, @sc, undocumented @ii.
<a id='L2741' name='L2741'></a>&lt;a id='L2727' name='L2727'&gt;&lt;/a&gt;\def\r#1{{\rm #1}}              % roman font
<a id='L2742' name='L2742'></a>&lt;a id='L2728' name='L2728'&gt;&lt;/a&gt;\def\sc#1{{\smallcaps#1}}       % smallcaps font
<a id='L2743' name='L2743'></a>&lt;a id='L2729' name='L2729'&gt;&lt;/a&gt;\def\ii#1{{\it #1}}             % italic font
<a id='L2744' name='L2744'></a>&lt;a id='L2730' name='L2730'&gt;&lt;/a&gt;
<a id='L2745' name='L2745'></a>&lt;a id='L2731' name='L2731'&gt;&lt;/a&gt;% @b, explicit bold.  Also @strong.
<a id='L2746' name='L2746'></a>&lt;a id='L2732' name='L2732'&gt;&lt;/a&gt;\def\b#1{{\bf #1}}
<a id='L2747' name='L2747'></a>&lt;a id='L2733' name='L2733'&gt;&lt;/a&gt;\let\strong=\b
<a id='L2748' name='L2748'></a>&lt;a id='L2734' name='L2734'&gt;&lt;/a&gt;
<a id='L2749' name='L2749'></a>&lt;a id='L2735' name='L2735'&gt;&lt;/a&gt;% @sansserif, explicit sans.
<a id='L2750' name='L2750'></a>&lt;a id='L2736' name='L2736'&gt;&lt;/a&gt;\def\sansserif#1{{\sf #1}}
<a id='L2751' name='L2751'></a>&lt;a id='L2737' name='L2737'&gt;&lt;/a&gt;
<a id='L2752' name='L2752'></a>&lt;a id='L2738' name='L2738'&gt;&lt;/a&gt;% We can't just use \exhyphenpenalty, because that only has effect at
<a id='L2753' name='L2753'></a>&lt;a id='L2739' name='L2739'&gt;&lt;/a&gt;% the end of a paragraph.  Restore normal hyphenation at the end of the
<a id='L2754' name='L2754'></a>&lt;a id='L2740' name='L2740'&gt;&lt;/a&gt;% group within which \nohyphenation is presumably called.
<a id='L2755' name='L2755'></a>&lt;a id='L2741' name='L2741'&gt;&lt;/a&gt;%
<a id='L2756' name='L2756'></a>&lt;a id='L2742' name='L2742'&gt;&lt;/a&gt;\def\nohyphenation{\hyphenchar\font = -1  \aftergroup\restorehyphenation}
<a id='L2757' name='L2757'></a>&lt;a id='L2743' name='L2743'&gt;&lt;/a&gt;\def\restorehyphenation{\hyphenchar\font = `- }
<a id='L2758' name='L2758'></a>&lt;a id='L2744' name='L2744'&gt;&lt;/a&gt;
<a id='L2759' name='L2759'></a>&lt;a id='L2745' name='L2745'&gt;&lt;/a&gt;% Set sfcode to normal for the chars that usually have another value.
<a id='L2760' name='L2760'></a>&lt;a id='L2746' name='L2746'&gt;&lt;/a&gt;% Can't use plain's \frenchspacing because it uses the `\x notation, and
<a id='L2761' name='L2761'></a>&lt;a id='L2747' name='L2747'&gt;&lt;/a&gt;% sometimes \x has an active definition that messes things up.
<a id='L2762' name='L2762'></a>&lt;a id='L2748' name='L2748'&gt;&lt;/a&gt;%
<a id='L2763' name='L2763'></a>&lt;a id='L2749' name='L2749'&gt;&lt;/a&gt;\catcode`@=11
<a id='L2764' name='L2764'></a>&lt;a id='L2750' name='L2750'&gt;&lt;/a&gt;  \def\plainfrenchspacing{%
<a id='L2765' name='L2765'></a>&lt;a id='L2751' name='L2751'&gt;&lt;/a&gt;    \sfcode\dotChar  =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
<a id='L2766' name='L2766'></a>&lt;a id='L2752' name='L2752'&gt;&lt;/a&gt;    \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m
<a id='L2767' name='L2767'></a>&lt;a id='L2753' name='L2753'&gt;&lt;/a&gt;    \def\endofsentencespacefactor{1000}% for @. and friends
<a id='L2768' name='L2768'></a>&lt;a id='L2754' name='L2754'&gt;&lt;/a&gt;  }
<a id='L2769' name='L2769'></a>&lt;a id='L2755' name='L2755'&gt;&lt;/a&gt;  \def\plainnonfrenchspacing{%
<a id='L2770' name='L2770'></a>&lt;a id='L2756' name='L2756'&gt;&lt;/a&gt;    \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
<a id='L2771' name='L2771'></a>&lt;a id='L2757' name='L2757'&gt;&lt;/a&gt;    \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
<a id='L2772' name='L2772'></a>&lt;a id='L2758' name='L2758'&gt;&lt;/a&gt;    \def\endofsentencespacefactor{3000}% for @. and friends
<a id='L2773' name='L2773'></a>&lt;a id='L2759' name='L2759'&gt;&lt;/a&gt;  }
<a id='L2774' name='L2774'></a>&lt;a id='L2760' name='L2760'&gt;&lt;/a&gt;\catcode`@=\other
<a id='L2775' name='L2775'></a>&lt;a id='L2761' name='L2761'&gt;&lt;/a&gt;\def\endofsentencespacefactor{3000}% default
<a id='L2776' name='L2776'></a>&lt;a id='L2762' name='L2762'&gt;&lt;/a&gt;
<a id='L2777' name='L2777'></a>&lt;a id='L2763' name='L2763'&gt;&lt;/a&gt;% @t, explicit typewriter.
<a id='L2778' name='L2778'></a>&lt;a id='L2764' name='L2764'&gt;&lt;/a&gt;\def\t#1{%
<a id='L2779' name='L2779'></a>&lt;a id='L2765' name='L2765'&gt;&lt;/a&gt;  {\tt \rawbackslash \plainfrenchspacing #1}%
<a id='L2780' name='L2780'></a>&lt;a id='L2766' name='L2766'&gt;&lt;/a&gt;  \null
<a id='L2781' name='L2781'></a>&lt;a id='L2767' name='L2767'&gt;&lt;/a&gt;}
<a id='L2782' name='L2782'></a>&lt;a id='L2768' name='L2768'&gt;&lt;/a&gt;
<a id='L2783' name='L2783'></a>&lt;a id='L2769' name='L2769'&gt;&lt;/a&gt;% @samp.
<a id='L2784' name='L2784'></a>&lt;a id='L2770' name='L2770'&gt;&lt;/a&gt;\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}}
<a id='L2785' name='L2785'></a>&lt;a id='L2771' name='L2771'&gt;&lt;/a&gt;
<a id='L2786' name='L2786'></a>&lt;a id='L2772' name='L2772'&gt;&lt;/a&gt;% @indicateurl is \samp, that is, with quotes.
<a id='L2787' name='L2787'></a>&lt;a id='L2773' name='L2773'&gt;&lt;/a&gt;\let\indicateurl=\samp
<a id='L2788' name='L2788'></a>&lt;a id='L2774' name='L2774'&gt;&lt;/a&gt;
<a id='L2789' name='L2789'></a>&lt;a id='L2775' name='L2775'&gt;&lt;/a&gt;% @code (and similar) prints in typewriter, but with spaces the same
<a id='L2790' name='L2790'></a>&lt;a id='L2776' name='L2776'&gt;&lt;/a&gt;% size as normal in the surrounding text, without hyphenation, etc.
<a id='L2791' name='L2791'></a>&lt;a id='L2777' name='L2777'&gt;&lt;/a&gt;% This is a subroutine for that.
<a id='L2792' name='L2792'></a>&lt;a id='L2778' name='L2778'&gt;&lt;/a&gt;\def\tclose#1{%
<a id='L2793' name='L2793'></a>&lt;a id='L2779' name='L2779'&gt;&lt;/a&gt;  {%
<a id='L2794' name='L2794'></a>&lt;a id='L2780' name='L2780'&gt;&lt;/a&gt;    % Change normal interword space to be same as for the current font.
<a id='L2795' name='L2795'></a>&lt;a id='L2781' name='L2781'&gt;&lt;/a&gt;    \spaceskip = \fontdimen2\font
<a id='L2796' name='L2796'></a>&lt;a id='L2782' name='L2782'&gt;&lt;/a&gt;    %
<a id='L2797' name='L2797'></a>&lt;a id='L2783' name='L2783'&gt;&lt;/a&gt;    % Switch to typewriter.
<a id='L2798' name='L2798'></a>&lt;a id='L2784' name='L2784'&gt;&lt;/a&gt;    \tt
<a id='L2799' name='L2799'></a>&lt;a id='L2785' name='L2785'&gt;&lt;/a&gt;    %
<a id='L2800' name='L2800'></a>&lt;a id='L2786' name='L2786'&gt;&lt;/a&gt;    % But `\ ' produces the large typewriter interword space.
<a id='L2801' name='L2801'></a>&lt;a id='L2787' name='L2787'&gt;&lt;/a&gt;    \def\ {{\spaceskip = 0pt{} }}%
<a id='L2802' name='L2802'></a>&lt;a id='L2788' name='L2788'&gt;&lt;/a&gt;    %
<a id='L2803' name='L2803'></a>&lt;a id='L2789' name='L2789'&gt;&lt;/a&gt;    % Turn off hyphenation.
<a id='L2804' name='L2804'></a>&lt;a id='L2790' name='L2790'&gt;&lt;/a&gt;    \nohyphenation
<a id='L2805' name='L2805'></a>&lt;a id='L2791' name='L2791'&gt;&lt;/a&gt;    %
<a id='L2806' name='L2806'></a>&lt;a id='L2792' name='L2792'&gt;&lt;/a&gt;    \rawbackslash
<a id='L2807' name='L2807'></a>&lt;a id='L2793' name='L2793'&gt;&lt;/a&gt;    \plainfrenchspacing
<a id='L2808' name='L2808'></a>&lt;a id='L2794' name='L2794'&gt;&lt;/a&gt;    #1%
<a id='L2809' name='L2809'></a>&lt;a id='L2795' name='L2795'&gt;&lt;/a&gt;  }%
<a id='L2810' name='L2810'></a>&lt;a id='L2796' name='L2796'&gt;&lt;/a&gt;  \null % reset spacefactor to 1000
<a id='L2811' name='L2811'></a>&lt;a id='L2797' name='L2797'&gt;&lt;/a&gt;}
<a id='L2812' name='L2812'></a>&lt;a id='L2798' name='L2798'&gt;&lt;/a&gt;
<a id='L2813' name='L2813'></a>&lt;a id='L2799' name='L2799'&gt;&lt;/a&gt;% We *must* turn on hyphenation at `-' and `_' in @code.
<a id='L2814' name='L2814'></a>&lt;a id='L2800' name='L2800'&gt;&lt;/a&gt;% (But see \codedashfinish below.)
<a id='L2815' name='L2815'></a>&lt;a id='L2801' name='L2801'&gt;&lt;/a&gt;% Otherwise, it is too hard to avoid overfull hboxes
<a id='L2816' name='L2816'></a>&lt;a id='L2802' name='L2802'&gt;&lt;/a&gt;% in the Emacs manual, the Library manual, etc.
<a id='L2817' name='L2817'></a>&lt;a id='L2803' name='L2803'&gt;&lt;/a&gt;%
<a id='L2818' name='L2818'></a>&lt;a id='L2804' name='L2804'&gt;&lt;/a&gt;% Unfortunately, TeX uses one parameter (\hyphenchar) to control
<a id='L2819' name='L2819'></a>&lt;a id='L2805' name='L2805'&gt;&lt;/a&gt;% both hyphenation at - and hyphenation within words.
<a id='L2820' name='L2820'></a>&lt;a id='L2806' name='L2806'&gt;&lt;/a&gt;% We must therefore turn them both off (\tclose does that)
<a id='L2821' name='L2821'></a>&lt;a id='L2807' name='L2807'&gt;&lt;/a&gt;% and arrange explicitly to hyphenate at a dash. -- rms.
<a id='L2822' name='L2822'></a>&lt;a id='L2808' name='L2808'&gt;&lt;/a&gt;{
<a id='L2823' name='L2823'></a>&lt;a id='L2809' name='L2809'&gt;&lt;/a&gt;  \catcode`\-=\active \catcode`\_=\active
<a id='L2824' name='L2824'></a>&lt;a id='L2810' name='L2810'&gt;&lt;/a&gt;  \catcode`\'=\active \catcode`\`=\active
<a id='L2825' name='L2825'></a>&lt;a id='L2811' name='L2811'&gt;&lt;/a&gt;  \global\let'=\rq \global\let`=\lq  % default definitions
<a id='L2826' name='L2826'></a>&lt;a id='L2812' name='L2812'&gt;&lt;/a&gt;  %
<a id='L2827' name='L2827'></a>&lt;a id='L2813' name='L2813'&gt;&lt;/a&gt;  \global\def\code{\begingroup
<a id='L2828' name='L2828'></a>&lt;a id='L2814' name='L2814'&gt;&lt;/a&gt;    \setupmarkupstyle{code}%
<a id='L2829' name='L2829'></a>&lt;a id='L2815' name='L2815'&gt;&lt;/a&gt;    % The following should really be moved into \setupmarkupstyle handlers.
<a id='L2830' name='L2830'></a>&lt;a id='L2816' name='L2816'&gt;&lt;/a&gt;    \catcode\dashChar=\active  \catcode\underChar=\active
<a id='L2831' name='L2831'></a>&lt;a id='L2817' name='L2817'&gt;&lt;/a&gt;    \ifallowcodebreaks
<a id='L2832' name='L2832'></a>&lt;a id='L2818' name='L2818'&gt;&lt;/a&gt;     \let-\codedash
<a id='L2833' name='L2833'></a>&lt;a id='L2819' name='L2819'&gt;&lt;/a&gt;     \let_\codeunder
<a id='L2834' name='L2834'></a>&lt;a id='L2820' name='L2820'&gt;&lt;/a&gt;    \else
<a id='L2835' name='L2835'></a>&lt;a id='L2821' name='L2821'&gt;&lt;/a&gt;     \let-\normaldash
<a id='L2836' name='L2836'></a>&lt;a id='L2822' name='L2822'&gt;&lt;/a&gt;     \let_\realunder
<a id='L2837' name='L2837'></a>&lt;a id='L2823' name='L2823'&gt;&lt;/a&gt;    \fi
<a id='L2838' name='L2838'></a>&lt;a id='L2824' name='L2824'&gt;&lt;/a&gt;    % Given -foo (with a single dash), we do not want to allow a break
<a id='L2839' name='L2839'></a>&lt;a id='L2825' name='L2825'&gt;&lt;/a&gt;    % after the hyphen.
<a id='L2840' name='L2840'></a>&lt;a id='L2826' name='L2826'&gt;&lt;/a&gt;    \global\let\codedashprev=\codedash
<a id='L2841' name='L2841'></a>&lt;a id='L2827' name='L2827'&gt;&lt;/a&gt;    %
<a id='L2842' name='L2842'></a>&lt;a id='L2828' name='L2828'&gt;&lt;/a&gt;    \codex
<a id='L2843' name='L2843'></a>&lt;a id='L2829' name='L2829'&gt;&lt;/a&gt;  }
<a id='L2844' name='L2844'></a>&lt;a id='L2830' name='L2830'&gt;&lt;/a&gt;  %
<a id='L2845' name='L2845'></a>&lt;a id='L2831' name='L2831'&gt;&lt;/a&gt;  \gdef\codedash{\futurelet\next\codedashfinish}
<a id='L2846' name='L2846'></a>&lt;a id='L2832' name='L2832'&gt;&lt;/a&gt;  \gdef\codedashfinish{%
<a id='L2847' name='L2847'></a>&lt;a id='L2833' name='L2833'&gt;&lt;/a&gt;    \normaldash % always output the dash character itself.
<a id='L2848' name='L2848'></a>&lt;a id='L2834' name='L2834'&gt;&lt;/a&gt;    % 
<a id='L2849' name='L2849'></a>&lt;a id='L2835' name='L2835'&gt;&lt;/a&gt;    % Now, output a discretionary to allow a line break, unless
<a id='L2850' name='L2850'></a>&lt;a id='L2836' name='L2836'&gt;&lt;/a&gt;    % (a) the next character is a -, or
<a id='L2851' name='L2851'></a>&lt;a id='L2837' name='L2837'&gt;&lt;/a&gt;    % (b) the preceding character is a -.
<a id='L2852' name='L2852'></a>&lt;a id='L2838' name='L2838'&gt;&lt;/a&gt;    % E.g., given --posix, we do not want to allow a break after either -.
<a id='L2853' name='L2853'></a>&lt;a id='L2839' name='L2839'&gt;&lt;/a&gt;    % Given --foo-bar, we do want to allow a break between the - and the b.
<a id='L2854' name='L2854'></a>&lt;a id='L2840' name='L2840'&gt;&lt;/a&gt;    \ifx\next\codedash \else
<a id='L2855' name='L2855'></a>&lt;a id='L2841' name='L2841'&gt;&lt;/a&gt;      \ifx\codedashprev\codedash 
<a id='L2856' name='L2856'></a>&lt;a id='L2842' name='L2842'&gt;&lt;/a&gt;      \else \discretionary{}{}{}\fi
<a id='L2857' name='L2857'></a>&lt;a id='L2843' name='L2843'&gt;&lt;/a&gt;    \fi
<a id='L2858' name='L2858'></a>&lt;a id='L2844' name='L2844'&gt;&lt;/a&gt;    \global\let\codedashprev=\next
<a id='L2859' name='L2859'></a>&lt;a id='L2845' name='L2845'&gt;&lt;/a&gt;  }
<a id='L2860' name='L2860'></a>&lt;a id='L2846' name='L2846'&gt;&lt;/a&gt;}
<a id='L2861' name='L2861'></a>&lt;a id='L2847' name='L2847'&gt;&lt;/a&gt;\def\normaldash{-}
<a id='L2862' name='L2862'></a>&lt;a id='L2848' name='L2848'&gt;&lt;/a&gt;%
<a id='L2863' name='L2863'></a>&lt;a id='L2849' name='L2849'&gt;&lt;/a&gt;\def\codex #1{\tclose{#1}\endgroup}
<a id='L2864' name='L2864'></a>&lt;a id='L2850' name='L2850'&gt;&lt;/a&gt;
<a id='L2865' name='L2865'></a>&lt;a id='L2851' name='L2851'&gt;&lt;/a&gt;\def\codeunder{%
<a id='L2866' name='L2866'></a>&lt;a id='L2852' name='L2852'&gt;&lt;/a&gt;  % this is all so @math{@code{var_name}+1} can work.  In math mode, _
<a id='L2867' name='L2867'></a>&lt;a id='L2853' name='L2853'&gt;&lt;/a&gt;  % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
<a id='L2868' name='L2868'></a>&lt;a id='L2854' name='L2854'&gt;&lt;/a&gt;  % will therefore expand the active definition of _, which is us
<a id='L2869' name='L2869'></a>&lt;a id='L2855' name='L2855'&gt;&lt;/a&gt;  % (inside @code that is), therefore an endless loop.
<a id='L2870' name='L2870'></a>&lt;a id='L2856' name='L2856'&gt;&lt;/a&gt;  \ifusingtt{\ifmmode
<a id='L2871' name='L2871'></a>&lt;a id='L2857' name='L2857'&gt;&lt;/a&gt;               \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_.
<a id='L2872' name='L2872'></a>&lt;a id='L2858' name='L2858'&gt;&lt;/a&gt;             \else\normalunderscore \fi
<a id='L2873' name='L2873'></a>&lt;a id='L2859' name='L2859'&gt;&lt;/a&gt;             \discretionary{}{}{}}%
<a id='L2874' name='L2874'></a>&lt;a id='L2860' name='L2860'&gt;&lt;/a&gt;            {\_}%
<a id='L2875' name='L2875'></a>&lt;a id='L2861' name='L2861'&gt;&lt;/a&gt;}
<a id='L2876' name='L2876'></a>&lt;a id='L2862' name='L2862'&gt;&lt;/a&gt;
<a id='L2877' name='L2877'></a>&lt;a id='L2863' name='L2863'&gt;&lt;/a&gt;% An additional complication: the above will allow breaks after, e.g.,
<a id='L2878' name='L2878'></a>&lt;a id='L2864' name='L2864'&gt;&lt;/a&gt;% each of the four underscores in __typeof__.  This is bad.
<a id='L2879' name='L2879'></a>&lt;a id='L2865' name='L2865'&gt;&lt;/a&gt;% @allowcodebreaks provides a document-level way to turn breaking at -
<a id='L2880' name='L2880'></a>&lt;a id='L2866' name='L2866'&gt;&lt;/a&gt;% and _ on and off.
<a id='L2881' name='L2881'></a>&lt;a id='L2867' name='L2867'&gt;&lt;/a&gt;%
<a id='L2882' name='L2882'></a>&lt;a id='L2868' name='L2868'&gt;&lt;/a&gt;\newif\ifallowcodebreaks  \allowcodebreakstrue
<a id='L2883' name='L2883'></a>&lt;a id='L2869' name='L2869'&gt;&lt;/a&gt;
<a id='L2884' name='L2884'></a>&lt;a id='L2870' name='L2870'&gt;&lt;/a&gt;\def\keywordtrue{true}
<a id='L2885' name='L2885'></a>&lt;a id='L2871' name='L2871'&gt;&lt;/a&gt;\def\keywordfalse{false}
<a id='L2886' name='L2886'></a>&lt;a id='L2872' name='L2872'&gt;&lt;/a&gt;
<a id='L2887' name='L2887'></a>&lt;a id='L2873' name='L2873'&gt;&lt;/a&gt;\parseargdef\allowcodebreaks{%
<a id='L2888' name='L2888'></a>&lt;a id='L2874' name='L2874'&gt;&lt;/a&gt;  \def\txiarg{#1}%
<a id='L2889' name='L2889'></a>&lt;a id='L2875' name='L2875'&gt;&lt;/a&gt;  \ifx\txiarg\keywordtrue
<a id='L2890' name='L2890'></a>&lt;a id='L2876' name='L2876'&gt;&lt;/a&gt;    \allowcodebreakstrue
<a id='L2891' name='L2891'></a>&lt;a id='L2877' name='L2877'&gt;&lt;/a&gt;  \else\ifx\txiarg\keywordfalse
<a id='L2892' name='L2892'></a>&lt;a id='L2878' name='L2878'&gt;&lt;/a&gt;    \allowcodebreaksfalse
<a id='L2893' name='L2893'></a>&lt;a id='L2879' name='L2879'&gt;&lt;/a&gt;  \else
<a id='L2894' name='L2894'></a>&lt;a id='L2880' name='L2880'&gt;&lt;/a&gt;    \errhelp = \EMsimple
<a id='L2895' name='L2895'></a>&lt;a id='L2881' name='L2881'&gt;&lt;/a&gt;    \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}%
<a id='L2896' name='L2896'></a>&lt;a id='L2882' name='L2882'&gt;&lt;/a&gt;  \fi\fi
<a id='L2897' name='L2897'></a>&lt;a id='L2883' name='L2883'&gt;&lt;/a&gt;}
<a id='L2898' name='L2898'></a>&lt;a id='L2884' name='L2884'&gt;&lt;/a&gt;
<a id='L2899' name='L2899'></a>&lt;a id='L2885' name='L2885'&gt;&lt;/a&gt;% For @command, @env, @file, @option quotes seem unnecessary,
<a id='L2900' name='L2900'></a>&lt;a id='L2886' name='L2886'&gt;&lt;/a&gt;% so use \code rather than \samp.
<a id='L2901' name='L2901'></a>&lt;a id='L2887' name='L2887'&gt;&lt;/a&gt;\let\command=\code
<a id='L2902' name='L2902'></a>&lt;a id='L2888' name='L2888'&gt;&lt;/a&gt;\let\env=\code
<a id='L2903' name='L2903'></a>&lt;a id='L2889' name='L2889'&gt;&lt;/a&gt;\let\file=\code
<a id='L2904' name='L2904'></a>&lt;a id='L2890' name='L2890'&gt;&lt;/a&gt;\let\option=\code
<a id='L2905' name='L2905'></a>&lt;a id='L2891' name='L2891'&gt;&lt;/a&gt;
<a id='L2906' name='L2906'></a>&lt;a id='L2892' name='L2892'&gt;&lt;/a&gt;% @uref (abbreviation for `urlref') takes an optional (comma-separated)
<a id='L2907' name='L2907'></a>&lt;a id='L2893' name='L2893'&gt;&lt;/a&gt;% second argument specifying the text to display and an optional third
<a id='L2908' name='L2908'></a>&lt;a id='L2894' name='L2894'&gt;&lt;/a&gt;% arg as text to display instead of (rather than in addition to) the url
<a id='L2909' name='L2909'></a>&lt;a id='L2895' name='L2895'&gt;&lt;/a&gt;% itself.  First (mandatory) arg is the url.
<a id='L2910' name='L2910'></a>&lt;a id='L2896' name='L2896'&gt;&lt;/a&gt;% (This \urefnobreak definition isn't used now, leaving it for a while
<a id='L2911' name='L2911'></a>&lt;a id='L2897' name='L2897'&gt;&lt;/a&gt;% for comparison.)
<a id='L2912' name='L2912'></a>&lt;a id='L2898' name='L2898'&gt;&lt;/a&gt;\def\urefnobreak#1{\dourefnobreak #1,,,\finish}
<a id='L2913' name='L2913'></a>&lt;a id='L2899' name='L2899'&gt;&lt;/a&gt;\def\dourefnobreak#1,#2,#3,#4\finish{\begingroup
<a id='L2914' name='L2914'></a>&lt;a id='L2900' name='L2900'&gt;&lt;/a&gt;  \unsepspaces
<a id='L2915' name='L2915'></a>&lt;a id='L2901' name='L2901'&gt;&lt;/a&gt;  \pdfurl{#1}%
<a id='L2916' name='L2916'></a>&lt;a id='L2902' name='L2902'&gt;&lt;/a&gt;  \setbox0 = \hbox{\ignorespaces #3}%
<a id='L2917' name='L2917'></a>&lt;a id='L2903' name='L2903'&gt;&lt;/a&gt;  \ifdim\wd0 &amp;gt; 0pt
<a id='L2918' name='L2918'></a>&lt;a id='L2904' name='L2904'&gt;&lt;/a&gt;    \unhbox0 % third arg given, show only that
<a id='L2919' name='L2919'></a>&lt;a id='L2905' name='L2905'&gt;&lt;/a&gt;  \else
<a id='L2920' name='L2920'></a>&lt;a id='L2906' name='L2906'&gt;&lt;/a&gt;    \setbox0 = \hbox{\ignorespaces #2}%
<a id='L2921' name='L2921'></a>&lt;a id='L2907' name='L2907'&gt;&lt;/a&gt;    \ifdim\wd0 &amp;gt; 0pt
<a id='L2922' name='L2922'></a>&lt;a id='L2908' name='L2908'&gt;&lt;/a&gt;      \ifpdf
<a id='L2923' name='L2923'></a>&lt;a id='L2909' name='L2909'&gt;&lt;/a&gt;        \unhbox0             % PDF: 2nd arg given, show only it
<a id='L2924' name='L2924'></a>&lt;a id='L2910' name='L2910'&gt;&lt;/a&gt;      \else
<a id='L2925' name='L2925'></a>&lt;a id='L2911' name='L2911'&gt;&lt;/a&gt;        \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url
<a id='L2926' name='L2926'></a>&lt;a id='L2912' name='L2912'&gt;&lt;/a&gt;      \fi
<a id='L2927' name='L2927'></a>&lt;a id='L2913' name='L2913'&gt;&lt;/a&gt;    \else
<a id='L2928' name='L2928'></a>&lt;a id='L2914' name='L2914'&gt;&lt;/a&gt;      \code{#1}% only url given, so show it
<a id='L2929' name='L2929'></a>&lt;a id='L2915' name='L2915'&gt;&lt;/a&gt;    \fi
<a id='L2930' name='L2930'></a>&lt;a id='L2916' name='L2916'&gt;&lt;/a&gt;  \fi
<a id='L2931' name='L2931'></a>&lt;a id='L2917' name='L2917'&gt;&lt;/a&gt;  \endlink
<a id='L2932' name='L2932'></a>&lt;a id='L2918' name='L2918'&gt;&lt;/a&gt;\endgroup}
<a id='L2933' name='L2933'></a>&lt;a id='L2919' name='L2919'&gt;&lt;/a&gt;
<a id='L2934' name='L2934'></a>&lt;a id='L2920' name='L2920'&gt;&lt;/a&gt;% This \urefbreak definition is the active one.
<a id='L2935' name='L2935'></a>&lt;a id='L2921' name='L2921'&gt;&lt;/a&gt;\def\urefbreak{\begingroup \urefcatcodes \dourefbreak}
<a id='L2936' name='L2936'></a>&lt;a id='L2922' name='L2922'&gt;&lt;/a&gt;\let\uref=\urefbreak
<a id='L2937' name='L2937'></a>&lt;a id='L2923' name='L2923'&gt;&lt;/a&gt;\def\dourefbreak#1{\urefbreakfinish #1,,,\finish}
<a id='L2938' name='L2938'></a>&lt;a id='L2924' name='L2924'&gt;&lt;/a&gt;\def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example
<a id='L2939' name='L2939'></a>&lt;a id='L2925' name='L2925'&gt;&lt;/a&gt;  \unsepspaces
<a id='L2940' name='L2940'></a>&lt;a id='L2926' name='L2926'&gt;&lt;/a&gt;  \pdfurl{#1}%
<a id='L2941' name='L2941'></a>&lt;a id='L2927' name='L2927'&gt;&lt;/a&gt;  \setbox0 = \hbox{\ignorespaces #3}%
<a id='L2942' name='L2942'></a>&lt;a id='L2928' name='L2928'&gt;&lt;/a&gt;  \ifdim\wd0 &amp;gt; 0pt
<a id='L2943' name='L2943'></a>&lt;a id='L2929' name='L2929'&gt;&lt;/a&gt;    \unhbox0 % third arg given, show only that
<a id='L2944' name='L2944'></a>&lt;a id='L2930' name='L2930'&gt;&lt;/a&gt;  \else
<a id='L2945' name='L2945'></a>&lt;a id='L2931' name='L2931'&gt;&lt;/a&gt;    \setbox0 = \hbox{\ignorespaces #2}%
<a id='L2946' name='L2946'></a>&lt;a id='L2932' name='L2932'&gt;&lt;/a&gt;    \ifdim\wd0 &amp;gt; 0pt
<a id='L2947' name='L2947'></a>&lt;a id='L2933' name='L2933'&gt;&lt;/a&gt;      \ifpdf
<a id='L2948' name='L2948'></a>&lt;a id='L2934' name='L2934'&gt;&lt;/a&gt;        \unhbox0             % PDF: 2nd arg given, show only it
<a id='L2949' name='L2949'></a>&lt;a id='L2935' name='L2935'&gt;&lt;/a&gt;      \else
<a id='L2950' name='L2950'></a>&lt;a id='L2936' name='L2936'&gt;&lt;/a&gt;        \unhbox0\ (\urefcode{#1})% DVI: 2nd arg given, show both it and url
<a id='L2951' name='L2951'></a>&lt;a id='L2937' name='L2937'&gt;&lt;/a&gt;      \fi
<a id='L2952' name='L2952'></a>&lt;a id='L2938' name='L2938'&gt;&lt;/a&gt;    \else
<a id='L2953' name='L2953'></a>&lt;a id='L2939' name='L2939'&gt;&lt;/a&gt;      \urefcode{#1}% only url given, so show it
<a id='L2954' name='L2954'></a>&lt;a id='L2940' name='L2940'&gt;&lt;/a&gt;    \fi
<a id='L2955' name='L2955'></a>&lt;a id='L2941' name='L2941'&gt;&lt;/a&gt;  \fi
<a id='L2956' name='L2956'></a>&lt;a id='L2942' name='L2942'&gt;&lt;/a&gt;  \endlink
<a id='L2957' name='L2957'></a>&lt;a id='L2943' name='L2943'&gt;&lt;/a&gt;\endgroup}
<a id='L2958' name='L2958'></a>&lt;a id='L2944' name='L2944'&gt;&lt;/a&gt;
<a id='L2959' name='L2959'></a>&lt;a id='L2945' name='L2945'&gt;&lt;/a&gt;% Allow line breaks around only a few characters (only).
<a id='L2960' name='L2960'></a>&lt;a id='L2946' name='L2946'&gt;&lt;/a&gt;\def\urefcatcodes{%
<a id='L2961' name='L2961'></a>&lt;a id='L2947' name='L2947'&gt;&lt;/a&gt;  \catcode\ampChar=\active   \catcode\dotChar=\active
<a id='L2962' name='L2962'></a>&lt;a id='L2948' name='L2948'&gt;&lt;/a&gt;  \catcode\hashChar=\active  \catcode\questChar=\active
<a id='L2963' name='L2963'></a>&lt;a id='L2949' name='L2949'&gt;&lt;/a&gt;  \catcode\slashChar=\active
<a id='L2964' name='L2964'></a>&lt;a id='L2950' name='L2950'&gt;&lt;/a&gt;}
<a id='L2965' name='L2965'></a>&lt;a id='L2951' name='L2951'&gt;&lt;/a&gt;{
<a id='L2966' name='L2966'></a>&lt;a id='L2952' name='L2952'&gt;&lt;/a&gt;  \urefcatcodes
<a id='L2967' name='L2967'></a>&lt;a id='L2953' name='L2953'&gt;&lt;/a&gt;  %
<a id='L2968' name='L2968'></a>&lt;a id='L2954' name='L2954'&gt;&lt;/a&gt;  \global\def\urefcode{\begingroup
<a id='L2969' name='L2969'></a>&lt;a id='L2955' name='L2955'&gt;&lt;/a&gt;    \setupmarkupstyle{code}%
<a id='L2970' name='L2970'></a>&lt;a id='L2956' name='L2956'&gt;&lt;/a&gt;    \urefcatcodes
<a id='L2971' name='L2971'></a>&lt;a id='L2957' name='L2957'&gt;&lt;/a&gt;    \let&amp;amp;\urefcodeamp
<a id='L2972' name='L2972'></a>&lt;a id='L2958' name='L2958'&gt;&lt;/a&gt;    \let.\urefcodedot
<a id='L2973' name='L2973'></a>&lt;a id='L2959' name='L2959'&gt;&lt;/a&gt;    \let#\urefcodehash
<a id='L2974' name='L2974'></a>&lt;a id='L2960' name='L2960'&gt;&lt;/a&gt;    \let?\urefcodequest
<a id='L2975' name='L2975'></a>&lt;a id='L2961' name='L2961'&gt;&lt;/a&gt;    \let/\urefcodeslash
<a id='L2976' name='L2976'></a>&lt;a id='L2962' name='L2962'&gt;&lt;/a&gt;    \codex
<a id='L2977' name='L2977'></a>&lt;a id='L2963' name='L2963'&gt;&lt;/a&gt;  }
<a id='L2978' name='L2978'></a>&lt;a id='L2964' name='L2964'&gt;&lt;/a&gt;  %
<a id='L2979' name='L2979'></a>&lt;a id='L2965' name='L2965'&gt;&lt;/a&gt;  % By default, they are just regular characters.
<a id='L2980' name='L2980'></a>&lt;a id='L2966' name='L2966'&gt;&lt;/a&gt;  \global\def&amp;amp;{\normalamp}
<a id='L2981' name='L2981'></a>&lt;a id='L2967' name='L2967'&gt;&lt;/a&gt;  \global\def.{\normaldot}
<a id='L2982' name='L2982'></a>&lt;a id='L2968' name='L2968'&gt;&lt;/a&gt;  \global\def#{\normalhash}
<a id='L2983' name='L2983'></a>&lt;a id='L2969' name='L2969'&gt;&lt;/a&gt;  \global\def?{\normalquest}
<a id='L2984' name='L2984'></a>&lt;a id='L2970' name='L2970'&gt;&lt;/a&gt;  \global\def/{\normalslash}
<a id='L2985' name='L2985'></a>&lt;a id='L2971' name='L2971'&gt;&lt;/a&gt;}
<a id='L2986' name='L2986'></a>&lt;a id='L2972' name='L2972'&gt;&lt;/a&gt;
<a id='L2987' name='L2987'></a>&lt;a id='L2973' name='L2973'&gt;&lt;/a&gt;% we put a little stretch before and after the breakable chars, to help
<a id='L2988' name='L2988'></a>&lt;a id='L2974' name='L2974'&gt;&lt;/a&gt;% line breaking of long url's.  The unequal skips make look better in
<a id='L2989' name='L2989'></a>&lt;a id='L2975' name='L2975'&gt;&lt;/a&gt;% cmtt at least, especially for dots.
<a id='L2990' name='L2990'></a>&lt;a id='L2976' name='L2976'&gt;&lt;/a&gt;\def\urefprestretch{\urefprebreak \hskip0pt plus.13em }
<a id='L2991' name='L2991'></a>&lt;a id='L2977' name='L2977'&gt;&lt;/a&gt;\def\urefpoststretch{\urefpostbreak \hskip0pt plus.1em }
<a id='L2992' name='L2992'></a>&lt;a id='L2978' name='L2978'&gt;&lt;/a&gt;%
<a id='L2993' name='L2993'></a>&lt;a id='L2979' name='L2979'&gt;&lt;/a&gt;\def\urefcodeamp{\urefprestretch \&amp;amp;\urefpoststretch}
<a id='L2994' name='L2994'></a>&lt;a id='L2980' name='L2980'&gt;&lt;/a&gt;\def\urefcodedot{\urefprestretch .\urefpoststretch}
<a id='L2995' name='L2995'></a>&lt;a id='L2981' name='L2981'&gt;&lt;/a&gt;\def\urefcodehash{\urefprestretch \#\urefpoststretch}
<a id='L2996' name='L2996'></a>&lt;a id='L2982' name='L2982'&gt;&lt;/a&gt;\def\urefcodequest{\urefprestretch ?\urefpoststretch}
<a id='L2997' name='L2997'></a>&lt;a id='L2983' name='L2983'&gt;&lt;/a&gt;\def\urefcodeslash{\futurelet\next\urefcodeslashfinish}
<a id='L2998' name='L2998'></a>&lt;a id='L2984' name='L2984'&gt;&lt;/a&gt;{
<a id='L2999' name='L2999'></a>&lt;a id='L2985' name='L2985'&gt;&lt;/a&gt;  \catcode`\/=\active
<a id='L3000' name='L3000'></a>&lt;a id='L2986' name='L2986'&gt;&lt;/a&gt;  \global\def\urefcodeslashfinish{%
<a id='L3001' name='L3001'></a>&lt;a id='L2987' name='L2987'&gt;&lt;/a&gt;    \urefprestretch \slashChar
<a id='L3002' name='L3002'></a>&lt;a id='L2988' name='L2988'&gt;&lt;/a&gt;    % Allow line break only after the final / in a sequence of
<a id='L3003' name='L3003'></a>&lt;a id='L2989' name='L2989'&gt;&lt;/a&gt;    % slashes, to avoid line break between the slashes in http://.
<a id='L3004' name='L3004'></a>&lt;a id='L2990' name='L2990'&gt;&lt;/a&gt;    \ifx\next/\else \urefpoststretch \fi
<a id='L3005' name='L3005'></a>&lt;a id='L2991' name='L2991'&gt;&lt;/a&gt;  }
<a id='L3006' name='L3006'></a>&lt;a id='L2992' name='L2992'&gt;&lt;/a&gt;}
<a id='L3007' name='L3007'></a>&lt;a id='L2993' name='L2993'&gt;&lt;/a&gt;
<a id='L3008' name='L3008'></a>&lt;a id='L2994' name='L2994'&gt;&lt;/a&gt;% One more complication: by default we'll break after the special
<a id='L3009' name='L3009'></a>&lt;a id='L2995' name='L2995'&gt;&lt;/a&gt;% characters, but some people like to break before the special chars, so
<a id='L3010' name='L3010'></a>&lt;a id='L2996' name='L2996'&gt;&lt;/a&gt;% allow that.  Also allow no breaking at all, for manual control.
<a id='L3011' name='L3011'></a>&lt;a id='L2997' name='L2997'&gt;&lt;/a&gt;% 
<a id='L3012' name='L3012'></a>&lt;a id='L2998' name='L2998'&gt;&lt;/a&gt;\parseargdef\urefbreakstyle{%
<a id='L3013' name='L3013'></a>&lt;a id='L2999' name='L2999'&gt;&lt;/a&gt;  \def\txiarg{#1}%
<a id='L3014' name='L3014'></a>&lt;a id='L3000' name='L3000'&gt;&lt;/a&gt;  \ifx\txiarg\wordnone
<a id='L3015' name='L3015'></a>&lt;a id='L3001' name='L3001'&gt;&lt;/a&gt;    \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak}
<a id='L3016' name='L3016'></a>&lt;a id='L3002' name='L3002'&gt;&lt;/a&gt;  \else\ifx\txiarg\wordbefore
<a id='L3017' name='L3017'></a>&lt;a id='L3003' name='L3003'&gt;&lt;/a&gt;    \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak}
<a id='L3018' name='L3018'></a>&lt;a id='L3004' name='L3004'&gt;&lt;/a&gt;  \else\ifx\txiarg\wordafter
<a id='L3019' name='L3019'></a>&lt;a id='L3005' name='L3005'&gt;&lt;/a&gt;    \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak}
<a id='L3020' name='L3020'></a>&lt;a id='L3006' name='L3006'&gt;&lt;/a&gt;  \else
<a id='L3021' name='L3021'></a>&lt;a id='L3007' name='L3007'&gt;&lt;/a&gt;    \errhelp = \EMsimple
<a id='L3022' name='L3022'></a>&lt;a id='L3008' name='L3008'&gt;&lt;/a&gt;    \errmessage{Unknown @urefbreakstyle setting `\txiarg'}%
<a id='L3023' name='L3023'></a>&lt;a id='L3009' name='L3009'&gt;&lt;/a&gt;  \fi\fi\fi
<a id='L3024' name='L3024'></a>&lt;a id='L3010' name='L3010'&gt;&lt;/a&gt;}
<a id='L3025' name='L3025'></a>&lt;a id='L3011' name='L3011'&gt;&lt;/a&gt;\def\wordafter{after}
<a id='L3026' name='L3026'></a>&lt;a id='L3012' name='L3012'&gt;&lt;/a&gt;\def\wordbefore{before}
<a id='L3027' name='L3027'></a>&lt;a id='L3013' name='L3013'&gt;&lt;/a&gt;\def\wordnone{none}
<a id='L3028' name='L3028'></a>&lt;a id='L3014' name='L3014'&gt;&lt;/a&gt;
<a id='L3029' name='L3029'></a>&lt;a id='L3015' name='L3015'&gt;&lt;/a&gt;\urefbreakstyle after
<a id='L3030' name='L3030'></a>&lt;a id='L3016' name='L3016'&gt;&lt;/a&gt;
<a id='L3031' name='L3031'></a>&lt;a id='L3017' name='L3017'&gt;&lt;/a&gt;% @url synonym for @uref, since that's how everyone uses it.
<a id='L3032' name='L3032'></a>&lt;a id='L3018' name='L3018'&gt;&lt;/a&gt;%
<a id='L3033' name='L3033'></a>&lt;a id='L3019' name='L3019'&gt;&lt;/a&gt;\let\url=\uref
<a id='L3034' name='L3034'></a>&lt;a id='L3020' name='L3020'&gt;&lt;/a&gt;
<a id='L3035' name='L3035'></a>&lt;a id='L3021' name='L3021'&gt;&lt;/a&gt;% rms does not like angle brackets --karl, 17may97.
<a id='L3036' name='L3036'></a>&lt;a id='L3022' name='L3022'&gt;&lt;/a&gt;% So now @email is just like @uref, unless we are pdf.
<a id='L3037' name='L3037'></a>&lt;a id='L3023' name='L3023'&gt;&lt;/a&gt;%
<a id='L3038' name='L3038'></a>&lt;a id='L3024' name='L3024'&gt;&lt;/a&gt;%\def\email#1{\angleleft{\tt #1}\angleright}
<a id='L3039' name='L3039'></a>&lt;a id='L3025' name='L3025'&gt;&lt;/a&gt;\ifpdf
<a id='L3040' name='L3040'></a>&lt;a id='L3026' name='L3026'&gt;&lt;/a&gt;  \def\email#1{\doemail#1,,\finish}
<a id='L3041' name='L3041'></a>&lt;a id='L3027' name='L3027'&gt;&lt;/a&gt;  \def\doemail#1,#2,#3\finish{\begingroup
<a id='L3042' name='L3042'></a>&lt;a id='L3028' name='L3028'&gt;&lt;/a&gt;    \unsepspaces
<a id='L3043' name='L3043'></a>&lt;a id='L3029' name='L3029'&gt;&lt;/a&gt;    \pdfurl{mailto:#1}%
<a id='L3044' name='L3044'></a>&lt;a id='L3030' name='L3030'&gt;&lt;/a&gt;    \setbox0 = \hbox{\ignorespaces #2}%
<a id='L3045' name='L3045'></a>&lt;a id='L3031' name='L3031'&gt;&lt;/a&gt;    \ifdim\wd0&amp;gt;0pt\unhbox0\else\code{#1}\fi
<a id='L3046' name='L3046'></a>&lt;a id='L3032' name='L3032'&gt;&lt;/a&gt;    \endlink
<a id='L3047' name='L3047'></a>&lt;a id='L3033' name='L3033'&gt;&lt;/a&gt;  \endgroup}
<a id='L3048' name='L3048'></a>&lt;a id='L3034' name='L3034'&gt;&lt;/a&gt;\else
<a id='L3049' name='L3049'></a>&lt;a id='L3035' name='L3035'&gt;&lt;/a&gt;  \let\email=\uref
<a id='L3050' name='L3050'></a>&lt;a id='L3036' name='L3036'&gt;&lt;/a&gt;\fi
<a id='L3051' name='L3051'></a>&lt;a id='L3037' name='L3037'&gt;&lt;/a&gt;
<a id='L3052' name='L3052'></a>&lt;a id='L3038' name='L3038'&gt;&lt;/a&gt;% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
<a id='L3053' name='L3053'></a>&lt;a id='L3039' name='L3039'&gt;&lt;/a&gt;%   `example' (@kbd uses ttsl only inside of @example and friends),
<a id='L3054' name='L3054'></a>&lt;a id='L3040' name='L3040'&gt;&lt;/a&gt;%   or `code' (@kbd uses normal tty font always).
<a id='L3055' name='L3055'></a>&lt;a id='L3041' name='L3041'&gt;&lt;/a&gt;\parseargdef\kbdinputstyle{%
<a id='L3056' name='L3056'></a>&lt;a id='L3042' name='L3042'&gt;&lt;/a&gt;  \def\txiarg{#1}%
<a id='L3057' name='L3057'></a>&lt;a id='L3043' name='L3043'&gt;&lt;/a&gt;  \ifx\txiarg\worddistinct
<a id='L3058' name='L3058'></a>&lt;a id='L3044' name='L3044'&gt;&lt;/a&gt;    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
<a id='L3059' name='L3059'></a>&lt;a id='L3045' name='L3045'&gt;&lt;/a&gt;  \else\ifx\txiarg\wordexample
<a id='L3060' name='L3060'></a>&lt;a id='L3046' name='L3046'&gt;&lt;/a&gt;    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
<a id='L3061' name='L3061'></a>&lt;a id='L3047' name='L3047'&gt;&lt;/a&gt;  \else\ifx\txiarg\wordcode
<a id='L3062' name='L3062'></a>&lt;a id='L3048' name='L3048'&gt;&lt;/a&gt;    \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
<a id='L3063' name='L3063'></a>&lt;a id='L3049' name='L3049'&gt;&lt;/a&gt;  \else
<a id='L3064' name='L3064'></a>&lt;a id='L3050' name='L3050'&gt;&lt;/a&gt;    \errhelp = \EMsimple
<a id='L3065' name='L3065'></a>&lt;a id='L3051' name='L3051'&gt;&lt;/a&gt;    \errmessage{Unknown @kbdinputstyle setting `\txiarg'}%
<a id='L3066' name='L3066'></a>&lt;a id='L3052' name='L3052'&gt;&lt;/a&gt;  \fi\fi\fi
<a id='L3067' name='L3067'></a>&lt;a id='L3053' name='L3053'&gt;&lt;/a&gt;}
<a id='L3068' name='L3068'></a>&lt;a id='L3054' name='L3054'&gt;&lt;/a&gt;\def\worddistinct{distinct}
<a id='L3069' name='L3069'></a>&lt;a id='L3055' name='L3055'&gt;&lt;/a&gt;\def\wordexample{example}
<a id='L3070' name='L3070'></a>&lt;a id='L3056' name='L3056'&gt;&lt;/a&gt;\def\wordcode{code}
<a id='L3071' name='L3071'></a>&lt;a id='L3057' name='L3057'&gt;&lt;/a&gt;
<a id='L3072' name='L3072'></a>&lt;a id='L3058' name='L3058'&gt;&lt;/a&gt;% Default is `distinct'.
<a id='L3073' name='L3073'></a>&lt;a id='L3059' name='L3059'&gt;&lt;/a&gt;\kbdinputstyle distinct
<a id='L3074' name='L3074'></a>&lt;a id='L3060' name='L3060'&gt;&lt;/a&gt;
<a id='L3075' name='L3075'></a>&lt;a id='L3061' name='L3061'&gt;&lt;/a&gt;% @kbd is like @code, except that if the argument is just one @key command,
<a id='L3076' name='L3076'></a>&lt;a id='L3062' name='L3062'&gt;&lt;/a&gt;% then @kbd has no effect.
<a id='L3077' name='L3077'></a>&lt;a id='L3063' name='L3063'&gt;&lt;/a&gt;\def\kbd#1{{\def\look{#1}\expandafter\kbdsub\look??\par}}
<a id='L3078' name='L3078'></a>&lt;a id='L3064' name='L3064'&gt;&lt;/a&gt;
<a id='L3079' name='L3079'></a>&lt;a id='L3065' name='L3065'&gt;&lt;/a&gt;\def\xkey{\key}
<a id='L3080' name='L3080'></a>&lt;a id='L3066' name='L3066'&gt;&lt;/a&gt;\def\kbdsub#1#2#3\par{%
<a id='L3081' name='L3081'></a>&lt;a id='L3067' name='L3067'&gt;&lt;/a&gt;  \def\one{#1}\def\three{#3}\def\threex{??}%
<a id='L3082' name='L3082'></a>&lt;a id='L3068' name='L3068'&gt;&lt;/a&gt;  \ifx\one\xkey\ifx\threex\three \key{#2}%
<a id='L3083' name='L3083'></a>&lt;a id='L3069' name='L3069'&gt;&lt;/a&gt;  \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
<a id='L3084' name='L3084'></a>&lt;a id='L3070' name='L3070'&gt;&lt;/a&gt;  \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
<a id='L3085' name='L3085'></a>&lt;a id='L3071' name='L3071'&gt;&lt;/a&gt;}
<a id='L3086' name='L3086'></a>&lt;a id='L3072' name='L3072'&gt;&lt;/a&gt;
<a id='L3087' name='L3087'></a>&lt;a id='L3073' name='L3073'&gt;&lt;/a&gt;% definition of @key that produces a lozenge.  Doesn't adjust to text size.
<a id='L3088' name='L3088'></a>&lt;a id='L3074' name='L3074'&gt;&lt;/a&gt;%\setfont\keyrm\rmshape{8}{1000}{OT1}
<a id='L3089' name='L3089'></a>&lt;a id='L3075' name='L3075'&gt;&lt;/a&gt;%\font\keysy=cmsy9
<a id='L3090' name='L3090'></a>&lt;a id='L3076' name='L3076'&gt;&lt;/a&gt;%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
<a id='L3091' name='L3091'></a>&lt;a id='L3077' name='L3077'&gt;&lt;/a&gt;%  \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
<a id='L3092' name='L3092'></a>&lt;a id='L3078' name='L3078'&gt;&lt;/a&gt;%    \vbox{\hrule\kern-0.4pt
<a id='L3093' name='L3093'></a>&lt;a id='L3079' name='L3079'&gt;&lt;/a&gt;%     \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
<a id='L3094' name='L3094'></a>&lt;a id='L3080' name='L3080'&gt;&lt;/a&gt;%    \kern-0.4pt\hrule}%
<a id='L3095' name='L3095'></a>&lt;a id='L3081' name='L3081'&gt;&lt;/a&gt;%  \kern-.06em\raise0.4pt\hbox{\angleright}}}}
<a id='L3096' name='L3096'></a>&lt;a id='L3082' name='L3082'&gt;&lt;/a&gt;
<a id='L3097' name='L3097'></a>&lt;a id='L3083' name='L3083'&gt;&lt;/a&gt;% definition of @key with no lozenge.  If the current font is already
<a id='L3098' name='L3098'></a>&lt;a id='L3084' name='L3084'&gt;&lt;/a&gt;% monospace, don't change it; that way, we respect @kbdinputstyle.  But
<a id='L3099' name='L3099'></a>&lt;a id='L3085' name='L3085'&gt;&lt;/a&gt;% if it isn't monospace, then use \tt.
<a id='L3100' name='L3100'></a>&lt;a id='L3086' name='L3086'&gt;&lt;/a&gt;%
<a id='L3101' name='L3101'></a>&lt;a id='L3087' name='L3087'&gt;&lt;/a&gt;\def\key#1{{\setupmarkupstyle{key}%
<a id='L3102' name='L3102'></a>&lt;a id='L3088' name='L3088'&gt;&lt;/a&gt;  \nohyphenation
<a id='L3103' name='L3103'></a>&lt;a id='L3089' name='L3089'&gt;&lt;/a&gt;  \ifmonospace\else\tt\fi
<a id='L3104' name='L3104'></a>&lt;a id='L3090' name='L3090'&gt;&lt;/a&gt;  #1}\null}
<a id='L3105' name='L3105'></a>&lt;a id='L3091' name='L3091'&gt;&lt;/a&gt;
<a id='L3106' name='L3106'></a>&lt;a id='L3092' name='L3092'&gt;&lt;/a&gt;% @clicksequence{File @click{} Open ...}
<a id='L3107' name='L3107'></a>&lt;a id='L3093' name='L3093'&gt;&lt;/a&gt;\def\clicksequence#1{\begingroup #1\endgroup}
<a id='L3108' name='L3108'></a>&lt;a id='L3094' name='L3094'&gt;&lt;/a&gt;
<a id='L3109' name='L3109'></a>&lt;a id='L3095' name='L3095'&gt;&lt;/a&gt;% @clickstyle @arrow   (by default)
<a id='L3110' name='L3110'></a>&lt;a id='L3096' name='L3096'&gt;&lt;/a&gt;\parseargdef\clickstyle{\def\click{#1}}
<a id='L3111' name='L3111'></a>&lt;a id='L3097' name='L3097'&gt;&lt;/a&gt;\def\click{\arrow}
<a id='L3112' name='L3112'></a>&lt;a id='L3098' name='L3098'&gt;&lt;/a&gt;
<a id='L3113' name='L3113'></a>&lt;a id='L3099' name='L3099'&gt;&lt;/a&gt;% Typeset a dimension, e.g., `in' or `pt'.  The only reason for the
<a id='L3114' name='L3114'></a>&lt;a id='L3100' name='L3100'&gt;&lt;/a&gt;% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
<a id='L3115' name='L3115'></a>&lt;a id='L3101' name='L3101'&gt;&lt;/a&gt;%
<a id='L3116' name='L3116'></a>&lt;a id='L3102' name='L3102'&gt;&lt;/a&gt;\def\dmn#1{\thinspace #1}
<a id='L3117' name='L3117'></a>&lt;a id='L3103' name='L3103'&gt;&lt;/a&gt;
<a id='L3118' name='L3118'></a>&lt;a id='L3104' name='L3104'&gt;&lt;/a&gt;% @l was never documented to mean ``switch to the Lisp font'',
<a id='L3119' name='L3119'></a>&lt;a id='L3105' name='L3105'&gt;&lt;/a&gt;% and it is not used as such in any manual I can find.  We need it for
<a id='L3120' name='L3120'></a>&lt;a id='L3106' name='L3106'&gt;&lt;/a&gt;% Polish suppressed-l.  --karl, 22sep96.
<a id='L3121' name='L3121'></a>&lt;a id='L3107' name='L3107'&gt;&lt;/a&gt;%\def\l#1{{\li #1}\null}
<a id='L3122' name='L3122'></a>&lt;a id='L3108' name='L3108'&gt;&lt;/a&gt;
<a id='L3123' name='L3123'></a>&lt;a id='L3109' name='L3109'&gt;&lt;/a&gt;% @acronym for "FBI", "NATO", and the like.
<a id='L3124' name='L3124'></a>&lt;a id='L3110' name='L3110'&gt;&lt;/a&gt;% We print this one point size smaller, since it's intended for
<a id='L3125' name='L3125'></a>&lt;a id='L3111' name='L3111'&gt;&lt;/a&gt;% all-uppercase.
<a id='L3126' name='L3126'></a>&lt;a id='L3112' name='L3112'&gt;&lt;/a&gt;%
<a id='L3127' name='L3127'></a>&lt;a id='L3113' name='L3113'&gt;&lt;/a&gt;\def\acronym#1{\doacronym #1,,\finish}
<a id='L3128' name='L3128'></a>&lt;a id='L3114' name='L3114'&gt;&lt;/a&gt;\def\doacronym#1,#2,#3\finish{%
<a id='L3129' name='L3129'></a>&lt;a id='L3115' name='L3115'&gt;&lt;/a&gt;  {\selectfonts\lsize #1}%
<a id='L3130' name='L3130'></a>&lt;a id='L3116' name='L3116'&gt;&lt;/a&gt;  \def\temp{#2}%
<a id='L3131' name='L3131'></a>&lt;a id='L3117' name='L3117'&gt;&lt;/a&gt;  \ifx\temp\empty \else
<a id='L3132' name='L3132'></a>&lt;a id='L3118' name='L3118'&gt;&lt;/a&gt;    \space ({\unsepspaces \ignorespaces \temp \unskip})%
<a id='L3133' name='L3133'></a>&lt;a id='L3119' name='L3119'&gt;&lt;/a&gt;  \fi
<a id='L3134' name='L3134'></a>&lt;a id='L3120' name='L3120'&gt;&lt;/a&gt;  \null % reset \spacefactor=1000
<a id='L3135' name='L3135'></a>&lt;a id='L3121' name='L3121'&gt;&lt;/a&gt;}
<a id='L3136' name='L3136'></a>&lt;a id='L3122' name='L3122'&gt;&lt;/a&gt;
<a id='L3137' name='L3137'></a>&lt;a id='L3123' name='L3123'&gt;&lt;/a&gt;% @abbr for "Comput. J." and the like.
<a id='L3138' name='L3138'></a>&lt;a id='L3124' name='L3124'&gt;&lt;/a&gt;% No font change, but don't do end-of-sentence spacing.
<a id='L3139' name='L3139'></a>&lt;a id='L3125' name='L3125'&gt;&lt;/a&gt;%
<a id='L3140' name='L3140'></a>&lt;a id='L3126' name='L3126'&gt;&lt;/a&gt;\def\abbr#1{\doabbr #1,,\finish}
<a id='L3141' name='L3141'></a>&lt;a id='L3127' name='L3127'&gt;&lt;/a&gt;\def\doabbr#1,#2,#3\finish{%
<a id='L3142' name='L3142'></a>&lt;a id='L3128' name='L3128'&gt;&lt;/a&gt;  {\plainfrenchspacing #1}%
<a id='L3143' name='L3143'></a>&lt;a id='L3129' name='L3129'&gt;&lt;/a&gt;  \def\temp{#2}%
<a id='L3144' name='L3144'></a>&lt;a id='L3130' name='L3130'&gt;&lt;/a&gt;  \ifx\temp\empty \else
<a id='L3145' name='L3145'></a>&lt;a id='L3131' name='L3131'&gt;&lt;/a&gt;    \space ({\unsepspaces \ignorespaces \temp \unskip})%
<a id='L3146' name='L3146'></a>&lt;a id='L3132' name='L3132'&gt;&lt;/a&gt;  \fi
<a id='L3147' name='L3147'></a>&lt;a id='L3133' name='L3133'&gt;&lt;/a&gt;  \null % reset \spacefactor=1000
<a id='L3148' name='L3148'></a>&lt;a id='L3134' name='L3134'&gt;&lt;/a&gt;}
<a id='L3149' name='L3149'></a>&lt;a id='L3135' name='L3135'&gt;&lt;/a&gt;
<a id='L3150' name='L3150'></a>&lt;a id='L3136' name='L3136'&gt;&lt;/a&gt;% @asis just yields its argument.  Used with @table, for example.
<a id='L3151' name='L3151'></a>&lt;a id='L3137' name='L3137'&gt;&lt;/a&gt;%
<a id='L3152' name='L3152'></a>&lt;a id='L3138' name='L3138'&gt;&lt;/a&gt;\def\asis#1{#1}
<a id='L3153' name='L3153'></a>&lt;a id='L3139' name='L3139'&gt;&lt;/a&gt;
<a id='L3154' name='L3154'></a>&lt;a id='L3140' name='L3140'&gt;&lt;/a&gt;% @math outputs its argument in math mode.
<a id='L3155' name='L3155'></a>&lt;a id='L3141' name='L3141'&gt;&lt;/a&gt;%
<a id='L3156' name='L3156'></a>&lt;a id='L3142' name='L3142'&gt;&lt;/a&gt;% One complication: _ usually means subscripts, but it could also mean
<a id='L3157' name='L3157'></a>&lt;a id='L3143' name='L3143'&gt;&lt;/a&gt;% an actual _ character, as in @math{@var{some_variable} + 1}.  So make
<a id='L3158' name='L3158'></a>&lt;a id='L3144' name='L3144'&gt;&lt;/a&gt;% _ active, and distinguish by seeing if the current family is \slfam,
<a id='L3159' name='L3159'></a>&lt;a id='L3145' name='L3145'&gt;&lt;/a&gt;% which is what @var uses.
<a id='L3160' name='L3160'></a>&lt;a id='L3146' name='L3146'&gt;&lt;/a&gt;{
<a id='L3161' name='L3161'></a>&lt;a id='L3147' name='L3147'&gt;&lt;/a&gt;  \catcode`\_ = \active
<a id='L3162' name='L3162'></a>&lt;a id='L3148' name='L3148'&gt;&lt;/a&gt;  \gdef\mathunderscore{%
<a id='L3163' name='L3163'></a>&lt;a id='L3149' name='L3149'&gt;&lt;/a&gt;    \catcode`\_=\active
<a id='L3164' name='L3164'></a>&lt;a id='L3150' name='L3150'&gt;&lt;/a&gt;    \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
<a id='L3165' name='L3165'></a>&lt;a id='L3151' name='L3151'&gt;&lt;/a&gt;  }
<a id='L3166' name='L3166'></a>&lt;a id='L3152' name='L3152'&gt;&lt;/a&gt;}
<a id='L3167' name='L3167'></a>&lt;a id='L3153' name='L3153'&gt;&lt;/a&gt;% Another complication: we want \\ (and @\) to output a math (or tt) \.
<a id='L3168' name='L3168'></a>&lt;a id='L3154' name='L3154'&gt;&lt;/a&gt;% FYI, plain.tex uses \\ as a temporary control sequence (for no
<a id='L3169' name='L3169'></a>&lt;a id='L3155' name='L3155'&gt;&lt;/a&gt;% particular reason), but this is not advertised and we don't care.
<a id='L3170' name='L3170'></a>&lt;a id='L3156' name='L3156'&gt;&lt;/a&gt;%
<a id='L3171' name='L3171'></a>&lt;a id='L3157' name='L3157'&gt;&lt;/a&gt;% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
<a id='L3172' name='L3172'></a>&lt;a id='L3158' name='L3158'&gt;&lt;/a&gt;\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
<a id='L3173' name='L3173'></a>&lt;a id='L3159' name='L3159'&gt;&lt;/a&gt;%
<a id='L3174' name='L3174'></a>&lt;a id='L3160' name='L3160'&gt;&lt;/a&gt;\def\math{%
<a id='L3175' name='L3175'></a>&lt;a id='L3161' name='L3161'&gt;&lt;/a&gt;  \tex
<a id='L3176' name='L3176'></a>&lt;a id='L3162' name='L3162'&gt;&lt;/a&gt;  \mathunderscore
<a id='L3177' name='L3177'></a>&lt;a id='L3163' name='L3163'&gt;&lt;/a&gt;  \let\\ = \mathbackslash
<a id='L3178' name='L3178'></a>&lt;a id='L3164' name='L3164'&gt;&lt;/a&gt;  \mathactive
<a id='L3179' name='L3179'></a>&lt;a id='L3165' name='L3165'&gt;&lt;/a&gt;  % make the texinfo accent commands work in math mode
<a id='L3180' name='L3180'></a>&lt;a id='L3166' name='L3166'&gt;&lt;/a&gt;  \let\"=\ddot
<a id='L3181' name='L3181'></a>&lt;a id='L3167' name='L3167'&gt;&lt;/a&gt;  \let\'=\acute
<a id='L3182' name='L3182'></a>&lt;a id='L3168' name='L3168'&gt;&lt;/a&gt;  \let\==\bar
<a id='L3183' name='L3183'></a>&lt;a id='L3169' name='L3169'&gt;&lt;/a&gt;  \let\^=\hat
<a id='L3184' name='L3184'></a>&lt;a id='L3170' name='L3170'&gt;&lt;/a&gt;  \let\`=\grave
<a id='L3185' name='L3185'></a>&lt;a id='L3171' name='L3171'&gt;&lt;/a&gt;  \let\u=\breve
<a id='L3186' name='L3186'></a>&lt;a id='L3172' name='L3172'&gt;&lt;/a&gt;  \let\v=\check
<a id='L3187' name='L3187'></a>&lt;a id='L3173' name='L3173'&gt;&lt;/a&gt;  \let\~=\tilde
<a id='L3188' name='L3188'></a>&lt;a id='L3174' name='L3174'&gt;&lt;/a&gt;  \let\dotaccent=\dot
<a id='L3189' name='L3189'></a>&lt;a id='L3175' name='L3175'&gt;&lt;/a&gt;  $\finishmath
<a id='L3190' name='L3190'></a>&lt;a id='L3176' name='L3176'&gt;&lt;/a&gt;}
<a id='L3191' name='L3191'></a>&lt;a id='L3177' name='L3177'&gt;&lt;/a&gt;\def\finishmath#1{#1$\endgroup}  % Close the group opened by \tex.
<a id='L3192' name='L3192'></a>&lt;a id='L3178' name='L3178'&gt;&lt;/a&gt;
<a id='L3193' name='L3193'></a>&lt;a id='L3179' name='L3179'&gt;&lt;/a&gt;% Some active characters (such as &amp;lt;) are spaced differently in math.
<a id='L3194' name='L3194'></a>&lt;a id='L3180' name='L3180'&gt;&lt;/a&gt;% We have to reset their definitions in case the @math was an argument
<a id='L3195' name='L3195'></a>&lt;a id='L3181' name='L3181'&gt;&lt;/a&gt;% to a command which sets the catcodes (such as @item or @section).
<a id='L3196' name='L3196'></a>&lt;a id='L3182' name='L3182'&gt;&lt;/a&gt;%
<a id='L3197' name='L3197'></a>&lt;a id='L3183' name='L3183'&gt;&lt;/a&gt;{
<a id='L3198' name='L3198'></a>&lt;a id='L3184' name='L3184'&gt;&lt;/a&gt;  \catcode`^ = \active
<a id='L3199' name='L3199'></a>&lt;a id='L3185' name='L3185'&gt;&lt;/a&gt;  \catcode`&amp;lt; = \active
<a id='L3200' name='L3200'></a>&lt;a id='L3186' name='L3186'&gt;&lt;/a&gt;  \catcode`&amp;gt; = \active
<a id='L3201' name='L3201'></a>&lt;a id='L3187' name='L3187'&gt;&lt;/a&gt;  \catcode`+ = \active
<a id='L3202' name='L3202'></a>&lt;a id='L3188' name='L3188'&gt;&lt;/a&gt;  \catcode`' = \active
<a id='L3203' name='L3203'></a>&lt;a id='L3189' name='L3189'&gt;&lt;/a&gt;  \gdef\mathactive{%
<a id='L3204' name='L3204'></a>&lt;a id='L3190' name='L3190'&gt;&lt;/a&gt;    \let^ = \ptexhat
<a id='L3205' name='L3205'></a>&lt;a id='L3191' name='L3191'&gt;&lt;/a&gt;    \let&amp;lt; = \ptexless
<a id='L3206' name='L3206'></a>&lt;a id='L3192' name='L3192'&gt;&lt;/a&gt;    \let&amp;gt; = \ptexgtr
<a id='L3207' name='L3207'></a>&lt;a id='L3193' name='L3193'&gt;&lt;/a&gt;    \let+ = \ptexplus
<a id='L3208' name='L3208'></a>&lt;a id='L3194' name='L3194'&gt;&lt;/a&gt;    \let' = \ptexquoteright
<a id='L3209' name='L3209'></a>&lt;a id='L3195' name='L3195'&gt;&lt;/a&gt;  }
<a id='L3210' name='L3210'></a>&lt;a id='L3196' name='L3196'&gt;&lt;/a&gt;}
<a id='L3211' name='L3211'></a>&lt;a id='L3197' name='L3197'&gt;&lt;/a&gt;
<a id='L3212' name='L3212'></a>&lt;a id='L3198' name='L3198'&gt;&lt;/a&gt;% ctrl is no longer a Texinfo command, but leave this definition for fun.
<a id='L3213' name='L3213'></a>&lt;a id='L3199' name='L3199'&gt;&lt;/a&gt;\def\ctrl #1{{\tt \rawbackslash \hat}#1}
<a id='L3214' name='L3214'></a>&lt;a id='L3200' name='L3200'&gt;&lt;/a&gt;
<a id='L3215' name='L3215'></a>&lt;a id='L3201' name='L3201'&gt;&lt;/a&gt;% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}.
<a id='L3216' name='L3216'></a>&lt;a id='L3202' name='L3202'&gt;&lt;/a&gt;% Ignore unless FMTNAME == tex; then it is like @iftex and @tex,
<a id='L3217' name='L3217'></a>&lt;a id='L3203' name='L3203'&gt;&lt;/a&gt;% except specified as a normal braced arg, so no newlines to worry about.
<a id='L3218' name='L3218'></a>&lt;a id='L3204' name='L3204'&gt;&lt;/a&gt;% 
<a id='L3219' name='L3219'></a>&lt;a id='L3205' name='L3205'&gt;&lt;/a&gt;\def\outfmtnametex{tex}
<a id='L3220' name='L3220'></a>&lt;a id='L3206' name='L3206'&gt;&lt;/a&gt;%
<a id='L3221' name='L3221'></a>&lt;a id='L3207' name='L3207'&gt;&lt;/a&gt;\long\def\inlinefmt#1{\doinlinefmt #1,\finish}
<a id='L3222' name='L3222'></a>&lt;a id='L3208' name='L3208'&gt;&lt;/a&gt;\long\def\doinlinefmt#1,#2,\finish{%
<a id='L3223' name='L3223'></a>&lt;a id='L3209' name='L3209'&gt;&lt;/a&gt;  \def\inlinefmtname{#1}%
<a id='L3224' name='L3224'></a>&lt;a id='L3210' name='L3210'&gt;&lt;/a&gt;  \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi
<a id='L3225' name='L3225'></a>&lt;a id='L3211' name='L3211'&gt;&lt;/a&gt;}
<a id='L3226' name='L3226'></a>&lt;a id='L3212' name='L3212'&gt;&lt;/a&gt;% For raw, must switch into @tex before parsing the argument, to avoid
<a id='L3227' name='L3227'></a>&lt;a id='L3213' name='L3213'&gt;&lt;/a&gt;% setting catcodes prematurely.  Doing it this way means that, for
<a id='L3228' name='L3228'></a>&lt;a id='L3214' name='L3214'&gt;&lt;/a&gt;% example, @inlineraw{html, foo{bar} gets a parse error instead of being
<a id='L3229' name='L3229'></a>&lt;a id='L3215' name='L3215'&gt;&lt;/a&gt;% ignored.  But this isn't important because if people want a literal
<a id='L3230' name='L3230'></a>&lt;a id='L3216' name='L3216'&gt;&lt;/a&gt;% *right* brace they would have to use a command anyway, so they may as
<a id='L3231' name='L3231'></a>&lt;a id='L3217' name='L3217'&gt;&lt;/a&gt;% well use a command to get a left brace too.  We could re-use the
<a id='L3232' name='L3232'></a>&lt;a id='L3218' name='L3218'&gt;&lt;/a&gt;% delimiter character idea from \verb, but it seems like overkill.
<a id='L3233' name='L3233'></a>&lt;a id='L3219' name='L3219'&gt;&lt;/a&gt;% 
<a id='L3234' name='L3234'></a>&lt;a id='L3220' name='L3220'&gt;&lt;/a&gt;\long\def\inlineraw{\tex \doinlineraw}
<a id='L3235' name='L3235'></a>&lt;a id='L3221' name='L3221'&gt;&lt;/a&gt;\long\def\doinlineraw#1{\doinlinerawtwo #1,\finish}
<a id='L3236' name='L3236'></a>&lt;a id='L3222' name='L3222'&gt;&lt;/a&gt;\def\doinlinerawtwo#1,#2,\finish{%
<a id='L3237' name='L3237'></a>&lt;a id='L3223' name='L3223'&gt;&lt;/a&gt;  \def\inlinerawname{#1}%
<a id='L3238' name='L3238'></a>&lt;a id='L3224' name='L3224'&gt;&lt;/a&gt;  \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi
<a id='L3239' name='L3239'></a>&lt;a id='L3225' name='L3225'&gt;&lt;/a&gt;  \endgroup % close group opened by \tex.
<a id='L3240' name='L3240'></a>&lt;a id='L3226' name='L3226'&gt;&lt;/a&gt;}
<a id='L3241' name='L3241'></a>&lt;a id='L3227' name='L3227'&gt;&lt;/a&gt;
<a id='L3242' name='L3242'></a>&lt;a id='L3228' name='L3228'&gt;&lt;/a&gt;
<a id='L3243' name='L3243'></a>&lt;a id='L3229' name='L3229'&gt;&lt;/a&gt;\message{glyphs,}
<a id='L3244' name='L3244'></a>&lt;a id='L3230' name='L3230'&gt;&lt;/a&gt;% and logos.
<a id='L3245' name='L3245'></a>&lt;a id='L3231' name='L3231'&gt;&lt;/a&gt;
<a id='L3246' name='L3246'></a>&lt;a id='L3232' name='L3232'&gt;&lt;/a&gt;% @@ prints an @, as does @atchar{}.
<a id='L3247' name='L3247'></a>&lt;a id='L3233' name='L3233'&gt;&lt;/a&gt;\def\@{\char64 }
<a id='L3248' name='L3248'></a>&lt;a id='L3234' name='L3234'&gt;&lt;/a&gt;\let\atchar=\@
<a id='L3249' name='L3249'></a>&lt;a id='L3235' name='L3235'&gt;&lt;/a&gt;
<a id='L3250' name='L3250'></a>&lt;a id='L3236' name='L3236'&gt;&lt;/a&gt;% @{ @} @lbracechar{} @rbracechar{} all generate brace characters.
<a id='L3251' name='L3251'></a>&lt;a id='L3237' name='L3237'&gt;&lt;/a&gt;% Unless we're in typewriter, use \ecfont because the CM text fonts do
<a id='L3252' name='L3252'></a>&lt;a id='L3238' name='L3238'&gt;&lt;/a&gt;% not have braces, and we don't want to switch into math.
<a id='L3253' name='L3253'></a>&lt;a id='L3239' name='L3239'&gt;&lt;/a&gt;\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}}
<a id='L3254' name='L3254'></a>&lt;a id='L3240' name='L3240'&gt;&lt;/a&gt;\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}}
<a id='L3255' name='L3255'></a>&lt;a id='L3241' name='L3241'&gt;&lt;/a&gt;\let\{=\mylbrace \let\lbracechar=\{
<a id='L3256' name='L3256'></a>&lt;a id='L3242' name='L3242'&gt;&lt;/a&gt;\let\}=\myrbrace \let\rbracechar=\}
<a id='L3257' name='L3257'></a>&lt;a id='L3243' name='L3243'&gt;&lt;/a&gt;\begingroup
<a id='L3258' name='L3258'></a>&lt;a id='L3244' name='L3244'&gt;&lt;/a&gt;  % Definitions to produce \{ and \} commands for indices,
<a id='L3259' name='L3259'></a>&lt;a id='L3245' name='L3245'&gt;&lt;/a&gt;  % and @{ and @} for the aux/toc files.
<a id='L3260' name='L3260'></a>&lt;a id='L3246' name='L3246'&gt;&lt;/a&gt;  \catcode`\{ = \other \catcode`\} = \other
<a id='L3261' name='L3261'></a>&lt;a id='L3247' name='L3247'&gt;&lt;/a&gt;  \catcode`\[ = 1 \catcode`\] = 2
<a id='L3262' name='L3262'></a>&lt;a id='L3248' name='L3248'&gt;&lt;/a&gt;  \catcode`\! = 0 \catcode`\\ = \other
<a id='L3263' name='L3263'></a>&lt;a id='L3249' name='L3249'&gt;&lt;/a&gt;  !gdef!lbracecmd[\{]%
<a id='L3264' name='L3264'></a>&lt;a id='L3250' name='L3250'&gt;&lt;/a&gt;  !gdef!rbracecmd[\}]%
<a id='L3265' name='L3265'></a>&lt;a id='L3251' name='L3251'&gt;&lt;/a&gt;  !gdef!lbraceatcmd[@{]%
<a id='L3266' name='L3266'></a>&lt;a id='L3252' name='L3252'&gt;&lt;/a&gt;  !gdef!rbraceatcmd[@}]%
<a id='L3267' name='L3267'></a>&lt;a id='L3253' name='L3253'&gt;&lt;/a&gt;!endgroup
<a id='L3268' name='L3268'></a>&lt;a id='L3254' name='L3254'&gt;&lt;/a&gt;
<a id='L3269' name='L3269'></a>&lt;a id='L3255' name='L3255'&gt;&lt;/a&gt;% @comma{} to avoid , parsing problems.
<a id='L3270' name='L3270'></a>&lt;a id='L3256' name='L3256'&gt;&lt;/a&gt;\let\comma = ,
<a id='L3271' name='L3271'></a>&lt;a id='L3257' name='L3257'&gt;&lt;/a&gt;
<a id='L3272' name='L3272'></a>&lt;a id='L3258' name='L3258'&gt;&lt;/a&gt;% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
<a id='L3273' name='L3273'></a>&lt;a id='L3259' name='L3259'&gt;&lt;/a&gt;% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
<a id='L3274' name='L3274'></a>&lt;a id='L3260' name='L3260'&gt;&lt;/a&gt;\let\, = \ptexc
<a id='L3275' name='L3275'></a>&lt;a id='L3261' name='L3261'&gt;&lt;/a&gt;\let\dotaccent = \ptexdot
<a id='L3276' name='L3276'></a>&lt;a id='L3262' name='L3262'&gt;&lt;/a&gt;\def\ringaccent#1{{\accent23 #1}}
<a id='L3277' name='L3277'></a>&lt;a id='L3263' name='L3263'&gt;&lt;/a&gt;\let\tieaccent = \ptext
<a id='L3278' name='L3278'></a>&lt;a id='L3264' name='L3264'&gt;&lt;/a&gt;\let\ubaraccent = \ptexb
<a id='L3279' name='L3279'></a>&lt;a id='L3265' name='L3265'&gt;&lt;/a&gt;\let\udotaccent = \d
<a id='L3280' name='L3280'></a>&lt;a id='L3266' name='L3266'&gt;&lt;/a&gt;
<a id='L3281' name='L3281'></a>&lt;a id='L3267' name='L3267'&gt;&lt;/a&gt;% Other special characters: @questiondown @exclamdown @ordf @ordm
<a id='L3282' name='L3282'></a>&lt;a id='L3268' name='L3268'&gt;&lt;/a&gt;% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
<a id='L3283' name='L3283'></a>&lt;a id='L3269' name='L3269'&gt;&lt;/a&gt;\def\questiondown{?`}
<a id='L3284' name='L3284'></a>&lt;a id='L3270' name='L3270'&gt;&lt;/a&gt;\def\exclamdown{!`}
<a id='L3285' name='L3285'></a>&lt;a id='L3271' name='L3271'&gt;&lt;/a&gt;\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
<a id='L3286' name='L3286'></a>&lt;a id='L3272' name='L3272'&gt;&lt;/a&gt;\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
<a id='L3287' name='L3287'></a>&lt;a id='L3273' name='L3273'&gt;&lt;/a&gt;
<a id='L3288' name='L3288'></a>&lt;a id='L3274' name='L3274'&gt;&lt;/a&gt;% Dotless i and dotless j, used for accents.
<a id='L3289' name='L3289'></a>&lt;a id='L3275' name='L3275'&gt;&lt;/a&gt;\def\imacro{i}
<a id='L3290' name='L3290'></a>&lt;a id='L3276' name='L3276'&gt;&lt;/a&gt;\def\jmacro{j}
<a id='L3291' name='L3291'></a>&lt;a id='L3277' name='L3277'&gt;&lt;/a&gt;\def\dotless#1{%
<a id='L3292' name='L3292'></a>&lt;a id='L3278' name='L3278'&gt;&lt;/a&gt;  \def\temp{#1}%
<a id='L3293' name='L3293'></a>&lt;a id='L3279' name='L3279'&gt;&lt;/a&gt;  \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
<a id='L3294' name='L3294'></a>&lt;a id='L3280' name='L3280'&gt;&lt;/a&gt;  \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
<a id='L3295' name='L3295'></a>&lt;a id='L3281' name='L3281'&gt;&lt;/a&gt;  \else \errmessage{@dotless can be used only with i or j}%
<a id='L3296' name='L3296'></a>&lt;a id='L3282' name='L3282'&gt;&lt;/a&gt;  \fi\fi
<a id='L3297' name='L3297'></a>&lt;a id='L3283' name='L3283'&gt;&lt;/a&gt;}
<a id='L3298' name='L3298'></a>&lt;a id='L3284' name='L3284'&gt;&lt;/a&gt;
<a id='L3299' name='L3299'></a>&lt;a id='L3285' name='L3285'&gt;&lt;/a&gt;% The \TeX{} logo, as in plain, but resetting the spacing so that a
<a id='L3300' name='L3300'></a>&lt;a id='L3286' name='L3286'&gt;&lt;/a&gt;% period following counts as ending a sentence.  (Idea found in latex.)
<a id='L3301' name='L3301'></a>&lt;a id='L3287' name='L3287'&gt;&lt;/a&gt;%
<a id='L3302' name='L3302'></a>&lt;a id='L3288' name='L3288'&gt;&lt;/a&gt;\edef\TeX{\TeX \spacefactor=1000 }
<a id='L3303' name='L3303'></a>&lt;a id='L3289' name='L3289'&gt;&lt;/a&gt;
<a id='L3304' name='L3304'></a>&lt;a id='L3290' name='L3290'&gt;&lt;/a&gt;% @LaTeX{} logo.  Not quite the same results as the definition in
<a id='L3305' name='L3305'></a>&lt;a id='L3291' name='L3291'&gt;&lt;/a&gt;% latex.ltx, since we use a different font for the raised A; it's most
<a id='L3306' name='L3306'></a>&lt;a id='L3292' name='L3292'&gt;&lt;/a&gt;% convenient for us to use an explicitly smaller font, rather than using
<a id='L3307' name='L3307'></a>&lt;a id='L3293' name='L3293'&gt;&lt;/a&gt;% the \scriptstyle font (since we don't reset \scriptstyle and
<a id='L3308' name='L3308'></a>&lt;a id='L3294' name='L3294'&gt;&lt;/a&gt;% \scriptscriptstyle).
<a id='L3309' name='L3309'></a>&lt;a id='L3295' name='L3295'&gt;&lt;/a&gt;%
<a id='L3310' name='L3310'></a>&lt;a id='L3296' name='L3296'&gt;&lt;/a&gt;\def\LaTeX{%
<a id='L3311' name='L3311'></a>&lt;a id='L3297' name='L3297'&gt;&lt;/a&gt;  L\kern-.36em
<a id='L3312' name='L3312'></a>&lt;a id='L3298' name='L3298'&gt;&lt;/a&gt;  {\setbox0=\hbox{T}%
<a id='L3313' name='L3313'></a>&lt;a id='L3299' name='L3299'&gt;&lt;/a&gt;   \vbox to \ht0{\hbox{%
<a id='L3314' name='L3314'></a>&lt;a id='L3300' name='L3300'&gt;&lt;/a&gt;     \ifx\textnominalsize\xwordpt
<a id='L3315' name='L3315'></a>&lt;a id='L3301' name='L3301'&gt;&lt;/a&gt;       % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX.
<a id='L3316' name='L3316'></a>&lt;a id='L3302' name='L3302'&gt;&lt;/a&gt;       % Revert to plain's \scriptsize, which is 7pt.
<a id='L3317' name='L3317'></a>&lt;a id='L3303' name='L3303'&gt;&lt;/a&gt;       \count255=\the\fam $\fam\count255 \scriptstyle A$%
<a id='L3318' name='L3318'></a>&lt;a id='L3304' name='L3304'&gt;&lt;/a&gt;     \else
<a id='L3319' name='L3319'></a>&lt;a id='L3305' name='L3305'&gt;&lt;/a&gt;       % For 11pt, we can use our lllsize.
<a id='L3320' name='L3320'></a>&lt;a id='L3306' name='L3306'&gt;&lt;/a&gt;       \selectfonts\lllsize A%
<a id='L3321' name='L3321'></a>&lt;a id='L3307' name='L3307'&gt;&lt;/a&gt;     \fi
<a id='L3322' name='L3322'></a>&lt;a id='L3308' name='L3308'&gt;&lt;/a&gt;     }%
<a id='L3323' name='L3323'></a>&lt;a id='L3309' name='L3309'&gt;&lt;/a&gt;     \vss
<a id='L3324' name='L3324'></a>&lt;a id='L3310' name='L3310'&gt;&lt;/a&gt;  }}%
<a id='L3325' name='L3325'></a>&lt;a id='L3311' name='L3311'&gt;&lt;/a&gt;  \kern-.15em
<a id='L3326' name='L3326'></a>&lt;a id='L3312' name='L3312'&gt;&lt;/a&gt;  \TeX
<a id='L3327' name='L3327'></a>&lt;a id='L3313' name='L3313'&gt;&lt;/a&gt;}
<a id='L3328' name='L3328'></a>&lt;a id='L3314' name='L3314'&gt;&lt;/a&gt;
<a id='L3329' name='L3329'></a>&lt;a id='L3315' name='L3315'&gt;&lt;/a&gt;% Some math mode symbols.
<a id='L3330' name='L3330'></a>&lt;a id='L3316' name='L3316'&gt;&lt;/a&gt;\def\bullet{$\ptexbullet$}
<a id='L3331' name='L3331'></a>&lt;a id='L3317' name='L3317'&gt;&lt;/a&gt;\def\geq{\ifmmode \ge\else $\ge$\fi}
<a id='L3332' name='L3332'></a>&lt;a id='L3318' name='L3318'&gt;&lt;/a&gt;\def\leq{\ifmmode \le\else $\le$\fi}
<a id='L3333' name='L3333'></a>&lt;a id='L3319' name='L3319'&gt;&lt;/a&gt;\def\minus{\ifmmode -\else $-$\fi}
<a id='L3334' name='L3334'></a>&lt;a id='L3320' name='L3320'&gt;&lt;/a&gt;
<a id='L3335' name='L3335'></a>&lt;a id='L3321' name='L3321'&gt;&lt;/a&gt;% @dots{} outputs an ellipsis using the current font.
<a id='L3336' name='L3336'></a>&lt;a id='L3322' name='L3322'&gt;&lt;/a&gt;% We do .5em per period so that it has the same spacing in the cm
<a id='L3337' name='L3337'></a>&lt;a id='L3323' name='L3323'&gt;&lt;/a&gt;% typewriter fonts as three actual period characters; on the other hand,
<a id='L3338' name='L3338'></a>&lt;a id='L3324' name='L3324'&gt;&lt;/a&gt;% in other typewriter fonts three periods are wider than 1.5em.  So do
<a id='L3339' name='L3339'></a>&lt;a id='L3325' name='L3325'&gt;&lt;/a&gt;% whichever is larger.
<a id='L3340' name='L3340'></a>&lt;a id='L3326' name='L3326'&gt;&lt;/a&gt;%
<a id='L3341' name='L3341'></a>&lt;a id='L3327' name='L3327'&gt;&lt;/a&gt;\def\dots{%
<a id='L3342' name='L3342'></a>&lt;a id='L3328' name='L3328'&gt;&lt;/a&gt;  \leavevmode
<a id='L3343' name='L3343'></a>&lt;a id='L3329' name='L3329'&gt;&lt;/a&gt;  \setbox0=\hbox{...}% get width of three periods
<a id='L3344' name='L3344'></a>&lt;a id='L3330' name='L3330'&gt;&lt;/a&gt;  \ifdim\wd0 &amp;gt; 1.5em
<a id='L3345' name='L3345'></a>&lt;a id='L3331' name='L3331'&gt;&lt;/a&gt;    \dimen0 = \wd0
<a id='L3346' name='L3346'></a>&lt;a id='L3332' name='L3332'&gt;&lt;/a&gt;  \else
<a id='L3347' name='L3347'></a>&lt;a id='L3333' name='L3333'&gt;&lt;/a&gt;    \dimen0 = 1.5em
<a id='L3348' name='L3348'></a>&lt;a id='L3334' name='L3334'&gt;&lt;/a&gt;  \fi
<a id='L3349' name='L3349'></a>&lt;a id='L3335' name='L3335'&gt;&lt;/a&gt;  \hbox to \dimen0{%
<a id='L3350' name='L3350'></a>&lt;a id='L3336' name='L3336'&gt;&lt;/a&gt;    \hskip 0pt plus.25fil
<a id='L3351' name='L3351'></a>&lt;a id='L3337' name='L3337'&gt;&lt;/a&gt;    .\hskip 0pt plus1fil
<a id='L3352' name='L3352'></a>&lt;a id='L3338' name='L3338'&gt;&lt;/a&gt;    .\hskip 0pt plus1fil
<a id='L3353' name='L3353'></a>&lt;a id='L3339' name='L3339'&gt;&lt;/a&gt;    .\hskip 0pt plus.5fil
<a id='L3354' name='L3354'></a>&lt;a id='L3340' name='L3340'&gt;&lt;/a&gt;  }%
<a id='L3355' name='L3355'></a>&lt;a id='L3341' name='L3341'&gt;&lt;/a&gt;}
<a id='L3356' name='L3356'></a>&lt;a id='L3342' name='L3342'&gt;&lt;/a&gt;
<a id='L3357' name='L3357'></a>&lt;a id='L3343' name='L3343'&gt;&lt;/a&gt;% @enddots{} is an end-of-sentence ellipsis.
<a id='L3358' name='L3358'></a>&lt;a id='L3344' name='L3344'&gt;&lt;/a&gt;%
<a id='L3359' name='L3359'></a>&lt;a id='L3345' name='L3345'&gt;&lt;/a&gt;\def\enddots{%
<a id='L3360' name='L3360'></a>&lt;a id='L3346' name='L3346'&gt;&lt;/a&gt;  \dots
<a id='L3361' name='L3361'></a>&lt;a id='L3347' name='L3347'&gt;&lt;/a&gt;  \spacefactor=\endofsentencespacefactor
<a id='L3362' name='L3362'></a>&lt;a id='L3348' name='L3348'&gt;&lt;/a&gt;}
<a id='L3363' name='L3363'></a>&lt;a id='L3349' name='L3349'&gt;&lt;/a&gt;
<a id='L3364' name='L3364'></a>&lt;a id='L3350' name='L3350'&gt;&lt;/a&gt;% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
<a id='L3365' name='L3365'></a>&lt;a id='L3351' name='L3351'&gt;&lt;/a&gt;%
<a id='L3366' name='L3366'></a>&lt;a id='L3352' name='L3352'&gt;&lt;/a&gt;% Since these characters are used in examples, they should be an even number of
<a id='L3367' name='L3367'></a>&lt;a id='L3353' name='L3353'&gt;&lt;/a&gt;% \tt widths. Each \tt character is 1en, so two makes it 1em.
<a id='L3368' name='L3368'></a>&lt;a id='L3354' name='L3354'&gt;&lt;/a&gt;%
<a id='L3369' name='L3369'></a>&lt;a id='L3355' name='L3355'&gt;&lt;/a&gt;\def\point{$\star$}
<a id='L3370' name='L3370'></a>&lt;a id='L3356' name='L3356'&gt;&lt;/a&gt;\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}}
<a id='L3371' name='L3371'></a>&lt;a id='L3357' name='L3357'&gt;&lt;/a&gt;\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
<a id='L3372' name='L3372'></a>&lt;a id='L3358' name='L3358'&gt;&lt;/a&gt;\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}}
<a id='L3373' name='L3373'></a>&lt;a id='L3359' name='L3359'&gt;&lt;/a&gt;\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
<a id='L3374' name='L3374'></a>&lt;a id='L3360' name='L3360'&gt;&lt;/a&gt;\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}}
<a id='L3375' name='L3375'></a>&lt;a id='L3361' name='L3361'&gt;&lt;/a&gt;
<a id='L3376' name='L3376'></a>&lt;a id='L3362' name='L3362'&gt;&lt;/a&gt;% The @error{} command.
<a id='L3377' name='L3377'></a>&lt;a id='L3363' name='L3363'&gt;&lt;/a&gt;% Adapted from the TeXbook's \boxit.
<a id='L3378' name='L3378'></a>&lt;a id='L3364' name='L3364'&gt;&lt;/a&gt;%
<a id='L3379' name='L3379'></a>&lt;a id='L3365' name='L3365'&gt;&lt;/a&gt;\newbox\errorbox
<a id='L3380' name='L3380'></a>&lt;a id='L3366' name='L3366'&gt;&lt;/a&gt;%
<a id='L3381' name='L3381'></a>&lt;a id='L3367' name='L3367'&gt;&lt;/a&gt;{\tentt \global\dimen0 = 3em}% Width of the box.
<a id='L3382' name='L3382'></a>&lt;a id='L3368' name='L3368'&gt;&lt;/a&gt;\dimen2 = .55pt % Thickness of rules
<a id='L3383' name='L3383'></a>&lt;a id='L3369' name='L3369'&gt;&lt;/a&gt;% The text. (`r' is open on the right, `e' somewhat less so on the left.)
<a id='L3384' name='L3384'></a>&lt;a id='L3370' name='L3370'&gt;&lt;/a&gt;\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt}
<a id='L3385' name='L3385'></a>&lt;a id='L3371' name='L3371'&gt;&lt;/a&gt;%
<a id='L3386' name='L3386'></a>&lt;a id='L3372' name='L3372'&gt;&lt;/a&gt;\setbox\errorbox=\hbox to \dimen0{\hfil
<a id='L3387' name='L3387'></a>&lt;a id='L3373' name='L3373'&gt;&lt;/a&gt;   \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
<a id='L3388' name='L3388'></a>&lt;a id='L3374' name='L3374'&gt;&lt;/a&gt;   \advance\hsize by -2\dimen2 % Rules.
<a id='L3389' name='L3389'></a>&lt;a id='L3375' name='L3375'&gt;&lt;/a&gt;   \vbox{%
<a id='L3390' name='L3390'></a>&lt;a id='L3376' name='L3376'&gt;&lt;/a&gt;      \hrule height\dimen2
<a id='L3391' name='L3391'></a>&lt;a id='L3377' name='L3377'&gt;&lt;/a&gt;      \hbox{\vrule width\dimen2 \kern3pt          % Space to left of text.
<a id='L3392' name='L3392'></a>&lt;a id='L3378' name='L3378'&gt;&lt;/a&gt;         \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
<a id='L3393' name='L3393'></a>&lt;a id='L3379' name='L3379'&gt;&lt;/a&gt;         \kern3pt\vrule width\dimen2}% Space to right.
<a id='L3394' name='L3394'></a>&lt;a id='L3380' name='L3380'&gt;&lt;/a&gt;      \hrule height\dimen2}
<a id='L3395' name='L3395'></a>&lt;a id='L3381' name='L3381'&gt;&lt;/a&gt;    \hfil}
<a id='L3396' name='L3396'></a>&lt;a id='L3382' name='L3382'&gt;&lt;/a&gt;%
<a id='L3397' name='L3397'></a>&lt;a id='L3383' name='L3383'&gt;&lt;/a&gt;\def\error{\leavevmode\lower.7ex\copy\errorbox}
<a id='L3398' name='L3398'></a>&lt;a id='L3384' name='L3384'&gt;&lt;/a&gt;
<a id='L3399' name='L3399'></a>&lt;a id='L3385' name='L3385'&gt;&lt;/a&gt;% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
<a id='L3400' name='L3400'></a>&lt;a id='L3386' name='L3386'&gt;&lt;/a&gt;%
<a id='L3401' name='L3401'></a>&lt;a id='L3387' name='L3387'&gt;&lt;/a&gt;\def\pounds{{\it\$}}
<a id='L3402' name='L3402'></a>&lt;a id='L3388' name='L3388'&gt;&lt;/a&gt;
<a id='L3403' name='L3403'></a>&lt;a id='L3389' name='L3389'&gt;&lt;/a&gt;% @euro{} comes from a separate font, depending on the current style.
<a id='L3404' name='L3404'></a>&lt;a id='L3390' name='L3390'&gt;&lt;/a&gt;% We use the free feym* fonts from the eurosym package by Henrik
<a id='L3405' name='L3405'></a>&lt;a id='L3391' name='L3391'&gt;&lt;/a&gt;% Theiling, which support regular, slanted, bold and bold slanted (and
<a id='L3406' name='L3406'></a>&lt;a id='L3392' name='L3392'&gt;&lt;/a&gt;% "outlined" (blackboard board, sort of) versions, which we don't need).
<a id='L3407' name='L3407'></a>&lt;a id='L3393' name='L3393'&gt;&lt;/a&gt;% It is available from http://www.ctan.org/tex-archive/fonts/eurosym.
<a id='L3408' name='L3408'></a>&lt;a id='L3394' name='L3394'&gt;&lt;/a&gt;%
<a id='L3409' name='L3409'></a>&lt;a id='L3395' name='L3395'&gt;&lt;/a&gt;% Although only regular is the truly official Euro symbol, we ignore
<a id='L3410' name='L3410'></a>&lt;a id='L3396' name='L3396'&gt;&lt;/a&gt;% that.  The Euro is designed to be slightly taller than the regular
<a id='L3411' name='L3411'></a>&lt;a id='L3397' name='L3397'&gt;&lt;/a&gt;% font height.
<a id='L3412' name='L3412'></a>&lt;a id='L3398' name='L3398'&gt;&lt;/a&gt;%
<a id='L3413' name='L3413'></a>&lt;a id='L3399' name='L3399'&gt;&lt;/a&gt;% feymr - regular
<a id='L3414' name='L3414'></a>&lt;a id='L3400' name='L3400'&gt;&lt;/a&gt;% feymo - slanted
<a id='L3415' name='L3415'></a>&lt;a id='L3401' name='L3401'&gt;&lt;/a&gt;% feybr - bold
<a id='L3416' name='L3416'></a>&lt;a id='L3402' name='L3402'&gt;&lt;/a&gt;% feybo - bold slanted
<a id='L3417' name='L3417'></a>&lt;a id='L3403' name='L3403'&gt;&lt;/a&gt;%
<a id='L3418' name='L3418'></a>&lt;a id='L3404' name='L3404'&gt;&lt;/a&gt;% There is no good (free) typewriter version, to my knowledge.
<a id='L3419' name='L3419'></a>&lt;a id='L3405' name='L3405'&gt;&lt;/a&gt;% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide.
<a id='L3420' name='L3420'></a>&lt;a id='L3406' name='L3406'&gt;&lt;/a&gt;% Hmm.
<a id='L3421' name='L3421'></a>&lt;a id='L3407' name='L3407'&gt;&lt;/a&gt;%
<a id='L3422' name='L3422'></a>&lt;a id='L3408' name='L3408'&gt;&lt;/a&gt;% Also doesn't work in math.  Do we need to do math with euro symbols?
<a id='L3423' name='L3423'></a>&lt;a id='L3409' name='L3409'&gt;&lt;/a&gt;% Hope not.
<a id='L3424' name='L3424'></a>&lt;a id='L3410' name='L3410'&gt;&lt;/a&gt;%
<a id='L3425' name='L3425'></a>&lt;a id='L3411' name='L3411'&gt;&lt;/a&gt;%
<a id='L3426' name='L3426'></a>&lt;a id='L3412' name='L3412'&gt;&lt;/a&gt;\def\euro{{\eurofont e}}
<a id='L3427' name='L3427'></a>&lt;a id='L3413' name='L3413'&gt;&lt;/a&gt;\def\eurofont{%
<a id='L3428' name='L3428'></a>&lt;a id='L3414' name='L3414'&gt;&lt;/a&gt;  % We set the font at each command, rather than predefining it in
<a id='L3429' name='L3429'></a>&lt;a id='L3415' name='L3415'&gt;&lt;/a&gt;  % \textfonts and the other font-switching commands, so that
<a id='L3430' name='L3430'></a>&lt;a id='L3416' name='L3416'&gt;&lt;/a&gt;  % installations which never need the symbol don't have to have the
<a id='L3431' name='L3431'></a>&lt;a id='L3417' name='L3417'&gt;&lt;/a&gt;  % font installed.
<a id='L3432' name='L3432'></a>&lt;a id='L3418' name='L3418'&gt;&lt;/a&gt;  %
<a id='L3433' name='L3433'></a>&lt;a id='L3419' name='L3419'&gt;&lt;/a&gt;  % There is only one designed size (nominal 10pt), so we always scale
<a id='L3434' name='L3434'></a>&lt;a id='L3420' name='L3420'&gt;&lt;/a&gt;  % that to the current nominal size.
<a id='L3435' name='L3435'></a>&lt;a id='L3421' name='L3421'&gt;&lt;/a&gt;  %
<a id='L3436' name='L3436'></a>&lt;a id='L3422' name='L3422'&gt;&lt;/a&gt;  % By the way, simply using "at 1em" works for cmr10 and the like, but
<a id='L3437' name='L3437'></a>&lt;a id='L3423' name='L3423'&gt;&lt;/a&gt;  % does not work for cmbx10 and other extended/shrunken fonts.
<a id='L3438' name='L3438'></a>&lt;a id='L3424' name='L3424'&gt;&lt;/a&gt;  %
<a id='L3439' name='L3439'></a>&lt;a id='L3425' name='L3425'&gt;&lt;/a&gt;  \def\eurosize{\csname\curfontsize nominalsize\endcsname}%
<a id='L3440' name='L3440'></a>&lt;a id='L3426' name='L3426'&gt;&lt;/a&gt;  %
<a id='L3441' name='L3441'></a>&lt;a id='L3427' name='L3427'&gt;&lt;/a&gt;  \ifx\curfontstyle\bfstylename
<a id='L3442' name='L3442'></a>&lt;a id='L3428' name='L3428'&gt;&lt;/a&gt;    % bold:
<a id='L3443' name='L3443'></a>&lt;a id='L3429' name='L3429'&gt;&lt;/a&gt;    \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize
<a id='L3444' name='L3444'></a>&lt;a id='L3430' name='L3430'&gt;&lt;/a&gt;  \else
<a id='L3445' name='L3445'></a>&lt;a id='L3431' name='L3431'&gt;&lt;/a&gt;    % regular:
<a id='L3446' name='L3446'></a>&lt;a id='L3432' name='L3432'&gt;&lt;/a&gt;    \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
<a id='L3447' name='L3447'></a>&lt;a id='L3433' name='L3433'&gt;&lt;/a&gt;  \fi
<a id='L3448' name='L3448'></a>&lt;a id='L3434' name='L3434'&gt;&lt;/a&gt;  \thiseurofont
<a id='L3449' name='L3449'></a>&lt;a id='L3435' name='L3435'&gt;&lt;/a&gt;}
<a id='L3450' name='L3450'></a>&lt;a id='L3436' name='L3436'&gt;&lt;/a&gt;
<a id='L3451' name='L3451'></a>&lt;a id='L3437' name='L3437'&gt;&lt;/a&gt;% Glyphs from the EC fonts.  We don't use \let for the aliases, because
<a id='L3452' name='L3452'></a>&lt;a id='L3438' name='L3438'&gt;&lt;/a&gt;% sometimes we redefine the original macro, and the alias should reflect
<a id='L3453' name='L3453'></a>&lt;a id='L3439' name='L3439'&gt;&lt;/a&gt;% the redefinition.
<a id='L3454' name='L3454'></a>&lt;a id='L3440' name='L3440'&gt;&lt;/a&gt;%
<a id='L3455' name='L3455'></a>&lt;a id='L3441' name='L3441'&gt;&lt;/a&gt;% Use LaTeX names for the Icelandic letters.
<a id='L3456' name='L3456'></a>&lt;a id='L3442' name='L3442'&gt;&lt;/a&gt;\def\DH{{\ecfont \char"D0}} % Eth
<a id='L3457' name='L3457'></a>&lt;a id='L3443' name='L3443'&gt;&lt;/a&gt;\def\dh{{\ecfont \char"F0}} % eth
<a id='L3458' name='L3458'></a>&lt;a id='L3444' name='L3444'&gt;&lt;/a&gt;\def\TH{{\ecfont \char"DE}} % Thorn
<a id='L3459' name='L3459'></a>&lt;a id='L3445' name='L3445'&gt;&lt;/a&gt;\def\th{{\ecfont \char"FE}} % thorn
<a id='L3460' name='L3460'></a>&lt;a id='L3446' name='L3446'&gt;&lt;/a&gt;%
<a id='L3461' name='L3461'></a>&lt;a id='L3447' name='L3447'&gt;&lt;/a&gt;\def\guillemetleft{{\ecfont \char"13}}
<a id='L3462' name='L3462'></a>&lt;a id='L3448' name='L3448'&gt;&lt;/a&gt;\def\guillemotleft{\guillemetleft}
<a id='L3463' name='L3463'></a>&lt;a id='L3449' name='L3449'&gt;&lt;/a&gt;\def\guillemetright{{\ecfont \char"14}}
<a id='L3464' name='L3464'></a>&lt;a id='L3450' name='L3450'&gt;&lt;/a&gt;\def\guillemotright{\guillemetright}
<a id='L3465' name='L3465'></a>&lt;a id='L3451' name='L3451'&gt;&lt;/a&gt;\def\guilsinglleft{{\ecfont \char"0E}}
<a id='L3466' name='L3466'></a>&lt;a id='L3452' name='L3452'&gt;&lt;/a&gt;\def\guilsinglright{{\ecfont \char"0F}}
<a id='L3467' name='L3467'></a>&lt;a id='L3453' name='L3453'&gt;&lt;/a&gt;\def\quotedblbase{{\ecfont \char"12}}
<a id='L3468' name='L3468'></a>&lt;a id='L3454' name='L3454'&gt;&lt;/a&gt;\def\quotesinglbase{{\ecfont \char"0D}}
<a id='L3469' name='L3469'></a>&lt;a id='L3455' name='L3455'&gt;&lt;/a&gt;%
<a id='L3470' name='L3470'></a>&lt;a id='L3456' name='L3456'&gt;&lt;/a&gt;% This positioning is not perfect (see the ogonek LaTeX package), but
<a id='L3471' name='L3471'></a>&lt;a id='L3457' name='L3457'&gt;&lt;/a&gt;% we have the precomposed glyphs for the most common cases.  We put the
<a id='L3472' name='L3472'></a>&lt;a id='L3458' name='L3458'&gt;&lt;/a&gt;% tests to use those glyphs in the single \ogonek macro so we have fewer
<a id='L3473' name='L3473'></a>&lt;a id='L3459' name='L3459'&gt;&lt;/a&gt;% dummy definitions to worry about for index entries, etc.
<a id='L3474' name='L3474'></a>&lt;a id='L3460' name='L3460'&gt;&lt;/a&gt;%
<a id='L3475' name='L3475'></a>&lt;a id='L3461' name='L3461'&gt;&lt;/a&gt;% ogonek is also used with other letters in Lithuanian (IOU), but using
<a id='L3476' name='L3476'></a>&lt;a id='L3462' name='L3462'&gt;&lt;/a&gt;% the precomposed glyphs for those is not so easy since they aren't in
<a id='L3477' name='L3477'></a>&lt;a id='L3463' name='L3463'&gt;&lt;/a&gt;% the same EC font.
<a id='L3478' name='L3478'></a>&lt;a id='L3464' name='L3464'&gt;&lt;/a&gt;\def\ogonek#1{{%
<a id='L3479' name='L3479'></a>&lt;a id='L3465' name='L3465'&gt;&lt;/a&gt;  \def\temp{#1}%
<a id='L3480' name='L3480'></a>&lt;a id='L3466' name='L3466'&gt;&lt;/a&gt;  \ifx\temp\macrocharA\Aogonek
<a id='L3481' name='L3481'></a>&lt;a id='L3467' name='L3467'&gt;&lt;/a&gt;  \else\ifx\temp\macrochara\aogonek
<a id='L3482' name='L3482'></a>&lt;a id='L3468' name='L3468'&gt;&lt;/a&gt;  \else\ifx\temp\macrocharE\Eogonek
<a id='L3483' name='L3483'></a>&lt;a id='L3469' name='L3469'&gt;&lt;/a&gt;  \else\ifx\temp\macrochare\eogonek
<a id='L3484' name='L3484'></a>&lt;a id='L3470' name='L3470'&gt;&lt;/a&gt;  \else
<a id='L3485' name='L3485'></a>&lt;a id='L3471' name='L3471'&gt;&lt;/a&gt;    \ecfont \setbox0=\hbox{#1}%
<a id='L3486' name='L3486'></a>&lt;a id='L3472' name='L3472'&gt;&lt;/a&gt;    \ifdim\ht0=1ex\accent"0C #1%
<a id='L3487' name='L3487'></a>&lt;a id='L3473' name='L3473'&gt;&lt;/a&gt;    \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}%
<a id='L3488' name='L3488'></a>&lt;a id='L3474' name='L3474'&gt;&lt;/a&gt;    \fi
<a id='L3489' name='L3489'></a>&lt;a id='L3475' name='L3475'&gt;&lt;/a&gt;  \fi\fi\fi\fi
<a id='L3490' name='L3490'></a>&lt;a id='L3476' name='L3476'&gt;&lt;/a&gt;  }%
<a id='L3491' name='L3491'></a>&lt;a id='L3477' name='L3477'&gt;&lt;/a&gt;}
<a id='L3492' name='L3492'></a>&lt;a id='L3478' name='L3478'&gt;&lt;/a&gt;\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A}
<a id='L3493' name='L3493'></a>&lt;a id='L3479' name='L3479'&gt;&lt;/a&gt;\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a}
<a id='L3494' name='L3494'></a>&lt;a id='L3480' name='L3480'&gt;&lt;/a&gt;\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E}
<a id='L3495' name='L3495'></a>&lt;a id='L3481' name='L3481'&gt;&lt;/a&gt;\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e}
<a id='L3496' name='L3496'></a>&lt;a id='L3482' name='L3482'&gt;&lt;/a&gt;%
<a id='L3497' name='L3497'></a>&lt;a id='L3483' name='L3483'&gt;&lt;/a&gt;% Use the ec* fonts (cm-super in outline format) for non-CM glyphs.
<a id='L3498' name='L3498'></a>&lt;a id='L3484' name='L3484'&gt;&lt;/a&gt;\def\ecfont{%
<a id='L3499' name='L3499'></a>&lt;a id='L3485' name='L3485'&gt;&lt;/a&gt;  % We can't distinguish serif/sans and italic/slanted, but this
<a id='L3500' name='L3500'></a>&lt;a id='L3486' name='L3486'&gt;&lt;/a&gt;  % is used for crude hacks anyway (like adding French and German
<a id='L3501' name='L3501'></a>&lt;a id='L3487' name='L3487'&gt;&lt;/a&gt;  % quotes to documents typeset with CM, where we lose kerning), so
<a id='L3502' name='L3502'></a>&lt;a id='L3488' name='L3488'&gt;&lt;/a&gt;  % hopefully nobody will notice/care.
<a id='L3503' name='L3503'></a>&lt;a id='L3489' name='L3489'&gt;&lt;/a&gt;  \edef\ecsize{\csname\curfontsize ecsize\endcsname}%
<a id='L3504' name='L3504'></a>&lt;a id='L3490' name='L3490'&gt;&lt;/a&gt;  \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}%
<a id='L3505' name='L3505'></a>&lt;a id='L3491' name='L3491'&gt;&lt;/a&gt;  \ifmonospace
<a id='L3506' name='L3506'></a>&lt;a id='L3492' name='L3492'&gt;&lt;/a&gt;    % typewriter:
<a id='L3507' name='L3507'></a>&lt;a id='L3493' name='L3493'&gt;&lt;/a&gt;    \font\thisecfont = ectt\ecsize \space at \nominalsize
<a id='L3508' name='L3508'></a>&lt;a id='L3494' name='L3494'&gt;&lt;/a&gt;  \else
<a id='L3509' name='L3509'></a>&lt;a id='L3495' name='L3495'&gt;&lt;/a&gt;    \ifx\curfontstyle\bfstylename
<a id='L3510' name='L3510'></a>&lt;a id='L3496' name='L3496'&gt;&lt;/a&gt;      % bold:
<a id='L3511' name='L3511'></a>&lt;a id='L3497' name='L3497'&gt;&lt;/a&gt;      \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize
<a id='L3512' name='L3512'></a>&lt;a id='L3498' name='L3498'&gt;&lt;/a&gt;    \else
<a id='L3513' name='L3513'></a>&lt;a id='L3499' name='L3499'&gt;&lt;/a&gt;      % regular:
<a id='L3514' name='L3514'></a>&lt;a id='L3500' name='L3500'&gt;&lt;/a&gt;      \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize
<a id='L3515' name='L3515'></a>&lt;a id='L3501' name='L3501'&gt;&lt;/a&gt;    \fi
<a id='L3516' name='L3516'></a>&lt;a id='L3502' name='L3502'&gt;&lt;/a&gt;  \fi
<a id='L3517' name='L3517'></a>&lt;a id='L3503' name='L3503'&gt;&lt;/a&gt;  \thisecfont
<a id='L3518' name='L3518'></a>&lt;a id='L3504' name='L3504'&gt;&lt;/a&gt;}
<a id='L3519' name='L3519'></a>&lt;a id='L3505' name='L3505'&gt;&lt;/a&gt;
<a id='L3520' name='L3520'></a>&lt;a id='L3506' name='L3506'&gt;&lt;/a&gt;% @registeredsymbol - R in a circle.  The font for the R should really
<a id='L3521' name='L3521'></a>&lt;a id='L3507' name='L3507'&gt;&lt;/a&gt;% be smaller yet, but lllsize is the best we can do for now.
<a id='L3522' name='L3522'></a>&lt;a id='L3508' name='L3508'&gt;&lt;/a&gt;% Adapted from the plain.tex definition of \copyright.
<a id='L3523' name='L3523'></a>&lt;a id='L3509' name='L3509'&gt;&lt;/a&gt;%
<a id='L3524' name='L3524'></a>&lt;a id='L3510' name='L3510'&gt;&lt;/a&gt;\font\onlytodefineregisteredsymbol=psyr at 7pt
<a id='L3525' name='L3525'></a>&lt;a id='L3511' name='L3511'&gt;&lt;/a&gt;\def\registeredsymbol{%
<a id='L3526' name='L3526'></a>&lt;a id='L3512' name='L3512'&gt;&lt;/a&gt;$^{\hbox{\onlytodefineregisteredsymbol\char210\relax}}$%
<a id='L3527' name='L3527'></a>&lt;a id='L3513' name='L3513'&gt;&lt;/a&gt;}
<a id='L3528' name='L3528'></a>&lt;a id='L3514' name='L3514'&gt;&lt;/a&gt;
<a id='L3529' name='L3529'></a>&lt;a id='L3515' name='L3515'&gt;&lt;/a&gt;% @textdegree - the normal degrees sign.
<a id='L3530' name='L3530'></a>&lt;a id='L3516' name='L3516'&gt;&lt;/a&gt;%
<a id='L3531' name='L3531'></a>&lt;a id='L3517' name='L3517'&gt;&lt;/a&gt;\def\textdegree{$^\circ$}
<a id='L3532' name='L3532'></a>&lt;a id='L3518' name='L3518'&gt;&lt;/a&gt;
<a id='L3533' name='L3533'></a>&lt;a id='L3519' name='L3519'&gt;&lt;/a&gt;% Laurent Siebenmann reports \Orb undefined with:
<a id='L3534' name='L3534'></a>&lt;a id='L3520' name='L3520'&gt;&lt;/a&gt;%  Textures 1.7.7 (preloaded format=plain 93.10.14)  (68K)  16 APR 2004 02:38
<a id='L3535' name='L3535'></a>&lt;a id='L3521' name='L3521'&gt;&lt;/a&gt;% so we'll define it if necessary.
<a id='L3536' name='L3536'></a>&lt;a id='L3522' name='L3522'&gt;&lt;/a&gt;%
<a id='L3537' name='L3537'></a>&lt;a id='L3523' name='L3523'&gt;&lt;/a&gt;\ifx\Orb\thisisundefined
<a id='L3538' name='L3538'></a>&lt;a id='L3524' name='L3524'&gt;&lt;/a&gt;\def\Orb{\mathhexbox20D}
<a id='L3539' name='L3539'></a>&lt;a id='L3525' name='L3525'&gt;&lt;/a&gt;\fi
<a id='L3540' name='L3540'></a>&lt;a id='L3526' name='L3526'&gt;&lt;/a&gt;
<a id='L3541' name='L3541'></a>&lt;a id='L3527' name='L3527'&gt;&lt;/a&gt;% Quotes.
<a id='L3542' name='L3542'></a>&lt;a id='L3528' name='L3528'&gt;&lt;/a&gt;\chardef\quotedblleft="5C
<a id='L3543' name='L3543'></a>&lt;a id='L3529' name='L3529'&gt;&lt;/a&gt;\chardef\quotedblright=`\"
<a id='L3544' name='L3544'></a>&lt;a id='L3530' name='L3530'&gt;&lt;/a&gt;\chardef\quoteleft=`\`
<a id='L3545' name='L3545'></a>&lt;a id='L3531' name='L3531'&gt;&lt;/a&gt;\chardef\quoteright=`\'
<a id='L3546' name='L3546'></a>&lt;a id='L3532' name='L3532'&gt;&lt;/a&gt;
<a id='L3547' name='L3547'></a>&lt;a id='L3533' name='L3533'&gt;&lt;/a&gt;
<a id='L3548' name='L3548'></a>&lt;a id='L3534' name='L3534'&gt;&lt;/a&gt;\message{page headings,}
<a id='L3549' name='L3549'></a>&lt;a id='L3535' name='L3535'&gt;&lt;/a&gt;
<a id='L3550' name='L3550'></a>&lt;a id='L3536' name='L3536'&gt;&lt;/a&gt;\newskip\titlepagetopglue \titlepagetopglue = 1.5in
<a id='L3551' name='L3551'></a>&lt;a id='L3537' name='L3537'&gt;&lt;/a&gt;\newskip\titlepagebottomglue \titlepagebottomglue = 2pc
<a id='L3552' name='L3552'></a>&lt;a id='L3538' name='L3538'&gt;&lt;/a&gt;
<a id='L3553' name='L3553'></a>&lt;a id='L3539' name='L3539'&gt;&lt;/a&gt;% First the title page.  Must do @settitle before @titlepage.
<a id='L3554' name='L3554'></a>&lt;a id='L3540' name='L3540'&gt;&lt;/a&gt;\newif\ifseenauthor
<a id='L3555' name='L3555'></a>&lt;a id='L3541' name='L3541'&gt;&lt;/a&gt;\newif\iffinishedtitlepage
<a id='L3556' name='L3556'></a>&lt;a id='L3542' name='L3542'&gt;&lt;/a&gt;
<a id='L3557' name='L3557'></a>&lt;a id='L3543' name='L3543'&gt;&lt;/a&gt;% Do an implicit @contents or @shortcontents after @end titlepage if the
<a id='L3558' name='L3558'></a>&lt;a id='L3544' name='L3544'&gt;&lt;/a&gt;% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.
<a id='L3559' name='L3559'></a>&lt;a id='L3545' name='L3545'&gt;&lt;/a&gt;%
<a id='L3560' name='L3560'></a>&lt;a id='L3546' name='L3546'&gt;&lt;/a&gt;\newif\ifsetcontentsaftertitlepage
<a id='L3561' name='L3561'></a>&lt;a id='L3547' name='L3547'&gt;&lt;/a&gt; \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue
<a id='L3562' name='L3562'></a>&lt;a id='L3548' name='L3548'&gt;&lt;/a&gt;\newif\ifsetshortcontentsaftertitlepage
<a id='L3563' name='L3563'></a>&lt;a id='L3549' name='L3549'&gt;&lt;/a&gt; \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
<a id='L3564' name='L3564'></a>&lt;a id='L3550' name='L3550'&gt;&lt;/a&gt;
<a id='L3565' name='L3565'></a>&lt;a id='L3551' name='L3551'&gt;&lt;/a&gt;\parseargdef\shorttitlepage{%
<a id='L3566' name='L3566'></a>&lt;a id='L3552' name='L3552'&gt;&lt;/a&gt;  \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}%
<a id='L3567' name='L3567'></a>&lt;a id='L3553' name='L3553'&gt;&lt;/a&gt;  \endgroup\page\hbox{}\page}
<a id='L3568' name='L3568'></a>&lt;a id='L3554' name='L3554'&gt;&lt;/a&gt;
<a id='L3569' name='L3569'></a>&lt;a id='L3555' name='L3555'&gt;&lt;/a&gt;\envdef\titlepage{%
<a id='L3570' name='L3570'></a>&lt;a id='L3556' name='L3556'&gt;&lt;/a&gt;  % Open one extra group, as we want to close it in the middle of \Etitlepage.
<a id='L3571' name='L3571'></a>&lt;a id='L3557' name='L3557'&gt;&lt;/a&gt;  \begingroup
<a id='L3572' name='L3572'></a>&lt;a id='L3558' name='L3558'&gt;&lt;/a&gt;    \parindent=0pt \textfonts
<a id='L3573' name='L3573'></a>&lt;a id='L3559' name='L3559'&gt;&lt;/a&gt;    % Leave some space at the very top of the page.
<a id='L3574' name='L3574'></a>&lt;a id='L3560' name='L3560'&gt;&lt;/a&gt;    \vglue\titlepagetopglue
<a id='L3575' name='L3575'></a>&lt;a id='L3561' name='L3561'&gt;&lt;/a&gt;    % No rule at page bottom unless we print one at the top with @title.
<a id='L3576' name='L3576'></a>&lt;a id='L3562' name='L3562'&gt;&lt;/a&gt;    \finishedtitlepagetrue
<a id='L3577' name='L3577'></a>&lt;a id='L3563' name='L3563'&gt;&lt;/a&gt;    %
<a id='L3578' name='L3578'></a>&lt;a id='L3564' name='L3564'&gt;&lt;/a&gt;    % Most title ``pages'' are actually two pages long, with space
<a id='L3579' name='L3579'></a>&lt;a id='L3565' name='L3565'&gt;&lt;/a&gt;    % at the top of the second.  We don't want the ragged left on the second.
<a id='L3580' name='L3580'></a>&lt;a id='L3566' name='L3566'&gt;&lt;/a&gt;    \let\oldpage = \page
<a id='L3581' name='L3581'></a>&lt;a id='L3567' name='L3567'&gt;&lt;/a&gt;    \def\page{%
<a id='L3582' name='L3582'></a>&lt;a id='L3568' name='L3568'&gt;&lt;/a&gt;      \iffinishedtitlepage\else
<a id='L3583' name='L3583'></a>&lt;a id='L3569' name='L3569'&gt;&lt;/a&gt;         \finishtitlepage
<a id='L3584' name='L3584'></a>&lt;a id='L3570' name='L3570'&gt;&lt;/a&gt;      \fi
<a id='L3585' name='L3585'></a>&lt;a id='L3571' name='L3571'&gt;&lt;/a&gt;      \let\page = \oldpage
<a id='L3586' name='L3586'></a>&lt;a id='L3572' name='L3572'&gt;&lt;/a&gt;      \page
<a id='L3587' name='L3587'></a>&lt;a id='L3573' name='L3573'&gt;&lt;/a&gt;      \null
<a id='L3588' name='L3588'></a>&lt;a id='L3574' name='L3574'&gt;&lt;/a&gt;    }%
<a id='L3589' name='L3589'></a>&lt;a id='L3575' name='L3575'&gt;&lt;/a&gt;}
<a id='L3590' name='L3590'></a>&lt;a id='L3576' name='L3576'&gt;&lt;/a&gt;
<a id='L3591' name='L3591'></a>&lt;a id='L3577' name='L3577'&gt;&lt;/a&gt;\def\Etitlepage{%
<a id='L3592' name='L3592'></a>&lt;a id='L3578' name='L3578'&gt;&lt;/a&gt;    \iffinishedtitlepage\else
<a id='L3593' name='L3593'></a>&lt;a id='L3579' name='L3579'&gt;&lt;/a&gt;        \finishtitlepage
<a id='L3594' name='L3594'></a>&lt;a id='L3580' name='L3580'&gt;&lt;/a&gt;    \fi
<a id='L3595' name='L3595'></a>&lt;a id='L3581' name='L3581'&gt;&lt;/a&gt;    % It is important to do the page break before ending the group,
<a id='L3596' name='L3596'></a>&lt;a id='L3582' name='L3582'&gt;&lt;/a&gt;    % because the headline and footline are only empty inside the group.
<a id='L3597' name='L3597'></a>&lt;a id='L3583' name='L3583'&gt;&lt;/a&gt;    % If we use the new definition of \page, we always get a blank page
<a id='L3598' name='L3598'></a>&lt;a id='L3584' name='L3584'&gt;&lt;/a&gt;    % after the title page, which we certainly don't want.
<a id='L3599' name='L3599'></a>&lt;a id='L3585' name='L3585'&gt;&lt;/a&gt;    \oldpage
<a id='L3600' name='L3600'></a>&lt;a id='L3586' name='L3586'&gt;&lt;/a&gt;  \endgroup
<a id='L3601' name='L3601'></a>&lt;a id='L3587' name='L3587'&gt;&lt;/a&gt;  %
<a id='L3602' name='L3602'></a>&lt;a id='L3588' name='L3588'&gt;&lt;/a&gt;  % Need this before the \...aftertitlepage checks so that if they are
<a id='L3603' name='L3603'></a>&lt;a id='L3589' name='L3589'&gt;&lt;/a&gt;  % in effect the toc pages will come out with page numbers.
<a id='L3604' name='L3604'></a>&lt;a id='L3590' name='L3590'&gt;&lt;/a&gt;  \HEADINGSon
<a id='L3605' name='L3605'></a>&lt;a id='L3591' name='L3591'&gt;&lt;/a&gt;  %
<a id='L3606' name='L3606'></a>&lt;a id='L3592' name='L3592'&gt;&lt;/a&gt;  % If they want short, they certainly want long too.
<a id='L3607' name='L3607'></a>&lt;a id='L3593' name='L3593'&gt;&lt;/a&gt;  \ifsetshortcontentsaftertitlepage
<a id='L3608' name='L3608'></a>&lt;a id='L3594' name='L3594'&gt;&lt;/a&gt;    \shortcontents
<a id='L3609' name='L3609'></a>&lt;a id='L3595' name='L3595'&gt;&lt;/a&gt;    \contents
<a id='L3610' name='L3610'></a>&lt;a id='L3596' name='L3596'&gt;&lt;/a&gt;    \global\let\shortcontents = \relax
<a id='L3611' name='L3611'></a>&lt;a id='L3597' name='L3597'&gt;&lt;/a&gt;    \global\let\contents = \relax
<a id='L3612' name='L3612'></a>&lt;a id='L3598' name='L3598'&gt;&lt;/a&gt;  \fi
<a id='L3613' name='L3613'></a>&lt;a id='L3599' name='L3599'&gt;&lt;/a&gt;  %
<a id='L3614' name='L3614'></a>&lt;a id='L3600' name='L3600'&gt;&lt;/a&gt;  \ifsetcontentsaftertitlepage
<a id='L3615' name='L3615'></a>&lt;a id='L3601' name='L3601'&gt;&lt;/a&gt;    \contents
<a id='L3616' name='L3616'></a>&lt;a id='L3602' name='L3602'&gt;&lt;/a&gt;    \global\let\contents = \relax
<a id='L3617' name='L3617'></a>&lt;a id='L3603' name='L3603'&gt;&lt;/a&gt;    \global\let\shortcontents = \relax
<a id='L3618' name='L3618'></a>&lt;a id='L3604' name='L3604'&gt;&lt;/a&gt;  \fi
<a id='L3619' name='L3619'></a>&lt;a id='L3605' name='L3605'&gt;&lt;/a&gt;}
<a id='L3620' name='L3620'></a>&lt;a id='L3606' name='L3606'&gt;&lt;/a&gt;
<a id='L3621' name='L3621'></a>&lt;a id='L3607' name='L3607'&gt;&lt;/a&gt;\def\finishtitlepage{%
<a id='L3622' name='L3622'></a>&lt;a id='L3608' name='L3608'&gt;&lt;/a&gt;  \vskip4pt \hrule height 2pt width \hsize
<a id='L3623' name='L3623'></a>&lt;a id='L3609' name='L3609'&gt;&lt;/a&gt;  \vskip\titlepagebottomglue
<a id='L3624' name='L3624'></a>&lt;a id='L3610' name='L3610'&gt;&lt;/a&gt;  \finishedtitlepagetrue
<a id='L3625' name='L3625'></a>&lt;a id='L3611' name='L3611'&gt;&lt;/a&gt;}
<a id='L3626' name='L3626'></a>&lt;a id='L3612' name='L3612'&gt;&lt;/a&gt;
<a id='L3627' name='L3627'></a>&lt;a id='L3613' name='L3613'&gt;&lt;/a&gt;% Settings used for typesetting titles: no hyphenation, no indentation,
<a id='L3628' name='L3628'></a>&lt;a id='L3614' name='L3614'&gt;&lt;/a&gt;% don't worry much about spacing, ragged right.  This should be used
<a id='L3629' name='L3629'></a>&lt;a id='L3615' name='L3615'&gt;&lt;/a&gt;% inside a \vbox, and fonts need to be set appropriately first.  Because
<a id='L3630' name='L3630'></a>&lt;a id='L3616' name='L3616'&gt;&lt;/a&gt;% it is always used for titles, nothing else, we call \rmisbold.  \par
<a id='L3631' name='L3631'></a>&lt;a id='L3617' name='L3617'&gt;&lt;/a&gt;% should be specified before the end of the \vbox, since a vbox is a group.
<a id='L3632' name='L3632'></a>&lt;a id='L3618' name='L3618'&gt;&lt;/a&gt;% 
<a id='L3633' name='L3633'></a>&lt;a id='L3619' name='L3619'&gt;&lt;/a&gt;\def\raggedtitlesettings{%
<a id='L3634' name='L3634'></a>&lt;a id='L3620' name='L3620'&gt;&lt;/a&gt;  \rmisbold
<a id='L3635' name='L3635'></a>&lt;a id='L3621' name='L3621'&gt;&lt;/a&gt;  \hyphenpenalty=10000
<a id='L3636' name='L3636'></a>&lt;a id='L3622' name='L3622'&gt;&lt;/a&gt;  \parindent=0pt
<a id='L3637' name='L3637'></a>&lt;a id='L3623' name='L3623'&gt;&lt;/a&gt;  \tolerance=5000
<a id='L3638' name='L3638'></a>&lt;a id='L3624' name='L3624'&gt;&lt;/a&gt;  \ptexraggedright
<a id='L3639' name='L3639'></a>&lt;a id='L3625' name='L3625'&gt;&lt;/a&gt;}
<a id='L3640' name='L3640'></a>&lt;a id='L3626' name='L3626'&gt;&lt;/a&gt;
<a id='L3641' name='L3641'></a>&lt;a id='L3627' name='L3627'&gt;&lt;/a&gt;% Macros to be used within @titlepage:
<a id='L3642' name='L3642'></a>&lt;a id='L3628' name='L3628'&gt;&lt;/a&gt;
<a id='L3643' name='L3643'></a>&lt;a id='L3629' name='L3629'&gt;&lt;/a&gt;\let\subtitlerm=\tenrm
<a id='L3644' name='L3644'></a>&lt;a id='L3630' name='L3630'&gt;&lt;/a&gt;\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
<a id='L3645' name='L3645'></a>&lt;a id='L3631' name='L3631'&gt;&lt;/a&gt;
<a id='L3646' name='L3646'></a>&lt;a id='L3632' name='L3632'&gt;&lt;/a&gt;\parseargdef\title{%
<a id='L3647' name='L3647'></a>&lt;a id='L3633' name='L3633'&gt;&lt;/a&gt;  \checkenv\titlepage
<a id='L3648' name='L3648'></a>&lt;a id='L3634' name='L3634'&gt;&lt;/a&gt;  \vbox{\titlefonts \raggedtitlesettings #1\par}%
<a id='L3649' name='L3649'></a>&lt;a id='L3635' name='L3635'&gt;&lt;/a&gt;  % print a rule at the page bottom also.
<a id='L3650' name='L3650'></a>&lt;a id='L3636' name='L3636'&gt;&lt;/a&gt;  \finishedtitlepagefalse
<a id='L3651' name='L3651'></a>&lt;a id='L3637' name='L3637'&gt;&lt;/a&gt;  \vskip4pt \hrule height 4pt width \hsize \vskip4pt
<a id='L3652' name='L3652'></a>&lt;a id='L3638' name='L3638'&gt;&lt;/a&gt;}
<a id='L3653' name='L3653'></a>&lt;a id='L3639' name='L3639'&gt;&lt;/a&gt;
<a id='L3654' name='L3654'></a>&lt;a id='L3640' name='L3640'&gt;&lt;/a&gt;\parseargdef\subtitle{%
<a id='L3655' name='L3655'></a>&lt;a id='L3641' name='L3641'&gt;&lt;/a&gt;  \checkenv\titlepage
<a id='L3656' name='L3656'></a>&lt;a id='L3642' name='L3642'&gt;&lt;/a&gt;  {\subtitlefont \rightline{#1}}%
<a id='L3657' name='L3657'></a>&lt;a id='L3643' name='L3643'&gt;&lt;/a&gt;}
<a id='L3658' name='L3658'></a>&lt;a id='L3644' name='L3644'&gt;&lt;/a&gt;
<a id='L3659' name='L3659'></a>&lt;a id='L3645' name='L3645'&gt;&lt;/a&gt;% @author should come last, but may come many times.
<a id='L3660' name='L3660'></a>&lt;a id='L3646' name='L3646'&gt;&lt;/a&gt;% It can also be used inside @quotation.
<a id='L3661' name='L3661'></a>&lt;a id='L3647' name='L3647'&gt;&lt;/a&gt;%
<a id='L3662' name='L3662'></a>&lt;a id='L3648' name='L3648'&gt;&lt;/a&gt;\parseargdef\author{%
<a id='L3663' name='L3663'></a>&lt;a id='L3649' name='L3649'&gt;&lt;/a&gt;  \def\temp{\quotation}%
<a id='L3664' name='L3664'></a>&lt;a id='L3650' name='L3650'&gt;&lt;/a&gt;  \ifx\thisenv\temp
<a id='L3665' name='L3665'></a>&lt;a id='L3651' name='L3651'&gt;&lt;/a&gt;    \def\quotationauthor{#1}% printed in \Equotation.
<a id='L3666' name='L3666'></a>&lt;a id='L3652' name='L3652'&gt;&lt;/a&gt;  \else
<a id='L3667' name='L3667'></a>&lt;a id='L3653' name='L3653'&gt;&lt;/a&gt;    \checkenv\titlepage
<a id='L3668' name='L3668'></a>&lt;a id='L3654' name='L3654'&gt;&lt;/a&gt;    \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi
<a id='L3669' name='L3669'></a>&lt;a id='L3655' name='L3655'&gt;&lt;/a&gt;    {\secfonts\rmisbold \leftline{#1}}%
<a id='L3670' name='L3670'></a>&lt;a id='L3656' name='L3656'&gt;&lt;/a&gt;  \fi
<a id='L3671' name='L3671'></a>&lt;a id='L3657' name='L3657'&gt;&lt;/a&gt;}
<a id='L3672' name='L3672'></a>&lt;a id='L3658' name='L3658'&gt;&lt;/a&gt;
<a id='L3673' name='L3673'></a>&lt;a id='L3659' name='L3659'&gt;&lt;/a&gt;
<a id='L3674' name='L3674'></a>&lt;a id='L3660' name='L3660'&gt;&lt;/a&gt;% Set up page headings and footings.
<a id='L3675' name='L3675'></a>&lt;a id='L3661' name='L3661'&gt;&lt;/a&gt;
<a id='L3676' name='L3676'></a>&lt;a id='L3662' name='L3662'&gt;&lt;/a&gt;\let\thispage=\folio
<a id='L3677' name='L3677'></a>&lt;a id='L3663' name='L3663'&gt;&lt;/a&gt;
<a id='L3678' name='L3678'></a>&lt;a id='L3664' name='L3664'&gt;&lt;/a&gt;\newtoks\evenheadline    % headline on even pages
<a id='L3679' name='L3679'></a>&lt;a id='L3665' name='L3665'&gt;&lt;/a&gt;\newtoks\oddheadline     % headline on odd pages
<a id='L3680' name='L3680'></a>&lt;a id='L3666' name='L3666'&gt;&lt;/a&gt;\newtoks\evenfootline    % footline on even pages
<a id='L3681' name='L3681'></a>&lt;a id='L3667' name='L3667'&gt;&lt;/a&gt;\newtoks\oddfootline     % footline on odd pages
<a id='L3682' name='L3682'></a>&lt;a id='L3668' name='L3668'&gt;&lt;/a&gt;
<a id='L3683' name='L3683'></a>&lt;a id='L3669' name='L3669'&gt;&lt;/a&gt;% Now make TeX use those variables
<a id='L3684' name='L3684'></a>&lt;a id='L3670' name='L3670'&gt;&lt;/a&gt;\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
<a id='L3685' name='L3685'></a>&lt;a id='L3671' name='L3671'&gt;&lt;/a&gt;                            \else \the\evenheadline \fi}}
<a id='L3686' name='L3686'></a>&lt;a id='L3672' name='L3672'&gt;&lt;/a&gt;\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
<a id='L3687' name='L3687'></a>&lt;a id='L3673' name='L3673'&gt;&lt;/a&gt;                            \else \the\evenfootline \fi}\HEADINGShook}
<a id='L3688' name='L3688'></a>&lt;a id='L3674' name='L3674'&gt;&lt;/a&gt;\let\HEADINGShook=\relax
<a id='L3689' name='L3689'></a>&lt;a id='L3675' name='L3675'&gt;&lt;/a&gt;
<a id='L3690' name='L3690'></a>&lt;a id='L3676' name='L3676'&gt;&lt;/a&gt;% Commands to set those variables.
<a id='L3691' name='L3691'></a>&lt;a id='L3677' name='L3677'&gt;&lt;/a&gt;% For example, this is what  @headings on  does
<a id='L3692' name='L3692'></a>&lt;a id='L3678' name='L3678'&gt;&lt;/a&gt;% @evenheading @thistitle|@thispage|@thischapter
<a id='L3693' name='L3693'></a>&lt;a id='L3679' name='L3679'&gt;&lt;/a&gt;% @oddheading @thischapter|@thispage|@thistitle
<a id='L3694' name='L3694'></a>&lt;a id='L3680' name='L3680'&gt;&lt;/a&gt;% @evenfooting @thisfile||
<a id='L3695' name='L3695'></a>&lt;a id='L3681' name='L3681'&gt;&lt;/a&gt;% @oddfooting ||@thisfile
<a id='L3696' name='L3696'></a>&lt;a id='L3682' name='L3682'&gt;&lt;/a&gt;
<a id='L3697' name='L3697'></a>&lt;a id='L3683' name='L3683'&gt;&lt;/a&gt;
<a id='L3698' name='L3698'></a>&lt;a id='L3684' name='L3684'&gt;&lt;/a&gt;\def\evenheading{\parsearg\evenheadingxxx}
<a id='L3699' name='L3699'></a>&lt;a id='L3685' name='L3685'&gt;&lt;/a&gt;\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish}
<a id='L3700' name='L3700'></a>&lt;a id='L3686' name='L3686'&gt;&lt;/a&gt;\def\evenheadingyyy #1\|#2\|#3\|#4\finish{%
<a id='L3701' name='L3701'></a>&lt;a id='L3687' name='L3687'&gt;&lt;/a&gt;\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
<a id='L3702' name='L3702'></a>&lt;a id='L3688' name='L3688'&gt;&lt;/a&gt;
<a id='L3703' name='L3703'></a>&lt;a id='L3689' name='L3689'&gt;&lt;/a&gt;\def\oddheading{\parsearg\oddheadingxxx}
<a id='L3704' name='L3704'></a>&lt;a id='L3690' name='L3690'&gt;&lt;/a&gt;\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish}
<a id='L3705' name='L3705'></a>&lt;a id='L3691' name='L3691'&gt;&lt;/a&gt;\def\oddheadingyyy #1\|#2\|#3\|#4\finish{%
<a id='L3706' name='L3706'></a>&lt;a id='L3692' name='L3692'&gt;&lt;/a&gt;\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
<a id='L3707' name='L3707'></a>&lt;a id='L3693' name='L3693'&gt;&lt;/a&gt;
<a id='L3708' name='L3708'></a>&lt;a id='L3694' name='L3694'&gt;&lt;/a&gt;\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
<a id='L3709' name='L3709'></a>&lt;a id='L3695' name='L3695'&gt;&lt;/a&gt;
<a id='L3710' name='L3710'></a>&lt;a id='L3696' name='L3696'&gt;&lt;/a&gt;\def\evenfooting{\parsearg\evenfootingxxx}
<a id='L3711' name='L3711'></a>&lt;a id='L3697' name='L3697'&gt;&lt;/a&gt;\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish}
<a id='L3712' name='L3712'></a>&lt;a id='L3698' name='L3698'&gt;&lt;/a&gt;\def\evenfootingyyy #1\|#2\|#3\|#4\finish{%
<a id='L3713' name='L3713'></a>&lt;a id='L3699' name='L3699'&gt;&lt;/a&gt;\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
<a id='L3714' name='L3714'></a>&lt;a id='L3700' name='L3700'&gt;&lt;/a&gt;
<a id='L3715' name='L3715'></a>&lt;a id='L3701' name='L3701'&gt;&lt;/a&gt;\def\oddfooting{\parsearg\oddfootingxxx}
<a id='L3716' name='L3716'></a>&lt;a id='L3702' name='L3702'&gt;&lt;/a&gt;\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish}
<a id='L3717' name='L3717'></a>&lt;a id='L3703' name='L3703'&gt;&lt;/a&gt;\def\oddfootingyyy #1\|#2\|#3\|#4\finish{%
<a id='L3718' name='L3718'></a>&lt;a id='L3704' name='L3704'&gt;&lt;/a&gt;  \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}%
<a id='L3719' name='L3719'></a>&lt;a id='L3705' name='L3705'&gt;&lt;/a&gt;  %
<a id='L3720' name='L3720'></a>&lt;a id='L3706' name='L3706'&gt;&lt;/a&gt;  % Leave some space for the footline.  Hopefully ok to assume
<a id='L3721' name='L3721'></a>&lt;a id='L3707' name='L3707'&gt;&lt;/a&gt;  % @evenfooting will not be used by itself.
<a id='L3722' name='L3722'></a>&lt;a id='L3708' name='L3708'&gt;&lt;/a&gt;  \global\advance\pageheight by -12pt
<a id='L3723' name='L3723'></a>&lt;a id='L3709' name='L3709'&gt;&lt;/a&gt;  \global\advance\vsize by -12pt
<a id='L3724' name='L3724'></a>&lt;a id='L3710' name='L3710'&gt;&lt;/a&gt;}
<a id='L3725' name='L3725'></a>&lt;a id='L3711' name='L3711'&gt;&lt;/a&gt;
<a id='L3726' name='L3726'></a>&lt;a id='L3712' name='L3712'&gt;&lt;/a&gt;\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
<a id='L3727' name='L3727'></a>&lt;a id='L3713' name='L3713'&gt;&lt;/a&gt;
<a id='L3728' name='L3728'></a>&lt;a id='L3714' name='L3714'&gt;&lt;/a&gt;% @evenheadingmarks top     \thischapter &amp;lt;- chapter at the top of a page
<a id='L3729' name='L3729'></a>&lt;a id='L3715' name='L3715'&gt;&lt;/a&gt;% @evenheadingmarks bottom  \thischapter &amp;lt;- chapter at the bottom of a page
<a id='L3730' name='L3730'></a>&lt;a id='L3716' name='L3716'&gt;&lt;/a&gt;%
<a id='L3731' name='L3731'></a>&lt;a id='L3717' name='L3717'&gt;&lt;/a&gt;% The same set of arguments for:
<a id='L3732' name='L3732'></a>&lt;a id='L3718' name='L3718'&gt;&lt;/a&gt;%
<a id='L3733' name='L3733'></a>&lt;a id='L3719' name='L3719'&gt;&lt;/a&gt;% @oddheadingmarks
<a id='L3734' name='L3734'></a>&lt;a id='L3720' name='L3720'&gt;&lt;/a&gt;% @evenfootingmarks
<a id='L3735' name='L3735'></a>&lt;a id='L3721' name='L3721'&gt;&lt;/a&gt;% @oddfootingmarks
<a id='L3736' name='L3736'></a>&lt;a id='L3722' name='L3722'&gt;&lt;/a&gt;% @everyheadingmarks
<a id='L3737' name='L3737'></a>&lt;a id='L3723' name='L3723'&gt;&lt;/a&gt;% @everyfootingmarks
<a id='L3738' name='L3738'></a>&lt;a id='L3724' name='L3724'&gt;&lt;/a&gt;
<a id='L3739' name='L3739'></a>&lt;a id='L3725' name='L3725'&gt;&lt;/a&gt;\def\evenheadingmarks{\headingmarks{even}{heading}}
<a id='L3740' name='L3740'></a>&lt;a id='L3726' name='L3726'&gt;&lt;/a&gt;\def\oddheadingmarks{\headingmarks{odd}{heading}}
<a id='L3741' name='L3741'></a>&lt;a id='L3727' name='L3727'&gt;&lt;/a&gt;\def\evenfootingmarks{\headingmarks{even}{footing}}
<a id='L3742' name='L3742'></a>&lt;a id='L3728' name='L3728'&gt;&lt;/a&gt;\def\oddfootingmarks{\headingmarks{odd}{footing}}
<a id='L3743' name='L3743'></a>&lt;a id='L3729' name='L3729'&gt;&lt;/a&gt;\def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1}
<a id='L3744' name='L3744'></a>&lt;a id='L3730' name='L3730'&gt;&lt;/a&gt;                          \headingmarks{odd}{heading}{#1} }
<a id='L3745' name='L3745'></a>&lt;a id='L3731' name='L3731'&gt;&lt;/a&gt;\def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1}
<a id='L3746' name='L3746'></a>&lt;a id='L3732' name='L3732'&gt;&lt;/a&gt;                          \headingmarks{odd}{footing}{#1} }
<a id='L3747' name='L3747'></a>&lt;a id='L3733' name='L3733'&gt;&lt;/a&gt;% #1 = even/odd, #2 = heading/footing, #3 = top/bottom.
<a id='L3748' name='L3748'></a>&lt;a id='L3734' name='L3734'&gt;&lt;/a&gt;\def\headingmarks#1#2#3 {%
<a id='L3749' name='L3749'></a>&lt;a id='L3735' name='L3735'&gt;&lt;/a&gt;  \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname
<a id='L3750' name='L3750'></a>&lt;a id='L3736' name='L3736'&gt;&lt;/a&gt;  \global\expandafter\let\csname get#1#2marks\endcsname \temp
<a id='L3751' name='L3751'></a>&lt;a id='L3737' name='L3737'&gt;&lt;/a&gt;}
<a id='L3752' name='L3752'></a>&lt;a id='L3738' name='L3738'&gt;&lt;/a&gt;
<a id='L3753' name='L3753'></a>&lt;a id='L3739' name='L3739'&gt;&lt;/a&gt;\everyheadingmarks bottom
<a id='L3754' name='L3754'></a>&lt;a id='L3740' name='L3740'&gt;&lt;/a&gt;\everyfootingmarks bottom
<a id='L3755' name='L3755'></a>&lt;a id='L3741' name='L3741'&gt;&lt;/a&gt;
<a id='L3756' name='L3756'></a>&lt;a id='L3742' name='L3742'&gt;&lt;/a&gt;% @headings double      turns headings on for double-sided printing.
<a id='L3757' name='L3757'></a>&lt;a id='L3743' name='L3743'&gt;&lt;/a&gt;% @headings single      turns headings on for single-sided printing.
<a id='L3758' name='L3758'></a>&lt;a id='L3744' name='L3744'&gt;&lt;/a&gt;% @headings off         turns them off.
<a id='L3759' name='L3759'></a>&lt;a id='L3745' name='L3745'&gt;&lt;/a&gt;% @headings on          same as @headings double, retained for compatibility.
<a id='L3760' name='L3760'></a>&lt;a id='L3746' name='L3746'&gt;&lt;/a&gt;% @headings after       turns on double-sided headings after this page.
<a id='L3761' name='L3761'></a>&lt;a id='L3747' name='L3747'&gt;&lt;/a&gt;% @headings doubleafter turns on double-sided headings after this page.
<a id='L3762' name='L3762'></a>&lt;a id='L3748' name='L3748'&gt;&lt;/a&gt;% @headings singleafter turns on single-sided headings after this page.
<a id='L3763' name='L3763'></a>&lt;a id='L3749' name='L3749'&gt;&lt;/a&gt;% By default, they are off at the start of a document,
<a id='L3764' name='L3764'></a>&lt;a id='L3750' name='L3750'&gt;&lt;/a&gt;% and turned `on' after @end titlepage.
<a id='L3765' name='L3765'></a>&lt;a id='L3751' name='L3751'&gt;&lt;/a&gt;
<a id='L3766' name='L3766'></a>&lt;a id='L3752' name='L3752'&gt;&lt;/a&gt;\def\headings #1 {\csname HEADINGS#1\endcsname}
<a id='L3767' name='L3767'></a>&lt;a id='L3753' name='L3753'&gt;&lt;/a&gt;
<a id='L3768' name='L3768'></a>&lt;a id='L3754' name='L3754'&gt;&lt;/a&gt;\def\headingsoff{% non-global headings elimination
<a id='L3769' name='L3769'></a>&lt;a id='L3755' name='L3755'&gt;&lt;/a&gt;  \evenheadline={\hfil}\evenfootline={\hfil}%
<a id='L3770' name='L3770'></a>&lt;a id='L3756' name='L3756'&gt;&lt;/a&gt;   \oddheadline={\hfil}\oddfootline={\hfil}%
<a id='L3771' name='L3771'></a>&lt;a id='L3757' name='L3757'&gt;&lt;/a&gt;}
<a id='L3772' name='L3772'></a>&lt;a id='L3758' name='L3758'&gt;&lt;/a&gt;
<a id='L3773' name='L3773'></a>&lt;a id='L3759' name='L3759'&gt;&lt;/a&gt;\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting
<a id='L3774' name='L3774'></a>&lt;a id='L3760' name='L3760'&gt;&lt;/a&gt;\HEADINGSoff  % it's the default
<a id='L3775' name='L3775'></a>&lt;a id='L3761' name='L3761'&gt;&lt;/a&gt;
<a id='L3776' name='L3776'></a>&lt;a id='L3762' name='L3762'&gt;&lt;/a&gt;% When we turn headings on, set the page number to 1.
<a id='L3777' name='L3777'></a>&lt;a id='L3763' name='L3763'&gt;&lt;/a&gt;% For double-sided printing, put current file name in lower left corner,
<a id='L3778' name='L3778'></a>&lt;a id='L3764' name='L3764'&gt;&lt;/a&gt;% chapter name on inside top of right hand pages, document
<a id='L3779' name='L3779'></a>&lt;a id='L3765' name='L3765'&gt;&lt;/a&gt;% title on inside top of left hand pages, and page numbers on outside top
<a id='L3780' name='L3780'></a>&lt;a id='L3766' name='L3766'&gt;&lt;/a&gt;% edge of all pages.
<a id='L3781' name='L3781'></a>&lt;a id='L3767' name='L3767'&gt;&lt;/a&gt;\def\HEADINGSdouble{%
<a id='L3782' name='L3782'></a>&lt;a id='L3768' name='L3768'&gt;&lt;/a&gt;\global\pageno=1
<a id='L3783' name='L3783'></a>&lt;a id='L3769' name='L3769'&gt;&lt;/a&gt;\global\evenfootline={\hfil}
<a id='L3784' name='L3784'></a>&lt;a id='L3770' name='L3770'&gt;&lt;/a&gt;\global\oddfootline={\hfil}
<a id='L3785' name='L3785'></a>&lt;a id='L3771' name='L3771'&gt;&lt;/a&gt;\global\evenheadline={\line{\folio\hfil\thistitle}}
<a id='L3786' name='L3786'></a>&lt;a id='L3772' name='L3772'&gt;&lt;/a&gt;\global\oddheadline={\line{\thischapter\hfil\folio}}
<a id='L3787' name='L3787'></a>&lt;a id='L3773' name='L3773'&gt;&lt;/a&gt;\global\let\contentsalignmacro = \chapoddpage
<a id='L3788' name='L3788'></a>&lt;a id='L3774' name='L3774'&gt;&lt;/a&gt;}
<a id='L3789' name='L3789'></a>&lt;a id='L3775' name='L3775'&gt;&lt;/a&gt;\let\contentsalignmacro = \chappager
<a id='L3790' name='L3790'></a>&lt;a id='L3776' name='L3776'&gt;&lt;/a&gt;
<a id='L3791' name='L3791'></a>&lt;a id='L3777' name='L3777'&gt;&lt;/a&gt;% For single-sided printing, chapter title goes across top left of page,
<a id='L3792' name='L3792'></a>&lt;a id='L3778' name='L3778'&gt;&lt;/a&gt;% page number on top right.
<a id='L3793' name='L3793'></a>&lt;a id='L3779' name='L3779'&gt;&lt;/a&gt;\def\HEADINGSsingle{%
<a id='L3794' name='L3794'></a>&lt;a id='L3780' name='L3780'&gt;&lt;/a&gt;\global\pageno=1
<a id='L3795' name='L3795'></a>&lt;a id='L3781' name='L3781'&gt;&lt;/a&gt;\global\evenfootline={\hfil}
<a id='L3796' name='L3796'></a>&lt;a id='L3782' name='L3782'&gt;&lt;/a&gt;\global\oddfootline={\hfil}
<a id='L3797' name='L3797'></a>&lt;a id='L3783' name='L3783'&gt;&lt;/a&gt;\global\evenheadline={\line{\thischapter\hfil\folio}}
<a id='L3798' name='L3798'></a>&lt;a id='L3784' name='L3784'&gt;&lt;/a&gt;\global\oddheadline={\line{\thischapter\hfil\folio}}
<a id='L3799' name='L3799'></a>&lt;a id='L3785' name='L3785'&gt;&lt;/a&gt;\global\let\contentsalignmacro = \chappager
<a id='L3800' name='L3800'></a>&lt;a id='L3786' name='L3786'&gt;&lt;/a&gt;}
<a id='L3801' name='L3801'></a>&lt;a id='L3787' name='L3787'&gt;&lt;/a&gt;\def\HEADINGSon{\HEADINGSdouble}
<a id='L3802' name='L3802'></a>&lt;a id='L3788' name='L3788'&gt;&lt;/a&gt;
<a id='L3803' name='L3803'></a>&lt;a id='L3789' name='L3789'&gt;&lt;/a&gt;\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
<a id='L3804' name='L3804'></a>&lt;a id='L3790' name='L3790'&gt;&lt;/a&gt;\let\HEADINGSdoubleafter=\HEADINGSafter
<a id='L3805' name='L3805'></a>&lt;a id='L3791' name='L3791'&gt;&lt;/a&gt;\def\HEADINGSdoublex{%
<a id='L3806' name='L3806'></a>&lt;a id='L3792' name='L3792'&gt;&lt;/a&gt;\global\evenfootline={\hfil}
<a id='L3807' name='L3807'></a>&lt;a id='L3793' name='L3793'&gt;&lt;/a&gt;\global\oddfootline={\hfil}
<a id='L3808' name='L3808'></a>&lt;a id='L3794' name='L3794'&gt;&lt;/a&gt;\global\evenheadline={\line{\folio\hfil\thistitle}}
<a id='L3809' name='L3809'></a>&lt;a id='L3795' name='L3795'&gt;&lt;/a&gt;\global\oddheadline={\line{\thischapter\hfil\folio}}
<a id='L3810' name='L3810'></a>&lt;a id='L3796' name='L3796'&gt;&lt;/a&gt;\global\let\contentsalignmacro = \chapoddpage
<a id='L3811' name='L3811'></a>&lt;a id='L3797' name='L3797'&gt;&lt;/a&gt;}
<a id='L3812' name='L3812'></a>&lt;a id='L3798' name='L3798'&gt;&lt;/a&gt;
<a id='L3813' name='L3813'></a>&lt;a id='L3799' name='L3799'&gt;&lt;/a&gt;\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
<a id='L3814' name='L3814'></a>&lt;a id='L3800' name='L3800'&gt;&lt;/a&gt;\def\HEADINGSsinglex{%
<a id='L3815' name='L3815'></a>&lt;a id='L3801' name='L3801'&gt;&lt;/a&gt;\global\evenfootline={\hfil}
<a id='L3816' name='L3816'></a>&lt;a id='L3802' name='L3802'&gt;&lt;/a&gt;\global\oddfootline={\hfil}
<a id='L3817' name='L3817'></a>&lt;a id='L3803' name='L3803'&gt;&lt;/a&gt;\global\evenheadline={\line{\thischapter\hfil\folio}}
<a id='L3818' name='L3818'></a>&lt;a id='L3804' name='L3804'&gt;&lt;/a&gt;\global\oddheadline={\line{\thischapter\hfil\folio}}
<a id='L3819' name='L3819'></a>&lt;a id='L3805' name='L3805'&gt;&lt;/a&gt;\global\let\contentsalignmacro = \chappager
<a id='L3820' name='L3820'></a>&lt;a id='L3806' name='L3806'&gt;&lt;/a&gt;}
<a id='L3821' name='L3821'></a>&lt;a id='L3807' name='L3807'&gt;&lt;/a&gt;
<a id='L3822' name='L3822'></a>&lt;a id='L3808' name='L3808'&gt;&lt;/a&gt;% Subroutines used in generating headings
<a id='L3823' name='L3823'></a>&lt;a id='L3809' name='L3809'&gt;&lt;/a&gt;% This produces Day Month Year style of output.
<a id='L3824' name='L3824'></a>&lt;a id='L3810' name='L3810'&gt;&lt;/a&gt;% Only define if not already defined, in case a txi-??.tex file has set
<a id='L3825' name='L3825'></a>&lt;a id='L3811' name='L3811'&gt;&lt;/a&gt;% up a different format (e.g., txi-cs.tex does this).
<a id='L3826' name='L3826'></a>&lt;a id='L3812' name='L3812'&gt;&lt;/a&gt;\ifx\today\thisisundefined
<a id='L3827' name='L3827'></a>&lt;a id='L3813' name='L3813'&gt;&lt;/a&gt;\def\today{%
<a id='L3828' name='L3828'></a>&lt;a id='L3814' name='L3814'&gt;&lt;/a&gt;  \number\day\space
<a id='L3829' name='L3829'></a>&lt;a id='L3815' name='L3815'&gt;&lt;/a&gt;  \ifcase\month
<a id='L3830' name='L3830'></a>&lt;a id='L3816' name='L3816'&gt;&lt;/a&gt;  \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
<a id='L3831' name='L3831'></a>&lt;a id='L3817' name='L3817'&gt;&lt;/a&gt;  \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
<a id='L3832' name='L3832'></a>&lt;a id='L3818' name='L3818'&gt;&lt;/a&gt;  \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
<a id='L3833' name='L3833'></a>&lt;a id='L3819' name='L3819'&gt;&lt;/a&gt;  \fi
<a id='L3834' name='L3834'></a>&lt;a id='L3820' name='L3820'&gt;&lt;/a&gt;  \space\number\year}
<a id='L3835' name='L3835'></a>&lt;a id='L3821' name='L3821'&gt;&lt;/a&gt;\fi
<a id='L3836' name='L3836'></a>&lt;a id='L3822' name='L3822'&gt;&lt;/a&gt;
<a id='L3837' name='L3837'></a>&lt;a id='L3823' name='L3823'&gt;&lt;/a&gt;% @settitle line...  specifies the title of the document, for headings.
<a id='L3838' name='L3838'></a>&lt;a id='L3824' name='L3824'&gt;&lt;/a&gt;% It generates no output of its own.
<a id='L3839' name='L3839'></a>&lt;a id='L3825' name='L3825'&gt;&lt;/a&gt;\def\thistitle{\putwordNoTitle}
<a id='L3840' name='L3840'></a>&lt;a id='L3826' name='L3826'&gt;&lt;/a&gt;\def\settitle{\parsearg{\gdef\thistitle}}
<a id='L3841' name='L3841'></a>&lt;a id='L3827' name='L3827'&gt;&lt;/a&gt;
<a id='L3842' name='L3842'></a>&lt;a id='L3828' name='L3828'&gt;&lt;/a&gt;
<a id='L3843' name='L3843'></a>&lt;a id='L3829' name='L3829'&gt;&lt;/a&gt;\message{tables,}
<a id='L3844' name='L3844'></a>&lt;a id='L3830' name='L3830'&gt;&lt;/a&gt;% Tables -- @table, @ftable, @vtable, @item(x).
<a id='L3845' name='L3845'></a>&lt;a id='L3831' name='L3831'&gt;&lt;/a&gt;
<a id='L3846' name='L3846'></a>&lt;a id='L3832' name='L3832'&gt;&lt;/a&gt;% default indentation of table text
<a id='L3847' name='L3847'></a>&lt;a id='L3833' name='L3833'&gt;&lt;/a&gt;\newdimen\tableindent \tableindent=.8in
<a id='L3848' name='L3848'></a>&lt;a id='L3834' name='L3834'&gt;&lt;/a&gt;% default indentation of @itemize and @enumerate text
<a id='L3849' name='L3849'></a>&lt;a id='L3835' name='L3835'&gt;&lt;/a&gt;\newdimen\itemindent  \itemindent=.3in
<a id='L3850' name='L3850'></a>&lt;a id='L3836' name='L3836'&gt;&lt;/a&gt;% margin between end of table item and start of table text.
<a id='L3851' name='L3851'></a>&lt;a id='L3837' name='L3837'&gt;&lt;/a&gt;\newdimen\itemmargin  \itemmargin=.1in
<a id='L3852' name='L3852'></a>&lt;a id='L3838' name='L3838'&gt;&lt;/a&gt;
<a id='L3853' name='L3853'></a>&lt;a id='L3839' name='L3839'&gt;&lt;/a&gt;% used internally for \itemindent minus \itemmargin
<a id='L3854' name='L3854'></a>&lt;a id='L3840' name='L3840'&gt;&lt;/a&gt;\newdimen\itemmax
<a id='L3855' name='L3855'></a>&lt;a id='L3841' name='L3841'&gt;&lt;/a&gt;
<a id='L3856' name='L3856'></a>&lt;a id='L3842' name='L3842'&gt;&lt;/a&gt;% Note @table, @ftable, and @vtable define @item, @itemx, etc., with
<a id='L3857' name='L3857'></a>&lt;a id='L3843' name='L3843'&gt;&lt;/a&gt;% these defs.
<a id='L3858' name='L3858'></a>&lt;a id='L3844' name='L3844'&gt;&lt;/a&gt;% They also define \itemindex
<a id='L3859' name='L3859'></a>&lt;a id='L3845' name='L3845'&gt;&lt;/a&gt;% to index the item name in whatever manner is desired (perhaps none).
<a id='L3860' name='L3860'></a>&lt;a id='L3846' name='L3846'&gt;&lt;/a&gt;
<a id='L3861' name='L3861'></a>&lt;a id='L3847' name='L3847'&gt;&lt;/a&gt;\newif\ifitemxneedsnegativevskip
<a id='L3862' name='L3862'></a>&lt;a id='L3848' name='L3848'&gt;&lt;/a&gt;
<a id='L3863' name='L3863'></a>&lt;a id='L3849' name='L3849'&gt;&lt;/a&gt;\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi}
<a id='L3864' name='L3864'></a>&lt;a id='L3850' name='L3850'&gt;&lt;/a&gt;
<a id='L3865' name='L3865'></a>&lt;a id='L3851' name='L3851'&gt;&lt;/a&gt;\def\internalBitem{\smallbreak \parsearg\itemzzz}
<a id='L3866' name='L3866'></a>&lt;a id='L3852' name='L3852'&gt;&lt;/a&gt;\def\internalBitemx{\itemxpar \parsearg\itemzzz}
<a id='L3867' name='L3867'></a>&lt;a id='L3853' name='L3853'&gt;&lt;/a&gt;
<a id='L3868' name='L3868'></a>&lt;a id='L3854' name='L3854'&gt;&lt;/a&gt;\def\itemzzz #1{\begingroup %
<a id='L3869' name='L3869'></a>&lt;a id='L3855' name='L3855'&gt;&lt;/a&gt;  \advance\hsize by -\rightskip
<a id='L3870' name='L3870'></a>&lt;a id='L3856' name='L3856'&gt;&lt;/a&gt;  \advance\hsize by -\tableindent
<a id='L3871' name='L3871'></a>&lt;a id='L3857' name='L3857'&gt;&lt;/a&gt;  \setbox0=\hbox{\itemindicate{#1}}%
<a id='L3872' name='L3872'></a>&lt;a id='L3858' name='L3858'&gt;&lt;/a&gt;  \itemindex{#1}%
<a id='L3873' name='L3873'></a>&lt;a id='L3859' name='L3859'&gt;&lt;/a&gt;  \nobreak % This prevents a break before @itemx.
<a id='L3874' name='L3874'></a>&lt;a id='L3860' name='L3860'&gt;&lt;/a&gt;  %
<a id='L3875' name='L3875'></a>&lt;a id='L3861' name='L3861'&gt;&lt;/a&gt;  % If the item text does not fit in the space we have, put it on a line
<a id='L3876' name='L3876'></a>&lt;a id='L3862' name='L3862'&gt;&lt;/a&gt;  % by itself, and do not allow a page break either before or after that
<a id='L3877' name='L3877'></a>&lt;a id='L3863' name='L3863'&gt;&lt;/a&gt;  % line.  We do not start a paragraph here because then if the next
<a id='L3878' name='L3878'></a>&lt;a id='L3864' name='L3864'&gt;&lt;/a&gt;  % command is, e.g., @kindex, the whatsit would get put into the
<a id='L3879' name='L3879'></a>&lt;a id='L3865' name='L3865'&gt;&lt;/a&gt;  % horizontal list on a line by itself, resulting in extra blank space.
<a id='L3880' name='L3880'></a>&lt;a id='L3866' name='L3866'&gt;&lt;/a&gt;  \ifdim \wd0&amp;gt;\itemmax
<a id='L3881' name='L3881'></a>&lt;a id='L3867' name='L3867'&gt;&lt;/a&gt;    %
<a id='L3882' name='L3882'></a>&lt;a id='L3868' name='L3868'&gt;&lt;/a&gt;    % Make this a paragraph so we get the \parskip glue and wrapping,
<a id='L3883' name='L3883'></a>&lt;a id='L3869' name='L3869'&gt;&lt;/a&gt;    % but leave it ragged-right.
<a id='L3884' name='L3884'></a>&lt;a id='L3870' name='L3870'&gt;&lt;/a&gt;    \begingroup
<a id='L3885' name='L3885'></a>&lt;a id='L3871' name='L3871'&gt;&lt;/a&gt;      \advance\leftskip by-\tableindent
<a id='L3886' name='L3886'></a>&lt;a id='L3872' name='L3872'&gt;&lt;/a&gt;      \advance\hsize by\tableindent
<a id='L3887' name='L3887'></a>&lt;a id='L3873' name='L3873'&gt;&lt;/a&gt;      \advance\rightskip by0pt plus1fil\relax
<a id='L3888' name='L3888'></a>&lt;a id='L3874' name='L3874'&gt;&lt;/a&gt;      \leavevmode\unhbox0\par
<a id='L3889' name='L3889'></a>&lt;a id='L3875' name='L3875'&gt;&lt;/a&gt;    \endgroup
<a id='L3890' name='L3890'></a>&lt;a id='L3876' name='L3876'&gt;&lt;/a&gt;    %
<a id='L3891' name='L3891'></a>&lt;a id='L3877' name='L3877'&gt;&lt;/a&gt;    % We're going to be starting a paragraph, but we don't want the
<a id='L3892' name='L3892'></a>&lt;a id='L3878' name='L3878'&gt;&lt;/a&gt;    % \parskip glue -- logically it's part of the @item we just started.
<a id='L3893' name='L3893'></a>&lt;a id='L3879' name='L3879'&gt;&lt;/a&gt;    \nobreak \vskip-\parskip
<a id='L3894' name='L3894'></a>&lt;a id='L3880' name='L3880'&gt;&lt;/a&gt;    %
<a id='L3895' name='L3895'></a>&lt;a id='L3881' name='L3881'&gt;&lt;/a&gt;    % Stop a page break at the \parskip glue coming up.  However, if
<a id='L3896' name='L3896'></a>&lt;a id='L3882' name='L3882'&gt;&lt;/a&gt;    % what follows is an environment such as @example, there will be no
<a id='L3897' name='L3897'></a>&lt;a id='L3883' name='L3883'&gt;&lt;/a&gt;    % \parskip glue; then the negative vskip we just inserted would
<a id='L3898' name='L3898'></a>&lt;a id='L3884' name='L3884'&gt;&lt;/a&gt;    % cause the example and the item to crash together.  So we use this
<a id='L3899' name='L3899'></a>&lt;a id='L3885' name='L3885'&gt;&lt;/a&gt;    % bizarre value of 10001 as a signal to \aboveenvbreak to insert
<a id='L3900' name='L3900'></a>&lt;a id='L3886' name='L3886'&gt;&lt;/a&gt;    % \parskip glue after all.  Section titles are handled this way also.
<a id='L3901' name='L3901'></a>&lt;a id='L3887' name='L3887'&gt;&lt;/a&gt;    %
<a id='L3902' name='L3902'></a>&lt;a id='L3888' name='L3888'&gt;&lt;/a&gt;    \penalty 10001
<a id='L3903' name='L3903'></a>&lt;a id='L3889' name='L3889'&gt;&lt;/a&gt;    \endgroup
<a id='L3904' name='L3904'></a>&lt;a id='L3890' name='L3890'&gt;&lt;/a&gt;    \itemxneedsnegativevskipfalse
<a id='L3905' name='L3905'></a>&lt;a id='L3891' name='L3891'&gt;&lt;/a&gt;  \else
<a id='L3906' name='L3906'></a>&lt;a id='L3892' name='L3892'&gt;&lt;/a&gt;    % The item text fits into the space.  Start a paragraph, so that the
<a id='L3907' name='L3907'></a>&lt;a id='L3893' name='L3893'&gt;&lt;/a&gt;    % following text (if any) will end up on the same line.
<a id='L3908' name='L3908'></a>&lt;a id='L3894' name='L3894'&gt;&lt;/a&gt;    \noindent
<a id='L3909' name='L3909'></a>&lt;a id='L3895' name='L3895'&gt;&lt;/a&gt;    % Do this with kerns and \unhbox so that if there is a footnote in
<a id='L3910' name='L3910'></a>&lt;a id='L3896' name='L3896'&gt;&lt;/a&gt;    % the item text, it can migrate to the main vertical list and
<a id='L3911' name='L3911'></a>&lt;a id='L3897' name='L3897'&gt;&lt;/a&gt;    % eventually be printed.
<a id='L3912' name='L3912'></a>&lt;a id='L3898' name='L3898'&gt;&lt;/a&gt;    \nobreak\kern-\tableindent
<a id='L3913' name='L3913'></a>&lt;a id='L3899' name='L3899'&gt;&lt;/a&gt;    \dimen0 = \itemmax  \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0
<a id='L3914' name='L3914'></a>&lt;a id='L3900' name='L3900'&gt;&lt;/a&gt;    \unhbox0
<a id='L3915' name='L3915'></a>&lt;a id='L3901' name='L3901'&gt;&lt;/a&gt;    \nobreak\kern\dimen0
<a id='L3916' name='L3916'></a>&lt;a id='L3902' name='L3902'&gt;&lt;/a&gt;    \endgroup
<a id='L3917' name='L3917'></a>&lt;a id='L3903' name='L3903'&gt;&lt;/a&gt;    \itemxneedsnegativevskiptrue
<a id='L3918' name='L3918'></a>&lt;a id='L3904' name='L3904'&gt;&lt;/a&gt;  \fi
<a id='L3919' name='L3919'></a>&lt;a id='L3905' name='L3905'&gt;&lt;/a&gt;}
<a id='L3920' name='L3920'></a>&lt;a id='L3906' name='L3906'&gt;&lt;/a&gt;
<a id='L3921' name='L3921'></a>&lt;a id='L3907' name='L3907'&gt;&lt;/a&gt;\def\item{\errmessage{@item while not in a list environment}}
<a id='L3922' name='L3922'></a>&lt;a id='L3908' name='L3908'&gt;&lt;/a&gt;\def\itemx{\errmessage{@itemx while not in a list environment}}
<a id='L3923' name='L3923'></a>&lt;a id='L3909' name='L3909'&gt;&lt;/a&gt;
<a id='L3924' name='L3924'></a>&lt;a id='L3910' name='L3910'&gt;&lt;/a&gt;% @table, @ftable, @vtable.
<a id='L3925' name='L3925'></a>&lt;a id='L3911' name='L3911'&gt;&lt;/a&gt;\envdef\table{%
<a id='L3926' name='L3926'></a>&lt;a id='L3912' name='L3912'&gt;&lt;/a&gt;  \let\itemindex\gobble
<a id='L3927' name='L3927'></a>&lt;a id='L3913' name='L3913'&gt;&lt;/a&gt;  \tablecheck{table}%
<a id='L3928' name='L3928'></a>&lt;a id='L3914' name='L3914'&gt;&lt;/a&gt;}
<a id='L3929' name='L3929'></a>&lt;a id='L3915' name='L3915'&gt;&lt;/a&gt;\envdef\ftable{%
<a id='L3930' name='L3930'></a>&lt;a id='L3916' name='L3916'&gt;&lt;/a&gt;  \def\itemindex ##1{\doind {fn}{\code{##1}}}%
<a id='L3931' name='L3931'></a>&lt;a id='L3917' name='L3917'&gt;&lt;/a&gt;  \tablecheck{ftable}%
<a id='L3932' name='L3932'></a>&lt;a id='L3918' name='L3918'&gt;&lt;/a&gt;}
<a id='L3933' name='L3933'></a>&lt;a id='L3919' name='L3919'&gt;&lt;/a&gt;\envdef\vtable{%
<a id='L3934' name='L3934'></a>&lt;a id='L3920' name='L3920'&gt;&lt;/a&gt;  \def\itemindex ##1{\doind {vr}{\code{##1}}}%
<a id='L3935' name='L3935'></a>&lt;a id='L3921' name='L3921'&gt;&lt;/a&gt;  \tablecheck{vtable}%
<a id='L3936' name='L3936'></a>&lt;a id='L3922' name='L3922'&gt;&lt;/a&gt;}
<a id='L3937' name='L3937'></a>&lt;a id='L3923' name='L3923'&gt;&lt;/a&gt;\def\tablecheck#1{%
<a id='L3938' name='L3938'></a>&lt;a id='L3924' name='L3924'&gt;&lt;/a&gt;  \ifnum \the\catcode`\^^M=\active
<a id='L3939' name='L3939'></a>&lt;a id='L3925' name='L3925'&gt;&lt;/a&gt;    \endgroup
<a id='L3940' name='L3940'></a>&lt;a id='L3926' name='L3926'&gt;&lt;/a&gt;    \errmessage{This command won't work in this context; perhaps the problem is
<a id='L3941' name='L3941'></a>&lt;a id='L3927' name='L3927'&gt;&lt;/a&gt;      that we are \inenvironment\thisenv}%
<a id='L3942' name='L3942'></a>&lt;a id='L3928' name='L3928'&gt;&lt;/a&gt;    \def\next{\doignore{#1}}%
<a id='L3943' name='L3943'></a>&lt;a id='L3929' name='L3929'&gt;&lt;/a&gt;  \else
<a id='L3944' name='L3944'></a>&lt;a id='L3930' name='L3930'&gt;&lt;/a&gt;    \let\next\tablex
<a id='L3945' name='L3945'></a>&lt;a id='L3931' name='L3931'&gt;&lt;/a&gt;  \fi
<a id='L3946' name='L3946'></a>&lt;a id='L3932' name='L3932'&gt;&lt;/a&gt;  \next
<a id='L3947' name='L3947'></a>&lt;a id='L3933' name='L3933'&gt;&lt;/a&gt;}
<a id='L3948' name='L3948'></a>&lt;a id='L3934' name='L3934'&gt;&lt;/a&gt;\def\tablex#1{%
<a id='L3949' name='L3949'></a>&lt;a id='L3935' name='L3935'&gt;&lt;/a&gt;  \def\itemindicate{#1}%
<a id='L3950' name='L3950'></a>&lt;a id='L3936' name='L3936'&gt;&lt;/a&gt;  \parsearg\tabley
<a id='L3951' name='L3951'></a>&lt;a id='L3937' name='L3937'&gt;&lt;/a&gt;}
<a id='L3952' name='L3952'></a>&lt;a id='L3938' name='L3938'&gt;&lt;/a&gt;\def\tabley#1{%
<a id='L3953' name='L3953'></a>&lt;a id='L3939' name='L3939'&gt;&lt;/a&gt;  {%
<a id='L3954' name='L3954'></a>&lt;a id='L3940' name='L3940'&gt;&lt;/a&gt;    \makevalueexpandable
<a id='L3955' name='L3955'></a>&lt;a id='L3941' name='L3941'&gt;&lt;/a&gt;    \edef\temp{\noexpand\tablez #1\space\space\space}%
<a id='L3956' name='L3956'></a>&lt;a id='L3942' name='L3942'&gt;&lt;/a&gt;    \expandafter
<a id='L3957' name='L3957'></a>&lt;a id='L3943' name='L3943'&gt;&lt;/a&gt;  }\temp \endtablez
<a id='L3958' name='L3958'></a>&lt;a id='L3944' name='L3944'&gt;&lt;/a&gt;}
<a id='L3959' name='L3959'></a>&lt;a id='L3945' name='L3945'&gt;&lt;/a&gt;\def\tablez #1 #2 #3 #4\endtablez{%
<a id='L3960' name='L3960'></a>&lt;a id='L3946' name='L3946'&gt;&lt;/a&gt;  \aboveenvbreak
<a id='L3961' name='L3961'></a>&lt;a id='L3947' name='L3947'&gt;&lt;/a&gt;  \ifnum 0#1&amp;gt;0 \advance \leftskip by #1\mil \fi
<a id='L3962' name='L3962'></a>&lt;a id='L3948' name='L3948'&gt;&lt;/a&gt;  \ifnum 0#2&amp;gt;0 \tableindent=#2\mil \fi
<a id='L3963' name='L3963'></a>&lt;a id='L3949' name='L3949'&gt;&lt;/a&gt;  \ifnum 0#3&amp;gt;0 \advance \rightskip by #3\mil \fi
<a id='L3964' name='L3964'></a>&lt;a id='L3950' name='L3950'&gt;&lt;/a&gt;  \itemmax=\tableindent
<a id='L3965' name='L3965'></a>&lt;a id='L3951' name='L3951'&gt;&lt;/a&gt;  \advance \itemmax by -\itemmargin
<a id='L3966' name='L3966'></a>&lt;a id='L3952' name='L3952'&gt;&lt;/a&gt;  \advance \leftskip by \tableindent
<a id='L3967' name='L3967'></a>&lt;a id='L3953' name='L3953'&gt;&lt;/a&gt;  \exdentamount=\tableindent
<a id='L3968' name='L3968'></a>&lt;a id='L3954' name='L3954'&gt;&lt;/a&gt;  \parindent = 0pt
<a id='L3969' name='L3969'></a>&lt;a id='L3955' name='L3955'&gt;&lt;/a&gt;  \parskip = \smallskipamount
<a id='L3970' name='L3970'></a>&lt;a id='L3956' name='L3956'&gt;&lt;/a&gt;  \ifdim \parskip=0pt \parskip=2pt \fi
<a id='L3971' name='L3971'></a>&lt;a id='L3957' name='L3957'&gt;&lt;/a&gt;  \let\item = \internalBitem
<a id='L3972' name='L3972'></a>&lt;a id='L3958' name='L3958'&gt;&lt;/a&gt;  \let\itemx = \internalBitemx
<a id='L3973' name='L3973'></a>&lt;a id='L3959' name='L3959'&gt;&lt;/a&gt;}
<a id='L3974' name='L3974'></a>&lt;a id='L3960' name='L3960'&gt;&lt;/a&gt;\def\Etable{\endgraf\afterenvbreak}
<a id='L3975' name='L3975'></a>&lt;a id='L3961' name='L3961'&gt;&lt;/a&gt;\let\Eftable\Etable
<a id='L3976' name='L3976'></a>&lt;a id='L3962' name='L3962'&gt;&lt;/a&gt;\let\Evtable\Etable
<a id='L3977' name='L3977'></a>&lt;a id='L3963' name='L3963'&gt;&lt;/a&gt;\let\Eitemize\Etable
<a id='L3978' name='L3978'></a>&lt;a id='L3964' name='L3964'&gt;&lt;/a&gt;\let\Eenumerate\Etable
<a id='L3979' name='L3979'></a>&lt;a id='L3965' name='L3965'&gt;&lt;/a&gt;
<a id='L3980' name='L3980'></a>&lt;a id='L3966' name='L3966'&gt;&lt;/a&gt;% This is the counter used by @enumerate, which is really @itemize
<a id='L3981' name='L3981'></a>&lt;a id='L3967' name='L3967'&gt;&lt;/a&gt;
<a id='L3982' name='L3982'></a>&lt;a id='L3968' name='L3968'&gt;&lt;/a&gt;\newcount \itemno
<a id='L3983' name='L3983'></a>&lt;a id='L3969' name='L3969'&gt;&lt;/a&gt;
<a id='L3984' name='L3984'></a>&lt;a id='L3970' name='L3970'&gt;&lt;/a&gt;\envdef\itemize{\parsearg\doitemize}
<a id='L3985' name='L3985'></a>&lt;a id='L3971' name='L3971'&gt;&lt;/a&gt;
<a id='L3986' name='L3986'></a>&lt;a id='L3972' name='L3972'&gt;&lt;/a&gt;\def\doitemize#1{%
<a id='L3987' name='L3987'></a>&lt;a id='L3973' name='L3973'&gt;&lt;/a&gt;  \aboveenvbreak
<a id='L3988' name='L3988'></a>&lt;a id='L3974' name='L3974'&gt;&lt;/a&gt;  \itemmax=\itemindent
<a id='L3989' name='L3989'></a>&lt;a id='L3975' name='L3975'&gt;&lt;/a&gt;  \advance\itemmax by -\itemmargin
<a id='L3990' name='L3990'></a>&lt;a id='L3976' name='L3976'&gt;&lt;/a&gt;  \advance\leftskip by \itemindent
<a id='L3991' name='L3991'></a>&lt;a id='L3977' name='L3977'&gt;&lt;/a&gt;  \exdentamount=\itemindent
<a id='L3992' name='L3992'></a>&lt;a id='L3978' name='L3978'&gt;&lt;/a&gt;  \parindent=0pt
<a id='L3993' name='L3993'></a>&lt;a id='L3979' name='L3979'&gt;&lt;/a&gt;  \parskip=\smallskipamount
<a id='L3994' name='L3994'></a>&lt;a id='L3980' name='L3980'&gt;&lt;/a&gt;  \ifdim\parskip=0pt \parskip=2pt \fi
<a id='L3995' name='L3995'></a>&lt;a id='L3981' name='L3981'&gt;&lt;/a&gt;  %
<a id='L3996' name='L3996'></a>&lt;a id='L3982' name='L3982'&gt;&lt;/a&gt;  % Try typesetting the item mark that if the document erroneously says
<a id='L3997' name='L3997'></a>&lt;a id='L3983' name='L3983'&gt;&lt;/a&gt;  % something like @itemize @samp (intending @table), there's an error
<a id='L3998' name='L3998'></a>&lt;a id='L3984' name='L3984'&gt;&lt;/a&gt;  % right away at the @itemize.  It's not the best error message in the
<a id='L3999' name='L3999'></a>&lt;a id='L3985' name='L3985'&gt;&lt;/a&gt;  % world, but it's better than leaving it to the @item.  This means if
<a id='L4000' name='L4000'></a>&lt;a id='L3986' name='L3986'&gt;&lt;/a&gt;  % the user wants an empty mark, they have to say @w{} not just @w.
<a id='L4001' name='L4001'></a>&lt;a id='L3987' name='L3987'&gt;&lt;/a&gt;  \def\itemcontents{#1}%
<a id='L4002' name='L4002'></a>&lt;a id='L3988' name='L3988'&gt;&lt;/a&gt;  \setbox0 = \hbox{\itemcontents}%
<a id='L4003' name='L4003'></a>&lt;a id='L3989' name='L3989'&gt;&lt;/a&gt;  %
<a id='L4004' name='L4004'></a>&lt;a id='L3990' name='L3990'&gt;&lt;/a&gt;  % @itemize with no arg is equivalent to @itemize @bullet.
<a id='L4005' name='L4005'></a>&lt;a id='L3991' name='L3991'&gt;&lt;/a&gt;  \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
<a id='L4006' name='L4006'></a>&lt;a id='L3992' name='L3992'&gt;&lt;/a&gt;  %
<a id='L4007' name='L4007'></a>&lt;a id='L3993' name='L3993'&gt;&lt;/a&gt;  \let\item=\itemizeitem
<a id='L4008' name='L4008'></a>&lt;a id='L3994' name='L3994'&gt;&lt;/a&gt;}
<a id='L4009' name='L4009'></a>&lt;a id='L3995' name='L3995'&gt;&lt;/a&gt;
<a id='L4010' name='L4010'></a>&lt;a id='L3996' name='L3996'&gt;&lt;/a&gt;% Definition of @item while inside @itemize and @enumerate.
<a id='L4011' name='L4011'></a>&lt;a id='L3997' name='L3997'&gt;&lt;/a&gt;%
<a id='L4012' name='L4012'></a>&lt;a id='L3998' name='L3998'&gt;&lt;/a&gt;\def\itemizeitem{%
<a id='L4013' name='L4013'></a>&lt;a id='L3999' name='L3999'&gt;&lt;/a&gt;  \advance\itemno by 1  % for enumerations
<a id='L4014' name='L4014'></a>&lt;a id='L4000' name='L4000'&gt;&lt;/a&gt;  {\let\par=\endgraf \smallbreak}% reasonable place to break
<a id='L4015' name='L4015'></a>&lt;a id='L4001' name='L4001'&gt;&lt;/a&gt;  {%
<a id='L4016' name='L4016'></a>&lt;a id='L4002' name='L4002'&gt;&lt;/a&gt;   % If the document has an @itemize directly after a section title, a
<a id='L4017' name='L4017'></a>&lt;a id='L4003' name='L4003'&gt;&lt;/a&gt;   % \nobreak will be last on the list, and \sectionheading will have
<a id='L4018' name='L4018'></a>&lt;a id='L4004' name='L4004'&gt;&lt;/a&gt;   % done a \vskip-\parskip.  In that case, we don't want to zero
<a id='L4019' name='L4019'></a>&lt;a id='L4005' name='L4005'&gt;&lt;/a&gt;   % parskip, or the item text will crash with the heading.  On the
<a id='L4020' name='L4020'></a>&lt;a id='L4006' name='L4006'&gt;&lt;/a&gt;   % other hand, when there is normal text preceding the item (as there
<a id='L4021' name='L4021'></a>&lt;a id='L4007' name='L4007'&gt;&lt;/a&gt;   % usually is), we do want to zero parskip, or there would be too much
<a id='L4022' name='L4022'></a>&lt;a id='L4008' name='L4008'&gt;&lt;/a&gt;   % space.  In that case, we won't have a \nobreak before.  At least
<a id='L4023' name='L4023'></a>&lt;a id='L4009' name='L4009'&gt;&lt;/a&gt;   % that's the theory.
<a id='L4024' name='L4024'></a>&lt;a id='L4010' name='L4010'&gt;&lt;/a&gt;   \ifnum\lastpenalty&amp;lt;10000 \parskip=0in \fi
<a id='L4025' name='L4025'></a>&lt;a id='L4011' name='L4011'&gt;&lt;/a&gt;   \noindent
<a id='L4026' name='L4026'></a>&lt;a id='L4012' name='L4012'&gt;&lt;/a&gt;   \hbox to 0pt{\hss \itemcontents \kern\itemmargin}%
<a id='L4027' name='L4027'></a>&lt;a id='L4013' name='L4013'&gt;&lt;/a&gt;   %
<a id='L4028' name='L4028'></a>&lt;a id='L4014' name='L4014'&gt;&lt;/a&gt;   \vadjust{\penalty 1200}}% not good to break after first line of item.
<a id='L4029' name='L4029'></a>&lt;a id='L4015' name='L4015'&gt;&lt;/a&gt;  \flushcr
<a id='L4030' name='L4030'></a>&lt;a id='L4016' name='L4016'&gt;&lt;/a&gt;}
<a id='L4031' name='L4031'></a>&lt;a id='L4017' name='L4017'&gt;&lt;/a&gt;
<a id='L4032' name='L4032'></a>&lt;a id='L4018' name='L4018'&gt;&lt;/a&gt;% \splitoff TOKENS\endmark defines \first to be the first token in
<a id='L4033' name='L4033'></a>&lt;a id='L4019' name='L4019'&gt;&lt;/a&gt;% TOKENS, and \rest to be the remainder.
<a id='L4034' name='L4034'></a>&lt;a id='L4020' name='L4020'&gt;&lt;/a&gt;%
<a id='L4035' name='L4035'></a>&lt;a id='L4021' name='L4021'&gt;&lt;/a&gt;\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}%
<a id='L4036' name='L4036'></a>&lt;a id='L4022' name='L4022'&gt;&lt;/a&gt;
<a id='L4037' name='L4037'></a>&lt;a id='L4023' name='L4023'&gt;&lt;/a&gt;% Allow an optional argument of an uppercase letter, lowercase letter,
<a id='L4038' name='L4038'></a>&lt;a id='L4024' name='L4024'&gt;&lt;/a&gt;% or number, to specify the first label in the enumerated list.  No
<a id='L4039' name='L4039'></a>&lt;a id='L4025' name='L4025'&gt;&lt;/a&gt;% argument is the same as `1'.
<a id='L4040' name='L4040'></a>&lt;a id='L4026' name='L4026'&gt;&lt;/a&gt;%
<a id='L4041' name='L4041'></a>&lt;a id='L4027' name='L4027'&gt;&lt;/a&gt;\envparseargdef\enumerate{\enumeratey #1  \endenumeratey}
<a id='L4042' name='L4042'></a>&lt;a id='L4028' name='L4028'&gt;&lt;/a&gt;\def\enumeratey #1 #2\endenumeratey{%
<a id='L4043' name='L4043'></a>&lt;a id='L4029' name='L4029'&gt;&lt;/a&gt;  % If we were given no argument, pretend we were given `1'.
<a id='L4044' name='L4044'></a>&lt;a id='L4030' name='L4030'&gt;&lt;/a&gt;  \def\thearg{#1}%
<a id='L4045' name='L4045'></a>&lt;a id='L4031' name='L4031'&gt;&lt;/a&gt;  \ifx\thearg\empty \def\thearg{1}\fi
<a id='L4046' name='L4046'></a>&lt;a id='L4032' name='L4032'&gt;&lt;/a&gt;  %
<a id='L4047' name='L4047'></a>&lt;a id='L4033' name='L4033'&gt;&lt;/a&gt;  % Detect if the argument is a single token.  If so, it might be a
<a id='L4048' name='L4048'></a>&lt;a id='L4034' name='L4034'&gt;&lt;/a&gt;  % letter.  Otherwise, the only valid thing it can be is a number.
<a id='L4049' name='L4049'></a>&lt;a id='L4035' name='L4035'&gt;&lt;/a&gt;  % (We will always have one token, because of the test we just made.
<a id='L4050' name='L4050'></a>&lt;a id='L4036' name='L4036'&gt;&lt;/a&gt;  % This is a good thing, since \splitoff doesn't work given nothing at
<a id='L4051' name='L4051'></a>&lt;a id='L4037' name='L4037'&gt;&lt;/a&gt;  % all -- the first parameter is undelimited.)
<a id='L4052' name='L4052'></a>&lt;a id='L4038' name='L4038'&gt;&lt;/a&gt;  \expandafter\splitoff\thearg\endmark
<a id='L4053' name='L4053'></a>&lt;a id='L4039' name='L4039'&gt;&lt;/a&gt;  \ifx\rest\empty
<a id='L4054' name='L4054'></a>&lt;a id='L4040' name='L4040'&gt;&lt;/a&gt;    % Only one token in the argument.  It could still be anything.
<a id='L4055' name='L4055'></a>&lt;a id='L4041' name='L4041'&gt;&lt;/a&gt;    % A ``lowercase letter'' is one whose \lccode is nonzero.
<a id='L4056' name='L4056'></a>&lt;a id='L4042' name='L4042'&gt;&lt;/a&gt;    % An ``uppercase letter'' is one whose \lccode is both nonzero, and
<a id='L4057' name='L4057'></a>&lt;a id='L4043' name='L4043'&gt;&lt;/a&gt;    %   not equal to itself.
<a id='L4058' name='L4058'></a>&lt;a id='L4044' name='L4044'&gt;&lt;/a&gt;    % Otherwise, we assume it's a number.
<a id='L4059' name='L4059'></a>&lt;a id='L4045' name='L4045'&gt;&lt;/a&gt;    %
<a id='L4060' name='L4060'></a>&lt;a id='L4046' name='L4046'&gt;&lt;/a&gt;    % We need the \relax at the end of the \ifnum lines to stop TeX from
<a id='L4061' name='L4061'></a>&lt;a id='L4047' name='L4047'&gt;&lt;/a&gt;    % continuing to look for a &amp;lt;number&amp;gt;.
<a id='L4062' name='L4062'></a>&lt;a id='L4048' name='L4048'&gt;&lt;/a&gt;    %
<a id='L4063' name='L4063'></a>&lt;a id='L4049' name='L4049'&gt;&lt;/a&gt;    \ifnum\lccode\expandafter`\thearg=0\relax
<a id='L4064' name='L4064'></a>&lt;a id='L4050' name='L4050'&gt;&lt;/a&gt;      \numericenumerate % a number (we hope)
<a id='L4065' name='L4065'></a>&lt;a id='L4051' name='L4051'&gt;&lt;/a&gt;    \else
<a id='L4066' name='L4066'></a>&lt;a id='L4052' name='L4052'&gt;&lt;/a&gt;      % It's a letter.
<a id='L4067' name='L4067'></a>&lt;a id='L4053' name='L4053'&gt;&lt;/a&gt;      \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax
<a id='L4068' name='L4068'></a>&lt;a id='L4054' name='L4054'&gt;&lt;/a&gt;        \lowercaseenumerate % lowercase letter
<a id='L4069' name='L4069'></a>&lt;a id='L4055' name='L4055'&gt;&lt;/a&gt;      \else
<a id='L4070' name='L4070'></a>&lt;a id='L4056' name='L4056'&gt;&lt;/a&gt;        \uppercaseenumerate % uppercase letter
<a id='L4071' name='L4071'></a>&lt;a id='L4057' name='L4057'&gt;&lt;/a&gt;      \fi
<a id='L4072' name='L4072'></a>&lt;a id='L4058' name='L4058'&gt;&lt;/a&gt;    \fi
<a id='L4073' name='L4073'></a>&lt;a id='L4059' name='L4059'&gt;&lt;/a&gt;  \else
<a id='L4074' name='L4074'></a>&lt;a id='L4060' name='L4060'&gt;&lt;/a&gt;    % Multiple tokens in the argument.  We hope it's a number.
<a id='L4075' name='L4075'></a>&lt;a id='L4061' name='L4061'&gt;&lt;/a&gt;    \numericenumerate
<a id='L4076' name='L4076'></a>&lt;a id='L4062' name='L4062'&gt;&lt;/a&gt;  \fi
<a id='L4077' name='L4077'></a>&lt;a id='L4063' name='L4063'&gt;&lt;/a&gt;}
<a id='L4078' name='L4078'></a>&lt;a id='L4064' name='L4064'&gt;&lt;/a&gt;
<a id='L4079' name='L4079'></a>&lt;a id='L4065' name='L4065'&gt;&lt;/a&gt;% An @enumerate whose labels are integers.  The starting integer is
<a id='L4080' name='L4080'></a>&lt;a id='L4066' name='L4066'&gt;&lt;/a&gt;% given in \thearg.
<a id='L4081' name='L4081'></a>&lt;a id='L4067' name='L4067'&gt;&lt;/a&gt;%
<a id='L4082' name='L4082'></a>&lt;a id='L4068' name='L4068'&gt;&lt;/a&gt;\def\numericenumerate{%
<a id='L4083' name='L4083'></a>&lt;a id='L4069' name='L4069'&gt;&lt;/a&gt;  \itemno = \thearg
<a id='L4084' name='L4084'></a>&lt;a id='L4070' name='L4070'&gt;&lt;/a&gt;  \startenumeration{\the\itemno}%
<a id='L4085' name='L4085'></a>&lt;a id='L4071' name='L4071'&gt;&lt;/a&gt;}
<a id='L4086' name='L4086'></a>&lt;a id='L4072' name='L4072'&gt;&lt;/a&gt;
<a id='L4087' name='L4087'></a>&lt;a id='L4073' name='L4073'&gt;&lt;/a&gt;% The starting (lowercase) letter is in \thearg.
<a id='L4088' name='L4088'></a>&lt;a id='L4074' name='L4074'&gt;&lt;/a&gt;\def\lowercaseenumerate{%
<a id='L4089' name='L4089'></a>&lt;a id='L4075' name='L4075'&gt;&lt;/a&gt;  \itemno = \expandafter`\thearg
<a id='L4090' name='L4090'></a>&lt;a id='L4076' name='L4076'&gt;&lt;/a&gt;  \startenumeration{%
<a id='L4091' name='L4091'></a>&lt;a id='L4077' name='L4077'&gt;&lt;/a&gt;    % Be sure we're not beyond the end of the alphabet.
<a id='L4092' name='L4092'></a>&lt;a id='L4078' name='L4078'&gt;&lt;/a&gt;    \ifnum\itemno=0
<a id='L4093' name='L4093'></a>&lt;a id='L4079' name='L4079'&gt;&lt;/a&gt;      \errmessage{No more lowercase letters in @enumerate; get a bigger
<a id='L4094' name='L4094'></a>&lt;a id='L4080' name='L4080'&gt;&lt;/a&gt;                  alphabet}%
<a id='L4095' name='L4095'></a>&lt;a id='L4081' name='L4081'&gt;&lt;/a&gt;    \fi
<a id='L4096' name='L4096'></a>&lt;a id='L4082' name='L4082'&gt;&lt;/a&gt;    \char\lccode\itemno
<a id='L4097' name='L4097'></a>&lt;a id='L4083' name='L4083'&gt;&lt;/a&gt;  }%
<a id='L4098' name='L4098'></a>&lt;a id='L4084' name='L4084'&gt;&lt;/a&gt;}
<a id='L4099' name='L4099'></a>&lt;a id='L4085' name='L4085'&gt;&lt;/a&gt;
<a id='L4100' name='L4100'></a>&lt;a id='L4086' name='L4086'&gt;&lt;/a&gt;% The starting (uppercase) letter is in \thearg.
<a id='L4101' name='L4101'></a>&lt;a id='L4087' name='L4087'&gt;&lt;/a&gt;\def\uppercaseenumerate{%
<a id='L4102' name='L4102'></a>&lt;a id='L4088' name='L4088'&gt;&lt;/a&gt;  \itemno = \expandafter`\thearg
<a id='L4103' name='L4103'></a>&lt;a id='L4089' name='L4089'&gt;&lt;/a&gt;  \startenumeration{%
<a id='L4104' name='L4104'></a>&lt;a id='L4090' name='L4090'&gt;&lt;/a&gt;    % Be sure we're not beyond the end of the alphabet.
<a id='L4105' name='L4105'></a>&lt;a id='L4091' name='L4091'&gt;&lt;/a&gt;    \ifnum\itemno=0
<a id='L4106' name='L4106'></a>&lt;a id='L4092' name='L4092'&gt;&lt;/a&gt;      \errmessage{No more uppercase letters in @enumerate; get a bigger
<a id='L4107' name='L4107'></a>&lt;a id='L4093' name='L4093'&gt;&lt;/a&gt;                  alphabet}
<a id='L4108' name='L4108'></a>&lt;a id='L4094' name='L4094'&gt;&lt;/a&gt;    \fi
<a id='L4109' name='L4109'></a>&lt;a id='L4095' name='L4095'&gt;&lt;/a&gt;    \char\uccode\itemno
<a id='L4110' name='L4110'></a>&lt;a id='L4096' name='L4096'&gt;&lt;/a&gt;  }%
<a id='L4111' name='L4111'></a>&lt;a id='L4097' name='L4097'&gt;&lt;/a&gt;}
<a id='L4112' name='L4112'></a>&lt;a id='L4098' name='L4098'&gt;&lt;/a&gt;
<a id='L4113' name='L4113'></a>&lt;a id='L4099' name='L4099'&gt;&lt;/a&gt;% Call \doitemize, adding a period to the first argument and supplying the
<a id='L4114' name='L4114'></a>&lt;a id='L4100' name='L4100'&gt;&lt;/a&gt;% common last two arguments.  Also subtract one from the initial value in
<a id='L4115' name='L4115'></a>&lt;a id='L4101' name='L4101'&gt;&lt;/a&gt;% \itemno, since @item increments \itemno.
<a id='L4116' name='L4116'></a>&lt;a id='L4102' name='L4102'&gt;&lt;/a&gt;%
<a id='L4117' name='L4117'></a>&lt;a id='L4103' name='L4103'&gt;&lt;/a&gt;\def\startenumeration#1{%
<a id='L4118' name='L4118'></a>&lt;a id='L4104' name='L4104'&gt;&lt;/a&gt;  \advance\itemno by -1
<a id='L4119' name='L4119'></a>&lt;a id='L4105' name='L4105'&gt;&lt;/a&gt;  \doitemize{#1.}\flushcr
<a id='L4120' name='L4120'></a>&lt;a id='L4106' name='L4106'&gt;&lt;/a&gt;}
<a id='L4121' name='L4121'></a>&lt;a id='L4107' name='L4107'&gt;&lt;/a&gt;
<a id='L4122' name='L4122'></a>&lt;a id='L4108' name='L4108'&gt;&lt;/a&gt;% @alphaenumerate and @capsenumerate are abbreviations for giving an arg
<a id='L4123' name='L4123'></a>&lt;a id='L4109' name='L4109'&gt;&lt;/a&gt;% to @enumerate.
<a id='L4124' name='L4124'></a>&lt;a id='L4110' name='L4110'&gt;&lt;/a&gt;%
<a id='L4125' name='L4125'></a>&lt;a id='L4111' name='L4111'&gt;&lt;/a&gt;\def\alphaenumerate{\enumerate{a}}
<a id='L4126' name='L4126'></a>&lt;a id='L4112' name='L4112'&gt;&lt;/a&gt;\def\capsenumerate{\enumerate{A}}
<a id='L4127' name='L4127'></a>&lt;a id='L4113' name='L4113'&gt;&lt;/a&gt;\def\Ealphaenumerate{\Eenumerate}
<a id='L4128' name='L4128'></a>&lt;a id='L4114' name='L4114'&gt;&lt;/a&gt;\def\Ecapsenumerate{\Eenumerate}
<a id='L4129' name='L4129'></a>&lt;a id='L4115' name='L4115'&gt;&lt;/a&gt;
<a id='L4130' name='L4130'></a>&lt;a id='L4116' name='L4116'&gt;&lt;/a&gt;
<a id='L4131' name='L4131'></a>&lt;a id='L4117' name='L4117'&gt;&lt;/a&gt;% @multitable macros
<a id='L4132' name='L4132'></a>&lt;a id='L4118' name='L4118'&gt;&lt;/a&gt;% Amy Hendrickson, 8/18/94, 3/6/96
<a id='L4133' name='L4133'></a>&lt;a id='L4119' name='L4119'&gt;&lt;/a&gt;%
<a id='L4134' name='L4134'></a>&lt;a id='L4120' name='L4120'&gt;&lt;/a&gt;% @multitable ... @end multitable will make as many columns as desired.
<a id='L4135' name='L4135'></a>&lt;a id='L4121' name='L4121'&gt;&lt;/a&gt;% Contents of each column will wrap at width given in preamble.  Width
<a id='L4136' name='L4136'></a>&lt;a id='L4122' name='L4122'&gt;&lt;/a&gt;% can be specified either with sample text given in a template line,
<a id='L4137' name='L4137'></a>&lt;a id='L4123' name='L4123'&gt;&lt;/a&gt;% or in percent of \hsize, the current width of text on page.
<a id='L4138' name='L4138'></a>&lt;a id='L4124' name='L4124'&gt;&lt;/a&gt;
<a id='L4139' name='L4139'></a>&lt;a id='L4125' name='L4125'&gt;&lt;/a&gt;% Table can continue over pages but will only break between lines.
<a id='L4140' name='L4140'></a>&lt;a id='L4126' name='L4126'&gt;&lt;/a&gt;
<a id='L4141' name='L4141'></a>&lt;a id='L4127' name='L4127'&gt;&lt;/a&gt;% To make preamble:
<a id='L4142' name='L4142'></a>&lt;a id='L4128' name='L4128'&gt;&lt;/a&gt;%
<a id='L4143' name='L4143'></a>&lt;a id='L4129' name='L4129'&gt;&lt;/a&gt;% Either define widths of columns in terms of percent of \hsize:
<a id='L4144' name='L4144'></a>&lt;a id='L4130' name='L4130'&gt;&lt;/a&gt;%   @multitable @columnfractions .25 .3 .45
<a id='L4145' name='L4145'></a>&lt;a id='L4131' name='L4131'&gt;&lt;/a&gt;%   @item ...
<a id='L4146' name='L4146'></a>&lt;a id='L4132' name='L4132'&gt;&lt;/a&gt;%
<a id='L4147' name='L4147'></a>&lt;a id='L4133' name='L4133'&gt;&lt;/a&gt;%   Numbers following @columnfractions are the percent of the total
<a id='L4148' name='L4148'></a>&lt;a id='L4134' name='L4134'&gt;&lt;/a&gt;%   current hsize to be used for each column. You may use as many
<a id='L4149' name='L4149'></a>&lt;a id='L4135' name='L4135'&gt;&lt;/a&gt;%   columns as desired.
<a id='L4150' name='L4150'></a>&lt;a id='L4136' name='L4136'&gt;&lt;/a&gt;
<a id='L4151' name='L4151'></a>&lt;a id='L4137' name='L4137'&gt;&lt;/a&gt;
<a id='L4152' name='L4152'></a>&lt;a id='L4138' name='L4138'&gt;&lt;/a&gt;% Or use a template:
<a id='L4153' name='L4153'></a>&lt;a id='L4139' name='L4139'&gt;&lt;/a&gt;%   @multitable {Column 1 template} {Column 2 template} {Column 3 template}
<a id='L4154' name='L4154'></a>&lt;a id='L4140' name='L4140'&gt;&lt;/a&gt;%   @item ...
<a id='L4155' name='L4155'></a>&lt;a id='L4141' name='L4141'&gt;&lt;/a&gt;%   using the widest term desired in each column.
<a id='L4156' name='L4156'></a>&lt;a id='L4142' name='L4142'&gt;&lt;/a&gt;
<a id='L4157' name='L4157'></a>&lt;a id='L4143' name='L4143'&gt;&lt;/a&gt;% Each new table line starts with @item, each subsequent new column
<a id='L4158' name='L4158'></a>&lt;a id='L4144' name='L4144'&gt;&lt;/a&gt;% starts with @tab. Empty columns may be produced by supplying @tab's
<a id='L4159' name='L4159'></a>&lt;a id='L4145' name='L4145'&gt;&lt;/a&gt;% with nothing between them for as many times as empty columns are needed,
<a id='L4160' name='L4160'></a>&lt;a id='L4146' name='L4146'&gt;&lt;/a&gt;% ie, @tab@tab@tab will produce two empty columns.
<a id='L4161' name='L4161'></a>&lt;a id='L4147' name='L4147'&gt;&lt;/a&gt;
<a id='L4162' name='L4162'></a>&lt;a id='L4148' name='L4148'&gt;&lt;/a&gt;% @item, @tab do not need to be on their own lines, but it will not hurt
<a id='L4163' name='L4163'></a>&lt;a id='L4149' name='L4149'&gt;&lt;/a&gt;% if they are.
<a id='L4164' name='L4164'></a>&lt;a id='L4150' name='L4150'&gt;&lt;/a&gt;
<a id='L4165' name='L4165'></a>&lt;a id='L4151' name='L4151'&gt;&lt;/a&gt;% Sample multitable:
<a id='L4166' name='L4166'></a>&lt;a id='L4152' name='L4152'&gt;&lt;/a&gt;
<a id='L4167' name='L4167'></a>&lt;a id='L4153' name='L4153'&gt;&lt;/a&gt;%   @multitable {Column 1 template} {Column 2 template} {Column 3 template}
<a id='L4168' name='L4168'></a>&lt;a id='L4154' name='L4154'&gt;&lt;/a&gt;%   @item first col stuff @tab second col stuff @tab third col
<a id='L4169' name='L4169'></a>&lt;a id='L4155' name='L4155'&gt;&lt;/a&gt;%   @item
<a id='L4170' name='L4170'></a>&lt;a id='L4156' name='L4156'&gt;&lt;/a&gt;%   first col stuff
<a id='L4171' name='L4171'></a>&lt;a id='L4157' name='L4157'&gt;&lt;/a&gt;%   @tab
<a id='L4172' name='L4172'></a>&lt;a id='L4158' name='L4158'&gt;&lt;/a&gt;%   second col stuff
<a id='L4173' name='L4173'></a>&lt;a id='L4159' name='L4159'&gt;&lt;/a&gt;%   @tab
<a id='L4174' name='L4174'></a>&lt;a id='L4160' name='L4160'&gt;&lt;/a&gt;%   third col
<a id='L4175' name='L4175'></a>&lt;a id='L4161' name='L4161'&gt;&lt;/a&gt;%   @item first col stuff @tab second col stuff
<a id='L4176' name='L4176'></a>&lt;a id='L4162' name='L4162'&gt;&lt;/a&gt;%   @tab Many paragraphs of text may be used in any column.
<a id='L4177' name='L4177'></a>&lt;a id='L4163' name='L4163'&gt;&lt;/a&gt;%
<a id='L4178' name='L4178'></a>&lt;a id='L4164' name='L4164'&gt;&lt;/a&gt;%         They will wrap at the width determined by the template.
<a id='L4179' name='L4179'></a>&lt;a id='L4165' name='L4165'&gt;&lt;/a&gt;%   @item@tab@tab This will be in third column.
<a id='L4180' name='L4180'></a>&lt;a id='L4166' name='L4166'&gt;&lt;/a&gt;%   @end multitable
<a id='L4181' name='L4181'></a>&lt;a id='L4167' name='L4167'&gt;&lt;/a&gt;
<a id='L4182' name='L4182'></a>&lt;a id='L4168' name='L4168'&gt;&lt;/a&gt;% Default dimensions may be reset by user.
<a id='L4183' name='L4183'></a>&lt;a id='L4169' name='L4169'&gt;&lt;/a&gt;% @multitableparskip is vertical space between paragraphs in table.
<a id='L4184' name='L4184'></a>&lt;a id='L4170' name='L4170'&gt;&lt;/a&gt;% @multitableparindent is paragraph indent in table.
<a id='L4185' name='L4185'></a>&lt;a id='L4171' name='L4171'&gt;&lt;/a&gt;% @multitablecolmargin is horizontal space to be left between columns.
<a id='L4186' name='L4186'></a>&lt;a id='L4172' name='L4172'&gt;&lt;/a&gt;% @multitablelinespace is space to leave between table items, baseline
<a id='L4187' name='L4187'></a>&lt;a id='L4173' name='L4173'&gt;&lt;/a&gt;%                                                            to baseline.
<a id='L4188' name='L4188'></a>&lt;a id='L4174' name='L4174'&gt;&lt;/a&gt;%   0pt means it depends on current normal line spacing.
<a id='L4189' name='L4189'></a>&lt;a id='L4175' name='L4175'&gt;&lt;/a&gt;%
<a id='L4190' name='L4190'></a>&lt;a id='L4176' name='L4176'&gt;&lt;/a&gt;\newskip\multitableparskip
<a id='L4191' name='L4191'></a>&lt;a id='L4177' name='L4177'&gt;&lt;/a&gt;\newskip\multitableparindent
<a id='L4192' name='L4192'></a>&lt;a id='L4178' name='L4178'&gt;&lt;/a&gt;\newdimen\multitablecolspace
<a id='L4193' name='L4193'></a>&lt;a id='L4179' name='L4179'&gt;&lt;/a&gt;\newskip\multitablelinespace
<a id='L4194' name='L4194'></a>&lt;a id='L4180' name='L4180'&gt;&lt;/a&gt;\multitableparskip=0pt
<a id='L4195' name='L4195'></a>&lt;a id='L4181' name='L4181'&gt;&lt;/a&gt;\multitableparindent=6pt
<a id='L4196' name='L4196'></a>&lt;a id='L4182' name='L4182'&gt;&lt;/a&gt;\multitablecolspace=12pt
<a id='L4197' name='L4197'></a>&lt;a id='L4183' name='L4183'&gt;&lt;/a&gt;\multitablelinespace=0pt
<a id='L4198' name='L4198'></a>&lt;a id='L4184' name='L4184'&gt;&lt;/a&gt;
<a id='L4199' name='L4199'></a>&lt;a id='L4185' name='L4185'&gt;&lt;/a&gt;% Macros used to set up halign preamble:
<a id='L4200' name='L4200'></a>&lt;a id='L4186' name='L4186'&gt;&lt;/a&gt;%
<a id='L4201' name='L4201'></a>&lt;a id='L4187' name='L4187'&gt;&lt;/a&gt;\let\endsetuptable\relax
<a id='L4202' name='L4202'></a>&lt;a id='L4188' name='L4188'&gt;&lt;/a&gt;\def\xendsetuptable{\endsetuptable}
<a id='L4203' name='L4203'></a>&lt;a id='L4189' name='L4189'&gt;&lt;/a&gt;\let\columnfractions\relax
<a id='L4204' name='L4204'></a>&lt;a id='L4190' name='L4190'&gt;&lt;/a&gt;\def\xcolumnfractions{\columnfractions}
<a id='L4205' name='L4205'></a>&lt;a id='L4191' name='L4191'&gt;&lt;/a&gt;\newif\ifsetpercent
<a id='L4206' name='L4206'></a>&lt;a id='L4192' name='L4192'&gt;&lt;/a&gt;
<a id='L4207' name='L4207'></a>&lt;a id='L4193' name='L4193'&gt;&lt;/a&gt;% #1 is the @columnfraction, usually a decimal number like .5, but might
<a id='L4208' name='L4208'></a>&lt;a id='L4194' name='L4194'&gt;&lt;/a&gt;% be just 1.  We just use it, whatever it is.
<a id='L4209' name='L4209'></a>&lt;a id='L4195' name='L4195'&gt;&lt;/a&gt;%
<a id='L4210' name='L4210'></a>&lt;a id='L4196' name='L4196'&gt;&lt;/a&gt;\def\pickupwholefraction#1 {%
<a id='L4211' name='L4211'></a>&lt;a id='L4197' name='L4197'&gt;&lt;/a&gt;  \global\advance\colcount by 1
<a id='L4212' name='L4212'></a>&lt;a id='L4198' name='L4198'&gt;&lt;/a&gt;  \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}%
<a id='L4213' name='L4213'></a>&lt;a id='L4199' name='L4199'&gt;&lt;/a&gt;  \setuptable
<a id='L4214' name='L4214'></a>&lt;a id='L4200' name='L4200'&gt;&lt;/a&gt;}
<a id='L4215' name='L4215'></a>&lt;a id='L4201' name='L4201'&gt;&lt;/a&gt;
<a id='L4216' name='L4216'></a>&lt;a id='L4202' name='L4202'&gt;&lt;/a&gt;\newcount\colcount
<a id='L4217' name='L4217'></a>&lt;a id='L4203' name='L4203'&gt;&lt;/a&gt;\def\setuptable#1{%
<a id='L4218' name='L4218'></a>&lt;a id='L4204' name='L4204'&gt;&lt;/a&gt;  \def\firstarg{#1}%
<a id='L4219' name='L4219'></a>&lt;a id='L4205' name='L4205'&gt;&lt;/a&gt;  \ifx\firstarg\xendsetuptable
<a id='L4220' name='L4220'></a>&lt;a id='L4206' name='L4206'&gt;&lt;/a&gt;    \let\go = \relax
<a id='L4221' name='L4221'></a>&lt;a id='L4207' name='L4207'&gt;&lt;/a&gt;  \else
<a id='L4222' name='L4222'></a>&lt;a id='L4208' name='L4208'&gt;&lt;/a&gt;    \ifx\firstarg\xcolumnfractions
<a id='L4223' name='L4223'></a>&lt;a id='L4209' name='L4209'&gt;&lt;/a&gt;      \global\setpercenttrue
<a id='L4224' name='L4224'></a>&lt;a id='L4210' name='L4210'&gt;&lt;/a&gt;    \else
<a id='L4225' name='L4225'></a>&lt;a id='L4211' name='L4211'&gt;&lt;/a&gt;      \ifsetpercent
<a id='L4226' name='L4226'></a>&lt;a id='L4212' name='L4212'&gt;&lt;/a&gt;         \let\go\pickupwholefraction
<a id='L4227' name='L4227'></a>&lt;a id='L4213' name='L4213'&gt;&lt;/a&gt;      \else
<a id='L4228' name='L4228'></a>&lt;a id='L4214' name='L4214'&gt;&lt;/a&gt;         \global\advance\colcount by 1
<a id='L4229' name='L4229'></a>&lt;a id='L4215' name='L4215'&gt;&lt;/a&gt;         \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a
<a id='L4230' name='L4230'></a>&lt;a id='L4216' name='L4216'&gt;&lt;/a&gt;                   % separator; typically that is always in the input, anyway.
<a id='L4231' name='L4231'></a>&lt;a id='L4217' name='L4217'&gt;&lt;/a&gt;         \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
<a id='L4232' name='L4232'></a>&lt;a id='L4218' name='L4218'&gt;&lt;/a&gt;      \fi
<a id='L4233' name='L4233'></a>&lt;a id='L4219' name='L4219'&gt;&lt;/a&gt;    \fi
<a id='L4234' name='L4234'></a>&lt;a id='L4220' name='L4220'&gt;&lt;/a&gt;    \ifx\go\pickupwholefraction
<a id='L4235' name='L4235'></a>&lt;a id='L4221' name='L4221'&gt;&lt;/a&gt;      % Put the argument back for the \pickupwholefraction call, so
<a id='L4236' name='L4236'></a>&lt;a id='L4222' name='L4222'&gt;&lt;/a&gt;      % we'll always have a period there to be parsed.
<a id='L4237' name='L4237'></a>&lt;a id='L4223' name='L4223'&gt;&lt;/a&gt;      \def\go{\pickupwholefraction#1}%
<a id='L4238' name='L4238'></a>&lt;a id='L4224' name='L4224'&gt;&lt;/a&gt;    \else
<a id='L4239' name='L4239'></a>&lt;a id='L4225' name='L4225'&gt;&lt;/a&gt;      \let\go = \setuptable
<a id='L4240' name='L4240'></a>&lt;a id='L4226' name='L4226'&gt;&lt;/a&gt;    \fi%
<a id='L4241' name='L4241'></a>&lt;a id='L4227' name='L4227'&gt;&lt;/a&gt;  \fi
<a id='L4242' name='L4242'></a>&lt;a id='L4228' name='L4228'&gt;&lt;/a&gt;  \go
<a id='L4243' name='L4243'></a>&lt;a id='L4229' name='L4229'&gt;&lt;/a&gt;}
<a id='L4244' name='L4244'></a>&lt;a id='L4230' name='L4230'&gt;&lt;/a&gt;
<a id='L4245' name='L4245'></a>&lt;a id='L4231' name='L4231'&gt;&lt;/a&gt;% multitable-only commands.
<a id='L4246' name='L4246'></a>&lt;a id='L4232' name='L4232'&gt;&lt;/a&gt;%
<a id='L4247' name='L4247'></a>&lt;a id='L4233' name='L4233'&gt;&lt;/a&gt;% @headitem starts a heading row, which we typeset in bold.
<a id='L4248' name='L4248'></a>&lt;a id='L4234' name='L4234'&gt;&lt;/a&gt;% Assignments have to be global since we are inside the implicit group
<a id='L4249' name='L4249'></a>&lt;a id='L4235' name='L4235'&gt;&lt;/a&gt;% of an alignment entry.  \everycr resets \everytab so we don't have to
<a id='L4250' name='L4250'></a>&lt;a id='L4236' name='L4236'&gt;&lt;/a&gt;% undo it ourselves.
<a id='L4251' name='L4251'></a>&lt;a id='L4237' name='L4237'&gt;&lt;/a&gt;\def\headitemfont{\b}% for people to use in the template row; not changeable
<a id='L4252' name='L4252'></a>&lt;a id='L4238' name='L4238'&gt;&lt;/a&gt;\def\headitem{%
<a id='L4253' name='L4253'></a>&lt;a id='L4239' name='L4239'&gt;&lt;/a&gt;  \checkenv\multitable
<a id='L4254' name='L4254'></a>&lt;a id='L4240' name='L4240'&gt;&lt;/a&gt;  \crcr
<a id='L4255' name='L4255'></a>&lt;a id='L4241' name='L4241'&gt;&lt;/a&gt;  \global\everytab={\bf}% can't use \headitemfont since the parsing differs
<a id='L4256' name='L4256'></a>&lt;a id='L4242' name='L4242'&gt;&lt;/a&gt;  \the\everytab % for the first item
<a id='L4257' name='L4257'></a>&lt;a id='L4243' name='L4243'&gt;&lt;/a&gt;}%
<a id='L4258' name='L4258'></a>&lt;a id='L4244' name='L4244'&gt;&lt;/a&gt;%
<a id='L4259' name='L4259'></a>&lt;a id='L4245' name='L4245'&gt;&lt;/a&gt;% A \tab used to include \hskip1sp.  But then the space in a template
<a id='L4260' name='L4260'></a>&lt;a id='L4246' name='L4246'&gt;&lt;/a&gt;% line is not enough.  That is bad.  So let's go back to just `&amp;amp;' until
<a id='L4261' name='L4261'></a>&lt;a id='L4247' name='L4247'&gt;&lt;/a&gt;% we again encounter the problem the 1sp was intended to solve.
<a id='L4262' name='L4262'></a>&lt;a id='L4248' name='L4248'&gt;&lt;/a&gt;%                                       --karl, nathan@acm.org, 20apr99.
<a id='L4263' name='L4263'></a>&lt;a id='L4249' name='L4249'&gt;&lt;/a&gt;\def\tab{\checkenv\multitable &amp;amp;\the\everytab}%
<a id='L4264' name='L4264'></a>&lt;a id='L4250' name='L4250'&gt;&lt;/a&gt;
<a id='L4265' name='L4265'></a>&lt;a id='L4251' name='L4251'&gt;&lt;/a&gt;% @multitable ... @end multitable definitions:
<a id='L4266' name='L4266'></a>&lt;a id='L4252' name='L4252'&gt;&lt;/a&gt;%
<a id='L4267' name='L4267'></a>&lt;a id='L4253' name='L4253'&gt;&lt;/a&gt;\newtoks\everytab  % insert after every tab.
<a id='L4268' name='L4268'></a>&lt;a id='L4254' name='L4254'&gt;&lt;/a&gt;%
<a id='L4269' name='L4269'></a>&lt;a id='L4255' name='L4255'&gt;&lt;/a&gt;\envdef\multitable{%
<a id='L4270' name='L4270'></a>&lt;a id='L4256' name='L4256'&gt;&lt;/a&gt;  \vskip\parskip
<a id='L4271' name='L4271'></a>&lt;a id='L4257' name='L4257'&gt;&lt;/a&gt;  \startsavinginserts
<a id='L4272' name='L4272'></a>&lt;a id='L4258' name='L4258'&gt;&lt;/a&gt;  %
<a id='L4273' name='L4273'></a>&lt;a id='L4259' name='L4259'&gt;&lt;/a&gt;  % @item within a multitable starts a normal row.
<a id='L4274' name='L4274'></a>&lt;a id='L4260' name='L4260'&gt;&lt;/a&gt;  % We use \def instead of \let so that if one of the multitable entries
<a id='L4275' name='L4275'></a>&lt;a id='L4261' name='L4261'&gt;&lt;/a&gt;  % contains an @itemize, we don't choke on the \item (seen as \crcr aka
<a id='L4276' name='L4276'></a>&lt;a id='L4262' name='L4262'&gt;&lt;/a&gt;  % \endtemplate) expanding \doitemize.
<a id='L4277' name='L4277'></a>&lt;a id='L4263' name='L4263'&gt;&lt;/a&gt;  \def\item{\crcr}%
<a id='L4278' name='L4278'></a>&lt;a id='L4264' name='L4264'&gt;&lt;/a&gt;  %
<a id='L4279' name='L4279'></a>&lt;a id='L4265' name='L4265'&gt;&lt;/a&gt;  \tolerance=9500
<a id='L4280' name='L4280'></a>&lt;a id='L4266' name='L4266'&gt;&lt;/a&gt;  \hbadness=9500
<a id='L4281' name='L4281'></a>&lt;a id='L4267' name='L4267'&gt;&lt;/a&gt;  \setmultitablespacing
<a id='L4282' name='L4282'></a>&lt;a id='L4268' name='L4268'&gt;&lt;/a&gt;  \parskip=\multitableparskip
<a id='L4283' name='L4283'></a>&lt;a id='L4269' name='L4269'&gt;&lt;/a&gt;  \parindent=\multitableparindent
<a id='L4284' name='L4284'></a>&lt;a id='L4270' name='L4270'&gt;&lt;/a&gt;  \overfullrule=0pt
<a id='L4285' name='L4285'></a>&lt;a id='L4271' name='L4271'&gt;&lt;/a&gt;  \global\colcount=0
<a id='L4286' name='L4286'></a>&lt;a id='L4272' name='L4272'&gt;&lt;/a&gt;  %
<a id='L4287' name='L4287'></a>&lt;a id='L4273' name='L4273'&gt;&lt;/a&gt;  \everycr = {%
<a id='L4288' name='L4288'></a>&lt;a id='L4274' name='L4274'&gt;&lt;/a&gt;    \noalign{%
<a id='L4289' name='L4289'></a>&lt;a id='L4275' name='L4275'&gt;&lt;/a&gt;      \global\everytab={}%
<a id='L4290' name='L4290'></a>&lt;a id='L4276' name='L4276'&gt;&lt;/a&gt;      \global\colcount=0 % Reset the column counter.
<a id='L4291' name='L4291'></a>&lt;a id='L4277' name='L4277'&gt;&lt;/a&gt;      % Check for saved footnotes, etc.
<a id='L4292' name='L4292'></a>&lt;a id='L4278' name='L4278'&gt;&lt;/a&gt;      \checkinserts
<a id='L4293' name='L4293'></a>&lt;a id='L4279' name='L4279'&gt;&lt;/a&gt;      % Keeps underfull box messages off when table breaks over pages.
<a id='L4294' name='L4294'></a>&lt;a id='L4280' name='L4280'&gt;&lt;/a&gt;      %\filbreak
<a id='L4295' name='L4295'></a>&lt;a id='L4281' name='L4281'&gt;&lt;/a&gt;        % Maybe so, but it also creates really weird page breaks when the
<a id='L4296' name='L4296'></a>&lt;a id='L4282' name='L4282'&gt;&lt;/a&gt;        % table breaks over pages. Wouldn't \vfil be better?  Wait until the
<a id='L4297' name='L4297'></a>&lt;a id='L4283' name='L4283'&gt;&lt;/a&gt;        % problem manifests itself, so it can be fixed for real --karl.
<a id='L4298' name='L4298'></a>&lt;a id='L4284' name='L4284'&gt;&lt;/a&gt;    }%
<a id='L4299' name='L4299'></a>&lt;a id='L4285' name='L4285'&gt;&lt;/a&gt;  }%
<a id='L4300' name='L4300'></a>&lt;a id='L4286' name='L4286'&gt;&lt;/a&gt;  %
<a id='L4301' name='L4301'></a>&lt;a id='L4287' name='L4287'&gt;&lt;/a&gt;  \parsearg\domultitable
<a id='L4302' name='L4302'></a>&lt;a id='L4288' name='L4288'&gt;&lt;/a&gt;}
<a id='L4303' name='L4303'></a>&lt;a id='L4289' name='L4289'&gt;&lt;/a&gt;\def\domultitable#1{%
<a id='L4304' name='L4304'></a>&lt;a id='L4290' name='L4290'&gt;&lt;/a&gt;  % To parse everything between @multitable and @item:
<a id='L4305' name='L4305'></a>&lt;a id='L4291' name='L4291'&gt;&lt;/a&gt;  \setuptable#1 \endsetuptable
<a id='L4306' name='L4306'></a>&lt;a id='L4292' name='L4292'&gt;&lt;/a&gt;  %
<a id='L4307' name='L4307'></a>&lt;a id='L4293' name='L4293'&gt;&lt;/a&gt;  % This preamble sets up a generic column definition, which will
<a id='L4308' name='L4308'></a>&lt;a id='L4294' name='L4294'&gt;&lt;/a&gt;  % be used as many times as user calls for columns.
<a id='L4309' name='L4309'></a>&lt;a id='L4295' name='L4295'&gt;&lt;/a&gt;  % \vtop will set a single line and will also let text wrap and
<a id='L4310' name='L4310'></a>&lt;a id='L4296' name='L4296'&gt;&lt;/a&gt;  % continue for many paragraphs if desired.
<a id='L4311' name='L4311'></a>&lt;a id='L4297' name='L4297'&gt;&lt;/a&gt;  \halign\bgroup &amp;amp;%
<a id='L4312' name='L4312'></a>&lt;a id='L4298' name='L4298'&gt;&lt;/a&gt;    \global\advance\colcount by 1
<a id='L4313' name='L4313'></a>&lt;a id='L4299' name='L4299'&gt;&lt;/a&gt;    \multistrut
<a id='L4314' name='L4314'></a>&lt;a id='L4300' name='L4300'&gt;&lt;/a&gt;    \vtop{%
<a id='L4315' name='L4315'></a>&lt;a id='L4301' name='L4301'&gt;&lt;/a&gt;      % Use the current \colcount to find the correct column width:
<a id='L4316' name='L4316'></a>&lt;a id='L4302' name='L4302'&gt;&lt;/a&gt;      \hsize=\expandafter\csname col\the\colcount\endcsname
<a id='L4317' name='L4317'></a>&lt;a id='L4303' name='L4303'&gt;&lt;/a&gt;      %
<a id='L4318' name='L4318'></a>&lt;a id='L4304' name='L4304'&gt;&lt;/a&gt;      % In order to keep entries from bumping into each other
<a id='L4319' name='L4319'></a>&lt;a id='L4305' name='L4305'&gt;&lt;/a&gt;      % we will add a \leftskip of \multitablecolspace to all columns after
<a id='L4320' name='L4320'></a>&lt;a id='L4306' name='L4306'&gt;&lt;/a&gt;      % the first one.
<a id='L4321' name='L4321'></a>&lt;a id='L4307' name='L4307'&gt;&lt;/a&gt;      %
<a id='L4322' name='L4322'></a>&lt;a id='L4308' name='L4308'&gt;&lt;/a&gt;      % If a template has been used, we will add \multitablecolspace
<a id='L4323' name='L4323'></a>&lt;a id='L4309' name='L4309'&gt;&lt;/a&gt;      % to the width of each template entry.
<a id='L4324' name='L4324'></a>&lt;a id='L4310' name='L4310'&gt;&lt;/a&gt;      %
<a id='L4325' name='L4325'></a>&lt;a id='L4311' name='L4311'&gt;&lt;/a&gt;      % If the user has set preamble in terms of percent of \hsize we will
<a id='L4326' name='L4326'></a>&lt;a id='L4312' name='L4312'&gt;&lt;/a&gt;      % use that dimension as the width of the column, and the \leftskip
<a id='L4327' name='L4327'></a>&lt;a id='L4313' name='L4313'&gt;&lt;/a&gt;      % will keep entries from bumping into each other.  Table will start at
<a id='L4328' name='L4328'></a>&lt;a id='L4314' name='L4314'&gt;&lt;/a&gt;      % left margin and final column will justify at right margin.
<a id='L4329' name='L4329'></a>&lt;a id='L4315' name='L4315'&gt;&lt;/a&gt;      %
<a id='L4330' name='L4330'></a>&lt;a id='L4316' name='L4316'&gt;&lt;/a&gt;      % Make sure we don't inherit \rightskip from the outer environment.
<a id='L4331' name='L4331'></a>&lt;a id='L4317' name='L4317'&gt;&lt;/a&gt;      \rightskip=0pt
<a id='L4332' name='L4332'></a>&lt;a id='L4318' name='L4318'&gt;&lt;/a&gt;      \ifnum\colcount=1
<a id='L4333' name='L4333'></a>&lt;a id='L4319' name='L4319'&gt;&lt;/a&gt;        % The first column will be indented with the surrounding text.
<a id='L4334' name='L4334'></a>&lt;a id='L4320' name='L4320'&gt;&lt;/a&gt;        \advance\hsize by\leftskip
<a id='L4335' name='L4335'></a>&lt;a id='L4321' name='L4321'&gt;&lt;/a&gt;      \else
<a id='L4336' name='L4336'></a>&lt;a id='L4322' name='L4322'&gt;&lt;/a&gt;        \ifsetpercent \else
<a id='L4337' name='L4337'></a>&lt;a id='L4323' name='L4323'&gt;&lt;/a&gt;          % If user has not set preamble in terms of percent of \hsize
<a id='L4338' name='L4338'></a>&lt;a id='L4324' name='L4324'&gt;&lt;/a&gt;          % we will advance \hsize by \multitablecolspace.
<a id='L4339' name='L4339'></a>&lt;a id='L4325' name='L4325'&gt;&lt;/a&gt;          \advance\hsize by \multitablecolspace
<a id='L4340' name='L4340'></a>&lt;a id='L4326' name='L4326'&gt;&lt;/a&gt;        \fi
<a id='L4341' name='L4341'></a>&lt;a id='L4327' name='L4327'&gt;&lt;/a&gt;       % In either case we will make \leftskip=\multitablecolspace:
<a id='L4342' name='L4342'></a>&lt;a id='L4328' name='L4328'&gt;&lt;/a&gt;      \leftskip=\multitablecolspace
<a id='L4343' name='L4343'></a>&lt;a id='L4329' name='L4329'&gt;&lt;/a&gt;      \fi
<a id='L4344' name='L4344'></a>&lt;a id='L4330' name='L4330'&gt;&lt;/a&gt;      % Ignoring space at the beginning and end avoids an occasional spurious
<a id='L4345' name='L4345'></a>&lt;a id='L4331' name='L4331'&gt;&lt;/a&gt;      % blank line, when TeX decides to break the line at the space before the
<a id='L4346' name='L4346'></a>&lt;a id='L4332' name='L4332'&gt;&lt;/a&gt;      % box from the multistrut, so the strut ends up on a line by itself.
<a id='L4347' name='L4347'></a>&lt;a id='L4333' name='L4333'&gt;&lt;/a&gt;      % For example:
<a id='L4348' name='L4348'></a>&lt;a id='L4334' name='L4334'&gt;&lt;/a&gt;      % @multitable @columnfractions .11 .89
<a id='L4349' name='L4349'></a>&lt;a id='L4335' name='L4335'&gt;&lt;/a&gt;      % @item @code{#}
<a id='L4350' name='L4350'></a>&lt;a id='L4336' name='L4336'&gt;&lt;/a&gt;      % @tab Legal holiday which is valid in major parts of the whole country.
<a id='L4351' name='L4351'></a>&lt;a id='L4337' name='L4337'&gt;&lt;/a&gt;      % Is automatically provided with highlighting sequences respectively
<a id='L4352' name='L4352'></a>&lt;a id='L4338' name='L4338'&gt;&lt;/a&gt;      % marking characters.
<a id='L4353' name='L4353'></a>&lt;a id='L4339' name='L4339'&gt;&lt;/a&gt;      \noindent\ignorespaces##\unskip\multistrut
<a id='L4354' name='L4354'></a>&lt;a id='L4340' name='L4340'&gt;&lt;/a&gt;    }\cr
<a id='L4355' name='L4355'></a>&lt;a id='L4341' name='L4341'&gt;&lt;/a&gt;}
<a id='L4356' name='L4356'></a>&lt;a id='L4342' name='L4342'&gt;&lt;/a&gt;\def\Emultitable{%
<a id='L4357' name='L4357'></a>&lt;a id='L4343' name='L4343'&gt;&lt;/a&gt;  \crcr
<a id='L4358' name='L4358'></a>&lt;a id='L4344' name='L4344'&gt;&lt;/a&gt;  \egroup % end the \halign
<a id='L4359' name='L4359'></a>&lt;a id='L4345' name='L4345'&gt;&lt;/a&gt;  \global\setpercentfalse
<a id='L4360' name='L4360'></a>&lt;a id='L4346' name='L4346'&gt;&lt;/a&gt;}
<a id='L4361' name='L4361'></a>&lt;a id='L4347' name='L4347'&gt;&lt;/a&gt;
<a id='L4362' name='L4362'></a>&lt;a id='L4348' name='L4348'&gt;&lt;/a&gt;\def\setmultitablespacing{%
<a id='L4363' name='L4363'></a>&lt;a id='L4349' name='L4349'&gt;&lt;/a&gt;  \def\multistrut{\strut}% just use the standard line spacing
<a id='L4364' name='L4364'></a>&lt;a id='L4350' name='L4350'&gt;&lt;/a&gt;  %
<a id='L4365' name='L4365'></a>&lt;a id='L4351' name='L4351'&gt;&lt;/a&gt;  % Compute \multitablelinespace (if not defined by user) for use in
<a id='L4366' name='L4366'></a>&lt;a id='L4352' name='L4352'&gt;&lt;/a&gt;  % \multitableparskip calculation.  We used define \multistrut based on
<a id='L4367' name='L4367'></a>&lt;a id='L4353' name='L4353'&gt;&lt;/a&gt;  % this, but (ironically) that caused the spacing to be off.
<a id='L4368' name='L4368'></a>&lt;a id='L4354' name='L4354'&gt;&lt;/a&gt;  % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100.
<a id='L4369' name='L4369'></a>&lt;a id='L4355' name='L4355'&gt;&lt;/a&gt;\ifdim\multitablelinespace=0pt
<a id='L4370' name='L4370'></a>&lt;a id='L4356' name='L4356'&gt;&lt;/a&gt;\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
<a id='L4371' name='L4371'></a>&lt;a id='L4357' name='L4357'&gt;&lt;/a&gt;\global\advance\multitablelinespace by-\ht0
<a id='L4372' name='L4372'></a>&lt;a id='L4358' name='L4358'&gt;&lt;/a&gt;\fi
<a id='L4373' name='L4373'></a>&lt;a id='L4359' name='L4359'&gt;&lt;/a&gt;% Test to see if parskip is larger than space between lines of
<a id='L4374' name='L4374'></a>&lt;a id='L4360' name='L4360'&gt;&lt;/a&gt;% table. If not, do nothing.
<a id='L4375' name='L4375'></a>&lt;a id='L4361' name='L4361'&gt;&lt;/a&gt;%        If so, set to same dimension as multitablelinespace.
<a id='L4376' name='L4376'></a>&lt;a id='L4362' name='L4362'&gt;&lt;/a&gt;\ifdim\multitableparskip&amp;gt;\multitablelinespace
<a id='L4377' name='L4377'></a>&lt;a id='L4363' name='L4363'&gt;&lt;/a&gt;\global\multitableparskip=\multitablelinespace
<a id='L4378' name='L4378'></a>&lt;a id='L4364' name='L4364'&gt;&lt;/a&gt;\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
<a id='L4379' name='L4379'></a>&lt;a id='L4365' name='L4365'&gt;&lt;/a&gt;                                      % than skip between lines in the table.
<a id='L4380' name='L4380'></a>&lt;a id='L4366' name='L4366'&gt;&lt;/a&gt;\fi%
<a id='L4381' name='L4381'></a>&lt;a id='L4367' name='L4367'&gt;&lt;/a&gt;\ifdim\multitableparskip=0pt
<a id='L4382' name='L4382'></a>&lt;a id='L4368' name='L4368'&gt;&lt;/a&gt;\global\multitableparskip=\multitablelinespace
<a id='L4383' name='L4383'></a>&lt;a id='L4369' name='L4369'&gt;&lt;/a&gt;\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
<a id='L4384' name='L4384'></a>&lt;a id='L4370' name='L4370'&gt;&lt;/a&gt;                                      % than skip between lines in the table.
<a id='L4385' name='L4385'></a>&lt;a id='L4371' name='L4371'&gt;&lt;/a&gt;\fi}
<a id='L4386' name='L4386'></a>&lt;a id='L4372' name='L4372'&gt;&lt;/a&gt;
<a id='L4387' name='L4387'></a>&lt;a id='L4373' name='L4373'&gt;&lt;/a&gt;
<a id='L4388' name='L4388'></a>&lt;a id='L4374' name='L4374'&gt;&lt;/a&gt;\message{conditionals,}
<a id='L4389' name='L4389'></a>&lt;a id='L4375' name='L4375'&gt;&lt;/a&gt;
<a id='L4390' name='L4390'></a>&lt;a id='L4376' name='L4376'&gt;&lt;/a&gt;% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext,
<a id='L4391' name='L4391'></a>&lt;a id='L4377' name='L4377'&gt;&lt;/a&gt;% @ifnotxml always succeed.  They currently do nothing; we don't
<a id='L4392' name='L4392'></a>&lt;a id='L4378' name='L4378'&gt;&lt;/a&gt;% attempt to check whether the conditionals are properly nested.  But we
<a id='L4393' name='L4393'></a>&lt;a id='L4379' name='L4379'&gt;&lt;/a&gt;% have to remember that they are conditionals, so that @end doesn't
<a id='L4394' name='L4394'></a>&lt;a id='L4380' name='L4380'&gt;&lt;/a&gt;% attempt to close an environment group.
<a id='L4395' name='L4395'></a>&lt;a id='L4381' name='L4381'&gt;&lt;/a&gt;%
<a id='L4396' name='L4396'></a>&lt;a id='L4382' name='L4382'&gt;&lt;/a&gt;\def\makecond#1{%
<a id='L4397' name='L4397'></a>&lt;a id='L4383' name='L4383'&gt;&lt;/a&gt;  \expandafter\let\csname #1\endcsname = \relax
<a id='L4398' name='L4398'></a>&lt;a id='L4384' name='L4384'&gt;&lt;/a&gt;  \expandafter\let\csname iscond.#1\endcsname = 1
<a id='L4399' name='L4399'></a>&lt;a id='L4385' name='L4385'&gt;&lt;/a&gt;}
<a id='L4400' name='L4400'></a>&lt;a id='L4386' name='L4386'&gt;&lt;/a&gt;\makecond{iftex}
<a id='L4401' name='L4401'></a>&lt;a id='L4387' name='L4387'&gt;&lt;/a&gt;\makecond{ifnotdocbook}
<a id='L4402' name='L4402'></a>&lt;a id='L4388' name='L4388'&gt;&lt;/a&gt;\makecond{ifnothtml}
<a id='L4403' name='L4403'></a>&lt;a id='L4389' name='L4389'&gt;&lt;/a&gt;\makecond{ifnotinfo}
<a id='L4404' name='L4404'></a>&lt;a id='L4390' name='L4390'&gt;&lt;/a&gt;\makecond{ifnotplaintext}
<a id='L4405' name='L4405'></a>&lt;a id='L4391' name='L4391'&gt;&lt;/a&gt;\makecond{ifnotxml}
<a id='L4406' name='L4406'></a>&lt;a id='L4392' name='L4392'&gt;&lt;/a&gt;
<a id='L4407' name='L4407'></a>&lt;a id='L4393' name='L4393'&gt;&lt;/a&gt;% Ignore @ignore, @ifhtml, @ifinfo, and the like.
<a id='L4408' name='L4408'></a>&lt;a id='L4394' name='L4394'&gt;&lt;/a&gt;%
<a id='L4409' name='L4409'></a>&lt;a id='L4395' name='L4395'&gt;&lt;/a&gt;\def\direntry{\doignore{direntry}}
<a id='L4410' name='L4410'></a>&lt;a id='L4396' name='L4396'&gt;&lt;/a&gt;\def\documentdescription{\doignore{documentdescription}}
<a id='L4411' name='L4411'></a>&lt;a id='L4397' name='L4397'&gt;&lt;/a&gt;\def\docbook{\doignore{docbook}}
<a id='L4412' name='L4412'></a>&lt;a id='L4398' name='L4398'&gt;&lt;/a&gt;\def\html{\doignore{html}}
<a id='L4413' name='L4413'></a>&lt;a id='L4399' name='L4399'&gt;&lt;/a&gt;\def\ifdocbook{\doignore{ifdocbook}}
<a id='L4414' name='L4414'></a>&lt;a id='L4400' name='L4400'&gt;&lt;/a&gt;\def\ifhtml{\doignore{ifhtml}}
<a id='L4415' name='L4415'></a>&lt;a id='L4401' name='L4401'&gt;&lt;/a&gt;\def\ifinfo{\doignore{ifinfo}}
<a id='L4416' name='L4416'></a>&lt;a id='L4402' name='L4402'&gt;&lt;/a&gt;\def\ifnottex{\doignore{ifnottex}}
<a id='L4417' name='L4417'></a>&lt;a id='L4403' name='L4403'&gt;&lt;/a&gt;\def\ifplaintext{\doignore{ifplaintext}}
<a id='L4418' name='L4418'></a>&lt;a id='L4404' name='L4404'&gt;&lt;/a&gt;\def\ifxml{\doignore{ifxml}}
<a id='L4419' name='L4419'></a>&lt;a id='L4405' name='L4405'&gt;&lt;/a&gt;\def\ignore{\doignore{ignore}}
<a id='L4420' name='L4420'></a>&lt;a id='L4406' name='L4406'&gt;&lt;/a&gt;\def\menu{\doignore{menu}}
<a id='L4421' name='L4421'></a>&lt;a id='L4407' name='L4407'&gt;&lt;/a&gt;\def\xml{\doignore{xml}}
<a id='L4422' name='L4422'></a>&lt;a id='L4408' name='L4408'&gt;&lt;/a&gt;
<a id='L4423' name='L4423'></a>&lt;a id='L4409' name='L4409'&gt;&lt;/a&gt;% Ignore text until a line `@end #1', keeping track of nested conditionals.
<a id='L4424' name='L4424'></a>&lt;a id='L4410' name='L4410'&gt;&lt;/a&gt;%
<a id='L4425' name='L4425'></a>&lt;a id='L4411' name='L4411'&gt;&lt;/a&gt;% A count to remember the depth of nesting.
<a id='L4426' name='L4426'></a>&lt;a id='L4412' name='L4412'&gt;&lt;/a&gt;\newcount\doignorecount
<a id='L4427' name='L4427'></a>&lt;a id='L4413' name='L4413'&gt;&lt;/a&gt;
<a id='L4428' name='L4428'></a>&lt;a id='L4414' name='L4414'&gt;&lt;/a&gt;\def\doignore#1{\begingroup
<a id='L4429' name='L4429'></a>&lt;a id='L4415' name='L4415'&gt;&lt;/a&gt;  % Scan in ``verbatim'' mode:
<a id='L4430' name='L4430'></a>&lt;a id='L4416' name='L4416'&gt;&lt;/a&gt;  \obeylines
<a id='L4431' name='L4431'></a>&lt;a id='L4417' name='L4417'&gt;&lt;/a&gt;  \catcode`\@ = \other
<a id='L4432' name='L4432'></a>&lt;a id='L4418' name='L4418'&gt;&lt;/a&gt;  \catcode`\{ = \other
<a id='L4433' name='L4433'></a>&lt;a id='L4419' name='L4419'&gt;&lt;/a&gt;  \catcode`\} = \other
<a id='L4434' name='L4434'></a>&lt;a id='L4420' name='L4420'&gt;&lt;/a&gt;  %
<a id='L4435' name='L4435'></a>&lt;a id='L4421' name='L4421'&gt;&lt;/a&gt;  % Make sure that spaces turn into tokens that match what \doignoretext wants.
<a id='L4436' name='L4436'></a>&lt;a id='L4422' name='L4422'&gt;&lt;/a&gt;  \spaceisspace
<a id='L4437' name='L4437'></a>&lt;a id='L4423' name='L4423'&gt;&lt;/a&gt;  %
<a id='L4438' name='L4438'></a>&lt;a id='L4424' name='L4424'&gt;&lt;/a&gt;  % Count number of #1's that we've seen.
<a id='L4439' name='L4439'></a>&lt;a id='L4425' name='L4425'&gt;&lt;/a&gt;  \doignorecount = 0
<a id='L4440' name='L4440'></a>&lt;a id='L4426' name='L4426'&gt;&lt;/a&gt;  %
<a id='L4441' name='L4441'></a>&lt;a id='L4427' name='L4427'&gt;&lt;/a&gt;  % Swallow text until we reach the matching `@end #1'.
<a id='L4442' name='L4442'></a>&lt;a id='L4428' name='L4428'&gt;&lt;/a&gt;  \dodoignore{#1}%
<a id='L4443' name='L4443'></a>&lt;a id='L4429' name='L4429'&gt;&lt;/a&gt;}
<a id='L4444' name='L4444'></a>&lt;a id='L4430' name='L4430'&gt;&lt;/a&gt;
<a id='L4445' name='L4445'></a>&lt;a id='L4431' name='L4431'&gt;&lt;/a&gt;{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source.
<a id='L4446' name='L4446'></a>&lt;a id='L4432' name='L4432'&gt;&lt;/a&gt;  \obeylines %
<a id='L4447' name='L4447'></a>&lt;a id='L4433' name='L4433'&gt;&lt;/a&gt;  %
<a id='L4448' name='L4448'></a>&lt;a id='L4434' name='L4434'&gt;&lt;/a&gt;  \gdef\dodoignore#1{%
<a id='L4449' name='L4449'></a>&lt;a id='L4435' name='L4435'&gt;&lt;/a&gt;    % #1 contains the command name as a string, e.g., `ifinfo'.
<a id='L4450' name='L4450'></a>&lt;a id='L4436' name='L4436'&gt;&lt;/a&gt;    %
<a id='L4451' name='L4451'></a>&lt;a id='L4437' name='L4437'&gt;&lt;/a&gt;    % Define a command to find the next `@end #1'.
<a id='L4452' name='L4452'></a>&lt;a id='L4438' name='L4438'&gt;&lt;/a&gt;    \long\def\doignoretext##1^^M@end #1{%
<a id='L4453' name='L4453'></a>&lt;a id='L4439' name='L4439'&gt;&lt;/a&gt;      \doignoretextyyy##1^^M@#1\_STOP_}%
<a id='L4454' name='L4454'></a>&lt;a id='L4440' name='L4440'&gt;&lt;/a&gt;    %
<a id='L4455' name='L4455'></a>&lt;a id='L4441' name='L4441'&gt;&lt;/a&gt;    % And this command to find another #1 command, at the beginning of a
<a id='L4456' name='L4456'></a>&lt;a id='L4442' name='L4442'&gt;&lt;/a&gt;    % line.  (Otherwise, we would consider a line `@c @ifset', for
<a id='L4457' name='L4457'></a>&lt;a id='L4443' name='L4443'&gt;&lt;/a&gt;    % example, to count as an @ifset for nesting.)
<a id='L4458' name='L4458'></a>&lt;a id='L4444' name='L4444'&gt;&lt;/a&gt;    \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}%
<a id='L4459' name='L4459'></a>&lt;a id='L4445' name='L4445'&gt;&lt;/a&gt;    %
<a id='L4460' name='L4460'></a>&lt;a id='L4446' name='L4446'&gt;&lt;/a&gt;    % And now expand that command.
<a id='L4461' name='L4461'></a>&lt;a id='L4447' name='L4447'&gt;&lt;/a&gt;    \doignoretext ^^M%
<a id='L4462' name='L4462'></a>&lt;a id='L4448' name='L4448'&gt;&lt;/a&gt;  }%
<a id='L4463' name='L4463'></a>&lt;a id='L4449' name='L4449'&gt;&lt;/a&gt;}
<a id='L4464' name='L4464'></a>&lt;a id='L4450' name='L4450'&gt;&lt;/a&gt;
<a id='L4465' name='L4465'></a>&lt;a id='L4451' name='L4451'&gt;&lt;/a&gt;\def\doignoreyyy#1{%
<a id='L4466' name='L4466'></a>&lt;a id='L4452' name='L4452'&gt;&lt;/a&gt;  \def\temp{#1}%
<a id='L4467' name='L4467'></a>&lt;a id='L4453' name='L4453'&gt;&lt;/a&gt;  \ifx\temp\empty                       % Nothing found.
<a id='L4468' name='L4468'></a>&lt;a id='L4454' name='L4454'&gt;&lt;/a&gt;    \let\next\doignoretextzzz
<a id='L4469' name='L4469'></a>&lt;a id='L4455' name='L4455'&gt;&lt;/a&gt;  \else                                 % Found a nested condition, ...
<a id='L4470' name='L4470'></a>&lt;a id='L4456' name='L4456'&gt;&lt;/a&gt;    \advance\doignorecount by 1
<a id='L4471' name='L4471'></a>&lt;a id='L4457' name='L4457'&gt;&lt;/a&gt;    \let\next\doignoretextyyy           % ..., look for another.
<a id='L4472' name='L4472'></a>&lt;a id='L4458' name='L4458'&gt;&lt;/a&gt;    % If we're here, #1 ends with ^^M\ifinfo (for example).
<a id='L4473' name='L4473'></a>&lt;a id='L4459' name='L4459'&gt;&lt;/a&gt;  \fi
<a id='L4474' name='L4474'></a>&lt;a id='L4460' name='L4460'&gt;&lt;/a&gt;  \next #1% the token \_STOP_ is present just after this macro.
<a id='L4475' name='L4475'></a>&lt;a id='L4461' name='L4461'&gt;&lt;/a&gt;}
<a id='L4476' name='L4476'></a>&lt;a id='L4462' name='L4462'&gt;&lt;/a&gt;
<a id='L4477' name='L4477'></a>&lt;a id='L4463' name='L4463'&gt;&lt;/a&gt;% We have to swallow the remaining "\_STOP_".
<a id='L4478' name='L4478'></a>&lt;a id='L4464' name='L4464'&gt;&lt;/a&gt;%
<a id='L4479' name='L4479'></a>&lt;a id='L4465' name='L4465'&gt;&lt;/a&gt;\def\doignoretextzzz#1{%
<a id='L4480' name='L4480'></a>&lt;a id='L4466' name='L4466'&gt;&lt;/a&gt;  \ifnum\doignorecount = 0      % We have just found the outermost @end.
<a id='L4481' name='L4481'></a>&lt;a id='L4467' name='L4467'&gt;&lt;/a&gt;    \let\next\enddoignore
<a id='L4482' name='L4482'></a>&lt;a id='L4468' name='L4468'&gt;&lt;/a&gt;  \else                         % Still inside a nested condition.
<a id='L4483' name='L4483'></a>&lt;a id='L4469' name='L4469'&gt;&lt;/a&gt;    \advance\doignorecount by -1
<a id='L4484' name='L4484'></a>&lt;a id='L4470' name='L4470'&gt;&lt;/a&gt;    \let\next\doignoretext      % Look for the next @end.
<a id='L4485' name='L4485'></a>&lt;a id='L4471' name='L4471'&gt;&lt;/a&gt;  \fi
<a id='L4486' name='L4486'></a>&lt;a id='L4472' name='L4472'&gt;&lt;/a&gt;  \next
<a id='L4487' name='L4487'></a>&lt;a id='L4473' name='L4473'&gt;&lt;/a&gt;}
<a id='L4488' name='L4488'></a>&lt;a id='L4474' name='L4474'&gt;&lt;/a&gt;
<a id='L4489' name='L4489'></a>&lt;a id='L4475' name='L4475'&gt;&lt;/a&gt;% Finish off ignored text.
<a id='L4490' name='L4490'></a>&lt;a id='L4476' name='L4476'&gt;&lt;/a&gt;{ \obeylines%
<a id='L4491' name='L4491'></a>&lt;a id='L4477' name='L4477'&gt;&lt;/a&gt;  % Ignore anything after the last `@end #1'; this matters in verbatim
<a id='L4492' name='L4492'></a>&lt;a id='L4478' name='L4478'&gt;&lt;/a&gt;  % environments, where otherwise the newline after an ignored conditional
<a id='L4493' name='L4493'></a>&lt;a id='L4479' name='L4479'&gt;&lt;/a&gt;  % would result in a blank line in the output.
<a id='L4494' name='L4494'></a>&lt;a id='L4480' name='L4480'&gt;&lt;/a&gt;  \gdef\enddoignore#1^^M{\endgroup\ignorespaces}%
<a id='L4495' name='L4495'></a>&lt;a id='L4481' name='L4481'&gt;&lt;/a&gt;}
<a id='L4496' name='L4496'></a>&lt;a id='L4482' name='L4482'&gt;&lt;/a&gt;
<a id='L4497' name='L4497'></a>&lt;a id='L4483' name='L4483'&gt;&lt;/a&gt;
<a id='L4498' name='L4498'></a>&lt;a id='L4484' name='L4484'&gt;&lt;/a&gt;% @set VAR sets the variable VAR to an empty value.
<a id='L4499' name='L4499'></a>&lt;a id='L4485' name='L4485'&gt;&lt;/a&gt;% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
<a id='L4500' name='L4500'></a>&lt;a id='L4486' name='L4486'&gt;&lt;/a&gt;%
<a id='L4501' name='L4501'></a>&lt;a id='L4487' name='L4487'&gt;&lt;/a&gt;% Since we want to separate VAR from REST-OF-LINE (which might be
<a id='L4502' name='L4502'></a>&lt;a id='L4488' name='L4488'&gt;&lt;/a&gt;% empty), we can't just use \parsearg; we have to insert a space of our
<a id='L4503' name='L4503'></a>&lt;a id='L4489' name='L4489'&gt;&lt;/a&gt;% own to delimit the rest of the line, and then take it out again if we
<a id='L4504' name='L4504'></a>&lt;a id='L4490' name='L4490'&gt;&lt;/a&gt;% didn't need it.
<a id='L4505' name='L4505'></a>&lt;a id='L4491' name='L4491'&gt;&lt;/a&gt;% We rely on the fact that \parsearg sets \catcode`\ =10.
<a id='L4506' name='L4506'></a>&lt;a id='L4492' name='L4492'&gt;&lt;/a&gt;%
<a id='L4507' name='L4507'></a>&lt;a id='L4493' name='L4493'&gt;&lt;/a&gt;\parseargdef\set{\setyyy#1 \endsetyyy}
<a id='L4508' name='L4508'></a>&lt;a id='L4494' name='L4494'&gt;&lt;/a&gt;\def\setyyy#1 #2\endsetyyy{%
<a id='L4509' name='L4509'></a>&lt;a id='L4495' name='L4495'&gt;&lt;/a&gt;  {%
<a id='L4510' name='L4510'></a>&lt;a id='L4496' name='L4496'&gt;&lt;/a&gt;    \makevalueexpandable
<a id='L4511' name='L4511'></a>&lt;a id='L4497' name='L4497'&gt;&lt;/a&gt;    \def\temp{#2}%
<a id='L4512' name='L4512'></a>&lt;a id='L4498' name='L4498'&gt;&lt;/a&gt;    \edef\next{\gdef\makecsname{SET#1}}%
<a id='L4513' name='L4513'></a>&lt;a id='L4499' name='L4499'&gt;&lt;/a&gt;    \ifx\temp\empty
<a id='L4514' name='L4514'></a>&lt;a id='L4500' name='L4500'&gt;&lt;/a&gt;      \next{}%
<a id='L4515' name='L4515'></a>&lt;a id='L4501' name='L4501'&gt;&lt;/a&gt;    \else
<a id='L4516' name='L4516'></a>&lt;a id='L4502' name='L4502'&gt;&lt;/a&gt;      \setzzz#2\endsetzzz
<a id='L4517' name='L4517'></a>&lt;a id='L4503' name='L4503'&gt;&lt;/a&gt;    \fi
<a id='L4518' name='L4518'></a>&lt;a id='L4504' name='L4504'&gt;&lt;/a&gt;  }%
<a id='L4519' name='L4519'></a>&lt;a id='L4505' name='L4505'&gt;&lt;/a&gt;}
<a id='L4520' name='L4520'></a>&lt;a id='L4506' name='L4506'&gt;&lt;/a&gt;% Remove the trailing space \setxxx inserted.
<a id='L4521' name='L4521'></a>&lt;a id='L4507' name='L4507'&gt;&lt;/a&gt;\def\setzzz#1 \endsetzzz{\next{#1}}
<a id='L4522' name='L4522'></a>&lt;a id='L4508' name='L4508'&gt;&lt;/a&gt;
<a id='L4523' name='L4523'></a>&lt;a id='L4509' name='L4509'&gt;&lt;/a&gt;% @clear VAR clears (i.e., unsets) the variable VAR.
<a id='L4524' name='L4524'></a>&lt;a id='L4510' name='L4510'&gt;&lt;/a&gt;%
<a id='L4525' name='L4525'></a>&lt;a id='L4511' name='L4511'&gt;&lt;/a&gt;\parseargdef\clear{%
<a id='L4526' name='L4526'></a>&lt;a id='L4512' name='L4512'&gt;&lt;/a&gt;  {%
<a id='L4527' name='L4527'></a>&lt;a id='L4513' name='L4513'&gt;&lt;/a&gt;    \makevalueexpandable
<a id='L4528' name='L4528'></a>&lt;a id='L4514' name='L4514'&gt;&lt;/a&gt;    \global\expandafter\let\csname SET#1\endcsname=\relax
<a id='L4529' name='L4529'></a>&lt;a id='L4515' name='L4515'&gt;&lt;/a&gt;  }%
<a id='L4530' name='L4530'></a>&lt;a id='L4516' name='L4516'&gt;&lt;/a&gt;}
<a id='L4531' name='L4531'></a>&lt;a id='L4517' name='L4517'&gt;&lt;/a&gt;
<a id='L4532' name='L4532'></a>&lt;a id='L4518' name='L4518'&gt;&lt;/a&gt;% @value{foo} gets the text saved in variable foo.
<a id='L4533' name='L4533'></a>&lt;a id='L4519' name='L4519'&gt;&lt;/a&gt;\def\value{\begingroup\makevalueexpandable\valuexxx}
<a id='L4534' name='L4534'></a>&lt;a id='L4520' name='L4520'&gt;&lt;/a&gt;\def\valuexxx#1{\expandablevalue{#1}\endgroup}
<a id='L4535' name='L4535'></a>&lt;a id='L4521' name='L4521'&gt;&lt;/a&gt;{
<a id='L4536' name='L4536'></a>&lt;a id='L4522' name='L4522'&gt;&lt;/a&gt;  \catcode`\- = \active \catcode`\_ = \active
<a id='L4537' name='L4537'></a>&lt;a id='L4523' name='L4523'&gt;&lt;/a&gt;  %
<a id='L4538' name='L4538'></a>&lt;a id='L4524' name='L4524'&gt;&lt;/a&gt;  \gdef\makevalueexpandable{%
<a id='L4539' name='L4539'></a>&lt;a id='L4525' name='L4525'&gt;&lt;/a&gt;    \let\value = \expandablevalue
<a id='L4540' name='L4540'></a>&lt;a id='L4526' name='L4526'&gt;&lt;/a&gt;    % We don't want these characters active, ...
<a id='L4541' name='L4541'></a>&lt;a id='L4527' name='L4527'&gt;&lt;/a&gt;    \catcode`\-=\other \catcode`\_=\other
<a id='L4542' name='L4542'></a>&lt;a id='L4528' name='L4528'&gt;&lt;/a&gt;    % ..., but we might end up with active ones in the argument if
<a id='L4543' name='L4543'></a>&lt;a id='L4529' name='L4529'&gt;&lt;/a&gt;    % we're called from @code, as @code{@value{foo-bar_}}, though.
<a id='L4544' name='L4544'></a>&lt;a id='L4530' name='L4530'&gt;&lt;/a&gt;    % So \let them to their normal equivalents.
<a id='L4545' name='L4545'></a>&lt;a id='L4531' name='L4531'&gt;&lt;/a&gt;    \let-\normaldash \let_\normalunderscore
<a id='L4546' name='L4546'></a>&lt;a id='L4532' name='L4532'&gt;&lt;/a&gt;  }
<a id='L4547' name='L4547'></a>&lt;a id='L4533' name='L4533'&gt;&lt;/a&gt;}
<a id='L4548' name='L4548'></a>&lt;a id='L4534' name='L4534'&gt;&lt;/a&gt;
<a id='L4549' name='L4549'></a>&lt;a id='L4535' name='L4535'&gt;&lt;/a&gt;% We have this subroutine so that we can handle at least some @value's
<a id='L4550' name='L4550'></a>&lt;a id='L4536' name='L4536'&gt;&lt;/a&gt;% properly in indexes (we call \makevalueexpandable in \indexdummies).
<a id='L4551' name='L4551'></a>&lt;a id='L4537' name='L4537'&gt;&lt;/a&gt;% The command has to be fully expandable (if the variable is set), since
<a id='L4552' name='L4552'></a>&lt;a id='L4538' name='L4538'&gt;&lt;/a&gt;% the result winds up in the index file.  This means that if the
<a id='L4553' name='L4553'></a>&lt;a id='L4539' name='L4539'&gt;&lt;/a&gt;% variable's value contains other Texinfo commands, it's almost certain
<a id='L4554' name='L4554'></a>&lt;a id='L4540' name='L4540'&gt;&lt;/a&gt;% it will fail (although perhaps we could fix that with sufficient work
<a id='L4555' name='L4555'></a>&lt;a id='L4541' name='L4541'&gt;&lt;/a&gt;% to do a one-level expansion on the result, instead of complete).
<a id='L4556' name='L4556'></a>&lt;a id='L4542' name='L4542'&gt;&lt;/a&gt;%
<a id='L4557' name='L4557'></a>&lt;a id='L4543' name='L4543'&gt;&lt;/a&gt;\def\expandablevalue#1{%
<a id='L4558' name='L4558'></a>&lt;a id='L4544' name='L4544'&gt;&lt;/a&gt;  \expandafter\ifx\csname SET#1\endcsname\relax
<a id='L4559' name='L4559'></a>&lt;a id='L4545' name='L4545'&gt;&lt;/a&gt;    {[No value for ``#1'']}%
<a id='L4560' name='L4560'></a>&lt;a id='L4546' name='L4546'&gt;&lt;/a&gt;    \message{Variable `#1', used in @value, is not set.}%
<a id='L4561' name='L4561'></a>&lt;a id='L4547' name='L4547'&gt;&lt;/a&gt;  \else
<a id='L4562' name='L4562'></a>&lt;a id='L4548' name='L4548'&gt;&lt;/a&gt;    \csname SET#1\endcsname
<a id='L4563' name='L4563'></a>&lt;a id='L4549' name='L4549'&gt;&lt;/a&gt;  \fi
<a id='L4564' name='L4564'></a>&lt;a id='L4550' name='L4550'&gt;&lt;/a&gt;}
<a id='L4565' name='L4565'></a>&lt;a id='L4551' name='L4551'&gt;&lt;/a&gt;
<a id='L4566' name='L4566'></a>&lt;a id='L4552' name='L4552'&gt;&lt;/a&gt;% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
<a id='L4567' name='L4567'></a>&lt;a id='L4553' name='L4553'&gt;&lt;/a&gt;% with @set.
<a id='L4568' name='L4568'></a>&lt;a id='L4554' name='L4554'&gt;&lt;/a&gt;% 
<a id='L4569' name='L4569'></a>&lt;a id='L4555' name='L4555'&gt;&lt;/a&gt;% To get the special treatment we need for `@end ifset,' we call
<a id='L4570' name='L4570'></a>&lt;a id='L4556' name='L4556'&gt;&lt;/a&gt;% \makecond and then redefine.
<a id='L4571' name='L4571'></a>&lt;a id='L4557' name='L4557'&gt;&lt;/a&gt;%
<a id='L4572' name='L4572'></a>&lt;a id='L4558' name='L4558'&gt;&lt;/a&gt;\makecond{ifset}
<a id='L4573' name='L4573'></a>&lt;a id='L4559' name='L4559'&gt;&lt;/a&gt;\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}}
<a id='L4574' name='L4574'></a>&lt;a id='L4560' name='L4560'&gt;&lt;/a&gt;\def\doifset#1#2{%
<a id='L4575' name='L4575'></a>&lt;a id='L4561' name='L4561'&gt;&lt;/a&gt;  {%
<a id='L4576' name='L4576'></a>&lt;a id='L4562' name='L4562'&gt;&lt;/a&gt;    \makevalueexpandable
<a id='L4577' name='L4577'></a>&lt;a id='L4563' name='L4563'&gt;&lt;/a&gt;    \let\next=\empty
<a id='L4578' name='L4578'></a>&lt;a id='L4564' name='L4564'&gt;&lt;/a&gt;    \expandafter\ifx\csname SET#2\endcsname\relax
<a id='L4579' name='L4579'></a>&lt;a id='L4565' name='L4565'&gt;&lt;/a&gt;      #1% If not set, redefine \next.
<a id='L4580' name='L4580'></a>&lt;a id='L4566' name='L4566'&gt;&lt;/a&gt;    \fi
<a id='L4581' name='L4581'></a>&lt;a id='L4567' name='L4567'&gt;&lt;/a&gt;    \expandafter
<a id='L4582' name='L4582'></a>&lt;a id='L4568' name='L4568'&gt;&lt;/a&gt;  }\next
<a id='L4583' name='L4583'></a>&lt;a id='L4569' name='L4569'&gt;&lt;/a&gt;}
<a id='L4584' name='L4584'></a>&lt;a id='L4570' name='L4570'&gt;&lt;/a&gt;\def\ifsetfail{\doignore{ifset}}
<a id='L4585' name='L4585'></a>&lt;a id='L4571' name='L4571'&gt;&lt;/a&gt;
<a id='L4586' name='L4586'></a>&lt;a id='L4572' name='L4572'&gt;&lt;/a&gt;% @ifclear VAR ... @end executes the `...' iff VAR has never been
<a id='L4587' name='L4587'></a>&lt;a id='L4573' name='L4573'&gt;&lt;/a&gt;% defined with @set, or has been undefined with @clear.
<a id='L4588' name='L4588'></a>&lt;a id='L4574' name='L4574'&gt;&lt;/a&gt;%
<a id='L4589' name='L4589'></a>&lt;a id='L4575' name='L4575'&gt;&lt;/a&gt;% The `\else' inside the `\doifset' parameter is a trick to reuse the
<a id='L4590' name='L4590'></a>&lt;a id='L4576' name='L4576'&gt;&lt;/a&gt;% above code: if the variable is not set, do nothing, if it is set,
<a id='L4591' name='L4591'></a>&lt;a id='L4577' name='L4577'&gt;&lt;/a&gt;% then redefine \next to \ifclearfail.
<a id='L4592' name='L4592'></a>&lt;a id='L4578' name='L4578'&gt;&lt;/a&gt;%
<a id='L4593' name='L4593'></a>&lt;a id='L4579' name='L4579'&gt;&lt;/a&gt;\makecond{ifclear}
<a id='L4594' name='L4594'></a>&lt;a id='L4580' name='L4580'&gt;&lt;/a&gt;\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}}
<a id='L4595' name='L4595'></a>&lt;a id='L4581' name='L4581'&gt;&lt;/a&gt;\def\ifclearfail{\doignore{ifclear}}
<a id='L4596' name='L4596'></a>&lt;a id='L4582' name='L4582'&gt;&lt;/a&gt;
<a id='L4597' name='L4597'></a>&lt;a id='L4583' name='L4583'&gt;&lt;/a&gt;% @ifcommandisdefined CMD ... @end executes the `...' if CMD (written
<a id='L4598' name='L4598'></a>&lt;a id='L4584' name='L4584'&gt;&lt;/a&gt;% without the @) is in fact defined.  We can only feasibly check at the
<a id='L4599' name='L4599'></a>&lt;a id='L4585' name='L4585'&gt;&lt;/a&gt;% TeX level, so something like `mathcode' is going to considered
<a id='L4600' name='L4600'></a>&lt;a id='L4586' name='L4586'&gt;&lt;/a&gt;% defined even though it is not a Texinfo command.
<a id='L4601' name='L4601'></a>&lt;a id='L4587' name='L4587'&gt;&lt;/a&gt;% 
<a id='L4602' name='L4602'></a>&lt;a id='L4588' name='L4588'&gt;&lt;/a&gt;\makecond{ifcommanddefined}
<a id='L4603' name='L4603'></a>&lt;a id='L4589' name='L4589'&gt;&lt;/a&gt;\def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}}
<a id='L4604' name='L4604'></a>&lt;a id='L4590' name='L4590'&gt;&lt;/a&gt;%
<a id='L4605' name='L4605'></a>&lt;a id='L4591' name='L4591'&gt;&lt;/a&gt;\def\doifcmddefined#1#2{{%
<a id='L4606' name='L4606'></a>&lt;a id='L4592' name='L4592'&gt;&lt;/a&gt;    \makevalueexpandable
<a id='L4607' name='L4607'></a>&lt;a id='L4593' name='L4593'&gt;&lt;/a&gt;    \let\next=\empty
<a id='L4608' name='L4608'></a>&lt;a id='L4594' name='L4594'&gt;&lt;/a&gt;    \expandafter\ifx\csname #2\endcsname\relax
<a id='L4609' name='L4609'></a>&lt;a id='L4595' name='L4595'&gt;&lt;/a&gt;      #1% If not defined, \let\next as above.
<a id='L4610' name='L4610'></a>&lt;a id='L4596' name='L4596'&gt;&lt;/a&gt;    \fi
<a id='L4611' name='L4611'></a>&lt;a id='L4597' name='L4597'&gt;&lt;/a&gt;    \expandafter
<a id='L4612' name='L4612'></a>&lt;a id='L4598' name='L4598'&gt;&lt;/a&gt;  }\next
<a id='L4613' name='L4613'></a>&lt;a id='L4599' name='L4599'&gt;&lt;/a&gt;}
<a id='L4614' name='L4614'></a>&lt;a id='L4600' name='L4600'&gt;&lt;/a&gt;\def\ifcmddefinedfail{\doignore{ifcommanddefined}}
<a id='L4615' name='L4615'></a>&lt;a id='L4601' name='L4601'&gt;&lt;/a&gt;
<a id='L4616' name='L4616'></a>&lt;a id='L4602' name='L4602'&gt;&lt;/a&gt;% @ifcommandnotdefined CMD ... handled similar to @ifclear above.
<a id='L4617' name='L4617'></a>&lt;a id='L4603' name='L4603'&gt;&lt;/a&gt;\makecond{ifcommandnotdefined}
<a id='L4618' name='L4618'></a>&lt;a id='L4604' name='L4604'&gt;&lt;/a&gt;\def\ifcommandnotdefined{%
<a id='L4619' name='L4619'></a>&lt;a id='L4605' name='L4605'&gt;&lt;/a&gt;  \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}}
<a id='L4620' name='L4620'></a>&lt;a id='L4606' name='L4606'&gt;&lt;/a&gt;\def\ifcmdnotdefinedfail{\doignore{ifcommandnotdefined}}
<a id='L4621' name='L4621'></a>&lt;a id='L4607' name='L4607'&gt;&lt;/a&gt;
<a id='L4622' name='L4622'></a>&lt;a id='L4608' name='L4608'&gt;&lt;/a&gt;% Set the `txicommandconditionals' variable, so documents have a way to
<a id='L4623' name='L4623'></a>&lt;a id='L4609' name='L4609'&gt;&lt;/a&gt;% test if the @ifcommand...defined conditionals are available.
<a id='L4624' name='L4624'></a>&lt;a id='L4610' name='L4610'&gt;&lt;/a&gt;\set txicommandconditionals
<a id='L4625' name='L4625'></a>&lt;a id='L4611' name='L4611'&gt;&lt;/a&gt;
<a id='L4626' name='L4626'></a>&lt;a id='L4612' name='L4612'&gt;&lt;/a&gt;% @dircategory CATEGORY  -- specify a category of the dir file
<a id='L4627' name='L4627'></a>&lt;a id='L4613' name='L4613'&gt;&lt;/a&gt;% which this file should belong to.  Ignore this in TeX.
<a id='L4628' name='L4628'></a>&lt;a id='L4614' name='L4614'&gt;&lt;/a&gt;\let\dircategory=\comment
<a id='L4629' name='L4629'></a>&lt;a id='L4615' name='L4615'&gt;&lt;/a&gt;
<a id='L4630' name='L4630'></a>&lt;a id='L4616' name='L4616'&gt;&lt;/a&gt;% @defininfoenclose.
<a id='L4631' name='L4631'></a>&lt;a id='L4617' name='L4617'&gt;&lt;/a&gt;\let\definfoenclose=\comment
<a id='L4632' name='L4632'></a>&lt;a id='L4618' name='L4618'&gt;&lt;/a&gt;
<a id='L4633' name='L4633'></a>&lt;a id='L4619' name='L4619'&gt;&lt;/a&gt;
<a id='L4634' name='L4634'></a>&lt;a id='L4620' name='L4620'&gt;&lt;/a&gt;\message{indexing,}
<a id='L4635' name='L4635'></a>&lt;a id='L4621' name='L4621'&gt;&lt;/a&gt;% Index generation facilities
<a id='L4636' name='L4636'></a>&lt;a id='L4622' name='L4622'&gt;&lt;/a&gt;
<a id='L4637' name='L4637'></a>&lt;a id='L4623' name='L4623'&gt;&lt;/a&gt;% Define \newwrite to be identical to plain tex's \newwrite
<a id='L4638' name='L4638'></a>&lt;a id='L4624' name='L4624'&gt;&lt;/a&gt;% except not \outer, so it can be used within macros and \if's.
<a id='L4639' name='L4639'></a>&lt;a id='L4625' name='L4625'&gt;&lt;/a&gt;\edef\newwrite{\makecsname{ptexnewwrite}}
<a id='L4640' name='L4640'></a>&lt;a id='L4626' name='L4626'&gt;&lt;/a&gt;
<a id='L4641' name='L4641'></a>&lt;a id='L4627' name='L4627'&gt;&lt;/a&gt;% \newindex {foo} defines an index named foo.
<a id='L4642' name='L4642'></a>&lt;a id='L4628' name='L4628'&gt;&lt;/a&gt;% It automatically defines \fooindex such that
<a id='L4643' name='L4643'></a>&lt;a id='L4629' name='L4629'&gt;&lt;/a&gt;% \fooindex ...rest of line... puts an entry in the index foo.
<a id='L4644' name='L4644'></a>&lt;a id='L4630' name='L4630'&gt;&lt;/a&gt;% It also defines \fooindfile to be the number of the output channel for
<a id='L4645' name='L4645'></a>&lt;a id='L4631' name='L4631'&gt;&lt;/a&gt;% the file that accumulates this index.  The file's extension is foo.
<a id='L4646' name='L4646'></a>&lt;a id='L4632' name='L4632'&gt;&lt;/a&gt;% The name of an index should be no more than 2 characters long
<a id='L4647' name='L4647'></a>&lt;a id='L4633' name='L4633'&gt;&lt;/a&gt;% for the sake of vms.
<a id='L4648' name='L4648'></a>&lt;a id='L4634' name='L4634'&gt;&lt;/a&gt;%
<a id='L4649' name='L4649'></a>&lt;a id='L4635' name='L4635'&gt;&lt;/a&gt;\def\newindex#1{%
<a id='L4650' name='L4650'></a>&lt;a id='L4636' name='L4636'&gt;&lt;/a&gt;  \iflinks
<a id='L4651' name='L4651'></a>&lt;a id='L4637' name='L4637'&gt;&lt;/a&gt;    \expandafter\newwrite \csname#1indfile\endcsname
<a id='L4652' name='L4652'></a>&lt;a id='L4638' name='L4638'&gt;&lt;/a&gt;    \openout \csname#1indfile\endcsname \jobname.#1 % Open the file
<a id='L4653' name='L4653'></a>&lt;a id='L4639' name='L4639'&gt;&lt;/a&gt;  \fi
<a id='L4654' name='L4654'></a>&lt;a id='L4640' name='L4640'&gt;&lt;/a&gt;  \expandafter\xdef\csname#1index\endcsname{%     % Define @#1index
<a id='L4655' name='L4655'></a>&lt;a id='L4641' name='L4641'&gt;&lt;/a&gt;    \noexpand\doindex{#1}}
<a id='L4656' name='L4656'></a>&lt;a id='L4642' name='L4642'&gt;&lt;/a&gt;}
<a id='L4657' name='L4657'></a>&lt;a id='L4643' name='L4643'&gt;&lt;/a&gt;
<a id='L4658' name='L4658'></a>&lt;a id='L4644' name='L4644'&gt;&lt;/a&gt;% @defindex foo  ==  \newindex{foo}
<a id='L4659' name='L4659'></a>&lt;a id='L4645' name='L4645'&gt;&lt;/a&gt;%
<a id='L4660' name='L4660'></a>&lt;a id='L4646' name='L4646'&gt;&lt;/a&gt;\def\defindex{\parsearg\newindex}
<a id='L4661' name='L4661'></a>&lt;a id='L4647' name='L4647'&gt;&lt;/a&gt;
<a id='L4662' name='L4662'></a>&lt;a id='L4648' name='L4648'&gt;&lt;/a&gt;% Define @defcodeindex, like @defindex except put all entries in @code.
<a id='L4663' name='L4663'></a>&lt;a id='L4649' name='L4649'&gt;&lt;/a&gt;%
<a id='L4664' name='L4664'></a>&lt;a id='L4650' name='L4650'&gt;&lt;/a&gt;\def\defcodeindex{\parsearg\newcodeindex}
<a id='L4665' name='L4665'></a>&lt;a id='L4651' name='L4651'&gt;&lt;/a&gt;%
<a id='L4666' name='L4666'></a>&lt;a id='L4652' name='L4652'&gt;&lt;/a&gt;\def\newcodeindex#1{%
<a id='L4667' name='L4667'></a>&lt;a id='L4653' name='L4653'&gt;&lt;/a&gt;  \iflinks
<a id='L4668' name='L4668'></a>&lt;a id='L4654' name='L4654'&gt;&lt;/a&gt;    \expandafter\newwrite \csname#1indfile\endcsname
<a id='L4669' name='L4669'></a>&lt;a id='L4655' name='L4655'&gt;&lt;/a&gt;    \openout \csname#1indfile\endcsname \jobname.#1
<a id='L4670' name='L4670'></a>&lt;a id='L4656' name='L4656'&gt;&lt;/a&gt;  \fi
<a id='L4671' name='L4671'></a>&lt;a id='L4657' name='L4657'&gt;&lt;/a&gt;  \expandafter\xdef\csname#1index\endcsname{%
<a id='L4672' name='L4672'></a>&lt;a id='L4658' name='L4658'&gt;&lt;/a&gt;    \noexpand\docodeindex{#1}}%
<a id='L4673' name='L4673'></a>&lt;a id='L4659' name='L4659'&gt;&lt;/a&gt;}
<a id='L4674' name='L4674'></a>&lt;a id='L4660' name='L4660'&gt;&lt;/a&gt;
<a id='L4675' name='L4675'></a>&lt;a id='L4661' name='L4661'&gt;&lt;/a&gt;
<a id='L4676' name='L4676'></a>&lt;a id='L4662' name='L4662'&gt;&lt;/a&gt;% @synindex foo bar    makes index foo feed into index bar.
<a id='L4677' name='L4677'></a>&lt;a id='L4663' name='L4663'&gt;&lt;/a&gt;% Do this instead of @defindex foo if you don't want it as a separate index.
<a id='L4678' name='L4678'></a>&lt;a id='L4664' name='L4664'&gt;&lt;/a&gt;%
<a id='L4679' name='L4679'></a>&lt;a id='L4665' name='L4665'&gt;&lt;/a&gt;% @syncodeindex foo bar   similar, but put all entries made for index foo
<a id='L4680' name='L4680'></a>&lt;a id='L4666' name='L4666'&gt;&lt;/a&gt;% inside @code.
<a id='L4681' name='L4681'></a>&lt;a id='L4667' name='L4667'&gt;&lt;/a&gt;%
<a id='L4682' name='L4682'></a>&lt;a id='L4668' name='L4668'&gt;&lt;/a&gt;\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}}
<a id='L4683' name='L4683'></a>&lt;a id='L4669' name='L4669'&gt;&lt;/a&gt;\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}}
<a id='L4684' name='L4684'></a>&lt;a id='L4670' name='L4670'&gt;&lt;/a&gt;
<a id='L4685' name='L4685'></a>&lt;a id='L4671' name='L4671'&gt;&lt;/a&gt;% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
<a id='L4686' name='L4686'></a>&lt;a id='L4672' name='L4672'&gt;&lt;/a&gt;% #3 the target index (bar).
<a id='L4687' name='L4687'></a>&lt;a id='L4673' name='L4673'&gt;&lt;/a&gt;\def\dosynindex#1#2#3{%
<a id='L4688' name='L4688'></a>&lt;a id='L4674' name='L4674'&gt;&lt;/a&gt;  % Only do \closeout if we haven't already done it, else we'll end up
<a id='L4689' name='L4689'></a>&lt;a id='L4675' name='L4675'&gt;&lt;/a&gt;  % closing the target index.
<a id='L4690' name='L4690'></a>&lt;a id='L4676' name='L4676'&gt;&lt;/a&gt;  \expandafter \ifx\csname donesynindex#2\endcsname \relax
<a id='L4691' name='L4691'></a>&lt;a id='L4677' name='L4677'&gt;&lt;/a&gt;    % The \closeout helps reduce unnecessary open files; the limit on the
<a id='L4692' name='L4692'></a>&lt;a id='L4678' name='L4678'&gt;&lt;/a&gt;    % Acorn RISC OS is a mere 16 files.
<a id='L4693' name='L4693'></a>&lt;a id='L4679' name='L4679'&gt;&lt;/a&gt;    \expandafter\closeout\csname#2indfile\endcsname
<a id='L4694' name='L4694'></a>&lt;a id='L4680' name='L4680'&gt;&lt;/a&gt;    \expandafter\let\csname donesynindex#2\endcsname = 1
<a id='L4695' name='L4695'></a>&lt;a id='L4681' name='L4681'&gt;&lt;/a&gt;  \fi
<a id='L4696' name='L4696'></a>&lt;a id='L4682' name='L4682'&gt;&lt;/a&gt;  % redefine \fooindfile:
<a id='L4697' name='L4697'></a>&lt;a id='L4683' name='L4683'&gt;&lt;/a&gt;  \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
<a id='L4698' name='L4698'></a>&lt;a id='L4684' name='L4684'&gt;&lt;/a&gt;  \expandafter\let\csname#2indfile\endcsname=\temp
<a id='L4699' name='L4699'></a>&lt;a id='L4685' name='L4685'&gt;&lt;/a&gt;  % redefine \fooindex:
<a id='L4700' name='L4700'></a>&lt;a id='L4686' name='L4686'&gt;&lt;/a&gt;  \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}%
<a id='L4701' name='L4701'></a>&lt;a id='L4687' name='L4687'&gt;&lt;/a&gt;}
<a id='L4702' name='L4702'></a>&lt;a id='L4688' name='L4688'&gt;&lt;/a&gt;
<a id='L4703' name='L4703'></a>&lt;a id='L4689' name='L4689'&gt;&lt;/a&gt;% Define \doindex, the driver for all \fooindex macros.
<a id='L4704' name='L4704'></a>&lt;a id='L4690' name='L4690'&gt;&lt;/a&gt;% Argument #1 is generated by the calling \fooindex macro,
<a id='L4705' name='L4705'></a>&lt;a id='L4691' name='L4691'&gt;&lt;/a&gt;%  and it is "foo", the name of the index.
<a id='L4706' name='L4706'></a>&lt;a id='L4692' name='L4692'&gt;&lt;/a&gt;
<a id='L4707' name='L4707'></a>&lt;a id='L4693' name='L4693'&gt;&lt;/a&gt;% \doindex just uses \parsearg; it calls \doind for the actual work.
<a id='L4708' name='L4708'></a>&lt;a id='L4694' name='L4694'&gt;&lt;/a&gt;% This is because \doind is more useful to call from other macros.
<a id='L4709' name='L4709'></a>&lt;a id='L4695' name='L4695'&gt;&lt;/a&gt;
<a id='L4710' name='L4710'></a>&lt;a id='L4696' name='L4696'&gt;&lt;/a&gt;% There is also \dosubind {index}{topic}{subtopic}
<a id='L4711' name='L4711'></a>&lt;a id='L4697' name='L4697'&gt;&lt;/a&gt;% which makes an entry in a two-level index such as the operation index.
<a id='L4712' name='L4712'></a>&lt;a id='L4698' name='L4698'&gt;&lt;/a&gt;
<a id='L4713' name='L4713'></a>&lt;a id='L4699' name='L4699'&gt;&lt;/a&gt;\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
<a id='L4714' name='L4714'></a>&lt;a id='L4700' name='L4700'&gt;&lt;/a&gt;\def\singleindexer #1{\doind{\indexname}{#1}}
<a id='L4715' name='L4715'></a>&lt;a id='L4701' name='L4701'&gt;&lt;/a&gt;
<a id='L4716' name='L4716'></a>&lt;a id='L4702' name='L4702'&gt;&lt;/a&gt;% like the previous two, but they put @code around the argument.
<a id='L4717' name='L4717'></a>&lt;a id='L4703' name='L4703'&gt;&lt;/a&gt;\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
<a id='L4718' name='L4718'></a>&lt;a id='L4704' name='L4704'&gt;&lt;/a&gt;\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
<a id='L4719' name='L4719'></a>&lt;a id='L4705' name='L4705'&gt;&lt;/a&gt;
<a id='L4720' name='L4720'></a>&lt;a id='L4706' name='L4706'&gt;&lt;/a&gt;% Take care of Texinfo commands that can appear in an index entry.
<a id='L4721' name='L4721'></a>&lt;a id='L4707' name='L4707'&gt;&lt;/a&gt;% Since there are some commands we want to expand, and others we don't,
<a id='L4722' name='L4722'></a>&lt;a id='L4708' name='L4708'&gt;&lt;/a&gt;% we have to laboriously prevent expansion for those that we don't.
<a id='L4723' name='L4723'></a>&lt;a id='L4709' name='L4709'&gt;&lt;/a&gt;%
<a id='L4724' name='L4724'></a>&lt;a id='L4710' name='L4710'&gt;&lt;/a&gt;\def\indexdummies{%
<a id='L4725' name='L4725'></a>&lt;a id='L4711' name='L4711'&gt;&lt;/a&gt;  \escapechar = `\\     % use backslash in output files.
<a id='L4726' name='L4726'></a>&lt;a id='L4712' name='L4712'&gt;&lt;/a&gt;  \def\@{@}% change to @@ when we switch to @ as escape char in index files.
<a id='L4727' name='L4727'></a>&lt;a id='L4713' name='L4713'&gt;&lt;/a&gt;  \def\ {\realbackslash\space }%
<a id='L4728' name='L4728'></a>&lt;a id='L4714' name='L4714'&gt;&lt;/a&gt;  %
<a id='L4729' name='L4729'></a>&lt;a id='L4715' name='L4715'&gt;&lt;/a&gt;  % Need these unexpandable (because we define \tt as a dummy)
<a id='L4730' name='L4730'></a>&lt;a id='L4716' name='L4716'&gt;&lt;/a&gt;  % definitions when @{ or @} appear in index entry text.  Also, more
<a id='L4731' name='L4731'></a>&lt;a id='L4717' name='L4717'&gt;&lt;/a&gt;  % complicated, when \tex is in effect and \{ is a \delimiter again.
<a id='L4732' name='L4732'></a>&lt;a id='L4718' name='L4718'&gt;&lt;/a&gt;  % We can't use \lbracecmd and \rbracecmd because texindex assumes
<a id='L4733' name='L4733'></a>&lt;a id='L4719' name='L4719'&gt;&lt;/a&gt;  % braces and backslashes are used only as delimiters.  Perhaps we
<a id='L4734' name='L4734'></a>&lt;a id='L4720' name='L4720'&gt;&lt;/a&gt;  % should define @lbrace and @rbrace commands a la @comma.
<a id='L4735' name='L4735'></a>&lt;a id='L4721' name='L4721'&gt;&lt;/a&gt;  \def\{{{\tt\char123}}%
<a id='L4736' name='L4736'></a>&lt;a id='L4722' name='L4722'&gt;&lt;/a&gt;  \def\}{{\tt\char125}}%
<a id='L4737' name='L4737'></a>&lt;a id='L4723' name='L4723'&gt;&lt;/a&gt;  %
<a id='L4738' name='L4738'></a>&lt;a id='L4724' name='L4724'&gt;&lt;/a&gt;  % I don't entirely understand this, but when an index entry is
<a id='L4739' name='L4739'></a>&lt;a id='L4725' name='L4725'&gt;&lt;/a&gt;  % generated from a macro call, the \endinput which \scanmacro inserts
<a id='L4740' name='L4740'></a>&lt;a id='L4726' name='L4726'&gt;&lt;/a&gt;  % causes processing to be prematurely terminated.  This is,
<a id='L4741' name='L4741'></a>&lt;a id='L4727' name='L4727'&gt;&lt;/a&gt;  % apparently, because \indexsorttmp is fully expanded, and \endinput
<a id='L4742' name='L4742'></a>&lt;a id='L4728' name='L4728'&gt;&lt;/a&gt;  % is an expandable command.  The redefinition below makes \endinput
<a id='L4743' name='L4743'></a>&lt;a id='L4729' name='L4729'&gt;&lt;/a&gt;  % disappear altogether for that purpose -- although logging shows that
<a id='L4744' name='L4744'></a>&lt;a id='L4730' name='L4730'&gt;&lt;/a&gt;  % processing continues to some further point.  On the other hand, it
<a id='L4745' name='L4745'></a>&lt;a id='L4731' name='L4731'&gt;&lt;/a&gt;  % seems \endinput does not hurt in the printed index arg, since that
<a id='L4746' name='L4746'></a>&lt;a id='L4732' name='L4732'&gt;&lt;/a&gt;  % is still getting written without apparent harm.
<a id='L4747' name='L4747'></a>&lt;a id='L4733' name='L4733'&gt;&lt;/a&gt;  %
<a id='L4748' name='L4748'></a>&lt;a id='L4734' name='L4734'&gt;&lt;/a&gt;  % Sample source (mac-idx3.tex, reported by Graham Percival to
<a id='L4749' name='L4749'></a>&lt;a id='L4735' name='L4735'&gt;&lt;/a&gt;  % help-texinfo, 22may06):
<a id='L4750' name='L4750'></a>&lt;a id='L4736' name='L4736'&gt;&lt;/a&gt;  % @macro funindex {WORD}
<a id='L4751' name='L4751'></a>&lt;a id='L4737' name='L4737'&gt;&lt;/a&gt;  % @findex xyz
<a id='L4752' name='L4752'></a>&lt;a id='L4738' name='L4738'&gt;&lt;/a&gt;  % @end macro
<a id='L4753' name='L4753'></a>&lt;a id='L4739' name='L4739'&gt;&lt;/a&gt;  % ...
<a id='L4754' name='L4754'></a>&lt;a id='L4740' name='L4740'&gt;&lt;/a&gt;  % @funindex commtest
<a id='L4755' name='L4755'></a>&lt;a id='L4741' name='L4741'&gt;&lt;/a&gt;  %
<a id='L4756' name='L4756'></a>&lt;a id='L4742' name='L4742'&gt;&lt;/a&gt;  % The above is not enough to reproduce the bug, but it gives the flavor.
<a id='L4757' name='L4757'></a>&lt;a id='L4743' name='L4743'&gt;&lt;/a&gt;  %
<a id='L4758' name='L4758'></a>&lt;a id='L4744' name='L4744'&gt;&lt;/a&gt;  % Sample whatsit resulting:
<a id='L4759' name='L4759'></a>&lt;a id='L4745' name='L4745'&gt;&lt;/a&gt;  % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}}
<a id='L4760' name='L4760'></a>&lt;a id='L4746' name='L4746'&gt;&lt;/a&gt;  %
<a id='L4761' name='L4761'></a>&lt;a id='L4747' name='L4747'&gt;&lt;/a&gt;  % So:
<a id='L4762' name='L4762'></a>&lt;a id='L4748' name='L4748'&gt;&lt;/a&gt;  \let\endinput = \empty
<a id='L4763' name='L4763'></a>&lt;a id='L4749' name='L4749'&gt;&lt;/a&gt;  %
<a id='L4764' name='L4764'></a>&lt;a id='L4750' name='L4750'&gt;&lt;/a&gt;  % Do the redefinitions.
<a id='L4765' name='L4765'></a>&lt;a id='L4751' name='L4751'&gt;&lt;/a&gt;  \commondummies
<a id='L4766' name='L4766'></a>&lt;a id='L4752' name='L4752'&gt;&lt;/a&gt;}
<a id='L4767' name='L4767'></a>&lt;a id='L4753' name='L4753'&gt;&lt;/a&gt;
<a id='L4768' name='L4768'></a>&lt;a id='L4754' name='L4754'&gt;&lt;/a&gt;% For the aux and toc files, @ is the escape character.  So we want to
<a id='L4769' name='L4769'></a>&lt;a id='L4755' name='L4755'&gt;&lt;/a&gt;% redefine everything using @ as the escape character (instead of
<a id='L4770' name='L4770'></a>&lt;a id='L4756' name='L4756'&gt;&lt;/a&gt;% \realbackslash, still used for index files).  When everything uses @,
<a id='L4771' name='L4771'></a>&lt;a id='L4757' name='L4757'&gt;&lt;/a&gt;% this will be simpler.
<a id='L4772' name='L4772'></a>&lt;a id='L4758' name='L4758'&gt;&lt;/a&gt;%
<a id='L4773' name='L4773'></a>&lt;a id='L4759' name='L4759'&gt;&lt;/a&gt;\def\atdummies{%
<a id='L4774' name='L4774'></a>&lt;a id='L4760' name='L4760'&gt;&lt;/a&gt;  \def\@{@@}%
<a id='L4775' name='L4775'></a>&lt;a id='L4761' name='L4761'&gt;&lt;/a&gt;  \def\ {@ }%
<a id='L4776' name='L4776'></a>&lt;a id='L4762' name='L4762'&gt;&lt;/a&gt;  \let\{ = \lbraceatcmd
<a id='L4777' name='L4777'></a>&lt;a id='L4763' name='L4763'&gt;&lt;/a&gt;  \let\} = \rbraceatcmd
<a id='L4778' name='L4778'></a>&lt;a id='L4764' name='L4764'&gt;&lt;/a&gt;  %
<a id='L4779' name='L4779'></a>&lt;a id='L4765' name='L4765'&gt;&lt;/a&gt;  % Do the redefinitions.
<a id='L4780' name='L4780'></a>&lt;a id='L4766' name='L4766'&gt;&lt;/a&gt;  \commondummies
<a id='L4781' name='L4781'></a>&lt;a id='L4767' name='L4767'&gt;&lt;/a&gt;  \otherbackslash
<a id='L4782' name='L4782'></a>&lt;a id='L4768' name='L4768'&gt;&lt;/a&gt;}
<a id='L4783' name='L4783'></a>&lt;a id='L4769' name='L4769'&gt;&lt;/a&gt;
<a id='L4784' name='L4784'></a>&lt;a id='L4770' name='L4770'&gt;&lt;/a&gt;% Called from \indexdummies and \atdummies.
<a id='L4785' name='L4785'></a>&lt;a id='L4771' name='L4771'&gt;&lt;/a&gt;%
<a id='L4786' name='L4786'></a>&lt;a id='L4772' name='L4772'&gt;&lt;/a&gt;\def\commondummies{%
<a id='L4787' name='L4787'></a>&lt;a id='L4773' name='L4773'&gt;&lt;/a&gt;  %
<a id='L4788' name='L4788'></a>&lt;a id='L4774' name='L4774'&gt;&lt;/a&gt;  % \definedummyword defines \#1 as \string\#1\space, thus effectively
<a id='L4789' name='L4789'></a>&lt;a id='L4775' name='L4775'&gt;&lt;/a&gt;  % preventing its expansion.  This is used only for control words,
<a id='L4790' name='L4790'></a>&lt;a id='L4776' name='L4776'&gt;&lt;/a&gt;  % not control letters, because the \space would be incorrect for
<a id='L4791' name='L4791'></a>&lt;a id='L4777' name='L4777'&gt;&lt;/a&gt;  % control characters, but is needed to separate the control word
<a id='L4792' name='L4792'></a>&lt;a id='L4778' name='L4778'&gt;&lt;/a&gt;  % from whatever follows.
<a id='L4793' name='L4793'></a>&lt;a id='L4779' name='L4779'&gt;&lt;/a&gt;  %
<a id='L4794' name='L4794'></a>&lt;a id='L4780' name='L4780'&gt;&lt;/a&gt;  % For control letters, we have \definedummyletter, which omits the
<a id='L4795' name='L4795'></a>&lt;a id='L4781' name='L4781'&gt;&lt;/a&gt;  % space.
<a id='L4796' name='L4796'></a>&lt;a id='L4782' name='L4782'&gt;&lt;/a&gt;  %
<a id='L4797' name='L4797'></a>&lt;a id='L4783' name='L4783'&gt;&lt;/a&gt;  % These can be used both for control words that take an argument and
<a id='L4798' name='L4798'></a>&lt;a id='L4784' name='L4784'&gt;&lt;/a&gt;  % those that do not.  If it is followed by {arg} in the input, then
<a id='L4799' name='L4799'></a>&lt;a id='L4785' name='L4785'&gt;&lt;/a&gt;  % that will dutifully get written to the index (or wherever).
<a id='L4800' name='L4800'></a>&lt;a id='L4786' name='L4786'&gt;&lt;/a&gt;  %
<a id='L4801' name='L4801'></a>&lt;a id='L4787' name='L4787'&gt;&lt;/a&gt;  \def\definedummyword  ##1{\def##1{\string##1\space}}%
<a id='L4802' name='L4802'></a>&lt;a id='L4788' name='L4788'&gt;&lt;/a&gt;  \def\definedummyletter##1{\def##1{\string##1}}%
<a id='L4803' name='L4803'></a>&lt;a id='L4789' name='L4789'&gt;&lt;/a&gt;  \let\definedummyaccent\definedummyletter
<a id='L4804' name='L4804'></a>&lt;a id='L4790' name='L4790'&gt;&lt;/a&gt;  %
<a id='L4805' name='L4805'></a>&lt;a id='L4791' name='L4791'&gt;&lt;/a&gt;  \commondummiesnofonts
<a id='L4806' name='L4806'></a>&lt;a id='L4792' name='L4792'&gt;&lt;/a&gt;  %
<a id='L4807' name='L4807'></a>&lt;a id='L4793' name='L4793'&gt;&lt;/a&gt;  \definedummyletter\_%
<a id='L4808' name='L4808'></a>&lt;a id='L4794' name='L4794'&gt;&lt;/a&gt;  \definedummyletter\-%
<a id='L4809' name='L4809'></a>&lt;a id='L4795' name='L4795'&gt;&lt;/a&gt;  %
<a id='L4810' name='L4810'></a>&lt;a id='L4796' name='L4796'&gt;&lt;/a&gt;  % Non-English letters.
<a id='L4811' name='L4811'></a>&lt;a id='L4797' name='L4797'&gt;&lt;/a&gt;  \definedummyword\AA
<a id='L4812' name='L4812'></a>&lt;a id='L4798' name='L4798'&gt;&lt;/a&gt;  \definedummyword\AE
<a id='L4813' name='L4813'></a>&lt;a id='L4799' name='L4799'&gt;&lt;/a&gt;  \definedummyword\DH
<a id='L4814' name='L4814'></a>&lt;a id='L4800' name='L4800'&gt;&lt;/a&gt;  \definedummyword\L
<a id='L4815' name='L4815'></a>&lt;a id='L4801' name='L4801'&gt;&lt;/a&gt;  \definedummyword\O
<a id='L4816' name='L4816'></a>&lt;a id='L4802' name='L4802'&gt;&lt;/a&gt;  \definedummyword\OE
<a id='L4817' name='L4817'></a>&lt;a id='L4803' name='L4803'&gt;&lt;/a&gt;  \definedummyword\TH
<a id='L4818' name='L4818'></a>&lt;a id='L4804' name='L4804'&gt;&lt;/a&gt;  \definedummyword\aa
<a id='L4819' name='L4819'></a>&lt;a id='L4805' name='L4805'&gt;&lt;/a&gt;  \definedummyword\ae
<a id='L4820' name='L4820'></a>&lt;a id='L4806' name='L4806'&gt;&lt;/a&gt;  \definedummyword\dh
<a id='L4821' name='L4821'></a>&lt;a id='L4807' name='L4807'&gt;&lt;/a&gt;  \definedummyword\exclamdown
<a id='L4822' name='L4822'></a>&lt;a id='L4808' name='L4808'&gt;&lt;/a&gt;  \definedummyword\l
<a id='L4823' name='L4823'></a>&lt;a id='L4809' name='L4809'&gt;&lt;/a&gt;  \definedummyword\o
<a id='L4824' name='L4824'></a>&lt;a id='L4810' name='L4810'&gt;&lt;/a&gt;  \definedummyword\oe
<a id='L4825' name='L4825'></a>&lt;a id='L4811' name='L4811'&gt;&lt;/a&gt;  \definedummyword\ordf
<a id='L4826' name='L4826'></a>&lt;a id='L4812' name='L4812'&gt;&lt;/a&gt;  \definedummyword\ordm
<a id='L4827' name='L4827'></a>&lt;a id='L4813' name='L4813'&gt;&lt;/a&gt;  \definedummyword\questiondown
<a id='L4828' name='L4828'></a>&lt;a id='L4814' name='L4814'&gt;&lt;/a&gt;  \definedummyword\ss
<a id='L4829' name='L4829'></a>&lt;a id='L4815' name='L4815'&gt;&lt;/a&gt;  \definedummyword\th
<a id='L4830' name='L4830'></a>&lt;a id='L4816' name='L4816'&gt;&lt;/a&gt;  %
<a id='L4831' name='L4831'></a>&lt;a id='L4817' name='L4817'&gt;&lt;/a&gt;  % Although these internal commands shouldn't show up, sometimes they do.
<a id='L4832' name='L4832'></a>&lt;a id='L4818' name='L4818'&gt;&lt;/a&gt;  \definedummyword\bf
<a id='L4833' name='L4833'></a>&lt;a id='L4819' name='L4819'&gt;&lt;/a&gt;  \definedummyword\gtr
<a id='L4834' name='L4834'></a>&lt;a id='L4820' name='L4820'&gt;&lt;/a&gt;  \definedummyword\hat
<a id='L4835' name='L4835'></a>&lt;a id='L4821' name='L4821'&gt;&lt;/a&gt;  \definedummyword\less
<a id='L4836' name='L4836'></a>&lt;a id='L4822' name='L4822'&gt;&lt;/a&gt;  \definedummyword\sf
<a id='L4837' name='L4837'></a>&lt;a id='L4823' name='L4823'&gt;&lt;/a&gt;  \definedummyword\sl
<a id='L4838' name='L4838'></a>&lt;a id='L4824' name='L4824'&gt;&lt;/a&gt;  \definedummyword\tclose
<a id='L4839' name='L4839'></a>&lt;a id='L4825' name='L4825'&gt;&lt;/a&gt;  \definedummyword\tt
<a id='L4840' name='L4840'></a>&lt;a id='L4826' name='L4826'&gt;&lt;/a&gt;  %
<a id='L4841' name='L4841'></a>&lt;a id='L4827' name='L4827'&gt;&lt;/a&gt;  \definedummyword\LaTeX
<a id='L4842' name='L4842'></a>&lt;a id='L4828' name='L4828'&gt;&lt;/a&gt;  \definedummyword\TeX
<a id='L4843' name='L4843'></a>&lt;a id='L4829' name='L4829'&gt;&lt;/a&gt;  %
<a id='L4844' name='L4844'></a>&lt;a id='L4830' name='L4830'&gt;&lt;/a&gt;  % Assorted special characters.
<a id='L4845' name='L4845'></a>&lt;a id='L4831' name='L4831'&gt;&lt;/a&gt;  \definedummyword\arrow
<a id='L4846' name='L4846'></a>&lt;a id='L4832' name='L4832'&gt;&lt;/a&gt;  \definedummyword\bullet
<a id='L4847' name='L4847'></a>&lt;a id='L4833' name='L4833'&gt;&lt;/a&gt;  \definedummyword\comma
<a id='L4848' name='L4848'></a>&lt;a id='L4834' name='L4834'&gt;&lt;/a&gt;  \definedummyword\copyright
<a id='L4849' name='L4849'></a>&lt;a id='L4835' name='L4835'&gt;&lt;/a&gt;  \definedummyword\registeredsymbol
<a id='L4850' name='L4850'></a>&lt;a id='L4836' name='L4836'&gt;&lt;/a&gt;  \definedummyword\dots
<a id='L4851' name='L4851'></a>&lt;a id='L4837' name='L4837'&gt;&lt;/a&gt;  \definedummyword\enddots
<a id='L4852' name='L4852'></a>&lt;a id='L4838' name='L4838'&gt;&lt;/a&gt;  \definedummyword\entrybreak
<a id='L4853' name='L4853'></a>&lt;a id='L4839' name='L4839'&gt;&lt;/a&gt;  \definedummyword\equiv
<a id='L4854' name='L4854'></a>&lt;a id='L4840' name='L4840'&gt;&lt;/a&gt;  \definedummyword\error
<a id='L4855' name='L4855'></a>&lt;a id='L4841' name='L4841'&gt;&lt;/a&gt;  \definedummyword\euro
<a id='L4856' name='L4856'></a>&lt;a id='L4842' name='L4842'&gt;&lt;/a&gt;  \definedummyword\expansion
<a id='L4857' name='L4857'></a>&lt;a id='L4843' name='L4843'&gt;&lt;/a&gt;  \definedummyword\geq
<a id='L4858' name='L4858'></a>&lt;a id='L4844' name='L4844'&gt;&lt;/a&gt;  \definedummyword\guillemetleft
<a id='L4859' name='L4859'></a>&lt;a id='L4845' name='L4845'&gt;&lt;/a&gt;  \definedummyword\guillemetright
<a id='L4860' name='L4860'></a>&lt;a id='L4846' name='L4846'&gt;&lt;/a&gt;  \definedummyword\guilsinglleft
<a id='L4861' name='L4861'></a>&lt;a id='L4847' name='L4847'&gt;&lt;/a&gt;  \definedummyword\guilsinglright
<a id='L4862' name='L4862'></a>&lt;a id='L4848' name='L4848'&gt;&lt;/a&gt;  \definedummyword\lbracechar
<a id='L4863' name='L4863'></a>&lt;a id='L4849' name='L4849'&gt;&lt;/a&gt;  \definedummyword\leq
<a id='L4864' name='L4864'></a>&lt;a id='L4850' name='L4850'&gt;&lt;/a&gt;  \definedummyword\minus
<a id='L4865' name='L4865'></a>&lt;a id='L4851' name='L4851'&gt;&lt;/a&gt;  \definedummyword\ogonek
<a id='L4866' name='L4866'></a>&lt;a id='L4852' name='L4852'&gt;&lt;/a&gt;  \definedummyword\pounds
<a id='L4867' name='L4867'></a>&lt;a id='L4853' name='L4853'&gt;&lt;/a&gt;  \definedummyword\point
<a id='L4868' name='L4868'></a>&lt;a id='L4854' name='L4854'&gt;&lt;/a&gt;  \definedummyword\print
<a id='L4869' name='L4869'></a>&lt;a id='L4855' name='L4855'&gt;&lt;/a&gt;  \definedummyword\quotedblbase
<a id='L4870' name='L4870'></a>&lt;a id='L4856' name='L4856'&gt;&lt;/a&gt;  \definedummyword\quotedblleft
<a id='L4871' name='L4871'></a>&lt;a id='L4857' name='L4857'&gt;&lt;/a&gt;  \definedummyword\quotedblright
<a id='L4872' name='L4872'></a>&lt;a id='L4858' name='L4858'&gt;&lt;/a&gt;  \definedummyword\quoteleft
<a id='L4873' name='L4873'></a>&lt;a id='L4859' name='L4859'&gt;&lt;/a&gt;  \definedummyword\quoteright
<a id='L4874' name='L4874'></a>&lt;a id='L4860' name='L4860'&gt;&lt;/a&gt;  \definedummyword\quotesinglbase
<a id='L4875' name='L4875'></a>&lt;a id='L4861' name='L4861'&gt;&lt;/a&gt;  \definedummyword\rbracechar
<a id='L4876' name='L4876'></a>&lt;a id='L4862' name='L4862'&gt;&lt;/a&gt;  \definedummyword\result
<a id='L4877' name='L4877'></a>&lt;a id='L4863' name='L4863'&gt;&lt;/a&gt;  \definedummyword\textdegree
<a id='L4878' name='L4878'></a>&lt;a id='L4864' name='L4864'&gt;&lt;/a&gt;  %
<a id='L4879' name='L4879'></a>&lt;a id='L4865' name='L4865'&gt;&lt;/a&gt;  % We want to disable all macros so that they are not expanded by \write.
<a id='L4880' name='L4880'></a>&lt;a id='L4866' name='L4866'&gt;&lt;/a&gt;  \macrolist
<a id='L4881' name='L4881'></a>&lt;a id='L4867' name='L4867'&gt;&lt;/a&gt;  %
<a id='L4882' name='L4882'></a>&lt;a id='L4868' name='L4868'&gt;&lt;/a&gt;  \normalturnoffactive
<a id='L4883' name='L4883'></a>&lt;a id='L4869' name='L4869'&gt;&lt;/a&gt;  %
<a id='L4884' name='L4884'></a>&lt;a id='L4870' name='L4870'&gt;&lt;/a&gt;  % Handle some cases of @value -- where it does not contain any
<a id='L4885' name='L4885'></a>&lt;a id='L4871' name='L4871'&gt;&lt;/a&gt;  % (non-fully-expandable) commands.
<a id='L4886' name='L4886'></a>&lt;a id='L4872' name='L4872'&gt;&lt;/a&gt;  \makevalueexpandable
<a id='L4887' name='L4887'></a>&lt;a id='L4873' name='L4873'&gt;&lt;/a&gt;}
<a id='L4888' name='L4888'></a>&lt;a id='L4874' name='L4874'&gt;&lt;/a&gt;
<a id='L4889' name='L4889'></a>&lt;a id='L4875' name='L4875'&gt;&lt;/a&gt;% \commondummiesnofonts: common to \commondummies and \indexnofonts.
<a id='L4890' name='L4890'></a>&lt;a id='L4876' name='L4876'&gt;&lt;/a&gt;%
<a id='L4891' name='L4891'></a>&lt;a id='L4877' name='L4877'&gt;&lt;/a&gt;\def\commondummiesnofonts{%
<a id='L4892' name='L4892'></a>&lt;a id='L4878' name='L4878'&gt;&lt;/a&gt;  % Control letters and accents.
<a id='L4893' name='L4893'></a>&lt;a id='L4879' name='L4879'&gt;&lt;/a&gt;  \definedummyletter\!%
<a id='L4894' name='L4894'></a>&lt;a id='L4880' name='L4880'&gt;&lt;/a&gt;  \definedummyaccent\"%
<a id='L4895' name='L4895'></a>&lt;a id='L4881' name='L4881'&gt;&lt;/a&gt;  \definedummyaccent\'%
<a id='L4896' name='L4896'></a>&lt;a id='L4882' name='L4882'&gt;&lt;/a&gt;  \definedummyletter\*%
<a id='L4897' name='L4897'></a>&lt;a id='L4883' name='L4883'&gt;&lt;/a&gt;  \definedummyaccent\,%
<a id='L4898' name='L4898'></a>&lt;a id='L4884' name='L4884'&gt;&lt;/a&gt;  \definedummyletter\.%
<a id='L4899' name='L4899'></a>&lt;a id='L4885' name='L4885'&gt;&lt;/a&gt;  \definedummyletter\/%
<a id='L4900' name='L4900'></a>&lt;a id='L4886' name='L4886'&gt;&lt;/a&gt;  \definedummyletter\:%
<a id='L4901' name='L4901'></a>&lt;a id='L4887' name='L4887'&gt;&lt;/a&gt;  \definedummyaccent\=%
<a id='L4902' name='L4902'></a>&lt;a id='L4888' name='L4888'&gt;&lt;/a&gt;  \definedummyletter\?%
<a id='L4903' name='L4903'></a>&lt;a id='L4889' name='L4889'&gt;&lt;/a&gt;  \definedummyaccent\^%
<a id='L4904' name='L4904'></a>&lt;a id='L4890' name='L4890'&gt;&lt;/a&gt;  \definedummyaccent\`%
<a id='L4905' name='L4905'></a>&lt;a id='L4891' name='L4891'&gt;&lt;/a&gt;  \definedummyaccent\~%
<a id='L4906' name='L4906'></a>&lt;a id='L4892' name='L4892'&gt;&lt;/a&gt;  \definedummyword\u
<a id='L4907' name='L4907'></a>&lt;a id='L4893' name='L4893'&gt;&lt;/a&gt;  \definedummyword\v
<a id='L4908' name='L4908'></a>&lt;a id='L4894' name='L4894'&gt;&lt;/a&gt;  \definedummyword\H
<a id='L4909' name='L4909'></a>&lt;a id='L4895' name='L4895'&gt;&lt;/a&gt;  \definedummyword\dotaccent
<a id='L4910' name='L4910'></a>&lt;a id='L4896' name='L4896'&gt;&lt;/a&gt;  \definedummyword\ogonek
<a id='L4911' name='L4911'></a>&lt;a id='L4897' name='L4897'&gt;&lt;/a&gt;  \definedummyword\ringaccent
<a id='L4912' name='L4912'></a>&lt;a id='L4898' name='L4898'&gt;&lt;/a&gt;  \definedummyword\tieaccent
<a id='L4913' name='L4913'></a>&lt;a id='L4899' name='L4899'&gt;&lt;/a&gt;  \definedummyword\ubaraccent
<a id='L4914' name='L4914'></a>&lt;a id='L4900' name='L4900'&gt;&lt;/a&gt;  \definedummyword\udotaccent
<a id='L4915' name='L4915'></a>&lt;a id='L4901' name='L4901'&gt;&lt;/a&gt;  \definedummyword\dotless
<a id='L4916' name='L4916'></a>&lt;a id='L4902' name='L4902'&gt;&lt;/a&gt;  %
<a id='L4917' name='L4917'></a>&lt;a id='L4903' name='L4903'&gt;&lt;/a&gt;  % Texinfo font commands.
<a id='L4918' name='L4918'></a>&lt;a id='L4904' name='L4904'&gt;&lt;/a&gt;  \definedummyword\b
<a id='L4919' name='L4919'></a>&lt;a id='L4905' name='L4905'&gt;&lt;/a&gt;  \definedummyword\i
<a id='L4920' name='L4920'></a>&lt;a id='L4906' name='L4906'&gt;&lt;/a&gt;  \definedummyword\r
<a id='L4921' name='L4921'></a>&lt;a id='L4907' name='L4907'&gt;&lt;/a&gt;  \definedummyword\sansserif
<a id='L4922' name='L4922'></a>&lt;a id='L4908' name='L4908'&gt;&lt;/a&gt;  \definedummyword\sc
<a id='L4923' name='L4923'></a>&lt;a id='L4909' name='L4909'&gt;&lt;/a&gt;  \definedummyword\slanted
<a id='L4924' name='L4924'></a>&lt;a id='L4910' name='L4910'&gt;&lt;/a&gt;  \definedummyword\t
<a id='L4925' name='L4925'></a>&lt;a id='L4911' name='L4911'&gt;&lt;/a&gt;  %
<a id='L4926' name='L4926'></a>&lt;a id='L4912' name='L4912'&gt;&lt;/a&gt;  % Commands that take arguments.
<a id='L4927' name='L4927'></a>&lt;a id='L4913' name='L4913'&gt;&lt;/a&gt;  \definedummyword\abbr
<a id='L4928' name='L4928'></a>&lt;a id='L4914' name='L4914'&gt;&lt;/a&gt;  \definedummyword\acronym
<a id='L4929' name='L4929'></a>&lt;a id='L4915' name='L4915'&gt;&lt;/a&gt;  \definedummyword\anchor
<a id='L4930' name='L4930'></a>&lt;a id='L4916' name='L4916'&gt;&lt;/a&gt;  \definedummyword\cite
<a id='L4931' name='L4931'></a>&lt;a id='L4917' name='L4917'&gt;&lt;/a&gt;  \definedummyword\code
<a id='L4932' name='L4932'></a>&lt;a id='L4918' name='L4918'&gt;&lt;/a&gt;  \definedummyword\command
<a id='L4933' name='L4933'></a>&lt;a id='L4919' name='L4919'&gt;&lt;/a&gt;  \definedummyword\dfn
<a id='L4934' name='L4934'></a>&lt;a id='L4920' name='L4920'&gt;&lt;/a&gt;  \definedummyword\dmn
<a id='L4935' name='L4935'></a>&lt;a id='L4921' name='L4921'&gt;&lt;/a&gt;  \definedummyword\email
<a id='L4936' name='L4936'></a>&lt;a id='L4922' name='L4922'&gt;&lt;/a&gt;  \definedummyword\emph
<a id='L4937' name='L4937'></a>&lt;a id='L4923' name='L4923'&gt;&lt;/a&gt;  \definedummyword\env
<a id='L4938' name='L4938'></a>&lt;a id='L4924' name='L4924'&gt;&lt;/a&gt;  \definedummyword\file
<a id='L4939' name='L4939'></a>&lt;a id='L4925' name='L4925'&gt;&lt;/a&gt;  \definedummyword\image
<a id='L4940' name='L4940'></a>&lt;a id='L4926' name='L4926'&gt;&lt;/a&gt;  \definedummyword\indicateurl
<a id='L4941' name='L4941'></a>&lt;a id='L4927' name='L4927'&gt;&lt;/a&gt;  \definedummyword\inforef
<a id='L4942' name='L4942'></a>&lt;a id='L4928' name='L4928'&gt;&lt;/a&gt;  \definedummyword\kbd
<a id='L4943' name='L4943'></a>&lt;a id='L4929' name='L4929'&gt;&lt;/a&gt;  \definedummyword\key
<a id='L4944' name='L4944'></a>&lt;a id='L4930' name='L4930'&gt;&lt;/a&gt;  \definedummyword\math
<a id='L4945' name='L4945'></a>&lt;a id='L4931' name='L4931'&gt;&lt;/a&gt;  \definedummyword\option
<a id='L4946' name='L4946'></a>&lt;a id='L4932' name='L4932'&gt;&lt;/a&gt;  \definedummyword\pxref
<a id='L4947' name='L4947'></a>&lt;a id='L4933' name='L4933'&gt;&lt;/a&gt;  \definedummyword\ref
<a id='L4948' name='L4948'></a>&lt;a id='L4934' name='L4934'&gt;&lt;/a&gt;  \definedummyword\samp
<a id='L4949' name='L4949'></a>&lt;a id='L4935' name='L4935'&gt;&lt;/a&gt;  \definedummyword\strong
<a id='L4950' name='L4950'></a>&lt;a id='L4936' name='L4936'&gt;&lt;/a&gt;  \definedummyword\tie
<a id='L4951' name='L4951'></a>&lt;a id='L4937' name='L4937'&gt;&lt;/a&gt;  \definedummyword\uref
<a id='L4952' name='L4952'></a>&lt;a id='L4938' name='L4938'&gt;&lt;/a&gt;  \definedummyword\url
<a id='L4953' name='L4953'></a>&lt;a id='L4939' name='L4939'&gt;&lt;/a&gt;  \definedummyword\var
<a id='L4954' name='L4954'></a>&lt;a id='L4940' name='L4940'&gt;&lt;/a&gt;  \definedummyword\verb
<a id='L4955' name='L4955'></a>&lt;a id='L4941' name='L4941'&gt;&lt;/a&gt;  \definedummyword\w
<a id='L4956' name='L4956'></a>&lt;a id='L4942' name='L4942'&gt;&lt;/a&gt;  \definedummyword\xref
<a id='L4957' name='L4957'></a>&lt;a id='L4943' name='L4943'&gt;&lt;/a&gt;}
<a id='L4958' name='L4958'></a>&lt;a id='L4944' name='L4944'&gt;&lt;/a&gt;
<a id='L4959' name='L4959'></a>&lt;a id='L4945' name='L4945'&gt;&lt;/a&gt;% \indexnofonts is used when outputting the strings to sort the index
<a id='L4960' name='L4960'></a>&lt;a id='L4946' name='L4946'&gt;&lt;/a&gt;% by, and when constructing control sequence names.  It eliminates all
<a id='L4961' name='L4961'></a>&lt;a id='L4947' name='L4947'&gt;&lt;/a&gt;% control sequences and just writes whatever the best ASCII sort string
<a id='L4962' name='L4962'></a>&lt;a id='L4948' name='L4948'&gt;&lt;/a&gt;% would be for a given command (usually its argument).
<a id='L4963' name='L4963'></a>&lt;a id='L4949' name='L4949'&gt;&lt;/a&gt;%
<a id='L4964' name='L4964'></a>&lt;a id='L4950' name='L4950'&gt;&lt;/a&gt;\def\indexnofonts{%
<a id='L4965' name='L4965'></a>&lt;a id='L4951' name='L4951'&gt;&lt;/a&gt;  % Accent commands should become @asis.
<a id='L4966' name='L4966'></a>&lt;a id='L4952' name='L4952'&gt;&lt;/a&gt;  \def\definedummyaccent##1{\let##1\asis}%
<a id='L4967' name='L4967'></a>&lt;a id='L4953' name='L4953'&gt;&lt;/a&gt;  % We can just ignore other control letters.
<a id='L4968' name='L4968'></a>&lt;a id='L4954' name='L4954'&gt;&lt;/a&gt;  \def\definedummyletter##1{\let##1\empty}%
<a id='L4969' name='L4969'></a>&lt;a id='L4955' name='L4955'&gt;&lt;/a&gt;  % All control words become @asis by default; overrides below.
<a id='L4970' name='L4970'></a>&lt;a id='L4956' name='L4956'&gt;&lt;/a&gt;  \let\definedummyword\definedummyaccent
<a id='L4971' name='L4971'></a>&lt;a id='L4957' name='L4957'&gt;&lt;/a&gt;  %
<a id='L4972' name='L4972'></a>&lt;a id='L4958' name='L4958'&gt;&lt;/a&gt;  \commondummiesnofonts
<a id='L4973' name='L4973'></a>&lt;a id='L4959' name='L4959'&gt;&lt;/a&gt;  %
<a id='L4974' name='L4974'></a>&lt;a id='L4960' name='L4960'&gt;&lt;/a&gt;  % Don't no-op \tt, since it isn't a user-level command
<a id='L4975' name='L4975'></a>&lt;a id='L4961' name='L4961'&gt;&lt;/a&gt;  % and is used in the definitions of the active chars like &amp;lt;, &amp;gt;, |, etc.
<a id='L4976' name='L4976'></a>&lt;a id='L4962' name='L4962'&gt;&lt;/a&gt;  % Likewise with the other plain tex font commands.
<a id='L4977' name='L4977'></a>&lt;a id='L4963' name='L4963'&gt;&lt;/a&gt;  %\let\tt=\asis
<a id='L4978' name='L4978'></a>&lt;a id='L4964' name='L4964'&gt;&lt;/a&gt;  %
<a id='L4979' name='L4979'></a>&lt;a id='L4965' name='L4965'&gt;&lt;/a&gt;  \def\ { }%
<a id='L4980' name='L4980'></a>&lt;a id='L4966' name='L4966'&gt;&lt;/a&gt;  \def\@{@}%
<a id='L4981' name='L4981'></a>&lt;a id='L4967' name='L4967'&gt;&lt;/a&gt;  \def\_{\normalunderscore}%
<a id='L4982' name='L4982'></a>&lt;a id='L4968' name='L4968'&gt;&lt;/a&gt;  \def\-{}% @- shouldn't affect sorting
<a id='L4983' name='L4983'></a>&lt;a id='L4969' name='L4969'&gt;&lt;/a&gt;  %
<a id='L4984' name='L4984'></a>&lt;a id='L4970' name='L4970'&gt;&lt;/a&gt;  % Unfortunately, texindex is not prepared to handle braces in the
<a id='L4985' name='L4985'></a>&lt;a id='L4971' name='L4971'&gt;&lt;/a&gt;  % content at all.  So for index sorting, we map @{ and @} to strings
<a id='L4986' name='L4986'></a>&lt;a id='L4972' name='L4972'&gt;&lt;/a&gt;  % starting with |, since that ASCII character is between ASCII { and }.
<a id='L4987' name='L4987'></a>&lt;a id='L4973' name='L4973'&gt;&lt;/a&gt;  \def\{{|a}%
<a id='L4988' name='L4988'></a>&lt;a id='L4974' name='L4974'&gt;&lt;/a&gt;  \def\lbracechar{|a}%
<a id='L4989' name='L4989'></a>&lt;a id='L4975' name='L4975'&gt;&lt;/a&gt;  %
<a id='L4990' name='L4990'></a>&lt;a id='L4976' name='L4976'&gt;&lt;/a&gt;  \def\}{|b}%
<a id='L4991' name='L4991'></a>&lt;a id='L4977' name='L4977'&gt;&lt;/a&gt;  \def\rbracechar{|b}%
<a id='L4992' name='L4992'></a>&lt;a id='L4978' name='L4978'&gt;&lt;/a&gt;  %
<a id='L4993' name='L4993'></a>&lt;a id='L4979' name='L4979'&gt;&lt;/a&gt;  % Non-English letters.
<a id='L4994' name='L4994'></a>&lt;a id='L4980' name='L4980'&gt;&lt;/a&gt;  \def\AA{AA}%
<a id='L4995' name='L4995'></a>&lt;a id='L4981' name='L4981'&gt;&lt;/a&gt;  \def\AE{AE}%
<a id='L4996' name='L4996'></a>&lt;a id='L4982' name='L4982'&gt;&lt;/a&gt;  \def\DH{DZZ}%
<a id='L4997' name='L4997'></a>&lt;a id='L4983' name='L4983'&gt;&lt;/a&gt;  \def\L{L}%
<a id='L4998' name='L4998'></a>&lt;a id='L4984' name='L4984'&gt;&lt;/a&gt;  \def\OE{OE}%
<a id='L4999' name='L4999'></a>&lt;a id='L4985' name='L4985'&gt;&lt;/a&gt;  \def\O{O}%
<a id='L5000' name='L5000'></a>&lt;a id='L4986' name='L4986'&gt;&lt;/a&gt;  \def\TH{ZZZ}%
<a id='L5001' name='L5001'></a>&lt;a id='L4987' name='L4987'&gt;&lt;/a&gt;  \def\aa{aa}%
<a id='L5002' name='L5002'></a>&lt;a id='L4988' name='L4988'&gt;&lt;/a&gt;  \def\ae{ae}%
<a id='L5003' name='L5003'></a>&lt;a id='L4989' name='L4989'&gt;&lt;/a&gt;  \def\dh{dzz}%
<a id='L5004' name='L5004'></a>&lt;a id='L4990' name='L4990'&gt;&lt;/a&gt;  \def\exclamdown{!}%
<a id='L5005' name='L5005'></a>&lt;a id='L4991' name='L4991'&gt;&lt;/a&gt;  \def\l{l}%
<a id='L5006' name='L5006'></a>&lt;a id='L4992' name='L4992'&gt;&lt;/a&gt;  \def\oe{oe}%
<a id='L5007' name='L5007'></a>&lt;a id='L4993' name='L4993'&gt;&lt;/a&gt;  \def\ordf{a}%
<a id='L5008' name='L5008'></a>&lt;a id='L4994' name='L4994'&gt;&lt;/a&gt;  \def\ordm{o}%
<a id='L5009' name='L5009'></a>&lt;a id='L4995' name='L4995'&gt;&lt;/a&gt;  \def\o{o}%
<a id='L5010' name='L5010'></a>&lt;a id='L4996' name='L4996'&gt;&lt;/a&gt;  \def\questiondown{?}%
<a id='L5011' name='L5011'></a>&lt;a id='L4997' name='L4997'&gt;&lt;/a&gt;  \def\ss{ss}%
<a id='L5012' name='L5012'></a>&lt;a id='L4998' name='L4998'&gt;&lt;/a&gt;  \def\th{zzz}%
<a id='L5013' name='L5013'></a>&lt;a id='L4999' name='L4999'&gt;&lt;/a&gt;  %
<a id='L5014' name='L5014'></a>&lt;a id='L5000' name='L5000'&gt;&lt;/a&gt;  \def\LaTeX{LaTeX}%
<a id='L5015' name='L5015'></a>&lt;a id='L5001' name='L5001'&gt;&lt;/a&gt;  \def\TeX{TeX}%
<a id='L5016' name='L5016'></a>&lt;a id='L5002' name='L5002'&gt;&lt;/a&gt;  %
<a id='L5017' name='L5017'></a>&lt;a id='L5003' name='L5003'&gt;&lt;/a&gt;  % Assorted special characters.
<a id='L5018' name='L5018'></a>&lt;a id='L5004' name='L5004'&gt;&lt;/a&gt;  % (The following {} will end up in the sort string, but that's ok.)
<a id='L5019' name='L5019'></a>&lt;a id='L5005' name='L5005'&gt;&lt;/a&gt;  \def\arrow{-&amp;gt;}%
<a id='L5020' name='L5020'></a>&lt;a id='L5006' name='L5006'&gt;&lt;/a&gt;  \def\bullet{bullet}%
<a id='L5021' name='L5021'></a>&lt;a id='L5007' name='L5007'&gt;&lt;/a&gt;  \def\comma{,}%
<a id='L5022' name='L5022'></a>&lt;a id='L5008' name='L5008'&gt;&lt;/a&gt;  \def\copyright{copyright}%
<a id='L5023' name='L5023'></a>&lt;a id='L5009' name='L5009'&gt;&lt;/a&gt;  \def\dots{...}%
<a id='L5024' name='L5024'></a>&lt;a id='L5010' name='L5010'&gt;&lt;/a&gt;  \def\enddots{...}%
<a id='L5025' name='L5025'></a>&lt;a id='L5011' name='L5011'&gt;&lt;/a&gt;  \def\equiv{==}%
<a id='L5026' name='L5026'></a>&lt;a id='L5012' name='L5012'&gt;&lt;/a&gt;  \def\error{error}%
<a id='L5027' name='L5027'></a>&lt;a id='L5013' name='L5013'&gt;&lt;/a&gt;  \def\euro{euro}%
<a id='L5028' name='L5028'></a>&lt;a id='L5014' name='L5014'&gt;&lt;/a&gt;  \def\expansion{==&amp;gt;}%
<a id='L5029' name='L5029'></a>&lt;a id='L5015' name='L5015'&gt;&lt;/a&gt;  \def\geq{&amp;gt;=}%
<a id='L5030' name='L5030'></a>&lt;a id='L5016' name='L5016'&gt;&lt;/a&gt;  \def\guillemetleft{&amp;lt;&amp;lt;}%
<a id='L5031' name='L5031'></a>&lt;a id='L5017' name='L5017'&gt;&lt;/a&gt;  \def\guillemetright{&amp;gt;&amp;gt;}%
<a id='L5032' name='L5032'></a>&lt;a id='L5018' name='L5018'&gt;&lt;/a&gt;  \def\guilsinglleft{&amp;lt;}%
<a id='L5033' name='L5033'></a>&lt;a id='L5019' name='L5019'&gt;&lt;/a&gt;  \def\guilsinglright{&amp;gt;}%
<a id='L5034' name='L5034'></a>&lt;a id='L5020' name='L5020'&gt;&lt;/a&gt;  \def\leq{&amp;lt;=}%
<a id='L5035' name='L5035'></a>&lt;a id='L5021' name='L5021'&gt;&lt;/a&gt;  \def\minus{-}%
<a id='L5036' name='L5036'></a>&lt;a id='L5022' name='L5022'&gt;&lt;/a&gt;  \def\point{.}%
<a id='L5037' name='L5037'></a>&lt;a id='L5023' name='L5023'&gt;&lt;/a&gt;  \def\pounds{pounds}%
<a id='L5038' name='L5038'></a>&lt;a id='L5024' name='L5024'&gt;&lt;/a&gt;  \def\print{-|}%
<a id='L5039' name='L5039'></a>&lt;a id='L5025' name='L5025'&gt;&lt;/a&gt;  \def\quotedblbase{"}%
<a id='L5040' name='L5040'></a>&lt;a id='L5026' name='L5026'&gt;&lt;/a&gt;  \def\quotedblleft{"}%
<a id='L5041' name='L5041'></a>&lt;a id='L5027' name='L5027'&gt;&lt;/a&gt;  \def\quotedblright{"}%
<a id='L5042' name='L5042'></a>&lt;a id='L5028' name='L5028'&gt;&lt;/a&gt;  \def\quoteleft{`}%
<a id='L5043' name='L5043'></a>&lt;a id='L5029' name='L5029'&gt;&lt;/a&gt;  \def\quoteright{'}%
<a id='L5044' name='L5044'></a>&lt;a id='L5030' name='L5030'&gt;&lt;/a&gt;  \def\quotesinglbase{,}%
<a id='L5045' name='L5045'></a>&lt;a id='L5031' name='L5031'&gt;&lt;/a&gt;  \def\registeredsymbol{R}%
<a id='L5046' name='L5046'></a>&lt;a id='L5032' name='L5032'&gt;&lt;/a&gt;  \def\result{=&amp;gt;}%
<a id='L5047' name='L5047'></a>&lt;a id='L5033' name='L5033'&gt;&lt;/a&gt;  \def\textdegree{o}%
<a id='L5048' name='L5048'></a>&lt;a id='L5034' name='L5034'&gt;&lt;/a&gt;  %
<a id='L5049' name='L5049'></a>&lt;a id='L5035' name='L5035'&gt;&lt;/a&gt;  \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax
<a id='L5050' name='L5050'></a>&lt;a id='L5036' name='L5036'&gt;&lt;/a&gt;  \else \indexlquoteignore \fi
<a id='L5051' name='L5051'></a>&lt;a id='L5037' name='L5037'&gt;&lt;/a&gt;  %
<a id='L5052' name='L5052'></a>&lt;a id='L5038' name='L5038'&gt;&lt;/a&gt;  % We need to get rid of all macros, leaving only the arguments (if present).
<a id='L5053' name='L5053'></a>&lt;a id='L5039' name='L5039'&gt;&lt;/a&gt;  % Of course this is not nearly correct, but it is the best we can do for now.
<a id='L5054' name='L5054'></a>&lt;a id='L5040' name='L5040'&gt;&lt;/a&gt;  % makeinfo does not expand macros in the argument to @deffn, which ends up
<a id='L5055' name='L5055'></a>&lt;a id='L5041' name='L5041'&gt;&lt;/a&gt;  % writing an index entry, and texindex isn't prepared for an index sort entry
<a id='L5056' name='L5056'></a>&lt;a id='L5042' name='L5042'&gt;&lt;/a&gt;  % that starts with \.
<a id='L5057' name='L5057'></a>&lt;a id='L5043' name='L5043'&gt;&lt;/a&gt;  %
<a id='L5058' name='L5058'></a>&lt;a id='L5044' name='L5044'&gt;&lt;/a&gt;  % Since macro invocations are followed by braces, we can just redefine them
<a id='L5059' name='L5059'></a>&lt;a id='L5045' name='L5045'&gt;&lt;/a&gt;  % to take a single TeX argument.  The case of a macro invocation that
<a id='L5060' name='L5060'></a>&lt;a id='L5046' name='L5046'&gt;&lt;/a&gt;  % goes to end-of-line is not handled.
<a id='L5061' name='L5061'></a>&lt;a id='L5047' name='L5047'&gt;&lt;/a&gt;  %
<a id='L5062' name='L5062'></a>&lt;a id='L5048' name='L5048'&gt;&lt;/a&gt;  \macrolist
<a id='L5063' name='L5063'></a>&lt;a id='L5049' name='L5049'&gt;&lt;/a&gt;}
<a id='L5064' name='L5064'></a>&lt;a id='L5050' name='L5050'&gt;&lt;/a&gt;
<a id='L5065' name='L5065'></a>&lt;a id='L5051' name='L5051'&gt;&lt;/a&gt;% Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us
<a id='L5066' name='L5066'></a>&lt;a id='L5052' name='L5052'&gt;&lt;/a&gt;% ignore left quotes in the sort term.
<a id='L5067' name='L5067'></a>&lt;a id='L5053' name='L5053'&gt;&lt;/a&gt;{\catcode`\`=\active
<a id='L5068' name='L5068'></a>&lt;a id='L5054' name='L5054'&gt;&lt;/a&gt; \gdef\indexlquoteignore{\let`=\empty}}
<a id='L5069' name='L5069'></a>&lt;a id='L5055' name='L5055'&gt;&lt;/a&gt;
<a id='L5070' name='L5070'></a>&lt;a id='L5056' name='L5056'&gt;&lt;/a&gt;\let\indexbackslash=0  %overridden during \printindex.
<a id='L5071' name='L5071'></a>&lt;a id='L5057' name='L5057'&gt;&lt;/a&gt;\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
<a id='L5072' name='L5072'></a>&lt;a id='L5058' name='L5058'&gt;&lt;/a&gt;
<a id='L5073' name='L5073'></a>&lt;a id='L5059' name='L5059'&gt;&lt;/a&gt;% Most index entries go through here, but \dosubind is the general case.
<a id='L5074' name='L5074'></a>&lt;a id='L5060' name='L5060'&gt;&lt;/a&gt;% #1 is the index name, #2 is the entry text.
<a id='L5075' name='L5075'></a>&lt;a id='L5061' name='L5061'&gt;&lt;/a&gt;\def\doind#1#2{\dosubind{#1}{#2}{}}
<a id='L5076' name='L5076'></a>&lt;a id='L5062' name='L5062'&gt;&lt;/a&gt;
<a id='L5077' name='L5077'></a>&lt;a id='L5063' name='L5063'&gt;&lt;/a&gt;% Workhorse for all \fooindexes.
<a id='L5078' name='L5078'></a>&lt;a id='L5064' name='L5064'&gt;&lt;/a&gt;% #1 is name of index, #2 is stuff to put there, #3 is subentry --
<a id='L5079' name='L5079'></a>&lt;a id='L5065' name='L5065'&gt;&lt;/a&gt;% empty if called from \doind, as we usually are (the main exception
<a id='L5080' name='L5080'></a>&lt;a id='L5066' name='L5066'&gt;&lt;/a&gt;% is with most defuns, which call us directly).
<a id='L5081' name='L5081'></a>&lt;a id='L5067' name='L5067'&gt;&lt;/a&gt;%
<a id='L5082' name='L5082'></a>&lt;a id='L5068' name='L5068'&gt;&lt;/a&gt;\def\dosubind#1#2#3{%
<a id='L5083' name='L5083'></a>&lt;a id='L5069' name='L5069'&gt;&lt;/a&gt;  \iflinks
<a id='L5084' name='L5084'></a>&lt;a id='L5070' name='L5070'&gt;&lt;/a&gt;  {%
<a id='L5085' name='L5085'></a>&lt;a id='L5071' name='L5071'&gt;&lt;/a&gt;    % Store the main index entry text (including the third arg).
<a id='L5086' name='L5086'></a>&lt;a id='L5072' name='L5072'&gt;&lt;/a&gt;    \toks0 = {#2}%
<a id='L5087' name='L5087'></a>&lt;a id='L5073' name='L5073'&gt;&lt;/a&gt;    % If third arg is present, precede it with a space.
<a id='L5088' name='L5088'></a>&lt;a id='L5074' name='L5074'&gt;&lt;/a&gt;    \def\thirdarg{#3}%
<a id='L5089' name='L5089'></a>&lt;a id='L5075' name='L5075'&gt;&lt;/a&gt;    \ifx\thirdarg\empty \else
<a id='L5090' name='L5090'></a>&lt;a id='L5076' name='L5076'&gt;&lt;/a&gt;      \toks0 = \expandafter{\the\toks0 \space #3}%
<a id='L5091' name='L5091'></a>&lt;a id='L5077' name='L5077'&gt;&lt;/a&gt;    \fi
<a id='L5092' name='L5092'></a>&lt;a id='L5078' name='L5078'&gt;&lt;/a&gt;    %
<a id='L5093' name='L5093'></a>&lt;a id='L5079' name='L5079'&gt;&lt;/a&gt;    \edef\writeto{\csname#1indfile\endcsname}%
<a id='L5094' name='L5094'></a>&lt;a id='L5080' name='L5080'&gt;&lt;/a&gt;    %
<a id='L5095' name='L5095'></a>&lt;a id='L5081' name='L5081'&gt;&lt;/a&gt;    \safewhatsit\dosubindwrite
<a id='L5096' name='L5096'></a>&lt;a id='L5082' name='L5082'&gt;&lt;/a&gt;  }%
<a id='L5097' name='L5097'></a>&lt;a id='L5083' name='L5083'&gt;&lt;/a&gt;  \fi
<a id='L5098' name='L5098'></a>&lt;a id='L5084' name='L5084'&gt;&lt;/a&gt;}
<a id='L5099' name='L5099'></a>&lt;a id='L5085' name='L5085'&gt;&lt;/a&gt;
<a id='L5100' name='L5100'></a>&lt;a id='L5086' name='L5086'&gt;&lt;/a&gt;% Write the entry in \toks0 to the index file:
<a id='L5101' name='L5101'></a>&lt;a id='L5087' name='L5087'&gt;&lt;/a&gt;%
<a id='L5102' name='L5102'></a>&lt;a id='L5088' name='L5088'&gt;&lt;/a&gt;\def\dosubindwrite{%
<a id='L5103' name='L5103'></a>&lt;a id='L5089' name='L5089'&gt;&lt;/a&gt;  % Put the index entry in the margin if desired.
<a id='L5104' name='L5104'></a>&lt;a id='L5090' name='L5090'&gt;&lt;/a&gt;  \ifx\SETmarginindex\relax\else
<a id='L5105' name='L5105'></a>&lt;a id='L5091' name='L5091'&gt;&lt;/a&gt;    \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}%
<a id='L5106' name='L5106'></a>&lt;a id='L5092' name='L5092'&gt;&lt;/a&gt;  \fi
<a id='L5107' name='L5107'></a>&lt;a id='L5093' name='L5093'&gt;&lt;/a&gt;  %
<a id='L5108' name='L5108'></a>&lt;a id='L5094' name='L5094'&gt;&lt;/a&gt;  % Remember, we are within a group.
<a id='L5109' name='L5109'></a>&lt;a id='L5095' name='L5095'&gt;&lt;/a&gt;  \indexdummies % Must do this here, since \bf, etc expand at this stage
<a id='L5110' name='L5110'></a>&lt;a id='L5096' name='L5096'&gt;&lt;/a&gt;  \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now
<a id='L5111' name='L5111'></a>&lt;a id='L5097' name='L5097'&gt;&lt;/a&gt;      % so it will be output as is; and it will print as backslash.
<a id='L5112' name='L5112'></a>&lt;a id='L5098' name='L5098'&gt;&lt;/a&gt;  %
<a id='L5113' name='L5113'></a>&lt;a id='L5099' name='L5099'&gt;&lt;/a&gt;  % Process the index entry with all font commands turned off, to
<a id='L5114' name='L5114'></a>&lt;a id='L5100' name='L5100'&gt;&lt;/a&gt;  % get the string to sort by.
<a id='L5115' name='L5115'></a>&lt;a id='L5101' name='L5101'&gt;&lt;/a&gt;  {\indexnofonts
<a id='L5116' name='L5116'></a>&lt;a id='L5102' name='L5102'&gt;&lt;/a&gt;   \edef\temp{\the\toks0}% need full expansion
<a id='L5117' name='L5117'></a>&lt;a id='L5103' name='L5103'&gt;&lt;/a&gt;   \xdef\indexsorttmp{\temp}%
<a id='L5118' name='L5118'></a>&lt;a id='L5104' name='L5104'&gt;&lt;/a&gt;  }%
<a id='L5119' name='L5119'></a>&lt;a id='L5105' name='L5105'&gt;&lt;/a&gt;  %
<a id='L5120' name='L5120'></a>&lt;a id='L5106' name='L5106'&gt;&lt;/a&gt;  % Set up the complete index entry, with both the sort key and
<a id='L5121' name='L5121'></a>&lt;a id='L5107' name='L5107'&gt;&lt;/a&gt;  % the original text, including any font commands.  We write
<a id='L5122' name='L5122'></a>&lt;a id='L5108' name='L5108'&gt;&lt;/a&gt;  % three arguments to \entry to the .?? file (four in the
<a id='L5123' name='L5123'></a>&lt;a id='L5109' name='L5109'&gt;&lt;/a&gt;  % subentry case), texindex reduces to two when writing the .??s
<a id='L5124' name='L5124'></a>&lt;a id='L5110' name='L5110'&gt;&lt;/a&gt;  % sorted result.
<a id='L5125' name='L5125'></a>&lt;a id='L5111' name='L5111'&gt;&lt;/a&gt;  \edef\temp{%
<a id='L5126' name='L5126'></a>&lt;a id='L5112' name='L5112'&gt;&lt;/a&gt;    \write\writeto{%
<a id='L5127' name='L5127'></a>&lt;a id='L5113' name='L5113'&gt;&lt;/a&gt;      \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}%
<a id='L5128' name='L5128'></a>&lt;a id='L5114' name='L5114'&gt;&lt;/a&gt;  }%
<a id='L5129' name='L5129'></a>&lt;a id='L5115' name='L5115'&gt;&lt;/a&gt;  \temp
<a id='L5130' name='L5130'></a>&lt;a id='L5116' name='L5116'&gt;&lt;/a&gt;}
<a id='L5131' name='L5131'></a>&lt;a id='L5117' name='L5117'&gt;&lt;/a&gt;
<a id='L5132' name='L5132'></a>&lt;a id='L5118' name='L5118'&gt;&lt;/a&gt;% Take care of unwanted page breaks/skips around a whatsit:
<a id='L5133' name='L5133'></a>&lt;a id='L5119' name='L5119'&gt;&lt;/a&gt;%
<a id='L5134' name='L5134'></a>&lt;a id='L5120' name='L5120'&gt;&lt;/a&gt;% If a skip is the last thing on the list now, preserve it
<a id='L5135' name='L5135'></a>&lt;a id='L5121' name='L5121'&gt;&lt;/a&gt;% by backing up by \lastskip, doing the \write, then inserting
<a id='L5136' name='L5136'></a>&lt;a id='L5122' name='L5122'&gt;&lt;/a&gt;% the skip again.  Otherwise, the whatsit generated by the
<a id='L5137' name='L5137'></a>&lt;a id='L5123' name='L5123'&gt;&lt;/a&gt;% \write or \pdfdest will make \lastskip zero.  The result is that
<a id='L5138' name='L5138'></a>&lt;a id='L5124' name='L5124'&gt;&lt;/a&gt;% sequences like this:
<a id='L5139' name='L5139'></a>&lt;a id='L5125' name='L5125'&gt;&lt;/a&gt;% @end defun
<a id='L5140' name='L5140'></a>&lt;a id='L5126' name='L5126'&gt;&lt;/a&gt;% @tindex whatever
<a id='L5141' name='L5141'></a>&lt;a id='L5127' name='L5127'&gt;&lt;/a&gt;% @defun ...
<a id='L5142' name='L5142'></a>&lt;a id='L5128' name='L5128'&gt;&lt;/a&gt;% will have extra space inserted, because the \medbreak in the
<a id='L5143' name='L5143'></a>&lt;a id='L5129' name='L5129'&gt;&lt;/a&gt;% start of the @defun won't see the skip inserted by the @end of
<a id='L5144' name='L5144'></a>&lt;a id='L5130' name='L5130'&gt;&lt;/a&gt;% the previous defun.
<a id='L5145' name='L5145'></a>&lt;a id='L5131' name='L5131'&gt;&lt;/a&gt;%
<a id='L5146' name='L5146'></a>&lt;a id='L5132' name='L5132'&gt;&lt;/a&gt;% But don't do any of this if we're not in vertical mode.  We
<a id='L5147' name='L5147'></a>&lt;a id='L5133' name='L5133'&gt;&lt;/a&gt;% don't want to do a \vskip and prematurely end a paragraph.
<a id='L5148' name='L5148'></a>&lt;a id='L5134' name='L5134'&gt;&lt;/a&gt;%
<a id='L5149' name='L5149'></a>&lt;a id='L5135' name='L5135'&gt;&lt;/a&gt;% Avoid page breaks due to these extra skips, too.
<a id='L5150' name='L5150'></a>&lt;a id='L5136' name='L5136'&gt;&lt;/a&gt;%
<a id='L5151' name='L5151'></a>&lt;a id='L5137' name='L5137'&gt;&lt;/a&gt;% But wait, there is a catch there:
<a id='L5152' name='L5152'></a>&lt;a id='L5138' name='L5138'&gt;&lt;/a&gt;% We'll have to check whether \lastskip is zero skip.  \ifdim is not
<a id='L5153' name='L5153'></a>&lt;a id='L5139' name='L5139'&gt;&lt;/a&gt;% sufficient for this purpose, as it ignores stretch and shrink parts
<a id='L5154' name='L5154'></a>&lt;a id='L5140' name='L5140'&gt;&lt;/a&gt;% of the skip.  The only way seems to be to check the textual
<a id='L5155' name='L5155'></a>&lt;a id='L5141' name='L5141'&gt;&lt;/a&gt;% representation of the skip.
<a id='L5156' name='L5156'></a>&lt;a id='L5142' name='L5142'&gt;&lt;/a&gt;%
<a id='L5157' name='L5157'></a>&lt;a id='L5143' name='L5143'&gt;&lt;/a&gt;% The following is almost like \def\zeroskipmacro{0.0pt} except that
<a id='L5158' name='L5158'></a>&lt;a id='L5144' name='L5144'&gt;&lt;/a&gt;% the ``p'' and ``t'' characters have catcode \other, not 11 (letter).
<a id='L5159' name='L5159'></a>&lt;a id='L5145' name='L5145'&gt;&lt;/a&gt;%
<a id='L5160' name='L5160'></a>&lt;a id='L5146' name='L5146'&gt;&lt;/a&gt;\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname}
<a id='L5161' name='L5161'></a>&lt;a id='L5147' name='L5147'&gt;&lt;/a&gt;%
<a id='L5162' name='L5162'></a>&lt;a id='L5148' name='L5148'&gt;&lt;/a&gt;\newskip\whatsitskip
<a id='L5163' name='L5163'></a>&lt;a id='L5149' name='L5149'&gt;&lt;/a&gt;\newcount\whatsitpenalty
<a id='L5164' name='L5164'></a>&lt;a id='L5150' name='L5150'&gt;&lt;/a&gt;%
<a id='L5165' name='L5165'></a>&lt;a id='L5151' name='L5151'&gt;&lt;/a&gt;% ..., ready, GO:
<a id='L5166' name='L5166'></a>&lt;a id='L5152' name='L5152'&gt;&lt;/a&gt;%
<a id='L5167' name='L5167'></a>&lt;a id='L5153' name='L5153'&gt;&lt;/a&gt;\def\safewhatsit#1{\ifhmode
<a id='L5168' name='L5168'></a>&lt;a id='L5154' name='L5154'&gt;&lt;/a&gt;  #1%
<a id='L5169' name='L5169'></a>&lt;a id='L5155' name='L5155'&gt;&lt;/a&gt; \else
<a id='L5170' name='L5170'></a>&lt;a id='L5156' name='L5156'&gt;&lt;/a&gt;  % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
<a id='L5171' name='L5171'></a>&lt;a id='L5157' name='L5157'&gt;&lt;/a&gt;  \whatsitskip = \lastskip
<a id='L5172' name='L5172'></a>&lt;a id='L5158' name='L5158'&gt;&lt;/a&gt;  \edef\lastskipmacro{\the\lastskip}%
<a id='L5173' name='L5173'></a>&lt;a id='L5159' name='L5159'&gt;&lt;/a&gt;  \whatsitpenalty = \lastpenalty
<a id='L5174' name='L5174'></a>&lt;a id='L5160' name='L5160'&gt;&lt;/a&gt;  %
<a id='L5175' name='L5175'></a>&lt;a id='L5161' name='L5161'&gt;&lt;/a&gt;  % If \lastskip is nonzero, that means the last item was a
<a id='L5176' name='L5176'></a>&lt;a id='L5162' name='L5162'&gt;&lt;/a&gt;  % skip.  And since a skip is discardable, that means this
<a id='L5177' name='L5177'></a>&lt;a id='L5163' name='L5163'&gt;&lt;/a&gt;  % -\whatsitskip glue we're inserting is preceded by a
<a id='L5178' name='L5178'></a>&lt;a id='L5164' name='L5164'&gt;&lt;/a&gt;  % non-discardable item, therefore it is not a potential
<a id='L5179' name='L5179'></a>&lt;a id='L5165' name='L5165'&gt;&lt;/a&gt;  % breakpoint, therefore no \nobreak needed.
<a id='L5180' name='L5180'></a>&lt;a id='L5166' name='L5166'&gt;&lt;/a&gt;  \ifx\lastskipmacro\zeroskipmacro
<a id='L5181' name='L5181'></a>&lt;a id='L5167' name='L5167'&gt;&lt;/a&gt;  \else
<a id='L5182' name='L5182'></a>&lt;a id='L5168' name='L5168'&gt;&lt;/a&gt;    \vskip-\whatsitskip
<a id='L5183' name='L5183'></a>&lt;a id='L5169' name='L5169'&gt;&lt;/a&gt;  \fi
<a id='L5184' name='L5184'></a>&lt;a id='L5170' name='L5170'&gt;&lt;/a&gt;  %
<a id='L5185' name='L5185'></a>&lt;a id='L5171' name='L5171'&gt;&lt;/a&gt;  #1%
<a id='L5186' name='L5186'></a>&lt;a id='L5172' name='L5172'&gt;&lt;/a&gt;  %
<a id='L5187' name='L5187'></a>&lt;a id='L5173' name='L5173'&gt;&lt;/a&gt;  \ifx\lastskipmacro\zeroskipmacro
<a id='L5188' name='L5188'></a>&lt;a id='L5174' name='L5174'&gt;&lt;/a&gt;    % If \lastskip was zero, perhaps the last item was a penalty, and
<a id='L5189' name='L5189'></a>&lt;a id='L5175' name='L5175'&gt;&lt;/a&gt;    % perhaps it was &amp;gt;=10000, e.g., a \nobreak.  In that case, we want
<a id='L5190' name='L5190'></a>&lt;a id='L5176' name='L5176'&gt;&lt;/a&gt;    % to re-insert the same penalty (values &amp;gt;10000 are used for various
<a id='L5191' name='L5191'></a>&lt;a id='L5177' name='L5177'&gt;&lt;/a&gt;    % signals); since we just inserted a non-discardable item, any
<a id='L5192' name='L5192'></a>&lt;a id='L5178' name='L5178'&gt;&lt;/a&gt;    % following glue (such as a \parskip) would be a breakpoint.  For example:
<a id='L5193' name='L5193'></a>&lt;a id='L5179' name='L5179'&gt;&lt;/a&gt;    %   @deffn deffn-whatever
<a id='L5194' name='L5194'></a>&lt;a id='L5180' name='L5180'&gt;&lt;/a&gt;    %   @vindex index-whatever
<a id='L5195' name='L5195'></a>&lt;a id='L5181' name='L5181'&gt;&lt;/a&gt;    %   Description.
<a id='L5196' name='L5196'></a>&lt;a id='L5182' name='L5182'&gt;&lt;/a&gt;    % would allow a break between the index-whatever whatsit
<a id='L5197' name='L5197'></a>&lt;a id='L5183' name='L5183'&gt;&lt;/a&gt;    % and the "Description." paragraph.
<a id='L5198' name='L5198'></a>&lt;a id='L5184' name='L5184'&gt;&lt;/a&gt;    \ifnum\whatsitpenalty&amp;gt;9999 \penalty\whatsitpenalty \fi
<a id='L5199' name='L5199'></a>&lt;a id='L5185' name='L5185'&gt;&lt;/a&gt;  \else
<a id='L5200' name='L5200'></a>&lt;a id='L5186' name='L5186'&gt;&lt;/a&gt;    % On the other hand, if we had a nonzero \lastskip,
<a id='L5201' name='L5201'></a>&lt;a id='L5187' name='L5187'&gt;&lt;/a&gt;    % this make-up glue would be preceded by a non-discardable item
<a id='L5202' name='L5202'></a>&lt;a id='L5188' name='L5188'&gt;&lt;/a&gt;    % (the whatsit from the \write), so we must insert a \nobreak.
<a id='L5203' name='L5203'></a>&lt;a id='L5189' name='L5189'&gt;&lt;/a&gt;    \nobreak\vskip\whatsitskip
<a id='L5204' name='L5204'></a>&lt;a id='L5190' name='L5190'&gt;&lt;/a&gt;  \fi
<a id='L5205' name='L5205'></a>&lt;a id='L5191' name='L5191'&gt;&lt;/a&gt;\fi}
<a id='L5206' name='L5206'></a>&lt;a id='L5192' name='L5192'&gt;&lt;/a&gt;
<a id='L5207' name='L5207'></a>&lt;a id='L5193' name='L5193'&gt;&lt;/a&gt;% The index entry written in the file actually looks like
<a id='L5208' name='L5208'></a>&lt;a id='L5194' name='L5194'&gt;&lt;/a&gt;%  \entry {sortstring}{page}{topic}
<a id='L5209' name='L5209'></a>&lt;a id='L5195' name='L5195'&gt;&lt;/a&gt;% or
<a id='L5210' name='L5210'></a>&lt;a id='L5196' name='L5196'&gt;&lt;/a&gt;%  \entry {sortstring}{page}{topic}{subtopic}
<a id='L5211' name='L5211'></a>&lt;a id='L5197' name='L5197'&gt;&lt;/a&gt;% The texindex program reads in these files and writes files
<a id='L5212' name='L5212'></a>&lt;a id='L5198' name='L5198'&gt;&lt;/a&gt;% containing these kinds of lines:
<a id='L5213' name='L5213'></a>&lt;a id='L5199' name='L5199'&gt;&lt;/a&gt;%  \initial {c}
<a id='L5214' name='L5214'></a>&lt;a id='L5200' name='L5200'&gt;&lt;/a&gt;%     before the first topic whose initial is c
<a id='L5215' name='L5215'></a>&lt;a id='L5201' name='L5201'&gt;&lt;/a&gt;%  \entry {topic}{pagelist}
<a id='L5216' name='L5216'></a>&lt;a id='L5202' name='L5202'&gt;&lt;/a&gt;%     for a topic that is used without subtopics
<a id='L5217' name='L5217'></a>&lt;a id='L5203' name='L5203'&gt;&lt;/a&gt;%  \primary {topic}
<a id='L5218' name='L5218'></a>&lt;a id='L5204' name='L5204'&gt;&lt;/a&gt;%     for the beginning of a topic that is used with subtopics
<a id='L5219' name='L5219'></a>&lt;a id='L5205' name='L5205'&gt;&lt;/a&gt;%  \secondary {subtopic}{pagelist}
<a id='L5220' name='L5220'></a>&lt;a id='L5206' name='L5206'&gt;&lt;/a&gt;%     for each subtopic.
<a id='L5221' name='L5221'></a>&lt;a id='L5207' name='L5207'&gt;&lt;/a&gt;
<a id='L5222' name='L5222'></a>&lt;a id='L5208' name='L5208'&gt;&lt;/a&gt;% Define the user-accessible indexing commands
<a id='L5223' name='L5223'></a>&lt;a id='L5209' name='L5209'&gt;&lt;/a&gt;% @findex, @vindex, @kindex, @cindex.
<a id='L5224' name='L5224'></a>&lt;a id='L5210' name='L5210'&gt;&lt;/a&gt;
<a id='L5225' name='L5225'></a>&lt;a id='L5211' name='L5211'&gt;&lt;/a&gt;\def\findex {\fnindex}
<a id='L5226' name='L5226'></a>&lt;a id='L5212' name='L5212'&gt;&lt;/a&gt;\def\kindex {\kyindex}
<a id='L5227' name='L5227'></a>&lt;a id='L5213' name='L5213'&gt;&lt;/a&gt;\def\cindex {\cpindex}
<a id='L5228' name='L5228'></a>&lt;a id='L5214' name='L5214'&gt;&lt;/a&gt;\def\vindex {\vrindex}
<a id='L5229' name='L5229'></a>&lt;a id='L5215' name='L5215'&gt;&lt;/a&gt;\def\tindex {\tpindex}
<a id='L5230' name='L5230'></a>&lt;a id='L5216' name='L5216'&gt;&lt;/a&gt;\def\pindex {\pgindex}
<a id='L5231' name='L5231'></a>&lt;a id='L5217' name='L5217'&gt;&lt;/a&gt;
<a id='L5232' name='L5232'></a>&lt;a id='L5218' name='L5218'&gt;&lt;/a&gt;\def\cindexsub {\begingroup\obeylines\cindexsub}
<a id='L5233' name='L5233'></a>&lt;a id='L5219' name='L5219'&gt;&lt;/a&gt;{\obeylines %
<a id='L5234' name='L5234'></a>&lt;a id='L5220' name='L5220'&gt;&lt;/a&gt;\gdef\cindexsub "#1" #2^^M{\endgroup %
<a id='L5235' name='L5235'></a>&lt;a id='L5221' name='L5221'&gt;&lt;/a&gt;\dosubind{cp}{#2}{#1}}}
<a id='L5236' name='L5236'></a>&lt;a id='L5222' name='L5222'&gt;&lt;/a&gt;
<a id='L5237' name='L5237'></a>&lt;a id='L5223' name='L5223'&gt;&lt;/a&gt;% Define the macros used in formatting output of the sorted index material.
<a id='L5238' name='L5238'></a>&lt;a id='L5224' name='L5224'&gt;&lt;/a&gt;
<a id='L5239' name='L5239'></a>&lt;a id='L5225' name='L5225'&gt;&lt;/a&gt;% @printindex causes a particular index (the ??s file) to get printed.
<a id='L5240' name='L5240'></a>&lt;a id='L5226' name='L5226'&gt;&lt;/a&gt;% It does not print any chapter heading (usually an @unnumbered).
<a id='L5241' name='L5241'></a>&lt;a id='L5227' name='L5227'&gt;&lt;/a&gt;%
<a id='L5242' name='L5242'></a>&lt;a id='L5228' name='L5228'&gt;&lt;/a&gt;\parseargdef\printindex{\begingroup
<a id='L5243' name='L5243'></a>&lt;a id='L5229' name='L5229'&gt;&lt;/a&gt;  \dobreak \chapheadingskip{10000}%
<a id='L5244' name='L5244'></a>&lt;a id='L5230' name='L5230'&gt;&lt;/a&gt;  %
<a id='L5245' name='L5245'></a>&lt;a id='L5231' name='L5231'&gt;&lt;/a&gt;  \smallfonts \rm
<a id='L5246' name='L5246'></a>&lt;a id='L5232' name='L5232'&gt;&lt;/a&gt;  \tolerance = 9500
<a id='L5247' name='L5247'></a>&lt;a id='L5233' name='L5233'&gt;&lt;/a&gt;  \plainfrenchspacing
<a id='L5248' name='L5248'></a>&lt;a id='L5234' name='L5234'&gt;&lt;/a&gt;  \everypar = {}% don't want the \kern\-parindent from indentation suppression.
<a id='L5249' name='L5249'></a>&lt;a id='L5235' name='L5235'&gt;&lt;/a&gt;  %
<a id='L5250' name='L5250'></a>&lt;a id='L5236' name='L5236'&gt;&lt;/a&gt;  % See if the index file exists and is nonempty.
<a id='L5251' name='L5251'></a>&lt;a id='L5237' name='L5237'&gt;&lt;/a&gt;  % Change catcode of @ here so that if the index file contains
<a id='L5252' name='L5252'></a>&lt;a id='L5238' name='L5238'&gt;&lt;/a&gt;  % \initial {@}
<a id='L5253' name='L5253'></a>&lt;a id='L5239' name='L5239'&gt;&lt;/a&gt;  % as its first line, TeX doesn't complain about mismatched braces
<a id='L5254' name='L5254'></a>&lt;a id='L5240' name='L5240'&gt;&lt;/a&gt;  % (because it thinks @} is a control sequence).
<a id='L5255' name='L5255'></a>&lt;a id='L5241' name='L5241'&gt;&lt;/a&gt;  \catcode`\@ = 11
<a id='L5256' name='L5256'></a>&lt;a id='L5242' name='L5242'&gt;&lt;/a&gt;  \openin 1 \jobname.#1s
<a id='L5257' name='L5257'></a>&lt;a id='L5243' name='L5243'&gt;&lt;/a&gt;  \ifeof 1
<a id='L5258' name='L5258'></a>&lt;a id='L5244' name='L5244'&gt;&lt;/a&gt;    % \enddoublecolumns gets confused if there is no text in the index,
<a id='L5259' name='L5259'></a>&lt;a id='L5245' name='L5245'&gt;&lt;/a&gt;    % and it loses the chapter title and the aux file entries for the
<a id='L5260' name='L5260'></a>&lt;a id='L5246' name='L5246'&gt;&lt;/a&gt;    % index.  The easiest way to prevent this problem is to make sure
<a id='L5261' name='L5261'></a>&lt;a id='L5247' name='L5247'&gt;&lt;/a&gt;    % there is some text.
<a id='L5262' name='L5262'></a>&lt;a id='L5248' name='L5248'&gt;&lt;/a&gt;    \putwordIndexNonexistent
<a id='L5263' name='L5263'></a>&lt;a id='L5249' name='L5249'&gt;&lt;/a&gt;  \else
<a id='L5264' name='L5264'></a>&lt;a id='L5250' name='L5250'&gt;&lt;/a&gt;    %
<a id='L5265' name='L5265'></a>&lt;a id='L5251' name='L5251'&gt;&lt;/a&gt;    % If the index file exists but is empty, then \openin leaves \ifeof
<a id='L5266' name='L5266'></a>&lt;a id='L5252' name='L5252'&gt;&lt;/a&gt;    % false.  We have to make TeX try to read something from the file, so
<a id='L5267' name='L5267'></a>&lt;a id='L5253' name='L5253'&gt;&lt;/a&gt;    % it can discover if there is anything in it.
<a id='L5268' name='L5268'></a>&lt;a id='L5254' name='L5254'&gt;&lt;/a&gt;    \read 1 to \temp
<a id='L5269' name='L5269'></a>&lt;a id='L5255' name='L5255'&gt;&lt;/a&gt;    \ifeof 1
<a id='L5270' name='L5270'></a>&lt;a id='L5256' name='L5256'&gt;&lt;/a&gt;      \putwordIndexIsEmpty
<a id='L5271' name='L5271'></a>&lt;a id='L5257' name='L5257'&gt;&lt;/a&gt;    \else
<a id='L5272' name='L5272'></a>&lt;a id='L5258' name='L5258'&gt;&lt;/a&gt;      % Index files are almost Texinfo source, but we use \ as the escape
<a id='L5273' name='L5273'></a>&lt;a id='L5259' name='L5259'&gt;&lt;/a&gt;      % character.  It would be better to use @, but that's too big a change
<a id='L5274' name='L5274'></a>&lt;a id='L5260' name='L5260'&gt;&lt;/a&gt;      % to make right now.
<a id='L5275' name='L5275'></a>&lt;a id='L5261' name='L5261'&gt;&lt;/a&gt;      \def\indexbackslash{\backslashcurfont}%
<a id='L5276' name='L5276'></a>&lt;a id='L5262' name='L5262'&gt;&lt;/a&gt;      \catcode`\\ = 0
<a id='L5277' name='L5277'></a>&lt;a id='L5263' name='L5263'&gt;&lt;/a&gt;      \escapechar = `\\
<a id='L5278' name='L5278'></a>&lt;a id='L5264' name='L5264'&gt;&lt;/a&gt;      \begindoublecolumns
<a id='L5279' name='L5279'></a>&lt;a id='L5265' name='L5265'&gt;&lt;/a&gt;      \input \jobname.#1s
<a id='L5280' name='L5280'></a>&lt;a id='L5266' name='L5266'&gt;&lt;/a&gt;      \enddoublecolumns
<a id='L5281' name='L5281'></a>&lt;a id='L5267' name='L5267'&gt;&lt;/a&gt;    \fi
<a id='L5282' name='L5282'></a>&lt;a id='L5268' name='L5268'&gt;&lt;/a&gt;  \fi
<a id='L5283' name='L5283'></a>&lt;a id='L5269' name='L5269'&gt;&lt;/a&gt;  \closein 1
<a id='L5284' name='L5284'></a>&lt;a id='L5270' name='L5270'&gt;&lt;/a&gt;\endgroup}
<a id='L5285' name='L5285'></a>&lt;a id='L5271' name='L5271'&gt;&lt;/a&gt;
<a id='L5286' name='L5286'></a>&lt;a id='L5272' name='L5272'&gt;&lt;/a&gt;% These macros are used by the sorted index file itself.
<a id='L5287' name='L5287'></a>&lt;a id='L5273' name='L5273'&gt;&lt;/a&gt;% Change them to control the appearance of the index.
<a id='L5288' name='L5288'></a>&lt;a id='L5274' name='L5274'&gt;&lt;/a&gt;
<a id='L5289' name='L5289'></a>&lt;a id='L5275' name='L5275'&gt;&lt;/a&gt;\def\initial#1{{%
<a id='L5290' name='L5290'></a>&lt;a id='L5276' name='L5276'&gt;&lt;/a&gt;  % Some minor font changes for the special characters.
<a id='L5291' name='L5291'></a>&lt;a id='L5277' name='L5277'&gt;&lt;/a&gt;\ifjaTeX
<a id='L5292' name='L5292'></a>&lt;a id='L5278' name='L5278'&gt;&lt;/a&gt;  \let\tentt=\sectt \let\tt=\sectt \let\sf=\gt\sectt
<a id='L5293' name='L5293'></a>&lt;a id='L5279' name='L5279'&gt;&lt;/a&gt;\else
<a id='L5294' name='L5294'></a>&lt;a id='L5280' name='L5280'&gt;&lt;/a&gt;  \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
<a id='L5295' name='L5295'></a>&lt;a id='L5281' name='L5281'&gt;&lt;/a&gt;\fi
<a id='L5296' name='L5296'></a>&lt;a id='L5282' name='L5282'&gt;&lt;/a&gt;  %
<a id='L5297' name='L5297'></a>&lt;a id='L5283' name='L5283'&gt;&lt;/a&gt;  % Remove any glue we may have, we'll be inserting our own.
<a id='L5298' name='L5298'></a>&lt;a id='L5284' name='L5284'&gt;&lt;/a&gt;  \removelastskip
<a id='L5299' name='L5299'></a>&lt;a id='L5285' name='L5285'&gt;&lt;/a&gt;  %
<a id='L5300' name='L5300'></a>&lt;a id='L5286' name='L5286'&gt;&lt;/a&gt;  % We like breaks before the index initials, so insert a bonus.
<a id='L5301' name='L5301'></a>&lt;a id='L5287' name='L5287'&gt;&lt;/a&gt;  \nobreak
<a id='L5302' name='L5302'></a>&lt;a id='L5288' name='L5288'&gt;&lt;/a&gt;  \vskip 0pt plus 3\baselineskip
<a id='L5303' name='L5303'></a>&lt;a id='L5289' name='L5289'&gt;&lt;/a&gt;  \penalty 0
<a id='L5304' name='L5304'></a>&lt;a id='L5290' name='L5290'&gt;&lt;/a&gt;  \vskip 0pt plus -3\baselineskip
<a id='L5305' name='L5305'></a>&lt;a id='L5291' name='L5291'&gt;&lt;/a&gt;  %
<a id='L5306' name='L5306'></a>&lt;a id='L5292' name='L5292'&gt;&lt;/a&gt;  % Typeset the initial.  Making this add up to a whole number of
<a id='L5307' name='L5307'></a>&lt;a id='L5293' name='L5293'&gt;&lt;/a&gt;  % baselineskips increases the chance of the dots lining up from column
<a id='L5308' name='L5308'></a>&lt;a id='L5294' name='L5294'&gt;&lt;/a&gt;  % to column.  It still won't often be perfect, because of the stretch
<a id='L5309' name='L5309'></a>&lt;a id='L5295' name='L5295'&gt;&lt;/a&gt;  % we need before each entry, but it's better.
<a id='L5310' name='L5310'></a>&lt;a id='L5296' name='L5296'&gt;&lt;/a&gt;  %
<a id='L5311' name='L5311'></a>&lt;a id='L5297' name='L5297'&gt;&lt;/a&gt;  % No shrink because it confuses \balancecolumns.
<a id='L5312' name='L5312'></a>&lt;a id='L5298' name='L5298'&gt;&lt;/a&gt;  \vskip 1.67\baselineskip plus .5\baselineskip
<a id='L5313' name='L5313'></a>&lt;a id='L5299' name='L5299'&gt;&lt;/a&gt;  \ifjaTeX
<a id='L5314' name='L5314'></a>&lt;a id='L5300' name='L5300'&gt;&lt;/a&gt;  \leftline{\secgt\secbf #1}%
<a id='L5315' name='L5315'></a>&lt;a id='L5301' name='L5301'&gt;&lt;/a&gt;  \else
<a id='L5316' name='L5316'></a>&lt;a id='L5302' name='L5302'&gt;&lt;/a&gt;  \leftline{\secbf #1}%
<a id='L5317' name='L5317'></a>&lt;a id='L5303' name='L5303'&gt;&lt;/a&gt;  \fi
<a id='L5318' name='L5318'></a>&lt;a id='L5304' name='L5304'&gt;&lt;/a&gt;  % Do our best not to break after the initial.
<a id='L5319' name='L5319'></a>&lt;a id='L5305' name='L5305'&gt;&lt;/a&gt;  \nobreak
<a id='L5320' name='L5320'></a>&lt;a id='L5306' name='L5306'&gt;&lt;/a&gt;  \vskip .33\baselineskip plus .1\baselineskip
<a id='L5321' name='L5321'></a>&lt;a id='L5307' name='L5307'&gt;&lt;/a&gt;}}
<a id='L5322' name='L5322'></a>&lt;a id='L5308' name='L5308'&gt;&lt;/a&gt;
<a id='L5323' name='L5323'></a>&lt;a id='L5309' name='L5309'&gt;&lt;/a&gt;% \entry typesets a paragraph consisting of the text (#1), dot leaders, and
<a id='L5324' name='L5324'></a>&lt;a id='L5310' name='L5310'&gt;&lt;/a&gt;% then page number (#2) flushed to the right margin.  It is used for index
<a id='L5325' name='L5325'></a>&lt;a id='L5311' name='L5311'&gt;&lt;/a&gt;% and table of contents entries.  The paragraph is indented by \leftskip.
<a id='L5326' name='L5326'></a>&lt;a id='L5312' name='L5312'&gt;&lt;/a&gt;%
<a id='L5327' name='L5327'></a>&lt;a id='L5313' name='L5313'&gt;&lt;/a&gt;% A straightforward implementation would start like this:
<a id='L5328' name='L5328'></a>&lt;a id='L5314' name='L5314'&gt;&lt;/a&gt;%       \def\entry#1#2{...
<a id='L5329' name='L5329'></a>&lt;a id='L5315' name='L5315'&gt;&lt;/a&gt;% But this freezes the catcodes in the argument, and can cause problems to
<a id='L5330' name='L5330'></a>&lt;a id='L5316' name='L5316'&gt;&lt;/a&gt;% @code, which sets - active.  This problem was fixed by a kludge---
<a id='L5331' name='L5331'></a>&lt;a id='L5317' name='L5317'&gt;&lt;/a&gt;% ``-'' was active throughout whole index, but this isn't really right.
<a id='L5332' name='L5332'></a>&lt;a id='L5318' name='L5318'&gt;&lt;/a&gt;% The right solution is to prevent \entry from swallowing the whole text.
<a id='L5333' name='L5333'></a>&lt;a id='L5319' name='L5319'&gt;&lt;/a&gt;%                                 --kasal, 21nov03
<a id='L5334' name='L5334'></a>&lt;a id='L5320' name='L5320'&gt;&lt;/a&gt;\def\entry{%
<a id='L5335' name='L5335'></a>&lt;a id='L5321' name='L5321'&gt;&lt;/a&gt;  \begingroup
<a id='L5336' name='L5336'></a>&lt;a id='L5322' name='L5322'&gt;&lt;/a&gt;    %
<a id='L5337' name='L5337'></a>&lt;a id='L5323' name='L5323'&gt;&lt;/a&gt;    % Start a new paragraph if necessary, so our assignments below can't
<a id='L5338' name='L5338'></a>&lt;a id='L5324' name='L5324'&gt;&lt;/a&gt;    % affect previous text.
<a id='L5339' name='L5339'></a>&lt;a id='L5325' name='L5325'&gt;&lt;/a&gt;    \par
<a id='L5340' name='L5340'></a>&lt;a id='L5326' name='L5326'&gt;&lt;/a&gt;    %
<a id='L5341' name='L5341'></a>&lt;a id='L5327' name='L5327'&gt;&lt;/a&gt;    % Do not fill out the last line with white space.
<a id='L5342' name='L5342'></a>&lt;a id='L5328' name='L5328'&gt;&lt;/a&gt;    \parfillskip = 0in
<a id='L5343' name='L5343'></a>&lt;a id='L5329' name='L5329'&gt;&lt;/a&gt;    %
<a id='L5344' name='L5344'></a>&lt;a id='L5330' name='L5330'&gt;&lt;/a&gt;    % No extra space above this paragraph.
<a id='L5345' name='L5345'></a>&lt;a id='L5331' name='L5331'&gt;&lt;/a&gt;    \parskip = 0in
<a id='L5346' name='L5346'></a>&lt;a id='L5332' name='L5332'&gt;&lt;/a&gt;    %
<a id='L5347' name='L5347'></a>&lt;a id='L5333' name='L5333'&gt;&lt;/a&gt;    % Do not prefer a separate line ending with a hyphen to fewer lines.
<a id='L5348' name='L5348'></a>&lt;a id='L5334' name='L5334'&gt;&lt;/a&gt;    \finalhyphendemerits = 0
<a id='L5349' name='L5349'></a>&lt;a id='L5335' name='L5335'&gt;&lt;/a&gt;    %
<a id='L5350' name='L5350'></a>&lt;a id='L5336' name='L5336'&gt;&lt;/a&gt;    % \hangindent is only relevant when the entry text and page number
<a id='L5351' name='L5351'></a>&lt;a id='L5337' name='L5337'&gt;&lt;/a&gt;    % don't both fit on one line.  In that case, bob suggests starting the
<a id='L5352' name='L5352'></a>&lt;a id='L5338' name='L5338'&gt;&lt;/a&gt;    % dots pretty far over on the line.  Unfortunately, a large
<a id='L5353' name='L5353'></a>&lt;a id='L5339' name='L5339'&gt;&lt;/a&gt;    % indentation looks wrong when the entry text itself is broken across
<a id='L5354' name='L5354'></a>&lt;a id='L5340' name='L5340'&gt;&lt;/a&gt;    % lines.  So we use a small indentation and put up with long leaders.
<a id='L5355' name='L5355'></a>&lt;a id='L5341' name='L5341'&gt;&lt;/a&gt;    %
<a id='L5356' name='L5356'></a>&lt;a id='L5342' name='L5342'&gt;&lt;/a&gt;    % \hangafter is reset to 1 (which is the value we want) at the start
<a id='L5357' name='L5357'></a>&lt;a id='L5343' name='L5343'&gt;&lt;/a&gt;    % of each paragraph, so we need not do anything with that.
<a id='L5358' name='L5358'></a>&lt;a id='L5344' name='L5344'&gt;&lt;/a&gt;    \hangindent = 2em
<a id='L5359' name='L5359'></a>&lt;a id='L5345' name='L5345'&gt;&lt;/a&gt;    %
<a id='L5360' name='L5360'></a>&lt;a id='L5346' name='L5346'&gt;&lt;/a&gt;    % When the entry text needs to be broken, just fill out the first line
<a id='L5361' name='L5361'></a>&lt;a id='L5347' name='L5347'&gt;&lt;/a&gt;    % with blank space.
<a id='L5362' name='L5362'></a>&lt;a id='L5348' name='L5348'&gt;&lt;/a&gt;    \rightskip = 0pt plus1fil
<a id='L5363' name='L5363'></a>&lt;a id='L5349' name='L5349'&gt;&lt;/a&gt;    %
<a id='L5364' name='L5364'></a>&lt;a id='L5350' name='L5350'&gt;&lt;/a&gt;    % A bit of stretch before each entry for the benefit of balancing
<a id='L5365' name='L5365'></a>&lt;a id='L5351' name='L5351'&gt;&lt;/a&gt;    % columns.
<a id='L5366' name='L5366'></a>&lt;a id='L5352' name='L5352'&gt;&lt;/a&gt;    \vskip 0pt plus1pt
<a id='L5367' name='L5367'></a>&lt;a id='L5353' name='L5353'&gt;&lt;/a&gt;    %
<a id='L5368' name='L5368'></a>&lt;a id='L5354' name='L5354'&gt;&lt;/a&gt;    % When reading the text of entry, convert explicit line breaks
<a id='L5369' name='L5369'></a>&lt;a id='L5355' name='L5355'&gt;&lt;/a&gt;    % from @* into spaces.  The user might give these in long section
<a id='L5370' name='L5370'></a>&lt;a id='L5356' name='L5356'&gt;&lt;/a&gt;    % titles, for instance.
<a id='L5371' name='L5371'></a>&lt;a id='L5357' name='L5357'&gt;&lt;/a&gt;    \def\*{\unskip\space\ignorespaces}%
<a id='L5372' name='L5372'></a>&lt;a id='L5358' name='L5358'&gt;&lt;/a&gt;    \def\entrybreak{\hfil\break}%
<a id='L5373' name='L5373'></a>&lt;a id='L5359' name='L5359'&gt;&lt;/a&gt;    %
<a id='L5374' name='L5374'></a>&lt;a id='L5360' name='L5360'&gt;&lt;/a&gt;    % Swallow the left brace of the text (first parameter):
<a id='L5375' name='L5375'></a>&lt;a id='L5361' name='L5361'&gt;&lt;/a&gt;    \afterassignment\doentry
<a id='L5376' name='L5376'></a>&lt;a id='L5362' name='L5362'&gt;&lt;/a&gt;    \let\temp =
<a id='L5377' name='L5377'></a>&lt;a id='L5363' name='L5363'&gt;&lt;/a&gt;}
<a id='L5378' name='L5378'></a>&lt;a id='L5364' name='L5364'&gt;&lt;/a&gt;\def\entrybreak{\unskip\space\ignorespaces}%
<a id='L5379' name='L5379'></a>&lt;a id='L5365' name='L5365'&gt;&lt;/a&gt;\def\doentry{%
<a id='L5380' name='L5380'></a>&lt;a id='L5366' name='L5366'&gt;&lt;/a&gt;    \bgroup % Instead of the swallowed brace.
<a id='L5381' name='L5381'></a>&lt;a id='L5367' name='L5367'&gt;&lt;/a&gt;      \noindent
<a id='L5382' name='L5382'></a>&lt;a id='L5368' name='L5368'&gt;&lt;/a&gt;      \aftergroup\finishentry
<a id='L5383' name='L5383'></a>&lt;a id='L5369' name='L5369'&gt;&lt;/a&gt;      % And now comes the text of the entry.
<a id='L5384' name='L5384'></a>&lt;a id='L5370' name='L5370'&gt;&lt;/a&gt;}
<a id='L5385' name='L5385'></a>&lt;a id='L5371' name='L5371'&gt;&lt;/a&gt;\def\finishentry#1{%
<a id='L5386' name='L5386'></a>&lt;a id='L5372' name='L5372'&gt;&lt;/a&gt;    % #1 is the page number.
<a id='L5387' name='L5387'></a>&lt;a id='L5373' name='L5373'&gt;&lt;/a&gt;    %
<a id='L5388' name='L5388'></a>&lt;a id='L5374' name='L5374'&gt;&lt;/a&gt;    % The following is kludged to not output a line of dots in the index if
<a id='L5389' name='L5389'></a>&lt;a id='L5375' name='L5375'&gt;&lt;/a&gt;    % there are no page numbers.  The next person who breaks this will be
<a id='L5390' name='L5390'></a>&lt;a id='L5376' name='L5376'&gt;&lt;/a&gt;    % cursed by a Unix daemon.
<a id='L5391' name='L5391'></a>&lt;a id='L5377' name='L5377'&gt;&lt;/a&gt;    \setbox\boxA = \hbox{#1}%
<a id='L5392' name='L5392'></a>&lt;a id='L5378' name='L5378'&gt;&lt;/a&gt;    \ifdim\wd\boxA = 0pt
<a id='L5393' name='L5393'></a>&lt;a id='L5379' name='L5379'&gt;&lt;/a&gt;      \ %
<a id='L5394' name='L5394'></a>&lt;a id='L5380' name='L5380'&gt;&lt;/a&gt;    \else
<a id='L5395' name='L5395'></a>&lt;a id='L5381' name='L5381'&gt;&lt;/a&gt;      %
<a id='L5396' name='L5396'></a>&lt;a id='L5382' name='L5382'&gt;&lt;/a&gt;      % If we must, put the page number on a line of its own, and fill out
<a id='L5397' name='L5397'></a>&lt;a id='L5383' name='L5383'&gt;&lt;/a&gt;      % this line with blank space.  (The \hfil is overwhelmed with the
<a id='L5398' name='L5398'></a>&lt;a id='L5384' name='L5384'&gt;&lt;/a&gt;      % fill leaders glue in \indexdotfill if the page number does fit.)
<a id='L5399' name='L5399'></a>&lt;a id='L5385' name='L5385'&gt;&lt;/a&gt;      \hfil\penalty50
<a id='L5400' name='L5400'></a>&lt;a id='L5386' name='L5386'&gt;&lt;/a&gt;      \null\nobreak\indexdotfill % Have leaders before the page number.
<a id='L5401' name='L5401'></a>&lt;a id='L5387' name='L5387'&gt;&lt;/a&gt;      %
<a id='L5402' name='L5402'></a>&lt;a id='L5388' name='L5388'&gt;&lt;/a&gt;      % The `\ ' here is removed by the implicit \unskip that TeX does as
<a id='L5403' name='L5403'></a>&lt;a id='L5389' name='L5389'&gt;&lt;/a&gt;      % part of (the primitive) \par.  Without it, a spurious underfull
<a id='L5404' name='L5404'></a>&lt;a id='L5390' name='L5390'&gt;&lt;/a&gt;      % \hbox ensues.
<a id='L5405' name='L5405'></a>&lt;a id='L5391' name='L5391'&gt;&lt;/a&gt;      \ifpdf
<a id='L5406' name='L5406'></a>&lt;a id='L5392' name='L5392'&gt;&lt;/a&gt;        \pdfgettoks#1.%
<a id='L5407' name='L5407'></a>&lt;a id='L5393' name='L5393'&gt;&lt;/a&gt;        \ \the\toksA
<a id='L5408' name='L5408'></a>&lt;a id='L5394' name='L5394'&gt;&lt;/a&gt;      \else
<a id='L5409' name='L5409'></a>&lt;a id='L5395' name='L5395'&gt;&lt;/a&gt;        \ #1%
<a id='L5410' name='L5410'></a>&lt;a id='L5396' name='L5396'&gt;&lt;/a&gt;      \fi
<a id='L5411' name='L5411'></a>&lt;a id='L5397' name='L5397'&gt;&lt;/a&gt;    \fi
<a id='L5412' name='L5412'></a>&lt;a id='L5398' name='L5398'&gt;&lt;/a&gt;    \par
<a id='L5413' name='L5413'></a>&lt;a id='L5399' name='L5399'&gt;&lt;/a&gt;  \endgroup
<a id='L5414' name='L5414'></a>&lt;a id='L5400' name='L5400'&gt;&lt;/a&gt;}
<a id='L5415' name='L5415'></a>&lt;a id='L5401' name='L5401'&gt;&lt;/a&gt;
<a id='L5416' name='L5416'></a>&lt;a id='L5402' name='L5402'&gt;&lt;/a&gt;% Like plain.tex's \dotfill, except uses up at least 1 em.
<a id='L5417' name='L5417'></a>&lt;a id='L5403' name='L5403'&gt;&lt;/a&gt;\def\indexdotfill{\cleaders
<a id='L5418' name='L5418'></a>&lt;a id='L5404' name='L5404'&gt;&lt;/a&gt;  \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}
<a id='L5419' name='L5419'></a>&lt;a id='L5405' name='L5405'&gt;&lt;/a&gt;
<a id='L5420' name='L5420'></a>&lt;a id='L5406' name='L5406'&gt;&lt;/a&gt;\def\primary #1{\line{#1\hfil}}
<a id='L5421' name='L5421'></a>&lt;a id='L5407' name='L5407'&gt;&lt;/a&gt;
<a id='L5422' name='L5422'></a>&lt;a id='L5408' name='L5408'&gt;&lt;/a&gt;\newskip\secondaryindent \secondaryindent=0.5cm
<a id='L5423' name='L5423'></a>&lt;a id='L5409' name='L5409'&gt;&lt;/a&gt;\def\secondary#1#2{{%
<a id='L5424' name='L5424'></a>&lt;a id='L5410' name='L5410'&gt;&lt;/a&gt;  \parfillskip=0in
<a id='L5425' name='L5425'></a>&lt;a id='L5411' name='L5411'&gt;&lt;/a&gt;  \parskip=0in
<a id='L5426' name='L5426'></a>&lt;a id='L5412' name='L5412'&gt;&lt;/a&gt;  \hangindent=1in
<a id='L5427' name='L5427'></a>&lt;a id='L5413' name='L5413'&gt;&lt;/a&gt;  \hangafter=1
<a id='L5428' name='L5428'></a>&lt;a id='L5414' name='L5414'&gt;&lt;/a&gt;  \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill
<a id='L5429' name='L5429'></a>&lt;a id='L5415' name='L5415'&gt;&lt;/a&gt;  \ifpdf
<a id='L5430' name='L5430'></a>&lt;a id='L5416' name='L5416'&gt;&lt;/a&gt;    \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
<a id='L5431' name='L5431'></a>&lt;a id='L5417' name='L5417'&gt;&lt;/a&gt;  \else
<a id='L5432' name='L5432'></a>&lt;a id='L5418' name='L5418'&gt;&lt;/a&gt;    #2
<a id='L5433' name='L5433'></a>&lt;a id='L5419' name='L5419'&gt;&lt;/a&gt;  \fi
<a id='L5434' name='L5434'></a>&lt;a id='L5420' name='L5420'&gt;&lt;/a&gt;  \par
<a id='L5435' name='L5435'></a>&lt;a id='L5421' name='L5421'&gt;&lt;/a&gt;}}
<a id='L5436' name='L5436'></a>&lt;a id='L5422' name='L5422'&gt;&lt;/a&gt;
<a id='L5437' name='L5437'></a>&lt;a id='L5423' name='L5423'&gt;&lt;/a&gt;% Define two-column mode, which we use to typeset indexes.
<a id='L5438' name='L5438'></a>&lt;a id='L5424' name='L5424'&gt;&lt;/a&gt;% Adapted from the TeXbook, page 416, which is to say,
<a id='L5439' name='L5439'></a>&lt;a id='L5425' name='L5425'&gt;&lt;/a&gt;% the manmac.tex format used to print the TeXbook itself.
<a id='L5440' name='L5440'></a>&lt;a id='L5426' name='L5426'&gt;&lt;/a&gt;\catcode`\@=11
<a id='L5441' name='L5441'></a>&lt;a id='L5427' name='L5427'&gt;&lt;/a&gt;
<a id='L5442' name='L5442'></a>&lt;a id='L5428' name='L5428'&gt;&lt;/a&gt;\newbox\partialpage
<a id='L5443' name='L5443'></a>&lt;a id='L5429' name='L5429'&gt;&lt;/a&gt;\newdimen\doublecolumnhsize
<a id='L5444' name='L5444'></a>&lt;a id='L5430' name='L5430'&gt;&lt;/a&gt;
<a id='L5445' name='L5445'></a>&lt;a id='L5431' name='L5431'&gt;&lt;/a&gt;\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
<a id='L5446' name='L5446'></a>&lt;a id='L5432' name='L5432'&gt;&lt;/a&gt;  % Grab any single-column material above us.
<a id='L5447' name='L5447'></a>&lt;a id='L5433' name='L5433'&gt;&lt;/a&gt;  \output = {%
<a id='L5448' name='L5448'></a>&lt;a id='L5434' name='L5434'&gt;&lt;/a&gt;    %
<a id='L5449' name='L5449'></a>&lt;a id='L5435' name='L5435'&gt;&lt;/a&gt;    % Here is a possibility not foreseen in manmac: if we accumulate a
<a id='L5450' name='L5450'></a>&lt;a id='L5436' name='L5436'&gt;&lt;/a&gt;    % whole lot of material, we might end up calling this \output
<a id='L5451' name='L5451'></a>&lt;a id='L5437' name='L5437'&gt;&lt;/a&gt;    % routine twice in a row (see the doublecol-lose test, which is
<a id='L5452' name='L5452'></a>&lt;a id='L5438' name='L5438'&gt;&lt;/a&gt;    % essentially a couple of indexes with @setchapternewpage off).  In
<a id='L5453' name='L5453'></a>&lt;a id='L5439' name='L5439'&gt;&lt;/a&gt;    % that case we just ship out what is in \partialpage with the normal
<a id='L5454' name='L5454'></a>&lt;a id='L5440' name='L5440'&gt;&lt;/a&gt;    % output routine.  Generally, \partialpage will be empty when this
<a id='L5455' name='L5455'></a>&lt;a id='L5441' name='L5441'&gt;&lt;/a&gt;    % runs and this will be a no-op.  See the indexspread.tex test case.
<a id='L5456' name='L5456'></a>&lt;a id='L5442' name='L5442'&gt;&lt;/a&gt;    \ifvoid\partialpage \else
<a id='L5457' name='L5457'></a>&lt;a id='L5443' name='L5443'&gt;&lt;/a&gt;      \onepageout{\pagecontents\partialpage}%
<a id='L5458' name='L5458'></a>&lt;a id='L5444' name='L5444'&gt;&lt;/a&gt;    \fi
<a id='L5459' name='L5459'></a>&lt;a id='L5445' name='L5445'&gt;&lt;/a&gt;    %
<a id='L5460' name='L5460'></a>&lt;a id='L5446' name='L5446'&gt;&lt;/a&gt;    \global\setbox\partialpage = \vbox{%
<a id='L5461' name='L5461'></a>&lt;a id='L5447' name='L5447'&gt;&lt;/a&gt;      % Unvbox the main output page.
<a id='L5462' name='L5462'></a>&lt;a id='L5448' name='L5448'&gt;&lt;/a&gt;      \unvbox\PAGE
<a id='L5463' name='L5463'></a>&lt;a id='L5449' name='L5449'&gt;&lt;/a&gt;      \kern-\topskip \kern\baselineskip
<a id='L5464' name='L5464'></a>&lt;a id='L5450' name='L5450'&gt;&lt;/a&gt;    }%
<a id='L5465' name='L5465'></a>&lt;a id='L5451' name='L5451'&gt;&lt;/a&gt;  }%
<a id='L5466' name='L5466'></a>&lt;a id='L5452' name='L5452'&gt;&lt;/a&gt;  \eject % run that output routine to set \partialpage
<a id='L5467' name='L5467'></a>&lt;a id='L5453' name='L5453'&gt;&lt;/a&gt;  %
<a id='L5468' name='L5468'></a>&lt;a id='L5454' name='L5454'&gt;&lt;/a&gt;  % Use the double-column output routine for subsequent pages.
<a id='L5469' name='L5469'></a>&lt;a id='L5455' name='L5455'&gt;&lt;/a&gt;  \output = {\doublecolumnout}%
<a id='L5470' name='L5470'></a>&lt;a id='L5456' name='L5456'&gt;&lt;/a&gt;  %
<a id='L5471' name='L5471'></a>&lt;a id='L5457' name='L5457'&gt;&lt;/a&gt;  % Change the page size parameters.  We could do this once outside this
<a id='L5472' name='L5472'></a>&lt;a id='L5458' name='L5458'&gt;&lt;/a&gt;  % routine, in each of @smallbook, @afourpaper, and the default 8.5x11
<a id='L5473' name='L5473'></a>&lt;a id='L5459' name='L5459'&gt;&lt;/a&gt;  % format, but then we repeat the same computation.  Repeating a couple
<a id='L5474' name='L5474'></a>&lt;a id='L5460' name='L5460'&gt;&lt;/a&gt;  % of assignments once per index is clearly meaningless for the
<a id='L5475' name='L5475'></a>&lt;a id='L5461' name='L5461'&gt;&lt;/a&gt;  % execution time, so we may as well do it in one place.
<a id='L5476' name='L5476'></a>&lt;a id='L5462' name='L5462'&gt;&lt;/a&gt;  %
<a id='L5477' name='L5477'></a>&lt;a id='L5463' name='L5463'&gt;&lt;/a&gt;  % First we halve the line length, less a little for the gutter between
<a id='L5478' name='L5478'></a>&lt;a id='L5464' name='L5464'&gt;&lt;/a&gt;  % the columns.  We compute the gutter based on the line length, so it
<a id='L5479' name='L5479'></a>&lt;a id='L5465' name='L5465'&gt;&lt;/a&gt;  % changes automatically with the paper format.  The magic constant
<a id='L5480' name='L5480'></a>&lt;a id='L5466' name='L5466'&gt;&lt;/a&gt;  % below is chosen so that the gutter has the same value (well, +-&amp;lt;1pt)
<a id='L5481' name='L5481'></a>&lt;a id='L5467' name='L5467'&gt;&lt;/a&gt;  % as it did when we hard-coded it.
<a id='L5482' name='L5482'></a>&lt;a id='L5468' name='L5468'&gt;&lt;/a&gt;  %
<a id='L5483' name='L5483'></a>&lt;a id='L5469' name='L5469'&gt;&lt;/a&gt;  % We put the result in a separate register, \doublecolumhsize, so we
<a id='L5484' name='L5484'></a>&lt;a id='L5470' name='L5470'&gt;&lt;/a&gt;  % can restore it in \pagesofar, after \hsize itself has (potentially)
<a id='L5485' name='L5485'></a>&lt;a id='L5471' name='L5471'&gt;&lt;/a&gt;  % been clobbered.
<a id='L5486' name='L5486'></a>&lt;a id='L5472' name='L5472'&gt;&lt;/a&gt;  %
<a id='L5487' name='L5487'></a>&lt;a id='L5473' name='L5473'&gt;&lt;/a&gt;  \doublecolumnhsize = \hsize
<a id='L5488' name='L5488'></a>&lt;a id='L5474' name='L5474'&gt;&lt;/a&gt;    \advance\doublecolumnhsize by -.04154\hsize
<a id='L5489' name='L5489'></a>&lt;a id='L5475' name='L5475'&gt;&lt;/a&gt;    \divide\doublecolumnhsize by 2
<a id='L5490' name='L5490'></a>&lt;a id='L5476' name='L5476'&gt;&lt;/a&gt;  \hsize = \doublecolumnhsize
<a id='L5491' name='L5491'></a>&lt;a id='L5477' name='L5477'&gt;&lt;/a&gt;  %
<a id='L5492' name='L5492'></a>&lt;a id='L5478' name='L5478'&gt;&lt;/a&gt;  % Double the \vsize as well.  (We don't need a separate register here,
<a id='L5493' name='L5493'></a>&lt;a id='L5479' name='L5479'&gt;&lt;/a&gt;  % since nobody clobbers \vsize.)
<a id='L5494' name='L5494'></a>&lt;a id='L5480' name='L5480'&gt;&lt;/a&gt;  \vsize = 2\vsize
<a id='L5495' name='L5495'></a>&lt;a id='L5481' name='L5481'&gt;&lt;/a&gt;}
<a id='L5496' name='L5496'></a>&lt;a id='L5482' name='L5482'&gt;&lt;/a&gt;
<a id='L5497' name='L5497'></a>&lt;a id='L5483' name='L5483'&gt;&lt;/a&gt;% The double-column output routine for all double-column pages except
<a id='L5498' name='L5498'></a>&lt;a id='L5484' name='L5484'&gt;&lt;/a&gt;% the last.
<a id='L5499' name='L5499'></a>&lt;a id='L5485' name='L5485'&gt;&lt;/a&gt;%
<a id='L5500' name='L5500'></a>&lt;a id='L5486' name='L5486'&gt;&lt;/a&gt;\def\doublecolumnout{%
<a id='L5501' name='L5501'></a>&lt;a id='L5487' name='L5487'&gt;&lt;/a&gt;  \splittopskip=\topskip \splitmaxdepth=\maxdepth
<a id='L5502' name='L5502'></a>&lt;a id='L5488' name='L5488'&gt;&lt;/a&gt;  % Get the available space for the double columns -- the normal
<a id='L5503' name='L5503'></a>&lt;a id='L5489' name='L5489'&gt;&lt;/a&gt;  % (undoubled) page height minus any material left over from the
<a id='L5504' name='L5504'></a>&lt;a id='L5490' name='L5490'&gt;&lt;/a&gt;  % previous page.
<a id='L5505' name='L5505'></a>&lt;a id='L5491' name='L5491'&gt;&lt;/a&gt;  \dimen@ = \vsize
<a id='L5506' name='L5506'></a>&lt;a id='L5492' name='L5492'&gt;&lt;/a&gt;  \divide\dimen@ by 2
<a id='L5507' name='L5507'></a>&lt;a id='L5493' name='L5493'&gt;&lt;/a&gt;  \advance\dimen@ by -\ht\partialpage
<a id='L5508' name='L5508'></a>&lt;a id='L5494' name='L5494'&gt;&lt;/a&gt;  %
<a id='L5509' name='L5509'></a>&lt;a id='L5495' name='L5495'&gt;&lt;/a&gt;  % box0 will be the left-hand column, box2 the right.
<a id='L5510' name='L5510'></a>&lt;a id='L5496' name='L5496'&gt;&lt;/a&gt;  \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
<a id='L5511' name='L5511'></a>&lt;a id='L5497' name='L5497'&gt;&lt;/a&gt;  \onepageout\pagesofar
<a id='L5512' name='L5512'></a>&lt;a id='L5498' name='L5498'&gt;&lt;/a&gt;  \unvbox255
<a id='L5513' name='L5513'></a>&lt;a id='L5499' name='L5499'&gt;&lt;/a&gt;  \penalty\outputpenalty
<a id='L5514' name='L5514'></a>&lt;a id='L5500' name='L5500'&gt;&lt;/a&gt;}
<a id='L5515' name='L5515'></a>&lt;a id='L5501' name='L5501'&gt;&lt;/a&gt;%
<a id='L5516' name='L5516'></a>&lt;a id='L5502' name='L5502'&gt;&lt;/a&gt;% Re-output the contents of the output page -- any previous material,
<a id='L5517' name='L5517'></a>&lt;a id='L5503' name='L5503'&gt;&lt;/a&gt;% followed by the two boxes we just split, in box0 and box2.
<a id='L5518' name='L5518'></a>&lt;a id='L5504' name='L5504'&gt;&lt;/a&gt;\def\pagesofar{%
<a id='L5519' name='L5519'></a>&lt;a id='L5505' name='L5505'&gt;&lt;/a&gt;  \unvbox\partialpage
<a id='L5520' name='L5520'></a>&lt;a id='L5506' name='L5506'&gt;&lt;/a&gt;  %
<a id='L5521' name='L5521'></a>&lt;a id='L5507' name='L5507'&gt;&lt;/a&gt;  \hsize = \doublecolumnhsize
<a id='L5522' name='L5522'></a>&lt;a id='L5508' name='L5508'&gt;&lt;/a&gt;  \wd0=\hsize \wd2=\hsize
<a id='L5523' name='L5523'></a>&lt;a id='L5509' name='L5509'&gt;&lt;/a&gt;  \hbox to\pagewidth{\box0\hfil\box2}%
<a id='L5524' name='L5524'></a>&lt;a id='L5510' name='L5510'&gt;&lt;/a&gt;}
<a id='L5525' name='L5525'></a>&lt;a id='L5511' name='L5511'&gt;&lt;/a&gt;%
<a id='L5526' name='L5526'></a>&lt;a id='L5512' name='L5512'&gt;&lt;/a&gt;% All done with double columns.
<a id='L5527' name='L5527'></a>&lt;a id='L5513' name='L5513'&gt;&lt;/a&gt;\def\enddoublecolumns{%
<a id='L5528' name='L5528'></a>&lt;a id='L5514' name='L5514'&gt;&lt;/a&gt;  % The following penalty ensures that the page builder is exercised
<a id='L5529' name='L5529'></a>&lt;a id='L5515' name='L5515'&gt;&lt;/a&gt;  % _before_ we change the output routine.  This is necessary in the
<a id='L5530' name='L5530'></a>&lt;a id='L5516' name='L5516'&gt;&lt;/a&gt;  % following situation:
<a id='L5531' name='L5531'></a>&lt;a id='L5517' name='L5517'&gt;&lt;/a&gt;  %
<a id='L5532' name='L5532'></a>&lt;a id='L5518' name='L5518'&gt;&lt;/a&gt;  % The last section of the index consists only of a single entry.
<a id='L5533' name='L5533'></a>&lt;a id='L5519' name='L5519'&gt;&lt;/a&gt;  % Before this section, \pagetotal is less than \pagegoal, so no
<a id='L5534' name='L5534'></a>&lt;a id='L5520' name='L5520'&gt;&lt;/a&gt;  % break occurs before the last section starts.  However, the last
<a id='L5535' name='L5535'></a>&lt;a id='L5521' name='L5521'&gt;&lt;/a&gt;  % section, consisting of \initial and the single \entry, does not
<a id='L5536' name='L5536'></a>&lt;a id='L5522' name='L5522'&gt;&lt;/a&gt;  % fit on the page and has to be broken off.  Without the following
<a id='L5537' name='L5537'></a>&lt;a id='L5523' name='L5523'&gt;&lt;/a&gt;  % penalty the page builder will not be exercised until \eject
<a id='L5538' name='L5538'></a>&lt;a id='L5524' name='L5524'&gt;&lt;/a&gt;  % below, and by that time we'll already have changed the output
<a id='L5539' name='L5539'></a>&lt;a id='L5525' name='L5525'&gt;&lt;/a&gt;  % routine to the \balancecolumns version, so the next-to-last
<a id='L5540' name='L5540'></a>&lt;a id='L5526' name='L5526'&gt;&lt;/a&gt;  % double-column page will be processed with \balancecolumns, which
<a id='L5541' name='L5541'></a>&lt;a id='L5527' name='L5527'&gt;&lt;/a&gt;  % is wrong:  The two columns will go to the main vertical list, with
<a id='L5542' name='L5542'></a>&lt;a id='L5528' name='L5528'&gt;&lt;/a&gt;  % the broken-off section in the recent contributions.  As soon as
<a id='L5543' name='L5543'></a>&lt;a id='L5529' name='L5529'&gt;&lt;/a&gt;  % the output routine finishes, TeX starts reconsidering the page
<a id='L5544' name='L5544'></a>&lt;a id='L5530' name='L5530'&gt;&lt;/a&gt;  % break.  The two columns and the broken-off section both fit on the
<a id='L5545' name='L5545'></a>&lt;a id='L5531' name='L5531'&gt;&lt;/a&gt;  % page, because the two columns now take up only half of the page
<a id='L5546' name='L5546'></a>&lt;a id='L5532' name='L5532'&gt;&lt;/a&gt;  % goal.  When TeX sees \eject from below which follows the final
<a id='L5547' name='L5547'></a>&lt;a id='L5533' name='L5533'&gt;&lt;/a&gt;  % section, it invokes the new output routine that we've set after
<a id='L5548' name='L5548'></a>&lt;a id='L5534' name='L5534'&gt;&lt;/a&gt;  % \balancecolumns below; \onepageout will try to fit the two columns
<a id='L5549' name='L5549'></a>&lt;a id='L5535' name='L5535'&gt;&lt;/a&gt;  % and the final section into the vbox of \pageheight (see
<a id='L5550' name='L5550'></a>&lt;a id='L5536' name='L5536'&gt;&lt;/a&gt;  % \pagebody), causing an overfull box.
<a id='L5551' name='L5551'></a>&lt;a id='L5537' name='L5537'&gt;&lt;/a&gt;  %
<a id='L5552' name='L5552'></a>&lt;a id='L5538' name='L5538'&gt;&lt;/a&gt;  % Note that glue won't work here, because glue does not exercise the
<a id='L5553' name='L5553'></a>&lt;a id='L5539' name='L5539'&gt;&lt;/a&gt;  % page builder, unlike penalties (see The TeXbook, pp. 280-281).
<a id='L5554' name='L5554'></a>&lt;a id='L5540' name='L5540'&gt;&lt;/a&gt;  \penalty0
<a id='L5555' name='L5555'></a>&lt;a id='L5541' name='L5541'&gt;&lt;/a&gt;  %
<a id='L5556' name='L5556'></a>&lt;a id='L5542' name='L5542'&gt;&lt;/a&gt;  \output = {%
<a id='L5557' name='L5557'></a>&lt;a id='L5543' name='L5543'&gt;&lt;/a&gt;    % Split the last of the double-column material.  Leave it on the
<a id='L5558' name='L5558'></a>&lt;a id='L5544' name='L5544'&gt;&lt;/a&gt;    % current page, no automatic page break.
<a id='L5559' name='L5559'></a>&lt;a id='L5545' name='L5545'&gt;&lt;/a&gt;    \balancecolumns
<a id='L5560' name='L5560'></a>&lt;a id='L5546' name='L5546'&gt;&lt;/a&gt;    %
<a id='L5561' name='L5561'></a>&lt;a id='L5547' name='L5547'&gt;&lt;/a&gt;    % If we end up splitting too much material for the current page,
<a id='L5562' name='L5562'></a>&lt;a id='L5548' name='L5548'&gt;&lt;/a&gt;    % though, there will be another page break right after this \output
<a id='L5563' name='L5563'></a>&lt;a id='L5549' name='L5549'&gt;&lt;/a&gt;    % invocation ends.  Having called \balancecolumns once, we do not
<a id='L5564' name='L5564'></a>&lt;a id='L5550' name='L5550'&gt;&lt;/a&gt;    % want to call it again.  Therefore, reset \output to its normal
<a id='L5565' name='L5565'></a>&lt;a id='L5551' name='L5551'&gt;&lt;/a&gt;    % definition right away.  (We hope \balancecolumns will never be
<a id='L5566' name='L5566'></a>&lt;a id='L5552' name='L5552'&gt;&lt;/a&gt;    % called on to balance too much material, but if it is, this makes
<a id='L5567' name='L5567'></a>&lt;a id='L5553' name='L5553'&gt;&lt;/a&gt;    % the output somewhat more palatable.)
<a id='L5568' name='L5568'></a>&lt;a id='L5554' name='L5554'&gt;&lt;/a&gt;    \global\output = {\onepageout{\pagecontents\PAGE}}%
<a id='L5569' name='L5569'></a>&lt;a id='L5555' name='L5555'&gt;&lt;/a&gt;  }%
<a id='L5570' name='L5570'></a>&lt;a id='L5556' name='L5556'&gt;&lt;/a&gt;  \eject
<a id='L5571' name='L5571'></a>&lt;a id='L5557' name='L5557'&gt;&lt;/a&gt;  \endgroup % started in \begindoublecolumns
<a id='L5572' name='L5572'></a>&lt;a id='L5558' name='L5558'&gt;&lt;/a&gt;  %
<a id='L5573' name='L5573'></a>&lt;a id='L5559' name='L5559'&gt;&lt;/a&gt;  % \pagegoal was set to the doubled \vsize above, since we restarted
<a id='L5574' name='L5574'></a>&lt;a id='L5560' name='L5560'&gt;&lt;/a&gt;  % the current page.  We're now back to normal single-column
<a id='L5575' name='L5575'></a>&lt;a id='L5561' name='L5561'&gt;&lt;/a&gt;  % typesetting, so reset \pagegoal to the normal \vsize (after the
<a id='L5576' name='L5576'></a>&lt;a id='L5562' name='L5562'&gt;&lt;/a&gt;  % \endgroup where \vsize got restored).
<a id='L5577' name='L5577'></a>&lt;a id='L5563' name='L5563'&gt;&lt;/a&gt;  \pagegoal = \vsize
<a id='L5578' name='L5578'></a>&lt;a id='L5564' name='L5564'&gt;&lt;/a&gt;}
<a id='L5579' name='L5579'></a>&lt;a id='L5565' name='L5565'&gt;&lt;/a&gt;%
<a id='L5580' name='L5580'></a>&lt;a id='L5566' name='L5566'&gt;&lt;/a&gt;% Called at the end of the double column material.
<a id='L5581' name='L5581'></a>&lt;a id='L5567' name='L5567'&gt;&lt;/a&gt;\def\balancecolumns{%
<a id='L5582' name='L5582'></a>&lt;a id='L5568' name='L5568'&gt;&lt;/a&gt;  \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
<a id='L5583' name='L5583'></a>&lt;a id='L5569' name='L5569'&gt;&lt;/a&gt;  \dimen@ = \ht0
<a id='L5584' name='L5584'></a>&lt;a id='L5570' name='L5570'&gt;&lt;/a&gt;  \advance\dimen@ by \topskip
<a id='L5585' name='L5585'></a>&lt;a id='L5571' name='L5571'&gt;&lt;/a&gt;  \advance\dimen@ by-\baselineskip
<a id='L5586' name='L5586'></a>&lt;a id='L5572' name='L5572'&gt;&lt;/a&gt;  \divide\dimen@ by 2 % target to split to
<a id='L5587' name='L5587'></a>&lt;a id='L5573' name='L5573'&gt;&lt;/a&gt;  %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}%
<a id='L5588' name='L5588'></a>&lt;a id='L5574' name='L5574'&gt;&lt;/a&gt;  \splittopskip = \topskip
<a id='L5589' name='L5589'></a>&lt;a id='L5575' name='L5575'&gt;&lt;/a&gt;  % Loop until we get a decent breakpoint.
<a id='L5590' name='L5590'></a>&lt;a id='L5576' name='L5576'&gt;&lt;/a&gt;  {%
<a id='L5591' name='L5591'></a>&lt;a id='L5577' name='L5577'&gt;&lt;/a&gt;    \vbadness = 10000
<a id='L5592' name='L5592'></a>&lt;a id='L5578' name='L5578'&gt;&lt;/a&gt;    \loop
<a id='L5593' name='L5593'></a>&lt;a id='L5579' name='L5579'&gt;&lt;/a&gt;      \global\setbox3 = \copy0
<a id='L5594' name='L5594'></a>&lt;a id='L5580' name='L5580'&gt;&lt;/a&gt;      \global\setbox1 = \vsplit3 to \dimen@
<a id='L5595' name='L5595'></a>&lt;a id='L5581' name='L5581'&gt;&lt;/a&gt;    \ifdim\ht3&amp;gt;\dimen@
<a id='L5596' name='L5596'></a>&lt;a id='L5582' name='L5582'&gt;&lt;/a&gt;      \global\advance\dimen@ by 1pt
<a id='L5597' name='L5597'></a>&lt;a id='L5583' name='L5583'&gt;&lt;/a&gt;    \repeat
<a id='L5598' name='L5598'></a>&lt;a id='L5584' name='L5584'&gt;&lt;/a&gt;  }%
<a id='L5599' name='L5599'></a>&lt;a id='L5585' name='L5585'&gt;&lt;/a&gt;  %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}%
<a id='L5600' name='L5600'></a>&lt;a id='L5586' name='L5586'&gt;&lt;/a&gt;  \setbox0=\vbox to\dimen@{\unvbox1}%
<a id='L5601' name='L5601'></a>&lt;a id='L5587' name='L5587'&gt;&lt;/a&gt;  \setbox2=\vbox to\dimen@{\unvbox3}%
<a id='L5602' name='L5602'></a>&lt;a id='L5588' name='L5588'&gt;&lt;/a&gt;  %
<a id='L5603' name='L5603'></a>&lt;a id='L5589' name='L5589'&gt;&lt;/a&gt;  \pagesofar
<a id='L5604' name='L5604'></a>&lt;a id='L5590' name='L5590'&gt;&lt;/a&gt;}
<a id='L5605' name='L5605'></a>&lt;a id='L5591' name='L5591'&gt;&lt;/a&gt;\catcode`\@ = \other
<a id='L5606' name='L5606'></a>&lt;a id='L5592' name='L5592'&gt;&lt;/a&gt;
<a id='L5607' name='L5607'></a>&lt;a id='L5593' name='L5593'&gt;&lt;/a&gt;
<a id='L5608' name='L5608'></a>&lt;a id='L5594' name='L5594'&gt;&lt;/a&gt;\message{sectioning,}
<a id='L5609' name='L5609'></a>&lt;a id='L5595' name='L5595'&gt;&lt;/a&gt;% Chapters, sections, etc.
<a id='L5610' name='L5610'></a>&lt;a id='L5596' name='L5596'&gt;&lt;/a&gt;
<a id='L5611' name='L5611'></a>&lt;a id='L5597' name='L5597'&gt;&lt;/a&gt;% Let's start with @part.
<a id='L5612' name='L5612'></a>&lt;a id='L5598' name='L5598'&gt;&lt;/a&gt;\outer\parseargdef\part{\partzzz{#1}}
<a id='L5613' name='L5613'></a>&lt;a id='L5599' name='L5599'&gt;&lt;/a&gt;\def\partzzz#1{%
<a id='L5614' name='L5614'></a>&lt;a id='L5600' name='L5600'&gt;&lt;/a&gt;  \chapoddpage
<a id='L5615' name='L5615'></a>&lt;a id='L5601' name='L5601'&gt;&lt;/a&gt;  \null
<a id='L5616' name='L5616'></a>&lt;a id='L5602' name='L5602'&gt;&lt;/a&gt;  \vskip.3\vsize  % move it down on the page a bit
<a id='L5617' name='L5617'></a>&lt;a id='L5603' name='L5603'&gt;&lt;/a&gt;  \begingroup
<a id='L5618' name='L5618'></a>&lt;a id='L5604' name='L5604'&gt;&lt;/a&gt;    \noindent \titlefonts\rmisbold #1\par % the text
<a id='L5619' name='L5619'></a>&lt;a id='L5605' name='L5605'&gt;&lt;/a&gt;    \let\lastnode=\empty      % no node to associate with
<a id='L5620' name='L5620'></a>&lt;a id='L5606' name='L5606'&gt;&lt;/a&gt;    \writetocentry{part}{#1}{}% but put it in the toc
<a id='L5621' name='L5621'></a>&lt;a id='L5607' name='L5607'&gt;&lt;/a&gt;    \headingsoff              % no headline or footline on the part page
<a id='L5622' name='L5622'></a>&lt;a id='L5608' name='L5608'&gt;&lt;/a&gt;    \chapoddpage
<a id='L5623' name='L5623'></a>&lt;a id='L5609' name='L5609'&gt;&lt;/a&gt;  \endgroup
<a id='L5624' name='L5624'></a>&lt;a id='L5610' name='L5610'&gt;&lt;/a&gt;}
<a id='L5625' name='L5625'></a>&lt;a id='L5611' name='L5611'&gt;&lt;/a&gt;
<a id='L5626' name='L5626'></a>&lt;a id='L5612' name='L5612'&gt;&lt;/a&gt;% \unnumberedno is an oxymoron.  But we count the unnumbered
<a id='L5627' name='L5627'></a>&lt;a id='L5613' name='L5613'&gt;&lt;/a&gt;% sections so that we can refer to them unambiguously in the pdf
<a id='L5628' name='L5628'></a>&lt;a id='L5614' name='L5614'&gt;&lt;/a&gt;% outlines by their "section number".  We avoid collisions with chapter
<a id='L5629' name='L5629'></a>&lt;a id='L5615' name='L5615'&gt;&lt;/a&gt;% numbers by starting them at 10000.  (If a document ever has 10000
<a id='L5630' name='L5630'></a>&lt;a id='L5616' name='L5616'&gt;&lt;/a&gt;% chapters, we're in trouble anyway, I'm sure.)
<a id='L5631' name='L5631'></a>&lt;a id='L5617' name='L5617'&gt;&lt;/a&gt;\newcount\unnumberedno \unnumberedno = 10000
<a id='L5632' name='L5632'></a>&lt;a id='L5618' name='L5618'&gt;&lt;/a&gt;\newcount\chapno
<a id='L5633' name='L5633'></a>&lt;a id='L5619' name='L5619'&gt;&lt;/a&gt;\newcount\secno        \secno=0
<a id='L5634' name='L5634'></a>&lt;a id='L5620' name='L5620'&gt;&lt;/a&gt;\newcount\subsecno     \subsecno=0
<a id='L5635' name='L5635'></a>&lt;a id='L5621' name='L5621'&gt;&lt;/a&gt;\newcount\subsubsecno  \subsubsecno=0
<a id='L5636' name='L5636'></a>&lt;a id='L5622' name='L5622'&gt;&lt;/a&gt;
<a id='L5637' name='L5637'></a>&lt;a id='L5623' name='L5623'&gt;&lt;/a&gt;% This counter is funny since it counts through charcodes of letters A, B, ...
<a id='L5638' name='L5638'></a>&lt;a id='L5624' name='L5624'&gt;&lt;/a&gt;\newcount\appendixno  \appendixno = `\@
<a id='L5639' name='L5639'></a>&lt;a id='L5625' name='L5625'&gt;&lt;/a&gt;%
<a id='L5640' name='L5640'></a>&lt;a id='L5626' name='L5626'&gt;&lt;/a&gt;% \def\appendixletter{\char\the\appendixno}
<a id='L5641' name='L5641'></a>&lt;a id='L5627' name='L5627'&gt;&lt;/a&gt;% We do the following ugly conditional instead of the above simple
<a id='L5642' name='L5642'></a>&lt;a id='L5628' name='L5628'&gt;&lt;/a&gt;% construct for the sake of pdftex, which needs the actual
<a id='L5643' name='L5643'></a>&lt;a id='L5629' name='L5629'&gt;&lt;/a&gt;% letter in the expansion, not just typeset.
<a id='L5644' name='L5644'></a>&lt;a id='L5630' name='L5630'&gt;&lt;/a&gt;%
<a id='L5645' name='L5645'></a>&lt;a id='L5631' name='L5631'&gt;&lt;/a&gt;\def\appendixletter{%
<a id='L5646' name='L5646'></a>&lt;a id='L5632' name='L5632'&gt;&lt;/a&gt;  \ifnum\appendixno=`A A%
<a id='L5647' name='L5647'></a>&lt;a id='L5633' name='L5633'&gt;&lt;/a&gt;  \else\ifnum\appendixno=`B B%
<a id='L5648' name='L5648'></a>&lt;a id='L5634' name='L5634'&gt;&lt;/a&gt;  \else\ifnum\appendixno=`C C%
<a id='L5649' name='L5649'></a>&lt;a id='L5635' name='L5635'&gt;&lt;/a&gt;  \else\ifnum\appendixno=`D D%
<a id='L5650' name='L5650'></a>&lt;a id='L5636' name='L5636'&gt;&lt;/a&gt;  \else\ifnum\appendixno=`E E%
<a id='L5651' name='L5651'></a>&lt;a id='L5637' name='L5637'&gt;&lt;/a&gt;  \else\ifnum\appendixno=`F F%
<a id='L5652' name='L5652'></a>&lt;a id='L5638' name='L5638'&gt;&lt;/a&gt;  \else\ifnum\appendixno=`G G%
<a id='L5653' name='L5653'></a>&lt;a id='L5639' name='L5639'&gt;&lt;/a&gt;  \else\ifnum\appendixno=`H H%
<a id='L5654' name='L5654'></a>&lt;a id='L5640' name='L5640'&gt;&lt;/a&gt;  \else\ifnum\appendixno=`I I%
<a id='L5655' name='L5655'></a>&lt;a id='L5641' name='L5641'&gt;&lt;/a&gt;  \else\ifnum\appendixno=`J J%
<a id='L5656' name='L5656'></a>&lt;a id='L5642' name='L5642'&gt;&lt;/a&gt;  \else\ifnum\appendixno=`K K%
<a id='L5657' name='L5657'></a>&lt;a id='L5643' name='L5643'&gt;&lt;/a&gt;  \else\ifnum\appendixno=`L L%
<a id='L5658' name='L5658'></a>&lt;a id='L5644' name='L5644'&gt;&lt;/a&gt;  \else\ifnum\appendixno=`M M%
<a id='L5659' name='L5659'></a>&lt;a id='L5645' name='L5645'&gt;&lt;/a&gt;  \else\ifnum\appendixno=`N N%
<a id='L5660' name='L5660'></a>&lt;a id='L5646' name='L5646'&gt;&lt;/a&gt;  \else\ifnum\appendixno=`O O%
<a id='L5661' name='L5661'></a>&lt;a id='L5647' name='L5647'&gt;&lt;/a&gt;  \else\ifnum\appendixno=`P P%
<a id='L5662' name='L5662'></a>&lt;a id='L5648' name='L5648'&gt;&lt;/a&gt;  \else\ifnum\appendixno=`Q Q%
<a id='L5663' name='L5663'></a>&lt;a id='L5649' name='L5649'&gt;&lt;/a&gt;  \else\ifnum\appendixno=`R R%
<a id='L5664' name='L5664'></a>&lt;a id='L5650' name='L5650'&gt;&lt;/a&gt;  \else\ifnum\appendixno=`S S%
<a id='L5665' name='L5665'></a>&lt;a id='L5651' name='L5651'&gt;&lt;/a&gt;  \else\ifnum\appendixno=`T T%
<a id='L5666' name='L5666'></a>&lt;a id='L5652' name='L5652'&gt;&lt;/a&gt;  \else\ifnum\appendixno=`U U%
<a id='L5667' name='L5667'></a>&lt;a id='L5653' name='L5653'&gt;&lt;/a&gt;  \else\ifnum\appendixno=`V V%
<a id='L5668' name='L5668'></a>&lt;a id='L5654' name='L5654'&gt;&lt;/a&gt;  \else\ifnum\appendixno=`W W%
<a id='L5669' name='L5669'></a>&lt;a id='L5655' name='L5655'&gt;&lt;/a&gt;  \else\ifnum\appendixno=`X X%
<a id='L5670' name='L5670'></a>&lt;a id='L5656' name='L5656'&gt;&lt;/a&gt;  \else\ifnum\appendixno=`Y Y%
<a id='L5671' name='L5671'></a>&lt;a id='L5657' name='L5657'&gt;&lt;/a&gt;  \else\ifnum\appendixno=`Z Z%
<a id='L5672' name='L5672'></a>&lt;a id='L5658' name='L5658'&gt;&lt;/a&gt;  % The \the is necessary, despite appearances, because \appendixletter is
<a id='L5673' name='L5673'></a>&lt;a id='L5659' name='L5659'&gt;&lt;/a&gt;  % expanded while writing the .toc file.  \char\appendixno is not
<a id='L5674' name='L5674'></a>&lt;a id='L5660' name='L5660'&gt;&lt;/a&gt;  % expandable, thus it is written literally, thus all appendixes come out
<a id='L5675' name='L5675'></a>&lt;a id='L5661' name='L5661'&gt;&lt;/a&gt;  % with the same letter (or @) in the toc without it.
<a id='L5676' name='L5676'></a>&lt;a id='L5662' name='L5662'&gt;&lt;/a&gt;  \else\char\the\appendixno
<a id='L5677' name='L5677'></a>&lt;a id='L5663' name='L5663'&gt;&lt;/a&gt;  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
<a id='L5678' name='L5678'></a>&lt;a id='L5664' name='L5664'&gt;&lt;/a&gt;  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
<a id='L5679' name='L5679'></a>&lt;a id='L5665' name='L5665'&gt;&lt;/a&gt;
<a id='L5680' name='L5680'></a>&lt;a id='L5666' name='L5666'&gt;&lt;/a&gt;% Each @chapter defines these (using marks) as the number+name, number
<a id='L5681' name='L5681'></a>&lt;a id='L5667' name='L5667'&gt;&lt;/a&gt;% and name of the chapter.  Page headings and footings can use
<a id='L5682' name='L5682'></a>&lt;a id='L5668' name='L5668'&gt;&lt;/a&gt;% these.  @section does likewise.
<a id='L5683' name='L5683'></a>&lt;a id='L5669' name='L5669'&gt;&lt;/a&gt;\def\thischapter{}
<a id='L5684' name='L5684'></a>&lt;a id='L5670' name='L5670'&gt;&lt;/a&gt;\def\thischapternum{}
<a id='L5685' name='L5685'></a>&lt;a id='L5671' name='L5671'&gt;&lt;/a&gt;\def\thischaptername{}
<a id='L5686' name='L5686'></a>&lt;a id='L5672' name='L5672'&gt;&lt;/a&gt;\def\thissection{}
<a id='L5687' name='L5687'></a>&lt;a id='L5673' name='L5673'&gt;&lt;/a&gt;\def\thissectionnum{}
<a id='L5688' name='L5688'></a>&lt;a id='L5674' name='L5674'&gt;&lt;/a&gt;\def\thissectionname{}
<a id='L5689' name='L5689'></a>&lt;a id='L5675' name='L5675'&gt;&lt;/a&gt;
<a id='L5690' name='L5690'></a>&lt;a id='L5676' name='L5676'&gt;&lt;/a&gt;\newcount\absseclevel % used to calculate proper heading level
<a id='L5691' name='L5691'></a>&lt;a id='L5677' name='L5677'&gt;&lt;/a&gt;\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count
<a id='L5692' name='L5692'></a>&lt;a id='L5678' name='L5678'&gt;&lt;/a&gt;
<a id='L5693' name='L5693'></a>&lt;a id='L5679' name='L5679'&gt;&lt;/a&gt;% @raisesections: treat @section as chapter, @subsection as section, etc.
<a id='L5694' name='L5694'></a>&lt;a id='L5680' name='L5680'&gt;&lt;/a&gt;\def\raisesections{\global\advance\secbase by -1}
<a id='L5695' name='L5695'></a>&lt;a id='L5681' name='L5681'&gt;&lt;/a&gt;\let\up=\raisesections % original BFox name
<a id='L5696' name='L5696'></a>&lt;a id='L5682' name='L5682'&gt;&lt;/a&gt;
<a id='L5697' name='L5697'></a>&lt;a id='L5683' name='L5683'&gt;&lt;/a&gt;% @lowersections: treat @chapter as section, @section as subsection, etc.
<a id='L5698' name='L5698'></a>&lt;a id='L5684' name='L5684'&gt;&lt;/a&gt;\def\lowersections{\global\advance\secbase by 1}
<a id='L5699' name='L5699'></a>&lt;a id='L5685' name='L5685'&gt;&lt;/a&gt;\let\down=\lowersections % original BFox name
<a id='L5700' name='L5700'></a>&lt;a id='L5686' name='L5686'&gt;&lt;/a&gt;
<a id='L5701' name='L5701'></a>&lt;a id='L5687' name='L5687'&gt;&lt;/a&gt;% we only have subsub.
<a id='L5702' name='L5702'></a>&lt;a id='L5688' name='L5688'&gt;&lt;/a&gt;\chardef\maxseclevel = 3
<a id='L5703' name='L5703'></a>&lt;a id='L5689' name='L5689'&gt;&lt;/a&gt;%
<a id='L5704' name='L5704'></a>&lt;a id='L5690' name='L5690'&gt;&lt;/a&gt;% A numbered section within an unnumbered changes to unnumbered too.
<a id='L5705' name='L5705'></a>&lt;a id='L5691' name='L5691'&gt;&lt;/a&gt;% To achieve this, remember the "biggest" unnum. sec. we are currently in:
<a id='L5706' name='L5706'></a>&lt;a id='L5692' name='L5692'&gt;&lt;/a&gt;\chardef\unnlevel = \maxseclevel
<a id='L5707' name='L5707'></a>&lt;a id='L5693' name='L5693'&gt;&lt;/a&gt;%
<a id='L5708' name='L5708'></a>&lt;a id='L5694' name='L5694'&gt;&lt;/a&gt;% Trace whether the current chapter is an appendix or not:
<a id='L5709' name='L5709'></a>&lt;a id='L5695' name='L5695'&gt;&lt;/a&gt;% \chapheadtype is "N" or "A", unnumbered chapters are ignored.
<a id='L5710' name='L5710'></a>&lt;a id='L5696' name='L5696'&gt;&lt;/a&gt;\def\chapheadtype{N}
<a id='L5711' name='L5711'></a>&lt;a id='L5697' name='L5697'&gt;&lt;/a&gt;
<a id='L5712' name='L5712'></a>&lt;a id='L5698' name='L5698'&gt;&lt;/a&gt;% Choose a heading macro
<a id='L5713' name='L5713'></a>&lt;a id='L5699' name='L5699'&gt;&lt;/a&gt;% #1 is heading type
<a id='L5714' name='L5714'></a>&lt;a id='L5700' name='L5700'&gt;&lt;/a&gt;% #2 is heading level
<a id='L5715' name='L5715'></a>&lt;a id='L5701' name='L5701'&gt;&lt;/a&gt;% #3 is text for heading
<a id='L5716' name='L5716'></a>&lt;a id='L5702' name='L5702'&gt;&lt;/a&gt;\def\genhead#1#2#3{%
<a id='L5717' name='L5717'></a>&lt;a id='L5703' name='L5703'&gt;&lt;/a&gt;  % Compute the abs. sec. level:
<a id='L5718' name='L5718'></a>&lt;a id='L5704' name='L5704'&gt;&lt;/a&gt;  \absseclevel=#2
<a id='L5719' name='L5719'></a>&lt;a id='L5705' name='L5705'&gt;&lt;/a&gt;  \advance\absseclevel by \secbase
<a id='L5720' name='L5720'></a>&lt;a id='L5706' name='L5706'&gt;&lt;/a&gt;  % Make sure \absseclevel doesn't fall outside the range:
<a id='L5721' name='L5721'></a>&lt;a id='L5707' name='L5707'&gt;&lt;/a&gt;  \ifnum \absseclevel &amp;lt; 0
<a id='L5722' name='L5722'></a>&lt;a id='L5708' name='L5708'&gt;&lt;/a&gt;    \absseclevel = 0
<a id='L5723' name='L5723'></a>&lt;a id='L5709' name='L5709'&gt;&lt;/a&gt;  \else
<a id='L5724' name='L5724'></a>&lt;a id='L5710' name='L5710'&gt;&lt;/a&gt;    \ifnum \absseclevel &amp;gt; 3
<a id='L5725' name='L5725'></a>&lt;a id='L5711' name='L5711'&gt;&lt;/a&gt;      \absseclevel = 3
<a id='L5726' name='L5726'></a>&lt;a id='L5712' name='L5712'&gt;&lt;/a&gt;    \fi
<a id='L5727' name='L5727'></a>&lt;a id='L5713' name='L5713'&gt;&lt;/a&gt;  \fi
<a id='L5728' name='L5728'></a>&lt;a id='L5714' name='L5714'&gt;&lt;/a&gt;  % The heading type:
<a id='L5729' name='L5729'></a>&lt;a id='L5715' name='L5715'&gt;&lt;/a&gt;  \def\headtype{#1}%
<a id='L5730' name='L5730'></a>&lt;a id='L5716' name='L5716'&gt;&lt;/a&gt;  \if \headtype U%
<a id='L5731' name='L5731'></a>&lt;a id='L5717' name='L5717'&gt;&lt;/a&gt;    \ifnum \absseclevel &amp;lt; \unnlevel
<a id='L5732' name='L5732'></a>&lt;a id='L5718' name='L5718'&gt;&lt;/a&gt;      \chardef\unnlevel = \absseclevel
<a id='L5733' name='L5733'></a>&lt;a id='L5719' name='L5719'&gt;&lt;/a&gt;    \fi
<a id='L5734' name='L5734'></a>&lt;a id='L5720' name='L5720'&gt;&lt;/a&gt;  \else
<a id='L5735' name='L5735'></a>&lt;a id='L5721' name='L5721'&gt;&lt;/a&gt;    % Check for appendix sections:
<a id='L5736' name='L5736'></a>&lt;a id='L5722' name='L5722'&gt;&lt;/a&gt;    \ifnum \absseclevel = 0
<a id='L5737' name='L5737'></a>&lt;a id='L5723' name='L5723'&gt;&lt;/a&gt;      \edef\chapheadtype{\headtype}%
<a id='L5738' name='L5738'></a>&lt;a id='L5724' name='L5724'&gt;&lt;/a&gt;    \else
<a id='L5739' name='L5739'></a>&lt;a id='L5725' name='L5725'&gt;&lt;/a&gt;      \if \headtype A\if \chapheadtype N%
<a id='L5740' name='L5740'></a>&lt;a id='L5726' name='L5726'&gt;&lt;/a&gt;        \errmessage{@appendix... within a non-appendix chapter}%
<a id='L5741' name='L5741'></a>&lt;a id='L5727' name='L5727'&gt;&lt;/a&gt;      \fi\fi
<a id='L5742' name='L5742'></a>&lt;a id='L5728' name='L5728'&gt;&lt;/a&gt;    \fi
<a id='L5743' name='L5743'></a>&lt;a id='L5729' name='L5729'&gt;&lt;/a&gt;    % Check for numbered within unnumbered:
<a id='L5744' name='L5744'></a>&lt;a id='L5730' name='L5730'&gt;&lt;/a&gt;    \ifnum \absseclevel &amp;gt; \unnlevel
<a id='L5745' name='L5745'></a>&lt;a id='L5731' name='L5731'&gt;&lt;/a&gt;      \def\headtype{U}%
<a id='L5746' name='L5746'></a>&lt;a id='L5732' name='L5732'&gt;&lt;/a&gt;    \else
<a id='L5747' name='L5747'></a>&lt;a id='L5733' name='L5733'&gt;&lt;/a&gt;      \chardef\unnlevel = 3
<a id='L5748' name='L5748'></a>&lt;a id='L5734' name='L5734'&gt;&lt;/a&gt;    \fi
<a id='L5749' name='L5749'></a>&lt;a id='L5735' name='L5735'&gt;&lt;/a&gt;  \fi
<a id='L5750' name='L5750'></a>&lt;a id='L5736' name='L5736'&gt;&lt;/a&gt;  % Now print the heading:
<a id='L5751' name='L5751'></a>&lt;a id='L5737' name='L5737'&gt;&lt;/a&gt;  \if \headtype U%
<a id='L5752' name='L5752'></a>&lt;a id='L5738' name='L5738'&gt;&lt;/a&gt;    \ifcase\absseclevel
<a id='L5753' name='L5753'></a>&lt;a id='L5739' name='L5739'&gt;&lt;/a&gt;        \unnumberedzzz{#3}%
<a id='L5754' name='L5754'></a>&lt;a id='L5740' name='L5740'&gt;&lt;/a&gt;    \or \unnumberedseczzz{#3}%
<a id='L5755' name='L5755'></a>&lt;a id='L5741' name='L5741'&gt;&lt;/a&gt;    \or \unnumberedsubseczzz{#3}%
<a id='L5756' name='L5756'></a>&lt;a id='L5742' name='L5742'&gt;&lt;/a&gt;    \or \unnumberedsubsubseczzz{#3}%
<a id='L5757' name='L5757'></a>&lt;a id='L5743' name='L5743'&gt;&lt;/a&gt;    \fi
<a id='L5758' name='L5758'></a>&lt;a id='L5744' name='L5744'&gt;&lt;/a&gt;  \else
<a id='L5759' name='L5759'></a>&lt;a id='L5745' name='L5745'&gt;&lt;/a&gt;    \if \headtype A%
<a id='L5760' name='L5760'></a>&lt;a id='L5746' name='L5746'&gt;&lt;/a&gt;      \ifcase\absseclevel
<a id='L5761' name='L5761'></a>&lt;a id='L5747' name='L5747'&gt;&lt;/a&gt;          \appendixzzz{#3}%
<a id='L5762' name='L5762'></a>&lt;a id='L5748' name='L5748'&gt;&lt;/a&gt;      \or \appendixsectionzzz{#3}%
<a id='L5763' name='L5763'></a>&lt;a id='L5749' name='L5749'&gt;&lt;/a&gt;      \or \appendixsubseczzz{#3}%
<a id='L5764' name='L5764'></a>&lt;a id='L5750' name='L5750'&gt;&lt;/a&gt;      \or \appendixsubsubseczzz{#3}%
<a id='L5765' name='L5765'></a>&lt;a id='L5751' name='L5751'&gt;&lt;/a&gt;      \fi
<a id='L5766' name='L5766'></a>&lt;a id='L5752' name='L5752'&gt;&lt;/a&gt;    \else
<a id='L5767' name='L5767'></a>&lt;a id='L5753' name='L5753'&gt;&lt;/a&gt;      \ifcase\absseclevel
<a id='L5768' name='L5768'></a>&lt;a id='L5754' name='L5754'&gt;&lt;/a&gt;          \chapterzzz{#3}%
<a id='L5769' name='L5769'></a>&lt;a id='L5755' name='L5755'&gt;&lt;/a&gt;      \or \seczzz{#3}%
<a id='L5770' name='L5770'></a>&lt;a id='L5756' name='L5756'&gt;&lt;/a&gt;      \or \numberedsubseczzz{#3}%
<a id='L5771' name='L5771'></a>&lt;a id='L5757' name='L5757'&gt;&lt;/a&gt;      \or \numberedsubsubseczzz{#3}%
<a id='L5772' name='L5772'></a>&lt;a id='L5758' name='L5758'&gt;&lt;/a&gt;      \fi
<a id='L5773' name='L5773'></a>&lt;a id='L5759' name='L5759'&gt;&lt;/a&gt;    \fi
<a id='L5774' name='L5774'></a>&lt;a id='L5760' name='L5760'&gt;&lt;/a&gt;  \fi
<a id='L5775' name='L5775'></a>&lt;a id='L5761' name='L5761'&gt;&lt;/a&gt;  \suppressfirstparagraphindent
<a id='L5776' name='L5776'></a>&lt;a id='L5762' name='L5762'&gt;&lt;/a&gt;}
<a id='L5777' name='L5777'></a>&lt;a id='L5763' name='L5763'&gt;&lt;/a&gt;
<a id='L5778' name='L5778'></a>&lt;a id='L5764' name='L5764'&gt;&lt;/a&gt;% an interface:
<a id='L5779' name='L5779'></a>&lt;a id='L5765' name='L5765'&gt;&lt;/a&gt;\def\numhead{\genhead N}
<a id='L5780' name='L5780'></a>&lt;a id='L5766' name='L5766'&gt;&lt;/a&gt;\def\apphead{\genhead A}
<a id='L5781' name='L5781'></a>&lt;a id='L5767' name='L5767'&gt;&lt;/a&gt;\def\unnmhead{\genhead U}
<a id='L5782' name='L5782'></a>&lt;a id='L5768' name='L5768'&gt;&lt;/a&gt;
<a id='L5783' name='L5783'></a>&lt;a id='L5769' name='L5769'&gt;&lt;/a&gt;% @chapter, @appendix, @unnumbered.  Increment top-level counter, reset
<a id='L5784' name='L5784'></a>&lt;a id='L5770' name='L5770'&gt;&lt;/a&gt;% all lower-level sectioning counters to zero.
<a id='L5785' name='L5785'></a>&lt;a id='L5771' name='L5771'&gt;&lt;/a&gt;%
<a id='L5786' name='L5786'></a>&lt;a id='L5772' name='L5772'&gt;&lt;/a&gt;% Also set \chaplevelprefix, which we prepend to @float sequence numbers
<a id='L5787' name='L5787'></a>&lt;a id='L5773' name='L5773'&gt;&lt;/a&gt;% (e.g., figures), q.v.  By default (before any chapter), that is empty.
<a id='L5788' name='L5788'></a>&lt;a id='L5774' name='L5774'&gt;&lt;/a&gt;\let\chaplevelprefix = \empty
<a id='L5789' name='L5789'></a>&lt;a id='L5775' name='L5775'&gt;&lt;/a&gt;%
<a id='L5790' name='L5790'></a>&lt;a id='L5776' name='L5776'&gt;&lt;/a&gt;\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz
<a id='L5791' name='L5791'></a>&lt;a id='L5777' name='L5777'&gt;&lt;/a&gt;\def\chapterzzz#1{%
<a id='L5792' name='L5792'></a>&lt;a id='L5778' name='L5778'&gt;&lt;/a&gt;  % section resetting is \global in case the chapter is in a group, such
<a id='L5793' name='L5793'></a>&lt;a id='L5779' name='L5779'&gt;&lt;/a&gt;  % as an @include file.
<a id='L5794' name='L5794'></a>&lt;a id='L5780' name='L5780'&gt;&lt;/a&gt;  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
<a id='L5795' name='L5795'></a>&lt;a id='L5781' name='L5781'&gt;&lt;/a&gt;    \global\advance\chapno by 1
<a id='L5796' name='L5796'></a>&lt;a id='L5782' name='L5782'&gt;&lt;/a&gt;  %
<a id='L5797' name='L5797'></a>&lt;a id='L5783' name='L5783'&gt;&lt;/a&gt;  % Used for \float.
<a id='L5798' name='L5798'></a>&lt;a id='L5784' name='L5784'&gt;&lt;/a&gt;  \gdef\chaplevelprefix{\the\chapno.}%
<a id='L5799' name='L5799'></a>&lt;a id='L5785' name='L5785'&gt;&lt;/a&gt;  \resetallfloatnos
<a id='L5800' name='L5800'></a>&lt;a id='L5786' name='L5786'&gt;&lt;/a&gt;  %
<a id='L5801' name='L5801'></a>&lt;a id='L5787' name='L5787'&gt;&lt;/a&gt;  % \putwordChapter can contain complex things in translations.
<a id='L5802' name='L5802'></a>&lt;a id='L5788' name='L5788'&gt;&lt;/a&gt;  \toks0=\expandafter{\putwordChapter}%
<a id='L5803' name='L5803'></a>&lt;a id='L5789' name='L5789'&gt;&lt;/a&gt;  \message{\the\toks0 \space \the\chapno}%
<a id='L5804' name='L5804'></a>&lt;a id='L5790' name='L5790'&gt;&lt;/a&gt;  %
<a id='L5805' name='L5805'></a>&lt;a id='L5791' name='L5791'&gt;&lt;/a&gt;  % Write the actual heading.
<a id='L5806' name='L5806'></a>&lt;a id='L5792' name='L5792'&gt;&lt;/a&gt;  \chapmacro{#1}{Ynumbered}{\the\chapno}%
<a id='L5807' name='L5807'></a>&lt;a id='L5793' name='L5793'&gt;&lt;/a&gt;  %
<a id='L5808' name='L5808'></a>&lt;a id='L5794' name='L5794'&gt;&lt;/a&gt;  % So @section and the like are numbered underneath this chapter.
<a id='L5809' name='L5809'></a>&lt;a id='L5795' name='L5795'&gt;&lt;/a&gt;  \global\let\section = \numberedsec
<a id='L5810' name='L5810'></a>&lt;a id='L5796' name='L5796'&gt;&lt;/a&gt;  \global\let\subsection = \numberedsubsec
<a id='L5811' name='L5811'></a>&lt;a id='L5797' name='L5797'&gt;&lt;/a&gt;  \global\let\subsubsection = \numberedsubsubsec
<a id='L5812' name='L5812'></a>&lt;a id='L5798' name='L5798'&gt;&lt;/a&gt;}
<a id='L5813' name='L5813'></a>&lt;a id='L5799' name='L5799'&gt;&lt;/a&gt;
<a id='L5814' name='L5814'></a>&lt;a id='L5800' name='L5800'&gt;&lt;/a&gt;\outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz
<a id='L5815' name='L5815'></a>&lt;a id='L5801' name='L5801'&gt;&lt;/a&gt;%
<a id='L5816' name='L5816'></a>&lt;a id='L5802' name='L5802'&gt;&lt;/a&gt;\def\appendixzzz#1{%
<a id='L5817' name='L5817'></a>&lt;a id='L5803' name='L5803'&gt;&lt;/a&gt;  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
<a id='L5818' name='L5818'></a>&lt;a id='L5804' name='L5804'&gt;&lt;/a&gt;    \global\advance\appendixno by 1
<a id='L5819' name='L5819'></a>&lt;a id='L5805' name='L5805'&gt;&lt;/a&gt;  \gdef\chaplevelprefix{\appendixletter.}%
<a id='L5820' name='L5820'></a>&lt;a id='L5806' name='L5806'&gt;&lt;/a&gt;  \resetallfloatnos
<a id='L5821' name='L5821'></a>&lt;a id='L5807' name='L5807'&gt;&lt;/a&gt;  %
<a id='L5822' name='L5822'></a>&lt;a id='L5808' name='L5808'&gt;&lt;/a&gt;  % \putwordAppendix can contain complex things in translations.
<a id='L5823' name='L5823'></a>&lt;a id='L5809' name='L5809'&gt;&lt;/a&gt;  \toks0=\expandafter{\putwordAppendix}%
<a id='L5824' name='L5824'></a>&lt;a id='L5810' name='L5810'&gt;&lt;/a&gt;  \message{\the\toks0 \space \appendixletter}%
<a id='L5825' name='L5825'></a>&lt;a id='L5811' name='L5811'&gt;&lt;/a&gt;  %
<a id='L5826' name='L5826'></a>&lt;a id='L5812' name='L5812'&gt;&lt;/a&gt;  \chapmacro{#1}{Yappendix}{\appendixletter}%
<a id='L5827' name='L5827'></a>&lt;a id='L5813' name='L5813'&gt;&lt;/a&gt;  %
<a id='L5828' name='L5828'></a>&lt;a id='L5814' name='L5814'&gt;&lt;/a&gt;  \global\let\section = \appendixsec
<a id='L5829' name='L5829'></a>&lt;a id='L5815' name='L5815'&gt;&lt;/a&gt;  \global\let\subsection = \appendixsubsec
<a id='L5830' name='L5830'></a>&lt;a id='L5816' name='L5816'&gt;&lt;/a&gt;  \global\let\subsubsection = \appendixsubsubsec
<a id='L5831' name='L5831'></a>&lt;a id='L5817' name='L5817'&gt;&lt;/a&gt;}
<a id='L5832' name='L5832'></a>&lt;a id='L5818' name='L5818'&gt;&lt;/a&gt;
<a id='L5833' name='L5833'></a>&lt;a id='L5819' name='L5819'&gt;&lt;/a&gt;% normally unnmhead0 calls unnumberedzzz:
<a id='L5834' name='L5834'></a>&lt;a id='L5820' name='L5820'&gt;&lt;/a&gt;\outer\parseargdef\unnumbered{\unnmhead0{#1}}
<a id='L5835' name='L5835'></a>&lt;a id='L5821' name='L5821'&gt;&lt;/a&gt;\def\unnumberedzzz#1{%
<a id='L5836' name='L5836'></a>&lt;a id='L5822' name='L5822'&gt;&lt;/a&gt;  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
<a id='L5837' name='L5837'></a>&lt;a id='L5823' name='L5823'&gt;&lt;/a&gt;    \global\advance\unnumberedno by 1
<a id='L5838' name='L5838'></a>&lt;a id='L5824' name='L5824'&gt;&lt;/a&gt;  %
<a id='L5839' name='L5839'></a>&lt;a id='L5825' name='L5825'&gt;&lt;/a&gt;  % Since an unnumbered has no number, no prefix for figures.
<a id='L5840' name='L5840'></a>&lt;a id='L5826' name='L5826'&gt;&lt;/a&gt;  \global\let\chaplevelprefix = \empty
<a id='L5841' name='L5841'></a>&lt;a id='L5827' name='L5827'&gt;&lt;/a&gt;  \resetallfloatnos
<a id='L5842' name='L5842'></a>&lt;a id='L5828' name='L5828'&gt;&lt;/a&gt;  %
<a id='L5843' name='L5843'></a>&lt;a id='L5829' name='L5829'&gt;&lt;/a&gt;  % This used to be simply \message{#1}, but TeX fully expands the
<a id='L5844' name='L5844'></a>&lt;a id='L5830' name='L5830'&gt;&lt;/a&gt;  % argument to \message.  Therefore, if #1 contained @-commands, TeX
<a id='L5845' name='L5845'></a>&lt;a id='L5831' name='L5831'&gt;&lt;/a&gt;  % expanded them.  For example, in `@unnumbered The @cite{Book}', TeX
<a id='L5846' name='L5846'></a>&lt;a id='L5832' name='L5832'&gt;&lt;/a&gt;  % expanded @cite (which turns out to cause errors because \cite is meant
<a id='L5847' name='L5847'></a>&lt;a id='L5833' name='L5833'&gt;&lt;/a&gt;  % to be executed, not expanded).
<a id='L5848' name='L5848'></a>&lt;a id='L5834' name='L5834'&gt;&lt;/a&gt;  %
<a id='L5849' name='L5849'></a>&lt;a id='L5835' name='L5835'&gt;&lt;/a&gt;  % Anyway, we don't want the fully-expanded definition of @cite to appear
<a id='L5850' name='L5850'></a>&lt;a id='L5836' name='L5836'&gt;&lt;/a&gt;  % as a result of the \message, we just want `@cite' itself.  We use
<a id='L5851' name='L5851'></a>&lt;a id='L5837' name='L5837'&gt;&lt;/a&gt;  % \the&amp;lt;toks register&amp;gt; to achieve this: TeX expands \the&amp;lt;toks&amp;gt; only once,
<a id='L5852' name='L5852'></a>&lt;a id='L5838' name='L5838'&gt;&lt;/a&gt;  % simply yielding the contents of &amp;lt;toks register&amp;gt;.  (We also do this for
<a id='L5853' name='L5853'></a>&lt;a id='L5839' name='L5839'&gt;&lt;/a&gt;  % the toc entries.)
<a id='L5854' name='L5854'></a>&lt;a id='L5840' name='L5840'&gt;&lt;/a&gt;  \toks0 = {#1}%
<a id='L5855' name='L5855'></a>&lt;a id='L5841' name='L5841'&gt;&lt;/a&gt;  \message{(\the\toks0)}%
<a id='L5856' name='L5856'></a>&lt;a id='L5842' name='L5842'&gt;&lt;/a&gt;  %
<a id='L5857' name='L5857'></a>&lt;a id='L5843' name='L5843'&gt;&lt;/a&gt;  \chapmacro{#1}{Ynothing}{\the\unnumberedno}%
<a id='L5858' name='L5858'></a>&lt;a id='L5844' name='L5844'&gt;&lt;/a&gt;  %
<a id='L5859' name='L5859'></a>&lt;a id='L5845' name='L5845'&gt;&lt;/a&gt;  \global\let\section = \unnumberedsec
<a id='L5860' name='L5860'></a>&lt;a id='L5846' name='L5846'&gt;&lt;/a&gt;  \global\let\subsection = \unnumberedsubsec
<a id='L5861' name='L5861'></a>&lt;a id='L5847' name='L5847'&gt;&lt;/a&gt;  \global\let\subsubsection = \unnumberedsubsubsec
<a id='L5862' name='L5862'></a>&lt;a id='L5848' name='L5848'&gt;&lt;/a&gt;}
<a id='L5863' name='L5863'></a>&lt;a id='L5849' name='L5849'&gt;&lt;/a&gt;
<a id='L5864' name='L5864'></a>&lt;a id='L5850' name='L5850'&gt;&lt;/a&gt;% @centerchap is like @unnumbered, but the heading is centered.
<a id='L5865' name='L5865'></a>&lt;a id='L5851' name='L5851'&gt;&lt;/a&gt;\outer\parseargdef\centerchap{%
<a id='L5866' name='L5866'></a>&lt;a id='L5852' name='L5852'&gt;&lt;/a&gt;  % Well, we could do the following in a group, but that would break
<a id='L5867' name='L5867'></a>&lt;a id='L5853' name='L5853'&gt;&lt;/a&gt;  % an assumption that \chapmacro is called at the outermost level.
<a id='L5868' name='L5868'></a>&lt;a id='L5854' name='L5854'&gt;&lt;/a&gt;  % Thus we are safer this way:         --kasal, 24feb04
<a id='L5869' name='L5869'></a>&lt;a id='L5855' name='L5855'&gt;&lt;/a&gt;  \let\centerparametersmaybe = \centerparameters
<a id='L5870' name='L5870'></a>&lt;a id='L5856' name='L5856'&gt;&lt;/a&gt;  \unnmhead0{#1}%
<a id='L5871' name='L5871'></a>&lt;a id='L5857' name='L5857'&gt;&lt;/a&gt;  \let\centerparametersmaybe = \relax
<a id='L5872' name='L5872'></a>&lt;a id='L5858' name='L5858'&gt;&lt;/a&gt;}
<a id='L5873' name='L5873'></a>&lt;a id='L5859' name='L5859'&gt;&lt;/a&gt;
<a id='L5874' name='L5874'></a>&lt;a id='L5860' name='L5860'&gt;&lt;/a&gt;% @top is like @unnumbered.
<a id='L5875' name='L5875'></a>&lt;a id='L5861' name='L5861'&gt;&lt;/a&gt;\let\top\unnumbered
<a id='L5876' name='L5876'></a>&lt;a id='L5862' name='L5862'&gt;&lt;/a&gt;
<a id='L5877' name='L5877'></a>&lt;a id='L5863' name='L5863'&gt;&lt;/a&gt;% Sections.
<a id='L5878' name='L5878'></a>&lt;a id='L5864' name='L5864'&gt;&lt;/a&gt;%
<a id='L5879' name='L5879'></a>&lt;a id='L5865' name='L5865'&gt;&lt;/a&gt;\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
<a id='L5880' name='L5880'></a>&lt;a id='L5866' name='L5866'&gt;&lt;/a&gt;\def\seczzz#1{%
<a id='L5881' name='L5881'></a>&lt;a id='L5867' name='L5867'&gt;&lt;/a&gt;  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
<a id='L5882' name='L5882'></a>&lt;a id='L5868' name='L5868'&gt;&lt;/a&gt;  \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}%
<a id='L5883' name='L5883'></a>&lt;a id='L5869' name='L5869'&gt;&lt;/a&gt;}
<a id='L5884' name='L5884'></a>&lt;a id='L5870' name='L5870'&gt;&lt;/a&gt;
<a id='L5885' name='L5885'></a>&lt;a id='L5871' name='L5871'&gt;&lt;/a&gt;% normally calls appendixsectionzzz:
<a id='L5886' name='L5886'></a>&lt;a id='L5872' name='L5872'&gt;&lt;/a&gt;\outer\parseargdef\appendixsection{\apphead1{#1}}
<a id='L5887' name='L5887'></a>&lt;a id='L5873' name='L5873'&gt;&lt;/a&gt;\def\appendixsectionzzz#1{%
<a id='L5888' name='L5888'></a>&lt;a id='L5874' name='L5874'&gt;&lt;/a&gt;  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
<a id='L5889' name='L5889'></a>&lt;a id='L5875' name='L5875'&gt;&lt;/a&gt;  \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
<a id='L5890' name='L5890'></a>&lt;a id='L5876' name='L5876'&gt;&lt;/a&gt;}
<a id='L5891' name='L5891'></a>&lt;a id='L5877' name='L5877'&gt;&lt;/a&gt;\let\appendixsec\appendixsection
<a id='L5892' name='L5892'></a>&lt;a id='L5878' name='L5878'&gt;&lt;/a&gt;
<a id='L5893' name='L5893'></a>&lt;a id='L5879' name='L5879'&gt;&lt;/a&gt;% normally calls unnumberedseczzz:
<a id='L5894' name='L5894'></a>&lt;a id='L5880' name='L5880'&gt;&lt;/a&gt;\outer\parseargdef\unnumberedsec{\unnmhead1{#1}}
<a id='L5895' name='L5895'></a>&lt;a id='L5881' name='L5881'&gt;&lt;/a&gt;\def\unnumberedseczzz#1{%
<a id='L5896' name='L5896'></a>&lt;a id='L5882' name='L5882'&gt;&lt;/a&gt;  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
<a id='L5897' name='L5897'></a>&lt;a id='L5883' name='L5883'&gt;&lt;/a&gt;  \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
<a id='L5898' name='L5898'></a>&lt;a id='L5884' name='L5884'&gt;&lt;/a&gt;}
<a id='L5899' name='L5899'></a>&lt;a id='L5885' name='L5885'&gt;&lt;/a&gt;
<a id='L5900' name='L5900'></a>&lt;a id='L5886' name='L5886'&gt;&lt;/a&gt;% Subsections.
<a id='L5901' name='L5901'></a>&lt;a id='L5887' name='L5887'&gt;&lt;/a&gt;% 
<a id='L5902' name='L5902'></a>&lt;a id='L5888' name='L5888'&gt;&lt;/a&gt;% normally calls numberedsubseczzz:
<a id='L5903' name='L5903'></a>&lt;a id='L5889' name='L5889'&gt;&lt;/a&gt;\outer\parseargdef\numberedsubsec{\numhead2{#1}}
<a id='L5904' name='L5904'></a>&lt;a id='L5890' name='L5890'&gt;&lt;/a&gt;\def\numberedsubseczzz#1{%
<a id='L5905' name='L5905'></a>&lt;a id='L5891' name='L5891'&gt;&lt;/a&gt;  \global\subsubsecno=0  \global\advance\subsecno by 1
<a id='L5906' name='L5906'></a>&lt;a id='L5892' name='L5892'&gt;&lt;/a&gt;  \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
<a id='L5907' name='L5907'></a>&lt;a id='L5893' name='L5893'&gt;&lt;/a&gt;}
<a id='L5908' name='L5908'></a>&lt;a id='L5894' name='L5894'&gt;&lt;/a&gt;
<a id='L5909' name='L5909'></a>&lt;a id='L5895' name='L5895'&gt;&lt;/a&gt;% normally calls appendixsubseczzz:
<a id='L5910' name='L5910'></a>&lt;a id='L5896' name='L5896'&gt;&lt;/a&gt;\outer\parseargdef\appendixsubsec{\apphead2{#1}}
<a id='L5911' name='L5911'></a>&lt;a id='L5897' name='L5897'&gt;&lt;/a&gt;\def\appendixsubseczzz#1{%
<a id='L5912' name='L5912'></a>&lt;a id='L5898' name='L5898'&gt;&lt;/a&gt;  \global\subsubsecno=0  \global\advance\subsecno by 1
<a id='L5913' name='L5913'></a>&lt;a id='L5899' name='L5899'&gt;&lt;/a&gt;  \sectionheading{#1}{subsec}{Yappendix}%
<a id='L5914' name='L5914'></a>&lt;a id='L5900' name='L5900'&gt;&lt;/a&gt;                 {\appendixletter.\the\secno.\the\subsecno}%
<a id='L5915' name='L5915'></a>&lt;a id='L5901' name='L5901'&gt;&lt;/a&gt;}
<a id='L5916' name='L5916'></a>&lt;a id='L5902' name='L5902'&gt;&lt;/a&gt;
<a id='L5917' name='L5917'></a>&lt;a id='L5903' name='L5903'&gt;&lt;/a&gt;% normally calls unnumberedsubseczzz:
<a id='L5918' name='L5918'></a>&lt;a id='L5904' name='L5904'&gt;&lt;/a&gt;\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}}
<a id='L5919' name='L5919'></a>&lt;a id='L5905' name='L5905'&gt;&lt;/a&gt;\def\unnumberedsubseczzz#1{%
<a id='L5920' name='L5920'></a>&lt;a id='L5906' name='L5906'&gt;&lt;/a&gt;  \global\subsubsecno=0  \global\advance\subsecno by 1
<a id='L5921' name='L5921'></a>&lt;a id='L5907' name='L5907'&gt;&lt;/a&gt;  \sectionheading{#1}{subsec}{Ynothing}%
<a id='L5922' name='L5922'></a>&lt;a id='L5908' name='L5908'&gt;&lt;/a&gt;                 {\the\unnumberedno.\the\secno.\the\subsecno}%
<a id='L5923' name='L5923'></a>&lt;a id='L5909' name='L5909'&gt;&lt;/a&gt;}
<a id='L5924' name='L5924'></a>&lt;a id='L5910' name='L5910'&gt;&lt;/a&gt;
<a id='L5925' name='L5925'></a>&lt;a id='L5911' name='L5911'&gt;&lt;/a&gt;% Subsubsections.
<a id='L5926' name='L5926'></a>&lt;a id='L5912' name='L5912'&gt;&lt;/a&gt;% 
<a id='L5927' name='L5927'></a>&lt;a id='L5913' name='L5913'&gt;&lt;/a&gt;% normally numberedsubsubseczzz:
<a id='L5928' name='L5928'></a>&lt;a id='L5914' name='L5914'&gt;&lt;/a&gt;\outer\parseargdef\numberedsubsubsec{\numhead3{#1}}
<a id='L5929' name='L5929'></a>&lt;a id='L5915' name='L5915'&gt;&lt;/a&gt;\def\numberedsubsubseczzz#1{%
<a id='L5930' name='L5930'></a>&lt;a id='L5916' name='L5916'&gt;&lt;/a&gt;  \global\advance\subsubsecno by 1
<a id='L5931' name='L5931'></a>&lt;a id='L5917' name='L5917'&gt;&lt;/a&gt;  \sectionheading{#1}{subsubsec}{Ynumbered}%
<a id='L5932' name='L5932'></a>&lt;a id='L5918' name='L5918'&gt;&lt;/a&gt;                 {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
<a id='L5933' name='L5933'></a>&lt;a id='L5919' name='L5919'&gt;&lt;/a&gt;}
<a id='L5934' name='L5934'></a>&lt;a id='L5920' name='L5920'&gt;&lt;/a&gt;
<a id='L5935' name='L5935'></a>&lt;a id='L5921' name='L5921'&gt;&lt;/a&gt;% normally appendixsubsubseczzz:
<a id='L5936' name='L5936'></a>&lt;a id='L5922' name='L5922'&gt;&lt;/a&gt;\outer\parseargdef\appendixsubsubsec{\apphead3{#1}}
<a id='L5937' name='L5937'></a>&lt;a id='L5923' name='L5923'&gt;&lt;/a&gt;\def\appendixsubsubseczzz#1{%
<a id='L5938' name='L5938'></a>&lt;a id='L5924' name='L5924'&gt;&lt;/a&gt;  \global\advance\subsubsecno by 1
<a id='L5939' name='L5939'></a>&lt;a id='L5925' name='L5925'&gt;&lt;/a&gt;  \sectionheading{#1}{subsubsec}{Yappendix}%
<a id='L5940' name='L5940'></a>&lt;a id='L5926' name='L5926'&gt;&lt;/a&gt;                 {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
<a id='L5941' name='L5941'></a>&lt;a id='L5927' name='L5927'&gt;&lt;/a&gt;}
<a id='L5942' name='L5942'></a>&lt;a id='L5928' name='L5928'&gt;&lt;/a&gt;
<a id='L5943' name='L5943'></a>&lt;a id='L5929' name='L5929'&gt;&lt;/a&gt;% normally unnumberedsubsubseczzz:
<a id='L5944' name='L5944'></a>&lt;a id='L5930' name='L5930'&gt;&lt;/a&gt;\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}}
<a id='L5945' name='L5945'></a>&lt;a id='L5931' name='L5931'&gt;&lt;/a&gt;\def\unnumberedsubsubseczzz#1{%
<a id='L5946' name='L5946'></a>&lt;a id='L5932' name='L5932'&gt;&lt;/a&gt;  \global\advance\subsubsecno by 1
<a id='L5947' name='L5947'></a>&lt;a id='L5933' name='L5933'&gt;&lt;/a&gt;  \sectionheading{#1}{subsubsec}{Ynothing}%
<a id='L5948' name='L5948'></a>&lt;a id='L5934' name='L5934'&gt;&lt;/a&gt;                 {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}%
<a id='L5949' name='L5949'></a>&lt;a id='L5935' name='L5935'&gt;&lt;/a&gt;}
<a id='L5950' name='L5950'></a>&lt;a id='L5936' name='L5936'&gt;&lt;/a&gt;
<a id='L5951' name='L5951'></a>&lt;a id='L5937' name='L5937'&gt;&lt;/a&gt;% These macros control what the section commands do, according
<a id='L5952' name='L5952'></a>&lt;a id='L5938' name='L5938'&gt;&lt;/a&gt;% to what kind of chapter we are in (ordinary, appendix, or unnumbered).
<a id='L5953' name='L5953'></a>&lt;a id='L5939' name='L5939'&gt;&lt;/a&gt;% Define them by default for a numbered chapter.
<a id='L5954' name='L5954'></a>&lt;a id='L5940' name='L5940'&gt;&lt;/a&gt;\let\section = \numberedsec
<a id='L5955' name='L5955'></a>&lt;a id='L5941' name='L5941'&gt;&lt;/a&gt;\let\subsection = \numberedsubsec
<a id='L5956' name='L5956'></a>&lt;a id='L5942' name='L5942'&gt;&lt;/a&gt;\let\subsubsection = \numberedsubsubsec
<a id='L5957' name='L5957'></a>&lt;a id='L5943' name='L5943'&gt;&lt;/a&gt;
<a id='L5958' name='L5958'></a>&lt;a id='L5944' name='L5944'&gt;&lt;/a&gt;% Define @majorheading, @heading and @subheading
<a id='L5959' name='L5959'></a>&lt;a id='L5945' name='L5945'&gt;&lt;/a&gt;
<a id='L5960' name='L5960'></a>&lt;a id='L5946' name='L5946'&gt;&lt;/a&gt;\def\majorheading{%
<a id='L5961' name='L5961'></a>&lt;a id='L5947' name='L5947'&gt;&lt;/a&gt;  {\advance\chapheadingskip by 10pt \chapbreak }%
<a id='L5962' name='L5962'></a>&lt;a id='L5948' name='L5948'&gt;&lt;/a&gt;  \parsearg\chapheadingzzz
<a id='L5963' name='L5963'></a>&lt;a id='L5949' name='L5949'&gt;&lt;/a&gt;}
<a id='L5964' name='L5964'></a>&lt;a id='L5950' name='L5950'&gt;&lt;/a&gt;
<a id='L5965' name='L5965'></a>&lt;a id='L5951' name='L5951'&gt;&lt;/a&gt;\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
<a id='L5966' name='L5966'></a>&lt;a id='L5952' name='L5952'&gt;&lt;/a&gt;\def\chapheadingzzz#1{%
<a id='L5967' name='L5967'></a>&lt;a id='L5953' name='L5953'&gt;&lt;/a&gt;  \vbox{\chapfonts \raggedtitlesettings #1\par}%
<a id='L5968' name='L5968'></a>&lt;a id='L5954' name='L5954'&gt;&lt;/a&gt;  \nobreak\bigskip \nobreak
<a id='L5969' name='L5969'></a>&lt;a id='L5955' name='L5955'&gt;&lt;/a&gt;  \suppressfirstparagraphindent
<a id='L5970' name='L5970'></a>&lt;a id='L5956' name='L5956'&gt;&lt;/a&gt;}
<a id='L5971' name='L5971'></a>&lt;a id='L5957' name='L5957'&gt;&lt;/a&gt;
<a id='L5972' name='L5972'></a>&lt;a id='L5958' name='L5958'&gt;&lt;/a&gt;% @heading, @subheading, @subsubheading.
<a id='L5973' name='L5973'></a>&lt;a id='L5959' name='L5959'&gt;&lt;/a&gt;\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{}
<a id='L5974' name='L5974'></a>&lt;a id='L5960' name='L5960'&gt;&lt;/a&gt;  \suppressfirstparagraphindent}
<a id='L5975' name='L5975'></a>&lt;a id='L5961' name='L5961'&gt;&lt;/a&gt;\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{}
<a id='L5976' name='L5976'></a>&lt;a id='L5962' name='L5962'&gt;&lt;/a&gt;  \suppressfirstparagraphindent}
<a id='L5977' name='L5977'></a>&lt;a id='L5963' name='L5963'&gt;&lt;/a&gt;\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{}
<a id='L5978' name='L5978'></a>&lt;a id='L5964' name='L5964'&gt;&lt;/a&gt;  \suppressfirstparagraphindent}
<a id='L5979' name='L5979'></a>&lt;a id='L5965' name='L5965'&gt;&lt;/a&gt;
<a id='L5980' name='L5980'></a>&lt;a id='L5966' name='L5966'&gt;&lt;/a&gt;% These macros generate a chapter, section, etc. heading only
<a id='L5981' name='L5981'></a>&lt;a id='L5967' name='L5967'&gt;&lt;/a&gt;% (including whitespace, linebreaking, etc. around it),
<a id='L5982' name='L5982'></a>&lt;a id='L5968' name='L5968'&gt;&lt;/a&gt;% given all the information in convenient, parsed form.
<a id='L5983' name='L5983'></a>&lt;a id='L5969' name='L5969'&gt;&lt;/a&gt;
<a id='L5984' name='L5984'></a>&lt;a id='L5970' name='L5970'&gt;&lt;/a&gt;% Args are the skip and penalty (usually negative)
<a id='L5985' name='L5985'></a>&lt;a id='L5971' name='L5971'&gt;&lt;/a&gt;\def\dobreak#1#2{\par\ifdim\lastskip&amp;lt;#1\removelastskip\penalty#2\vskip#1\fi}
<a id='L5986' name='L5986'></a>&lt;a id='L5972' name='L5972'&gt;&lt;/a&gt;
<a id='L5987' name='L5987'></a>&lt;a id='L5973' name='L5973'&gt;&lt;/a&gt;% Parameter controlling skip before chapter headings (if needed)
<a id='L5988' name='L5988'></a>&lt;a id='L5974' name='L5974'&gt;&lt;/a&gt;\newskip\chapheadingskip
<a id='L5989' name='L5989'></a>&lt;a id='L5975' name='L5975'&gt;&lt;/a&gt;
<a id='L5990' name='L5990'></a>&lt;a id='L5976' name='L5976'&gt;&lt;/a&gt;% Define plain chapter starts, and page on/off switching for it.
<a id='L5991' name='L5991'></a>&lt;a id='L5977' name='L5977'&gt;&lt;/a&gt;\def\chapbreak{\dobreak \chapheadingskip {-4000}}
<a id='L5992' name='L5992'></a>&lt;a id='L5978' name='L5978'&gt;&lt;/a&gt;\def\chappager{\par\vfill\supereject}
<a id='L5993' name='L5993'></a>&lt;a id='L5979' name='L5979'&gt;&lt;/a&gt;% Because \domark is called before \chapoddpage, the filler page will
<a id='L5994' name='L5994'></a>&lt;a id='L5980' name='L5980'&gt;&lt;/a&gt;% get the headings for the next chapter, which is wrong.  But we don't
<a id='L5995' name='L5995'></a>&lt;a id='L5981' name='L5981'&gt;&lt;/a&gt;% care -- we just disable all headings on the filler page.
<a id='L5996' name='L5996'></a>&lt;a id='L5982' name='L5982'&gt;&lt;/a&gt;\def\chapoddpage{%
<a id='L5997' name='L5997'></a>&lt;a id='L5983' name='L5983'&gt;&lt;/a&gt;  \chappager
<a id='L5998' name='L5998'></a>&lt;a id='L5984' name='L5984'&gt;&lt;/a&gt;  \ifodd\pageno \else
<a id='L5999' name='L5999'></a>&lt;a id='L5985' name='L5985'&gt;&lt;/a&gt;    \begingroup
<a id='L6000' name='L6000'></a>&lt;a id='L5986' name='L5986'&gt;&lt;/a&gt;      \headingsoff
<a id='L6001' name='L6001'></a>&lt;a id='L5987' name='L5987'&gt;&lt;/a&gt;      \null
<a id='L6002' name='L6002'></a>&lt;a id='L5988' name='L5988'&gt;&lt;/a&gt;      \chappager
<a id='L6003' name='L6003'></a>&lt;a id='L5989' name='L5989'&gt;&lt;/a&gt;    \endgroup
<a id='L6004' name='L6004'></a>&lt;a id='L5990' name='L5990'&gt;&lt;/a&gt;  \fi
<a id='L6005' name='L6005'></a>&lt;a id='L5991' name='L5991'&gt;&lt;/a&gt;}
<a id='L6006' name='L6006'></a>&lt;a id='L5992' name='L5992'&gt;&lt;/a&gt;
<a id='L6007' name='L6007'></a>&lt;a id='L5993' name='L5993'&gt;&lt;/a&gt;\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
<a id='L6008' name='L6008'></a>&lt;a id='L5994' name='L5994'&gt;&lt;/a&gt;
<a id='L6009' name='L6009'></a>&lt;a id='L5995' name='L5995'&gt;&lt;/a&gt;\def\CHAPPAGoff{%
<a id='L6010' name='L6010'></a>&lt;a id='L5996' name='L5996'&gt;&lt;/a&gt;\global\let\contentsalignmacro = \chappager
<a id='L6011' name='L6011'></a>&lt;a id='L5997' name='L5997'&gt;&lt;/a&gt;\global\let\pchapsepmacro=\chapbreak
<a id='L6012' name='L6012'></a>&lt;a id='L5998' name='L5998'&gt;&lt;/a&gt;\global\let\pagealignmacro=\chappager}
<a id='L6013' name='L6013'></a>&lt;a id='L5999' name='L5999'&gt;&lt;/a&gt;
<a id='L6014' name='L6014'></a>&lt;a id='L6000' name='L6000'&gt;&lt;/a&gt;\def\CHAPPAGon{%
<a id='L6015' name='L6015'></a>&lt;a id='L6001' name='L6001'&gt;&lt;/a&gt;\global\let\contentsalignmacro = \chappager
<a id='L6016' name='L6016'></a>&lt;a id='L6002' name='L6002'&gt;&lt;/a&gt;\global\let\pchapsepmacro=\chappager
<a id='L6017' name='L6017'></a>&lt;a id='L6003' name='L6003'&gt;&lt;/a&gt;\global\let\pagealignmacro=\chappager
<a id='L6018' name='L6018'></a>&lt;a id='L6004' name='L6004'&gt;&lt;/a&gt;\global\def\HEADINGSon{\HEADINGSsingle}}
<a id='L6019' name='L6019'></a>&lt;a id='L6005' name='L6005'&gt;&lt;/a&gt;
<a id='L6020' name='L6020'></a>&lt;a id='L6006' name='L6006'&gt;&lt;/a&gt;\def\CHAPPAGodd{%
<a id='L6021' name='L6021'></a>&lt;a id='L6007' name='L6007'&gt;&lt;/a&gt;\global\let\contentsalignmacro = \chapoddpage
<a id='L6022' name='L6022'></a>&lt;a id='L6008' name='L6008'&gt;&lt;/a&gt;\global\let\pchapsepmacro=\chapoddpage
<a id='L6023' name='L6023'></a>&lt;a id='L6009' name='L6009'&gt;&lt;/a&gt;\global\let\pagealignmacro=\chapoddpage
<a id='L6024' name='L6024'></a>&lt;a id='L6010' name='L6010'&gt;&lt;/a&gt;\global\def\HEADINGSon{\HEADINGSdouble}}
<a id='L6025' name='L6025'></a>&lt;a id='L6011' name='L6011'&gt;&lt;/a&gt;
<a id='L6026' name='L6026'></a>&lt;a id='L6012' name='L6012'&gt;&lt;/a&gt;\CHAPPAGon
<a id='L6027' name='L6027'></a>&lt;a id='L6013' name='L6013'&gt;&lt;/a&gt;
<a id='L6028' name='L6028'></a>&lt;a id='L6014' name='L6014'&gt;&lt;/a&gt;% Chapter opening.
<a id='L6029' name='L6029'></a>&lt;a id='L6015' name='L6015'&gt;&lt;/a&gt;%
<a id='L6030' name='L6030'></a>&lt;a id='L6016' name='L6016'&gt;&lt;/a&gt;% #1 is the text, #2 is the section type (Ynumbered, Ynothing,
<a id='L6031' name='L6031'></a>&lt;a id='L6017' name='L6017'&gt;&lt;/a&gt;% Yappendix, Yomitfromtoc), #3 the chapter number.
<a id='L6032' name='L6032'></a>&lt;a id='L6018' name='L6018'&gt;&lt;/a&gt;%
<a id='L6033' name='L6033'></a>&lt;a id='L6019' name='L6019'&gt;&lt;/a&gt;% To test against our argument.
<a id='L6034' name='L6034'></a>&lt;a id='L6020' name='L6020'&gt;&lt;/a&gt;\def\Ynothingkeyword{Ynothing}
<a id='L6035' name='L6035'></a>&lt;a id='L6021' name='L6021'&gt;&lt;/a&gt;\def\Yomitfromtockeyword{Yomitfromtoc}
<a id='L6036' name='L6036'></a>&lt;a id='L6022' name='L6022'&gt;&lt;/a&gt;\def\Yappendixkeyword{Yappendix}
<a id='L6037' name='L6037'></a>&lt;a id='L6023' name='L6023'&gt;&lt;/a&gt;%
<a id='L6038' name='L6038'></a>&lt;a id='L6024' name='L6024'&gt;&lt;/a&gt;\def\chapmacro#1#2#3{%
<a id='L6039' name='L6039'></a>&lt;a id='L6025' name='L6025'&gt;&lt;/a&gt;  % Insert the first mark before the heading break (see notes for \domark).
<a id='L6040' name='L6040'></a>&lt;a id='L6026' name='L6026'&gt;&lt;/a&gt;  \let\prevchapterdefs=\lastchapterdefs
<a id='L6041' name='L6041'></a>&lt;a id='L6027' name='L6027'&gt;&lt;/a&gt;  \let\prevsectiondefs=\lastsectiondefs
<a id='L6042' name='L6042'></a>&lt;a id='L6028' name='L6028'&gt;&lt;/a&gt;  \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}%
<a id='L6043' name='L6043'></a>&lt;a id='L6029' name='L6029'&gt;&lt;/a&gt;                        \gdef\thissection{}}%
<a id='L6044' name='L6044'></a>&lt;a id='L6030' name='L6030'&gt;&lt;/a&gt;  %
<a id='L6045' name='L6045'></a>&lt;a id='L6031' name='L6031'&gt;&lt;/a&gt;  \def\temptype{#2}%
<a id='L6046' name='L6046'></a>&lt;a id='L6032' name='L6032'&gt;&lt;/a&gt;  \ifx\temptype\Ynothingkeyword
<a id='L6047' name='L6047'></a>&lt;a id='L6033' name='L6033'&gt;&lt;/a&gt;    \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
<a id='L6048' name='L6048'></a>&lt;a id='L6034' name='L6034'&gt;&lt;/a&gt;                          \gdef\thischapter{\thischaptername}}%
<a id='L6049' name='L6049'></a>&lt;a id='L6035' name='L6035'&gt;&lt;/a&gt;  \else\ifx\temptype\Yomitfromtockeyword
<a id='L6050' name='L6050'></a>&lt;a id='L6036' name='L6036'&gt;&lt;/a&gt;    \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}%
<a id='L6051' name='L6051'></a>&lt;a id='L6037' name='L6037'&gt;&lt;/a&gt;                          \gdef\thischapter{}}%
<a id='L6052' name='L6052'></a>&lt;a id='L6038' name='L6038'&gt;&lt;/a&gt;  \else\ifx\temptype\Yappendixkeyword
<a id='L6053' name='L6053'></a>&lt;a id='L6039' name='L6039'&gt;&lt;/a&gt;    \toks0={#1}%
<a id='L6054' name='L6054'></a>&lt;a id='L6040' name='L6040'&gt;&lt;/a&gt;    \xdef\lastchapterdefs{%
<a id='L6055' name='L6055'></a>&lt;a id='L6041' name='L6041'&gt;&lt;/a&gt;      \gdef\noexpand\thischaptername{\the\toks0}%
<a id='L6056' name='L6056'></a>&lt;a id='L6042' name='L6042'&gt;&lt;/a&gt;      \gdef\noexpand\thischapternum{\appendixletter}%
<a id='L6057' name='L6057'></a>&lt;a id='L6043' name='L6043'&gt;&lt;/a&gt;      % \noexpand\putwordAppendix avoids expanding indigestible
<a id='L6058' name='L6058'></a>&lt;a id='L6044' name='L6044'&gt;&lt;/a&gt;      % commands in some of the translations.
<a id='L6059' name='L6059'></a>&lt;a id='L6045' name='L6045'&gt;&lt;/a&gt;      \gdef\noexpand\thischapter{\noexpand\putwordAppendix{}
<a id='L6060' name='L6060'></a>&lt;a id='L6046' name='L6046'&gt;&lt;/a&gt;                                 \noexpand\thischapternum:
<a id='L6061' name='L6061'></a>&lt;a id='L6047' name='L6047'&gt;&lt;/a&gt;                                 \noexpand\thischaptername}%
<a id='L6062' name='L6062'></a>&lt;a id='L6048' name='L6048'&gt;&lt;/a&gt;    }%
<a id='L6063' name='L6063'></a>&lt;a id='L6049' name='L6049'&gt;&lt;/a&gt;  \else
<a id='L6064' name='L6064'></a>&lt;a id='L6050' name='L6050'&gt;&lt;/a&gt;    \toks0={#1}%
<a id='L6065' name='L6065'></a>&lt;a id='L6051' name='L6051'&gt;&lt;/a&gt;    \xdef\lastchapterdefs{%
<a id='L6066' name='L6066'></a>&lt;a id='L6052' name='L6052'&gt;&lt;/a&gt;      \gdef\noexpand\thischaptername{\the\toks0}%
<a id='L6067' name='L6067'></a>&lt;a id='L6053' name='L6053'&gt;&lt;/a&gt;      \gdef\noexpand\thischapternum{\the\chapno}%
<a id='L6068' name='L6068'></a>&lt;a id='L6054' name='L6054'&gt;&lt;/a&gt;      % \noexpand\putwordChapter avoids expanding indigestible
<a id='L6069' name='L6069'></a>&lt;a id='L6055' name='L6055'&gt;&lt;/a&gt;      % commands in some of the translations.
<a id='L6070' name='L6070'></a>&lt;a id='L6056' name='L6056'&gt;&lt;/a&gt;      \gdef\noexpand\thischapter{\noexpand\thischapternum
<a id='L6071' name='L6071'></a>&lt;a id='L6057' name='L6057'&gt;&lt;/a&gt;                                 \noexpand\putwordChapter{}\ 
<a id='L6072' name='L6072'></a>&lt;a id='L6058' name='L6058'&gt;&lt;/a&gt;                                 \noexpand\thischaptername}%
<a id='L6073' name='L6073'></a>&lt;a id='L6059' name='L6059'&gt;&lt;/a&gt;    }%
<a id='L6074' name='L6074'></a>&lt;a id='L6060' name='L6060'&gt;&lt;/a&gt;  \fi\fi\fi
<a id='L6075' name='L6075'></a>&lt;a id='L6061' name='L6061'&gt;&lt;/a&gt;  %
<a id='L6076' name='L6076'></a>&lt;a id='L6062' name='L6062'&gt;&lt;/a&gt;  % Output the mark.  Pass it through \safewhatsit, to take care of
<a id='L6077' name='L6077'></a>&lt;a id='L6063' name='L6063'&gt;&lt;/a&gt;  % the preceding space.
<a id='L6078' name='L6078'></a>&lt;a id='L6064' name='L6064'&gt;&lt;/a&gt;  \safewhatsit\domark
<a id='L6079' name='L6079'></a>&lt;a id='L6065' name='L6065'&gt;&lt;/a&gt;  %
<a id='L6080' name='L6080'></a>&lt;a id='L6066' name='L6066'&gt;&lt;/a&gt;  % Insert the chapter heading break.
<a id='L6081' name='L6081'></a>&lt;a id='L6067' name='L6067'&gt;&lt;/a&gt;  \pchapsepmacro
<a id='L6082' name='L6082'></a>&lt;a id='L6068' name='L6068'&gt;&lt;/a&gt;  %
<a id='L6083' name='L6083'></a>&lt;a id='L6069' name='L6069'&gt;&lt;/a&gt;  % Now the second mark, after the heading break.  No break points
<a id='L6084' name='L6084'></a>&lt;a id='L6070' name='L6070'&gt;&lt;/a&gt;  % between here and the heading.
<a id='L6085' name='L6085'></a>&lt;a id='L6071' name='L6071'&gt;&lt;/a&gt;  \let\prevchapterdefs=\lastchapterdefs
<a id='L6086' name='L6086'></a>&lt;a id='L6072' name='L6072'&gt;&lt;/a&gt;  \let\prevsectiondefs=\lastsectiondefs
<a id='L6087' name='L6087'></a>&lt;a id='L6073' name='L6073'&gt;&lt;/a&gt;  \domark
<a id='L6088' name='L6088'></a>&lt;a id='L6074' name='L6074'&gt;&lt;/a&gt;  %
<a id='L6089' name='L6089'></a>&lt;a id='L6075' name='L6075'&gt;&lt;/a&gt;  {%
<a id='L6090' name='L6090'></a>&lt;a id='L6076' name='L6076'&gt;&lt;/a&gt;    \chapfonts \rmisbold
<a id='L6091' name='L6091'></a>&lt;a id='L6077' name='L6077'&gt;&lt;/a&gt;    %
<a id='L6092' name='L6092'></a>&lt;a id='L6078' name='L6078'&gt;&lt;/a&gt;    % Have to define \lastsection before calling \donoderef, because the
<a id='L6093' name='L6093'></a>&lt;a id='L6079' name='L6079'&gt;&lt;/a&gt;    % xref code eventually uses it.  On the other hand, it has to be called
<a id='L6094' name='L6094'></a>&lt;a id='L6080' name='L6080'&gt;&lt;/a&gt;    % after \pchapsepmacro, or the headline will change too soon.
<a id='L6095' name='L6095'></a>&lt;a id='L6081' name='L6081'&gt;&lt;/a&gt;    \gdef\lastsection{#1}%
<a id='L6096' name='L6096'></a>&lt;a id='L6082' name='L6082'&gt;&lt;/a&gt;    %
<a id='L6097' name='L6097'></a>&lt;a id='L6083' name='L6083'&gt;&lt;/a&gt;    % Only insert the separating space if we have a chapter/appendix
<a id='L6098' name='L6098'></a>&lt;a id='L6084' name='L6084'&gt;&lt;/a&gt;    % number, and don't print the unnumbered ``number''.
<a id='L6099' name='L6099'></a>&lt;a id='L6085' name='L6085'&gt;&lt;/a&gt;    \ifx\temptype\Ynothingkeyword
<a id='L6100' name='L6100'></a>&lt;a id='L6086' name='L6086'&gt;&lt;/a&gt;      \setbox0 = \hbox{}%
<a id='L6101' name='L6101'></a>&lt;a id='L6087' name='L6087'&gt;&lt;/a&gt;      \def\toctype{unnchap}%
<a id='L6102' name='L6102'></a>&lt;a id='L6088' name='L6088'&gt;&lt;/a&gt;    \else\ifx\temptype\Yomitfromtockeyword
<a id='L6103' name='L6103'></a>&lt;a id='L6089' name='L6089'&gt;&lt;/a&gt;      \setbox0 = \hbox{}% contents like unnumbered, but no toc entry
<a id='L6104' name='L6104'></a>&lt;a id='L6090' name='L6090'&gt;&lt;/a&gt;      \def\toctype{omit}%
<a id='L6105' name='L6105'></a>&lt;a id='L6091' name='L6091'&gt;&lt;/a&gt;    \else\ifx\temptype\Yappendixkeyword
<a id='L6106' name='L6106'></a>&lt;a id='L6092' name='L6092'&gt;&lt;/a&gt;      \setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
<a id='L6107' name='L6107'></a>&lt;a id='L6093' name='L6093'&gt;&lt;/a&gt;      \def\toctype{app}%
<a id='L6108' name='L6108'></a>&lt;a id='L6094' name='L6094'&gt;&lt;/a&gt;    \else
<a id='L6109' name='L6109'></a>&lt;a id='L6095' name='L6095'&gt;&lt;/a&gt;      \setbox0 = \hbox{#3\enspace}%
<a id='L6110' name='L6110'></a>&lt;a id='L6096' name='L6096'&gt;&lt;/a&gt;      \def\toctype{numchap}%
<a id='L6111' name='L6111'></a>&lt;a id='L6097' name='L6097'&gt;&lt;/a&gt;    \fi\fi\fi
<a id='L6112' name='L6112'></a>&lt;a id='L6098' name='L6098'&gt;&lt;/a&gt;    %
<a id='L6113' name='L6113'></a>&lt;a id='L6099' name='L6099'&gt;&lt;/a&gt;    % Write the toc entry for this chapter.  Must come before the
<a id='L6114' name='L6114'></a>&lt;a id='L6100' name='L6100'&gt;&lt;/a&gt;    % \donoderef, because we include the current node name in the toc
<a id='L6115' name='L6115'></a>&lt;a id='L6101' name='L6101'&gt;&lt;/a&gt;    % entry, and \donoderef resets it to empty.
<a id='L6116' name='L6116'></a>&lt;a id='L6102' name='L6102'&gt;&lt;/a&gt;    \writetocentry{\toctype}{#1}{#3}%
<a id='L6117' name='L6117'></a>&lt;a id='L6103' name='L6103'&gt;&lt;/a&gt;    %
<a id='L6118' name='L6118'></a>&lt;a id='L6104' name='L6104'&gt;&lt;/a&gt;    % For pdftex, we have to write out the node definition (aka, make
<a id='L6119' name='L6119'></a>&lt;a id='L6105' name='L6105'&gt;&lt;/a&gt;    % the pdfdest) after any page break, but before the actual text has
<a id='L6120' name='L6120'></a>&lt;a id='L6106' name='L6106'&gt;&lt;/a&gt;    % been typeset.  If the destination for the pdf outline is after the
<a id='L6121' name='L6121'></a>&lt;a id='L6107' name='L6107'&gt;&lt;/a&gt;    % text, then jumping from the outline may wind up with the text not
<a id='L6122' name='L6122'></a>&lt;a id='L6108' name='L6108'&gt;&lt;/a&gt;    % being visible, for instance under high magnification.
<a id='L6123' name='L6123'></a>&lt;a id='L6109' name='L6109'&gt;&lt;/a&gt;    \donoderef{#2}%
<a id='L6124' name='L6124'></a>&lt;a id='L6110' name='L6110'&gt;&lt;/a&gt;    %
<a id='L6125' name='L6125'></a>&lt;a id='L6111' name='L6111'&gt;&lt;/a&gt;    % Typeset the actual heading.
<a id='L6126' name='L6126'></a>&lt;a id='L6112' name='L6112'&gt;&lt;/a&gt;    \nobreak % Avoid page breaks at the interline glue.
<a id='L6127' name='L6127'></a>&lt;a id='L6113' name='L6113'&gt;&lt;/a&gt;    \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe
<a id='L6128' name='L6128'></a>&lt;a id='L6114' name='L6114'&gt;&lt;/a&gt;          \unhbox0 #1\par}%
<a id='L6129' name='L6129'></a>&lt;a id='L6115' name='L6115'&gt;&lt;/a&gt;  }%
<a id='L6130' name='L6130'></a>&lt;a id='L6116' name='L6116'&gt;&lt;/a&gt;  \nobreak\bigskip % no page break after a chapter title
<a id='L6131' name='L6131'></a>&lt;a id='L6117' name='L6117'&gt;&lt;/a&gt;  \nobreak
<a id='L6132' name='L6132'></a>&lt;a id='L6118' name='L6118'&gt;&lt;/a&gt;}
<a id='L6133' name='L6133'></a>&lt;a id='L6119' name='L6119'&gt;&lt;/a&gt;
<a id='L6134' name='L6134'></a>&lt;a id='L6120' name='L6120'&gt;&lt;/a&gt;% @centerchap -- centered and unnumbered.
<a id='L6135' name='L6135'></a>&lt;a id='L6121' name='L6121'&gt;&lt;/a&gt;\let\centerparametersmaybe = \relax
<a id='L6136' name='L6136'></a>&lt;a id='L6122' name='L6122'&gt;&lt;/a&gt;\def\centerparameters{%
<a id='L6137' name='L6137'></a>&lt;a id='L6123' name='L6123'&gt;&lt;/a&gt;  \advance\rightskip by 3\rightskip
<a id='L6138' name='L6138'></a>&lt;a id='L6124' name='L6124'&gt;&lt;/a&gt;  \leftskip = \rightskip
<a id='L6139' name='L6139'></a>&lt;a id='L6125' name='L6125'&gt;&lt;/a&gt;  \parfillskip = 0pt
<a id='L6140' name='L6140'></a>&lt;a id='L6126' name='L6126'&gt;&lt;/a&gt;}
<a id='L6141' name='L6141'></a>&lt;a id='L6127' name='L6127'&gt;&lt;/a&gt;
<a id='L6142' name='L6142'></a>&lt;a id='L6128' name='L6128'&gt;&lt;/a&gt;
<a id='L6143' name='L6143'></a>&lt;a id='L6129' name='L6129'&gt;&lt;/a&gt;% I don't think this chapter style is supported any more, so I'm not
<a id='L6144' name='L6144'></a>&lt;a id='L6130' name='L6130'&gt;&lt;/a&gt;% updating it with the new noderef stuff.  We'll see.  --karl, 11aug03.
<a id='L6145' name='L6145'></a>&lt;a id='L6131' name='L6131'&gt;&lt;/a&gt;%
<a id='L6146' name='L6146'></a>&lt;a id='L6132' name='L6132'&gt;&lt;/a&gt;\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
<a id='L6147' name='L6147'></a>&lt;a id='L6133' name='L6133'&gt;&lt;/a&gt;%
<a id='L6148' name='L6148'></a>&lt;a id='L6134' name='L6134'&gt;&lt;/a&gt;\def\unnchfopen #1{%
<a id='L6149' name='L6149'></a>&lt;a id='L6135' name='L6135'&gt;&lt;/a&gt;  \chapoddpage
<a id='L6150' name='L6150'></a>&lt;a id='L6136' name='L6136'&gt;&lt;/a&gt;  \vbox{\chapfonts \raggedtitlesettings #1\par}%
<a id='L6151' name='L6151'></a>&lt;a id='L6137' name='L6137'&gt;&lt;/a&gt;  \nobreak\bigskip\nobreak
<a id='L6152' name='L6152'></a>&lt;a id='L6138' name='L6138'&gt;&lt;/a&gt;}
<a id='L6153' name='L6153'></a>&lt;a id='L6139' name='L6139'&gt;&lt;/a&gt;\def\chfopen #1#2{\chapoddpage {\chapfonts
<a id='L6154' name='L6154'></a>&lt;a id='L6140' name='L6140'&gt;&lt;/a&gt;\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
<a id='L6155' name='L6155'></a>&lt;a id='L6141' name='L6141'&gt;&lt;/a&gt;\par\penalty 5000 %
<a id='L6156' name='L6156'></a>&lt;a id='L6142' name='L6142'&gt;&lt;/a&gt;}
<a id='L6157' name='L6157'></a>&lt;a id='L6143' name='L6143'&gt;&lt;/a&gt;\def\centerchfopen #1{%
<a id='L6158' name='L6158'></a>&lt;a id='L6144' name='L6144'&gt;&lt;/a&gt;  \chapoddpage
<a id='L6159' name='L6159'></a>&lt;a id='L6145' name='L6145'&gt;&lt;/a&gt;  \vbox{\chapfonts \raggedtitlesettings \hfill #1\hfill}%
<a id='L6160' name='L6160'></a>&lt;a id='L6146' name='L6146'&gt;&lt;/a&gt;  \nobreak\bigskip \nobreak
<a id='L6161' name='L6161'></a>&lt;a id='L6147' name='L6147'&gt;&lt;/a&gt;}
<a id='L6162' name='L6162'></a>&lt;a id='L6148' name='L6148'&gt;&lt;/a&gt;\def\CHAPFopen{%
<a id='L6163' name='L6163'></a>&lt;a id='L6149' name='L6149'&gt;&lt;/a&gt;  \global\let\chapmacro=\chfopen
<a id='L6164' name='L6164'></a>&lt;a id='L6150' name='L6150'&gt;&lt;/a&gt;  \global\let\centerchapmacro=\centerchfopen}
<a id='L6165' name='L6165'></a>&lt;a id='L6151' name='L6151'&gt;&lt;/a&gt;
<a id='L6166' name='L6166'></a>&lt;a id='L6152' name='L6152'&gt;&lt;/a&gt;
<a id='L6167' name='L6167'></a>&lt;a id='L6153' name='L6153'&gt;&lt;/a&gt;% Section titles.  These macros combine the section number parts and
<a id='L6168' name='L6168'></a>&lt;a id='L6154' name='L6154'&gt;&lt;/a&gt;% call the generic \sectionheading to do the printing.
<a id='L6169' name='L6169'></a>&lt;a id='L6155' name='L6155'&gt;&lt;/a&gt;%
<a id='L6170' name='L6170'></a>&lt;a id='L6156' name='L6156'&gt;&lt;/a&gt;\newskip\secheadingskip
<a id='L6171' name='L6171'></a>&lt;a id='L6157' name='L6157'&gt;&lt;/a&gt;\def\secheadingbreak{\dobreak \secheadingskip{-1000}}
<a id='L6172' name='L6172'></a>&lt;a id='L6158' name='L6158'&gt;&lt;/a&gt;
<a id='L6173' name='L6173'></a>&lt;a id='L6159' name='L6159'&gt;&lt;/a&gt;% Subsection titles.
<a id='L6174' name='L6174'></a>&lt;a id='L6160' name='L6160'&gt;&lt;/a&gt;\newskip\subsecheadingskip
<a id='L6175' name='L6175'></a>&lt;a id='L6161' name='L6161'&gt;&lt;/a&gt;\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}}
<a id='L6176' name='L6176'></a>&lt;a id='L6162' name='L6162'&gt;&lt;/a&gt;
<a id='L6177' name='L6177'></a>&lt;a id='L6163' name='L6163'&gt;&lt;/a&gt;% Subsubsection titles.
<a id='L6178' name='L6178'></a>&lt;a id='L6164' name='L6164'&gt;&lt;/a&gt;\def\subsubsecheadingskip{\subsecheadingskip}
<a id='L6179' name='L6179'></a>&lt;a id='L6165' name='L6165'&gt;&lt;/a&gt;\def\subsubsecheadingbreak{\subsecheadingbreak}
<a id='L6180' name='L6180'></a>&lt;a id='L6166' name='L6166'&gt;&lt;/a&gt;
<a id='L6181' name='L6181'></a>&lt;a id='L6167' name='L6167'&gt;&lt;/a&gt;
<a id='L6182' name='L6182'></a>&lt;a id='L6168' name='L6168'&gt;&lt;/a&gt;% Print any size, any type, section title.
<a id='L6183' name='L6183'></a>&lt;a id='L6169' name='L6169'&gt;&lt;/a&gt;%
<a id='L6184' name='L6184'></a>&lt;a id='L6170' name='L6170'&gt;&lt;/a&gt;% #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is
<a id='L6185' name='L6185'></a>&lt;a id='L6171' name='L6171'&gt;&lt;/a&gt;% the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the
<a id='L6186' name='L6186'></a>&lt;a id='L6172' name='L6172'&gt;&lt;/a&gt;% section number.
<a id='L6187' name='L6187'></a>&lt;a id='L6173' name='L6173'&gt;&lt;/a&gt;%
<a id='L6188' name='L6188'></a>&lt;a id='L6174' name='L6174'&gt;&lt;/a&gt;\def\seckeyword{sec}
<a id='L6189' name='L6189'></a>&lt;a id='L6175' name='L6175'&gt;&lt;/a&gt;%
<a id='L6190' name='L6190'></a>&lt;a id='L6176' name='L6176'&gt;&lt;/a&gt;\def\sectionheading#1#2#3#4{%
<a id='L6191' name='L6191'></a>&lt;a id='L6177' name='L6177'&gt;&lt;/a&gt;  {%
<a id='L6192' name='L6192'></a>&lt;a id='L6178' name='L6178'&gt;&lt;/a&gt;    \checkenv{}% should not be in an environment.
<a id='L6193' name='L6193'></a>&lt;a id='L6179' name='L6179'&gt;&lt;/a&gt;    %
<a id='L6194' name='L6194'></a>&lt;a id='L6180' name='L6180'&gt;&lt;/a&gt;    % Switch to the right set of fonts.
<a id='L6195' name='L6195'></a>&lt;a id='L6181' name='L6181'&gt;&lt;/a&gt;    \csname #2fonts\endcsname \rmisbold
<a id='L6196' name='L6196'></a>&lt;a id='L6182' name='L6182'&gt;&lt;/a&gt;    %
<a id='L6197' name='L6197'></a>&lt;a id='L6183' name='L6183'&gt;&lt;/a&gt;    \def\sectionlevel{#2}%
<a id='L6198' name='L6198'></a>&lt;a id='L6184' name='L6184'&gt;&lt;/a&gt;    \def\temptype{#3}%
<a id='L6199' name='L6199'></a>&lt;a id='L6185' name='L6185'&gt;&lt;/a&gt;    %
<a id='L6200' name='L6200'></a>&lt;a id='L6186' name='L6186'&gt;&lt;/a&gt;    % Insert first mark before the heading break (see notes for \domark).
<a id='L6201' name='L6201'></a>&lt;a id='L6187' name='L6187'&gt;&lt;/a&gt;    \let\prevsectiondefs=\lastsectiondefs
<a id='L6202' name='L6202'></a>&lt;a id='L6188' name='L6188'&gt;&lt;/a&gt;    \ifx\temptype\Ynothingkeyword
<a id='L6203' name='L6203'></a>&lt;a id='L6189' name='L6189'&gt;&lt;/a&gt;      \ifx\sectionlevel\seckeyword
<a id='L6204' name='L6204'></a>&lt;a id='L6190' name='L6190'&gt;&lt;/a&gt;        \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}%
<a id='L6205' name='L6205'></a>&lt;a id='L6191' name='L6191'&gt;&lt;/a&gt;                              \gdef\thissection{\thissectionname}}%
<a id='L6206' name='L6206'></a>&lt;a id='L6192' name='L6192'&gt;&lt;/a&gt;      \fi
<a id='L6207' name='L6207'></a>&lt;a id='L6193' name='L6193'&gt;&lt;/a&gt;    \else\ifx\temptype\Yomitfromtockeyword
<a id='L6208' name='L6208'></a>&lt;a id='L6194' name='L6194'&gt;&lt;/a&gt;      % Don't redefine \thissection.
<a id='L6209' name='L6209'></a>&lt;a id='L6195' name='L6195'&gt;&lt;/a&gt;    \else\ifx\temptype\Yappendixkeyword
<a id='L6210' name='L6210'></a>&lt;a id='L6196' name='L6196'&gt;&lt;/a&gt;      \ifx\sectionlevel\seckeyword
<a id='L6211' name='L6211'></a>&lt;a id='L6197' name='L6197'&gt;&lt;/a&gt;        \toks0={#1}%
<a id='L6212' name='L6212'></a>&lt;a id='L6198' name='L6198'&gt;&lt;/a&gt;        \xdef\lastsectiondefs{%
<a id='L6213' name='L6213'></a>&lt;a id='L6199' name='L6199'&gt;&lt;/a&gt;          \gdef\noexpand\thissectionname{\the\toks0}%
<a id='L6214' name='L6214'></a>&lt;a id='L6200' name='L6200'&gt;&lt;/a&gt;          \gdef\noexpand\thissectionnum{#4}%
<a id='L6215' name='L6215'></a>&lt;a id='L6201' name='L6201'&gt;&lt;/a&gt;          % \noexpand\putwordSection avoids expanding indigestible
<a id='L6216' name='L6216'></a>&lt;a id='L6202' name='L6202'&gt;&lt;/a&gt;          % commands in some of the translations.
<a id='L6217' name='L6217'></a>&lt;a id='L6203' name='L6203'&gt;&lt;/a&gt;          \gdef\noexpand\thissection{\noexpand\putwordSection{}
<a id='L6218' name='L6218'></a>&lt;a id='L6204' name='L6204'&gt;&lt;/a&gt;                                     \noexpand\thissectionnum:
<a id='L6219' name='L6219'></a>&lt;a id='L6205' name='L6205'&gt;&lt;/a&gt;                                     \noexpand\thissectionname}%
<a id='L6220' name='L6220'></a>&lt;a id='L6206' name='L6206'&gt;&lt;/a&gt;        }%
<a id='L6221' name='L6221'></a>&lt;a id='L6207' name='L6207'&gt;&lt;/a&gt;      \fi
<a id='L6222' name='L6222'></a>&lt;a id='L6208' name='L6208'&gt;&lt;/a&gt;    \else
<a id='L6223' name='L6223'></a>&lt;a id='L6209' name='L6209'&gt;&lt;/a&gt;      \ifx\sectionlevel\seckeyword
<a id='L6224' name='L6224'></a>&lt;a id='L6210' name='L6210'&gt;&lt;/a&gt;        \toks0={#1}%
<a id='L6225' name='L6225'></a>&lt;a id='L6211' name='L6211'&gt;&lt;/a&gt;        \xdef\lastsectiondefs{%
<a id='L6226' name='L6226'></a>&lt;a id='L6212' name='L6212'&gt;&lt;/a&gt;          \gdef\noexpand\thissectionname{\the\toks0}%
<a id='L6227' name='L6227'></a>&lt;a id='L6213' name='L6213'&gt;&lt;/a&gt;          \gdef\noexpand\thissectionnum{#4}%
<a id='L6228' name='L6228'></a>&lt;a id='L6214' name='L6214'&gt;&lt;/a&gt;          % \noexpand\putwordSection avoids expanding indigestible
<a id='L6229' name='L6229'></a>&lt;a id='L6215' name='L6215'&gt;&lt;/a&gt;          % commands in some of the translations.
<a id='L6230' name='L6230'></a>&lt;a id='L6216' name='L6216'&gt;&lt;/a&gt;          \gdef\noexpand\thissection{\noexpand\putwordSection{}
<a id='L6231' name='L6231'></a>&lt;a id='L6217' name='L6217'&gt;&lt;/a&gt;                                     \noexpand\thissectionnum:
<a id='L6232' name='L6232'></a>&lt;a id='L6218' name='L6218'&gt;&lt;/a&gt;                                     \noexpand\thissectionname}%
<a id='L6233' name='L6233'></a>&lt;a id='L6219' name='L6219'&gt;&lt;/a&gt;        }%
<a id='L6234' name='L6234'></a>&lt;a id='L6220' name='L6220'&gt;&lt;/a&gt;      \fi
<a id='L6235' name='L6235'></a>&lt;a id='L6221' name='L6221'&gt;&lt;/a&gt;    \fi\fi\fi
<a id='L6236' name='L6236'></a>&lt;a id='L6222' name='L6222'&gt;&lt;/a&gt;    %
<a id='L6237' name='L6237'></a>&lt;a id='L6223' name='L6223'&gt;&lt;/a&gt;    % Go into vertical mode.  Usually we'll already be there, but we
<a id='L6238' name='L6238'></a>&lt;a id='L6224' name='L6224'&gt;&lt;/a&gt;    % don't want the following whatsit to end up in a preceding paragraph
<a id='L6239' name='L6239'></a>&lt;a id='L6225' name='L6225'&gt;&lt;/a&gt;    % if the document didn't happen to have a blank line.
<a id='L6240' name='L6240'></a>&lt;a id='L6226' name='L6226'&gt;&lt;/a&gt;    \par
<a id='L6241' name='L6241'></a>&lt;a id='L6227' name='L6227'&gt;&lt;/a&gt;    %
<a id='L6242' name='L6242'></a>&lt;a id='L6228' name='L6228'&gt;&lt;/a&gt;    % Output the mark.  Pass it through \safewhatsit, to take care of
<a id='L6243' name='L6243'></a>&lt;a id='L6229' name='L6229'&gt;&lt;/a&gt;    % the preceding space.
<a id='L6244' name='L6244'></a>&lt;a id='L6230' name='L6230'&gt;&lt;/a&gt;    \safewhatsit\domark
<a id='L6245' name='L6245'></a>&lt;a id='L6231' name='L6231'&gt;&lt;/a&gt;    %
<a id='L6246' name='L6246'></a>&lt;a id='L6232' name='L6232'&gt;&lt;/a&gt;    % Insert space above the heading.
<a id='L6247' name='L6247'></a>&lt;a id='L6233' name='L6233'&gt;&lt;/a&gt;    \csname #2headingbreak\endcsname
<a id='L6248' name='L6248'></a>&lt;a id='L6234' name='L6234'&gt;&lt;/a&gt;    %
<a id='L6249' name='L6249'></a>&lt;a id='L6235' name='L6235'&gt;&lt;/a&gt;    % Now the second mark, after the heading break.  No break points
<a id='L6250' name='L6250'></a>&lt;a id='L6236' name='L6236'&gt;&lt;/a&gt;    % between here and the heading.
<a id='L6251' name='L6251'></a>&lt;a id='L6237' name='L6237'&gt;&lt;/a&gt;    \let\prevsectiondefs=\lastsectiondefs
<a id='L6252' name='L6252'></a>&lt;a id='L6238' name='L6238'&gt;&lt;/a&gt;    \domark
<a id='L6253' name='L6253'></a>&lt;a id='L6239' name='L6239'&gt;&lt;/a&gt;    %
<a id='L6254' name='L6254'></a>&lt;a id='L6240' name='L6240'&gt;&lt;/a&gt;    % Only insert the space after the number if we have a section number.
<a id='L6255' name='L6255'></a>&lt;a id='L6241' name='L6241'&gt;&lt;/a&gt;    \ifx\temptype\Ynothingkeyword
<a id='L6256' name='L6256'></a>&lt;a id='L6242' name='L6242'&gt;&lt;/a&gt;      \setbox0 = \hbox{}%
<a id='L6257' name='L6257'></a>&lt;a id='L6243' name='L6243'&gt;&lt;/a&gt;      \def\toctype{unn}%
<a id='L6258' name='L6258'></a>&lt;a id='L6244' name='L6244'&gt;&lt;/a&gt;      \gdef\lastsection{#1}%
<a id='L6259' name='L6259'></a>&lt;a id='L6245' name='L6245'&gt;&lt;/a&gt;    \else\ifx\temptype\Yomitfromtockeyword
<a id='L6260' name='L6260'></a>&lt;a id='L6246' name='L6246'&gt;&lt;/a&gt;      % for @headings -- no section number, don't include in toc,
<a id='L6261' name='L6261'></a>&lt;a id='L6247' name='L6247'&gt;&lt;/a&gt;      % and don't redefine \lastsection.
<a id='L6262' name='L6262'></a>&lt;a id='L6248' name='L6248'&gt;&lt;/a&gt;      \setbox0 = \hbox{}%
<a id='L6263' name='L6263'></a>&lt;a id='L6249' name='L6249'&gt;&lt;/a&gt;      \def\toctype{omit}%
<a id='L6264' name='L6264'></a>&lt;a id='L6250' name='L6250'&gt;&lt;/a&gt;      \let\sectionlevel=\empty
<a id='L6265' name='L6265'></a>&lt;a id='L6251' name='L6251'&gt;&lt;/a&gt;    \else\ifx\temptype\Yappendixkeyword
<a id='L6266' name='L6266'></a>&lt;a id='L6252' name='L6252'&gt;&lt;/a&gt;      \setbox0 = \hbox{#4\enspace}%
<a id='L6267' name='L6267'></a>&lt;a id='L6253' name='L6253'&gt;&lt;/a&gt;      \def\toctype{app}%
<a id='L6268' name='L6268'></a>&lt;a id='L6254' name='L6254'&gt;&lt;/a&gt;      \gdef\lastsection{#1}%
<a id='L6269' name='L6269'></a>&lt;a id='L6255' name='L6255'&gt;&lt;/a&gt;    \else
<a id='L6270' name='L6270'></a>&lt;a id='L6256' name='L6256'&gt;&lt;/a&gt;      \setbox0 = \hbox{#4\enspace}%
<a id='L6271' name='L6271'></a>&lt;a id='L6257' name='L6257'&gt;&lt;/a&gt;      \def\toctype{num}%
<a id='L6272' name='L6272'></a>&lt;a id='L6258' name='L6258'&gt;&lt;/a&gt;      \gdef\lastsection{#1}%
<a id='L6273' name='L6273'></a>&lt;a id='L6259' name='L6259'&gt;&lt;/a&gt;    \fi\fi\fi
<a id='L6274' name='L6274'></a>&lt;a id='L6260' name='L6260'&gt;&lt;/a&gt;    %
<a id='L6275' name='L6275'></a>&lt;a id='L6261' name='L6261'&gt;&lt;/a&gt;    % Write the toc entry (before \donoderef).  See comments in \chapmacro.
<a id='L6276' name='L6276'></a>&lt;a id='L6262' name='L6262'&gt;&lt;/a&gt;    \writetocentry{\toctype\sectionlevel}{#1}{#4}%
<a id='L6277' name='L6277'></a>&lt;a id='L6263' name='L6263'&gt;&lt;/a&gt;    %
<a id='L6278' name='L6278'></a>&lt;a id='L6264' name='L6264'&gt;&lt;/a&gt;    % Write the node reference (= pdf destination for pdftex).
<a id='L6279' name='L6279'></a>&lt;a id='L6265' name='L6265'&gt;&lt;/a&gt;    % Again, see comments in \chapmacro.
<a id='L6280' name='L6280'></a>&lt;a id='L6266' name='L6266'&gt;&lt;/a&gt;    \donoderef{#3}%
<a id='L6281' name='L6281'></a>&lt;a id='L6267' name='L6267'&gt;&lt;/a&gt;    %
<a id='L6282' name='L6282'></a>&lt;a id='L6268' name='L6268'&gt;&lt;/a&gt;    % Interline glue will be inserted when the vbox is completed.
<a id='L6283' name='L6283'></a>&lt;a id='L6269' name='L6269'&gt;&lt;/a&gt;    % That glue will be a valid breakpoint for the page, since it'll be
<a id='L6284' name='L6284'></a>&lt;a id='L6270' name='L6270'&gt;&lt;/a&gt;    % preceded by a whatsit (usually from the \donoderef, or from the
<a id='L6285' name='L6285'></a>&lt;a id='L6271' name='L6271'&gt;&lt;/a&gt;    % \writetocentry if there was no node).  We don't want to allow that
<a id='L6286' name='L6286'></a>&lt;a id='L6272' name='L6272'&gt;&lt;/a&gt;    % break, since then the whatsits could end up on page n while the
<a id='L6287' name='L6287'></a>&lt;a id='L6273' name='L6273'&gt;&lt;/a&gt;    % section is on page n+1, thus toc/etc. are wrong.  Debian bug 276000.
<a id='L6288' name='L6288'></a>&lt;a id='L6274' name='L6274'&gt;&lt;/a&gt;    \nobreak
<a id='L6289' name='L6289'></a>&lt;a id='L6275' name='L6275'&gt;&lt;/a&gt;    %
<a id='L6290' name='L6290'></a>&lt;a id='L6276' name='L6276'&gt;&lt;/a&gt;    % Output the actual section heading.
<a id='L6291' name='L6291'></a>&lt;a id='L6277' name='L6277'&gt;&lt;/a&gt;    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
<a id='L6292' name='L6292'></a>&lt;a id='L6278' name='L6278'&gt;&lt;/a&gt;          \hangindent=\wd0  % zero if no section number
<a id='L6293' name='L6293'></a>&lt;a id='L6279' name='L6279'&gt;&lt;/a&gt;          \unhbox0 #1}%
<a id='L6294' name='L6294'></a>&lt;a id='L6280' name='L6280'&gt;&lt;/a&gt;  }%
<a id='L6295' name='L6295'></a>&lt;a id='L6281' name='L6281'&gt;&lt;/a&gt;  % Add extra space after the heading -- half of whatever came above it.
<a id='L6296' name='L6296'></a>&lt;a id='L6282' name='L6282'&gt;&lt;/a&gt;  % Don't allow stretch, though.
<a id='L6297' name='L6297'></a>&lt;a id='L6283' name='L6283'&gt;&lt;/a&gt;  \kern .5 \csname #2headingskip\endcsname
<a id='L6298' name='L6298'></a>&lt;a id='L6284' name='L6284'&gt;&lt;/a&gt;  %
<a id='L6299' name='L6299'></a>&lt;a id='L6285' name='L6285'&gt;&lt;/a&gt;  % Do not let the kern be a potential breakpoint, as it would be if it
<a id='L6300' name='L6300'></a>&lt;a id='L6286' name='L6286'&gt;&lt;/a&gt;  % was followed by glue.
<a id='L6301' name='L6301'></a>&lt;a id='L6287' name='L6287'&gt;&lt;/a&gt;  \nobreak
<a id='L6302' name='L6302'></a>&lt;a id='L6288' name='L6288'&gt;&lt;/a&gt;  %
<a id='L6303' name='L6303'></a>&lt;a id='L6289' name='L6289'&gt;&lt;/a&gt;  % We'll almost certainly start a paragraph next, so don't let that
<a id='L6304' name='L6304'></a>&lt;a id='L6290' name='L6290'&gt;&lt;/a&gt;  % glue accumulate.  (Not a breakpoint because it's preceded by a
<a id='L6305' name='L6305'></a>&lt;a id='L6291' name='L6291'&gt;&lt;/a&gt;  % discardable item.)  However, when a paragraph is not started next
<a id='L6306' name='L6306'></a>&lt;a id='L6292' name='L6292'&gt;&lt;/a&gt;  % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out
<a id='L6307' name='L6307'></a>&lt;a id='L6293' name='L6293'&gt;&lt;/a&gt;  % or the negative glue will cause weirdly wrong output, typically
<a id='L6308' name='L6308'></a>&lt;a id='L6294' name='L6294'&gt;&lt;/a&gt;  % obscuring the section heading with something else.
<a id='L6309' name='L6309'></a>&lt;a id='L6295' name='L6295'&gt;&lt;/a&gt;  \vskip-\parskip
<a id='L6310' name='L6310'></a>&lt;a id='L6296' name='L6296'&gt;&lt;/a&gt;  %
<a id='L6311' name='L6311'></a>&lt;a id='L6297' name='L6297'&gt;&lt;/a&gt;  % This is so the last item on the main vertical list is a known
<a id='L6312' name='L6312'></a>&lt;a id='L6298' name='L6298'&gt;&lt;/a&gt;  % \penalty &amp;gt; 10000, so \startdefun, etc., can recognize the situation
<a id='L6313' name='L6313'></a>&lt;a id='L6299' name='L6299'&gt;&lt;/a&gt;  % and do the needful.
<a id='L6314' name='L6314'></a>&lt;a id='L6300' name='L6300'&gt;&lt;/a&gt;  \penalty 10001
<a id='L6315' name='L6315'></a>&lt;a id='L6301' name='L6301'&gt;&lt;/a&gt;}
<a id='L6316' name='L6316'></a>&lt;a id='L6302' name='L6302'&gt;&lt;/a&gt;
<a id='L6317' name='L6317'></a>&lt;a id='L6303' name='L6303'&gt;&lt;/a&gt;
<a id='L6318' name='L6318'></a>&lt;a id='L6304' name='L6304'&gt;&lt;/a&gt;\message{toc,}
<a id='L6319' name='L6319'></a>&lt;a id='L6305' name='L6305'&gt;&lt;/a&gt;% Table of contents.
<a id='L6320' name='L6320'></a>&lt;a id='L6306' name='L6306'&gt;&lt;/a&gt;\newwrite\tocfile
<a id='L6321' name='L6321'></a>&lt;a id='L6307' name='L6307'&gt;&lt;/a&gt;
<a id='L6322' name='L6322'></a>&lt;a id='L6308' name='L6308'&gt;&lt;/a&gt;% Write an entry to the toc file, opening it if necessary.
<a id='L6323' name='L6323'></a>&lt;a id='L6309' name='L6309'&gt;&lt;/a&gt;% Called from @chapter, etc.
<a id='L6324' name='L6324'></a>&lt;a id='L6310' name='L6310'&gt;&lt;/a&gt;%
<a id='L6325' name='L6325'></a>&lt;a id='L6311' name='L6311'&gt;&lt;/a&gt;% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno}
<a id='L6326' name='L6326'></a>&lt;a id='L6312' name='L6312'&gt;&lt;/a&gt;% We append the current node name (if any) and page number as additional
<a id='L6327' name='L6327'></a>&lt;a id='L6313' name='L6313'&gt;&lt;/a&gt;% arguments for the \{chap,sec,...}entry macros which will eventually
<a id='L6328' name='L6328'></a>&lt;a id='L6314' name='L6314'&gt;&lt;/a&gt;% read this.  The node name is used in the pdf outlines as the
<a id='L6329' name='L6329'></a>&lt;a id='L6315' name='L6315'&gt;&lt;/a&gt;% destination to jump to.
<a id='L6330' name='L6330'></a>&lt;a id='L6316' name='L6316'&gt;&lt;/a&gt;%
<a id='L6331' name='L6331'></a>&lt;a id='L6317' name='L6317'&gt;&lt;/a&gt;% We open the .toc file for writing here instead of at @setfilename (or
<a id='L6332' name='L6332'></a>&lt;a id='L6318' name='L6318'&gt;&lt;/a&gt;% any other fixed time) so that @contents can be anywhere in the document.
<a id='L6333' name='L6333'></a>&lt;a id='L6319' name='L6319'&gt;&lt;/a&gt;% But if #1 is `omit', then we don't do anything.  This is used for the
<a id='L6334' name='L6334'></a>&lt;a id='L6320' name='L6320'&gt;&lt;/a&gt;% table of contents chapter openings themselves.
<a id='L6335' name='L6335'></a>&lt;a id='L6321' name='L6321'&gt;&lt;/a&gt;%
<a id='L6336' name='L6336'></a>&lt;a id='L6322' name='L6322'&gt;&lt;/a&gt;\newif\iftocfileopened
<a id='L6337' name='L6337'></a>&lt;a id='L6323' name='L6323'&gt;&lt;/a&gt;\def\omitkeyword{omit}%
<a id='L6338' name='L6338'></a>&lt;a id='L6324' name='L6324'&gt;&lt;/a&gt;%
<a id='L6339' name='L6339'></a>&lt;a id='L6325' name='L6325'&gt;&lt;/a&gt;\def\writetocentry#1#2#3{%
<a id='L6340' name='L6340'></a>&lt;a id='L6326' name='L6326'&gt;&lt;/a&gt;  \edef\writetoctype{#1}%
<a id='L6341' name='L6341'></a>&lt;a id='L6327' name='L6327'&gt;&lt;/a&gt;  \ifx\writetoctype\omitkeyword \else
<a id='L6342' name='L6342'></a>&lt;a id='L6328' name='L6328'&gt;&lt;/a&gt;    \iftocfileopened\else
<a id='L6343' name='L6343'></a>&lt;a id='L6329' name='L6329'&gt;&lt;/a&gt;      \immediate\openout\tocfile = \jobname.toc
<a id='L6344' name='L6344'></a>&lt;a id='L6330' name='L6330'&gt;&lt;/a&gt;      \global\tocfileopenedtrue
<a id='L6345' name='L6345'></a>&lt;a id='L6331' name='L6331'&gt;&lt;/a&gt;    \fi
<a id='L6346' name='L6346'></a>&lt;a id='L6332' name='L6332'&gt;&lt;/a&gt;    %
<a id='L6347' name='L6347'></a>&lt;a id='L6333' name='L6333'&gt;&lt;/a&gt;    \iflinks
<a id='L6348' name='L6348'></a>&lt;a id='L6334' name='L6334'&gt;&lt;/a&gt;      {\atdummies
<a id='L6349' name='L6349'></a>&lt;a id='L6335' name='L6335'&gt;&lt;/a&gt;       \edef\temp{%
<a id='L6350' name='L6350'></a>&lt;a id='L6336' name='L6336'&gt;&lt;/a&gt;         \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}%
<a id='L6351' name='L6351'></a>&lt;a id='L6337' name='L6337'&gt;&lt;/a&gt;       \temp
<a id='L6352' name='L6352'></a>&lt;a id='L6338' name='L6338'&gt;&lt;/a&gt;      }%
<a id='L6353' name='L6353'></a>&lt;a id='L6339' name='L6339'&gt;&lt;/a&gt;    \fi
<a id='L6354' name='L6354'></a>&lt;a id='L6340' name='L6340'&gt;&lt;/a&gt;  \fi
<a id='L6355' name='L6355'></a>&lt;a id='L6341' name='L6341'&gt;&lt;/a&gt;  %
<a id='L6356' name='L6356'></a>&lt;a id='L6342' name='L6342'&gt;&lt;/a&gt;  % Tell \shipout to create a pdf destination on each page, if we're
<a id='L6357' name='L6357'></a>&lt;a id='L6343' name='L6343'&gt;&lt;/a&gt;  % writing pdf.  These are used in the table of contents.  We can't
<a id='L6358' name='L6358'></a>&lt;a id='L6344' name='L6344'&gt;&lt;/a&gt;  % just write one on every page because the title pages are numbered
<a id='L6359' name='L6359'></a>&lt;a id='L6345' name='L6345'&gt;&lt;/a&gt;  % 1 and 2 (the page numbers aren't printed), and so are the first
<a id='L6360' name='L6360'></a>&lt;a id='L6346' name='L6346'&gt;&lt;/a&gt;  % two pages of the document.  Thus, we'd have two destinations named
<a id='L6361' name='L6361'></a>&lt;a id='L6347' name='L6347'&gt;&lt;/a&gt;  % `1', and two named `2'.
<a id='L6362' name='L6362'></a>&lt;a id='L6348' name='L6348'&gt;&lt;/a&gt;  \ifpdf \global\pdfmakepagedesttrue \fi
<a id='L6363' name='L6363'></a>&lt;a id='L6349' name='L6349'&gt;&lt;/a&gt;}
<a id='L6364' name='L6364'></a>&lt;a id='L6350' name='L6350'&gt;&lt;/a&gt;
<a id='L6365' name='L6365'></a>&lt;a id='L6351' name='L6351'&gt;&lt;/a&gt;
<a id='L6366' name='L6366'></a>&lt;a id='L6352' name='L6352'&gt;&lt;/a&gt;% These characters do not print properly in the Computer Modern roman
<a id='L6367' name='L6367'></a>&lt;a id='L6353' name='L6353'&gt;&lt;/a&gt;% fonts, so we must take special care.  This is more or less redundant
<a id='L6368' name='L6368'></a>&lt;a id='L6354' name='L6354'&gt;&lt;/a&gt;% with the Texinfo input format setup at the end of this file.
<a id='L6369' name='L6369'></a>&lt;a id='L6355' name='L6355'&gt;&lt;/a&gt;%
<a id='L6370' name='L6370'></a>&lt;a id='L6356' name='L6356'&gt;&lt;/a&gt;\def\activecatcodes{%
<a id='L6371' name='L6371'></a>&lt;a id='L6357' name='L6357'&gt;&lt;/a&gt;  \catcode`\"=\active
<a id='L6372' name='L6372'></a>&lt;a id='L6358' name='L6358'&gt;&lt;/a&gt;  \catcode`\$=\active
<a id='L6373' name='L6373'></a>&lt;a id='L6359' name='L6359'&gt;&lt;/a&gt;  \catcode`\&amp;lt;=\active
<a id='L6374' name='L6374'></a>&lt;a id='L6360' name='L6360'&gt;&lt;/a&gt;  \catcode`\&amp;gt;=\active
<a id='L6375' name='L6375'></a>&lt;a id='L6361' name='L6361'&gt;&lt;/a&gt;  \catcode`\\=\active
<a id='L6376' name='L6376'></a>&lt;a id='L6362' name='L6362'&gt;&lt;/a&gt;  \catcode`\^=\active
<a id='L6377' name='L6377'></a>&lt;a id='L6363' name='L6363'&gt;&lt;/a&gt;  \catcode`\_=\active
<a id='L6378' name='L6378'></a>&lt;a id='L6364' name='L6364'&gt;&lt;/a&gt;  \catcode`\|=\active
<a id='L6379' name='L6379'></a>&lt;a id='L6365' name='L6365'&gt;&lt;/a&gt;  \catcode`\~=\active
<a id='L6380' name='L6380'></a>&lt;a id='L6366' name='L6366'&gt;&lt;/a&gt;}
<a id='L6381' name='L6381'></a>&lt;a id='L6367' name='L6367'&gt;&lt;/a&gt;
<a id='L6382' name='L6382'></a>&lt;a id='L6368' name='L6368'&gt;&lt;/a&gt;
<a id='L6383' name='L6383'></a>&lt;a id='L6369' name='L6369'&gt;&lt;/a&gt;% Read the toc file, which is essentially Texinfo input.
<a id='L6384' name='L6384'></a>&lt;a id='L6370' name='L6370'&gt;&lt;/a&gt;\def\readtocfile{%
<a id='L6385' name='L6385'></a>&lt;a id='L6371' name='L6371'&gt;&lt;/a&gt;  \setupdatafile
<a id='L6386' name='L6386'></a>&lt;a id='L6372' name='L6372'&gt;&lt;/a&gt;  \activecatcodes
<a id='L6387' name='L6387'></a>&lt;a id='L6373' name='L6373'&gt;&lt;/a&gt;  \input \tocreadfilename
<a id='L6388' name='L6388'></a>&lt;a id='L6374' name='L6374'&gt;&lt;/a&gt;}
<a id='L6389' name='L6389'></a>&lt;a id='L6375' name='L6375'&gt;&lt;/a&gt;
<a id='L6390' name='L6390'></a>&lt;a id='L6376' name='L6376'&gt;&lt;/a&gt;\newskip\contentsrightmargin \contentsrightmargin=1in
<a id='L6391' name='L6391'></a>&lt;a id='L6377' name='L6377'&gt;&lt;/a&gt;\newcount\savepageno
<a id='L6392' name='L6392'></a>&lt;a id='L6378' name='L6378'&gt;&lt;/a&gt;\newcount\lastnegativepageno \lastnegativepageno = -1
<a id='L6393' name='L6393'></a>&lt;a id='L6379' name='L6379'&gt;&lt;/a&gt;
<a id='L6394' name='L6394'></a>&lt;a id='L6380' name='L6380'&gt;&lt;/a&gt;% Prepare to read what we've written to \tocfile.
<a id='L6395' name='L6395'></a>&lt;a id='L6381' name='L6381'&gt;&lt;/a&gt;%
<a id='L6396' name='L6396'></a>&lt;a id='L6382' name='L6382'&gt;&lt;/a&gt;\def\startcontents#1{%
<a id='L6397' name='L6397'></a>&lt;a id='L6383' name='L6383'&gt;&lt;/a&gt;  % If @setchapternewpage on, and @headings double, the contents should
<a id='L6398' name='L6398'></a>&lt;a id='L6384' name='L6384'&gt;&lt;/a&gt;  % start on an odd page, unlike chapters.  Thus, we maintain
<a id='L6399' name='L6399'></a>&lt;a id='L6385' name='L6385'&gt;&lt;/a&gt;  % \contentsalignmacro in parallel with \pagealignmacro.
<a id='L6400' name='L6400'></a>&lt;a id='L6386' name='L6386'&gt;&lt;/a&gt;  % From: Torbjorn Granlund &amp;lt;tege@matematik.su.se&amp;gt;
<a id='L6401' name='L6401'></a>&lt;a id='L6387' name='L6387'&gt;&lt;/a&gt;  \contentsalignmacro
<a id='L6402' name='L6402'></a>&lt;a id='L6388' name='L6388'&gt;&lt;/a&gt;  \immediate\closeout\tocfile
<a id='L6403' name='L6403'></a>&lt;a id='L6389' name='L6389'&gt;&lt;/a&gt;  %
<a id='L6404' name='L6404'></a>&lt;a id='L6390' name='L6390'&gt;&lt;/a&gt;  % Don't need to put `Contents' or `Short Contents' in the headline.
<a id='L6405' name='L6405'></a>&lt;a id='L6391' name='L6391'&gt;&lt;/a&gt;  % It is abundantly clear what they are.
<a id='L6406' name='L6406'></a>&lt;a id='L6392' name='L6392'&gt;&lt;/a&gt;  \chapmacro{#1}{Yomitfromtoc}{}%
<a id='L6407' name='L6407'></a>&lt;a id='L6393' name='L6393'&gt;&lt;/a&gt;  %
<a id='L6408' name='L6408'></a>&lt;a id='L6394' name='L6394'&gt;&lt;/a&gt;  \savepageno = \pageno
<a id='L6409' name='L6409'></a>&lt;a id='L6395' name='L6395'&gt;&lt;/a&gt;  \begingroup                  % Set up to handle contents files properly.
<a id='L6410' name='L6410'></a>&lt;a id='L6396' name='L6396'&gt;&lt;/a&gt;    \raggedbottom              % Worry more about breakpoints than the bottom.
<a id='L6411' name='L6411'></a>&lt;a id='L6397' name='L6397'&gt;&lt;/a&gt;    \advance\hsize by -\contentsrightmargin % Don't use the full line length.
<a id='L6412' name='L6412'></a>&lt;a id='L6398' name='L6398'&gt;&lt;/a&gt;    %
<a id='L6413' name='L6413'></a>&lt;a id='L6399' name='L6399'&gt;&lt;/a&gt;    % Roman numerals for page numbers.
<a id='L6414' name='L6414'></a>&lt;a id='L6400' name='L6400'&gt;&lt;/a&gt;    \ifnum \pageno&amp;gt;0 \global\pageno = \lastnegativepageno \fi
<a id='L6415' name='L6415'></a>&lt;a id='L6401' name='L6401'&gt;&lt;/a&gt;}
<a id='L6416' name='L6416'></a>&lt;a id='L6402' name='L6402'&gt;&lt;/a&gt;
<a id='L6417' name='L6417'></a>&lt;a id='L6403' name='L6403'&gt;&lt;/a&gt;% redefined for the two-volume lispref.  We always output on
<a id='L6418' name='L6418'></a>&lt;a id='L6404' name='L6404'&gt;&lt;/a&gt;% \jobname.toc even if this is redefined.
<a id='L6419' name='L6419'></a>&lt;a id='L6405' name='L6405'&gt;&lt;/a&gt;%
<a id='L6420' name='L6420'></a>&lt;a id='L6406' name='L6406'&gt;&lt;/a&gt;\def\tocreadfilename{\jobname.toc}
<a id='L6421' name='L6421'></a>&lt;a id='L6407' name='L6407'&gt;&lt;/a&gt;
<a id='L6422' name='L6422'></a>&lt;a id='L6408' name='L6408'&gt;&lt;/a&gt;% Normal (long) toc.
<a id='L6423' name='L6423'></a>&lt;a id='L6409' name='L6409'&gt;&lt;/a&gt;%
<a id='L6424' name='L6424'></a>&lt;a id='L6410' name='L6410'&gt;&lt;/a&gt;\def\contents{%
<a id='L6425' name='L6425'></a>&lt;a id='L6411' name='L6411'&gt;&lt;/a&gt;  \startcontents{\putwordTOC}%
<a id='L6426' name='L6426'></a>&lt;a id='L6412' name='L6412'&gt;&lt;/a&gt;    \openin 1 \tocreadfilename\space
<a id='L6427' name='L6427'></a>&lt;a id='L6413' name='L6413'&gt;&lt;/a&gt;    \ifeof 1 \else
<a id='L6428' name='L6428'></a>&lt;a id='L6414' name='L6414'&gt;&lt;/a&gt;      \readtocfile
<a id='L6429' name='L6429'></a>&lt;a id='L6415' name='L6415'&gt;&lt;/a&gt;    \fi
<a id='L6430' name='L6430'></a>&lt;a id='L6416' name='L6416'&gt;&lt;/a&gt;    \vfill \eject
<a id='L6431' name='L6431'></a>&lt;a id='L6417' name='L6417'&gt;&lt;/a&gt;    \contentsalignmacro % in case @setchapternewpage odd is in effect
<a id='L6432' name='L6432'></a>&lt;a id='L6418' name='L6418'&gt;&lt;/a&gt;    \ifeof 1 \else
<a id='L6433' name='L6433'></a>&lt;a id='L6419' name='L6419'&gt;&lt;/a&gt;      \pdfmakeoutlines
<a id='L6434' name='L6434'></a>&lt;a id='L6420' name='L6420'&gt;&lt;/a&gt;    \fi
<a id='L6435' name='L6435'></a>&lt;a id='L6421' name='L6421'&gt;&lt;/a&gt;    \closein 1
<a id='L6436' name='L6436'></a>&lt;a id='L6422' name='L6422'&gt;&lt;/a&gt;  \endgroup
<a id='L6437' name='L6437'></a>&lt;a id='L6423' name='L6423'&gt;&lt;/a&gt;  \lastnegativepageno = \pageno
<a id='L6438' name='L6438'></a>&lt;a id='L6424' name='L6424'&gt;&lt;/a&gt;  \global\pageno = \savepageno
<a id='L6439' name='L6439'></a>&lt;a id='L6425' name='L6425'&gt;&lt;/a&gt;}
<a id='L6440' name='L6440'></a>&lt;a id='L6426' name='L6426'&gt;&lt;/a&gt;
<a id='L6441' name='L6441'></a>&lt;a id='L6427' name='L6427'&gt;&lt;/a&gt;% And just the chapters.
<a id='L6442' name='L6442'></a>&lt;a id='L6428' name='L6428'&gt;&lt;/a&gt;\def\summarycontents{%
<a id='L6443' name='L6443'></a>&lt;a id='L6429' name='L6429'&gt;&lt;/a&gt;  \startcontents{\putwordShortTOC}%
<a id='L6444' name='L6444'></a>&lt;a id='L6430' name='L6430'&gt;&lt;/a&gt;    %
<a id='L6445' name='L6445'></a>&lt;a id='L6431' name='L6431'&gt;&lt;/a&gt;    \let\partentry = \shortpartentry
<a id='L6446' name='L6446'></a>&lt;a id='L6432' name='L6432'&gt;&lt;/a&gt;    \let\numchapentry = \shortchapentry
<a id='L6447' name='L6447'></a>&lt;a id='L6433' name='L6433'&gt;&lt;/a&gt;    \let\appentry = \shortchapentry
<a id='L6448' name='L6448'></a>&lt;a id='L6434' name='L6434'&gt;&lt;/a&gt;    \let\unnchapentry = \shortunnchapentry
<a id='L6449' name='L6449'></a>&lt;a id='L6435' name='L6435'&gt;&lt;/a&gt;    % We want a true roman here for the page numbers.
<a id='L6450' name='L6450'></a>&lt;a id='L6436' name='L6436'&gt;&lt;/a&gt;    \secfonts
<a id='L6451' name='L6451'></a>&lt;a id='L6437' name='L6437'&gt;&lt;/a&gt;    \let\rm=\shortcontrm \let\bf=\shortcontbf
<a id='L6452' name='L6452'></a>&lt;a id='L6438' name='L6438'&gt;&lt;/a&gt;    \let\sl=\shortcontsl \let\tt=\shortconttt
<a id='L6453' name='L6453'></a>&lt;a id='L6439' name='L6439'&gt;&lt;/a&gt;    \rm
<a id='L6454' name='L6454'></a>&lt;a id='L6440' name='L6440'&gt;&lt;/a&gt;    \hyphenpenalty = 10000
<a id='L6455' name='L6455'></a>&lt;a id='L6441' name='L6441'&gt;&lt;/a&gt;    \advance\baselineskip by 1pt % Open it up a little.
<a id='L6456' name='L6456'></a>&lt;a id='L6442' name='L6442'&gt;&lt;/a&gt;    \def\numsecentry##1##2##3##4{}
<a id='L6457' name='L6457'></a>&lt;a id='L6443' name='L6443'&gt;&lt;/a&gt;    \let\appsecentry = \numsecentry
<a id='L6458' name='L6458'></a>&lt;a id='L6444' name='L6444'&gt;&lt;/a&gt;    \let\unnsecentry = \numsecentry
<a id='L6459' name='L6459'></a>&lt;a id='L6445' name='L6445'&gt;&lt;/a&gt;    \let\numsubsecentry = \numsecentry
<a id='L6460' name='L6460'></a>&lt;a id='L6446' name='L6446'&gt;&lt;/a&gt;    \let\appsubsecentry = \numsecentry
<a id='L6461' name='L6461'></a>&lt;a id='L6447' name='L6447'&gt;&lt;/a&gt;    \let\unnsubsecentry = \numsecentry
<a id='L6462' name='L6462'></a>&lt;a id='L6448' name='L6448'&gt;&lt;/a&gt;    \let\numsubsubsecentry = \numsecentry
<a id='L6463' name='L6463'></a>&lt;a id='L6449' name='L6449'&gt;&lt;/a&gt;    \let\appsubsubsecentry = \numsecentry
<a id='L6464' name='L6464'></a>&lt;a id='L6450' name='L6450'&gt;&lt;/a&gt;    \let\unnsubsubsecentry = \numsecentry
<a id='L6465' name='L6465'></a>&lt;a id='L6451' name='L6451'&gt;&lt;/a&gt;    \openin 1 \tocreadfilename\space
<a id='L6466' name='L6466'></a>&lt;a id='L6452' name='L6452'&gt;&lt;/a&gt;    \ifeof 1 \else
<a id='L6467' name='L6467'></a>&lt;a id='L6453' name='L6453'&gt;&lt;/a&gt;      \readtocfile
<a id='L6468' name='L6468'></a>&lt;a id='L6454' name='L6454'&gt;&lt;/a&gt;    \fi
<a id='L6469' name='L6469'></a>&lt;a id='L6455' name='L6455'&gt;&lt;/a&gt;    \closein 1
<a id='L6470' name='L6470'></a>&lt;a id='L6456' name='L6456'&gt;&lt;/a&gt;    \vfill \eject
<a id='L6471' name='L6471'></a>&lt;a id='L6457' name='L6457'&gt;&lt;/a&gt;    \contentsalignmacro % in case @setchapternewpage odd is in effect
<a id='L6472' name='L6472'></a>&lt;a id='L6458' name='L6458'&gt;&lt;/a&gt;  \endgroup
<a id='L6473' name='L6473'></a>&lt;a id='L6459' name='L6459'&gt;&lt;/a&gt;  \lastnegativepageno = \pageno
<a id='L6474' name='L6474'></a>&lt;a id='L6460' name='L6460'&gt;&lt;/a&gt;  \global\pageno = \savepageno
<a id='L6475' name='L6475'></a>&lt;a id='L6461' name='L6461'&gt;&lt;/a&gt;}
<a id='L6476' name='L6476'></a>&lt;a id='L6462' name='L6462'&gt;&lt;/a&gt;\let\shortcontents = \summarycontents
<a id='L6477' name='L6477'></a>&lt;a id='L6463' name='L6463'&gt;&lt;/a&gt;
<a id='L6478' name='L6478'></a>&lt;a id='L6464' name='L6464'&gt;&lt;/a&gt;% Typeset the label for a chapter or appendix for the short contents.
<a id='L6479' name='L6479'></a>&lt;a id='L6465' name='L6465'&gt;&lt;/a&gt;% The arg is, e.g., `A' for an appendix, or `3' for a chapter.
<a id='L6480' name='L6480'></a>&lt;a id='L6466' name='L6466'&gt;&lt;/a&gt;%
<a id='L6481' name='L6481'></a>&lt;a id='L6467' name='L6467'&gt;&lt;/a&gt;\def\shortchaplabel#1{%
<a id='L6482' name='L6482'></a>&lt;a id='L6468' name='L6468'&gt;&lt;/a&gt;  % This space should be enough, since a single number is .5em, and the
<a id='L6483' name='L6483'></a>&lt;a id='L6469' name='L6469'&gt;&lt;/a&gt;  % widest letter (M) is 1em, at least in the Computer Modern fonts.
<a id='L6484' name='L6484'></a>&lt;a id='L6470' name='L6470'&gt;&lt;/a&gt;  % But use \hss just in case.
<a id='L6485' name='L6485'></a>&lt;a id='L6471' name='L6471'&gt;&lt;/a&gt;  % (This space doesn't include the extra space that gets added after
<a id='L6486' name='L6486'></a>&lt;a id='L6472' name='L6472'&gt;&lt;/a&gt;  % the label; that gets put in by \shortchapentry above.)
<a id='L6487' name='L6487'></a>&lt;a id='L6473' name='L6473'&gt;&lt;/a&gt;  %
<a id='L6488' name='L6488'></a>&lt;a id='L6474' name='L6474'&gt;&lt;/a&gt;  % We'd like to right-justify chapter numbers, but that looks strange
<a id='L6489' name='L6489'></a>&lt;a id='L6475' name='L6475'&gt;&lt;/a&gt;  % with appendix letters.  And right-justifying numbers and
<a id='L6490' name='L6490'></a>&lt;a id='L6476' name='L6476'&gt;&lt;/a&gt;  % left-justifying letters looks strange when there is less than 10
<a id='L6491' name='L6491'></a>&lt;a id='L6477' name='L6477'&gt;&lt;/a&gt;  % chapters.  Have to read the whole toc once to know how many chapters
<a id='L6492' name='L6492'></a>&lt;a id='L6478' name='L6478'&gt;&lt;/a&gt;  % there are before deciding ...
<a id='L6493' name='L6493'></a>&lt;a id='L6479' name='L6479'&gt;&lt;/a&gt;  \hbox to 1em{#1\hss}%
<a id='L6494' name='L6494'></a>&lt;a id='L6480' name='L6480'&gt;&lt;/a&gt;}
<a id='L6495' name='L6495'></a>&lt;a id='L6481' name='L6481'&gt;&lt;/a&gt;
<a id='L6496' name='L6496'></a>&lt;a id='L6482' name='L6482'&gt;&lt;/a&gt;% These macros generate individual entries in the table of contents.
<a id='L6497' name='L6497'></a>&lt;a id='L6483' name='L6483'&gt;&lt;/a&gt;% The first argument is the chapter or section name.
<a id='L6498' name='L6498'></a>&lt;a id='L6484' name='L6484'&gt;&lt;/a&gt;% The last argument is the page number.
<a id='L6499' name='L6499'></a>&lt;a id='L6485' name='L6485'&gt;&lt;/a&gt;% The arguments in between are the chapter number, section number, ...
<a id='L6500' name='L6500'></a>&lt;a id='L6486' name='L6486'&gt;&lt;/a&gt;
<a id='L6501' name='L6501'></a>&lt;a id='L6487' name='L6487'&gt;&lt;/a&gt;% Parts, in the main contents.  Replace the part number, which doesn't
<a id='L6502' name='L6502'></a>&lt;a id='L6488' name='L6488'&gt;&lt;/a&gt;% exist, with an empty box.  Let's hope all the numbers have the same width.
<a id='L6503' name='L6503'></a>&lt;a id='L6489' name='L6489'&gt;&lt;/a&gt;% Also ignore the page number, which is conventionally not printed.
<a id='L6504' name='L6504'></a>&lt;a id='L6490' name='L6490'&gt;&lt;/a&gt;\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}}
<a id='L6505' name='L6505'></a>&lt;a id='L6491' name='L6491'&gt;&lt;/a&gt;\def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}}
<a id='L6506' name='L6506'></a>&lt;a id='L6492' name='L6492'&gt;&lt;/a&gt;%
<a id='L6507' name='L6507'></a>&lt;a id='L6493' name='L6493'&gt;&lt;/a&gt;% Parts, in the short toc.
<a id='L6508' name='L6508'></a>&lt;a id='L6494' name='L6494'&gt;&lt;/a&gt;\def\shortpartentry#1#2#3#4{%
<a id='L6509' name='L6509'></a>&lt;a id='L6495' name='L6495'&gt;&lt;/a&gt;  \penalty-300
<a id='L6510' name='L6510'></a>&lt;a id='L6496' name='L6496'&gt;&lt;/a&gt;  \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip
<a id='L6511' name='L6511'></a>&lt;a id='L6497' name='L6497'&gt;&lt;/a&gt;  \shortchapentry{{\bf #1}}{\numeralbox}{}{}%
<a id='L6512' name='L6512'></a>&lt;a id='L6498' name='L6498'&gt;&lt;/a&gt;}
<a id='L6513' name='L6513'></a>&lt;a id='L6499' name='L6499'&gt;&lt;/a&gt;
<a id='L6514' name='L6514'></a>&lt;a id='L6500' name='L6500'&gt;&lt;/a&gt;% Chapters, in the main contents.
<a id='L6515' name='L6515'></a>&lt;a id='L6501' name='L6501'&gt;&lt;/a&gt;\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
<a id='L6516' name='L6516'></a>&lt;a id='L6502' name='L6502'&gt;&lt;/a&gt;%
<a id='L6517' name='L6517'></a>&lt;a id='L6503' name='L6503'&gt;&lt;/a&gt;% Chapters, in the short toc.
<a id='L6518' name='L6518'></a>&lt;a id='L6504' name='L6504'&gt;&lt;/a&gt;% See comments in \dochapentry re vbox and related settings.
<a id='L6519' name='L6519'></a>&lt;a id='L6505' name='L6505'&gt;&lt;/a&gt;\def\shortchapentry#1#2#3#4{%
<a id='L6520' name='L6520'></a>&lt;a id='L6506' name='L6506'&gt;&lt;/a&gt;  \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}%
<a id='L6521' name='L6521'></a>&lt;a id='L6507' name='L6507'&gt;&lt;/a&gt;}
<a id='L6522' name='L6522'></a>&lt;a id='L6508' name='L6508'&gt;&lt;/a&gt;
<a id='L6523' name='L6523'></a>&lt;a id='L6509' name='L6509'&gt;&lt;/a&gt;% Appendices, in the main contents.
<a id='L6524' name='L6524'></a>&lt;a id='L6510' name='L6510'&gt;&lt;/a&gt;% Need the word Appendix, and a fixed-size box.
<a id='L6525' name='L6525'></a>&lt;a id='L6511' name='L6511'&gt;&lt;/a&gt;%
<a id='L6526' name='L6526'></a>&lt;a id='L6512' name='L6512'&gt;&lt;/a&gt;\def\appendixbox#1{%
<a id='L6527' name='L6527'></a>&lt;a id='L6513' name='L6513'&gt;&lt;/a&gt;  % We use M since it's probably the widest letter.
<a id='L6528' name='L6528'></a>&lt;a id='L6514' name='L6514'&gt;&lt;/a&gt;  \setbox0 = \hbox{\putwordAppendix{} M}%
<a id='L6529' name='L6529'></a>&lt;a id='L6515' name='L6515'&gt;&lt;/a&gt;  \hbox to \wd0{\putwordAppendix{} #1\hss}}
<a id='L6530' name='L6530'></a>&lt;a id='L6516' name='L6516'&gt;&lt;/a&gt;%
<a id='L6531' name='L6531'></a>&lt;a id='L6517' name='L6517'&gt;&lt;/a&gt;\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}}
<a id='L6532' name='L6532'></a>&lt;a id='L6518' name='L6518'&gt;&lt;/a&gt;
<a id='L6533' name='L6533'></a>&lt;a id='L6519' name='L6519'&gt;&lt;/a&gt;% Unnumbered chapters.
<a id='L6534' name='L6534'></a>&lt;a id='L6520' name='L6520'&gt;&lt;/a&gt;\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}}
<a id='L6535' name='L6535'></a>&lt;a id='L6521' name='L6521'&gt;&lt;/a&gt;\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}}
<a id='L6536' name='L6536'></a>&lt;a id='L6522' name='L6522'&gt;&lt;/a&gt;
<a id='L6537' name='L6537'></a>&lt;a id='L6523' name='L6523'&gt;&lt;/a&gt;% Sections.
<a id='L6538' name='L6538'></a>&lt;a id='L6524' name='L6524'&gt;&lt;/a&gt;\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}}
<a id='L6539' name='L6539'></a>&lt;a id='L6525' name='L6525'&gt;&lt;/a&gt;\let\appsecentry=\numsecentry
<a id='L6540' name='L6540'></a>&lt;a id='L6526' name='L6526'&gt;&lt;/a&gt;\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}}
<a id='L6541' name='L6541'></a>&lt;a id='L6527' name='L6527'&gt;&lt;/a&gt;
<a id='L6542' name='L6542'></a>&lt;a id='L6528' name='L6528'&gt;&lt;/a&gt;% Subsections.
<a id='L6543' name='L6543'></a>&lt;a id='L6529' name='L6529'&gt;&lt;/a&gt;\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}}
<a id='L6544' name='L6544'></a>&lt;a id='L6530' name='L6530'&gt;&lt;/a&gt;\let\appsubsecentry=\numsubsecentry
<a id='L6545' name='L6545'></a>&lt;a id='L6531' name='L6531'&gt;&lt;/a&gt;\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}}
<a id='L6546' name='L6546'></a>&lt;a id='L6532' name='L6532'&gt;&lt;/a&gt;
<a id='L6547' name='L6547'></a>&lt;a id='L6533' name='L6533'&gt;&lt;/a&gt;% And subsubsections.
<a id='L6548' name='L6548'></a>&lt;a id='L6534' name='L6534'&gt;&lt;/a&gt;\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}}
<a id='L6549' name='L6549'></a>&lt;a id='L6535' name='L6535'&gt;&lt;/a&gt;\let\appsubsubsecentry=\numsubsubsecentry
<a id='L6550' name='L6550'></a>&lt;a id='L6536' name='L6536'&gt;&lt;/a&gt;\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}}
<a id='L6551' name='L6551'></a>&lt;a id='L6537' name='L6537'&gt;&lt;/a&gt;
<a id='L6552' name='L6552'></a>&lt;a id='L6538' name='L6538'&gt;&lt;/a&gt;% This parameter controls the indentation of the various levels.
<a id='L6553' name='L6553'></a>&lt;a id='L6539' name='L6539'&gt;&lt;/a&gt;% Same as \defaultparindent.
<a id='L6554' name='L6554'></a>&lt;a id='L6540' name='L6540'&gt;&lt;/a&gt;\newdimen\tocindent \tocindent = 15pt
<a id='L6555' name='L6555'></a>&lt;a id='L6541' name='L6541'&gt;&lt;/a&gt;
<a id='L6556' name='L6556'></a>&lt;a id='L6542' name='L6542'&gt;&lt;/a&gt;% Now for the actual typesetting. In all these, #1 is the text and #2 is the
<a id='L6557' name='L6557'></a>&lt;a id='L6543' name='L6543'&gt;&lt;/a&gt;% page number.
<a id='L6558' name='L6558'></a>&lt;a id='L6544' name='L6544'&gt;&lt;/a&gt;%
<a id='L6559' name='L6559'></a>&lt;a id='L6545' name='L6545'&gt;&lt;/a&gt;% If the toc has to be broken over pages, we want it to be at chapters
<a id='L6560' name='L6560'></a>&lt;a id='L6546' name='L6546'&gt;&lt;/a&gt;% if at all possible; hence the \penalty.
<a id='L6561' name='L6561'></a>&lt;a id='L6547' name='L6547'&gt;&lt;/a&gt;\def\dochapentry#1#2{%
<a id='L6562' name='L6562'></a>&lt;a id='L6548' name='L6548'&gt;&lt;/a&gt;   \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
<a id='L6563' name='L6563'></a>&lt;a id='L6549' name='L6549'&gt;&lt;/a&gt;   \begingroup
<a id='L6564' name='L6564'></a>&lt;a id='L6550' name='L6550'&gt;&lt;/a&gt;     \chapentryfonts
<a id='L6565' name='L6565'></a>&lt;a id='L6551' name='L6551'&gt;&lt;/a&gt;     \tocentry{#1}{\dopageno\bgroup#2\egroup}%
<a id='L6566' name='L6566'></a>&lt;a id='L6552' name='L6552'&gt;&lt;/a&gt;   \endgroup
<a id='L6567' name='L6567'></a>&lt;a id='L6553' name='L6553'&gt;&lt;/a&gt;   \nobreak\vskip .25\baselineskip plus.1\baselineskip
<a id='L6568' name='L6568'></a>&lt;a id='L6554' name='L6554'&gt;&lt;/a&gt;}
<a id='L6569' name='L6569'></a>&lt;a id='L6555' name='L6555'&gt;&lt;/a&gt;
<a id='L6570' name='L6570'></a>&lt;a id='L6556' name='L6556'&gt;&lt;/a&gt;\def\dosecentry#1#2{\begingroup
<a id='L6571' name='L6571'></a>&lt;a id='L6557' name='L6557'&gt;&lt;/a&gt;  \secentryfonts \leftskip=\tocindent
<a id='L6572' name='L6572'></a>&lt;a id='L6558' name='L6558'&gt;&lt;/a&gt;  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
<a id='L6573' name='L6573'></a>&lt;a id='L6559' name='L6559'&gt;&lt;/a&gt;\endgroup}
<a id='L6574' name='L6574'></a>&lt;a id='L6560' name='L6560'&gt;&lt;/a&gt;
<a id='L6575' name='L6575'></a>&lt;a id='L6561' name='L6561'&gt;&lt;/a&gt;\def\dosubsecentry#1#2{\begingroup
<a id='L6576' name='L6576'></a>&lt;a id='L6562' name='L6562'&gt;&lt;/a&gt;  \subsecentryfonts \leftskip=2\tocindent
<a id='L6577' name='L6577'></a>&lt;a id='L6563' name='L6563'&gt;&lt;/a&gt;  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
<a id='L6578' name='L6578'></a>&lt;a id='L6564' name='L6564'&gt;&lt;/a&gt;\endgroup}
<a id='L6579' name='L6579'></a>&lt;a id='L6565' name='L6565'&gt;&lt;/a&gt;
<a id='L6580' name='L6580'></a>&lt;a id='L6566' name='L6566'&gt;&lt;/a&gt;\def\dosubsubsecentry#1#2{\begingroup
<a id='L6581' name='L6581'></a>&lt;a id='L6567' name='L6567'&gt;&lt;/a&gt;  \subsubsecentryfonts \leftskip=3\tocindent
<a id='L6582' name='L6582'></a>&lt;a id='L6568' name='L6568'&gt;&lt;/a&gt;  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
<a id='L6583' name='L6583'></a>&lt;a id='L6569' name='L6569'&gt;&lt;/a&gt;\endgroup}
<a id='L6584' name='L6584'></a>&lt;a id='L6570' name='L6570'&gt;&lt;/a&gt;
<a id='L6585' name='L6585'></a>&lt;a id='L6571' name='L6571'&gt;&lt;/a&gt;% We use the same \entry macro as for the index entries.
<a id='L6586' name='L6586'></a>&lt;a id='L6572' name='L6572'&gt;&lt;/a&gt;\let\tocentry = \entry
<a id='L6587' name='L6587'></a>&lt;a id='L6573' name='L6573'&gt;&lt;/a&gt;
<a id='L6588' name='L6588'></a>&lt;a id='L6574' name='L6574'&gt;&lt;/a&gt;% Space between chapter (or whatever) number and the title.
<a id='L6589' name='L6589'></a>&lt;a id='L6575' name='L6575'&gt;&lt;/a&gt;\def\labelspace{\hskip1em \relax}
<a id='L6590' name='L6590'></a>&lt;a id='L6576' name='L6576'&gt;&lt;/a&gt;
<a id='L6591' name='L6591'></a>&lt;a id='L6577' name='L6577'&gt;&lt;/a&gt;\def\dopageno#1{{\rm #1}}
<a id='L6592' name='L6592'></a>&lt;a id='L6578' name='L6578'&gt;&lt;/a&gt;\def\doshortpageno#1{{\rm #1}}
<a id='L6593' name='L6593'></a>&lt;a id='L6579' name='L6579'&gt;&lt;/a&gt;
<a id='L6594' name='L6594'></a>&lt;a id='L6580' name='L6580'&gt;&lt;/a&gt;\def\chapentryfonts{\secfonts \rm}
<a id='L6595' name='L6595'></a>&lt;a id='L6581' name='L6581'&gt;&lt;/a&gt;\def\secentryfonts{\textfonts}
<a id='L6596' name='L6596'></a>&lt;a id='L6582' name='L6582'&gt;&lt;/a&gt;\def\subsecentryfonts{\textfonts}
<a id='L6597' name='L6597'></a>&lt;a id='L6583' name='L6583'&gt;&lt;/a&gt;\def\subsubsecentryfonts{\textfonts}
<a id='L6598' name='L6598'></a>&lt;a id='L6584' name='L6584'&gt;&lt;/a&gt;
<a id='L6599' name='L6599'></a>&lt;a id='L6585' name='L6585'&gt;&lt;/a&gt;
<a id='L6600' name='L6600'></a>&lt;a id='L6586' name='L6586'&gt;&lt;/a&gt;\message{environments,}
<a id='L6601' name='L6601'></a>&lt;a id='L6587' name='L6587'&gt;&lt;/a&gt;% @foo ... @end foo.
<a id='L6602' name='L6602'></a>&lt;a id='L6588' name='L6588'&gt;&lt;/a&gt;
<a id='L6603' name='L6603'></a>&lt;a id='L6589' name='L6589'&gt;&lt;/a&gt;% @tex ... @end tex    escapes into raw TeX temporarily.
<a id='L6604' name='L6604'></a>&lt;a id='L6590' name='L6590'&gt;&lt;/a&gt;% One exception: @ is still an escape character, so that @end tex works.
<a id='L6605' name='L6605'></a>&lt;a id='L6591' name='L6591'&gt;&lt;/a&gt;% But \@ or @@ will get a plain @ character.
<a id='L6606' name='L6606'></a>&lt;a id='L6592' name='L6592'&gt;&lt;/a&gt;
<a id='L6607' name='L6607'></a>&lt;a id='L6593' name='L6593'&gt;&lt;/a&gt;\envdef\tex{%
<a id='L6608' name='L6608'></a>&lt;a id='L6594' name='L6594'&gt;&lt;/a&gt;  \setupmarkupstyle{tex}%
<a id='L6609' name='L6609'></a>&lt;a id='L6595' name='L6595'&gt;&lt;/a&gt;  \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
<a id='L6610' name='L6610'></a>&lt;a id='L6596' name='L6596'&gt;&lt;/a&gt;  \catcode `\$=3 \catcode `\&amp;amp;=4 \catcode `\#=6
<a id='L6611' name='L6611'></a>&lt;a id='L6597' name='L6597'&gt;&lt;/a&gt;  \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
<a id='L6612' name='L6612'></a>&lt;a id='L6598' name='L6598'&gt;&lt;/a&gt;  \catcode `\%=14
<a id='L6613' name='L6613'></a>&lt;a id='L6599' name='L6599'&gt;&lt;/a&gt;  \catcode `\+=\other
<a id='L6614' name='L6614'></a>&lt;a id='L6600' name='L6600'&gt;&lt;/a&gt;  \catcode `\"=\other
<a id='L6615' name='L6615'></a>&lt;a id='L6601' name='L6601'&gt;&lt;/a&gt;  \catcode `\|=\other
<a id='L6616' name='L6616'></a>&lt;a id='L6602' name='L6602'&gt;&lt;/a&gt;  \catcode `\&amp;lt;=\other
<a id='L6617' name='L6617'></a>&lt;a id='L6603' name='L6603'&gt;&lt;/a&gt;  \catcode `\&amp;gt;=\other
<a id='L6618' name='L6618'></a>&lt;a id='L6604' name='L6604'&gt;&lt;/a&gt;  \catcode`\`=\other
<a id='L6619' name='L6619'></a>&lt;a id='L6605' name='L6605'&gt;&lt;/a&gt;  \catcode`\'=\other
<a id='L6620' name='L6620'></a>&lt;a id='L6606' name='L6606'&gt;&lt;/a&gt;  \escapechar=`\\
<a id='L6621' name='L6621'></a>&lt;a id='L6607' name='L6607'&gt;&lt;/a&gt;  %
<a id='L6622' name='L6622'></a>&lt;a id='L6608' name='L6608'&gt;&lt;/a&gt;  % ' is active in math mode (mathcode"8000).  So reset it, and all our
<a id='L6623' name='L6623'></a>&lt;a id='L6609' name='L6609'&gt;&lt;/a&gt;  % other math active characters (just in case), to plain's definitions.
<a id='L6624' name='L6624'></a>&lt;a id='L6610' name='L6610'&gt;&lt;/a&gt;  \mathactive
<a id='L6625' name='L6625'></a>&lt;a id='L6611' name='L6611'&gt;&lt;/a&gt;  %
<a id='L6626' name='L6626'></a>&lt;a id='L6612' name='L6612'&gt;&lt;/a&gt;  \let\b=\ptexb
<a id='L6627' name='L6627'></a>&lt;a id='L6613' name='L6613'&gt;&lt;/a&gt;  \let\bullet=\ptexbullet
<a id='L6628' name='L6628'></a>&lt;a id='L6614' name='L6614'&gt;&lt;/a&gt;  \let\c=\ptexc
<a id='L6629' name='L6629'></a>&lt;a id='L6615' name='L6615'&gt;&lt;/a&gt;  \let\,=\ptexcomma
<a id='L6630' name='L6630'></a>&lt;a id='L6616' name='L6616'&gt;&lt;/a&gt;  \let\.=\ptexdot
<a id='L6631' name='L6631'></a>&lt;a id='L6617' name='L6617'&gt;&lt;/a&gt;  \let\dots=\ptexdots
<a id='L6632' name='L6632'></a>&lt;a id='L6618' name='L6618'&gt;&lt;/a&gt;  \let\equiv=\ptexequiv
<a id='L6633' name='L6633'></a>&lt;a id='L6619' name='L6619'&gt;&lt;/a&gt;  \let\!=\ptexexclam
<a id='L6634' name='L6634'></a>&lt;a id='L6620' name='L6620'&gt;&lt;/a&gt;  \let\i=\ptexi
<a id='L6635' name='L6635'></a>&lt;a id='L6621' name='L6621'&gt;&lt;/a&gt;  \let\indent=\ptexindent
<a id='L6636' name='L6636'></a>&lt;a id='L6622' name='L6622'&gt;&lt;/a&gt;  \let\noindent=\ptexnoindent
<a id='L6637' name='L6637'></a>&lt;a id='L6623' name='L6623'&gt;&lt;/a&gt;  \let\{=\ptexlbrace
<a id='L6638' name='L6638'></a>&lt;a id='L6624' name='L6624'&gt;&lt;/a&gt;  \let\+=\tabalign
<a id='L6639' name='L6639'></a>&lt;a id='L6625' name='L6625'&gt;&lt;/a&gt;  \let\}=\ptexrbrace
<a id='L6640' name='L6640'></a>&lt;a id='L6626' name='L6626'&gt;&lt;/a&gt;  \let\/=\ptexslash
<a id='L6641' name='L6641'></a>&lt;a id='L6627' name='L6627'&gt;&lt;/a&gt;  \let\*=\ptexstar
<a id='L6642' name='L6642'></a>&lt;a id='L6628' name='L6628'&gt;&lt;/a&gt;  \let\t=\ptext
<a id='L6643' name='L6643'></a>&lt;a id='L6629' name='L6629'&gt;&lt;/a&gt;  \expandafter \let\csname top\endcsname=\ptextop  % outer
<a id='L6644' name='L6644'></a>&lt;a id='L6630' name='L6630'&gt;&lt;/a&gt;  \let\frenchspacing=\plainfrenchspacing
<a id='L6645' name='L6645'></a>&lt;a id='L6631' name='L6631'&gt;&lt;/a&gt;  %
<a id='L6646' name='L6646'></a>&lt;a id='L6632' name='L6632'&gt;&lt;/a&gt;  \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
<a id='L6647' name='L6647'></a>&lt;a id='L6633' name='L6633'&gt;&lt;/a&gt;  \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
<a id='L6648' name='L6648'></a>&lt;a id='L6634' name='L6634'&gt;&lt;/a&gt;  \def\@{@}%
<a id='L6649' name='L6649'></a>&lt;a id='L6635' name='L6635'&gt;&lt;/a&gt;}
<a id='L6650' name='L6650'></a>&lt;a id='L6636' name='L6636'&gt;&lt;/a&gt;% There is no need to define \Etex.
<a id='L6651' name='L6651'></a>&lt;a id='L6637' name='L6637'&gt;&lt;/a&gt;
<a id='L6652' name='L6652'></a>&lt;a id='L6638' name='L6638'&gt;&lt;/a&gt;% Define @lisp ... @end lisp.
<a id='L6653' name='L6653'></a>&lt;a id='L6639' name='L6639'&gt;&lt;/a&gt;% @lisp environment forms a group so it can rebind things,
<a id='L6654' name='L6654'></a>&lt;a id='L6640' name='L6640'&gt;&lt;/a&gt;% including the definition of @end lisp (which normally is erroneous).
<a id='L6655' name='L6655'></a>&lt;a id='L6641' name='L6641'&gt;&lt;/a&gt;
<a id='L6656' name='L6656'></a>&lt;a id='L6642' name='L6642'&gt;&lt;/a&gt;% Amount to narrow the margins by for @lisp.
<a id='L6657' name='L6657'></a>&lt;a id='L6643' name='L6643'&gt;&lt;/a&gt;\newskip\lispnarrowing \lispnarrowing=0.4in
<a id='L6658' name='L6658'></a>&lt;a id='L6644' name='L6644'&gt;&lt;/a&gt;
<a id='L6659' name='L6659'></a>&lt;a id='L6645' name='L6645'&gt;&lt;/a&gt;% This is the definition that ^^M gets inside @lisp, @example, and other
<a id='L6660' name='L6660'></a>&lt;a id='L6646' name='L6646'&gt;&lt;/a&gt;% such environments.  \null is better than a space, since it doesn't
<a id='L6661' name='L6661'></a>&lt;a id='L6647' name='L6647'&gt;&lt;/a&gt;% have any width.
<a id='L6662' name='L6662'></a>&lt;a id='L6648' name='L6648'&gt;&lt;/a&gt;\def\lisppar{\null\endgraf}
<a id='L6663' name='L6663'></a>&lt;a id='L6649' name='L6649'&gt;&lt;/a&gt;
<a id='L6664' name='L6664'></a>&lt;a id='L6650' name='L6650'&gt;&lt;/a&gt;% This space is always present above and below environments.
<a id='L6665' name='L6665'></a>&lt;a id='L6651' name='L6651'&gt;&lt;/a&gt;\newskip\envskipamount \envskipamount = 0pt
<a id='L6666' name='L6666'></a>&lt;a id='L6652' name='L6652'&gt;&lt;/a&gt;
<a id='L6667' name='L6667'></a>&lt;a id='L6653' name='L6653'&gt;&lt;/a&gt;% Make spacing and below environment symmetrical.  We use \parskip here
<a id='L6668' name='L6668'></a>&lt;a id='L6654' name='L6654'&gt;&lt;/a&gt;% to help in doing that, since in @example-like environments \parskip
<a id='L6669' name='L6669'></a>&lt;a id='L6655' name='L6655'&gt;&lt;/a&gt;% is reset to zero; thus the \afterenvbreak inserts no space -- but the
<a id='L6670' name='L6670'></a>&lt;a id='L6656' name='L6656'&gt;&lt;/a&gt;% start of the next paragraph will insert \parskip.
<a id='L6671' name='L6671'></a>&lt;a id='L6657' name='L6657'&gt;&lt;/a&gt;%
<a id='L6672' name='L6672'></a>&lt;a id='L6658' name='L6658'&gt;&lt;/a&gt;\def\aboveenvbreak{{%
<a id='L6673' name='L6673'></a>&lt;a id='L6659' name='L6659'&gt;&lt;/a&gt;  % =10000 instead of &amp;lt;10000 because of a special case in \itemzzz and
<a id='L6674' name='L6674'></a>&lt;a id='L6660' name='L6660'&gt;&lt;/a&gt;  % \sectionheading, q.v.
<a id='L6675' name='L6675'></a>&lt;a id='L6661' name='L6661'&gt;&lt;/a&gt;  \ifnum \lastpenalty=10000 \else
<a id='L6676' name='L6676'></a>&lt;a id='L6662' name='L6662'&gt;&lt;/a&gt;    \advance\envskipamount by \parskip
<a id='L6677' name='L6677'></a>&lt;a id='L6663' name='L6663'&gt;&lt;/a&gt;    \endgraf
<a id='L6678' name='L6678'></a>&lt;a id='L6664' name='L6664'&gt;&lt;/a&gt;    \ifdim\lastskip&amp;lt;\envskipamount
<a id='L6679' name='L6679'></a>&lt;a id='L6665' name='L6665'&gt;&lt;/a&gt;      \removelastskip
<a id='L6680' name='L6680'></a>&lt;a id='L6666' name='L6666'&gt;&lt;/a&gt;      % it's not a good place to break if the last penalty was \nobreak
<a id='L6681' name='L6681'></a>&lt;a id='L6667' name='L6667'&gt;&lt;/a&gt;      % or better ...
<a id='L6682' name='L6682'></a>&lt;a id='L6668' name='L6668'&gt;&lt;/a&gt;      \ifnum\lastpenalty&amp;lt;10000 \penalty-50 \fi
<a id='L6683' name='L6683'></a>&lt;a id='L6669' name='L6669'&gt;&lt;/a&gt;      \vskip\envskipamount
<a id='L6684' name='L6684'></a>&lt;a id='L6670' name='L6670'&gt;&lt;/a&gt;    \fi
<a id='L6685' name='L6685'></a>&lt;a id='L6671' name='L6671'&gt;&lt;/a&gt;  \fi
<a id='L6686' name='L6686'></a>&lt;a id='L6672' name='L6672'&gt;&lt;/a&gt;}}
<a id='L6687' name='L6687'></a>&lt;a id='L6673' name='L6673'&gt;&lt;/a&gt;
<a id='L6688' name='L6688'></a>&lt;a id='L6674' name='L6674'&gt;&lt;/a&gt;\let\afterenvbreak = \aboveenvbreak
<a id='L6689' name='L6689'></a>&lt;a id='L6675' name='L6675'&gt;&lt;/a&gt;
<a id='L6690' name='L6690'></a>&lt;a id='L6676' name='L6676'&gt;&lt;/a&gt;% \nonarrowing is a flag.  If "set", @lisp etc don't narrow margins; it will
<a id='L6691' name='L6691'></a>&lt;a id='L6677' name='L6677'&gt;&lt;/a&gt;% also clear it, so that its embedded environments do the narrowing again.
<a id='L6692' name='L6692'></a>&lt;a id='L6678' name='L6678'&gt;&lt;/a&gt;\let\nonarrowing=\relax
<a id='L6693' name='L6693'></a>&lt;a id='L6679' name='L6679'&gt;&lt;/a&gt;
<a id='L6694' name='L6694'></a>&lt;a id='L6680' name='L6680'&gt;&lt;/a&gt;% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
<a id='L6695' name='L6695'></a>&lt;a id='L6681' name='L6681'&gt;&lt;/a&gt;% environment contents.
<a id='L6696' name='L6696'></a>&lt;a id='L6682' name='L6682'&gt;&lt;/a&gt;\font\circle=lcircle10
<a id='L6697' name='L6697'></a>&lt;a id='L6683' name='L6683'&gt;&lt;/a&gt;\newdimen\circthick
<a id='L6698' name='L6698'></a>&lt;a id='L6684' name='L6684'&gt;&lt;/a&gt;\newdimen\cartouter\newdimen\cartinner
<a id='L6699' name='L6699'></a>&lt;a id='L6685' name='L6685'&gt;&lt;/a&gt;\newskip\normbskip\newskip\normpskip\newskip\normlskip
<a id='L6700' name='L6700'></a>&lt;a id='L6686' name='L6686'&gt;&lt;/a&gt;\circthick=\fontdimen8\circle
<a id='L6701' name='L6701'></a>&lt;a id='L6687' name='L6687'&gt;&lt;/a&gt;%
<a id='L6702' name='L6702'></a>&lt;a id='L6688' name='L6688'&gt;&lt;/a&gt;\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
<a id='L6703' name='L6703'></a>&lt;a id='L6689' name='L6689'&gt;&lt;/a&gt;\def\ctr{{\hskip 6pt\circle\char'010}}
<a id='L6704' name='L6704'></a>&lt;a id='L6690' name='L6690'&gt;&lt;/a&gt;\def\cbl{{\circle\char'012\hskip -6pt}}
<a id='L6705' name='L6705'></a>&lt;a id='L6691' name='L6691'&gt;&lt;/a&gt;\def\cbr{{\hskip 6pt\circle\char'011}}
<a id='L6706' name='L6706'></a>&lt;a id='L6692' name='L6692'&gt;&lt;/a&gt;\def\carttop{\hbox to \cartouter{\hskip\lskip
<a id='L6707' name='L6707'></a>&lt;a id='L6693' name='L6693'&gt;&lt;/a&gt;        \ctl\leaders\hrule height\circthick\hfil\ctr
<a id='L6708' name='L6708'></a>&lt;a id='L6694' name='L6694'&gt;&lt;/a&gt;        \hskip\rskip}}
<a id='L6709' name='L6709'></a>&lt;a id='L6695' name='L6695'&gt;&lt;/a&gt;\def\cartbot{\hbox to \cartouter{\hskip\lskip
<a id='L6710' name='L6710'></a>&lt;a id='L6696' name='L6696'&gt;&lt;/a&gt;        \cbl\leaders\hrule height\circthick\hfil\cbr
<a id='L6711' name='L6711'></a>&lt;a id='L6697' name='L6697'&gt;&lt;/a&gt;        \hskip\rskip}}
<a id='L6712' name='L6712'></a>&lt;a id='L6698' name='L6698'&gt;&lt;/a&gt;%
<a id='L6713' name='L6713'></a>&lt;a id='L6699' name='L6699'&gt;&lt;/a&gt;\newskip\lskip\newskip\rskip
<a id='L6714' name='L6714'></a>&lt;a id='L6700' name='L6700'&gt;&lt;/a&gt;
<a id='L6715' name='L6715'></a>&lt;a id='L6701' name='L6701'&gt;&lt;/a&gt;\envdef\cartouche{%
<a id='L6716' name='L6716'></a>&lt;a id='L6702' name='L6702'&gt;&lt;/a&gt;  \ifhmode\par\fi  % can't be in the midst of a paragraph.
<a id='L6717' name='L6717'></a>&lt;a id='L6703' name='L6703'&gt;&lt;/a&gt;  \startsavinginserts
<a id='L6718' name='L6718'></a>&lt;a id='L6704' name='L6704'&gt;&lt;/a&gt;  \lskip=\leftskip \rskip=\rightskip
<a id='L6719' name='L6719'></a>&lt;a id='L6705' name='L6705'&gt;&lt;/a&gt;  \leftskip=0pt\rightskip=0pt % we want these *outside*.
<a id='L6720' name='L6720'></a>&lt;a id='L6706' name='L6706'&gt;&lt;/a&gt;  \cartinner=\hsize \advance\cartinner by-\lskip
<a id='L6721' name='L6721'></a>&lt;a id='L6707' name='L6707'&gt;&lt;/a&gt;  \advance\cartinner by-\rskip
<a id='L6722' name='L6722'></a>&lt;a id='L6708' name='L6708'&gt;&lt;/a&gt;  \cartouter=\hsize
<a id='L6723' name='L6723'></a>&lt;a id='L6709' name='L6709'&gt;&lt;/a&gt;  \advance\cartouter by 18.4pt  % allow for 3pt kerns on either
<a id='L6724' name='L6724'></a>&lt;a id='L6710' name='L6710'&gt;&lt;/a&gt;                                % side, and for 6pt waste from
<a id='L6725' name='L6725'></a>&lt;a id='L6711' name='L6711'&gt;&lt;/a&gt;                                % each corner char, and rule thickness
<a id='L6726' name='L6726'></a>&lt;a id='L6712' name='L6712'&gt;&lt;/a&gt;  \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
<a id='L6727' name='L6727'></a>&lt;a id='L6713' name='L6713'&gt;&lt;/a&gt;  % Flag to tell @lisp, etc., not to narrow margin.
<a id='L6728' name='L6728'></a>&lt;a id='L6714' name='L6714'&gt;&lt;/a&gt;  \let\nonarrowing = t%
<a id='L6729' name='L6729'></a>&lt;a id='L6715' name='L6715'&gt;&lt;/a&gt;  %
<a id='L6730' name='L6730'></a>&lt;a id='L6716' name='L6716'&gt;&lt;/a&gt;  % If this cartouche directly follows a sectioning command, we need the
<a id='L6731' name='L6731'></a>&lt;a id='L6717' name='L6717'&gt;&lt;/a&gt;  % \parskip glue (backspaced over by default) or the cartouche can
<a id='L6732' name='L6732'></a>&lt;a id='L6718' name='L6718'&gt;&lt;/a&gt;  % collide with the section heading.
<a id='L6733' name='L6733'></a>&lt;a id='L6719' name='L6719'&gt;&lt;/a&gt;  \ifnum\lastpenalty&amp;gt;10000 \vskip\parskip \penalty\lastpenalty \fi
<a id='L6734' name='L6734'></a>&lt;a id='L6720' name='L6720'&gt;&lt;/a&gt;  %
<a id='L6735' name='L6735'></a>&lt;a id='L6721' name='L6721'&gt;&lt;/a&gt;  \vbox\bgroup
<a id='L6736' name='L6736'></a>&lt;a id='L6722' name='L6722'&gt;&lt;/a&gt;      \baselineskip=0pt\parskip=0pt\lineskip=0pt
<a id='L6737' name='L6737'></a>&lt;a id='L6723' name='L6723'&gt;&lt;/a&gt;      \carttop
<a id='L6738' name='L6738'></a>&lt;a id='L6724' name='L6724'&gt;&lt;/a&gt;      \hbox\bgroup
<a id='L6739' name='L6739'></a>&lt;a id='L6725' name='L6725'&gt;&lt;/a&gt;          \hskip\lskip
<a id='L6740' name='L6740'></a>&lt;a id='L6726' name='L6726'&gt;&lt;/a&gt;          \vrule\kern3pt
<a id='L6741' name='L6741'></a>&lt;a id='L6727' name='L6727'&gt;&lt;/a&gt;          \vbox\bgroup
<a id='L6742' name='L6742'></a>&lt;a id='L6728' name='L6728'&gt;&lt;/a&gt;              \kern3pt
<a id='L6743' name='L6743'></a>&lt;a id='L6729' name='L6729'&gt;&lt;/a&gt;              \hsize=\cartinner
<a id='L6744' name='L6744'></a>&lt;a id='L6730' name='L6730'&gt;&lt;/a&gt;              \baselineskip=\normbskip
<a id='L6745' name='L6745'></a>&lt;a id='L6731' name='L6731'&gt;&lt;/a&gt;              \lineskip=\normlskip
<a id='L6746' name='L6746'></a>&lt;a id='L6732' name='L6732'&gt;&lt;/a&gt;              \parskip=\normpskip
<a id='L6747' name='L6747'></a>&lt;a id='L6733' name='L6733'&gt;&lt;/a&gt;              \vskip -\parskip
<a id='L6748' name='L6748'></a>&lt;a id='L6734' name='L6734'&gt;&lt;/a&gt;              \comment % For explanation, see the end of def\group.
<a id='L6749' name='L6749'></a>&lt;a id='L6735' name='L6735'&gt;&lt;/a&gt;}
<a id='L6750' name='L6750'></a>&lt;a id='L6736' name='L6736'&gt;&lt;/a&gt;\def\Ecartouche{%
<a id='L6751' name='L6751'></a>&lt;a id='L6737' name='L6737'&gt;&lt;/a&gt;              \ifhmode\par\fi
<a id='L6752' name='L6752'></a>&lt;a id='L6738' name='L6738'&gt;&lt;/a&gt;              \kern3pt
<a id='L6753' name='L6753'></a>&lt;a id='L6739' name='L6739'&gt;&lt;/a&gt;          \egroup
<a id='L6754' name='L6754'></a>&lt;a id='L6740' name='L6740'&gt;&lt;/a&gt;          \kern3pt\vrule
<a id='L6755' name='L6755'></a>&lt;a id='L6741' name='L6741'&gt;&lt;/a&gt;          \hskip\rskip
<a id='L6756' name='L6756'></a>&lt;a id='L6742' name='L6742'&gt;&lt;/a&gt;      \egroup
<a id='L6757' name='L6757'></a>&lt;a id='L6743' name='L6743'&gt;&lt;/a&gt;      \cartbot
<a id='L6758' name='L6758'></a>&lt;a id='L6744' name='L6744'&gt;&lt;/a&gt;  \egroup
<a id='L6759' name='L6759'></a>&lt;a id='L6745' name='L6745'&gt;&lt;/a&gt;  \checkinserts
<a id='L6760' name='L6760'></a>&lt;a id='L6746' name='L6746'&gt;&lt;/a&gt;}
<a id='L6761' name='L6761'></a>&lt;a id='L6747' name='L6747'&gt;&lt;/a&gt;
<a id='L6762' name='L6762'></a>&lt;a id='L6748' name='L6748'&gt;&lt;/a&gt;
<a id='L6763' name='L6763'></a>&lt;a id='L6749' name='L6749'&gt;&lt;/a&gt;% This macro is called at the beginning of all the @example variants,
<a id='L6764' name='L6764'></a>&lt;a id='L6750' name='L6750'&gt;&lt;/a&gt;% inside a group.
<a id='L6765' name='L6765'></a>&lt;a id='L6751' name='L6751'&gt;&lt;/a&gt;\newdimen\nonfillparindent
<a id='L6766' name='L6766'></a>&lt;a id='L6752' name='L6752'&gt;&lt;/a&gt;\def\nonfillstart{%
<a id='L6767' name='L6767'></a>&lt;a id='L6753' name='L6753'&gt;&lt;/a&gt;  \aboveenvbreak
<a id='L6768' name='L6768'></a>&lt;a id='L6754' name='L6754'&gt;&lt;/a&gt;  \ifdim\hfuzz &amp;lt; 12pt \hfuzz = 12pt \fi % Don't be fussy
<a id='L6769' name='L6769'></a>&lt;a id='L6755' name='L6755'&gt;&lt;/a&gt;  \sepspaces % Make spaces be word-separators rather than space tokens.
<a id='L6770' name='L6770'></a>&lt;a id='L6756' name='L6756'&gt;&lt;/a&gt;  \let\par = \lisppar % don't ignore blank lines
<a id='L6771' name='L6771'></a>&lt;a id='L6757' name='L6757'&gt;&lt;/a&gt;  \obeylines % each line of input is a line of output
<a id='L6772' name='L6772'></a>&lt;a id='L6758' name='L6758'&gt;&lt;/a&gt;  \parskip = 0pt
<a id='L6773' name='L6773'></a>&lt;a id='L6759' name='L6759'&gt;&lt;/a&gt;  % Turn off paragraph indentation but redefine \indent to emulate
<a id='L6774' name='L6774'></a>&lt;a id='L6760' name='L6760'&gt;&lt;/a&gt;  % the normal \indent.
<a id='L6775' name='L6775'></a>&lt;a id='L6761' name='L6761'&gt;&lt;/a&gt;  \nonfillparindent=\parindent
<a id='L6776' name='L6776'></a>&lt;a id='L6762' name='L6762'&gt;&lt;/a&gt;  \parindent = 0pt
<a id='L6777' name='L6777'></a>&lt;a id='L6763' name='L6763'&gt;&lt;/a&gt;  \let\indent\nonfillindent
<a id='L6778' name='L6778'></a>&lt;a id='L6764' name='L6764'&gt;&lt;/a&gt;  %
<a id='L6779' name='L6779'></a>&lt;a id='L6765' name='L6765'&gt;&lt;/a&gt;  \emergencystretch = 0pt % don't try to avoid overfull boxes
<a id='L6780' name='L6780'></a>&lt;a id='L6766' name='L6766'&gt;&lt;/a&gt;  \ifx\nonarrowing\relax
<a id='L6781' name='L6781'></a>&lt;a id='L6767' name='L6767'&gt;&lt;/a&gt;    \advance \leftskip by \lispnarrowing
<a id='L6782' name='L6782'></a>&lt;a id='L6768' name='L6768'&gt;&lt;/a&gt;    \exdentamount=\lispnarrowing
<a id='L6783' name='L6783'></a>&lt;a id='L6769' name='L6769'&gt;&lt;/a&gt;  \else
<a id='L6784' name='L6784'></a>&lt;a id='L6770' name='L6770'&gt;&lt;/a&gt;    \let\nonarrowing = \relax
<a id='L6785' name='L6785'></a>&lt;a id='L6771' name='L6771'&gt;&lt;/a&gt;  \fi
<a id='L6786' name='L6786'></a>&lt;a id='L6772' name='L6772'&gt;&lt;/a&gt;  \let\exdent=\nofillexdent
<a id='L6787' name='L6787'></a>&lt;a id='L6773' name='L6773'&gt;&lt;/a&gt;}
<a id='L6788' name='L6788'></a>&lt;a id='L6774' name='L6774'&gt;&lt;/a&gt;
<a id='L6789' name='L6789'></a>&lt;a id='L6775' name='L6775'&gt;&lt;/a&gt;\begingroup
<a id='L6790' name='L6790'></a>&lt;a id='L6776' name='L6776'&gt;&lt;/a&gt;\obeyspaces
<a id='L6791' name='L6791'></a>&lt;a id='L6777' name='L6777'&gt;&lt;/a&gt;% We want to swallow spaces (but not other tokens) after the fake
<a id='L6792' name='L6792'></a>&lt;a id='L6778' name='L6778'&gt;&lt;/a&gt;% @indent in our nonfill-environments, where spaces are normally
<a id='L6793' name='L6793'></a>&lt;a id='L6779' name='L6779'&gt;&lt;/a&gt;% active and set to @tie, resulting in them not being ignored after
<a id='L6794' name='L6794'></a>&lt;a id='L6780' name='L6780'&gt;&lt;/a&gt;% @indent.
<a id='L6795' name='L6795'></a>&lt;a id='L6781' name='L6781'&gt;&lt;/a&gt;\gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}%
<a id='L6796' name='L6796'></a>&lt;a id='L6782' name='L6782'&gt;&lt;/a&gt;\gdef\nonfillindentcheck{%
<a id='L6797' name='L6797'></a>&lt;a id='L6783' name='L6783'&gt;&lt;/a&gt;\ifx\temp %
<a id='L6798' name='L6798'></a>&lt;a id='L6784' name='L6784'&gt;&lt;/a&gt;\expandafter\nonfillindentgobble%
<a id='L6799' name='L6799'></a>&lt;a id='L6785' name='L6785'&gt;&lt;/a&gt;\else%
<a id='L6800' name='L6800'></a>&lt;a id='L6786' name='L6786'&gt;&lt;/a&gt;\leavevmode\nonfillindentbox%
<a id='L6801' name='L6801'></a>&lt;a id='L6787' name='L6787'&gt;&lt;/a&gt;\fi%
<a id='L6802' name='L6802'></a>&lt;a id='L6788' name='L6788'&gt;&lt;/a&gt;}%
<a id='L6803' name='L6803'></a>&lt;a id='L6789' name='L6789'&gt;&lt;/a&gt;\endgroup
<a id='L6804' name='L6804'></a>&lt;a id='L6790' name='L6790'&gt;&lt;/a&gt;\def\nonfillindentgobble#1{\nonfillindent}
<a id='L6805' name='L6805'></a>&lt;a id='L6791' name='L6791'&gt;&lt;/a&gt;\def\nonfillindentbox{\hbox to \nonfillparindent{\hss}}
<a id='L6806' name='L6806'></a>&lt;a id='L6792' name='L6792'&gt;&lt;/a&gt;
<a id='L6807' name='L6807'></a>&lt;a id='L6793' name='L6793'&gt;&lt;/a&gt;% If you want all examples etc. small: @set dispenvsize small.
<a id='L6808' name='L6808'></a>&lt;a id='L6794' name='L6794'&gt;&lt;/a&gt;% If you want even small examples the full size: @set dispenvsize nosmall.
<a id='L6809' name='L6809'></a>&lt;a id='L6795' name='L6795'&gt;&lt;/a&gt;% This affects the following displayed environments:
<a id='L6810' name='L6810'></a>&lt;a id='L6796' name='L6796'&gt;&lt;/a&gt;%    @example, @display, @format, @lisp
<a id='L6811' name='L6811'></a>&lt;a id='L6797' name='L6797'&gt;&lt;/a&gt;%
<a id='L6812' name='L6812'></a>&lt;a id='L6798' name='L6798'&gt;&lt;/a&gt;\def\smallword{small}
<a id='L6813' name='L6813'></a>&lt;a id='L6799' name='L6799'&gt;&lt;/a&gt;\def\nosmallword{nosmall}
<a id='L6814' name='L6814'></a>&lt;a id='L6800' name='L6800'&gt;&lt;/a&gt;\let\SETdispenvsize\relax
<a id='L6815' name='L6815'></a>&lt;a id='L6801' name='L6801'&gt;&lt;/a&gt;\def\setnormaldispenv{%
<a id='L6816' name='L6816'></a>&lt;a id='L6802' name='L6802'&gt;&lt;/a&gt;  \ifx\SETdispenvsize\smallword
<a id='L6817' name='L6817'></a>&lt;a id='L6803' name='L6803'&gt;&lt;/a&gt;    % end paragraph for sake of leading, in case document has no blank
<a id='L6818' name='L6818'></a>&lt;a id='L6804' name='L6804'&gt;&lt;/a&gt;    % line.  This is redundant with what happens in \aboveenvbreak, but
<a id='L6819' name='L6819'></a>&lt;a id='L6805' name='L6805'&gt;&lt;/a&gt;    % we need to do it before changing the fonts, and it's inconvenient
<a id='L6820' name='L6820'></a>&lt;a id='L6806' name='L6806'&gt;&lt;/a&gt;    % to change the fonts afterward.
<a id='L6821' name='L6821'></a>&lt;a id='L6807' name='L6807'&gt;&lt;/a&gt;    \ifnum \lastpenalty=10000 \else \endgraf \fi
<a id='L6822' name='L6822'></a>&lt;a id='L6808' name='L6808'&gt;&lt;/a&gt;    \smallexamplefonts \rm
<a id='L6823' name='L6823'></a>&lt;a id='L6809' name='L6809'&gt;&lt;/a&gt;  \fi
<a id='L6824' name='L6824'></a>&lt;a id='L6810' name='L6810'&gt;&lt;/a&gt;}
<a id='L6825' name='L6825'></a>&lt;a id='L6811' name='L6811'&gt;&lt;/a&gt;\def\setsmalldispenv{%
<a id='L6826' name='L6826'></a>&lt;a id='L6812' name='L6812'&gt;&lt;/a&gt;  \ifx\SETdispenvsize\nosmallword
<a id='L6827' name='L6827'></a>&lt;a id='L6813' name='L6813'&gt;&lt;/a&gt;  \else
<a id='L6828' name='L6828'></a>&lt;a id='L6814' name='L6814'&gt;&lt;/a&gt;    \ifnum \lastpenalty=10000 \else \endgraf \fi
<a id='L6829' name='L6829'></a>&lt;a id='L6815' name='L6815'&gt;&lt;/a&gt;    \smallexamplefonts \rm
<a id='L6830' name='L6830'></a>&lt;a id='L6816' name='L6816'&gt;&lt;/a&gt;  \fi
<a id='L6831' name='L6831'></a>&lt;a id='L6817' name='L6817'&gt;&lt;/a&gt;}
<a id='L6832' name='L6832'></a>&lt;a id='L6818' name='L6818'&gt;&lt;/a&gt;
<a id='L6833' name='L6833'></a>&lt;a id='L6819' name='L6819'&gt;&lt;/a&gt;% We often define two environments, @foo and @smallfoo.
<a id='L6834' name='L6834'></a>&lt;a id='L6820' name='L6820'&gt;&lt;/a&gt;% Let's do it in one command.  #1 is the env name, #2 the definition.
<a id='L6835' name='L6835'></a>&lt;a id='L6821' name='L6821'&gt;&lt;/a&gt;\def\makedispenvdef#1#2{%
<a id='L6836' name='L6836'></a>&lt;a id='L6822' name='L6822'&gt;&lt;/a&gt;  \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}%
<a id='L6837' name='L6837'></a>&lt;a id='L6823' name='L6823'&gt;&lt;/a&gt;  \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}%
<a id='L6838' name='L6838'></a>&lt;a id='L6824' name='L6824'&gt;&lt;/a&gt;  \expandafter\let\csname E#1\endcsname \afterenvbreak
<a id='L6839' name='L6839'></a>&lt;a id='L6825' name='L6825'&gt;&lt;/a&gt;  \expandafter\let\csname Esmall#1\endcsname \afterenvbreak
<a id='L6840' name='L6840'></a>&lt;a id='L6826' name='L6826'&gt;&lt;/a&gt;}
<a id='L6841' name='L6841'></a>&lt;a id='L6827' name='L6827'&gt;&lt;/a&gt;
<a id='L6842' name='L6842'></a>&lt;a id='L6828' name='L6828'&gt;&lt;/a&gt;% Define two environment synonyms (#1 and #2) for an environment.
<a id='L6843' name='L6843'></a>&lt;a id='L6829' name='L6829'&gt;&lt;/a&gt;\def\maketwodispenvdef#1#2#3{%
<a id='L6844' name='L6844'></a>&lt;a id='L6830' name='L6830'&gt;&lt;/a&gt;  \makedispenvdef{#1}{#3}%
<a id='L6845' name='L6845'></a>&lt;a id='L6831' name='L6831'&gt;&lt;/a&gt;  \makedispenvdef{#2}{#3}%
<a id='L6846' name='L6846'></a>&lt;a id='L6832' name='L6832'&gt;&lt;/a&gt;}
<a id='L6847' name='L6847'></a>&lt;a id='L6833' name='L6833'&gt;&lt;/a&gt;%
<a id='L6848' name='L6848'></a>&lt;a id='L6834' name='L6834'&gt;&lt;/a&gt;% @lisp: indented, narrowed, typewriter font;
<a id='L6849' name='L6849'></a>&lt;a id='L6835' name='L6835'&gt;&lt;/a&gt;% @example: same as @lisp.
<a id='L6850' name='L6850'></a>&lt;a id='L6836' name='L6836'&gt;&lt;/a&gt;%
<a id='L6851' name='L6851'></a>&lt;a id='L6837' name='L6837'&gt;&lt;/a&gt;% @smallexample and @smalllisp: use smaller fonts.
<a id='L6852' name='L6852'></a>&lt;a id='L6838' name='L6838'&gt;&lt;/a&gt;% Originally contributed by Pavel@xerox.
<a id='L6853' name='L6853'></a>&lt;a id='L6839' name='L6839'&gt;&lt;/a&gt;%
<a id='L6854' name='L6854'></a>&lt;a id='L6840' name='L6840'&gt;&lt;/a&gt;\maketwodispenvdef{lisp}{example}{%
<a id='L6855' name='L6855'></a>&lt;a id='L6841' name='L6841'&gt;&lt;/a&gt;  \nonfillstart
<a id='L6856' name='L6856'></a>&lt;a id='L6842' name='L6842'&gt;&lt;/a&gt;  \tt\setupmarkupstyle{example}%
<a id='L6857' name='L6857'></a>&lt;a id='L6843' name='L6843'&gt;&lt;/a&gt;  \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
<a id='L6858' name='L6858'></a>&lt;a id='L6844' name='L6844'&gt;&lt;/a&gt;  \gobble % eat return
<a id='L6859' name='L6859'></a>&lt;a id='L6845' name='L6845'&gt;&lt;/a&gt;}
<a id='L6860' name='L6860'></a>&lt;a id='L6846' name='L6846'&gt;&lt;/a&gt;% @display/@smalldisplay: same as @lisp except keep current font.
<a id='L6861' name='L6861'></a>&lt;a id='L6847' name='L6847'&gt;&lt;/a&gt;%
<a id='L6862' name='L6862'></a>&lt;a id='L6848' name='L6848'&gt;&lt;/a&gt;\makedispenvdef{display}{%
<a id='L6863' name='L6863'></a>&lt;a id='L6849' name='L6849'&gt;&lt;/a&gt;  \nonfillstart
<a id='L6864' name='L6864'></a>&lt;a id='L6850' name='L6850'&gt;&lt;/a&gt;  \gobble
<a id='L6865' name='L6865'></a>&lt;a id='L6851' name='L6851'&gt;&lt;/a&gt;}
<a id='L6866' name='L6866'></a>&lt;a id='L6852' name='L6852'&gt;&lt;/a&gt;
<a id='L6867' name='L6867'></a>&lt;a id='L6853' name='L6853'&gt;&lt;/a&gt;% @format/@smallformat: same as @display except don't narrow margins.
<a id='L6868' name='L6868'></a>&lt;a id='L6854' name='L6854'&gt;&lt;/a&gt;%
<a id='L6869' name='L6869'></a>&lt;a id='L6855' name='L6855'&gt;&lt;/a&gt;\makedispenvdef{format}{%
<a id='L6870' name='L6870'></a>&lt;a id='L6856' name='L6856'&gt;&lt;/a&gt;  \let\nonarrowing = t%
<a id='L6871' name='L6871'></a>&lt;a id='L6857' name='L6857'&gt;&lt;/a&gt;  \nonfillstart
<a id='L6872' name='L6872'></a>&lt;a id='L6858' name='L6858'&gt;&lt;/a&gt;  \gobble
<a id='L6873' name='L6873'></a>&lt;a id='L6859' name='L6859'&gt;&lt;/a&gt;}
<a id='L6874' name='L6874'></a>&lt;a id='L6860' name='L6860'&gt;&lt;/a&gt;
<a id='L6875' name='L6875'></a>&lt;a id='L6861' name='L6861'&gt;&lt;/a&gt;% @flushleft: same as @format, but doesn't obey \SETdispenvsize.
<a id='L6876' name='L6876'></a>&lt;a id='L6862' name='L6862'&gt;&lt;/a&gt;\envdef\flushleft{%
<a id='L6877' name='L6877'></a>&lt;a id='L6863' name='L6863'&gt;&lt;/a&gt;  \let\nonarrowing = t%
<a id='L6878' name='L6878'></a>&lt;a id='L6864' name='L6864'&gt;&lt;/a&gt;  \nonfillstart
<a id='L6879' name='L6879'></a>&lt;a id='L6865' name='L6865'&gt;&lt;/a&gt;  \gobble
<a id='L6880' name='L6880'></a>&lt;a id='L6866' name='L6866'&gt;&lt;/a&gt;}
<a id='L6881' name='L6881'></a>&lt;a id='L6867' name='L6867'&gt;&lt;/a&gt;\let\Eflushleft = \afterenvbreak
<a id='L6882' name='L6882'></a>&lt;a id='L6868' name='L6868'&gt;&lt;/a&gt;
<a id='L6883' name='L6883'></a>&lt;a id='L6869' name='L6869'&gt;&lt;/a&gt;% @flushright.
<a id='L6884' name='L6884'></a>&lt;a id='L6870' name='L6870'&gt;&lt;/a&gt;%
<a id='L6885' name='L6885'></a>&lt;a id='L6871' name='L6871'&gt;&lt;/a&gt;\envdef\flushright{%
<a id='L6886' name='L6886'></a>&lt;a id='L6872' name='L6872'&gt;&lt;/a&gt;  \let\nonarrowing = t%
<a id='L6887' name='L6887'></a>&lt;a id='L6873' name='L6873'&gt;&lt;/a&gt;  \nonfillstart
<a id='L6888' name='L6888'></a>&lt;a id='L6874' name='L6874'&gt;&lt;/a&gt;  \advance\leftskip by 0pt plus 1fill\relax
<a id='L6889' name='L6889'></a>&lt;a id='L6875' name='L6875'&gt;&lt;/a&gt;  \gobble
<a id='L6890' name='L6890'></a>&lt;a id='L6876' name='L6876'&gt;&lt;/a&gt;}
<a id='L6891' name='L6891'></a>&lt;a id='L6877' name='L6877'&gt;&lt;/a&gt;\let\Eflushright = \afterenvbreak
<a id='L6892' name='L6892'></a>&lt;a id='L6878' name='L6878'&gt;&lt;/a&gt;
<a id='L6893' name='L6893'></a>&lt;a id='L6879' name='L6879'&gt;&lt;/a&gt;
<a id='L6894' name='L6894'></a>&lt;a id='L6880' name='L6880'&gt;&lt;/a&gt;% @raggedright does more-or-less normal line breaking but no right
<a id='L6895' name='L6895'></a>&lt;a id='L6881' name='L6881'&gt;&lt;/a&gt;% justification.  From plain.tex.
<a id='L6896' name='L6896'></a>&lt;a id='L6882' name='L6882'&gt;&lt;/a&gt;\envdef\raggedright{%
<a id='L6897' name='L6897'></a>&lt;a id='L6883' name='L6883'&gt;&lt;/a&gt;  \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax
<a id='L6898' name='L6898'></a>&lt;a id='L6884' name='L6884'&gt;&lt;/a&gt;}
<a id='L6899' name='L6899'></a>&lt;a id='L6885' name='L6885'&gt;&lt;/a&gt;\let\Eraggedright\par
<a id='L6900' name='L6900'></a>&lt;a id='L6886' name='L6886'&gt;&lt;/a&gt;
<a id='L6901' name='L6901'></a>&lt;a id='L6887' name='L6887'&gt;&lt;/a&gt;\envdef\raggedleft{%
<a id='L6902' name='L6902'></a>&lt;a id='L6888' name='L6888'&gt;&lt;/a&gt;  \parindent=0pt \leftskip0pt plus2em
<a id='L6903' name='L6903'></a>&lt;a id='L6889' name='L6889'&gt;&lt;/a&gt;  \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
<a id='L6904' name='L6904'></a>&lt;a id='L6890' name='L6890'&gt;&lt;/a&gt;  \hbadness=10000 % Last line will usually be underfull, so turn off
<a id='L6905' name='L6905'></a>&lt;a id='L6891' name='L6891'&gt;&lt;/a&gt;                  % badness reporting.
<a id='L6906' name='L6906'></a>&lt;a id='L6892' name='L6892'&gt;&lt;/a&gt;}
<a id='L6907' name='L6907'></a>&lt;a id='L6893' name='L6893'&gt;&lt;/a&gt;\let\Eraggedleft\par
<a id='L6908' name='L6908'></a>&lt;a id='L6894' name='L6894'&gt;&lt;/a&gt;
<a id='L6909' name='L6909'></a>&lt;a id='L6895' name='L6895'&gt;&lt;/a&gt;\envdef\raggedcenter{%
<a id='L6910' name='L6910'></a>&lt;a id='L6896' name='L6896'&gt;&lt;/a&gt;  \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em
<a id='L6911' name='L6911'></a>&lt;a id='L6897' name='L6897'&gt;&lt;/a&gt;  \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
<a id='L6912' name='L6912'></a>&lt;a id='L6898' name='L6898'&gt;&lt;/a&gt;  \hbadness=10000 % Last line will usually be underfull, so turn off
<a id='L6913' name='L6913'></a>&lt;a id='L6899' name='L6899'&gt;&lt;/a&gt;                  % badness reporting.
<a id='L6914' name='L6914'></a>&lt;a id='L6900' name='L6900'&gt;&lt;/a&gt;}
<a id='L6915' name='L6915'></a>&lt;a id='L6901' name='L6901'&gt;&lt;/a&gt;\let\Eraggedcenter\par
<a id='L6916' name='L6916'></a>&lt;a id='L6902' name='L6902'&gt;&lt;/a&gt;
<a id='L6917' name='L6917'></a>&lt;a id='L6903' name='L6903'&gt;&lt;/a&gt;
<a id='L6918' name='L6918'></a>&lt;a id='L6904' name='L6904'&gt;&lt;/a&gt;% @quotation does normal linebreaking (hence we can't use \nonfillstart)
<a id='L6919' name='L6919'></a>&lt;a id='L6905' name='L6905'&gt;&lt;/a&gt;% and narrows the margins.  We keep \parskip nonzero in general, since
<a id='L6920' name='L6920'></a>&lt;a id='L6906' name='L6906'&gt;&lt;/a&gt;% we're doing normal filling.  So, when using \aboveenvbreak and
<a id='L6921' name='L6921'></a>&lt;a id='L6907' name='L6907'&gt;&lt;/a&gt;% \afterenvbreak, temporarily make \parskip 0.
<a id='L6922' name='L6922'></a>&lt;a id='L6908' name='L6908'&gt;&lt;/a&gt;%
<a id='L6923' name='L6923'></a>&lt;a id='L6909' name='L6909'&gt;&lt;/a&gt;\makedispenvdef{quotation}{\quotationstart}
<a id='L6924' name='L6924'></a>&lt;a id='L6910' name='L6910'&gt;&lt;/a&gt;%
<a id='L6925' name='L6925'></a>&lt;a id='L6911' name='L6911'&gt;&lt;/a&gt;\def\quotationstart{%
<a id='L6926' name='L6926'></a>&lt;a id='L6912' name='L6912'&gt;&lt;/a&gt;  \indentedblockstart % same as \indentedblock, but increase right margin too.
<a id='L6927' name='L6927'></a>&lt;a id='L6913' name='L6913'&gt;&lt;/a&gt;  \ifx\nonarrowing\relax
<a id='L6928' name='L6928'></a>&lt;a id='L6914' name='L6914'&gt;&lt;/a&gt;    \advance\rightskip by \lispnarrowing
<a id='L6929' name='L6929'></a>&lt;a id='L6915' name='L6915'&gt;&lt;/a&gt;  \fi
<a id='L6930' name='L6930'></a>&lt;a id='L6916' name='L6916'&gt;&lt;/a&gt;  \parsearg\quotationlabel
<a id='L6931' name='L6931'></a>&lt;a id='L6917' name='L6917'&gt;&lt;/a&gt;}
<a id='L6932' name='L6932'></a>&lt;a id='L6918' name='L6918'&gt;&lt;/a&gt;
<a id='L6933' name='L6933'></a>&lt;a id='L6919' name='L6919'&gt;&lt;/a&gt;% We have retained a nonzero parskip for the environment, since we're
<a id='L6934' name='L6934'></a>&lt;a id='L6920' name='L6920'&gt;&lt;/a&gt;% doing normal filling.
<a id='L6935' name='L6935'></a>&lt;a id='L6921' name='L6921'&gt;&lt;/a&gt;%
<a id='L6936' name='L6936'></a>&lt;a id='L6922' name='L6922'&gt;&lt;/a&gt;\def\Equotation{%
<a id='L6937' name='L6937'></a>&lt;a id='L6923' name='L6923'&gt;&lt;/a&gt;  \par
<a id='L6938' name='L6938'></a>&lt;a id='L6924' name='L6924'&gt;&lt;/a&gt;  \ifx\quotationauthor\thisisundefined\else
<a id='L6939' name='L6939'></a>&lt;a id='L6925' name='L6925'&gt;&lt;/a&gt;    % indent a bit.
<a id='L6940' name='L6940'></a>&lt;a id='L6926' name='L6926'&gt;&lt;/a&gt;    \leftline{\kern 2\leftskip \sl ---\quotationauthor}%
<a id='L6941' name='L6941'></a>&lt;a id='L6927' name='L6927'&gt;&lt;/a&gt;  \fi
<a id='L6942' name='L6942'></a>&lt;a id='L6928' name='L6928'&gt;&lt;/a&gt;  {\parskip=0pt \afterenvbreak}%
<a id='L6943' name='L6943'></a>&lt;a id='L6929' name='L6929'&gt;&lt;/a&gt;}
<a id='L6944' name='L6944'></a>&lt;a id='L6930' name='L6930'&gt;&lt;/a&gt;\def\Esmallquotation{\Equotation}
<a id='L6945' name='L6945'></a>&lt;a id='L6931' name='L6931'&gt;&lt;/a&gt;
<a id='L6946' name='L6946'></a>&lt;a id='L6932' name='L6932'&gt;&lt;/a&gt;% If we're given an argument, typeset it in bold with a colon after.
<a id='L6947' name='L6947'></a>&lt;a id='L6933' name='L6933'&gt;&lt;/a&gt;\def\quotationlabel#1{%
<a id='L6948' name='L6948'></a>&lt;a id='L6934' name='L6934'&gt;&lt;/a&gt;  \def\temp{#1}%
<a id='L6949' name='L6949'></a>&lt;a id='L6935' name='L6935'&gt;&lt;/a&gt;  \ifx\temp\empty \else
<a id='L6950' name='L6950'></a>&lt;a id='L6936' name='L6936'&gt;&lt;/a&gt;    {\bf #1: }%
<a id='L6951' name='L6951'></a>&lt;a id='L6937' name='L6937'&gt;&lt;/a&gt;  \fi
<a id='L6952' name='L6952'></a>&lt;a id='L6938' name='L6938'&gt;&lt;/a&gt;}
<a id='L6953' name='L6953'></a>&lt;a id='L6939' name='L6939'&gt;&lt;/a&gt;
<a id='L6954' name='L6954'></a>&lt;a id='L6940' name='L6940'&gt;&lt;/a&gt;% @indentedblock is like @quotation, but indents only on the left and
<a id='L6955' name='L6955'></a>&lt;a id='L6941' name='L6941'&gt;&lt;/a&gt;% has no optional argument.
<a id='L6956' name='L6956'></a>&lt;a id='L6942' name='L6942'&gt;&lt;/a&gt;% 
<a id='L6957' name='L6957'></a>&lt;a id='L6943' name='L6943'&gt;&lt;/a&gt;\makedispenvdef{indentedblock}{\indentedblockstart}
<a id='L6958' name='L6958'></a>&lt;a id='L6944' name='L6944'&gt;&lt;/a&gt;%
<a id='L6959' name='L6959'></a>&lt;a id='L6945' name='L6945'&gt;&lt;/a&gt;\def\indentedblockstart{%
<a id='L6960' name='L6960'></a>&lt;a id='L6946' name='L6946'&gt;&lt;/a&gt;  {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
<a id='L6961' name='L6961'></a>&lt;a id='L6947' name='L6947'&gt;&lt;/a&gt;  \parindent=0pt
<a id='L6962' name='L6962'></a>&lt;a id='L6948' name='L6948'&gt;&lt;/a&gt;  %
<a id='L6963' name='L6963'></a>&lt;a id='L6949' name='L6949'&gt;&lt;/a&gt;  % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
<a id='L6964' name='L6964'></a>&lt;a id='L6950' name='L6950'&gt;&lt;/a&gt;  \ifx\nonarrowing\relax
<a id='L6965' name='L6965'></a>&lt;a id='L6951' name='L6951'&gt;&lt;/a&gt;    \advance\leftskip by \lispnarrowing
<a id='L6966' name='L6966'></a>&lt;a id='L6952' name='L6952'&gt;&lt;/a&gt;    \exdentamount = \lispnarrowing
<a id='L6967' name='L6967'></a>&lt;a id='L6953' name='L6953'&gt;&lt;/a&gt;  \else
<a id='L6968' name='L6968'></a>&lt;a id='L6954' name='L6954'&gt;&lt;/a&gt;    \let\nonarrowing = \relax
<a id='L6969' name='L6969'></a>&lt;a id='L6955' name='L6955'&gt;&lt;/a&gt;  \fi
<a id='L6970' name='L6970'></a>&lt;a id='L6956' name='L6956'&gt;&lt;/a&gt;}
<a id='L6971' name='L6971'></a>&lt;a id='L6957' name='L6957'&gt;&lt;/a&gt;
<a id='L6972' name='L6972'></a>&lt;a id='L6958' name='L6958'&gt;&lt;/a&gt;% Keep a nonzero parskip for the environment, since we're doing normal filling.
<a id='L6973' name='L6973'></a>&lt;a id='L6959' name='L6959'&gt;&lt;/a&gt;%
<a id='L6974' name='L6974'></a>&lt;a id='L6960' name='L6960'&gt;&lt;/a&gt;\def\Eindentedblock{%
<a id='L6975' name='L6975'></a>&lt;a id='L6961' name='L6961'&gt;&lt;/a&gt;  \par
<a id='L6976' name='L6976'></a>&lt;a id='L6962' name='L6962'&gt;&lt;/a&gt;  {\parskip=0pt \afterenvbreak}%
<a id='L6977' name='L6977'></a>&lt;a id='L6963' name='L6963'&gt;&lt;/a&gt;}
<a id='L6978' name='L6978'></a>&lt;a id='L6964' name='L6964'&gt;&lt;/a&gt;\def\Esmallindentedblock{\Eindentedblock}
<a id='L6979' name='L6979'></a>&lt;a id='L6965' name='L6965'&gt;&lt;/a&gt;
<a id='L6980' name='L6980'></a>&lt;a id='L6966' name='L6966'&gt;&lt;/a&gt;
<a id='L6981' name='L6981'></a>&lt;a id='L6967' name='L6967'&gt;&lt;/a&gt;% LaTeX-like @verbatim...@end verbatim and @verb{&amp;lt;char&amp;gt;...&amp;lt;char&amp;gt;}
<a id='L6982' name='L6982'></a>&lt;a id='L6968' name='L6968'&gt;&lt;/a&gt;% If we want to allow any &amp;lt;char&amp;gt; as delimiter,
<a id='L6983' name='L6983'></a>&lt;a id='L6969' name='L6969'&gt;&lt;/a&gt;% we need the curly braces so that makeinfo sees the @verb command, eg:
<a id='L6984' name='L6984'></a>&lt;a id='L6970' name='L6970'&gt;&lt;/a&gt;% `@verbx...x' would look like the '@verbx' command.  --janneke@gnu.org
<a id='L6985' name='L6985'></a>&lt;a id='L6971' name='L6971'&gt;&lt;/a&gt;%
<a id='L6986' name='L6986'></a>&lt;a id='L6972' name='L6972'&gt;&lt;/a&gt;% [Knuth]: Donald Ervin Knuth, 1996.  The TeXbook.
<a id='L6987' name='L6987'></a>&lt;a id='L6973' name='L6973'&gt;&lt;/a&gt;%
<a id='L6988' name='L6988'></a>&lt;a id='L6974' name='L6974'&gt;&lt;/a&gt;% [Knuth] p.344; only we need to do the other characters Texinfo sets
<a id='L6989' name='L6989'></a>&lt;a id='L6975' name='L6975'&gt;&lt;/a&gt;% active too.  Otherwise, they get lost as the first character on a
<a id='L6990' name='L6990'></a>&lt;a id='L6976' name='L6976'&gt;&lt;/a&gt;% verbatim line.
<a id='L6991' name='L6991'></a>&lt;a id='L6977' name='L6977'&gt;&lt;/a&gt;\def\dospecials{%
<a id='L6992' name='L6992'></a>&lt;a id='L6978' name='L6978'&gt;&lt;/a&gt;  \do\ \do\\\do\{\do\}\do\$\do\&amp;amp;%
<a id='L6993' name='L6993'></a>&lt;a id='L6979' name='L6979'&gt;&lt;/a&gt;  \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%
<a id='L6994' name='L6994'></a>&lt;a id='L6980' name='L6980'&gt;&lt;/a&gt;  \do\&amp;lt;\do\&amp;gt;\do\|\do\@\do+\do\"%
<a id='L6995' name='L6995'></a>&lt;a id='L6981' name='L6981'&gt;&lt;/a&gt;  % Don't do the quotes -- if we do, @set txicodequoteundirected and
<a id='L6996' name='L6996'></a>&lt;a id='L6982' name='L6982'&gt;&lt;/a&gt;  % @set txicodequotebacktick will not have effect on @verb and
<a id='L6997' name='L6997'></a>&lt;a id='L6983' name='L6983'&gt;&lt;/a&gt;  % @verbatim, and ?` and !` ligatures won't get disabled.
<a id='L6998' name='L6998'></a>&lt;a id='L6984' name='L6984'&gt;&lt;/a&gt;  %\do\`\do\'%
<a id='L6999' name='L6999'></a>&lt;a id='L6985' name='L6985'&gt;&lt;/a&gt;}
<a id='L7000' name='L7000'></a>&lt;a id='L6986' name='L6986'&gt;&lt;/a&gt;%
<a id='L7001' name='L7001'></a>&lt;a id='L6987' name='L6987'&gt;&lt;/a&gt;% [Knuth] p. 380
<a id='L7002' name='L7002'></a>&lt;a id='L6988' name='L6988'&gt;&lt;/a&gt;\def\uncatcodespecials{%
<a id='L7003' name='L7003'></a>&lt;a id='L6989' name='L6989'&gt;&lt;/a&gt;  \def\do##1{\catcode`##1=\other}\dospecials}
<a id='L7004' name='L7004'></a>&lt;a id='L6990' name='L6990'&gt;&lt;/a&gt;%
<a id='L7005' name='L7005'></a>&lt;a id='L6991' name='L6991'&gt;&lt;/a&gt;% Setup for the @verb command.
<a id='L7006' name='L7006'></a>&lt;a id='L6992' name='L6992'&gt;&lt;/a&gt;%
<a id='L7007' name='L7007'></a>&lt;a id='L6993' name='L6993'&gt;&lt;/a&gt;% Eight spaces for a tab
<a id='L7008' name='L7008'></a>&lt;a id='L6994' name='L6994'&gt;&lt;/a&gt;\begingroup
<a id='L7009' name='L7009'></a>&lt;a id='L6995' name='L6995'&gt;&lt;/a&gt;  \catcode`\^^I=\active
<a id='L7010' name='L7010'></a>&lt;a id='L6996' name='L6996'&gt;&lt;/a&gt;  \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }}
<a id='L7011' name='L7011'></a>&lt;a id='L6997' name='L6997'&gt;&lt;/a&gt;\endgroup
<a id='L7012' name='L7012'></a>&lt;a id='L6998' name='L6998'&gt;&lt;/a&gt;%
<a id='L7013' name='L7013'></a>&lt;a id='L6999' name='L6999'&gt;&lt;/a&gt;\def\setupverb{%
<a id='L7014' name='L7014'></a>&lt;a id='L7000' name='L7000'&gt;&lt;/a&gt;  \tt  % easiest (and conventionally used) font for verbatim
<a id='L7015' name='L7015'></a>&lt;a id='L7001' name='L7001'&gt;&lt;/a&gt;  \def\par{\leavevmode\endgraf}%
<a id='L7016' name='L7016'></a>&lt;a id='L7002' name='L7002'&gt;&lt;/a&gt;  \setupmarkupstyle{verb}%
<a id='L7017' name='L7017'></a>&lt;a id='L7003' name='L7003'&gt;&lt;/a&gt;  \tabeightspaces
<a id='L7018' name='L7018'></a>&lt;a id='L7004' name='L7004'&gt;&lt;/a&gt;  % Respect line breaks,
<a id='L7019' name='L7019'></a>&lt;a id='L7005' name='L7005'&gt;&lt;/a&gt;  % print special symbols as themselves, and
<a id='L7020' name='L7020'></a>&lt;a id='L7006' name='L7006'&gt;&lt;/a&gt;  % make each space count
<a id='L7021' name='L7021'></a>&lt;a id='L7007' name='L7007'&gt;&lt;/a&gt;  % must do in this order:
<a id='L7022' name='L7022'></a>&lt;a id='L7008' name='L7008'&gt;&lt;/a&gt;  \obeylines \uncatcodespecials \sepspaces
<a id='L7023' name='L7023'></a>&lt;a id='L7009' name='L7009'&gt;&lt;/a&gt;}
<a id='L7024' name='L7024'></a>&lt;a id='L7010' name='L7010'&gt;&lt;/a&gt;
<a id='L7025' name='L7025'></a>&lt;a id='L7011' name='L7011'&gt;&lt;/a&gt;% Setup for the @verbatim environment
<a id='L7026' name='L7026'></a>&lt;a id='L7012' name='L7012'&gt;&lt;/a&gt;%
<a id='L7027' name='L7027'></a>&lt;a id='L7013' name='L7013'&gt;&lt;/a&gt;% Real tab expansion.
<a id='L7028' name='L7028'></a>&lt;a id='L7014' name='L7014'&gt;&lt;/a&gt;\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
<a id='L7029' name='L7029'></a>&lt;a id='L7015' name='L7015'&gt;&lt;/a&gt;%
<a id='L7030' name='L7030'></a>&lt;a id='L7016' name='L7016'&gt;&lt;/a&gt;% We typeset each line of the verbatim in an \hbox, so we can handle
<a id='L7031' name='L7031'></a>&lt;a id='L7017' name='L7017'&gt;&lt;/a&gt;% tabs.  The \global is in case the verbatim line starts with an accent,
<a id='L7032' name='L7032'></a>&lt;a id='L7018' name='L7018'&gt;&lt;/a&gt;% or some other command that starts with a begin-group.  Otherwise, the
<a id='L7033' name='L7033'></a>&lt;a id='L7019' name='L7019'&gt;&lt;/a&gt;% entire \verbbox would disappear at the corresponding end-group, before
<a id='L7034' name='L7034'></a>&lt;a id='L7020' name='L7020'&gt;&lt;/a&gt;% it is typeset.  Meanwhile, we can't have nested verbatim commands
<a id='L7035' name='L7035'></a>&lt;a id='L7021' name='L7021'&gt;&lt;/a&gt;% (can we?), so the \global won't be overwriting itself.
<a id='L7036' name='L7036'></a>&lt;a id='L7022' name='L7022'&gt;&lt;/a&gt;\newbox\verbbox
<a id='L7037' name='L7037'></a>&lt;a id='L7023' name='L7023'&gt;&lt;/a&gt;\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup}
<a id='L7038' name='L7038'></a>&lt;a id='L7024' name='L7024'&gt;&lt;/a&gt;%
<a id='L7039' name='L7039'></a>&lt;a id='L7025' name='L7025'&gt;&lt;/a&gt;\begingroup
<a id='L7040' name='L7040'></a>&lt;a id='L7026' name='L7026'&gt;&lt;/a&gt;  \catcode`\^^I=\active
<a id='L7041' name='L7041'></a>&lt;a id='L7027' name='L7027'&gt;&lt;/a&gt;  \gdef\tabexpand{%
<a id='L7042' name='L7042'></a>&lt;a id='L7028' name='L7028'&gt;&lt;/a&gt;    \catcode`\^^I=\active
<a id='L7043' name='L7043'></a>&lt;a id='L7029' name='L7029'&gt;&lt;/a&gt;    \def^^I{\leavevmode\egroup
<a id='L7044' name='L7044'></a>&lt;a id='L7030' name='L7030'&gt;&lt;/a&gt;      \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab
<a id='L7045' name='L7045'></a>&lt;a id='L7031' name='L7031'&gt;&lt;/a&gt;      \divide\dimen\verbbox by\tabw
<a id='L7046' name='L7046'></a>&lt;a id='L7032' name='L7032'&gt;&lt;/a&gt;      \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw
<a id='L7047' name='L7047'></a>&lt;a id='L7033' name='L7033'&gt;&lt;/a&gt;      \advance\dimen\verbbox by\tabw  % advance to next multiple of \tabw
<a id='L7048' name='L7048'></a>&lt;a id='L7034' name='L7034'&gt;&lt;/a&gt;      \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox
<a id='L7049' name='L7049'></a>&lt;a id='L7035' name='L7035'&gt;&lt;/a&gt;    }%
<a id='L7050' name='L7050'></a>&lt;a id='L7036' name='L7036'&gt;&lt;/a&gt;  }
<a id='L7051' name='L7051'></a>&lt;a id='L7037' name='L7037'&gt;&lt;/a&gt;\endgroup
<a id='L7052' name='L7052'></a>&lt;a id='L7038' name='L7038'&gt;&lt;/a&gt;
<a id='L7053' name='L7053'></a>&lt;a id='L7039' name='L7039'&gt;&lt;/a&gt;% start the verbatim environment.
<a id='L7054' name='L7054'></a>&lt;a id='L7040' name='L7040'&gt;&lt;/a&gt;\def\setupverbatim{%
<a id='L7055' name='L7055'></a>&lt;a id='L7041' name='L7041'&gt;&lt;/a&gt;  \let\nonarrowing = t%
<a id='L7056' name='L7056'></a>&lt;a id='L7042' name='L7042'&gt;&lt;/a&gt;  \nonfillstart
<a id='L7057' name='L7057'></a>&lt;a id='L7043' name='L7043'&gt;&lt;/a&gt;  \tt % easiest (and conventionally used) font for verbatim
<a id='L7058' name='L7058'></a>&lt;a id='L7044' name='L7044'&gt;&lt;/a&gt;  % The \leavevmode here is for blank lines.  Otherwise, we would
<a id='L7059' name='L7059'></a>&lt;a id='L7045' name='L7045'&gt;&lt;/a&gt;  % never \starttabox and the \egroup would end verbatim mode.
<a id='L7060' name='L7060'></a>&lt;a id='L7046' name='L7046'&gt;&lt;/a&gt;  \def\par{\leavevmode\egroup\box\verbbox\endgraf}%
<a id='L7061' name='L7061'></a>&lt;a id='L7047' name='L7047'&gt;&lt;/a&gt;  \tabexpand
<a id='L7062' name='L7062'></a>&lt;a id='L7048' name='L7048'&gt;&lt;/a&gt;  \setupmarkupstyle{verbatim}%
<a id='L7063' name='L7063'></a>&lt;a id='L7049' name='L7049'&gt;&lt;/a&gt;  % Respect line breaks,
<a id='L7064' name='L7064'></a>&lt;a id='L7050' name='L7050'&gt;&lt;/a&gt;  % print special symbols as themselves, and
<a id='L7065' name='L7065'></a>&lt;a id='L7051' name='L7051'&gt;&lt;/a&gt;  % make each space count.
<a id='L7066' name='L7066'></a>&lt;a id='L7052' name='L7052'&gt;&lt;/a&gt;  % Must do in this order:
<a id='L7067' name='L7067'></a>&lt;a id='L7053' name='L7053'&gt;&lt;/a&gt;  \obeylines \uncatcodespecials \sepspaces
<a id='L7068' name='L7068'></a>&lt;a id='L7054' name='L7054'&gt;&lt;/a&gt;  \everypar{\starttabbox}%
<a id='L7069' name='L7069'></a>&lt;a id='L7055' name='L7055'&gt;&lt;/a&gt;}
<a id='L7070' name='L7070'></a>&lt;a id='L7056' name='L7056'&gt;&lt;/a&gt;
<a id='L7071' name='L7071'></a>&lt;a id='L7057' name='L7057'&gt;&lt;/a&gt;% Do the @verb magic: verbatim text is quoted by unique
<a id='L7072' name='L7072'></a>&lt;a id='L7058' name='L7058'&gt;&lt;/a&gt;% delimiter characters.  Before first delimiter expect a
<a id='L7073' name='L7073'></a>&lt;a id='L7059' name='L7059'&gt;&lt;/a&gt;% right brace, after last delimiter expect closing brace:
<a id='L7074' name='L7074'></a>&lt;a id='L7060' name='L7060'&gt;&lt;/a&gt;%
<a id='L7075' name='L7075'></a>&lt;a id='L7061' name='L7061'&gt;&lt;/a&gt;%    \def\doverb'{'&amp;lt;char&amp;gt;#1&amp;lt;char&amp;gt;'}'{#1}
<a id='L7076' name='L7076'></a>&lt;a id='L7062' name='L7062'&gt;&lt;/a&gt;%
<a id='L7077' name='L7077'></a>&lt;a id='L7063' name='L7063'&gt;&lt;/a&gt;% [Knuth] p. 382; only eat outer {}
<a id='L7078' name='L7078'></a>&lt;a id='L7064' name='L7064'&gt;&lt;/a&gt;\begingroup
<a id='L7079' name='L7079'></a>&lt;a id='L7065' name='L7065'&gt;&lt;/a&gt;  \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other
<a id='L7080' name='L7080'></a>&lt;a id='L7066' name='L7066'&gt;&lt;/a&gt;  \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next]
<a id='L7081' name='L7081'></a>&lt;a id='L7067' name='L7067'&gt;&lt;/a&gt;\endgroup
<a id='L7082' name='L7082'></a>&lt;a id='L7068' name='L7068'&gt;&lt;/a&gt;%
<a id='L7083' name='L7083'></a>&lt;a id='L7069' name='L7069'&gt;&lt;/a&gt;\def\verb{\begingroup\setupverb\doverb}
<a id='L7084' name='L7084'></a>&lt;a id='L7070' name='L7070'&gt;&lt;/a&gt;%
<a id='L7085' name='L7085'></a>&lt;a id='L7071' name='L7071'&gt;&lt;/a&gt;%
<a id='L7086' name='L7086'></a>&lt;a id='L7072' name='L7072'&gt;&lt;/a&gt;% Do the @verbatim magic: define the macro \doverbatim so that
<a id='L7087' name='L7087'></a>&lt;a id='L7073' name='L7073'&gt;&lt;/a&gt;% the (first) argument ends when '@end verbatim' is reached, ie:
<a id='L7088' name='L7088'></a>&lt;a id='L7074' name='L7074'&gt;&lt;/a&gt;%
<a id='L7089' name='L7089'></a>&lt;a id='L7075' name='L7075'&gt;&lt;/a&gt;%     \def\doverbatim#1@end verbatim{#1}
<a id='L7090' name='L7090'></a>&lt;a id='L7076' name='L7076'&gt;&lt;/a&gt;%
<a id='L7091' name='L7091'></a>&lt;a id='L7077' name='L7077'&gt;&lt;/a&gt;% For Texinfo it's a lot easier than for LaTeX,
<a id='L7092' name='L7092'></a>&lt;a id='L7078' name='L7078'&gt;&lt;/a&gt;% because texinfo's \verbatim doesn't stop at '\end{verbatim}':
<a id='L7093' name='L7093'></a>&lt;a id='L7079' name='L7079'&gt;&lt;/a&gt;% we need not redefine '\', '{' and '}'.
<a id='L7094' name='L7094'></a>&lt;a id='L7080' name='L7080'&gt;&lt;/a&gt;%
<a id='L7095' name='L7095'></a>&lt;a id='L7081' name='L7081'&gt;&lt;/a&gt;% Inspired by LaTeX's verbatim command set [latex.ltx]
<a id='L7096' name='L7096'></a>&lt;a id='L7082' name='L7082'&gt;&lt;/a&gt;%
<a id='L7097' name='L7097'></a>&lt;a id='L7083' name='L7083'&gt;&lt;/a&gt;\begingroup
<a id='L7098' name='L7098'></a>&lt;a id='L7084' name='L7084'&gt;&lt;/a&gt;  \catcode`\ =\active
<a id='L7099' name='L7099'></a>&lt;a id='L7085' name='L7085'&gt;&lt;/a&gt;  \obeylines %
<a id='L7100' name='L7100'></a>&lt;a id='L7086' name='L7086'&gt;&lt;/a&gt;  % ignore everything up to the first ^^M, that's the newline at the end
<a id='L7101' name='L7101'></a>&lt;a id='L7087' name='L7087'&gt;&lt;/a&gt;  % of the @verbatim input line itself.  Otherwise we get an extra blank
<a id='L7102' name='L7102'></a>&lt;a id='L7088' name='L7088'&gt;&lt;/a&gt;  % line in the output.
<a id='L7103' name='L7103'></a>&lt;a id='L7089' name='L7089'&gt;&lt;/a&gt;  \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}%
<a id='L7104' name='L7104'></a>&lt;a id='L7090' name='L7090'&gt;&lt;/a&gt;  % We really want {...\end verbatim} in the body of the macro, but
<a id='L7105' name='L7105'></a>&lt;a id='L7091' name='L7091'&gt;&lt;/a&gt;  % without the active space; thus we have to use \xdef and \gobble.
<a id='L7106' name='L7106'></a>&lt;a id='L7092' name='L7092'&gt;&lt;/a&gt;\endgroup
<a id='L7107' name='L7107'></a>&lt;a id='L7093' name='L7093'&gt;&lt;/a&gt;%
<a id='L7108' name='L7108'></a>&lt;a id='L7094' name='L7094'&gt;&lt;/a&gt;\envdef\verbatim{%
<a id='L7109' name='L7109'></a>&lt;a id='L7095' name='L7095'&gt;&lt;/a&gt;    \setupverbatim\doverbatim
<a id='L7110' name='L7110'></a>&lt;a id='L7096' name='L7096'&gt;&lt;/a&gt;}
<a id='L7111' name='L7111'></a>&lt;a id='L7097' name='L7097'&gt;&lt;/a&gt;\let\Everbatim = \afterenvbreak
<a id='L7112' name='L7112'></a>&lt;a id='L7098' name='L7098'&gt;&lt;/a&gt;
<a id='L7113' name='L7113'></a>&lt;a id='L7099' name='L7099'&gt;&lt;/a&gt;
<a id='L7114' name='L7114'></a>&lt;a id='L7100' name='L7100'&gt;&lt;/a&gt;% @verbatiminclude FILE - insert text of file in verbatim environment.
<a id='L7115' name='L7115'></a>&lt;a id='L7101' name='L7101'&gt;&lt;/a&gt;%
<a id='L7116' name='L7116'></a>&lt;a id='L7102' name='L7102'&gt;&lt;/a&gt;\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude}
<a id='L7117' name='L7117'></a>&lt;a id='L7103' name='L7103'&gt;&lt;/a&gt;%
<a id='L7118' name='L7118'></a>&lt;a id='L7104' name='L7104'&gt;&lt;/a&gt;\def\doverbatiminclude#1{%
<a id='L7119' name='L7119'></a>&lt;a id='L7105' name='L7105'&gt;&lt;/a&gt;  {%
<a id='L7120' name='L7120'></a>&lt;a id='L7106' name='L7106'&gt;&lt;/a&gt;    \makevalueexpandable
<a id='L7121' name='L7121'></a>&lt;a id='L7107' name='L7107'&gt;&lt;/a&gt;    \setupverbatim
<a id='L7122' name='L7122'></a>&lt;a id='L7108' name='L7108'&gt;&lt;/a&gt;    \indexnofonts       % Allow `@@' and other weird things in file names.
<a id='L7123' name='L7123'></a>&lt;a id='L7109' name='L7109'&gt;&lt;/a&gt;    \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}%
<a id='L7124' name='L7124'></a>&lt;a id='L7110' name='L7110'&gt;&lt;/a&gt;    \input #1
<a id='L7125' name='L7125'></a>&lt;a id='L7111' name='L7111'&gt;&lt;/a&gt;    \afterenvbreak
<a id='L7126' name='L7126'></a>&lt;a id='L7112' name='L7112'&gt;&lt;/a&gt;  }%
<a id='L7127' name='L7127'></a>&lt;a id='L7113' name='L7113'&gt;&lt;/a&gt;}
<a id='L7128' name='L7128'></a>&lt;a id='L7114' name='L7114'&gt;&lt;/a&gt;
<a id='L7129' name='L7129'></a>&lt;a id='L7115' name='L7115'&gt;&lt;/a&gt;% @copying ... @end copying.
<a id='L7130' name='L7130'></a>&lt;a id='L7116' name='L7116'&gt;&lt;/a&gt;% Save the text away for @insertcopying later.
<a id='L7131' name='L7131'></a>&lt;a id='L7117' name='L7117'&gt;&lt;/a&gt;%
<a id='L7132' name='L7132'></a>&lt;a id='L7118' name='L7118'&gt;&lt;/a&gt;% We save the uninterpreted tokens, rather than creating a box.
<a id='L7133' name='L7133'></a>&lt;a id='L7119' name='L7119'&gt;&lt;/a&gt;% Saving the text in a box would be much easier, but then all the
<a id='L7134' name='L7134'></a>&lt;a id='L7120' name='L7120'&gt;&lt;/a&gt;% typesetting commands (@smallbook, font changes, etc.) have to be done
<a id='L7135' name='L7135'></a>&lt;a id='L7121' name='L7121'&gt;&lt;/a&gt;% beforehand -- and a) we want @copying to be done first in the source
<a id='L7136' name='L7136'></a>&lt;a id='L7122' name='L7122'&gt;&lt;/a&gt;% file; b) letting users define the frontmatter in as flexible order as
<a id='L7137' name='L7137'></a>&lt;a id='L7123' name='L7123'&gt;&lt;/a&gt;% possible is very desirable.
<a id='L7138' name='L7138'></a>&lt;a id='L7124' name='L7124'&gt;&lt;/a&gt;%
<a id='L7139' name='L7139'></a>&lt;a id='L7125' name='L7125'&gt;&lt;/a&gt;\def\copying{\checkenv{}\begingroup\scanargctxt\docopying}
<a id='L7140' name='L7140'></a>&lt;a id='L7126' name='L7126'&gt;&lt;/a&gt;\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}}
<a id='L7141' name='L7141'></a>&lt;a id='L7127' name='L7127'&gt;&lt;/a&gt;%
<a id='L7142' name='L7142'></a>&lt;a id='L7128' name='L7128'&gt;&lt;/a&gt;\def\insertcopying{%
<a id='L7143' name='L7143'></a>&lt;a id='L7129' name='L7129'&gt;&lt;/a&gt;  \begingroup
<a id='L7144' name='L7144'></a>&lt;a id='L7130' name='L7130'&gt;&lt;/a&gt;    \parindent = 0pt  % paragraph indentation looks wrong on title page
<a id='L7145' name='L7145'></a>&lt;a id='L7131' name='L7131'&gt;&lt;/a&gt;    \scanexp\copyingtext
<a id='L7146' name='L7146'></a>&lt;a id='L7132' name='L7132'&gt;&lt;/a&gt;  \endgroup
<a id='L7147' name='L7147'></a>&lt;a id='L7133' name='L7133'&gt;&lt;/a&gt;}
<a id='L7148' name='L7148'></a>&lt;a id='L7134' name='L7134'&gt;&lt;/a&gt;
<a id='L7149' name='L7149'></a>&lt;a id='L7135' name='L7135'&gt;&lt;/a&gt;
<a id='L7150' name='L7150'></a>&lt;a id='L7136' name='L7136'&gt;&lt;/a&gt;\message{defuns,}
<a id='L7151' name='L7151'></a>&lt;a id='L7137' name='L7137'&gt;&lt;/a&gt;% @defun etc.
<a id='L7152' name='L7152'></a>&lt;a id='L7138' name='L7138'&gt;&lt;/a&gt;
<a id='L7153' name='L7153'></a>&lt;a id='L7139' name='L7139'&gt;&lt;/a&gt;\newskip\defbodyindent \defbodyindent=.4in
<a id='L7154' name='L7154'></a>&lt;a id='L7140' name='L7140'&gt;&lt;/a&gt;\newskip\defargsindent \defargsindent=50pt
<a id='L7155' name='L7155'></a>&lt;a id='L7141' name='L7141'&gt;&lt;/a&gt;\newskip\deflastargmargin \deflastargmargin=18pt
<a id='L7156' name='L7156'></a>&lt;a id='L7142' name='L7142'&gt;&lt;/a&gt;\newcount\defunpenalty
<a id='L7157' name='L7157'></a>&lt;a id='L7143' name='L7143'&gt;&lt;/a&gt;
<a id='L7158' name='L7158'></a>&lt;a id='L7144' name='L7144'&gt;&lt;/a&gt;% Start the processing of @deffn:
<a id='L7159' name='L7159'></a>&lt;a id='L7145' name='L7145'&gt;&lt;/a&gt;\def\startdefun{%
<a id='L7160' name='L7160'></a>&lt;a id='L7146' name='L7146'&gt;&lt;/a&gt;  \ifnum\lastpenalty&amp;lt;10000
<a id='L7161' name='L7161'></a>&lt;a id='L7147' name='L7147'&gt;&lt;/a&gt;    \medbreak
<a id='L7162' name='L7162'></a>&lt;a id='L7148' name='L7148'&gt;&lt;/a&gt;    \defunpenalty=10003 % Will keep this @deffn together with the
<a id='L7163' name='L7163'></a>&lt;a id='L7149' name='L7149'&gt;&lt;/a&gt;                        % following @def command, see below.
<a id='L7164' name='L7164'></a>&lt;a id='L7150' name='L7150'&gt;&lt;/a&gt;  \else
<a id='L7165' name='L7165'></a>&lt;a id='L7151' name='L7151'&gt;&lt;/a&gt;    % If there are two @def commands in a row, we'll have a \nobreak,
<a id='L7166' name='L7166'></a>&lt;a id='L7152' name='L7152'&gt;&lt;/a&gt;    % which is there to keep the function description together with its
<a id='L7167' name='L7167'></a>&lt;a id='L7153' name='L7153'&gt;&lt;/a&gt;    % header.  But if there's nothing but headers, we need to allow a
<a id='L7168' name='L7168'></a>&lt;a id='L7154' name='L7154'&gt;&lt;/a&gt;    % break somewhere.  Check specifically for penalty 10002, inserted
<a id='L7169' name='L7169'></a>&lt;a id='L7155' name='L7155'&gt;&lt;/a&gt;    % by \printdefunline, instead of 10000, since the sectioning
<a id='L7170' name='L7170'></a>&lt;a id='L7156' name='L7156'&gt;&lt;/a&gt;    % commands also insert a nobreak penalty, and we don't want to allow
<a id='L7171' name='L7171'></a>&lt;a id='L7157' name='L7157'&gt;&lt;/a&gt;    % a break between a section heading and a defun.
<a id='L7172' name='L7172'></a>&lt;a id='L7158' name='L7158'&gt;&lt;/a&gt;    %
<a id='L7173' name='L7173'></a>&lt;a id='L7159' name='L7159'&gt;&lt;/a&gt;    % As a further refinement, we avoid "club" headers by signalling
<a id='L7174' name='L7174'></a>&lt;a id='L7160' name='L7160'&gt;&lt;/a&gt;    % with penalty of 10003 after the very first @deffn in the
<a id='L7175' name='L7175'></a>&lt;a id='L7161' name='L7161'&gt;&lt;/a&gt;    % sequence (see above), and penalty of 10002 after any following
<a id='L7176' name='L7176'></a>&lt;a id='L7162' name='L7162'&gt;&lt;/a&gt;    % @def command.
<a id='L7177' name='L7177'></a>&lt;a id='L7163' name='L7163'&gt;&lt;/a&gt;    \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi
<a id='L7178' name='L7178'></a>&lt;a id='L7164' name='L7164'&gt;&lt;/a&gt;    %
<a id='L7179' name='L7179'></a>&lt;a id='L7165' name='L7165'&gt;&lt;/a&gt;    % Similarly, after a section heading, do not allow a break.
<a id='L7180' name='L7180'></a>&lt;a id='L7166' name='L7166'&gt;&lt;/a&gt;    % But do insert the glue.
<a id='L7181' name='L7181'></a>&lt;a id='L7167' name='L7167'&gt;&lt;/a&gt;    \medskip  % preceded by discardable penalty, so not a breakpoint
<a id='L7182' name='L7182'></a>&lt;a id='L7168' name='L7168'&gt;&lt;/a&gt;  \fi
<a id='L7183' name='L7183'></a>&lt;a id='L7169' name='L7169'&gt;&lt;/a&gt;  %
<a id='L7184' name='L7184'></a>&lt;a id='L7170' name='L7170'&gt;&lt;/a&gt;  \parindent=0in
<a id='L7185' name='L7185'></a>&lt;a id='L7171' name='L7171'&gt;&lt;/a&gt;  \advance\leftskip by \defbodyindent
<a id='L7186' name='L7186'></a>&lt;a id='L7172' name='L7172'&gt;&lt;/a&gt;  \exdentamount=\defbodyindent
<a id='L7187' name='L7187'></a>&lt;a id='L7173' name='L7173'&gt;&lt;/a&gt;}
<a id='L7188' name='L7188'></a>&lt;a id='L7174' name='L7174'&gt;&lt;/a&gt;
<a id='L7189' name='L7189'></a>&lt;a id='L7175' name='L7175'&gt;&lt;/a&gt;\def\dodefunx#1{%
<a id='L7190' name='L7190'></a>&lt;a id='L7176' name='L7176'&gt;&lt;/a&gt;  % First, check whether we are in the right environment:
<a id='L7191' name='L7191'></a>&lt;a id='L7177' name='L7177'&gt;&lt;/a&gt;  \checkenv#1%
<a id='L7192' name='L7192'></a>&lt;a id='L7178' name='L7178'&gt;&lt;/a&gt;  %
<a id='L7193' name='L7193'></a>&lt;a id='L7179' name='L7179'&gt;&lt;/a&gt;  % As above, allow line break if we have multiple x headers in a row.
<a id='L7194' name='L7194'></a>&lt;a id='L7180' name='L7180'&gt;&lt;/a&gt;  % It's not a great place, though.
<a id='L7195' name='L7195'></a>&lt;a id='L7181' name='L7181'&gt;&lt;/a&gt;  \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi
<a id='L7196' name='L7196'></a>&lt;a id='L7182' name='L7182'&gt;&lt;/a&gt;  %
<a id='L7197' name='L7197'></a>&lt;a id='L7183' name='L7183'&gt;&lt;/a&gt;  % And now, it's time to reuse the body of the original defun:
<a id='L7198' name='L7198'></a>&lt;a id='L7184' name='L7184'&gt;&lt;/a&gt;  \expandafter\gobbledefun#1%
<a id='L7199' name='L7199'></a>&lt;a id='L7185' name='L7185'&gt;&lt;/a&gt;}
<a id='L7200' name='L7200'></a>&lt;a id='L7186' name='L7186'&gt;&lt;/a&gt;\def\gobbledefun#1\startdefun{}
<a id='L7201' name='L7201'></a>&lt;a id='L7187' name='L7187'&gt;&lt;/a&gt;
<a id='L7202' name='L7202'></a>&lt;a id='L7188' name='L7188'&gt;&lt;/a&gt;% \printdefunline \deffnheader{text}
<a id='L7203' name='L7203'></a>&lt;a id='L7189' name='L7189'&gt;&lt;/a&gt;%
<a id='L7204' name='L7204'></a>&lt;a id='L7190' name='L7190'&gt;&lt;/a&gt;\def\printdefunline#1#2{%
<a id='L7205' name='L7205'></a>&lt;a id='L7191' name='L7191'&gt;&lt;/a&gt;  \begingroup
<a id='L7206' name='L7206'></a>&lt;a id='L7192' name='L7192'&gt;&lt;/a&gt;    % call \deffnheader:
<a id='L7207' name='L7207'></a>&lt;a id='L7193' name='L7193'&gt;&lt;/a&gt;    #1#2 \endheader
<a id='L7208' name='L7208'></a>&lt;a id='L7194' name='L7194'&gt;&lt;/a&gt;    % common ending:
<a id='L7209' name='L7209'></a>&lt;a id='L7195' name='L7195'&gt;&lt;/a&gt;    \interlinepenalty = 10000
<a id='L7210' name='L7210'></a>&lt;a id='L7196' name='L7196'&gt;&lt;/a&gt;    \advance\rightskip by 0pt plus 1fil\relax
<a id='L7211' name='L7211'></a>&lt;a id='L7197' name='L7197'&gt;&lt;/a&gt;    \endgraf
<a id='L7212' name='L7212'></a>&lt;a id='L7198' name='L7198'&gt;&lt;/a&gt;    \nobreak\vskip -\parskip
<a id='L7213' name='L7213'></a>&lt;a id='L7199' name='L7199'&gt;&lt;/a&gt;    \penalty\defunpenalty  % signal to \startdefun and \dodefunx
<a id='L7214' name='L7214'></a>&lt;a id='L7200' name='L7200'&gt;&lt;/a&gt;    % Some of the @defun-type tags do not enable magic parentheses,
<a id='L7215' name='L7215'></a>&lt;a id='L7201' name='L7201'&gt;&lt;/a&gt;    % rendering the following check redundant.  But we don't optimize.
<a id='L7216' name='L7216'></a>&lt;a id='L7202' name='L7202'&gt;&lt;/a&gt;    \checkparencounts
<a id='L7217' name='L7217'></a>&lt;a id='L7203' name='L7203'&gt;&lt;/a&gt;  \endgroup
<a id='L7218' name='L7218'></a>&lt;a id='L7204' name='L7204'&gt;&lt;/a&gt;}
<a id='L7219' name='L7219'></a>&lt;a id='L7205' name='L7205'&gt;&lt;/a&gt;
<a id='L7220' name='L7220'></a>&lt;a id='L7206' name='L7206'&gt;&lt;/a&gt;\def\Edefun{\endgraf\medbreak}
<a id='L7221' name='L7221'></a>&lt;a id='L7207' name='L7207'&gt;&lt;/a&gt;
<a id='L7222' name='L7222'></a>&lt;a id='L7208' name='L7208'&gt;&lt;/a&gt;% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
<a id='L7223' name='L7223'></a>&lt;a id='L7209' name='L7209'&gt;&lt;/a&gt;% the only thing remaining is to define \deffnheader.
<a id='L7224' name='L7224'></a>&lt;a id='L7210' name='L7210'&gt;&lt;/a&gt;%
<a id='L7225' name='L7225'></a>&lt;a id='L7211' name='L7211'&gt;&lt;/a&gt;\def\makedefun#1{%
<a id='L7226' name='L7226'></a>&lt;a id='L7212' name='L7212'&gt;&lt;/a&gt;  \expandafter\let\csname E#1\endcsname = \Edefun
<a id='L7227' name='L7227'></a>&lt;a id='L7213' name='L7213'&gt;&lt;/a&gt;  \edef\temp{\noexpand\domakedefun
<a id='L7228' name='L7228'></a>&lt;a id='L7214' name='L7214'&gt;&lt;/a&gt;    \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}%
<a id='L7229' name='L7229'></a>&lt;a id='L7215' name='L7215'&gt;&lt;/a&gt;  \temp
<a id='L7230' name='L7230'></a>&lt;a id='L7216' name='L7216'&gt;&lt;/a&gt;}
<a id='L7231' name='L7231'></a>&lt;a id='L7217' name='L7217'&gt;&lt;/a&gt;
<a id='L7232' name='L7232'></a>&lt;a id='L7218' name='L7218'&gt;&lt;/a&gt;% \domakedefun \deffn \deffnx \deffnheader
<a id='L7233' name='L7233'></a>&lt;a id='L7219' name='L7219'&gt;&lt;/a&gt;%
<a id='L7234' name='L7234'></a>&lt;a id='L7220' name='L7220'&gt;&lt;/a&gt;% Define \deffn and \deffnx, without parameters.
<a id='L7235' name='L7235'></a>&lt;a id='L7221' name='L7221'&gt;&lt;/a&gt;% \deffnheader has to be defined explicitly.
<a id='L7236' name='L7236'></a>&lt;a id='L7222' name='L7222'&gt;&lt;/a&gt;%
<a id='L7237' name='L7237'></a>&lt;a id='L7223' name='L7223'&gt;&lt;/a&gt;\def\domakedefun#1#2#3{%
<a id='L7238' name='L7238'></a>&lt;a id='L7224' name='L7224'&gt;&lt;/a&gt;  \envdef#1{%
<a id='L7239' name='L7239'></a>&lt;a id='L7225' name='L7225'&gt;&lt;/a&gt;    \startdefun
<a id='L7240' name='L7240'></a>&lt;a id='L7226' name='L7226'&gt;&lt;/a&gt;    \doingtypefnfalse    % distinguish typed functions from all else
<a id='L7241' name='L7241'></a>&lt;a id='L7227' name='L7227'&gt;&lt;/a&gt;    \parseargusing\activeparens{\printdefunline#3}%
<a id='L7242' name='L7242'></a>&lt;a id='L7228' name='L7228'&gt;&lt;/a&gt;  }%
<a id='L7243' name='L7243'></a>&lt;a id='L7229' name='L7229'&gt;&lt;/a&gt;  \def#2{\dodefunx#1}%
<a id='L7244' name='L7244'></a>&lt;a id='L7230' name='L7230'&gt;&lt;/a&gt;  \def#3%
<a id='L7245' name='L7245'></a>&lt;a id='L7231' name='L7231'&gt;&lt;/a&gt;}
<a id='L7246' name='L7246'></a>&lt;a id='L7232' name='L7232'&gt;&lt;/a&gt;
<a id='L7247' name='L7247'></a>&lt;a id='L7233' name='L7233'&gt;&lt;/a&gt;\newif\ifdoingtypefn       % doing typed function?
<a id='L7248' name='L7248'></a>&lt;a id='L7234' name='L7234'&gt;&lt;/a&gt;\newif\ifrettypeownline    % typeset return type on its own line?
<a id='L7249' name='L7249'></a>&lt;a id='L7235' name='L7235'&gt;&lt;/a&gt;
<a id='L7250' name='L7250'></a>&lt;a id='L7236' name='L7236'&gt;&lt;/a&gt;% @deftypefnnewline on|off says whether the return type of typed functions
<a id='L7251' name='L7251'></a>&lt;a id='L7237' name='L7237'&gt;&lt;/a&gt;% are printed on their own line.  This affects @deftypefn, @deftypefun,
<a id='L7252' name='L7252'></a>&lt;a id='L7238' name='L7238'&gt;&lt;/a&gt;% @deftypeop, and @deftypemethod.
<a id='L7253' name='L7253'></a>&lt;a id='L7239' name='L7239'&gt;&lt;/a&gt;% 
<a id='L7254' name='L7254'></a>&lt;a id='L7240' name='L7240'&gt;&lt;/a&gt;\parseargdef\deftypefnnewline{%
<a id='L7255' name='L7255'></a>&lt;a id='L7241' name='L7241'&gt;&lt;/a&gt;  \def\temp{#1}%
<a id='L7256' name='L7256'></a>&lt;a id='L7242' name='L7242'&gt;&lt;/a&gt;  \ifx\temp\onword
<a id='L7257' name='L7257'></a>&lt;a id='L7243' name='L7243'&gt;&lt;/a&gt;    \expandafter\let\csname SETtxideftypefnnl\endcsname
<a id='L7258' name='L7258'></a>&lt;a id='L7244' name='L7244'&gt;&lt;/a&gt;      = \empty
<a id='L7259' name='L7259'></a>&lt;a id='L7245' name='L7245'&gt;&lt;/a&gt;  \else\ifx\temp\offword
<a id='L7260' name='L7260'></a>&lt;a id='L7246' name='L7246'&gt;&lt;/a&gt;    \expandafter\let\csname SETtxideftypefnnl\endcsname
<a id='L7261' name='L7261'></a>&lt;a id='L7247' name='L7247'&gt;&lt;/a&gt;      = \relax
<a id='L7262' name='L7262'></a>&lt;a id='L7248' name='L7248'&gt;&lt;/a&gt;  \else
<a id='L7263' name='L7263'></a>&lt;a id='L7249' name='L7249'&gt;&lt;/a&gt;    \errhelp = \EMsimple
<a id='L7264' name='L7264'></a>&lt;a id='L7250' name='L7250'&gt;&lt;/a&gt;    \errmessage{Unknown @txideftypefnnl value `\temp',
<a id='L7265' name='L7265'></a>&lt;a id='L7251' name='L7251'&gt;&lt;/a&gt;                must be on|off}%
<a id='L7266' name='L7266'></a>&lt;a id='L7252' name='L7252'&gt;&lt;/a&gt;  \fi\fi
<a id='L7267' name='L7267'></a>&lt;a id='L7253' name='L7253'&gt;&lt;/a&gt;}
<a id='L7268' name='L7268'></a>&lt;a id='L7254' name='L7254'&gt;&lt;/a&gt;
<a id='L7269' name='L7269'></a>&lt;a id='L7255' name='L7255'&gt;&lt;/a&gt;% Untyped functions:
<a id='L7270' name='L7270'></a>&lt;a id='L7256' name='L7256'&gt;&lt;/a&gt;
<a id='L7271' name='L7271'></a>&lt;a id='L7257' name='L7257'&gt;&lt;/a&gt;% @deffn category name args
<a id='L7272' name='L7272'></a>&lt;a id='L7258' name='L7258'&gt;&lt;/a&gt;\makedefun{deffn}{\deffngeneral{}}
<a id='L7273' name='L7273'></a>&lt;a id='L7259' name='L7259'&gt;&lt;/a&gt;
<a id='L7274' name='L7274'></a>&lt;a id='L7260' name='L7260'&gt;&lt;/a&gt;% @deffn category class name args
<a id='L7275' name='L7275'></a>&lt;a id='L7261' name='L7261'&gt;&lt;/a&gt;\makedefun{defop}#1 {\defopon{#1\ \putwordon}}
<a id='L7276' name='L7276'></a>&lt;a id='L7262' name='L7262'&gt;&lt;/a&gt;
<a id='L7277' name='L7277'></a>&lt;a id='L7263' name='L7263'&gt;&lt;/a&gt;% \defopon {category on}class name args
<a id='L7278' name='L7278'></a>&lt;a id='L7264' name='L7264'&gt;&lt;/a&gt;\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
<a id='L7279' name='L7279'></a>&lt;a id='L7265' name='L7265'&gt;&lt;/a&gt;
<a id='L7280' name='L7280'></a>&lt;a id='L7266' name='L7266'&gt;&lt;/a&gt;% \deffngeneral {subind}category name args
<a id='L7281' name='L7281'></a>&lt;a id='L7267' name='L7267'&gt;&lt;/a&gt;%
<a id='L7282' name='L7282'></a>&lt;a id='L7268' name='L7268'&gt;&lt;/a&gt;\def\deffngeneral#1#2 #3 #4\endheader{%
<a id='L7283' name='L7283'></a>&lt;a id='L7269' name='L7269'&gt;&lt;/a&gt;  % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}.
<a id='L7284' name='L7284'></a>&lt;a id='L7270' name='L7270'&gt;&lt;/a&gt;  \dosubind{fn}{\code{#3}}{#1}%
<a id='L7285' name='L7285'></a>&lt;a id='L7271' name='L7271'&gt;&lt;/a&gt;  \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
<a id='L7286' name='L7286'></a>&lt;a id='L7272' name='L7272'&gt;&lt;/a&gt;}
<a id='L7287' name='L7287'></a>&lt;a id='L7273' name='L7273'&gt;&lt;/a&gt;
<a id='L7288' name='L7288'></a>&lt;a id='L7274' name='L7274'&gt;&lt;/a&gt;% Typed functions:
<a id='L7289' name='L7289'></a>&lt;a id='L7275' name='L7275'&gt;&lt;/a&gt;
<a id='L7290' name='L7290'></a>&lt;a id='L7276' name='L7276'&gt;&lt;/a&gt;% @deftypefn category type name args
<a id='L7291' name='L7291'></a>&lt;a id='L7277' name='L7277'&gt;&lt;/a&gt;\makedefun{deftypefn}{\deftypefngeneral{}}
<a id='L7292' name='L7292'></a>&lt;a id='L7278' name='L7278'&gt;&lt;/a&gt;
<a id='L7293' name='L7293'></a>&lt;a id='L7279' name='L7279'&gt;&lt;/a&gt;% @deftypeop category class type name args
<a id='L7294' name='L7294'></a>&lt;a id='L7280' name='L7280'&gt;&lt;/a&gt;\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}}
<a id='L7295' name='L7295'></a>&lt;a id='L7281' name='L7281'&gt;&lt;/a&gt;
<a id='L7296' name='L7296'></a>&lt;a id='L7282' name='L7282'&gt;&lt;/a&gt;% \deftypeopon {category on}class type name args
<a id='L7297' name='L7297'></a>&lt;a id='L7283' name='L7283'&gt;&lt;/a&gt;\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
<a id='L7298' name='L7298'></a>&lt;a id='L7284' name='L7284'&gt;&lt;/a&gt;
<a id='L7299' name='L7299'></a>&lt;a id='L7285' name='L7285'&gt;&lt;/a&gt;% \deftypefngeneral {subind}category type name args
<a id='L7300' name='L7300'></a>&lt;a id='L7286' name='L7286'&gt;&lt;/a&gt;%
<a id='L7301' name='L7301'></a>&lt;a id='L7287' name='L7287'&gt;&lt;/a&gt;\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
<a id='L7302' name='L7302'></a>&lt;a id='L7288' name='L7288'&gt;&lt;/a&gt;  \dosubind{fn}{\code{#4}}{#1}%
<a id='L7303' name='L7303'></a>&lt;a id='L7289' name='L7289'&gt;&lt;/a&gt;  \doingtypefntrue
<a id='L7304' name='L7304'></a>&lt;a id='L7290' name='L7290'&gt;&lt;/a&gt;  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
<a id='L7305' name='L7305'></a>&lt;a id='L7291' name='L7291'&gt;&lt;/a&gt;}
<a id='L7306' name='L7306'></a>&lt;a id='L7292' name='L7292'&gt;&lt;/a&gt;
<a id='L7307' name='L7307'></a>&lt;a id='L7293' name='L7293'&gt;&lt;/a&gt;% Typed variables:
<a id='L7308' name='L7308'></a>&lt;a id='L7294' name='L7294'&gt;&lt;/a&gt;
<a id='L7309' name='L7309'></a>&lt;a id='L7295' name='L7295'&gt;&lt;/a&gt;% @deftypevr category type var args
<a id='L7310' name='L7310'></a>&lt;a id='L7296' name='L7296'&gt;&lt;/a&gt;\makedefun{deftypevr}{\deftypecvgeneral{}}
<a id='L7311' name='L7311'></a>&lt;a id='L7297' name='L7297'&gt;&lt;/a&gt;
<a id='L7312' name='L7312'></a>&lt;a id='L7298' name='L7298'&gt;&lt;/a&gt;% @deftypecv category class type var args
<a id='L7313' name='L7313'></a>&lt;a id='L7299' name='L7299'&gt;&lt;/a&gt;\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}}
<a id='L7314' name='L7314'></a>&lt;a id='L7300' name='L7300'&gt;&lt;/a&gt;
<a id='L7315' name='L7315'></a>&lt;a id='L7301' name='L7301'&gt;&lt;/a&gt;% \deftypecvof {category of}class type var args
<a id='L7316' name='L7316'></a>&lt;a id='L7302' name='L7302'&gt;&lt;/a&gt;\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} }
<a id='L7317' name='L7317'></a>&lt;a id='L7303' name='L7303'&gt;&lt;/a&gt;
<a id='L7318' name='L7318'></a>&lt;a id='L7304' name='L7304'&gt;&lt;/a&gt;% \deftypecvgeneral {subind}category type var args
<a id='L7319' name='L7319'></a>&lt;a id='L7305' name='L7305'&gt;&lt;/a&gt;%
<a id='L7320' name='L7320'></a>&lt;a id='L7306' name='L7306'&gt;&lt;/a&gt;\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{%
<a id='L7321' name='L7321'></a>&lt;a id='L7307' name='L7307'&gt;&lt;/a&gt;  \dosubind{vr}{\code{#4}}{#1}%
<a id='L7322' name='L7322'></a>&lt;a id='L7308' name='L7308'&gt;&lt;/a&gt;  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
<a id='L7323' name='L7323'></a>&lt;a id='L7309' name='L7309'&gt;&lt;/a&gt;}
<a id='L7324' name='L7324'></a>&lt;a id='L7310' name='L7310'&gt;&lt;/a&gt;
<a id='L7325' name='L7325'></a>&lt;a id='L7311' name='L7311'&gt;&lt;/a&gt;% Untyped variables:
<a id='L7326' name='L7326'></a>&lt;a id='L7312' name='L7312'&gt;&lt;/a&gt;
<a id='L7327' name='L7327'></a>&lt;a id='L7313' name='L7313'&gt;&lt;/a&gt;% @defvr category var args
<a id='L7328' name='L7328'></a>&lt;a id='L7314' name='L7314'&gt;&lt;/a&gt;\makedefun{defvr}#1 {\deftypevrheader{#1} {} }
<a id='L7329' name='L7329'></a>&lt;a id='L7315' name='L7315'&gt;&lt;/a&gt;
<a id='L7330' name='L7330'></a>&lt;a id='L7316' name='L7316'&gt;&lt;/a&gt;% @defcv category class var args
<a id='L7331' name='L7331'></a>&lt;a id='L7317' name='L7317'&gt;&lt;/a&gt;\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}}
<a id='L7332' name='L7332'></a>&lt;a id='L7318' name='L7318'&gt;&lt;/a&gt;
<a id='L7333' name='L7333'></a>&lt;a id='L7319' name='L7319'&gt;&lt;/a&gt;% \defcvof {category of}class var args
<a id='L7334' name='L7334'></a>&lt;a id='L7320' name='L7320'&gt;&lt;/a&gt;\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
<a id='L7335' name='L7335'></a>&lt;a id='L7321' name='L7321'&gt;&lt;/a&gt;
<a id='L7336' name='L7336'></a>&lt;a id='L7322' name='L7322'&gt;&lt;/a&gt;% Types:
<a id='L7337' name='L7337'></a>&lt;a id='L7323' name='L7323'&gt;&lt;/a&gt;
<a id='L7338' name='L7338'></a>&lt;a id='L7324' name='L7324'&gt;&lt;/a&gt;% @deftp category name args
<a id='L7339' name='L7339'></a>&lt;a id='L7325' name='L7325'&gt;&lt;/a&gt;\makedefun{deftp}#1 #2 #3\endheader{%
<a id='L7340' name='L7340'></a>&lt;a id='L7326' name='L7326'&gt;&lt;/a&gt;  \doind{tp}{\code{#2}}%
<a id='L7341' name='L7341'></a>&lt;a id='L7327' name='L7327'&gt;&lt;/a&gt;  \defname{#1}{}{#2}\defunargs{#3\unskip}%
<a id='L7342' name='L7342'></a>&lt;a id='L7328' name='L7328'&gt;&lt;/a&gt;}
<a id='L7343' name='L7343'></a>&lt;a id='L7329' name='L7329'&gt;&lt;/a&gt;
<a id='L7344' name='L7344'></a>&lt;a id='L7330' name='L7330'&gt;&lt;/a&gt;% Remaining @defun-like shortcuts:
<a id='L7345' name='L7345'></a>&lt;a id='L7331' name='L7331'&gt;&lt;/a&gt;\makedefun{defun}{\deffnheader{\putwordDeffunc} }
<a id='L7346' name='L7346'></a>&lt;a id='L7332' name='L7332'&gt;&lt;/a&gt;\makedefun{defmac}{\deffnheader{\putwordDefmac} }
<a id='L7347' name='L7347'></a>&lt;a id='L7333' name='L7333'&gt;&lt;/a&gt;\makedefun{defspec}{\deffnheader{\putwordDefspec} }
<a id='L7348' name='L7348'></a>&lt;a id='L7334' name='L7334'&gt;&lt;/a&gt;\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} }
<a id='L7349' name='L7349'></a>&lt;a id='L7335' name='L7335'&gt;&lt;/a&gt;\makedefun{defvar}{\defvrheader{\putwordDefvar} }
<a id='L7350' name='L7350'></a>&lt;a id='L7336' name='L7336'&gt;&lt;/a&gt;\makedefun{defopt}{\defvrheader{\putwordDefopt} }
<a id='L7351' name='L7351'></a>&lt;a id='L7337' name='L7337'&gt;&lt;/a&gt;\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} }
<a id='L7352' name='L7352'></a>&lt;a id='L7338' name='L7338'&gt;&lt;/a&gt;\makedefun{defmethod}{\defopon\putwordMethodon}
<a id='L7353' name='L7353'></a>&lt;a id='L7339' name='L7339'&gt;&lt;/a&gt;\makedefun{deftypemethod}{\deftypeopon\putwordMethodon}
<a id='L7354' name='L7354'></a>&lt;a id='L7340' name='L7340'&gt;&lt;/a&gt;\makedefun{defivar}{\defcvof\putwordInstanceVariableof}
<a id='L7355' name='L7355'></a>&lt;a id='L7341' name='L7341'&gt;&lt;/a&gt;\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof}
<a id='L7356' name='L7356'></a>&lt;a id='L7342' name='L7342'&gt;&lt;/a&gt;
<a id='L7357' name='L7357'></a>&lt;a id='L7343' name='L7343'&gt;&lt;/a&gt;% \defname, which formats the name of the @def (not the args).
<a id='L7358' name='L7358'></a>&lt;a id='L7344' name='L7344'&gt;&lt;/a&gt;% #1 is the category, such as "Function".
<a id='L7359' name='L7359'></a>&lt;a id='L7345' name='L7345'&gt;&lt;/a&gt;% #2 is the return type, if any.
<a id='L7360' name='L7360'></a>&lt;a id='L7346' name='L7346'&gt;&lt;/a&gt;% #3 is the function name.
<a id='L7361' name='L7361'></a>&lt;a id='L7347' name='L7347'&gt;&lt;/a&gt;%
<a id='L7362' name='L7362'></a>&lt;a id='L7348' name='L7348'&gt;&lt;/a&gt;% We are followed by (but not passed) the arguments, if any.
<a id='L7363' name='L7363'></a>&lt;a id='L7349' name='L7349'&gt;&lt;/a&gt;%
<a id='L7364' name='L7364'></a>&lt;a id='L7350' name='L7350'&gt;&lt;/a&gt;\def\defname#1#2#3{%
<a id='L7365' name='L7365'></a>&lt;a id='L7351' name='L7351'&gt;&lt;/a&gt;  \par
<a id='L7366' name='L7366'></a>&lt;a id='L7352' name='L7352'&gt;&lt;/a&gt;  % Get the values of \leftskip and \rightskip as they were outside the @def...
<a id='L7367' name='L7367'></a>&lt;a id='L7353' name='L7353'&gt;&lt;/a&gt;  \advance\leftskip by -\defbodyindent
<a id='L7368' name='L7368'></a>&lt;a id='L7354' name='L7354'&gt;&lt;/a&gt;  %
<a id='L7369' name='L7369'></a>&lt;a id='L7355' name='L7355'&gt;&lt;/a&gt;  % Determine if we are typesetting the return type of a typed function
<a id='L7370' name='L7370'></a>&lt;a id='L7356' name='L7356'&gt;&lt;/a&gt;  % on a line by itself.
<a id='L7371' name='L7371'></a>&lt;a id='L7357' name='L7357'&gt;&lt;/a&gt;  \rettypeownlinefalse
<a id='L7372' name='L7372'></a>&lt;a id='L7358' name='L7358'&gt;&lt;/a&gt;  \ifdoingtypefn  % doing a typed function specifically?
<a id='L7373' name='L7373'></a>&lt;a id='L7359' name='L7359'&gt;&lt;/a&gt;    % then check user option for putting return type on its own line:
<a id='L7374' name='L7374'></a>&lt;a id='L7360' name='L7360'&gt;&lt;/a&gt;    \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else
<a id='L7375' name='L7375'></a>&lt;a id='L7361' name='L7361'&gt;&lt;/a&gt;      \rettypeownlinetrue
<a id='L7376' name='L7376'></a>&lt;a id='L7362' name='L7362'&gt;&lt;/a&gt;    \fi
<a id='L7377' name='L7377'></a>&lt;a id='L7363' name='L7363'&gt;&lt;/a&gt;  \fi
<a id='L7378' name='L7378'></a>&lt;a id='L7364' name='L7364'&gt;&lt;/a&gt;  %
<a id='L7379' name='L7379'></a>&lt;a id='L7365' name='L7365'&gt;&lt;/a&gt;  % How we'll format the category name.  Putting it in brackets helps
<a id='L7380' name='L7380'></a>&lt;a id='L7366' name='L7366'&gt;&lt;/a&gt;  % distinguish it from the body text that may end up on the next line
<a id='L7381' name='L7381'></a>&lt;a id='L7367' name='L7367'&gt;&lt;/a&gt;  % just below it.
<a id='L7382' name='L7382'></a>&lt;a id='L7368' name='L7368'&gt;&lt;/a&gt;  \def\temp{#1}%
<a id='L7383' name='L7383'></a>&lt;a id='L7369' name='L7369'&gt;&lt;/a&gt;  \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi}
<a id='L7384' name='L7384'></a>&lt;a id='L7370' name='L7370'&gt;&lt;/a&gt;  %
<a id='L7385' name='L7385'></a>&lt;a id='L7371' name='L7371'&gt;&lt;/a&gt;  % Figure out line sizes for the paragraph shape.  We'll always have at
<a id='L7386' name='L7386'></a>&lt;a id='L7372' name='L7372'&gt;&lt;/a&gt;  % least two.
<a id='L7387' name='L7387'></a>&lt;a id='L7373' name='L7373'&gt;&lt;/a&gt;  \tempnum = 2
<a id='L7388' name='L7388'></a>&lt;a id='L7374' name='L7374'&gt;&lt;/a&gt;  %
<a id='L7389' name='L7389'></a>&lt;a id='L7375' name='L7375'&gt;&lt;/a&gt;  % The first line needs space for \box0; but if \rightskip is nonzero,
<a id='L7390' name='L7390'></a>&lt;a id='L7376' name='L7376'&gt;&lt;/a&gt;  % we need only space for the part of \box0 which exceeds it:
<a id='L7391' name='L7391'></a>&lt;a id='L7377' name='L7377'&gt;&lt;/a&gt;  \dimen0=\hsize  \advance\dimen0 by -\wd0  \advance\dimen0 by \rightskip
<a id='L7392' name='L7392'></a>&lt;a id='L7378' name='L7378'&gt;&lt;/a&gt;  %
<a id='L7393' name='L7393'></a>&lt;a id='L7379' name='L7379'&gt;&lt;/a&gt;  % If doing a return type on its own line, we'll have another line.
<a id='L7394' name='L7394'></a>&lt;a id='L7380' name='L7380'&gt;&lt;/a&gt;  \ifrettypeownline
<a id='L7395' name='L7395'></a>&lt;a id='L7381' name='L7381'&gt;&lt;/a&gt;    \advance\tempnum by 1
<a id='L7396' name='L7396'></a>&lt;a id='L7382' name='L7382'&gt;&lt;/a&gt;    \def\maybeshapeline{0in \hsize}%
<a id='L7397' name='L7397'></a>&lt;a id='L7383' name='L7383'&gt;&lt;/a&gt;  \else
<a id='L7398' name='L7398'></a>&lt;a id='L7384' name='L7384'&gt;&lt;/a&gt;    \def\maybeshapeline{}%
<a id='L7399' name='L7399'></a>&lt;a id='L7385' name='L7385'&gt;&lt;/a&gt;  \fi
<a id='L7400' name='L7400'></a>&lt;a id='L7386' name='L7386'&gt;&lt;/a&gt;  %
<a id='L7401' name='L7401'></a>&lt;a id='L7387' name='L7387'&gt;&lt;/a&gt;  % The continuations:
<a id='L7402' name='L7402'></a>&lt;a id='L7388' name='L7388'&gt;&lt;/a&gt;  \dimen2=\hsize  \advance\dimen2 by -\defargsindent
<a id='L7403' name='L7403'></a>&lt;a id='L7389' name='L7389'&gt;&lt;/a&gt;  %
<a id='L7404' name='L7404'></a>&lt;a id='L7390' name='L7390'&gt;&lt;/a&gt;  % The final paragraph shape:
<a id='L7405' name='L7405'></a>&lt;a id='L7391' name='L7391'&gt;&lt;/a&gt;  \parshape \tempnum  0in \dimen0  \maybeshapeline  \defargsindent \dimen2
<a id='L7406' name='L7406'></a>&lt;a id='L7392' name='L7392'&gt;&lt;/a&gt;  %
<a id='L7407' name='L7407'></a>&lt;a id='L7393' name='L7393'&gt;&lt;/a&gt;  % Put the category name at the right margin.
<a id='L7408' name='L7408'></a>&lt;a id='L7394' name='L7394'&gt;&lt;/a&gt;  \noindent
<a id='L7409' name='L7409'></a>&lt;a id='L7395' name='L7395'&gt;&lt;/a&gt;  \hbox to 0pt{%
<a id='L7410' name='L7410'></a>&lt;a id='L7396' name='L7396'&gt;&lt;/a&gt;    \hfil\box0 \kern-\hsize
<a id='L7411' name='L7411'></a>&lt;a id='L7397' name='L7397'&gt;&lt;/a&gt;    % \hsize has to be shortened this way:
<a id='L7412' name='L7412'></a>&lt;a id='L7398' name='L7398'&gt;&lt;/a&gt;    \kern\leftskip
<a id='L7413' name='L7413'></a>&lt;a id='L7399' name='L7399'&gt;&lt;/a&gt;    % Intentionally do not respect \rightskip, since we need the space.
<a id='L7414' name='L7414'></a>&lt;a id='L7400' name='L7400'&gt;&lt;/a&gt;  }%
<a id='L7415' name='L7415'></a>&lt;a id='L7401' name='L7401'&gt;&lt;/a&gt;  %
<a id='L7416' name='L7416'></a>&lt;a id='L7402' name='L7402'&gt;&lt;/a&gt;  % Allow all lines to be underfull without complaint:
<a id='L7417' name='L7417'></a>&lt;a id='L7403' name='L7403'&gt;&lt;/a&gt;  \tolerance=10000 \hbadness=10000
<a id='L7418' name='L7418'></a>&lt;a id='L7404' name='L7404'&gt;&lt;/a&gt;  \exdentamount=\defbodyindent
<a id='L7419' name='L7419'></a>&lt;a id='L7405' name='L7405'&gt;&lt;/a&gt;  {%
<a id='L7420' name='L7420'></a>&lt;a id='L7406' name='L7406'&gt;&lt;/a&gt;    % defun fonts. We use typewriter by default (used to be bold) because:
<a id='L7421' name='L7421'></a>&lt;a id='L7407' name='L7407'&gt;&lt;/a&gt;    % . we're printing identifiers, they should be in tt in principle.
<a id='L7422' name='L7422'></a>&lt;a id='L7408' name='L7408'&gt;&lt;/a&gt;    % . in languages with many accents, such as Czech or French, it's
<a id='L7423' name='L7423'></a>&lt;a id='L7409' name='L7409'&gt;&lt;/a&gt;    %   common to leave accents off identifiers.  The result looks ok in
<a id='L7424' name='L7424'></a>&lt;a id='L7410' name='L7410'&gt;&lt;/a&gt;    %   tt, but exceedingly strange in rm.
<a id='L7425' name='L7425'></a>&lt;a id='L7411' name='L7411'&gt;&lt;/a&gt;    % . we don't want -- and --- to be treated as ligatures.
<a id='L7426' name='L7426'></a>&lt;a id='L7412' name='L7412'&gt;&lt;/a&gt;    % . this still does not fix the ?` and !` ligatures, but so far no
<a id='L7427' name='L7427'></a>&lt;a id='L7413' name='L7413'&gt;&lt;/a&gt;    %   one has made identifiers using them :).
<a id='L7428' name='L7428'></a>&lt;a id='L7414' name='L7414'&gt;&lt;/a&gt;    \df \tt
<a id='L7429' name='L7429'></a>&lt;a id='L7415' name='L7415'&gt;&lt;/a&gt;    \def\temp{#2}% text of the return type
<a id='L7430' name='L7430'></a>&lt;a id='L7416' name='L7416'&gt;&lt;/a&gt;    \ifx\temp\empty\else
<a id='L7431' name='L7431'></a>&lt;a id='L7417' name='L7417'&gt;&lt;/a&gt;      \tclose{\temp}% typeset the return type
<a id='L7432' name='L7432'></a>&lt;a id='L7418' name='L7418'&gt;&lt;/a&gt;      \ifrettypeownline
<a id='L7433' name='L7433'></a>&lt;a id='L7419' name='L7419'&gt;&lt;/a&gt;        % put return type on its own line; prohibit line break following:
<a id='L7434' name='L7434'></a>&lt;a id='L7420' name='L7420'&gt;&lt;/a&gt;        \hfil\vadjust{\nobreak}\break  
<a id='L7435' name='L7435'></a>&lt;a id='L7421' name='L7421'&gt;&lt;/a&gt;      \else
<a id='L7436' name='L7436'></a>&lt;a id='L7422' name='L7422'&gt;&lt;/a&gt;        \space  % type on same line, so just followed by a space
<a id='L7437' name='L7437'></a>&lt;a id='L7423' name='L7423'&gt;&lt;/a&gt;      \fi
<a id='L7438' name='L7438'></a>&lt;a id='L7424' name='L7424'&gt;&lt;/a&gt;    \fi           % no return type
<a id='L7439' name='L7439'></a>&lt;a id='L7425' name='L7425'&gt;&lt;/a&gt;    #3% output function name
<a id='L7440' name='L7440'></a>&lt;a id='L7426' name='L7426'&gt;&lt;/a&gt;  }%
<a id='L7441' name='L7441'></a>&lt;a id='L7427' name='L7427'&gt;&lt;/a&gt;  {\rm\enskip}% hskip 0.5 em of \tenrm
<a id='L7442' name='L7442'></a>&lt;a id='L7428' name='L7428'&gt;&lt;/a&gt;  %
<a id='L7443' name='L7443'></a>&lt;a id='L7429' name='L7429'&gt;&lt;/a&gt;  \boldbrax
<a id='L7444' name='L7444'></a>&lt;a id='L7430' name='L7430'&gt;&lt;/a&gt;  % arguments will be output next, if any.
<a id='L7445' name='L7445'></a>&lt;a id='L7431' name='L7431'&gt;&lt;/a&gt;}
<a id='L7446' name='L7446'></a>&lt;a id='L7432' name='L7432'&gt;&lt;/a&gt;
<a id='L7447' name='L7447'></a>&lt;a id='L7433' name='L7433'&gt;&lt;/a&gt;% Print arguments in slanted roman (not ttsl), inconsistently with using
<a id='L7448' name='L7448'></a>&lt;a id='L7434' name='L7434'&gt;&lt;/a&gt;% tt for the name.  This is because literal text is sometimes needed in
<a id='L7449' name='L7449'></a>&lt;a id='L7435' name='L7435'&gt;&lt;/a&gt;% the argument list (groff manual), and ttsl and tt are not very
<a id='L7450' name='L7450'></a>&lt;a id='L7436' name='L7436'&gt;&lt;/a&gt;% distinguishable.  Prevent hyphenation at `-' chars.
<a id='L7451' name='L7451'></a>&lt;a id='L7437' name='L7437'&gt;&lt;/a&gt;%
<a id='L7452' name='L7452'></a>&lt;a id='L7438' name='L7438'&gt;&lt;/a&gt;\def\defunargs#1{%
<a id='L7453' name='L7453'></a>&lt;a id='L7439' name='L7439'&gt;&lt;/a&gt;  % use sl by default (not ttsl),
<a id='L7454' name='L7454'></a>&lt;a id='L7440' name='L7440'&gt;&lt;/a&gt;  % tt for the names.
<a id='L7455' name='L7455'></a>&lt;a id='L7441' name='L7441'&gt;&lt;/a&gt;  \df \sl \hyphenchar\font=0
<a id='L7456' name='L7456'></a>&lt;a id='L7442' name='L7442'&gt;&lt;/a&gt;  %
<a id='L7457' name='L7457'></a>&lt;a id='L7443' name='L7443'&gt;&lt;/a&gt;  % On the other hand, if an argument has two dashes (for instance), we
<a id='L7458' name='L7458'></a>&lt;a id='L7444' name='L7444'&gt;&lt;/a&gt;  % want a way to get ttsl.  We used to recommend @var for that, so
<a id='L7459' name='L7459'></a>&lt;a id='L7445' name='L7445'&gt;&lt;/a&gt;  % leave the code in, but it's strange for @var to lead to typewriter.
<a id='L7460' name='L7460'></a>&lt;a id='L7446' name='L7446'&gt;&lt;/a&gt;  % Nowadays we recommend @code, since the difference between a ttsl hyphen
<a id='L7461' name='L7461'></a>&lt;a id='L7447' name='L7447'&gt;&lt;/a&gt;  % and a tt hyphen is pretty tiny.  @code also disables ?` !`.
<a id='L7462' name='L7462'></a>&lt;a id='L7448' name='L7448'&gt;&lt;/a&gt;  \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}%
<a id='L7463' name='L7463'></a>&lt;a id='L7449' name='L7449'&gt;&lt;/a&gt;  #1%
<a id='L7464' name='L7464'></a>&lt;a id='L7450' name='L7450'&gt;&lt;/a&gt;  \sl\hyphenchar\font=45
<a id='L7465' name='L7465'></a>&lt;a id='L7451' name='L7451'&gt;&lt;/a&gt;}
<a id='L7466' name='L7466'></a>&lt;a id='L7452' name='L7452'&gt;&lt;/a&gt;
<a id='L7467' name='L7467'></a>&lt;a id='L7453' name='L7453'&gt;&lt;/a&gt;% We want ()&amp;amp;[] to print specially on the defun line.
<a id='L7468' name='L7468'></a>&lt;a id='L7454' name='L7454'&gt;&lt;/a&gt;%
<a id='L7469' name='L7469'></a>&lt;a id='L7455' name='L7455'&gt;&lt;/a&gt;\def\activeparens{%
<a id='L7470' name='L7470'></a>&lt;a id='L7456' name='L7456'&gt;&lt;/a&gt;  \catcode`\(=\active \catcode`\)=\active
<a id='L7471' name='L7471'></a>&lt;a id='L7457' name='L7457'&gt;&lt;/a&gt;  \catcode`\[=\active \catcode`\]=\active
<a id='L7472' name='L7472'></a>&lt;a id='L7458' name='L7458'&gt;&lt;/a&gt;  \catcode`\&amp;amp;=\active
<a id='L7473' name='L7473'></a>&lt;a id='L7459' name='L7459'&gt;&lt;/a&gt;}
<a id='L7474' name='L7474'></a>&lt;a id='L7460' name='L7460'&gt;&lt;/a&gt;
<a id='L7475' name='L7475'></a>&lt;a id='L7461' name='L7461'&gt;&lt;/a&gt;% Make control sequences which act like normal parenthesis chars.
<a id='L7476' name='L7476'></a>&lt;a id='L7462' name='L7462'&gt;&lt;/a&gt;\let\lparen = ( \let\rparen = )
<a id='L7477' name='L7477'></a>&lt;a id='L7463' name='L7463'&gt;&lt;/a&gt;
<a id='L7478' name='L7478'></a>&lt;a id='L7464' name='L7464'&gt;&lt;/a&gt;% Be sure that we always have a definition for `(', etc.  For example,
<a id='L7479' name='L7479'></a>&lt;a id='L7465' name='L7465'&gt;&lt;/a&gt;% if the fn name has parens in it, \boldbrax will not be in effect yet,
<a id='L7480' name='L7480'></a>&lt;a id='L7466' name='L7466'&gt;&lt;/a&gt;% so TeX would otherwise complain about undefined control sequence.
<a id='L7481' name='L7481'></a>&lt;a id='L7467' name='L7467'&gt;&lt;/a&gt;{
<a id='L7482' name='L7482'></a>&lt;a id='L7468' name='L7468'&gt;&lt;/a&gt;  \activeparens
<a id='L7483' name='L7483'></a>&lt;a id='L7469' name='L7469'&gt;&lt;/a&gt;  \global\let(=\lparen \global\let)=\rparen
<a id='L7484' name='L7484'></a>&lt;a id='L7470' name='L7470'&gt;&lt;/a&gt;  \global\let[=\lbrack \global\let]=\rbrack
<a id='L7485' name='L7485'></a>&lt;a id='L7471' name='L7471'&gt;&lt;/a&gt;  \global\let&amp;amp; = \&amp;amp;
<a id='L7486' name='L7486'></a>&lt;a id='L7472' name='L7472'&gt;&lt;/a&gt;
<a id='L7487' name='L7487'></a>&lt;a id='L7473' name='L7473'&gt;&lt;/a&gt;  \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
<a id='L7488' name='L7488'></a>&lt;a id='L7474' name='L7474'&gt;&lt;/a&gt;  \gdef\magicamp{\let&amp;amp;=\amprm}
<a id='L7489' name='L7489'></a>&lt;a id='L7475' name='L7475'&gt;&lt;/a&gt;}
<a id='L7490' name='L7490'></a>&lt;a id='L7476' name='L7476'&gt;&lt;/a&gt;
<a id='L7491' name='L7491'></a>&lt;a id='L7477' name='L7477'&gt;&lt;/a&gt;\newcount\parencount
<a id='L7492' name='L7492'></a>&lt;a id='L7478' name='L7478'&gt;&lt;/a&gt;
<a id='L7493' name='L7493'></a>&lt;a id='L7479' name='L7479'&gt;&lt;/a&gt;% If we encounter &amp;amp;foo, then turn on ()-hacking afterwards
<a id='L7494' name='L7494'></a>&lt;a id='L7480' name='L7480'&gt;&lt;/a&gt;\newif\ifampseen
<a id='L7495' name='L7495'></a>&lt;a id='L7481' name='L7481'&gt;&lt;/a&gt;\def\amprm#1 {\ampseentrue{\bf\&amp;amp;#1 }}
<a id='L7496' name='L7496'></a>&lt;a id='L7482' name='L7482'&gt;&lt;/a&gt;
<a id='L7497' name='L7497'></a>&lt;a id='L7483' name='L7483'&gt;&lt;/a&gt;\def\parenfont{%
<a id='L7498' name='L7498'></a>&lt;a id='L7484' name='L7484'&gt;&lt;/a&gt;  \ifampseen
<a id='L7499' name='L7499'></a>&lt;a id='L7485' name='L7485'&gt;&lt;/a&gt;    % At the first level, print parens in roman,
<a id='L7500' name='L7500'></a>&lt;a id='L7486' name='L7486'&gt;&lt;/a&gt;    % otherwise use the default font.
<a id='L7501' name='L7501'></a>&lt;a id='L7487' name='L7487'&gt;&lt;/a&gt;    \ifnum \parencount=1 \rm \fi
<a id='L7502' name='L7502'></a>&lt;a id='L7488' name='L7488'&gt;&lt;/a&gt;  \else
<a id='L7503' name='L7503'></a>&lt;a id='L7489' name='L7489'&gt;&lt;/a&gt;    % The \sf parens (in \boldbrax) actually are a little bolder than
<a id='L7504' name='L7504'></a>&lt;a id='L7490' name='L7490'&gt;&lt;/a&gt;    % the contained text.  This is especially needed for [ and ] .
<a id='L7505' name='L7505'></a>&lt;a id='L7491' name='L7491'&gt;&lt;/a&gt;    \sf
<a id='L7506' name='L7506'></a>&lt;a id='L7492' name='L7492'&gt;&lt;/a&gt;  \fi
<a id='L7507' name='L7507'></a>&lt;a id='L7493' name='L7493'&gt;&lt;/a&gt;}
<a id='L7508' name='L7508'></a>&lt;a id='L7494' name='L7494'&gt;&lt;/a&gt;\def\infirstlevel#1{%
<a id='L7509' name='L7509'></a>&lt;a id='L7495' name='L7495'&gt;&lt;/a&gt;  \ifampseen
<a id='L7510' name='L7510'></a>&lt;a id='L7496' name='L7496'&gt;&lt;/a&gt;    \ifnum\parencount=1
<a id='L7511' name='L7511'></a>&lt;a id='L7497' name='L7497'&gt;&lt;/a&gt;      #1%
<a id='L7512' name='L7512'></a>&lt;a id='L7498' name='L7498'&gt;&lt;/a&gt;    \fi
<a id='L7513' name='L7513'></a>&lt;a id='L7499' name='L7499'&gt;&lt;/a&gt;  \fi
<a id='L7514' name='L7514'></a>&lt;a id='L7500' name='L7500'&gt;&lt;/a&gt;}
<a id='L7515' name='L7515'></a>&lt;a id='L7501' name='L7501'&gt;&lt;/a&gt;\def\bfafterword#1 {#1 \bf}
<a id='L7516' name='L7516'></a>&lt;a id='L7502' name='L7502'&gt;&lt;/a&gt;
<a id='L7517' name='L7517'></a>&lt;a id='L7503' name='L7503'&gt;&lt;/a&gt;\def\opnr{%
<a id='L7518' name='L7518'></a>&lt;a id='L7504' name='L7504'&gt;&lt;/a&gt;  \global\advance\parencount by 1
<a id='L7519' name='L7519'></a>&lt;a id='L7505' name='L7505'&gt;&lt;/a&gt;  {\parenfont(}%
<a id='L7520' name='L7520'></a>&lt;a id='L7506' name='L7506'&gt;&lt;/a&gt;  \infirstlevel \bfafterword
<a id='L7521' name='L7521'></a>&lt;a id='L7507' name='L7507'&gt;&lt;/a&gt;}
<a id='L7522' name='L7522'></a>&lt;a id='L7508' name='L7508'&gt;&lt;/a&gt;\def\clnr{%
<a id='L7523' name='L7523'></a>&lt;a id='L7509' name='L7509'&gt;&lt;/a&gt;  {\parenfont)}%
<a id='L7524' name='L7524'></a>&lt;a id='L7510' name='L7510'&gt;&lt;/a&gt;  \infirstlevel \sl
<a id='L7525' name='L7525'></a>&lt;a id='L7511' name='L7511'&gt;&lt;/a&gt;  \global\advance\parencount by -1
<a id='L7526' name='L7526'></a>&lt;a id='L7512' name='L7512'&gt;&lt;/a&gt;}
<a id='L7527' name='L7527'></a>&lt;a id='L7513' name='L7513'&gt;&lt;/a&gt;
<a id='L7528' name='L7528'></a>&lt;a id='L7514' name='L7514'&gt;&lt;/a&gt;\newcount\brackcount
<a id='L7529' name='L7529'></a>&lt;a id='L7515' name='L7515'&gt;&lt;/a&gt;\def\lbrb{%
<a id='L7530' name='L7530'></a>&lt;a id='L7516' name='L7516'&gt;&lt;/a&gt;  \global\advance\brackcount by 1
<a id='L7531' name='L7531'></a>&lt;a id='L7517' name='L7517'&gt;&lt;/a&gt;  {\bf[}%
<a id='L7532' name='L7532'></a>&lt;a id='L7518' name='L7518'&gt;&lt;/a&gt;}
<a id='L7533' name='L7533'></a>&lt;a id='L7519' name='L7519'&gt;&lt;/a&gt;\def\rbrb{%
<a id='L7534' name='L7534'></a>&lt;a id='L7520' name='L7520'&gt;&lt;/a&gt;  {\bf]}%
<a id='L7535' name='L7535'></a>&lt;a id='L7521' name='L7521'&gt;&lt;/a&gt;  \global\advance\brackcount by -1
<a id='L7536' name='L7536'></a>&lt;a id='L7522' name='L7522'&gt;&lt;/a&gt;}
<a id='L7537' name='L7537'></a>&lt;a id='L7523' name='L7523'&gt;&lt;/a&gt;
<a id='L7538' name='L7538'></a>&lt;a id='L7524' name='L7524'&gt;&lt;/a&gt;\def\checkparencounts{%
<a id='L7539' name='L7539'></a>&lt;a id='L7525' name='L7525'&gt;&lt;/a&gt;  \ifnum\parencount=0 \else \badparencount \fi
<a id='L7540' name='L7540'></a>&lt;a id='L7526' name='L7526'&gt;&lt;/a&gt;  \ifnum\brackcount=0 \else \badbrackcount \fi
<a id='L7541' name='L7541'></a>&lt;a id='L7527' name='L7527'&gt;&lt;/a&gt;}
<a id='L7542' name='L7542'></a>&lt;a id='L7528' name='L7528'&gt;&lt;/a&gt;% these should not use \errmessage; the glibc manual, at least, actually
<a id='L7543' name='L7543'></a>&lt;a id='L7529' name='L7529'&gt;&lt;/a&gt;% has such constructs (when documenting function pointers).
<a id='L7544' name='L7544'></a>&lt;a id='L7530' name='L7530'&gt;&lt;/a&gt;\def\badparencount{%
<a id='L7545' name='L7545'></a>&lt;a id='L7531' name='L7531'&gt;&lt;/a&gt;  \message{Warning: unbalanced parentheses in @def...}%
<a id='L7546' name='L7546'></a>&lt;a id='L7532' name='L7532'&gt;&lt;/a&gt;  \global\parencount=0
<a id='L7547' name='L7547'></a>&lt;a id='L7533' name='L7533'&gt;&lt;/a&gt;}
<a id='L7548' name='L7548'></a>&lt;a id='L7534' name='L7534'&gt;&lt;/a&gt;\def\badbrackcount{%
<a id='L7549' name='L7549'></a>&lt;a id='L7535' name='L7535'&gt;&lt;/a&gt;  \message{Warning: unbalanced square brackets in @def...}%
<a id='L7550' name='L7550'></a>&lt;a id='L7536' name='L7536'&gt;&lt;/a&gt;  \global\brackcount=0
<a id='L7551' name='L7551'></a>&lt;a id='L7537' name='L7537'&gt;&lt;/a&gt;}
<a id='L7552' name='L7552'></a>&lt;a id='L7538' name='L7538'&gt;&lt;/a&gt;
<a id='L7553' name='L7553'></a>&lt;a id='L7539' name='L7539'&gt;&lt;/a&gt;
<a id='L7554' name='L7554'></a>&lt;a id='L7540' name='L7540'&gt;&lt;/a&gt;\message{macros,}
<a id='L7555' name='L7555'></a>&lt;a id='L7541' name='L7541'&gt;&lt;/a&gt;% @macro.
<a id='L7556' name='L7556'></a>&lt;a id='L7542' name='L7542'&gt;&lt;/a&gt;
<a id='L7557' name='L7557'></a>&lt;a id='L7543' name='L7543'&gt;&lt;/a&gt;% To do this right we need a feature of e-TeX, \scantokens,
<a id='L7558' name='L7558'></a>&lt;a id='L7544' name='L7544'&gt;&lt;/a&gt;% which we arrange to emulate with a temporary file in ordinary TeX.
<a id='L7559' name='L7559'></a>&lt;a id='L7545' name='L7545'&gt;&lt;/a&gt;\ifx\eTeXversion\thisisundefined
<a id='L7560' name='L7560'></a>&lt;a id='L7546' name='L7546'&gt;&lt;/a&gt;  \newwrite\macscribble
<a id='L7561' name='L7561'></a>&lt;a id='L7547' name='L7547'&gt;&lt;/a&gt;  \def\scantokens#1{%
<a id='L7562' name='L7562'></a>&lt;a id='L7548' name='L7548'&gt;&lt;/a&gt;    \toks0={#1}%
<a id='L7563' name='L7563'></a>&lt;a id='L7549' name='L7549'&gt;&lt;/a&gt;    \immediate\openout\macscribble=\jobname.tmp
<a id='L7564' name='L7564'></a>&lt;a id='L7550' name='L7550'&gt;&lt;/a&gt;    \immediate\write\macscribble{\the\toks0}%
<a id='L7565' name='L7565'></a>&lt;a id='L7551' name='L7551'&gt;&lt;/a&gt;    \immediate\closeout\macscribble
<a id='L7566' name='L7566'></a>&lt;a id='L7552' name='L7552'&gt;&lt;/a&gt;    \input \jobname.tmp
<a id='L7567' name='L7567'></a>&lt;a id='L7553' name='L7553'&gt;&lt;/a&gt;  }
<a id='L7568' name='L7568'></a>&lt;a id='L7554' name='L7554'&gt;&lt;/a&gt;\fi
<a id='L7569' name='L7569'></a>&lt;a id='L7555' name='L7555'&gt;&lt;/a&gt;
<a id='L7570' name='L7570'></a>&lt;a id='L7556' name='L7556'&gt;&lt;/a&gt;\def\scanmacro#1{\begingroup
<a id='L7571' name='L7571'></a>&lt;a id='L7557' name='L7557'&gt;&lt;/a&gt;  \newlinechar`\^^M
<a id='L7572' name='L7572'></a>&lt;a id='L7558' name='L7558'&gt;&lt;/a&gt;  \let\xeatspaces\eatspaces
<a id='L7573' name='L7573'></a>&lt;a id='L7559' name='L7559'&gt;&lt;/a&gt;  %
<a id='L7574' name='L7574'></a>&lt;a id='L7560' name='L7560'&gt;&lt;/a&gt;  % Undo catcode changes of \startcontents and \doprintindex
<a id='L7575' name='L7575'></a>&lt;a id='L7561' name='L7561'&gt;&lt;/a&gt;  % When called from @insertcopying or (short)caption, we need active
<a id='L7576' name='L7576'></a>&lt;a id='L7562' name='L7562'&gt;&lt;/a&gt;  % backslash to get it printed correctly.  Previously, we had
<a id='L7577' name='L7577'></a>&lt;a id='L7563' name='L7563'&gt;&lt;/a&gt;  % \catcode`\\=\other instead.  We'll see whether a problem appears
<a id='L7578' name='L7578'></a>&lt;a id='L7564' name='L7564'&gt;&lt;/a&gt;  % with macro expansion.                               --kasal, 19aug04
<a id='L7579' name='L7579'></a>&lt;a id='L7565' name='L7565'&gt;&lt;/a&gt;  \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
<a id='L7580' name='L7580'></a>&lt;a id='L7566' name='L7566'&gt;&lt;/a&gt;  %
<a id='L7581' name='L7581'></a>&lt;a id='L7567' name='L7567'&gt;&lt;/a&gt;  % ... and for \example:
<a id='L7582' name='L7582'></a>&lt;a id='L7568' name='L7568'&gt;&lt;/a&gt;  \spaceisspace
<a id='L7583' name='L7583'></a>&lt;a id='L7569' name='L7569'&gt;&lt;/a&gt;  %
<a id='L7584' name='L7584'></a>&lt;a id='L7570' name='L7570'&gt;&lt;/a&gt;  % The \empty here causes a following catcode 5 newline to be eaten as
<a id='L7585' name='L7585'></a>&lt;a id='L7571' name='L7571'&gt;&lt;/a&gt;  % part of reading whitespace after a control sequence.  It does not
<a id='L7586' name='L7586'></a>&lt;a id='L7572' name='L7572'&gt;&lt;/a&gt;  % eat a catcode 13 newline.  There's no good way to handle the two
<a id='L7587' name='L7587'></a>&lt;a id='L7573' name='L7573'&gt;&lt;/a&gt;  % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX
<a id='L7588' name='L7588'></a>&lt;a id='L7574' name='L7574'&gt;&lt;/a&gt;  % would then have different behavior).  See the Macro Details node in
<a id='L7589' name='L7589'></a>&lt;a id='L7575' name='L7575'&gt;&lt;/a&gt;  % the manual for the workaround we recommend for macros and
<a id='L7590' name='L7590'></a>&lt;a id='L7576' name='L7576'&gt;&lt;/a&gt;  % line-oriented commands.
<a id='L7591' name='L7591'></a>&lt;a id='L7577' name='L7577'&gt;&lt;/a&gt;  %
<a id='L7592' name='L7592'></a>&lt;a id='L7578' name='L7578'&gt;&lt;/a&gt;  \scantokens{#1\empty}%
<a id='L7593' name='L7593'></a>&lt;a id='L7579' name='L7579'&gt;&lt;/a&gt;\endgroup}
<a id='L7594' name='L7594'></a>&lt;a id='L7580' name='L7580'&gt;&lt;/a&gt;
<a id='L7595' name='L7595'></a>&lt;a id='L7581' name='L7581'&gt;&lt;/a&gt;\def\scanexp#1{%
<a id='L7596' name='L7596'></a>&lt;a id='L7582' name='L7582'&gt;&lt;/a&gt;  \edef\temp{\noexpand\scanmacro{#1}}%
<a id='L7597' name='L7597'></a>&lt;a id='L7583' name='L7583'&gt;&lt;/a&gt;  \temp
<a id='L7598' name='L7598'></a>&lt;a id='L7584' name='L7584'&gt;&lt;/a&gt;}
<a id='L7599' name='L7599'></a>&lt;a id='L7585' name='L7585'&gt;&lt;/a&gt;
<a id='L7600' name='L7600'></a>&lt;a id='L7586' name='L7586'&gt;&lt;/a&gt;\newcount\paramno   % Count of parameters
<a id='L7601' name='L7601'></a>&lt;a id='L7587' name='L7587'&gt;&lt;/a&gt;\newtoks\macname    % Macro name
<a id='L7602' name='L7602'></a>&lt;a id='L7588' name='L7588'&gt;&lt;/a&gt;\newif\ifrecursive  % Is it recursive?
<a id='L7603' name='L7603'></a>&lt;a id='L7589' name='L7589'&gt;&lt;/a&gt;
<a id='L7604' name='L7604'></a>&lt;a id='L7590' name='L7590'&gt;&lt;/a&gt;% List of all defined macros in the form
<a id='L7605' name='L7605'></a>&lt;a id='L7591' name='L7591'&gt;&lt;/a&gt;%    \definedummyword\macro1\definedummyword\macro2...
<a id='L7606' name='L7606'></a>&lt;a id='L7592' name='L7592'&gt;&lt;/a&gt;% Currently is also contains all @aliases; the list can be split
<a id='L7607' name='L7607'></a>&lt;a id='L7593' name='L7593'&gt;&lt;/a&gt;% if there is a need.
<a id='L7608' name='L7608'></a>&lt;a id='L7594' name='L7594'&gt;&lt;/a&gt;\def\macrolist{}
<a id='L7609' name='L7609'></a>&lt;a id='L7595' name='L7595'&gt;&lt;/a&gt;
<a id='L7610' name='L7610'></a>&lt;a id='L7596' name='L7596'&gt;&lt;/a&gt;% Add the macro to \macrolist
<a id='L7611' name='L7611'></a>&lt;a id='L7597' name='L7597'&gt;&lt;/a&gt;\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname}
<a id='L7612' name='L7612'></a>&lt;a id='L7598' name='L7598'&gt;&lt;/a&gt;\def\addtomacrolistxxx#1{%
<a id='L7613' name='L7613'></a>&lt;a id='L7599' name='L7599'&gt;&lt;/a&gt;     \toks0 = \expandafter{\macrolist\definedummyword#1}%
<a id='L7614' name='L7614'></a>&lt;a id='L7600' name='L7600'&gt;&lt;/a&gt;     \xdef\macrolist{\the\toks0}%
<a id='L7615' name='L7615'></a>&lt;a id='L7601' name='L7601'&gt;&lt;/a&gt;}
<a id='L7616' name='L7616'></a>&lt;a id='L7602' name='L7602'&gt;&lt;/a&gt;
<a id='L7617' name='L7617'></a>&lt;a id='L7603' name='L7603'&gt;&lt;/a&gt;% Utility routines.
<a id='L7618' name='L7618'></a>&lt;a id='L7604' name='L7604'&gt;&lt;/a&gt;% This does \let #1 = #2, with \csnames; that is,
<a id='L7619' name='L7619'></a>&lt;a id='L7605' name='L7605'&gt;&lt;/a&gt;%   \let \csname#1\endcsname = \csname#2\endcsname
<a id='L7620' name='L7620'></a>&lt;a id='L7606' name='L7606'&gt;&lt;/a&gt;% (except of course we have to play expansion games).
<a id='L7621' name='L7621'></a>&lt;a id='L7607' name='L7607'&gt;&lt;/a&gt;%
<a id='L7622' name='L7622'></a>&lt;a id='L7608' name='L7608'&gt;&lt;/a&gt;\def\cslet#1#2{%
<a id='L7623' name='L7623'></a>&lt;a id='L7609' name='L7609'&gt;&lt;/a&gt;  \expandafter\let
<a id='L7624' name='L7624'></a>&lt;a id='L7610' name='L7610'&gt;&lt;/a&gt;  \csname#1\expandafter\endcsname
<a id='L7625' name='L7625'></a>&lt;a id='L7611' name='L7611'&gt;&lt;/a&gt;  \csname#2\endcsname
<a id='L7626' name='L7626'></a>&lt;a id='L7612' name='L7612'&gt;&lt;/a&gt;}
<a id='L7627' name='L7627'></a>&lt;a id='L7613' name='L7613'&gt;&lt;/a&gt;
<a id='L7628' name='L7628'></a>&lt;a id='L7614' name='L7614'&gt;&lt;/a&gt;% Trim leading and trailing spaces off a string.
<a id='L7629' name='L7629'></a>&lt;a id='L7615' name='L7615'&gt;&lt;/a&gt;% Concepts from aro-bend problem 15 (see CTAN).
<a id='L7630' name='L7630'></a>&lt;a id='L7616' name='L7616'&gt;&lt;/a&gt;{\catcode`\@=11
<a id='L7631' name='L7631'></a>&lt;a id='L7617' name='L7617'&gt;&lt;/a&gt;\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }}
<a id='L7632' name='L7632'></a>&lt;a id='L7618' name='L7618'&gt;&lt;/a&gt;\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@}
<a id='L7633' name='L7633'></a>&lt;a id='L7619' name='L7619'&gt;&lt;/a&gt;\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @}
<a id='L7634' name='L7634'></a>&lt;a id='L7620' name='L7620'&gt;&lt;/a&gt;\def\unbrace#1{#1}
<a id='L7635' name='L7635'></a>&lt;a id='L7621' name='L7621'&gt;&lt;/a&gt;\unbrace{\gdef\trim@@@ #1 } #2@{#1}
<a id='L7636' name='L7636'></a>&lt;a id='L7622' name='L7622'&gt;&lt;/a&gt;}
<a id='L7637' name='L7637'></a>&lt;a id='L7623' name='L7623'&gt;&lt;/a&gt;
<a id='L7638' name='L7638'></a>&lt;a id='L7624' name='L7624'&gt;&lt;/a&gt;% Trim a single trailing ^^M off a string.
<a id='L7639' name='L7639'></a>&lt;a id='L7625' name='L7625'&gt;&lt;/a&gt;{\catcode`\^^M=\other \catcode`\Q=3%
<a id='L7640' name='L7640'></a>&lt;a id='L7626' name='L7626'&gt;&lt;/a&gt;\gdef\eatcr #1{\eatcra #1Q^^MQ}%
<a id='L7641' name='L7641'></a>&lt;a id='L7627' name='L7627'&gt;&lt;/a&gt;\gdef\eatcra#1^^MQ{\eatcrb#1Q}%
<a id='L7642' name='L7642'></a>&lt;a id='L7628' name='L7628'&gt;&lt;/a&gt;\gdef\eatcrb#1Q#2Q{#1}%
<a id='L7643' name='L7643'></a>&lt;a id='L7629' name='L7629'&gt;&lt;/a&gt;}
<a id='L7644' name='L7644'></a>&lt;a id='L7630' name='L7630'&gt;&lt;/a&gt;
<a id='L7645' name='L7645'></a>&lt;a id='L7631' name='L7631'&gt;&lt;/a&gt;% Macro bodies are absorbed as an argument in a context where
<a id='L7646' name='L7646'></a>&lt;a id='L7632' name='L7632'&gt;&lt;/a&gt;% all characters are catcode 10, 11 or 12, except \ which is active
<a id='L7647' name='L7647'></a>&lt;a id='L7633' name='L7633'&gt;&lt;/a&gt;% (as in normal texinfo). It is necessary to change the definition of \
<a id='L7648' name='L7648'></a>&lt;a id='L7634' name='L7634'&gt;&lt;/a&gt;% to recognize macro arguments; this is the job of \mbodybackslash.
<a id='L7649' name='L7649'></a>&lt;a id='L7635' name='L7635'&gt;&lt;/a&gt;%
<a id='L7650' name='L7650'></a>&lt;a id='L7636' name='L7636'&gt;&lt;/a&gt;% Non-ASCII encodings make 8-bit characters active, so un-activate
<a id='L7651' name='L7651'></a>&lt;a id='L7637' name='L7637'&gt;&lt;/a&gt;% them to avoid their expansion.  Must do this non-globally, to
<a id='L7652' name='L7652'></a>&lt;a id='L7638' name='L7638'&gt;&lt;/a&gt;% confine the change to the current group.
<a id='L7653' name='L7653'></a>&lt;a id='L7639' name='L7639'&gt;&lt;/a&gt;%
<a id='L7654' name='L7654'></a>&lt;a id='L7640' name='L7640'&gt;&lt;/a&gt;% It's necessary to have hard CRs when the macro is executed. This is
<a id='L7655' name='L7655'></a>&lt;a id='L7641' name='L7641'&gt;&lt;/a&gt;% done by making ^^M (\endlinechar) catcode 12 when reading the macro
<a id='L7656' name='L7656'></a>&lt;a id='L7642' name='L7642'&gt;&lt;/a&gt;% body, and then making it the \newlinechar in \scanmacro.
<a id='L7657' name='L7657'></a>&lt;a id='L7643' name='L7643'&gt;&lt;/a&gt;%
<a id='L7658' name='L7658'></a>&lt;a id='L7644' name='L7644'&gt;&lt;/a&gt;\def\scanctxt{% used as subroutine
<a id='L7659' name='L7659'></a>&lt;a id='L7645' name='L7645'&gt;&lt;/a&gt;  \catcode`\"=\other
<a id='L7660' name='L7660'></a>&lt;a id='L7646' name='L7646'&gt;&lt;/a&gt;  \catcode`\+=\other
<a id='L7661' name='L7661'></a>&lt;a id='L7647' name='L7647'&gt;&lt;/a&gt;  \catcode`\&amp;lt;=\other
<a id='L7662' name='L7662'></a>&lt;a id='L7648' name='L7648'&gt;&lt;/a&gt;  \catcode`\&amp;gt;=\other
<a id='L7663' name='L7663'></a>&lt;a id='L7649' name='L7649'&gt;&lt;/a&gt;  \catcode`\@=\other
<a id='L7664' name='L7664'></a>&lt;a id='L7650' name='L7650'&gt;&lt;/a&gt;  \catcode`\^=\other
<a id='L7665' name='L7665'></a>&lt;a id='L7651' name='L7651'&gt;&lt;/a&gt;  \catcode`\_=\other
<a id='L7666' name='L7666'></a>&lt;a id='L7652' name='L7652'&gt;&lt;/a&gt;  \catcode`\|=\other
<a id='L7667' name='L7667'></a>&lt;a id='L7653' name='L7653'&gt;&lt;/a&gt;  \catcode`\~=\other
<a id='L7668' name='L7668'></a>&lt;a id='L7654' name='L7654'&gt;&lt;/a&gt;  \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi
<a id='L7669' name='L7669'></a>&lt;a id='L7655' name='L7655'&gt;&lt;/a&gt;}
<a id='L7670' name='L7670'></a>&lt;a id='L7656' name='L7656'&gt;&lt;/a&gt;
<a id='L7671' name='L7671'></a>&lt;a id='L7657' name='L7657'&gt;&lt;/a&gt;\def\scanargctxt{% used for copying and captions, not macros.
<a id='L7672' name='L7672'></a>&lt;a id='L7658' name='L7658'&gt;&lt;/a&gt;  \scanctxt
<a id='L7673' name='L7673'></a>&lt;a id='L7659' name='L7659'&gt;&lt;/a&gt;  \catcode`\\=\other
<a id='L7674' name='L7674'></a>&lt;a id='L7660' name='L7660'&gt;&lt;/a&gt;  \catcode`\^^M=\other
<a id='L7675' name='L7675'></a>&lt;a id='L7661' name='L7661'&gt;&lt;/a&gt;}
<a id='L7676' name='L7676'></a>&lt;a id='L7662' name='L7662'&gt;&lt;/a&gt;
<a id='L7677' name='L7677'></a>&lt;a id='L7663' name='L7663'&gt;&lt;/a&gt;\def\macrobodyctxt{% used for @macro definitions
<a id='L7678' name='L7678'></a>&lt;a id='L7664' name='L7664'&gt;&lt;/a&gt;  \scanctxt
<a id='L7679' name='L7679'></a>&lt;a id='L7665' name='L7665'&gt;&lt;/a&gt;  \catcode`\{=\other
<a id='L7680' name='L7680'></a>&lt;a id='L7666' name='L7666'&gt;&lt;/a&gt;  \catcode`\}=\other
<a id='L7681' name='L7681'></a>&lt;a id='L7667' name='L7667'&gt;&lt;/a&gt;  \catcode`\^^M=\other
<a id='L7682' name='L7682'></a>&lt;a id='L7668' name='L7668'&gt;&lt;/a&gt;  \usembodybackslash
<a id='L7683' name='L7683'></a>&lt;a id='L7669' name='L7669'&gt;&lt;/a&gt;}
<a id='L7684' name='L7684'></a>&lt;a id='L7670' name='L7670'&gt;&lt;/a&gt;
<a id='L7685' name='L7685'></a>&lt;a id='L7671' name='L7671'&gt;&lt;/a&gt;\def\macroargctxt{% used when scanning invocations
<a id='L7686' name='L7686'></a>&lt;a id='L7672' name='L7672'&gt;&lt;/a&gt;  \scanctxt
<a id='L7687' name='L7687'></a>&lt;a id='L7673' name='L7673'&gt;&lt;/a&gt;  \catcode`\\=0
<a id='L7688' name='L7688'></a>&lt;a id='L7674' name='L7674'&gt;&lt;/a&gt;}
<a id='L7689' name='L7689'></a>&lt;a id='L7675' name='L7675'&gt;&lt;/a&gt;% why catcode 0 for \ in the above?  To recognize \\ \{ \} as "escapes"
<a id='L7690' name='L7690'></a>&lt;a id='L7676' name='L7676'&gt;&lt;/a&gt;% for the single characters \ { }.  Thus, we end up with the "commands"
<a id='L7691' name='L7691'></a>&lt;a id='L7677' name='L7677'&gt;&lt;/a&gt;% that would be written @\ @{ @} in a Texinfo document.
<a id='L7692' name='L7692'></a>&lt;a id='L7678' name='L7678'&gt;&lt;/a&gt;% 
<a id='L7693' name='L7693'></a>&lt;a id='L7679' name='L7679'&gt;&lt;/a&gt;% We already have @{ and @}.  For @\, we define it here, and only for
<a id='L7694' name='L7694'></a>&lt;a id='L7680' name='L7680'&gt;&lt;/a&gt;% this purpose, to produce a typewriter backslash (so, the @\ that we
<a id='L7695' name='L7695'></a>&lt;a id='L7681' name='L7681'&gt;&lt;/a&gt;% define for @math can't be used with @macro calls):
<a id='L7696' name='L7696'></a>&lt;a id='L7682' name='L7682'&gt;&lt;/a&gt;%
<a id='L7697' name='L7697'></a>&lt;a id='L7683' name='L7683'&gt;&lt;/a&gt;\def\\{\normalbackslash}%
<a id='L7698' name='L7698'></a>&lt;a id='L7684' name='L7684'&gt;&lt;/a&gt;% 
<a id='L7699' name='L7699'></a>&lt;a id='L7685' name='L7685'&gt;&lt;/a&gt;% We would like to do this for \, too, since that is what makeinfo does.
<a id='L7700' name='L7700'></a>&lt;a id='L7686' name='L7686'&gt;&lt;/a&gt;% But it is not possible, because Texinfo already has a command @, for a
<a id='L7701' name='L7701'></a>&lt;a id='L7687' name='L7687'&gt;&lt;/a&gt;% cedilla accent.  Documents must use @comma{} instead.
<a id='L7702' name='L7702'></a>&lt;a id='L7688' name='L7688'&gt;&lt;/a&gt;%
<a id='L7703' name='L7703'></a>&lt;a id='L7689' name='L7689'&gt;&lt;/a&gt;% \anythingelse will almost certainly be an error of some kind.
<a id='L7704' name='L7704'></a>&lt;a id='L7690' name='L7690'&gt;&lt;/a&gt;
<a id='L7705' name='L7705'></a>&lt;a id='L7691' name='L7691'&gt;&lt;/a&gt;
<a id='L7706' name='L7706'></a>&lt;a id='L7692' name='L7692'&gt;&lt;/a&gt;% \mbodybackslash is the definition of \ in @macro bodies.
<a id='L7707' name='L7707'></a>&lt;a id='L7693' name='L7693'&gt;&lt;/a&gt;% It maps \foo\ =&amp;gt; \csname macarg.foo\endcsname =&amp;gt; #N
<a id='L7708' name='L7708'></a>&lt;a id='L7694' name='L7694'&gt;&lt;/a&gt;% where N is the macro parameter number.
<a id='L7709' name='L7709'></a>&lt;a id='L7695' name='L7695'&gt;&lt;/a&gt;% We define \csname macarg.\endcsname to be \realbackslash, so
<a id='L7710' name='L7710'></a>&lt;a id='L7696' name='L7696'&gt;&lt;/a&gt;% \\ in macro replacement text gets you a backslash.
<a id='L7711' name='L7711'></a>&lt;a id='L7697' name='L7697'&gt;&lt;/a&gt;%
<a id='L7712' name='L7712'></a>&lt;a id='L7698' name='L7698'&gt;&lt;/a&gt;{\catcode`@=0 @catcode`@\=@active
<a id='L7713' name='L7713'></a>&lt;a id='L7699' name='L7699'&gt;&lt;/a&gt; @gdef@usembodybackslash{@let\=@mbodybackslash}
<a id='L7714' name='L7714'></a>&lt;a id='L7700' name='L7700'&gt;&lt;/a&gt; @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname}
<a id='L7715' name='L7715'></a>&lt;a id='L7701' name='L7701'&gt;&lt;/a&gt;}
<a id='L7716' name='L7716'></a>&lt;a id='L7702' name='L7702'&gt;&lt;/a&gt;\expandafter\def\csname macarg.\endcsname{\realbackslash}
<a id='L7717' name='L7717'></a>&lt;a id='L7703' name='L7703'&gt;&lt;/a&gt;
<a id='L7718' name='L7718'></a>&lt;a id='L7704' name='L7704'&gt;&lt;/a&gt;\def\margbackslash#1{\char`\#1 }
<a id='L7719' name='L7719'></a>&lt;a id='L7705' name='L7705'&gt;&lt;/a&gt;
<a id='L7720' name='L7720'></a>&lt;a id='L7706' name='L7706'&gt;&lt;/a&gt;\def\macro{\recursivefalse\parsearg\macroxxx}
<a id='L7721' name='L7721'></a>&lt;a id='L7707' name='L7707'&gt;&lt;/a&gt;\def\rmacro{\recursivetrue\parsearg\macroxxx}
<a id='L7722' name='L7722'></a>&lt;a id='L7708' name='L7708'&gt;&lt;/a&gt;
<a id='L7723' name='L7723'></a>&lt;a id='L7709' name='L7709'&gt;&lt;/a&gt;\def\macroxxx#1{%
<a id='L7724' name='L7724'></a>&lt;a id='L7710' name='L7710'&gt;&lt;/a&gt;  \getargs{#1}% now \macname is the macname and \argl the arglist
<a id='L7725' name='L7725'></a>&lt;a id='L7711' name='L7711'&gt;&lt;/a&gt;  \ifx\argl\empty       % no arguments
<a id='L7726' name='L7726'></a>&lt;a id='L7712' name='L7712'&gt;&lt;/a&gt;     \paramno=0\relax
<a id='L7727' name='L7727'></a>&lt;a id='L7713' name='L7713'&gt;&lt;/a&gt;  \else
<a id='L7728' name='L7728'></a>&lt;a id='L7714' name='L7714'&gt;&lt;/a&gt;     \expandafter\parsemargdef \argl;%
<a id='L7729' name='L7729'></a>&lt;a id='L7715' name='L7715'&gt;&lt;/a&gt;     \if\paramno&amp;gt;256\relax
<a id='L7730' name='L7730'></a>&lt;a id='L7716' name='L7716'&gt;&lt;/a&gt;       \ifx\eTeXversion\thisisundefined
<a id='L7731' name='L7731'></a>&lt;a id='L7717' name='L7717'&gt;&lt;/a&gt;         \errhelp = \EMsimple
<a id='L7732' name='L7732'></a>&lt;a id='L7718' name='L7718'&gt;&lt;/a&gt;         \errmessage{You need eTeX to compile a file with macros with more than 256 arguments}
<a id='L7733' name='L7733'></a>&lt;a id='L7719' name='L7719'&gt;&lt;/a&gt;       \fi
<a id='L7734' name='L7734'></a>&lt;a id='L7720' name='L7720'&gt;&lt;/a&gt;     \fi
<a id='L7735' name='L7735'></a>&lt;a id='L7721' name='L7721'&gt;&lt;/a&gt;  \fi
<a id='L7736' name='L7736'></a>&lt;a id='L7722' name='L7722'&gt;&lt;/a&gt;  \if1\csname ismacro.\the\macname\endcsname
<a id='L7737' name='L7737'></a>&lt;a id='L7723' name='L7723'&gt;&lt;/a&gt;     \message{Warning: redefining \the\macname}%
<a id='L7738' name='L7738'></a>&lt;a id='L7724' name='L7724'&gt;&lt;/a&gt;  \else
<a id='L7739' name='L7739'></a>&lt;a id='L7725' name='L7725'&gt;&lt;/a&gt;     \expandafter\ifx\csname \the\macname\endcsname \relax
<a id='L7740' name='L7740'></a>&lt;a id='L7726' name='L7726'&gt;&lt;/a&gt;     \else \errmessage{Macro name \the\macname\space already defined}\fi
<a id='L7741' name='L7741'></a>&lt;a id='L7727' name='L7727'&gt;&lt;/a&gt;     \global\cslet{macsave.\the\macname}{\the\macname}%
<a id='L7742' name='L7742'></a>&lt;a id='L7728' name='L7728'&gt;&lt;/a&gt;     \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
<a id='L7743' name='L7743'></a>&lt;a id='L7729' name='L7729'&gt;&lt;/a&gt;     \addtomacrolist{\the\macname}%
<a id='L7744' name='L7744'></a>&lt;a id='L7730' name='L7730'&gt;&lt;/a&gt;  \fi
<a id='L7745' name='L7745'></a>&lt;a id='L7731' name='L7731'&gt;&lt;/a&gt;  \begingroup \macrobodyctxt
<a id='L7746' name='L7746'></a>&lt;a id='L7732' name='L7732'&gt;&lt;/a&gt;  \ifrecursive \expandafter\parsermacbody
<a id='L7747' name='L7747'></a>&lt;a id='L7733' name='L7733'&gt;&lt;/a&gt;  \else \expandafter\parsemacbody
<a id='L7748' name='L7748'></a>&lt;a id='L7734' name='L7734'&gt;&lt;/a&gt;  \fi}
<a id='L7749' name='L7749'></a>&lt;a id='L7735' name='L7735'&gt;&lt;/a&gt;
<a id='L7750' name='L7750'></a>&lt;a id='L7736' name='L7736'&gt;&lt;/a&gt;\parseargdef\unmacro{%
<a id='L7751' name='L7751'></a>&lt;a id='L7737' name='L7737'&gt;&lt;/a&gt;  \if1\csname ismacro.#1\endcsname
<a id='L7752' name='L7752'></a>&lt;a id='L7738' name='L7738'&gt;&lt;/a&gt;    \global\cslet{#1}{macsave.#1}%
<a id='L7753' name='L7753'></a>&lt;a id='L7739' name='L7739'&gt;&lt;/a&gt;    \global\expandafter\let \csname ismacro.#1\endcsname=0%
<a id='L7754' name='L7754'></a>&lt;a id='L7740' name='L7740'&gt;&lt;/a&gt;    % Remove the macro name from \macrolist:
<a id='L7755' name='L7755'></a>&lt;a id='L7741' name='L7741'&gt;&lt;/a&gt;    \begingroup
<a id='L7756' name='L7756'></a>&lt;a id='L7742' name='L7742'&gt;&lt;/a&gt;      \expandafter\let\csname#1\endcsname \relax
<a id='L7757' name='L7757'></a>&lt;a id='L7743' name='L7743'&gt;&lt;/a&gt;      \let\definedummyword\unmacrodo
<a id='L7758' name='L7758'></a>&lt;a id='L7744' name='L7744'&gt;&lt;/a&gt;      \xdef\macrolist{\macrolist}%
<a id='L7759' name='L7759'></a>&lt;a id='L7745' name='L7745'&gt;&lt;/a&gt;    \endgroup
<a id='L7760' name='L7760'></a>&lt;a id='L7746' name='L7746'&gt;&lt;/a&gt;  \else
<a id='L7761' name='L7761'></a>&lt;a id='L7747' name='L7747'&gt;&lt;/a&gt;    \errmessage{Macro #1 not defined}%
<a id='L7762' name='L7762'></a>&lt;a id='L7748' name='L7748'&gt;&lt;/a&gt;  \fi
<a id='L7763' name='L7763'></a>&lt;a id='L7749' name='L7749'&gt;&lt;/a&gt;}
<a id='L7764' name='L7764'></a>&lt;a id='L7750' name='L7750'&gt;&lt;/a&gt;
<a id='L7765' name='L7765'></a>&lt;a id='L7751' name='L7751'&gt;&lt;/a&gt;% Called by \do from \dounmacro on each macro.  The idea is to omit any
<a id='L7766' name='L7766'></a>&lt;a id='L7752' name='L7752'&gt;&lt;/a&gt;% macro definitions that have been changed to \relax.
<a id='L7767' name='L7767'></a>&lt;a id='L7753' name='L7753'&gt;&lt;/a&gt;%
<a id='L7768' name='L7768'></a>&lt;a id='L7754' name='L7754'&gt;&lt;/a&gt;\def\unmacrodo#1{%
<a id='L7769' name='L7769'></a>&lt;a id='L7755' name='L7755'&gt;&lt;/a&gt;  \ifx #1\relax
<a id='L7770' name='L7770'></a>&lt;a id='L7756' name='L7756'&gt;&lt;/a&gt;    % remove this
<a id='L7771' name='L7771'></a>&lt;a id='L7757' name='L7757'&gt;&lt;/a&gt;  \else
<a id='L7772' name='L7772'></a>&lt;a id='L7758' name='L7758'&gt;&lt;/a&gt;    \noexpand\definedummyword \noexpand#1%
<a id='L7773' name='L7773'></a>&lt;a id='L7759' name='L7759'&gt;&lt;/a&gt;  \fi
<a id='L7774' name='L7774'></a>&lt;a id='L7760' name='L7760'&gt;&lt;/a&gt;}
<a id='L7775' name='L7775'></a>&lt;a id='L7761' name='L7761'&gt;&lt;/a&gt;
<a id='L7776' name='L7776'></a>&lt;a id='L7762' name='L7762'&gt;&lt;/a&gt;% This makes use of the obscure feature that if the last token of a
<a id='L7777' name='L7777'></a>&lt;a id='L7763' name='L7763'&gt;&lt;/a&gt;% &amp;lt;parameter list&amp;gt; is #, then the preceding argument is delimited by
<a id='L7778' name='L7778'></a>&lt;a id='L7764' name='L7764'&gt;&lt;/a&gt;% an opening brace, and that opening brace is not consumed.
<a id='L7779' name='L7779'></a>&lt;a id='L7765' name='L7765'&gt;&lt;/a&gt;\def\getargs#1{\getargsxxx#1{}}
<a id='L7780' name='L7780'></a>&lt;a id='L7766' name='L7766'&gt;&lt;/a&gt;\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
<a id='L7781' name='L7781'></a>&lt;a id='L7767' name='L7767'&gt;&lt;/a&gt;\def\getmacname#1 #2\relax{\macname={#1}}
<a id='L7782' name='L7782'></a>&lt;a id='L7768' name='L7768'&gt;&lt;/a&gt;\def\getmacargs#1{\def\argl{#1}}
<a id='L7783' name='L7783'></a>&lt;a id='L7769' name='L7769'&gt;&lt;/a&gt;
<a id='L7784' name='L7784'></a>&lt;a id='L7770' name='L7770'&gt;&lt;/a&gt;% For macro processing make @ a letter so that we can make Texinfo private macro names.
<a id='L7785' name='L7785'></a>&lt;a id='L7771' name='L7771'&gt;&lt;/a&gt;\edef\texiatcatcode{\the\catcode`\@}
<a id='L7786' name='L7786'></a>&lt;a id='L7772' name='L7772'&gt;&lt;/a&gt;\catcode `@=11\relax
<a id='L7787' name='L7787'></a>&lt;a id='L7773' name='L7773'&gt;&lt;/a&gt;
<a id='L7788' name='L7788'></a>&lt;a id='L7774' name='L7774'&gt;&lt;/a&gt;% Parse the optional {params} list.  Set up \paramno and \paramlist
<a id='L7789' name='L7789'></a>&lt;a id='L7775' name='L7775'&gt;&lt;/a&gt;% so \defmacro knows what to do.  Define \macarg.BLAH for each BLAH
<a id='L7790' name='L7790'></a>&lt;a id='L7776' name='L7776'&gt;&lt;/a&gt;% in the params list to some hook where the argument si to be expanded.  If
<a id='L7791' name='L7791'></a>&lt;a id='L7777' name='L7777'&gt;&lt;/a&gt;% there are less than 10 arguments that hook is to be replaced by ##N where N
<a id='L7792' name='L7792'></a>&lt;a id='L7778' name='L7778'&gt;&lt;/a&gt;% is the position in that list, that is to say the macro arguments are to be
<a id='L7793' name='L7793'></a>&lt;a id='L7779' name='L7779'&gt;&lt;/a&gt;% defined `a la TeX in the macro body.  
<a id='L7794' name='L7794'></a>&lt;a id='L7780' name='L7780'&gt;&lt;/a&gt;%
<a id='L7795' name='L7795'></a>&lt;a id='L7781' name='L7781'&gt;&lt;/a&gt;% That gets used by \mbodybackslash (above).
<a id='L7796' name='L7796'></a>&lt;a id='L7782' name='L7782'&gt;&lt;/a&gt;%
<a id='L7797' name='L7797'></a>&lt;a id='L7783' name='L7783'&gt;&lt;/a&gt;% We need to get `macro parameter char #' into several definitions.
<a id='L7798' name='L7798'></a>&lt;a id='L7784' name='L7784'&gt;&lt;/a&gt;% The technique used is stolen from LaTeX: let \hash be something
<a id='L7799' name='L7799'></a>&lt;a id='L7785' name='L7785'&gt;&lt;/a&gt;% unexpandable, insert that wherever you need a #, and then redefine
<a id='L7800' name='L7800'></a>&lt;a id='L7786' name='L7786'&gt;&lt;/a&gt;% it to # just before using the token list produced.
<a id='L7801' name='L7801'></a>&lt;a id='L7787' name='L7787'&gt;&lt;/a&gt;%
<a id='L7802' name='L7802'></a>&lt;a id='L7788' name='L7788'&gt;&lt;/a&gt;% The same technique is used to protect \eatspaces till just before
<a id='L7803' name='L7803'></a>&lt;a id='L7789' name='L7789'&gt;&lt;/a&gt;% the macro is used.
<a id='L7804' name='L7804'></a>&lt;a id='L7790' name='L7790'&gt;&lt;/a&gt;%
<a id='L7805' name='L7805'></a>&lt;a id='L7791' name='L7791'&gt;&lt;/a&gt;% If there are 10 or more arguments, a different technique is used, where the
<a id='L7806' name='L7806'></a>&lt;a id='L7792' name='L7792'&gt;&lt;/a&gt;% hook remains in the body, and when macro is to be expanded the body is
<a id='L7807' name='L7807'></a>&lt;a id='L7793' name='L7793'&gt;&lt;/a&gt;% processed again to replace the arguments.
<a id='L7808' name='L7808'></a>&lt;a id='L7794' name='L7794'&gt;&lt;/a&gt;%
<a id='L7809' name='L7809'></a>&lt;a id='L7795' name='L7795'&gt;&lt;/a&gt;% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the
<a id='L7810' name='L7810'></a>&lt;a id='L7796' name='L7796'&gt;&lt;/a&gt;% argument N value and then \edef  the body (nothing else will expand because of
<a id='L7811' name='L7811'></a>&lt;a id='L7797' name='L7797'&gt;&lt;/a&gt;% the catcode regime underwhich the body was input).
<a id='L7812' name='L7812'></a>&lt;a id='L7798' name='L7798'&gt;&lt;/a&gt;%
<a id='L7813' name='L7813'></a>&lt;a id='L7799' name='L7799'&gt;&lt;/a&gt;% If you compile with TeX (not eTeX), and you have macros with 10 or more
<a id='L7814' name='L7814'></a>&lt;a id='L7800' name='L7800'&gt;&lt;/a&gt;% arguments, you need that no macro has more than 256 arguments, otherwise an
<a id='L7815' name='L7815'></a>&lt;a id='L7801' name='L7801'&gt;&lt;/a&gt;% error is produced.
<a id='L7816' name='L7816'></a>&lt;a id='L7802' name='L7802'&gt;&lt;/a&gt;\def\parsemargdef#1;{%
<a id='L7817' name='L7817'></a>&lt;a id='L7803' name='L7803'&gt;&lt;/a&gt;  \paramno=0\def\paramlist{}%
<a id='L7818' name='L7818'></a>&lt;a id='L7804' name='L7804'&gt;&lt;/a&gt;  \let\hash\relax
<a id='L7819' name='L7819'></a>&lt;a id='L7805' name='L7805'&gt;&lt;/a&gt;  \let\xeatspaces\relax
<a id='L7820' name='L7820'></a>&lt;a id='L7806' name='L7806'&gt;&lt;/a&gt;  \parsemargdefxxx#1,;,%
<a id='L7821' name='L7821'></a>&lt;a id='L7807' name='L7807'&gt;&lt;/a&gt;  % In case that there are 10 or more arguments we parse again the arguments
<a id='L7822' name='L7822'></a>&lt;a id='L7808' name='L7808'&gt;&lt;/a&gt;  % list to set new definitions for the \macarg.BLAH macros corresponding to
<a id='L7823' name='L7823'></a>&lt;a id='L7809' name='L7809'&gt;&lt;/a&gt;  % each BLAH argument. It was anyhow needed to parse already once this list
<a id='L7824' name='L7824'></a>&lt;a id='L7810' name='L7810'&gt;&lt;/a&gt;  % in order to count the arguments, and as macros with at most 9 arguments
<a id='L7825' name='L7825'></a>&lt;a id='L7811' name='L7811'&gt;&lt;/a&gt;  % are by far more frequent than macro with 10 or more arguments, defining
<a id='L7826' name='L7826'></a>&lt;a id='L7812' name='L7812'&gt;&lt;/a&gt;  % twice the \macarg.BLAH macros does not cost too much processing power.
<a id='L7827' name='L7827'></a>&lt;a id='L7813' name='L7813'&gt;&lt;/a&gt;  \ifnum\paramno&amp;lt;10\relax\else
<a id='L7828' name='L7828'></a>&lt;a id='L7814' name='L7814'&gt;&lt;/a&gt;    \paramno0\relax
<a id='L7829' name='L7829'></a>&lt;a id='L7815' name='L7815'&gt;&lt;/a&gt;    \parsemmanyargdef@@#1,;,% 10 or more arguments
<a id='L7830' name='L7830'></a>&lt;a id='L7816' name='L7816'&gt;&lt;/a&gt;  \fi
<a id='L7831' name='L7831'></a>&lt;a id='L7817' name='L7817'&gt;&lt;/a&gt;}
<a id='L7832' name='L7832'></a>&lt;a id='L7818' name='L7818'&gt;&lt;/a&gt;\def\parsemargdefxxx#1,{%
<a id='L7833' name='L7833'></a>&lt;a id='L7819' name='L7819'&gt;&lt;/a&gt;  \if#1;\let\next=\relax
<a id='L7834' name='L7834'></a>&lt;a id='L7820' name='L7820'&gt;&lt;/a&gt;  \else \let\next=\parsemargdefxxx
<a id='L7835' name='L7835'></a>&lt;a id='L7821' name='L7821'&gt;&lt;/a&gt;    \advance\paramno by 1
<a id='L7836' name='L7836'></a>&lt;a id='L7822' name='L7822'&gt;&lt;/a&gt;    \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
<a id='L7837' name='L7837'></a>&lt;a id='L7823' name='L7823'&gt;&lt;/a&gt;        {\xeatspaces{\hash\the\paramno}}%
<a id='L7838' name='L7838'></a>&lt;a id='L7824' name='L7824'&gt;&lt;/a&gt;    \edef\paramlist{\paramlist\hash\the\paramno,}%
<a id='L7839' name='L7839'></a>&lt;a id='L7825' name='L7825'&gt;&lt;/a&gt;  \fi\next}
<a id='L7840' name='L7840'></a>&lt;a id='L7826' name='L7826'&gt;&lt;/a&gt;
<a id='L7841' name='L7841'></a>&lt;a id='L7827' name='L7827'&gt;&lt;/a&gt;\def\parsemmanyargdef@@#1,{%
<a id='L7842' name='L7842'></a>&lt;a id='L7828' name='L7828'&gt;&lt;/a&gt;  \if#1;\let\next=\relax
<a id='L7843' name='L7843'></a>&lt;a id='L7829' name='L7829'&gt;&lt;/a&gt;  \else 
<a id='L7844' name='L7844'></a>&lt;a id='L7830' name='L7830'&gt;&lt;/a&gt;    \let\next=\parsemmanyargdef@@
<a id='L7845' name='L7845'></a>&lt;a id='L7831' name='L7831'&gt;&lt;/a&gt;    \edef\tempb{\eatspaces{#1}}%
<a id='L7846' name='L7846'></a>&lt;a id='L7832' name='L7832'&gt;&lt;/a&gt;    \expandafter\def\expandafter\tempa
<a id='L7847' name='L7847'></a>&lt;a id='L7833' name='L7833'&gt;&lt;/a&gt;       \expandafter{\csname macarg.\tempb\endcsname}%
<a id='L7848' name='L7848'></a>&lt;a id='L7834' name='L7834'&gt;&lt;/a&gt;    % Note that we need some extra \noexpand\noexpand, this is because we
<a id='L7849' name='L7849'></a>&lt;a id='L7835' name='L7835'&gt;&lt;/a&gt;    % don't want \the  to be expanded in the \parsermacbody  as it uses an
<a id='L7850' name='L7850'></a>&lt;a id='L7836' name='L7836'&gt;&lt;/a&gt;    % \xdef .
<a id='L7851' name='L7851'></a>&lt;a id='L7837' name='L7837'&gt;&lt;/a&gt;    \expandafter\edef\tempa
<a id='L7852' name='L7852'></a>&lt;a id='L7838' name='L7838'&gt;&lt;/a&gt;      {\noexpand\noexpand\noexpand\the\toks\the\paramno}%
<a id='L7853' name='L7853'></a>&lt;a id='L7839' name='L7839'&gt;&lt;/a&gt;    \advance\paramno by 1\relax
<a id='L7854' name='L7854'></a>&lt;a id='L7840' name='L7840'&gt;&lt;/a&gt;  \fi\next}
<a id='L7855' name='L7855'></a>&lt;a id='L7841' name='L7841'&gt;&lt;/a&gt;
<a id='L7856' name='L7856'></a>&lt;a id='L7842' name='L7842'&gt;&lt;/a&gt;% These two commands read recursive and nonrecursive macro bodies.
<a id='L7857' name='L7857'></a>&lt;a id='L7843' name='L7843'&gt;&lt;/a&gt;% (They're different since rec and nonrec macros end differently.)
<a id='L7858' name='L7858'></a>&lt;a id='L7844' name='L7844'&gt;&lt;/a&gt;%
<a id='L7859' name='L7859'></a>&lt;a id='L7845' name='L7845'&gt;&lt;/a&gt;
<a id='L7860' name='L7860'></a>&lt;a id='L7846' name='L7846'&gt;&lt;/a&gt;\catcode `\@\texiatcatcode
<a id='L7861' name='L7861'></a>&lt;a id='L7847' name='L7847'&gt;&lt;/a&gt;\long\def\parsemacbody#1@end macro%
<a id='L7862' name='L7862'></a>&lt;a id='L7848' name='L7848'&gt;&lt;/a&gt;{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
<a id='L7863' name='L7863'></a>&lt;a id='L7849' name='L7849'&gt;&lt;/a&gt;\long\def\parsermacbody#1@end rmacro%
<a id='L7864' name='L7864'></a>&lt;a id='L7850' name='L7850'&gt;&lt;/a&gt;{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
<a id='L7865' name='L7865'></a>&lt;a id='L7851' name='L7851'&gt;&lt;/a&gt;\catcode `\@=11\relax
<a id='L7866' name='L7866'></a>&lt;a id='L7852' name='L7852'&gt;&lt;/a&gt;
<a id='L7867' name='L7867'></a>&lt;a id='L7853' name='L7853'&gt;&lt;/a&gt;\let\endargs@\relax
<a id='L7868' name='L7868'></a>&lt;a id='L7854' name='L7854'&gt;&lt;/a&gt;\let\nil@\relax
<a id='L7869' name='L7869'></a>&lt;a id='L7855' name='L7855'&gt;&lt;/a&gt;\def\nilm@{\nil@}%
<a id='L7870' name='L7870'></a>&lt;a id='L7856' name='L7856'&gt;&lt;/a&gt;\long\def\nillm@{\nil@}%
<a id='L7871' name='L7871'></a>&lt;a id='L7857' name='L7857'&gt;&lt;/a&gt;
<a id='L7872' name='L7872'></a>&lt;a id='L7858' name='L7858'&gt;&lt;/a&gt;% This macro is expanded during the Texinfo macro expansion, not during its
<a id='L7873' name='L7873'></a>&lt;a id='L7859' name='L7859'&gt;&lt;/a&gt;% definition.  It gets all the arguments values and assigns them to macros
<a id='L7874' name='L7874'></a>&lt;a id='L7860' name='L7860'&gt;&lt;/a&gt;% macarg.ARGNAME
<a id='L7875' name='L7875'></a>&lt;a id='L7861' name='L7861'&gt;&lt;/a&gt;%
<a id='L7876' name='L7876'></a>&lt;a id='L7862' name='L7862'&gt;&lt;/a&gt;% #1 is the macro name
<a id='L7877' name='L7877'></a>&lt;a id='L7863' name='L7863'&gt;&lt;/a&gt;% #2 is the list of argument names
<a id='L7878' name='L7878'></a>&lt;a id='L7864' name='L7864'&gt;&lt;/a&gt;% #3 is the list of argument values
<a id='L7879' name='L7879'></a>&lt;a id='L7865' name='L7865'&gt;&lt;/a&gt;\def\getargvals@#1#2#3{%
<a id='L7880' name='L7880'></a>&lt;a id='L7866' name='L7866'&gt;&lt;/a&gt;  \def\macargdeflist@{}%
<a id='L7881' name='L7881'></a>&lt;a id='L7867' name='L7867'&gt;&lt;/a&gt;  \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion.
<a id='L7882' name='L7882'></a>&lt;a id='L7868' name='L7868'&gt;&lt;/a&gt;  \def\paramlist{#2,\nil@}%
<a id='L7883' name='L7883'></a>&lt;a id='L7869' name='L7869'&gt;&lt;/a&gt;  \def\macroname{#1}%
<a id='L7884' name='L7884'></a>&lt;a id='L7870' name='L7870'&gt;&lt;/a&gt;  \begingroup
<a id='L7885' name='L7885'></a>&lt;a id='L7871' name='L7871'&gt;&lt;/a&gt;  \macroargctxt
<a id='L7886' name='L7886'></a>&lt;a id='L7872' name='L7872'&gt;&lt;/a&gt;  \def\argvaluelist{#3,\nil@}%
<a id='L7887' name='L7887'></a>&lt;a id='L7873' name='L7873'&gt;&lt;/a&gt;  \def\@tempa{#3}%
<a id='L7888' name='L7888'></a>&lt;a id='L7874' name='L7874'&gt;&lt;/a&gt;  \ifx\@tempa\empty
<a id='L7889' name='L7889'></a>&lt;a id='L7875' name='L7875'&gt;&lt;/a&gt;    \setemptyargvalues@
<a id='L7890' name='L7890'></a>&lt;a id='L7876' name='L7876'&gt;&lt;/a&gt;  \else
<a id='L7891' name='L7891'></a>&lt;a id='L7877' name='L7877'&gt;&lt;/a&gt;    \getargvals@@
<a id='L7892' name='L7892'></a>&lt;a id='L7878' name='L7878'&gt;&lt;/a&gt;  \fi
<a id='L7893' name='L7893'></a>&lt;a id='L7879' name='L7879'&gt;&lt;/a&gt;}
<a id='L7894' name='L7894'></a>&lt;a id='L7880' name='L7880'&gt;&lt;/a&gt;
<a id='L7895' name='L7895'></a>&lt;a id='L7881' name='L7881'&gt;&lt;/a&gt;% 
<a id='L7896' name='L7896'></a>&lt;a id='L7882' name='L7882'&gt;&lt;/a&gt;\def\getargvals@@{%
<a id='L7897' name='L7897'></a>&lt;a id='L7883' name='L7883'&gt;&lt;/a&gt;  \ifx\paramlist\nilm@
<a id='L7898' name='L7898'></a>&lt;a id='L7884' name='L7884'&gt;&lt;/a&gt;      % Some sanity check needed here that \argvaluelist is also empty.
<a id='L7899' name='L7899'></a>&lt;a id='L7885' name='L7885'&gt;&lt;/a&gt;      \ifx\argvaluelist\nillm@
<a id='L7900' name='L7900'></a>&lt;a id='L7886' name='L7886'&gt;&lt;/a&gt;      \else
<a id='L7901' name='L7901'></a>&lt;a id='L7887' name='L7887'&gt;&lt;/a&gt;        \errhelp = \EMsimple
<a id='L7902' name='L7902'></a>&lt;a id='L7888' name='L7888'&gt;&lt;/a&gt;        \errmessage{Too many arguments in macro `\macroname'!}%
<a id='L7903' name='L7903'></a>&lt;a id='L7889' name='L7889'&gt;&lt;/a&gt;      \fi
<a id='L7904' name='L7904'></a>&lt;a id='L7890' name='L7890'&gt;&lt;/a&gt;      \let\next\macargexpandinbody@
<a id='L7905' name='L7905'></a>&lt;a id='L7891' name='L7891'&gt;&lt;/a&gt;  \else
<a id='L7906' name='L7906'></a>&lt;a id='L7892' name='L7892'&gt;&lt;/a&gt;    \ifx\argvaluelist\nillm@
<a id='L7907' name='L7907'></a>&lt;a id='L7893' name='L7893'&gt;&lt;/a&gt;       % No more arguments values passed to macro.  Set remaining named-arg
<a id='L7908' name='L7908'></a>&lt;a id='L7894' name='L7894'&gt;&lt;/a&gt;       % macros to empty.
<a id='L7909' name='L7909'></a>&lt;a id='L7895' name='L7895'&gt;&lt;/a&gt;       \let\next\setemptyargvalues@
<a id='L7910' name='L7910'></a>&lt;a id='L7896' name='L7896'&gt;&lt;/a&gt;    \else
<a id='L7911' name='L7911'></a>&lt;a id='L7897' name='L7897'&gt;&lt;/a&gt;      % pop current arg name into \@tempb
<a id='L7912' name='L7912'></a>&lt;a id='L7898' name='L7898'&gt;&lt;/a&gt;      \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}%
<a id='L7913' name='L7913'></a>&lt;a id='L7899' name='L7899'&gt;&lt;/a&gt;      \expandafter\@tempa\expandafter{\paramlist}%
<a id='L7914' name='L7914'></a>&lt;a id='L7900' name='L7900'&gt;&lt;/a&gt;       % pop current argument value into \@tempc
<a id='L7915' name='L7915'></a>&lt;a id='L7901' name='L7901'&gt;&lt;/a&gt;      \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}%
<a id='L7916' name='L7916'></a>&lt;a id='L7902' name='L7902'&gt;&lt;/a&gt;      \expandafter\@tempa\expandafter{\argvaluelist}%
<a id='L7917' name='L7917'></a>&lt;a id='L7903' name='L7903'&gt;&lt;/a&gt;       % Here \@tempb is the current arg name and \@tempc is the current arg value.
<a id='L7918' name='L7918'></a>&lt;a id='L7904' name='L7904'&gt;&lt;/a&gt;       % First place the new argument macro definition into \@tempd
<a id='L7919' name='L7919'></a>&lt;a id='L7905' name='L7905'&gt;&lt;/a&gt;       \expandafter\macname\expandafter{\@tempc}%
<a id='L7920' name='L7920'></a>&lt;a id='L7906' name='L7906'&gt;&lt;/a&gt;       \expandafter\let\csname macarg.\@tempb\endcsname\relax
<a id='L7921' name='L7921'></a>&lt;a id='L7907' name='L7907'&gt;&lt;/a&gt;       \expandafter\def\expandafter\@tempe\expandafter{%
<a id='L7922' name='L7922'></a>&lt;a id='L7908' name='L7908'&gt;&lt;/a&gt;         \csname macarg.\@tempb\endcsname}%
<a id='L7923' name='L7923'></a>&lt;a id='L7909' name='L7909'&gt;&lt;/a&gt;       \edef\@tempd{\long\def\@tempe{\the\macname}}%
<a id='L7924' name='L7924'></a>&lt;a id='L7910' name='L7910'&gt;&lt;/a&gt;       \push@\@tempd\macargdeflist@
<a id='L7925' name='L7925'></a>&lt;a id='L7911' name='L7911'&gt;&lt;/a&gt;       \let\next\getargvals@@
<a id='L7926' name='L7926'></a>&lt;a id='L7912' name='L7912'&gt;&lt;/a&gt;    \fi
<a id='L7927' name='L7927'></a>&lt;a id='L7913' name='L7913'&gt;&lt;/a&gt;  \fi
<a id='L7928' name='L7928'></a>&lt;a id='L7914' name='L7914'&gt;&lt;/a&gt;  \next
<a id='L7929' name='L7929'></a>&lt;a id='L7915' name='L7915'&gt;&lt;/a&gt;}
<a id='L7930' name='L7930'></a>&lt;a id='L7916' name='L7916'&gt;&lt;/a&gt;
<a id='L7931' name='L7931'></a>&lt;a id='L7917' name='L7917'&gt;&lt;/a&gt;\def\push@#1#2{%
<a id='L7932' name='L7932'></a>&lt;a id='L7918' name='L7918'&gt;&lt;/a&gt;  \expandafter\expandafter\expandafter\def
<a id='L7933' name='L7933'></a>&lt;a id='L7919' name='L7919'&gt;&lt;/a&gt;  \expandafter\expandafter\expandafter#2%
<a id='L7934' name='L7934'></a>&lt;a id='L7920' name='L7920'&gt;&lt;/a&gt;  \expandafter\expandafter\expandafter{%
<a id='L7935' name='L7935'></a>&lt;a id='L7921' name='L7921'&gt;&lt;/a&gt;  \expandafter#1#2}%
<a id='L7936' name='L7936'></a>&lt;a id='L7922' name='L7922'&gt;&lt;/a&gt;}
<a id='L7937' name='L7937'></a>&lt;a id='L7923' name='L7923'&gt;&lt;/a&gt;
<a id='L7938' name='L7938'></a>&lt;a id='L7924' name='L7924'&gt;&lt;/a&gt;% Replace arguments by their values in the macro body, and place the result
<a id='L7939' name='L7939'></a>&lt;a id='L7925' name='L7925'&gt;&lt;/a&gt;% in macro \@tempa
<a id='L7940' name='L7940'></a>&lt;a id='L7926' name='L7926'&gt;&lt;/a&gt;\def\macvalstoargs@{%
<a id='L7941' name='L7941'></a>&lt;a id='L7927' name='L7927'&gt;&lt;/a&gt;  %  To do this we use the property that token registers that are \the'ed
<a id='L7942' name='L7942'></a>&lt;a id='L7928' name='L7928'&gt;&lt;/a&gt;  % within an \edef  expand only once. So we are going to place all argument
<a id='L7943' name='L7943'></a>&lt;a id='L7929' name='L7929'&gt;&lt;/a&gt;  % values into respective token registers.
<a id='L7944' name='L7944'></a>&lt;a id='L7930' name='L7930'&gt;&lt;/a&gt;  %
<a id='L7945' name='L7945'></a>&lt;a id='L7931' name='L7931'&gt;&lt;/a&gt;  % First we save the token context, and initialize argument numbering.
<a id='L7946' name='L7946'></a>&lt;a id='L7932' name='L7932'&gt;&lt;/a&gt;  \begingroup
<a id='L7947' name='L7947'></a>&lt;a id='L7933' name='L7933'&gt;&lt;/a&gt;    \paramno0\relax
<a id='L7948' name='L7948'></a>&lt;a id='L7934' name='L7934'&gt;&lt;/a&gt;    % Then, for each argument number #N, we place the corresponding argument
<a id='L7949' name='L7949'></a>&lt;a id='L7935' name='L7935'&gt;&lt;/a&gt;    % value into a new token list register \toks#N
<a id='L7950' name='L7950'></a>&lt;a id='L7936' name='L7936'&gt;&lt;/a&gt;    \expandafter\putargsintokens@\saveparamlist@,;,%
<a id='L7951' name='L7951'></a>&lt;a id='L7937' name='L7937'&gt;&lt;/a&gt;    % Then, we expand the body so that argument are replaced by their
<a id='L7952' name='L7952'></a>&lt;a id='L7938' name='L7938'&gt;&lt;/a&gt;    % values. The trick for values not to be expanded themselves is that they
<a id='L7953' name='L7953'></a>&lt;a id='L7939' name='L7939'&gt;&lt;/a&gt;    % are within tokens and that tokens expand only once in an \edef .
<a id='L7954' name='L7954'></a>&lt;a id='L7940' name='L7940'&gt;&lt;/a&gt;    \edef\@tempc{\csname mac.\macroname .body\endcsname}%
<a id='L7955' name='L7955'></a>&lt;a id='L7941' name='L7941'&gt;&lt;/a&gt;    % Now we restore the token stack pointer to free the token list registers
<a id='L7956' name='L7956'></a>&lt;a id='L7942' name='L7942'&gt;&lt;/a&gt;    % which we have used, but we make sure that expanded body is saved after
<a id='L7957' name='L7957'></a>&lt;a id='L7943' name='L7943'&gt;&lt;/a&gt;    % group.
<a id='L7958' name='L7958'></a>&lt;a id='L7944' name='L7944'&gt;&lt;/a&gt;    \expandafter
<a id='L7959' name='L7959'></a>&lt;a id='L7945' name='L7945'&gt;&lt;/a&gt;  \endgroup
<a id='L7960' name='L7960'></a>&lt;a id='L7946' name='L7946'&gt;&lt;/a&gt;  \expandafter\def\expandafter\@tempa\expandafter{\@tempc}%
<a id='L7961' name='L7961'></a>&lt;a id='L7947' name='L7947'&gt;&lt;/a&gt;  }
<a id='L7962' name='L7962'></a>&lt;a id='L7948' name='L7948'&gt;&lt;/a&gt;
<a id='L7963' name='L7963'></a>&lt;a id='L7949' name='L7949'&gt;&lt;/a&gt;\def\macargexpandinbody@{% 
<a id='L7964' name='L7964'></a>&lt;a id='L7950' name='L7950'&gt;&lt;/a&gt;  %% Define the named-macro outside of this group and then close this group. 
<a id='L7965' name='L7965'></a>&lt;a id='L7951' name='L7951'&gt;&lt;/a&gt;  \expandafter
<a id='L7966' name='L7966'></a>&lt;a id='L7952' name='L7952'&gt;&lt;/a&gt;  \endgroup
<a id='L7967' name='L7967'></a>&lt;a id='L7953' name='L7953'&gt;&lt;/a&gt;  \macargdeflist@
<a id='L7968' name='L7968'></a>&lt;a id='L7954' name='L7954'&gt;&lt;/a&gt;  % First the replace in body the macro arguments by their values, the result
<a id='L7969' name='L7969'></a>&lt;a id='L7955' name='L7955'&gt;&lt;/a&gt;  % is in \@tempa .
<a id='L7970' name='L7970'></a>&lt;a id='L7956' name='L7956'&gt;&lt;/a&gt;  \macvalstoargs@
<a id='L7971' name='L7971'></a>&lt;a id='L7957' name='L7957'&gt;&lt;/a&gt;  % Then we point at the \norecurse or \gobble (for recursive) macro value
<a id='L7972' name='L7972'></a>&lt;a id='L7958' name='L7958'&gt;&lt;/a&gt;  % with \@tempb .
<a id='L7973' name='L7973'></a>&lt;a id='L7959' name='L7959'&gt;&lt;/a&gt;  \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname
<a id='L7974' name='L7974'></a>&lt;a id='L7960' name='L7960'&gt;&lt;/a&gt;  % Depending on whether it is recursive or not, we need some tailing
<a id='L7975' name='L7975'></a>&lt;a id='L7961' name='L7961'&gt;&lt;/a&gt;  % \egroup .
<a id='L7976' name='L7976'></a>&lt;a id='L7962' name='L7962'&gt;&lt;/a&gt;  \ifx\@tempb\gobble
<a id='L7977' name='L7977'></a>&lt;a id='L7963' name='L7963'&gt;&lt;/a&gt;     \let\@tempc\relax
<a id='L7978' name='L7978'></a>&lt;a id='L7964' name='L7964'&gt;&lt;/a&gt;  \else
<a id='L7979' name='L7979'></a>&lt;a id='L7965' name='L7965'&gt;&lt;/a&gt;     \let\@tempc\egroup
<a id='L7980' name='L7980'></a>&lt;a id='L7966' name='L7966'&gt;&lt;/a&gt;  \fi
<a id='L7981' name='L7981'></a>&lt;a id='L7967' name='L7967'&gt;&lt;/a&gt;  % And now we do the real job:
<a id='L7982' name='L7982'></a>&lt;a id='L7968' name='L7968'&gt;&lt;/a&gt;  \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}%
<a id='L7983' name='L7983'></a>&lt;a id='L7969' name='L7969'&gt;&lt;/a&gt;  \@tempd
<a id='L7984' name='L7984'></a>&lt;a id='L7970' name='L7970'&gt;&lt;/a&gt;}
<a id='L7985' name='L7985'></a>&lt;a id='L7971' name='L7971'&gt;&lt;/a&gt;
<a id='L7986' name='L7986'></a>&lt;a id='L7972' name='L7972'&gt;&lt;/a&gt;\def\putargsintokens@#1,{%
<a id='L7987' name='L7987'></a>&lt;a id='L7973' name='L7973'&gt;&lt;/a&gt;  \if#1;\let\next\relax
<a id='L7988' name='L7988'></a>&lt;a id='L7974' name='L7974'&gt;&lt;/a&gt;  \else
<a id='L7989' name='L7989'></a>&lt;a id='L7975' name='L7975'&gt;&lt;/a&gt;    \let\next\putargsintokens@
<a id='L7990' name='L7990'></a>&lt;a id='L7976' name='L7976'&gt;&lt;/a&gt;    % First we allocate the new token list register, and give it a temporary
<a id='L7991' name='L7991'></a>&lt;a id='L7977' name='L7977'&gt;&lt;/a&gt;    % alias \@tempb .
<a id='L7992' name='L7992'></a>&lt;a id='L7978' name='L7978'&gt;&lt;/a&gt;    \toksdef\@tempb\the\paramno
<a id='L7993' name='L7993'></a>&lt;a id='L7979' name='L7979'&gt;&lt;/a&gt;    % Then we place the argument value into that token list register.
<a id='L7994' name='L7994'></a>&lt;a id='L7980' name='L7980'&gt;&lt;/a&gt;    \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname
<a id='L7995' name='L7995'></a>&lt;a id='L7981' name='L7981'&gt;&lt;/a&gt;    \expandafter\@tempb\expandafter{\@tempa}%
<a id='L7996' name='L7996'></a>&lt;a id='L7982' name='L7982'&gt;&lt;/a&gt;    \advance\paramno by 1\relax
<a id='L7997' name='L7997'></a>&lt;a id='L7983' name='L7983'&gt;&lt;/a&gt;  \fi
<a id='L7998' name='L7998'></a>&lt;a id='L7984' name='L7984'&gt;&lt;/a&gt;  \next
<a id='L7999' name='L7999'></a>&lt;a id='L7985' name='L7985'&gt;&lt;/a&gt;}
<a id='L8000' name='L8000'></a>&lt;a id='L7986' name='L7986'&gt;&lt;/a&gt;
<a id='L8001' name='L8001'></a>&lt;a id='L7987' name='L7987'&gt;&lt;/a&gt;% Save the token stack pointer into macro #1
<a id='L8002' name='L8002'></a>&lt;a id='L7988' name='L7988'&gt;&lt;/a&gt;\def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}}
<a id='L8003' name='L8003'></a>&lt;a id='L7989' name='L7989'&gt;&lt;/a&gt;% Restore the token stack pointer from number in macro #1
<a id='L8004' name='L8004'></a>&lt;a id='L7990' name='L7990'&gt;&lt;/a&gt;\def\texirestoretoksstackpoint#1{\expandafter\mathchardef\expandafter\@cclvi#1\relax}
<a id='L8005' name='L8005'></a>&lt;a id='L7991' name='L7991'&gt;&lt;/a&gt;% newtoks that can be used non \outer .
<a id='L8006' name='L8006'></a>&lt;a id='L7992' name='L7992'&gt;&lt;/a&gt;\def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi}
<a id='L8007' name='L8007'></a>&lt;a id='L7993' name='L7993'&gt;&lt;/a&gt;
<a id='L8008' name='L8008'></a>&lt;a id='L7994' name='L7994'&gt;&lt;/a&gt;% Tailing missing arguments are set to empty
<a id='L8009' name='L8009'></a>&lt;a id='L7995' name='L7995'&gt;&lt;/a&gt;\def\setemptyargvalues@{%
<a id='L8010' name='L8010'></a>&lt;a id='L7996' name='L7996'&gt;&lt;/a&gt;  \ifx\paramlist\nilm@
<a id='L8011' name='L8011'></a>&lt;a id='L7997' name='L7997'&gt;&lt;/a&gt;    \let\next\macargexpandinbody@
<a id='L8012' name='L8012'></a>&lt;a id='L7998' name='L7998'&gt;&lt;/a&gt;  \else
<a id='L8013' name='L8013'></a>&lt;a id='L7999' name='L7999'&gt;&lt;/a&gt;    \expandafter\setemptyargvaluesparser@\paramlist\endargs@
<a id='L8014' name='L8014'></a>&lt;a id='L8000' name='L8000'&gt;&lt;/a&gt;    \let\next\setemptyargvalues@
<a id='L8015' name='L8015'></a>&lt;a id='L8001' name='L8001'&gt;&lt;/a&gt;  \fi
<a id='L8016' name='L8016'></a>&lt;a id='L8002' name='L8002'&gt;&lt;/a&gt;  \next
<a id='L8017' name='L8017'></a>&lt;a id='L8003' name='L8003'&gt;&lt;/a&gt;}
<a id='L8018' name='L8018'></a>&lt;a id='L8004' name='L8004'&gt;&lt;/a&gt;
<a id='L8019' name='L8019'></a>&lt;a id='L8005' name='L8005'&gt;&lt;/a&gt;\def\setemptyargvaluesparser@#1,#2\endargs@{%
<a id='L8020' name='L8020'></a>&lt;a id='L8006' name='L8006'&gt;&lt;/a&gt;  \expandafter\def\expandafter\@tempa\expandafter{%
<a id='L8021' name='L8021'></a>&lt;a id='L8007' name='L8007'&gt;&lt;/a&gt;    \expandafter\def\csname macarg.#1\endcsname{}}%
<a id='L8022' name='L8022'></a>&lt;a id='L8008' name='L8008'&gt;&lt;/a&gt;  \push@\@tempa\macargdeflist@
<a id='L8023' name='L8023'></a>&lt;a id='L8009' name='L8009'&gt;&lt;/a&gt;  \def\paramlist{#2}%
<a id='L8024' name='L8024'></a>&lt;a id='L8010' name='L8010'&gt;&lt;/a&gt;}
<a id='L8025' name='L8025'></a>&lt;a id='L8011' name='L8011'&gt;&lt;/a&gt;
<a id='L8026' name='L8026'></a>&lt;a id='L8012' name='L8012'&gt;&lt;/a&gt;% #1 is the element target macro
<a id='L8027' name='L8027'></a>&lt;a id='L8013' name='L8013'&gt;&lt;/a&gt;% #2 is the list macro
<a id='L8028' name='L8028'></a>&lt;a id='L8014' name='L8014'&gt;&lt;/a&gt;% #3,#4\endargs@ is the list value
<a id='L8029' name='L8029'></a>&lt;a id='L8015' name='L8015'&gt;&lt;/a&gt;\def\pop@#1#2#3,#4\endargs@{%
<a id='L8030' name='L8030'></a>&lt;a id='L8016' name='L8016'&gt;&lt;/a&gt;   \def#1{#3}%
<a id='L8031' name='L8031'></a>&lt;a id='L8017' name='L8017'&gt;&lt;/a&gt;   \def#2{#4}%
<a id='L8032' name='L8032'></a>&lt;a id='L8018' name='L8018'&gt;&lt;/a&gt;}
<a id='L8033' name='L8033'></a>&lt;a id='L8019' name='L8019'&gt;&lt;/a&gt;\long\def\longpop@#1#2#3,#4\endargs@{%
<a id='L8034' name='L8034'></a>&lt;a id='L8020' name='L8020'&gt;&lt;/a&gt;   \long\def#1{#3}%
<a id='L8035' name='L8035'></a>&lt;a id='L8021' name='L8021'&gt;&lt;/a&gt;   \long\def#2{#4}%
<a id='L8036' name='L8036'></a>&lt;a id='L8022' name='L8022'&gt;&lt;/a&gt;}
<a id='L8037' name='L8037'></a>&lt;a id='L8023' name='L8023'&gt;&lt;/a&gt;
<a id='L8038' name='L8038'></a>&lt;a id='L8024' name='L8024'&gt;&lt;/a&gt;% This defines a Texinfo @macro. There are eight cases: recursive and
<a id='L8039' name='L8039'></a>&lt;a id='L8025' name='L8025'&gt;&lt;/a&gt;% nonrecursive macros of zero, one, up to nine, and many arguments.
<a id='L8040' name='L8040'></a>&lt;a id='L8026' name='L8026'&gt;&lt;/a&gt;% Much magic with \expandafter here.
<a id='L8041' name='L8041'></a>&lt;a id='L8027' name='L8027'&gt;&lt;/a&gt;% \xdef is used so that macro definitions will survive the file
<a id='L8042' name='L8042'></a>&lt;a id='L8028' name='L8028'&gt;&lt;/a&gt;% they're defined in; @include reads the file inside a group.
<a id='L8043' name='L8043'></a>&lt;a id='L8029' name='L8029'&gt;&lt;/a&gt;%
<a id='L8044' name='L8044'></a>&lt;a id='L8030' name='L8030'&gt;&lt;/a&gt;\def\defmacro{%
<a id='L8045' name='L8045'></a>&lt;a id='L8031' name='L8031'&gt;&lt;/a&gt;  \let\hash=##% convert placeholders to macro parameter chars
<a id='L8046' name='L8046'></a>&lt;a id='L8032' name='L8032'&gt;&lt;/a&gt;  \ifrecursive
<a id='L8047' name='L8047'></a>&lt;a id='L8033' name='L8033'&gt;&lt;/a&gt;    \ifcase\paramno
<a id='L8048' name='L8048'></a>&lt;a id='L8034' name='L8034'&gt;&lt;/a&gt;    % 0
<a id='L8049' name='L8049'></a>&lt;a id='L8035' name='L8035'&gt;&lt;/a&gt;      \expandafter\xdef\csname\the\macname\endcsname{%
<a id='L8050' name='L8050'></a>&lt;a id='L8036' name='L8036'&gt;&lt;/a&gt;        \noexpand\scanmacro{\temp}}%
<a id='L8051' name='L8051'></a>&lt;a id='L8037' name='L8037'&gt;&lt;/a&gt;    \or % 1
<a id='L8052' name='L8052'></a>&lt;a id='L8038' name='L8038'&gt;&lt;/a&gt;      \expandafter\xdef\csname\the\macname\endcsname{%
<a id='L8053' name='L8053'></a>&lt;a id='L8039' name='L8039'&gt;&lt;/a&gt;         \bgroup\noexpand\macroargctxt
<a id='L8054' name='L8054'></a>&lt;a id='L8040' name='L8040'&gt;&lt;/a&gt;         \noexpand\braceorline
<a id='L8055' name='L8055'></a>&lt;a id='L8041' name='L8041'&gt;&lt;/a&gt;         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
<a id='L8056' name='L8056'></a>&lt;a id='L8042' name='L8042'&gt;&lt;/a&gt;      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
<a id='L8057' name='L8057'></a>&lt;a id='L8043' name='L8043'&gt;&lt;/a&gt;         \egroup\noexpand\scanmacro{\temp}}%
<a id='L8058' name='L8058'></a>&lt;a id='L8044' name='L8044'&gt;&lt;/a&gt;    \else
<a id='L8059' name='L8059'></a>&lt;a id='L8045' name='L8045'&gt;&lt;/a&gt;      \ifnum\paramno&amp;lt;10\relax % at most 9
<a id='L8060' name='L8060'></a>&lt;a id='L8046' name='L8046'&gt;&lt;/a&gt;        \expandafter\xdef\csname\the\macname\endcsname{%
<a id='L8061' name='L8061'></a>&lt;a id='L8047' name='L8047'&gt;&lt;/a&gt;           \bgroup\noexpand\macroargctxt
<a id='L8062' name='L8062'></a>&lt;a id='L8048' name='L8048'&gt;&lt;/a&gt;           \noexpand\csname\the\macname xx\endcsname}%
<a id='L8063' name='L8063'></a>&lt;a id='L8049' name='L8049'&gt;&lt;/a&gt;        \expandafter\xdef\csname\the\macname xx\endcsname##1{%
<a id='L8064' name='L8064'></a>&lt;a id='L8050' name='L8050'&gt;&lt;/a&gt;            \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
<a id='L8065' name='L8065'></a>&lt;a id='L8051' name='L8051'&gt;&lt;/a&gt;        \expandafter\expandafter
<a id='L8066' name='L8066'></a>&lt;a id='L8052' name='L8052'&gt;&lt;/a&gt;        \expandafter\xdef
<a id='L8067' name='L8067'></a>&lt;a id='L8053' name='L8053'&gt;&lt;/a&gt;        \expandafter\expandafter
<a id='L8068' name='L8068'></a>&lt;a id='L8054' name='L8054'&gt;&lt;/a&gt;          \csname\the\macname xxx\endcsname
<a id='L8069' name='L8069'></a>&lt;a id='L8055' name='L8055'&gt;&lt;/a&gt;            \paramlist{\egroup\noexpand\scanmacro{\temp}}%
<a id='L8070' name='L8070'></a>&lt;a id='L8056' name='L8056'&gt;&lt;/a&gt;      \else % 10 or more
<a id='L8071' name='L8071'></a>&lt;a id='L8057' name='L8057'&gt;&lt;/a&gt;        \expandafter\xdef\csname\the\macname\endcsname{%
<a id='L8072' name='L8072'></a>&lt;a id='L8058' name='L8058'&gt;&lt;/a&gt;          \noexpand\getargvals@{\the\macname}{\argl}%
<a id='L8073' name='L8073'></a>&lt;a id='L8059' name='L8059'&gt;&lt;/a&gt;        }%    
<a id='L8074' name='L8074'></a>&lt;a id='L8060' name='L8060'&gt;&lt;/a&gt;        \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
<a id='L8075' name='L8075'></a>&lt;a id='L8061' name='L8061'&gt;&lt;/a&gt;        \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble
<a id='L8076' name='L8076'></a>&lt;a id='L8062' name='L8062'&gt;&lt;/a&gt;      \fi
<a id='L8077' name='L8077'></a>&lt;a id='L8063' name='L8063'&gt;&lt;/a&gt;    \fi
<a id='L8078' name='L8078'></a>&lt;a id='L8064' name='L8064'&gt;&lt;/a&gt;  \else
<a id='L8079' name='L8079'></a>&lt;a id='L8065' name='L8065'&gt;&lt;/a&gt;    \ifcase\paramno
<a id='L8080' name='L8080'></a>&lt;a id='L8066' name='L8066'&gt;&lt;/a&gt;    % 0
<a id='L8081' name='L8081'></a>&lt;a id='L8067' name='L8067'&gt;&lt;/a&gt;      \expandafter\xdef\csname\the\macname\endcsname{%
<a id='L8082' name='L8082'></a>&lt;a id='L8068' name='L8068'&gt;&lt;/a&gt;        \noexpand\norecurse{\the\macname}%
<a id='L8083' name='L8083'></a>&lt;a id='L8069' name='L8069'&gt;&lt;/a&gt;        \noexpand\scanmacro{\temp}\egroup}%
<a id='L8084' name='L8084'></a>&lt;a id='L8070' name='L8070'&gt;&lt;/a&gt;    \or % 1
<a id='L8085' name='L8085'></a>&lt;a id='L8071' name='L8071'&gt;&lt;/a&gt;      \expandafter\xdef\csname\the\macname\endcsname{%
<a id='L8086' name='L8086'></a>&lt;a id='L8072' name='L8072'&gt;&lt;/a&gt;         \bgroup\noexpand\macroargctxt
<a id='L8087' name='L8087'></a>&lt;a id='L8073' name='L8073'&gt;&lt;/a&gt;         \noexpand\braceorline
<a id='L8088' name='L8088'></a>&lt;a id='L8074' name='L8074'&gt;&lt;/a&gt;         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
<a id='L8089' name='L8089'></a>&lt;a id='L8075' name='L8075'&gt;&lt;/a&gt;      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
<a id='L8090' name='L8090'></a>&lt;a id='L8076' name='L8076'&gt;&lt;/a&gt;        \egroup
<a id='L8091' name='L8091'></a>&lt;a id='L8077' name='L8077'&gt;&lt;/a&gt;        \noexpand\norecurse{\the\macname}%
<a id='L8092' name='L8092'></a>&lt;a id='L8078' name='L8078'&gt;&lt;/a&gt;        \noexpand\scanmacro{\temp}\egroup}%
<a id='L8093' name='L8093'></a>&lt;a id='L8079' name='L8079'&gt;&lt;/a&gt;    \else % at most 9
<a id='L8094' name='L8094'></a>&lt;a id='L8080' name='L8080'&gt;&lt;/a&gt;      \ifnum\paramno&amp;lt;10\relax
<a id='L8095' name='L8095'></a>&lt;a id='L8081' name='L8081'&gt;&lt;/a&gt;        \expandafter\xdef\csname\the\macname\endcsname{%
<a id='L8096' name='L8096'></a>&lt;a id='L8082' name='L8082'&gt;&lt;/a&gt;           \bgroup\noexpand\macroargctxt
<a id='L8097' name='L8097'></a>&lt;a id='L8083' name='L8083'&gt;&lt;/a&gt;           \expandafter\noexpand\csname\the\macname xx\endcsname}%
<a id='L8098' name='L8098'></a>&lt;a id='L8084' name='L8084'&gt;&lt;/a&gt;        \expandafter\xdef\csname\the\macname xx\endcsname##1{%
<a id='L8099' name='L8099'></a>&lt;a id='L8085' name='L8085'&gt;&lt;/a&gt;            \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
<a id='L8100' name='L8100'></a>&lt;a id='L8086' name='L8086'&gt;&lt;/a&gt;        \expandafter\expandafter
<a id='L8101' name='L8101'></a>&lt;a id='L8087' name='L8087'&gt;&lt;/a&gt;        \expandafter\xdef
<a id='L8102' name='L8102'></a>&lt;a id='L8088' name='L8088'&gt;&lt;/a&gt;        \expandafter\expandafter
<a id='L8103' name='L8103'></a>&lt;a id='L8089' name='L8089'&gt;&lt;/a&gt;        \csname\the\macname xxx\endcsname
<a id='L8104' name='L8104'></a>&lt;a id='L8090' name='L8090'&gt;&lt;/a&gt;        \paramlist{%
<a id='L8105' name='L8105'></a>&lt;a id='L8091' name='L8091'&gt;&lt;/a&gt;            \egroup
<a id='L8106' name='L8106'></a>&lt;a id='L8092' name='L8092'&gt;&lt;/a&gt;            \noexpand\norecurse{\the\macname}%
<a id='L8107' name='L8107'></a>&lt;a id='L8093' name='L8093'&gt;&lt;/a&gt;            \noexpand\scanmacro{\temp}\egroup}%
<a id='L8108' name='L8108'></a>&lt;a id='L8094' name='L8094'&gt;&lt;/a&gt;      \else % 10 or more:
<a id='L8109' name='L8109'></a>&lt;a id='L8095' name='L8095'&gt;&lt;/a&gt;        \expandafter\xdef\csname\the\macname\endcsname{%
<a id='L8110' name='L8110'></a>&lt;a id='L8096' name='L8096'&gt;&lt;/a&gt;          \noexpand\getargvals@{\the\macname}{\argl}%
<a id='L8111' name='L8111'></a>&lt;a id='L8097' name='L8097'&gt;&lt;/a&gt;        }%
<a id='L8112' name='L8112'></a>&lt;a id='L8098' name='L8098'&gt;&lt;/a&gt;        \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
<a id='L8113' name='L8113'></a>&lt;a id='L8099' name='L8099'&gt;&lt;/a&gt;        \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse
<a id='L8114' name='L8114'></a>&lt;a id='L8100' name='L8100'&gt;&lt;/a&gt;      \fi
<a id='L8115' name='L8115'></a>&lt;a id='L8101' name='L8101'&gt;&lt;/a&gt;    \fi
<a id='L8116' name='L8116'></a>&lt;a id='L8102' name='L8102'&gt;&lt;/a&gt;  \fi}
<a id='L8117' name='L8117'></a>&lt;a id='L8103' name='L8103'&gt;&lt;/a&gt;
<a id='L8118' name='L8118'></a>&lt;a id='L8104' name='L8104'&gt;&lt;/a&gt;\catcode `\@\texiatcatcode\relax
<a id='L8119' name='L8119'></a>&lt;a id='L8105' name='L8105'&gt;&lt;/a&gt;
<a id='L8120' name='L8120'></a>&lt;a id='L8106' name='L8106'&gt;&lt;/a&gt;\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
<a id='L8121' name='L8121'></a>&lt;a id='L8107' name='L8107'&gt;&lt;/a&gt;
<a id='L8122' name='L8122'></a>&lt;a id='L8108' name='L8108'&gt;&lt;/a&gt;% \braceorline decides whether the next nonwhitespace character is a
<a id='L8123' name='L8123'></a>&lt;a id='L8109' name='L8109'&gt;&lt;/a&gt;% {.  If so it reads up to the closing }, if not, it reads the whole
<a id='L8124' name='L8124'></a>&lt;a id='L8110' name='L8110'&gt;&lt;/a&gt;% line.  Whatever was read is then fed to the next control sequence
<a id='L8125' name='L8125'></a>&lt;a id='L8111' name='L8111'&gt;&lt;/a&gt;% as an argument (by \parsebrace or \parsearg).
<a id='L8126' name='L8126'></a>&lt;a id='L8112' name='L8112'&gt;&lt;/a&gt;% 
<a id='L8127' name='L8127'></a>&lt;a id='L8113' name='L8113'&gt;&lt;/a&gt;\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
<a id='L8128' name='L8128'></a>&lt;a id='L8114' name='L8114'&gt;&lt;/a&gt;\def\braceorlinexxx{%
<a id='L8129' name='L8129'></a>&lt;a id='L8115' name='L8115'&gt;&lt;/a&gt;  \ifx\nchar\bgroup\else
<a id='L8130' name='L8130'></a>&lt;a id='L8116' name='L8116'&gt;&lt;/a&gt;    \expandafter\parsearg
<a id='L8131' name='L8131'></a>&lt;a id='L8117' name='L8117'&gt;&lt;/a&gt;  \fi \macnamexxx}
<a id='L8132' name='L8132'></a>&lt;a id='L8118' name='L8118'&gt;&lt;/a&gt;
<a id='L8133' name='L8133'></a>&lt;a id='L8119' name='L8119'&gt;&lt;/a&gt;
<a id='L8134' name='L8134'></a>&lt;a id='L8120' name='L8120'&gt;&lt;/a&gt;% @alias.
<a id='L8135' name='L8135'></a>&lt;a id='L8121' name='L8121'&gt;&lt;/a&gt;% We need some trickery to remove the optional spaces around the equal
<a id='L8136' name='L8136'></a>&lt;a id='L8122' name='L8122'&gt;&lt;/a&gt;% sign.  Make them active and then expand them all to nothing.
<a id='L8137' name='L8137'></a>&lt;a id='L8123' name='L8123'&gt;&lt;/a&gt;%
<a id='L8138' name='L8138'></a>&lt;a id='L8124' name='L8124'&gt;&lt;/a&gt;\def\alias{\parseargusing\obeyspaces\aliasxxx}
<a id='L8139' name='L8139'></a>&lt;a id='L8125' name='L8125'&gt;&lt;/a&gt;\def\aliasxxx #1{\aliasyyy#1\relax}
<a id='L8140' name='L8140'></a>&lt;a id='L8126' name='L8126'&gt;&lt;/a&gt;\def\aliasyyy #1=#2\relax{%
<a id='L8141' name='L8141'></a>&lt;a id='L8127' name='L8127'&gt;&lt;/a&gt;  {%
<a id='L8142' name='L8142'></a>&lt;a id='L8128' name='L8128'&gt;&lt;/a&gt;    \expandafter\let\obeyedspace=\empty
<a id='L8143' name='L8143'></a>&lt;a id='L8129' name='L8129'&gt;&lt;/a&gt;    \addtomacrolist{#1}%
<a id='L8144' name='L8144'></a>&lt;a id='L8130' name='L8130'&gt;&lt;/a&gt;    \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
<a id='L8145' name='L8145'></a>&lt;a id='L8131' name='L8131'&gt;&lt;/a&gt;  }%
<a id='L8146' name='L8146'></a>&lt;a id='L8132' name='L8132'&gt;&lt;/a&gt;  \next
<a id='L8147' name='L8147'></a>&lt;a id='L8133' name='L8133'&gt;&lt;/a&gt;}
<a id='L8148' name='L8148'></a>&lt;a id='L8134' name='L8134'&gt;&lt;/a&gt;
<a id='L8149' name='L8149'></a>&lt;a id='L8135' name='L8135'&gt;&lt;/a&gt;
<a id='L8150' name='L8150'></a>&lt;a id='L8136' name='L8136'&gt;&lt;/a&gt;\message{cross references,}
<a id='L8151' name='L8151'></a>&lt;a id='L8137' name='L8137'&gt;&lt;/a&gt;
<a id='L8152' name='L8152'></a>&lt;a id='L8138' name='L8138'&gt;&lt;/a&gt;\newwrite\auxfile
<a id='L8153' name='L8153'></a>&lt;a id='L8139' name='L8139'&gt;&lt;/a&gt;\newif\ifhavexrefs    % True if xref values are known.
<a id='L8154' name='L8154'></a>&lt;a id='L8140' name='L8140'&gt;&lt;/a&gt;\newif\ifwarnedxrefs  % True if we warned once that they aren't known.
<a id='L8155' name='L8155'></a>&lt;a id='L8141' name='L8141'&gt;&lt;/a&gt;
<a id='L8156' name='L8156'></a>&lt;a id='L8142' name='L8142'&gt;&lt;/a&gt;% @inforef is relatively simple.
<a id='L8157' name='L8157'></a>&lt;a id='L8143' name='L8143'&gt;&lt;/a&gt;\def\inforef #1{\inforefzzz #1,,,,**}
<a id='L8158' name='L8158'></a>&lt;a id='L8144' name='L8144'&gt;&lt;/a&gt;\def\inforefzzz #1,#2,#3,#4**{%
<a id='L8159' name='L8159'></a>&lt;a id='L8145' name='L8145'&gt;&lt;/a&gt;  \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
<a id='L8160' name='L8160'></a>&lt;a id='L8146' name='L8146'&gt;&lt;/a&gt;  node \samp{\ignorespaces#1{}}}
<a id='L8161' name='L8161'></a>&lt;a id='L8147' name='L8147'&gt;&lt;/a&gt;
<a id='L8162' name='L8162'></a>&lt;a id='L8148' name='L8148'&gt;&lt;/a&gt;% @node's only job in TeX is to define \lastnode, which is used in
<a id='L8163' name='L8163'></a>&lt;a id='L8149' name='L8149'&gt;&lt;/a&gt;% cross-references.  The @node line might or might not have commas, and
<a id='L8164' name='L8164'></a>&lt;a id='L8150' name='L8150'&gt;&lt;/a&gt;% might or might not have spaces before the first comma, like:
<a id='L8165' name='L8165'></a>&lt;a id='L8151' name='L8151'&gt;&lt;/a&gt;% @node foo , bar , ...
<a id='L8166' name='L8166'></a>&lt;a id='L8152' name='L8152'&gt;&lt;/a&gt;% We don't want such trailing spaces in the node name.
<a id='L8167' name='L8167'></a>&lt;a id='L8153' name='L8153'&gt;&lt;/a&gt;%
<a id='L8168' name='L8168'></a>&lt;a id='L8154' name='L8154'&gt;&lt;/a&gt;\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse}
<a id='L8169' name='L8169'></a>&lt;a id='L8155' name='L8155'&gt;&lt;/a&gt;%
<a id='L8170' name='L8170'></a>&lt;a id='L8156' name='L8156'&gt;&lt;/a&gt;% also remove a trailing comma, in case of something like this:
<a id='L8171' name='L8171'></a>&lt;a id='L8157' name='L8157'&gt;&lt;/a&gt;% @node Help-Cross,  ,  , Cross-refs
<a id='L8172' name='L8172'></a>&lt;a id='L8158' name='L8158'&gt;&lt;/a&gt;\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse}
<a id='L8173' name='L8173'></a>&lt;a id='L8159' name='L8159'&gt;&lt;/a&gt;\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}}
<a id='L8174' name='L8174'></a>&lt;a id='L8160' name='L8160'&gt;&lt;/a&gt;
<a id='L8175' name='L8175'></a>&lt;a id='L8161' name='L8161'&gt;&lt;/a&gt;\let\nwnode=\node
<a id='L8176' name='L8176'></a>&lt;a id='L8162' name='L8162'&gt;&lt;/a&gt;\let\lastnode=\empty
<a id='L8177' name='L8177'></a>&lt;a id='L8163' name='L8163'&gt;&lt;/a&gt;
<a id='L8178' name='L8178'></a>&lt;a id='L8164' name='L8164'&gt;&lt;/a&gt;% Write a cross-reference definition for the current node.  #1 is the
<a id='L8179' name='L8179'></a>&lt;a id='L8165' name='L8165'&gt;&lt;/a&gt;% type (Ynumbered, Yappendix, Ynothing).
<a id='L8180' name='L8180'></a>&lt;a id='L8166' name='L8166'&gt;&lt;/a&gt;%
<a id='L8181' name='L8181'></a>&lt;a id='L8167' name='L8167'&gt;&lt;/a&gt;\def\donoderef#1{%
<a id='L8182' name='L8182'></a>&lt;a id='L8168' name='L8168'&gt;&lt;/a&gt;  \ifx\lastnode\empty\else
<a id='L8183' name='L8183'></a>&lt;a id='L8169' name='L8169'&gt;&lt;/a&gt;    \setref{\lastnode}{#1}%
<a id='L8184' name='L8184'></a>&lt;a id='L8170' name='L8170'&gt;&lt;/a&gt;    \global\let\lastnode=\empty
<a id='L8185' name='L8185'></a>&lt;a id='L8171' name='L8171'&gt;&lt;/a&gt;  \fi
<a id='L8186' name='L8186'></a>&lt;a id='L8172' name='L8172'&gt;&lt;/a&gt;}
<a id='L8187' name='L8187'></a>&lt;a id='L8173' name='L8173'&gt;&lt;/a&gt;
<a id='L8188' name='L8188'></a>&lt;a id='L8174' name='L8174'&gt;&lt;/a&gt;% @anchor{NAME} -- define xref target at arbitrary point.
<a id='L8189' name='L8189'></a>&lt;a id='L8175' name='L8175'&gt;&lt;/a&gt;%
<a id='L8190' name='L8190'></a>&lt;a id='L8176' name='L8176'&gt;&lt;/a&gt;\newcount\savesfregister
<a id='L8191' name='L8191'></a>&lt;a id='L8177' name='L8177'&gt;&lt;/a&gt;%
<a id='L8192' name='L8192'></a>&lt;a id='L8178' name='L8178'&gt;&lt;/a&gt;\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
<a id='L8193' name='L8193'></a>&lt;a id='L8179' name='L8179'&gt;&lt;/a&gt;\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
<a id='L8194' name='L8194'></a>&lt;a id='L8180' name='L8180'&gt;&lt;/a&gt;\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
<a id='L8195' name='L8195'></a>&lt;a id='L8181' name='L8181'&gt;&lt;/a&gt;
<a id='L8196' name='L8196'></a>&lt;a id='L8182' name='L8182'&gt;&lt;/a&gt;% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
<a id='L8197' name='L8197'></a>&lt;a id='L8183' name='L8183'&gt;&lt;/a&gt;% anchor), which consists of three parts:
<a id='L8198' name='L8198'></a>&lt;a id='L8184' name='L8184'&gt;&lt;/a&gt;% 1) NAME-title - the current sectioning name taken from \lastsection,
<a id='L8199' name='L8199'></a>&lt;a id='L8185' name='L8185'&gt;&lt;/a&gt;%                 or the anchor name.
<a id='L8200' name='L8200'></a>&lt;a id='L8186' name='L8186'&gt;&lt;/a&gt;% 2) NAME-snt   - section number and type, passed as the SNT arg, or
<a id='L8201' name='L8201'></a>&lt;a id='L8187' name='L8187'&gt;&lt;/a&gt;%                 empty for anchors.
<a id='L8202' name='L8202'></a>&lt;a id='L8188' name='L8188'&gt;&lt;/a&gt;% 3) NAME-pg    - the page number.
<a id='L8203' name='L8203'></a>&lt;a id='L8189' name='L8189'&gt;&lt;/a&gt;%
<a id='L8204' name='L8204'></a>&lt;a id='L8190' name='L8190'&gt;&lt;/a&gt;% This is called from \donoderef, \anchor, and \dofloat.  In the case of
<a id='L8205' name='L8205'></a>&lt;a id='L8191' name='L8191'&gt;&lt;/a&gt;% floats, there is an additional part, which is not written here:
<a id='L8206' name='L8206'></a>&lt;a id='L8192' name='L8192'&gt;&lt;/a&gt;% 4) NAME-lof   - the text as it should appear in a @listoffloats.
<a id='L8207' name='L8207'></a>&lt;a id='L8193' name='L8193'&gt;&lt;/a&gt;%
<a id='L8208' name='L8208'></a>&lt;a id='L8194' name='L8194'&gt;&lt;/a&gt;\def\setref#1#2{%
<a id='L8209' name='L8209'></a>&lt;a id='L8195' name='L8195'&gt;&lt;/a&gt;  \pdfmkdest{#1}%
<a id='L8210' name='L8210'></a>&lt;a id='L8196' name='L8196'&gt;&lt;/a&gt;  \iflinks
<a id='L8211' name='L8211'></a>&lt;a id='L8197' name='L8197'&gt;&lt;/a&gt;    {%
<a id='L8212' name='L8212'></a>&lt;a id='L8198' name='L8198'&gt;&lt;/a&gt;      \atdummies  % preserve commands, but don't expand them
<a id='L8213' name='L8213'></a>&lt;a id='L8199' name='L8199'&gt;&lt;/a&gt;      \edef\writexrdef##1##2{%
<a id='L8214' name='L8214'></a>&lt;a id='L8200' name='L8200'&gt;&lt;/a&gt;        \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
<a id='L8215' name='L8215'></a>&lt;a id='L8201' name='L8201'&gt;&lt;/a&gt;          ##1}{##2}}% these are parameters of \writexrdef
<a id='L8216' name='L8216'></a>&lt;a id='L8202' name='L8202'&gt;&lt;/a&gt;      }%
<a id='L8217' name='L8217'></a>&lt;a id='L8203' name='L8203'&gt;&lt;/a&gt;      \toks0 = \expandafter{\lastsection}%
<a id='L8218' name='L8218'></a>&lt;a id='L8204' name='L8204'&gt;&lt;/a&gt;      \immediate \writexrdef{title}{\the\toks0 }%
<a id='L8219' name='L8219'></a>&lt;a id='L8205' name='L8205'&gt;&lt;/a&gt;      \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
<a id='L8220' name='L8220'></a>&lt;a id='L8206' name='L8206'&gt;&lt;/a&gt;      \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout
<a id='L8221' name='L8221'></a>&lt;a id='L8207' name='L8207'&gt;&lt;/a&gt;    }%
<a id='L8222' name='L8222'></a>&lt;a id='L8208' name='L8208'&gt;&lt;/a&gt;  \fi
<a id='L8223' name='L8223'></a>&lt;a id='L8209' name='L8209'&gt;&lt;/a&gt;}
<a id='L8224' name='L8224'></a>&lt;a id='L8210' name='L8210'&gt;&lt;/a&gt;
<a id='L8225' name='L8225'></a>&lt;a id='L8211' name='L8211'&gt;&lt;/a&gt;% @xrefautosectiontitle on|off says whether @section(ing) names are used
<a id='L8226' name='L8226'></a>&lt;a id='L8212' name='L8212'&gt;&lt;/a&gt;% automatically in xrefs, if the third arg is not explicitly specified.
<a id='L8227' name='L8227'></a>&lt;a id='L8213' name='L8213'&gt;&lt;/a&gt;% This was provided as a "secret" @set xref-automatic-section-title
<a id='L8228' name='L8228'></a>&lt;a id='L8214' name='L8214'&gt;&lt;/a&gt;% variable, now it's official.
<a id='L8229' name='L8229'></a>&lt;a id='L8215' name='L8215'&gt;&lt;/a&gt;% 
<a id='L8230' name='L8230'></a>&lt;a id='L8216' name='L8216'&gt;&lt;/a&gt;\parseargdef\xrefautomaticsectiontitle{%
<a id='L8231' name='L8231'></a>&lt;a id='L8217' name='L8217'&gt;&lt;/a&gt;  \def\temp{#1}%
<a id='L8232' name='L8232'></a>&lt;a id='L8218' name='L8218'&gt;&lt;/a&gt;  \ifx\temp\onword
<a id='L8233' name='L8233'></a>&lt;a id='L8219' name='L8219'&gt;&lt;/a&gt;    \expandafter\let\csname SETxref-automatic-section-title\endcsname
<a id='L8234' name='L8234'></a>&lt;a id='L8220' name='L8220'&gt;&lt;/a&gt;      = \empty
<a id='L8235' name='L8235'></a>&lt;a id='L8221' name='L8221'&gt;&lt;/a&gt;  \else\ifx\temp\offword
<a id='L8236' name='L8236'></a>&lt;a id='L8222' name='L8222'&gt;&lt;/a&gt;    \expandafter\let\csname SETxref-automatic-section-title\endcsname
<a id='L8237' name='L8237'></a>&lt;a id='L8223' name='L8223'&gt;&lt;/a&gt;      = \relax
<a id='L8238' name='L8238'></a>&lt;a id='L8224' name='L8224'&gt;&lt;/a&gt;  \else
<a id='L8239' name='L8239'></a>&lt;a id='L8225' name='L8225'&gt;&lt;/a&gt;    \errhelp = \EMsimple
<a id='L8240' name='L8240'></a>&lt;a id='L8226' name='L8226'&gt;&lt;/a&gt;    \errmessage{Unknown @xrefautomaticsectiontitle value `\temp',
<a id='L8241' name='L8241'></a>&lt;a id='L8227' name='L8227'&gt;&lt;/a&gt;                must be on|off}%
<a id='L8242' name='L8242'></a>&lt;a id='L8228' name='L8228'&gt;&lt;/a&gt;  \fi\fi
<a id='L8243' name='L8243'></a>&lt;a id='L8229' name='L8229'&gt;&lt;/a&gt;}
<a id='L8244' name='L8244'></a>&lt;a id='L8230' name='L8230'&gt;&lt;/a&gt;
<a id='L8245' name='L8245'></a>&lt;a id='L8231' name='L8231'&gt;&lt;/a&gt;% 
<a id='L8246' name='L8246'></a>&lt;a id='L8232' name='L8232'&gt;&lt;/a&gt;% @xref, @pxref, and @ref generate cross-references.  For \xrefX, #1 is
<a id='L8247' name='L8247'></a>&lt;a id='L8233' name='L8233'&gt;&lt;/a&gt;% the node name, #2 the name of the Info cross-reference, #3 the printed
<a id='L8248' name='L8248'></a>&lt;a id='L8234' name='L8234'&gt;&lt;/a&gt;% node name, #4 the name of the Info file, #5 the name of the printed
<a id='L8249' name='L8249'></a>&lt;a id='L8235' name='L8235'&gt;&lt;/a&gt;% manual.  All but the node name can be omitted.
<a id='L8250' name='L8250'></a>&lt;a id='L8236' name='L8236'&gt;&lt;/a&gt;%
<a id='L8251' name='L8251'></a>&lt;a id='L8237' name='L8237'&gt;&lt;/a&gt;\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
<a id='L8252' name='L8252'></a>&lt;a id='L8238' name='L8238'&gt;&lt;/a&gt;\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
<a id='L8253' name='L8253'></a>&lt;a id='L8239' name='L8239'&gt;&lt;/a&gt;\def\ref#1{\xrefX[#1,,,,,,,]}
<a id='L8254' name='L8254'></a>&lt;a id='L8240' name='L8240'&gt;&lt;/a&gt;%
<a id='L8255' name='L8255'></a>&lt;a id='L8241' name='L8241'&gt;&lt;/a&gt;\newbox\toprefbox
<a id='L8256' name='L8256'></a>&lt;a id='L8242' name='L8242'&gt;&lt;/a&gt;\newbox\printedrefnamebox
<a id='L8257' name='L8257'></a>&lt;a id='L8243' name='L8243'&gt;&lt;/a&gt;\newbox\infofilenamebox
<a id='L8258' name='L8258'></a>&lt;a id='L8244' name='L8244'&gt;&lt;/a&gt;\newbox\printedmanualbox
<a id='L8259' name='L8259'></a>&lt;a id='L8245' name='L8245'&gt;&lt;/a&gt;%
<a id='L8260' name='L8260'></a>&lt;a id='L8246' name='L8246'&gt;&lt;/a&gt;\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
<a id='L8261' name='L8261'></a>&lt;a id='L8247' name='L8247'&gt;&lt;/a&gt;  \unsepspaces
<a id='L8262' name='L8262'></a>&lt;a id='L8248' name='L8248'&gt;&lt;/a&gt;  %
<a id='L8263' name='L8263'></a>&lt;a id='L8249' name='L8249'&gt;&lt;/a&gt;  % Get args without leading/trailing spaces.
<a id='L8264' name='L8264'></a>&lt;a id='L8250' name='L8250'&gt;&lt;/a&gt;  \def\printedrefname{\ignorespaces #3}%
<a id='L8265' name='L8265'></a>&lt;a id='L8251' name='L8251'&gt;&lt;/a&gt;  \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}%
<a id='L8266' name='L8266'></a>&lt;a id='L8252' name='L8252'&gt;&lt;/a&gt;  %
<a id='L8267' name='L8267'></a>&lt;a id='L8253' name='L8253'&gt;&lt;/a&gt;  \def\infofilename{\ignorespaces #4}%
<a id='L8268' name='L8268'></a>&lt;a id='L8254' name='L8254'&gt;&lt;/a&gt;  \setbox\infofilenamebox = \hbox{\infofilename\unskip}%
<a id='L8269' name='L8269'></a>&lt;a id='L8255' name='L8255'&gt;&lt;/a&gt;  %
<a id='L8270' name='L8270'></a>&lt;a id='L8256' name='L8256'&gt;&lt;/a&gt;  \def\printedmanual{\ignorespaces #5}%
<a id='L8271' name='L8271'></a>&lt;a id='L8257' name='L8257'&gt;&lt;/a&gt;  \setbox\printedmanualbox  = \hbox{\printedmanual\unskip}%
<a id='L8272' name='L8272'></a>&lt;a id='L8258' name='L8258'&gt;&lt;/a&gt;  %
<a id='L8273' name='L8273'></a>&lt;a id='L8259' name='L8259'&gt;&lt;/a&gt;  % If the printed reference name (arg #3) was not explicitly given in
<a id='L8274' name='L8274'></a>&lt;a id='L8260' name='L8260'&gt;&lt;/a&gt;  % the @xref, figure out what we want to use.
<a id='L8275' name='L8275'></a>&lt;a id='L8261' name='L8261'&gt;&lt;/a&gt;  \ifdim \wd\printedrefnamebox = 0pt
<a id='L8276' name='L8276'></a>&lt;a id='L8262' name='L8262'&gt;&lt;/a&gt;    % No printed node name was explicitly given.
<a id='L8277' name='L8277'></a>&lt;a id='L8263' name='L8263'&gt;&lt;/a&gt;    \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax
<a id='L8278' name='L8278'></a>&lt;a id='L8264' name='L8264'&gt;&lt;/a&gt;      % Not auto section-title: use node name inside the square brackets.
<a id='L8279' name='L8279'></a>&lt;a id='L8265' name='L8265'&gt;&lt;/a&gt;      \def\printedrefname{\ignorespaces #1}%
<a id='L8280' name='L8280'></a>&lt;a id='L8266' name='L8266'&gt;&lt;/a&gt;    \else
<a id='L8281' name='L8281'></a>&lt;a id='L8267' name='L8267'&gt;&lt;/a&gt;      % Auto section-title: use chapter/section title inside
<a id='L8282' name='L8282'></a>&lt;a id='L8268' name='L8268'&gt;&lt;/a&gt;      % the square brackets if we have it.
<a id='L8283' name='L8283'></a>&lt;a id='L8269' name='L8269'&gt;&lt;/a&gt;      \ifdim \wd\printedmanualbox &amp;gt; 0pt
<a id='L8284' name='L8284'></a>&lt;a id='L8270' name='L8270'&gt;&lt;/a&gt;        % It is in another manual, so we don't have it; use node name.
<a id='L8285' name='L8285'></a>&lt;a id='L8271' name='L8271'&gt;&lt;/a&gt;        \def\printedrefname{\ignorespaces #1}%
<a id='L8286' name='L8286'></a>&lt;a id='L8272' name='L8272'&gt;&lt;/a&gt;      \else
<a id='L8287' name='L8287'></a>&lt;a id='L8273' name='L8273'&gt;&lt;/a&gt;        \ifhavexrefs
<a id='L8288' name='L8288'></a>&lt;a id='L8274' name='L8274'&gt;&lt;/a&gt;          % We (should) know the real title if we have the xref values.
<a id='L8289' name='L8289'></a>&lt;a id='L8275' name='L8275'&gt;&lt;/a&gt;          \def\printedrefname{\refx{#1-title}{}}%
<a id='L8290' name='L8290'></a>&lt;a id='L8276' name='L8276'&gt;&lt;/a&gt;        \else
<a id='L8291' name='L8291'></a>&lt;a id='L8277' name='L8277'&gt;&lt;/a&gt;          % Otherwise just copy the Info node name.
<a id='L8292' name='L8292'></a>&lt;a id='L8278' name='L8278'&gt;&lt;/a&gt;          \def\printedrefname{\ignorespaces #1}%
<a id='L8293' name='L8293'></a>&lt;a id='L8279' name='L8279'&gt;&lt;/a&gt;        \fi%
<a id='L8294' name='L8294'></a>&lt;a id='L8280' name='L8280'&gt;&lt;/a&gt;      \fi
<a id='L8295' name='L8295'></a>&lt;a id='L8281' name='L8281'&gt;&lt;/a&gt;    \fi
<a id='L8296' name='L8296'></a>&lt;a id='L8282' name='L8282'&gt;&lt;/a&gt;  \fi
<a id='L8297' name='L8297'></a>&lt;a id='L8283' name='L8283'&gt;&lt;/a&gt;  %
<a id='L8298' name='L8298'></a>&lt;a id='L8284' name='L8284'&gt;&lt;/a&gt;  % Make link in pdf output.
<a id='L8299' name='L8299'></a>&lt;a id='L8285' name='L8285'&gt;&lt;/a&gt;  \ifpdf
<a id='L8300' name='L8300'></a>&lt;a id='L8286' name='L8286'&gt;&lt;/a&gt;    {\indexnofonts
<a id='L8301' name='L8301'></a>&lt;a id='L8287' name='L8287'&gt;&lt;/a&gt;     \turnoffactive
<a id='L8302' name='L8302'></a>&lt;a id='L8288' name='L8288'&gt;&lt;/a&gt;     \makevalueexpandable
<a id='L8303' name='L8303'></a>&lt;a id='L8289' name='L8289'&gt;&lt;/a&gt;     % This expands tokens, so do it after making catcode changes, so _
<a id='L8304' name='L8304'></a>&lt;a id='L8290' name='L8290'&gt;&lt;/a&gt;     % etc. don't get their TeX definitions.  This ignores all spaces in
<a id='L8305' name='L8305'></a>&lt;a id='L8291' name='L8291'&gt;&lt;/a&gt;     % #4, including (wrongly) those in the middle of the filename.
<a id='L8306' name='L8306'></a>&lt;a id='L8292' name='L8292'&gt;&lt;/a&gt;     \getfilename{#4}%
<a id='L8307' name='L8307'></a>&lt;a id='L8293' name='L8293'&gt;&lt;/a&gt;     %
<a id='L8308' name='L8308'></a>&lt;a id='L8294' name='L8294'&gt;&lt;/a&gt;     % This (wrongly) does not take account of leading or trailing
<a id='L8309' name='L8309'></a>&lt;a id='L8295' name='L8295'&gt;&lt;/a&gt;     % spaces in #1, which should be ignored.
<a id='L8310' name='L8310'></a>&lt;a id='L8296' name='L8296'&gt;&lt;/a&gt;     \edef\pdfxrefdest{#1}%
<a id='L8311' name='L8311'></a>&lt;a id='L8297' name='L8297'&gt;&lt;/a&gt;     \ifx\pdfxrefdest\empty
<a id='L8312' name='L8312'></a>&lt;a id='L8298' name='L8298'&gt;&lt;/a&gt;       \def\pdfxrefdest{Top}% no empty targets
<a id='L8313' name='L8313'></a>&lt;a id='L8299' name='L8299'&gt;&lt;/a&gt;     \else
<a id='L8314' name='L8314'></a>&lt;a id='L8300' name='L8300'&gt;&lt;/a&gt;       \txiescapepdf\pdfxrefdest  % escape PDF special chars
<a id='L8315' name='L8315'></a>&lt;a id='L8301' name='L8301'&gt;&lt;/a&gt;     \fi
<a id='L8316' name='L8316'></a>&lt;a id='L8302' name='L8302'&gt;&lt;/a&gt;     %
<a id='L8317' name='L8317'></a>&lt;a id='L8303' name='L8303'&gt;&lt;/a&gt;     \leavevmode
<a id='L8318' name='L8318'></a>&lt;a id='L8304' name='L8304'&gt;&lt;/a&gt;     \startlink attr{/Border [0 0 0]}%
<a id='L8319' name='L8319'></a>&lt;a id='L8305' name='L8305'&gt;&lt;/a&gt;     \ifnum\filenamelength&amp;gt;0
<a id='L8320' name='L8320'></a>&lt;a id='L8306' name='L8306'&gt;&lt;/a&gt;       goto file{\the\filename.pdf} name{\pdfxrefdest}%
<a id='L8321' name='L8321'></a>&lt;a id='L8307' name='L8307'&gt;&lt;/a&gt;     \else
<a id='L8322' name='L8322'></a>&lt;a id='L8308' name='L8308'&gt;&lt;/a&gt;       goto name{\pdfmkpgn{\pdfxrefdest}}%
<a id='L8323' name='L8323'></a>&lt;a id='L8309' name='L8309'&gt;&lt;/a&gt;     \fi
<a id='L8324' name='L8324'></a>&lt;a id='L8310' name='L8310'&gt;&lt;/a&gt;    }%
<a id='L8325' name='L8325'></a>&lt;a id='L8311' name='L8311'&gt;&lt;/a&gt;    \setcolor{\linkcolor}%
<a id='L8326' name='L8326'></a>&lt;a id='L8312' name='L8312'&gt;&lt;/a&gt;  \fi
<a id='L8327' name='L8327'></a>&lt;a id='L8313' name='L8313'&gt;&lt;/a&gt;  %
<a id='L8328' name='L8328'></a>&lt;a id='L8314' name='L8314'&gt;&lt;/a&gt;  % Float references are printed completely differently: "Figure 1.2"
<a id='L8329' name='L8329'></a>&lt;a id='L8315' name='L8315'&gt;&lt;/a&gt;  % instead of "[somenode], p.3".  We distinguish them by the
<a id='L8330' name='L8330'></a>&lt;a id='L8316' name='L8316'&gt;&lt;/a&gt;  % LABEL-title being set to a magic string.
<a id='L8331' name='L8331'></a>&lt;a id='L8317' name='L8317'&gt;&lt;/a&gt;  {%
<a id='L8332' name='L8332'></a>&lt;a id='L8318' name='L8318'&gt;&lt;/a&gt;    % Have to otherify everything special to allow the \csname to
<a id='L8333' name='L8333'></a>&lt;a id='L8319' name='L8319'&gt;&lt;/a&gt;    % include an _ in the xref name, etc.
<a id='L8334' name='L8334'></a>&lt;a id='L8320' name='L8320'&gt;&lt;/a&gt;    \indexnofonts
<a id='L8335' name='L8335'></a>&lt;a id='L8321' name='L8321'&gt;&lt;/a&gt;    \turnoffactive
<a id='L8336' name='L8336'></a>&lt;a id='L8322' name='L8322'&gt;&lt;/a&gt;    \expandafter\global\expandafter\let\expandafter\Xthisreftitle
<a id='L8337' name='L8337'></a>&lt;a id='L8323' name='L8323'&gt;&lt;/a&gt;      \csname XR#1-title\endcsname
<a id='L8338' name='L8338'></a>&lt;a id='L8324' name='L8324'&gt;&lt;/a&gt;  }%
<a id='L8339' name='L8339'></a>&lt;a id='L8325' name='L8325'&gt;&lt;/a&gt;  \iffloat\Xthisreftitle
<a id='L8340' name='L8340'></a>&lt;a id='L8326' name='L8326'&gt;&lt;/a&gt;    % If the user specified the print name (third arg) to the ref,
<a id='L8341' name='L8341'></a>&lt;a id='L8327' name='L8327'&gt;&lt;/a&gt;    % print it instead of our usual "Figure 1.2".
<a id='L8342' name='L8342'></a>&lt;a id='L8328' name='L8328'&gt;&lt;/a&gt;    \ifdim\wd\printedrefnamebox = 0pt
<a id='L8343' name='L8343'></a>&lt;a id='L8329' name='L8329'&gt;&lt;/a&gt;      \refx{#1-snt}{}%
<a id='L8344' name='L8344'></a>&lt;a id='L8330' name='L8330'&gt;&lt;/a&gt;    \else
<a id='L8345' name='L8345'></a>&lt;a id='L8331' name='L8331'&gt;&lt;/a&gt;      \printedrefname
<a id='L8346' name='L8346'></a>&lt;a id='L8332' name='L8332'&gt;&lt;/a&gt;    \fi
<a id='L8347' name='L8347'></a>&lt;a id='L8333' name='L8333'&gt;&lt;/a&gt;    %
<a id='L8348' name='L8348'></a>&lt;a id='L8334' name='L8334'&gt;&lt;/a&gt;    % If the user also gave the printed manual name (fifth arg), append
<a id='L8349' name='L8349'></a>&lt;a id='L8335' name='L8335'&gt;&lt;/a&gt;    % "in MANUALNAME".
<a id='L8350' name='L8350'></a>&lt;a id='L8336' name='L8336'&gt;&lt;/a&gt;    \ifdim \wd\printedmanualbox &amp;gt; 0pt
<a id='L8351' name='L8351'></a>&lt;a id='L8337' name='L8337'&gt;&lt;/a&gt;      \space \putwordin{} \cite{\printedmanual}%
<a id='L8352' name='L8352'></a>&lt;a id='L8338' name='L8338'&gt;&lt;/a&gt;    \fi
<a id='L8353' name='L8353'></a>&lt;a id='L8339' name='L8339'&gt;&lt;/a&gt;  \else
<a id='L8354' name='L8354'></a>&lt;a id='L8340' name='L8340'&gt;&lt;/a&gt;    % node/anchor (non-float) references.
<a id='L8355' name='L8355'></a>&lt;a id='L8341' name='L8341'&gt;&lt;/a&gt;    % 
<a id='L8356' name='L8356'></a>&lt;a id='L8342' name='L8342'&gt;&lt;/a&gt;    % If we use \unhbox to print the node names, TeX does not insert
<a id='L8357' name='L8357'></a>&lt;a id='L8343' name='L8343'&gt;&lt;/a&gt;    % empty discretionaries after hyphens, which means that it will not
<a id='L8358' name='L8358'></a>&lt;a id='L8344' name='L8344'&gt;&lt;/a&gt;    % find a line break at a hyphen in a node names.  Since some manuals
<a id='L8359' name='L8359'></a>&lt;a id='L8345' name='L8345'&gt;&lt;/a&gt;    % are best written with fairly long node names, containing hyphens,
<a id='L8360' name='L8360'></a>&lt;a id='L8346' name='L8346'&gt;&lt;/a&gt;    % this is a loss.  Therefore, we give the text of the node name
<a id='L8361' name='L8361'></a>&lt;a id='L8347' name='L8347'&gt;&lt;/a&gt;    % again, so it is as if TeX is seeing it for the first time.
<a id='L8362' name='L8362'></a>&lt;a id='L8348' name='L8348'&gt;&lt;/a&gt;    % 
<a id='L8363' name='L8363'></a>&lt;a id='L8349' name='L8349'&gt;&lt;/a&gt;    \ifdim \wd\printedmanualbox &amp;gt; 0pt
<a id='L8364' name='L8364'></a>&lt;a id='L8350' name='L8350'&gt;&lt;/a&gt;      % Cross-manual reference with a printed manual name.
<a id='L8365' name='L8365'></a>&lt;a id='L8351' name='L8351'&gt;&lt;/a&gt;      % 
<a id='L8366' name='L8366'></a>&lt;a id='L8352' name='L8352'&gt;&lt;/a&gt;      \crossmanualxref{\cite{\printedmanual\unskip}}%
<a id='L8367' name='L8367'></a>&lt;a id='L8353' name='L8353'&gt;&lt;/a&gt;    %
<a id='L8368' name='L8368'></a>&lt;a id='L8354' name='L8354'&gt;&lt;/a&gt;    \else\ifdim \wd\infofilenamebox &amp;gt; 0pt
<a id='L8369' name='L8369'></a>&lt;a id='L8355' name='L8355'&gt;&lt;/a&gt;      % Cross-manual reference with only an info filename (arg 4), no
<a id='L8370' name='L8370'></a>&lt;a id='L8356' name='L8356'&gt;&lt;/a&gt;      % printed manual name (arg 5).  This is essentially the same as
<a id='L8371' name='L8371'></a>&lt;a id='L8357' name='L8357'&gt;&lt;/a&gt;      % the case above; we output the filename, since we have nothing else.
<a id='L8372' name='L8372'></a>&lt;a id='L8358' name='L8358'&gt;&lt;/a&gt;      % 
<a id='L8373' name='L8373'></a>&lt;a id='L8359' name='L8359'&gt;&lt;/a&gt;      \crossmanualxref{\code{\infofilename\unskip}}%
<a id='L8374' name='L8374'></a>&lt;a id='L8360' name='L8360'&gt;&lt;/a&gt;    %
<a id='L8375' name='L8375'></a>&lt;a id='L8361' name='L8361'&gt;&lt;/a&gt;    \else
<a id='L8376' name='L8376'></a>&lt;a id='L8362' name='L8362'&gt;&lt;/a&gt;      % Reference within this manual.
<a id='L8377' name='L8377'></a>&lt;a id='L8363' name='L8363'&gt;&lt;/a&gt;      %
<a id='L8378' name='L8378'></a>&lt;a id='L8364' name='L8364'&gt;&lt;/a&gt;      % _ (for example) has to be the character _ for the purposes of the
<a id='L8379' name='L8379'></a>&lt;a id='L8365' name='L8365'&gt;&lt;/a&gt;      % control sequence corresponding to the node, but it has to expand
<a id='L8380' name='L8380'></a>&lt;a id='L8366' name='L8366'&gt;&lt;/a&gt;      % into the usual \leavevmode...\vrule stuff for purposes of
<a id='L8381' name='L8381'></a>&lt;a id='L8367' name='L8367'&gt;&lt;/a&gt;      % printing. So we \turnoffactive for the \refx-snt, back on for the
<a id='L8382' name='L8382'></a>&lt;a id='L8368' name='L8368'&gt;&lt;/a&gt;      % printing, back off for the \refx-pg.
<a id='L8383' name='L8383'></a>&lt;a id='L8369' name='L8369'&gt;&lt;/a&gt;      {\turnoffactive
<a id='L8384' name='L8384'></a>&lt;a id='L8370' name='L8370'&gt;&lt;/a&gt;       % Only output a following space if the -snt ref is nonempty; for
<a id='L8385' name='L8385'></a>&lt;a id='L8371' name='L8371'&gt;&lt;/a&gt;       % @unnumbered and @anchor, it won't be.
<a id='L8386' name='L8386'></a>&lt;a id='L8372' name='L8372'&gt;&lt;/a&gt;       \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
<a id='L8387' name='L8387'></a>&lt;a id='L8373' name='L8373'&gt;&lt;/a&gt;       \ifdim \wd2 &amp;gt; 0pt \refx{#1-snt}\space\fi
<a id='L8388' name='L8388'></a>&lt;a id='L8374' name='L8374'&gt;&lt;/a&gt;      }%
<a id='L8389' name='L8389'></a>&lt;a id='L8375' name='L8375'&gt;&lt;/a&gt;      % output the `[mynode]' via the macro below so it can be overridden.
<a id='L8390' name='L8390'></a>&lt;a id='L8376' name='L8376'&gt;&lt;/a&gt;      \xrefprintnodename\printedrefname
<a id='L8391' name='L8391'></a>&lt;a id='L8377' name='L8377'&gt;&lt;/a&gt;      %
<a id='L8392' name='L8392'></a>&lt;a id='L8378' name='L8378'&gt;&lt;/a&gt;      % But we always want a comma and a space:
<a id='L8393' name='L8393'></a>&lt;a id='L8379' name='L8379'&gt;&lt;/a&gt;      ,\space
<a id='L8394' name='L8394'></a>&lt;a id='L8380' name='L8380'&gt;&lt;/a&gt;      %
<a id='L8395' name='L8395'></a>&lt;a id='L8381' name='L8381'&gt;&lt;/a&gt;      % output the `page 3'.
<a id='L8396' name='L8396'></a>&lt;a id='L8382' name='L8382'&gt;&lt;/a&gt;      \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
<a id='L8397' name='L8397'></a>&lt;a id='L8383' name='L8383'&gt;&lt;/a&gt;    \fi\fi
<a id='L8398' name='L8398'></a>&lt;a id='L8384' name='L8384'&gt;&lt;/a&gt;  \fi
<a id='L8399' name='L8399'></a>&lt;a id='L8385' name='L8385'&gt;&lt;/a&gt;  \endlink
<a id='L8400' name='L8400'></a>&lt;a id='L8386' name='L8386'&gt;&lt;/a&gt;\endgroup}
<a id='L8401' name='L8401'></a>&lt;a id='L8387' name='L8387'&gt;&lt;/a&gt;
<a id='L8402' name='L8402'></a>&lt;a id='L8388' name='L8388'&gt;&lt;/a&gt;% Output a cross-manual xref to #1.  Used just above (twice).
<a id='L8403' name='L8403'></a>&lt;a id='L8389' name='L8389'&gt;&lt;/a&gt;% 
<a id='L8404' name='L8404'></a>&lt;a id='L8390' name='L8390'&gt;&lt;/a&gt;% Only include the text "Section ``foo'' in" if the foo is neither
<a id='L8405' name='L8405'></a>&lt;a id='L8391' name='L8391'&gt;&lt;/a&gt;% missing or Top.  Thus, @xref{,,,foo,The Foo Manual} outputs simply
<a id='L8406' name='L8406'></a>&lt;a id='L8392' name='L8392'&gt;&lt;/a&gt;% "see The Foo Manual", the idea being to refer to the whole manual.
<a id='L8407' name='L8407'></a>&lt;a id='L8393' name='L8393'&gt;&lt;/a&gt;% 
<a id='L8408' name='L8408'></a>&lt;a id='L8394' name='L8394'&gt;&lt;/a&gt;% But, this being TeX, we can't easily compare our node name against the
<a id='L8409' name='L8409'></a>&lt;a id='L8395' name='L8395'&gt;&lt;/a&gt;% string "Top" while ignoring the possible spaces before and after in
<a id='L8410' name='L8410'></a>&lt;a id='L8396' name='L8396'&gt;&lt;/a&gt;% the input.  By adding the arbitrary 7sp below, we make it much less
<a id='L8411' name='L8411'></a>&lt;a id='L8397' name='L8397'&gt;&lt;/a&gt;% likely that a real node name would have the same width as "Top" (e.g.,
<a id='L8412' name='L8412'></a>&lt;a id='L8398' name='L8398'&gt;&lt;/a&gt;% in a monospaced font).  Hopefully it will never happen in practice.
<a id='L8413' name='L8413'></a>&lt;a id='L8399' name='L8399'&gt;&lt;/a&gt;% 
<a id='L8414' name='L8414'></a>&lt;a id='L8400' name='L8400'&gt;&lt;/a&gt;% For the same basic reason, we retypeset the "Top" at every
<a id='L8415' name='L8415'></a>&lt;a id='L8401' name='L8401'&gt;&lt;/a&gt;% reference, since the current font is indeterminate.
<a id='L8416' name='L8416'></a>&lt;a id='L8402' name='L8402'&gt;&lt;/a&gt;% 
<a id='L8417' name='L8417'></a>&lt;a id='L8403' name='L8403'&gt;&lt;/a&gt;\def\crossmanualxref#1{%
<a id='L8418' name='L8418'></a>&lt;a id='L8404' name='L8404'&gt;&lt;/a&gt;  \setbox\toprefbox = \hbox{Top\kern7sp}%
<a id='L8419' name='L8419'></a>&lt;a id='L8405' name='L8405'&gt;&lt;/a&gt;  \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}%
<a id='L8420' name='L8420'></a>&lt;a id='L8406' name='L8406'&gt;&lt;/a&gt;  \ifdim \wd2 &amp;gt; 7sp  % nonempty?
<a id='L8421' name='L8421'></a>&lt;a id='L8407' name='L8407'&gt;&lt;/a&gt;    \ifdim \wd2 = \wd\toprefbox \else  % same as Top?
<a id='L8422' name='L8422'></a>&lt;a id='L8408' name='L8408'&gt;&lt;/a&gt;      \putwordSection{} ``\printedrefname'' \putwordin{}\space
<a id='L8423' name='L8423'></a>&lt;a id='L8409' name='L8409'&gt;&lt;/a&gt;    \fi
<a id='L8424' name='L8424'></a>&lt;a id='L8410' name='L8410'&gt;&lt;/a&gt;  \fi
<a id='L8425' name='L8425'></a>&lt;a id='L8411' name='L8411'&gt;&lt;/a&gt;  #1%
<a id='L8426' name='L8426'></a>&lt;a id='L8412' name='L8412'&gt;&lt;/a&gt;}
<a id='L8427' name='L8427'></a>&lt;a id='L8413' name='L8413'&gt;&lt;/a&gt;
<a id='L8428' name='L8428'></a>&lt;a id='L8414' name='L8414'&gt;&lt;/a&gt;% This macro is called from \xrefX for the `[nodename]' part of xref
<a id='L8429' name='L8429'></a>&lt;a id='L8415' name='L8415'&gt;&lt;/a&gt;% output.  It's a separate macro only so it can be changed more easily,
<a id='L8430' name='L8430'></a>&lt;a id='L8416' name='L8416'&gt;&lt;/a&gt;% since square brackets don't work well in some documents.  Particularly
<a id='L8431' name='L8431'></a>&lt;a id='L8417' name='L8417'&gt;&lt;/a&gt;% one that Bob is working on :).
<a id='L8432' name='L8432'></a>&lt;a id='L8418' name='L8418'&gt;&lt;/a&gt;%
<a id='L8433' name='L8433'></a>&lt;a id='L8419' name='L8419'&gt;&lt;/a&gt;\def\xrefprintnodename#1{[#1]}
<a id='L8434' name='L8434'></a>&lt;a id='L8420' name='L8420'&gt;&lt;/a&gt;
<a id='L8435' name='L8435'></a>&lt;a id='L8421' name='L8421'&gt;&lt;/a&gt;% Things referred to by \setref.
<a id='L8436' name='L8436'></a>&lt;a id='L8422' name='L8422'&gt;&lt;/a&gt;%
<a id='L8437' name='L8437'></a>&lt;a id='L8423' name='L8423'&gt;&lt;/a&gt;\def\Ynothing{}
<a id='L8438' name='L8438'></a>&lt;a id='L8424' name='L8424'&gt;&lt;/a&gt;\def\Yomitfromtoc{}
<a id='L8439' name='L8439'></a>&lt;a id='L8425' name='L8425'&gt;&lt;/a&gt;\def\Ynumbered{%
<a id='L8440' name='L8440'></a>&lt;a id='L8426' name='L8426'&gt;&lt;/a&gt;  \ifnum\secno=0
<a id='L8441' name='L8441'></a>&lt;a id='L8427' name='L8427'&gt;&lt;/a&gt;    \putwordChapter@tie \the\chapno
<a id='L8442' name='L8442'></a>&lt;a id='L8428' name='L8428'&gt;&lt;/a&gt;  \else \ifnum\subsecno=0
<a id='L8443' name='L8443'></a>&lt;a id='L8429' name='L8429'&gt;&lt;/a&gt;    \putwordSection@tie \the\chapno.\the\secno
<a id='L8444' name='L8444'></a>&lt;a id='L8430' name='L8430'&gt;&lt;/a&gt;  \else \ifnum\subsubsecno=0
<a id='L8445' name='L8445'></a>&lt;a id='L8431' name='L8431'&gt;&lt;/a&gt;    \putwordSection@tie \the\chapno.\the\secno.\the\subsecno
<a id='L8446' name='L8446'></a>&lt;a id='L8432' name='L8432'&gt;&lt;/a&gt;  \else
<a id='L8447' name='L8447'></a>&lt;a id='L8433' name='L8433'&gt;&lt;/a&gt;    \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno
<a id='L8448' name='L8448'></a>&lt;a id='L8434' name='L8434'&gt;&lt;/a&gt;  \fi\fi\fi
<a id='L8449' name='L8449'></a>&lt;a id='L8435' name='L8435'&gt;&lt;/a&gt;}
<a id='L8450' name='L8450'></a>&lt;a id='L8436' name='L8436'&gt;&lt;/a&gt;\def\Yappendix{%
<a id='L8451' name='L8451'></a>&lt;a id='L8437' name='L8437'&gt;&lt;/a&gt;  \ifnum\secno=0
<a id='L8452' name='L8452'></a>&lt;a id='L8438' name='L8438'&gt;&lt;/a&gt;     \putwordAppendix@tie @char\the\appendixno{}%
<a id='L8453' name='L8453'></a>&lt;a id='L8439' name='L8439'&gt;&lt;/a&gt;  \else \ifnum\subsecno=0
<a id='L8454' name='L8454'></a>&lt;a id='L8440' name='L8440'&gt;&lt;/a&gt;     \putwordSection@tie @char\the\appendixno.\the\secno
<a id='L8455' name='L8455'></a>&lt;a id='L8441' name='L8441'&gt;&lt;/a&gt;  \else \ifnum\subsubsecno=0
<a id='L8456' name='L8456'></a>&lt;a id='L8442' name='L8442'&gt;&lt;/a&gt;    \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno
<a id='L8457' name='L8457'></a>&lt;a id='L8443' name='L8443'&gt;&lt;/a&gt;  \else
<a id='L8458' name='L8458'></a>&lt;a id='L8444' name='L8444'&gt;&lt;/a&gt;    \putwordSection@tie
<a id='L8459' name='L8459'></a>&lt;a id='L8445' name='L8445'&gt;&lt;/a&gt;      @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno
<a id='L8460' name='L8460'></a>&lt;a id='L8446' name='L8446'&gt;&lt;/a&gt;  \fi\fi\fi
<a id='L8461' name='L8461'></a>&lt;a id='L8447' name='L8447'&gt;&lt;/a&gt;}
<a id='L8462' name='L8462'></a>&lt;a id='L8448' name='L8448'&gt;&lt;/a&gt;
<a id='L8463' name='L8463'></a>&lt;a id='L8449' name='L8449'&gt;&lt;/a&gt;% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
<a id='L8464' name='L8464'></a>&lt;a id='L8450' name='L8450'&gt;&lt;/a&gt;% If its value is nonempty, SUFFIX is output afterward.
<a id='L8465' name='L8465'></a>&lt;a id='L8451' name='L8451'&gt;&lt;/a&gt;%
<a id='L8466' name='L8466'></a>&lt;a id='L8452' name='L8452'&gt;&lt;/a&gt;\def\refx#1#2{%
<a id='L8467' name='L8467'></a>&lt;a id='L8453' name='L8453'&gt;&lt;/a&gt;  {%
<a id='L8468' name='L8468'></a>&lt;a id='L8454' name='L8454'&gt;&lt;/a&gt;    \indexnofonts
<a id='L8469' name='L8469'></a>&lt;a id='L8455' name='L8455'&gt;&lt;/a&gt;    \otherbackslash
<a id='L8470' name='L8470'></a>&lt;a id='L8456' name='L8456'&gt;&lt;/a&gt;    \expandafter\global\expandafter\let\expandafter\thisrefX
<a id='L8471' name='L8471'></a>&lt;a id='L8457' name='L8457'&gt;&lt;/a&gt;      \csname XR#1\endcsname
<a id='L8472' name='L8472'></a>&lt;a id='L8458' name='L8458'&gt;&lt;/a&gt;  }%
<a id='L8473' name='L8473'></a>&lt;a id='L8459' name='L8459'&gt;&lt;/a&gt;  \ifx\thisrefX\relax
<a id='L8474' name='L8474'></a>&lt;a id='L8460' name='L8460'&gt;&lt;/a&gt;    % If not defined, say something at least.
<a id='L8475' name='L8475'></a>&lt;a id='L8461' name='L8461'&gt;&lt;/a&gt;    \angleleft un\-de\-fined\angleright
<a id='L8476' name='L8476'></a>&lt;a id='L8462' name='L8462'&gt;&lt;/a&gt;    \iflinks
<a id='L8477' name='L8477'></a>&lt;a id='L8463' name='L8463'&gt;&lt;/a&gt;      \ifhavexrefs
<a id='L8478' name='L8478'></a>&lt;a id='L8464' name='L8464'&gt;&lt;/a&gt;        {\toks0 = {#1}% avoid expansion of possibly-complex value
<a id='L8479' name='L8479'></a>&lt;a id='L8465' name='L8465'&gt;&lt;/a&gt;         \message{\linenumber Undefined cross reference `\the\toks0'.}}%
<a id='L8480' name='L8480'></a>&lt;a id='L8466' name='L8466'&gt;&lt;/a&gt;      \else
<a id='L8481' name='L8481'></a>&lt;a id='L8467' name='L8467'&gt;&lt;/a&gt;        \ifwarnedxrefs\else
<a id='L8482' name='L8482'></a>&lt;a id='L8468' name='L8468'&gt;&lt;/a&gt;          \global\warnedxrefstrue
<a id='L8483' name='L8483'></a>&lt;a id='L8469' name='L8469'&gt;&lt;/a&gt;          \message{Cross reference values unknown; you must run TeX again.}%
<a id='L8484' name='L8484'></a>&lt;a id='L8470' name='L8470'&gt;&lt;/a&gt;        \fi
<a id='L8485' name='L8485'></a>&lt;a id='L8471' name='L8471'&gt;&lt;/a&gt;      \fi
<a id='L8486' name='L8486'></a>&lt;a id='L8472' name='L8472'&gt;&lt;/a&gt;    \fi
<a id='L8487' name='L8487'></a>&lt;a id='L8473' name='L8473'&gt;&lt;/a&gt;  \else
<a id='L8488' name='L8488'></a>&lt;a id='L8474' name='L8474'&gt;&lt;/a&gt;    % It's defined, so just use it.
<a id='L8489' name='L8489'></a>&lt;a id='L8475' name='L8475'&gt;&lt;/a&gt;    \thisrefX
<a id='L8490' name='L8490'></a>&lt;a id='L8476' name='L8476'&gt;&lt;/a&gt;  \fi
<a id='L8491' name='L8491'></a>&lt;a id='L8477' name='L8477'&gt;&lt;/a&gt;  #2% Output the suffix in any case.
<a id='L8492' name='L8492'></a>&lt;a id='L8478' name='L8478'&gt;&lt;/a&gt;}
<a id='L8493' name='L8493'></a>&lt;a id='L8479' name='L8479'&gt;&lt;/a&gt;
<a id='L8494' name='L8494'></a>&lt;a id='L8480' name='L8480'&gt;&lt;/a&gt;% This is the macro invoked by entries in the aux file.  Usually it's
<a id='L8495' name='L8495'></a>&lt;a id='L8481' name='L8481'&gt;&lt;/a&gt;% just a \def (we prepend XR to the control sequence name to avoid
<a id='L8496' name='L8496'></a>&lt;a id='L8482' name='L8482'&gt;&lt;/a&gt;% collisions).  But if this is a float type, we have more work to do.
<a id='L8497' name='L8497'></a>&lt;a id='L8483' name='L8483'&gt;&lt;/a&gt;%
<a id='L8498' name='L8498'></a>&lt;a id='L8484' name='L8484'&gt;&lt;/a&gt;\def\xrdef#1#2{%
<a id='L8499' name='L8499'></a>&lt;a id='L8485' name='L8485'&gt;&lt;/a&gt;  {% The node name might contain 8-bit characters, which in our current
<a id='L8500' name='L8500'></a>&lt;a id='L8486' name='L8486'&gt;&lt;/a&gt;   % implementation are changed to commands like @'e.  Don't let these
<a id='L8501' name='L8501'></a>&lt;a id='L8487' name='L8487'&gt;&lt;/a&gt;   % mess up the control sequence name.
<a id='L8502' name='L8502'></a>&lt;a id='L8488' name='L8488'&gt;&lt;/a&gt;    \indexnofonts
<a id='L8503' name='L8503'></a>&lt;a id='L8489' name='L8489'&gt;&lt;/a&gt;    \turnoffactive
<a id='L8504' name='L8504'></a>&lt;a id='L8490' name='L8490'&gt;&lt;/a&gt;    \xdef\safexrefname{#1}%
<a id='L8505' name='L8505'></a>&lt;a id='L8491' name='L8491'&gt;&lt;/a&gt;  }%
<a id='L8506' name='L8506'></a>&lt;a id='L8492' name='L8492'&gt;&lt;/a&gt;  %
<a id='L8507' name='L8507'></a>&lt;a id='L8493' name='L8493'&gt;&lt;/a&gt;  \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref
<a id='L8508' name='L8508'></a>&lt;a id='L8494' name='L8494'&gt;&lt;/a&gt;  %
<a id='L8509' name='L8509'></a>&lt;a id='L8495' name='L8495'&gt;&lt;/a&gt;  % Was that xref control sequence that we just defined for a float?
<a id='L8510' name='L8510'></a>&lt;a id='L8496' name='L8496'&gt;&lt;/a&gt;  \expandafter\iffloat\csname XR\safexrefname\endcsname
<a id='L8511' name='L8511'></a>&lt;a id='L8497' name='L8497'&gt;&lt;/a&gt;    % it was a float, and we have the (safe) float type in \iffloattype.
<a id='L8512' name='L8512'></a>&lt;a id='L8498' name='L8498'&gt;&lt;/a&gt;    \expandafter\let\expandafter\floatlist
<a id='L8513' name='L8513'></a>&lt;a id='L8499' name='L8499'&gt;&lt;/a&gt;      \csname floatlist\iffloattype\endcsname
<a id='L8514' name='L8514'></a>&lt;a id='L8500' name='L8500'&gt;&lt;/a&gt;    %
<a id='L8515' name='L8515'></a>&lt;a id='L8501' name='L8501'&gt;&lt;/a&gt;    % Is this the first time we've seen this float type?
<a id='L8516' name='L8516'></a>&lt;a id='L8502' name='L8502'&gt;&lt;/a&gt;    \expandafter\ifx\floatlist\relax
<a id='L8517' name='L8517'></a>&lt;a id='L8503' name='L8503'&gt;&lt;/a&gt;      \toks0 = {\do}% yes, so just \do
<a id='L8518' name='L8518'></a>&lt;a id='L8504' name='L8504'&gt;&lt;/a&gt;    \else
<a id='L8519' name='L8519'></a>&lt;a id='L8505' name='L8505'&gt;&lt;/a&gt;      % had it before, so preserve previous elements in list.
<a id='L8520' name='L8520'></a>&lt;a id='L8506' name='L8506'&gt;&lt;/a&gt;      \toks0 = \expandafter{\floatlist\do}%
<a id='L8521' name='L8521'></a>&lt;a id='L8507' name='L8507'&gt;&lt;/a&gt;    \fi
<a id='L8522' name='L8522'></a>&lt;a id='L8508' name='L8508'&gt;&lt;/a&gt;    %
<a id='L8523' name='L8523'></a>&lt;a id='L8509' name='L8509'&gt;&lt;/a&gt;    % Remember this xref in the control sequence \floatlistFLOATTYPE,
<a id='L8524' name='L8524'></a>&lt;a id='L8510' name='L8510'&gt;&lt;/a&gt;    % for later use in \listoffloats.
<a id='L8525' name='L8525'></a>&lt;a id='L8511' name='L8511'&gt;&lt;/a&gt;    \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0
<a id='L8526' name='L8526'></a>&lt;a id='L8512' name='L8512'&gt;&lt;/a&gt;      {\safexrefname}}%
<a id='L8527' name='L8527'></a>&lt;a id='L8513' name='L8513'&gt;&lt;/a&gt;  \fi
<a id='L8528' name='L8528'></a>&lt;a id='L8514' name='L8514'&gt;&lt;/a&gt;}
<a id='L8529' name='L8529'></a>&lt;a id='L8515' name='L8515'&gt;&lt;/a&gt;
<a id='L8530' name='L8530'></a>&lt;a id='L8516' name='L8516'&gt;&lt;/a&gt;% Read the last existing aux file, if any.  No error if none exists.
<a id='L8531' name='L8531'></a>&lt;a id='L8517' name='L8517'&gt;&lt;/a&gt;%
<a id='L8532' name='L8532'></a>&lt;a id='L8518' name='L8518'&gt;&lt;/a&gt;\def\tryauxfile{%
<a id='L8533' name='L8533'></a>&lt;a id='L8519' name='L8519'&gt;&lt;/a&gt;  \openin 1 \jobname.aux
<a id='L8534' name='L8534'></a>&lt;a id='L8520' name='L8520'&gt;&lt;/a&gt;  \ifeof 1 \else
<a id='L8535' name='L8535'></a>&lt;a id='L8521' name='L8521'&gt;&lt;/a&gt;    \readdatafile{aux}%
<a id='L8536' name='L8536'></a>&lt;a id='L8522' name='L8522'&gt;&lt;/a&gt;    \global\havexrefstrue
<a id='L8537' name='L8537'></a>&lt;a id='L8523' name='L8523'&gt;&lt;/a&gt;  \fi
<a id='L8538' name='L8538'></a>&lt;a id='L8524' name='L8524'&gt;&lt;/a&gt;  \closein 1
<a id='L8539' name='L8539'></a>&lt;a id='L8525' name='L8525'&gt;&lt;/a&gt;}
<a id='L8540' name='L8540'></a>&lt;a id='L8526' name='L8526'&gt;&lt;/a&gt;
<a id='L8541' name='L8541'></a>&lt;a id='L8527' name='L8527'&gt;&lt;/a&gt;\def\setupdatafile{%
<a id='L8542' name='L8542'></a>&lt;a id='L8528' name='L8528'&gt;&lt;/a&gt;  \catcode`\^^@=\other
<a id='L8543' name='L8543'></a>&lt;a id='L8529' name='L8529'&gt;&lt;/a&gt;  \catcode`\^^A=\other
<a id='L8544' name='L8544'></a>&lt;a id='L8530' name='L8530'&gt;&lt;/a&gt;  \catcode`\^^B=\other
<a id='L8545' name='L8545'></a>&lt;a id='L8531' name='L8531'&gt;&lt;/a&gt;  \catcode`\^^C=\other
<a id='L8546' name='L8546'></a>&lt;a id='L8532' name='L8532'&gt;&lt;/a&gt;  \catcode`\^^D=\other
<a id='L8547' name='L8547'></a>&lt;a id='L8533' name='L8533'&gt;&lt;/a&gt;  \catcode`\^^E=\other
<a id='L8548' name='L8548'></a>&lt;a id='L8534' name='L8534'&gt;&lt;/a&gt;  \catcode`\^^F=\other
<a id='L8549' name='L8549'></a>&lt;a id='L8535' name='L8535'&gt;&lt;/a&gt;  \catcode`\^^G=\other
<a id='L8550' name='L8550'></a>&lt;a id='L8536' name='L8536'&gt;&lt;/a&gt;  \catcode`\^^H=\other
<a id='L8551' name='L8551'></a>&lt;a id='L8537' name='L8537'&gt;&lt;/a&gt;  \catcode`\^^K=\other
<a id='L8552' name='L8552'></a>&lt;a id='L8538' name='L8538'&gt;&lt;/a&gt;  \catcode`\^^L=\other
<a id='L8553' name='L8553'></a>&lt;a id='L8539' name='L8539'&gt;&lt;/a&gt;  \catcode`\^^N=\other
<a id='L8554' name='L8554'></a>&lt;a id='L8540' name='L8540'&gt;&lt;/a&gt;  \catcode`\^^P=\other
<a id='L8555' name='L8555'></a>&lt;a id='L8541' name='L8541'&gt;&lt;/a&gt;  \catcode`\^^Q=\other
<a id='L8556' name='L8556'></a>&lt;a id='L8542' name='L8542'&gt;&lt;/a&gt;  \catcode`\^^R=\other
<a id='L8557' name='L8557'></a>&lt;a id='L8543' name='L8543'&gt;&lt;/a&gt;  \catcode`\^^S=\other
<a id='L8558' name='L8558'></a>&lt;a id='L8544' name='L8544'&gt;&lt;/a&gt;  \catcode`\^^T=\other
<a id='L8559' name='L8559'></a>&lt;a id='L8545' name='L8545'&gt;&lt;/a&gt;  \catcode`\^^U=\other
<a id='L8560' name='L8560'></a>&lt;a id='L8546' name='L8546'&gt;&lt;/a&gt;  \catcode`\^^V=\other
<a id='L8561' name='L8561'></a>&lt;a id='L8547' name='L8547'&gt;&lt;/a&gt;  \catcode`\^^W=\other
<a id='L8562' name='L8562'></a>&lt;a id='L8548' name='L8548'&gt;&lt;/a&gt;  \catcode`\^^X=\other
<a id='L8563' name='L8563'></a>&lt;a id='L8549' name='L8549'&gt;&lt;/a&gt;  \catcode`\^^Z=\other
<a id='L8564' name='L8564'></a>&lt;a id='L8550' name='L8550'&gt;&lt;/a&gt;  \catcode`\^^[=\other
<a id='L8565' name='L8565'></a>&lt;a id='L8551' name='L8551'&gt;&lt;/a&gt;  \catcode`\^^\=\other
<a id='L8566' name='L8566'></a>&lt;a id='L8552' name='L8552'&gt;&lt;/a&gt;  \catcode`\^^]=\other
<a id='L8567' name='L8567'></a>&lt;a id='L8553' name='L8553'&gt;&lt;/a&gt;  \catcode`\^^^=\other
<a id='L8568' name='L8568'></a>&lt;a id='L8554' name='L8554'&gt;&lt;/a&gt;  \catcode`\^^_=\other
<a id='L8569' name='L8569'></a>&lt;a id='L8555' name='L8555'&gt;&lt;/a&gt;  % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc.
<a id='L8570' name='L8570'></a>&lt;a id='L8556' name='L8556'&gt;&lt;/a&gt;  % in xref tags, i.e., node names.  But since ^^e4 notation isn't
<a id='L8571' name='L8571'></a>&lt;a id='L8557' name='L8557'&gt;&lt;/a&gt;  % supported in the main text, it doesn't seem desirable.  Furthermore,
<a id='L8572' name='L8572'></a>&lt;a id='L8558' name='L8558'&gt;&lt;/a&gt;  % that is not enough: for node names that actually contain a ^
<a id='L8573' name='L8573'></a>&lt;a id='L8559' name='L8559'&gt;&lt;/a&gt;  % character, we would end up writing a line like this: 'xrdef {'hat
<a id='L8574' name='L8574'></a>&lt;a id='L8560' name='L8560'&gt;&lt;/a&gt;  % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first
<a id='L8575' name='L8575'></a>&lt;a id='L8561' name='L8561'&gt;&lt;/a&gt;  % argument, and \hat is not an expandable control sequence.  It could
<a id='L8576' name='L8576'></a>&lt;a id='L8562' name='L8562'&gt;&lt;/a&gt;  % all be worked out, but why?  Either we support ^^ or we don't.
<a id='L8577' name='L8577'></a>&lt;a id='L8563' name='L8563'&gt;&lt;/a&gt;  %
<a id='L8578' name='L8578'></a>&lt;a id='L8564' name='L8564'&gt;&lt;/a&gt;  % The other change necessary for this was to define \auxhat:
<a id='L8579' name='L8579'></a>&lt;a id='L8565' name='L8565'&gt;&lt;/a&gt;  % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter
<a id='L8580' name='L8580'></a>&lt;a id='L8566' name='L8566'&gt;&lt;/a&gt;  % and then to call \auxhat in \setq.
<a id='L8581' name='L8581'></a>&lt;a id='L8567' name='L8567'&gt;&lt;/a&gt;  %
<a id='L8582' name='L8582'></a>&lt;a id='L8568' name='L8568'&gt;&lt;/a&gt;  \catcode`\^=\other
<a id='L8583' name='L8583'></a>&lt;a id='L8569' name='L8569'&gt;&lt;/a&gt;  %
<a id='L8584' name='L8584'></a>&lt;a id='L8570' name='L8570'&gt;&lt;/a&gt;  % Special characters.  Should be turned off anyway, but...
<a id='L8585' name='L8585'></a>&lt;a id='L8571' name='L8571'&gt;&lt;/a&gt;  \catcode`\~=\other
<a id='L8586' name='L8586'></a>&lt;a id='L8572' name='L8572'&gt;&lt;/a&gt;  \catcode`\[=\other
<a id='L8587' name='L8587'></a>&lt;a id='L8573' name='L8573'&gt;&lt;/a&gt;  \catcode`\]=\other
<a id='L8588' name='L8588'></a>&lt;a id='L8574' name='L8574'&gt;&lt;/a&gt;  \catcode`\"=\other
<a id='L8589' name='L8589'></a>&lt;a id='L8575' name='L8575'&gt;&lt;/a&gt;  \catcode`\_=\other
<a id='L8590' name='L8590'></a>&lt;a id='L8576' name='L8576'&gt;&lt;/a&gt;  \catcode`\|=\other
<a id='L8591' name='L8591'></a>&lt;a id='L8577' name='L8577'&gt;&lt;/a&gt;  \catcode`\&amp;lt;=\other
<a id='L8592' name='L8592'></a>&lt;a id='L8578' name='L8578'&gt;&lt;/a&gt;  \catcode`\&amp;gt;=\other
<a id='L8593' name='L8593'></a>&lt;a id='L8579' name='L8579'&gt;&lt;/a&gt;  \catcode`\$=\other
<a id='L8594' name='L8594'></a>&lt;a id='L8580' name='L8580'&gt;&lt;/a&gt;  \catcode`\#=\other
<a id='L8595' name='L8595'></a>&lt;a id='L8581' name='L8581'&gt;&lt;/a&gt;  \catcode`\&amp;amp;=\other
<a id='L8596' name='L8596'></a>&lt;a id='L8582' name='L8582'&gt;&lt;/a&gt;  \catcode`\%=\other
<a id='L8597' name='L8597'></a>&lt;a id='L8583' name='L8583'&gt;&lt;/a&gt;  \catcode`+=\other % avoid \+ for paranoia even though we've turned it off
<a id='L8598' name='L8598'></a>&lt;a id='L8584' name='L8584'&gt;&lt;/a&gt;  %
<a id='L8599' name='L8599'></a>&lt;a id='L8585' name='L8585'&gt;&lt;/a&gt;  % This is to support \ in node names and titles, since the \
<a id='L8600' name='L8600'></a>&lt;a id='L8586' name='L8586'&gt;&lt;/a&gt;  % characters end up in a \csname.  It's easier than
<a id='L8601' name='L8601'></a>&lt;a id='L8587' name='L8587'&gt;&lt;/a&gt;  % leaving it active and making its active definition an actual \
<a id='L8602' name='L8602'></a>&lt;a id='L8588' name='L8588'&gt;&lt;/a&gt;  % character.  What I don't understand is why it works in the *value*
<a id='L8603' name='L8603'></a>&lt;a id='L8589' name='L8589'&gt;&lt;/a&gt;  % of the xrdef.  Seems like it should be a catcode12 \, and that
<a id='L8604' name='L8604'></a>&lt;a id='L8590' name='L8590'&gt;&lt;/a&gt;  % should not typeset properly.  But it works, so I'm moving on for
<a id='L8605' name='L8605'></a>&lt;a id='L8591' name='L8591'&gt;&lt;/a&gt;  % now.  --karl, 15jan04.
<a id='L8606' name='L8606'></a>&lt;a id='L8592' name='L8592'&gt;&lt;/a&gt;  \catcode`\\=\other
<a id='L8607' name='L8607'></a>&lt;a id='L8593' name='L8593'&gt;&lt;/a&gt;  %
<a id='L8608' name='L8608'></a>&lt;a id='L8594' name='L8594'&gt;&lt;/a&gt;  % Make the characters 128-255 be printing characters.
<a id='L8609' name='L8609'></a>&lt;a id='L8595' name='L8595'&gt;&lt;/a&gt;  {%
<a id='L8610' name='L8610'></a>&lt;a id='L8596' name='L8596'&gt;&lt;/a&gt;    \count1=128
<a id='L8611' name='L8611'></a>&lt;a id='L8597' name='L8597'&gt;&lt;/a&gt;    \def\loop{%
<a id='L8612' name='L8612'></a>&lt;a id='L8598' name='L8598'&gt;&lt;/a&gt;      \catcode\count1=\other
<a id='L8613' name='L8613'></a>&lt;a id='L8599' name='L8599'&gt;&lt;/a&gt;      \advance\count1 by 1
<a id='L8614' name='L8614'></a>&lt;a id='L8600' name='L8600'&gt;&lt;/a&gt;      \ifnum \count1&amp;lt;256 \loop \fi
<a id='L8615' name='L8615'></a>&lt;a id='L8601' name='L8601'&gt;&lt;/a&gt;    }%
<a id='L8616' name='L8616'></a>&lt;a id='L8602' name='L8602'&gt;&lt;/a&gt;  }%
<a id='L8617' name='L8617'></a>&lt;a id='L8603' name='L8603'&gt;&lt;/a&gt;  %
<a id='L8618' name='L8618'></a>&lt;a id='L8604' name='L8604'&gt;&lt;/a&gt;  % @ is our escape character in .aux files, and we need braces.
<a id='L8619' name='L8619'></a>&lt;a id='L8605' name='L8605'&gt;&lt;/a&gt;  \catcode`\{=1
<a id='L8620' name='L8620'></a>&lt;a id='L8606' name='L8606'&gt;&lt;/a&gt;  \catcode`\}=2
<a id='L8621' name='L8621'></a>&lt;a id='L8607' name='L8607'&gt;&lt;/a&gt;  \catcode`\@=0
<a id='L8622' name='L8622'></a>&lt;a id='L8608' name='L8608'&gt;&lt;/a&gt;}
<a id='L8623' name='L8623'></a>&lt;a id='L8609' name='L8609'&gt;&lt;/a&gt;
<a id='L8624' name='L8624'></a>&lt;a id='L8610' name='L8610'&gt;&lt;/a&gt;\def\readdatafile#1{%
<a id='L8625' name='L8625'></a>&lt;a id='L8611' name='L8611'&gt;&lt;/a&gt;\begingroup
<a id='L8626' name='L8626'></a>&lt;a id='L8612' name='L8612'&gt;&lt;/a&gt;  \setupdatafile
<a id='L8627' name='L8627'></a>&lt;a id='L8613' name='L8613'&gt;&lt;/a&gt;  \input\jobname.#1
<a id='L8628' name='L8628'></a>&lt;a id='L8614' name='L8614'&gt;&lt;/a&gt;\endgroup}
<a id='L8629' name='L8629'></a>&lt;a id='L8615' name='L8615'&gt;&lt;/a&gt;
<a id='L8630' name='L8630'></a>&lt;a id='L8616' name='L8616'&gt;&lt;/a&gt;
<a id='L8631' name='L8631'></a>&lt;a id='L8617' name='L8617'&gt;&lt;/a&gt;\message{insertions,}
<a id='L8632' name='L8632'></a>&lt;a id='L8618' name='L8618'&gt;&lt;/a&gt;% including footnotes.
<a id='L8633' name='L8633'></a>&lt;a id='L8619' name='L8619'&gt;&lt;/a&gt;
<a id='L8634' name='L8634'></a>&lt;a id='L8620' name='L8620'&gt;&lt;/a&gt;\newcount \footnoteno
<a id='L8635' name='L8635'></a>&lt;a id='L8621' name='L8621'&gt;&lt;/a&gt;
<a id='L8636' name='L8636'></a>&lt;a id='L8622' name='L8622'&gt;&lt;/a&gt;% The trailing space in the following definition for supereject is
<a id='L8637' name='L8637'></a>&lt;a id='L8623' name='L8623'&gt;&lt;/a&gt;% vital for proper filling; pages come out unaligned when you do a
<a id='L8638' name='L8638'></a>&lt;a id='L8624' name='L8624'&gt;&lt;/a&gt;% pagealignmacro call if that space before the closing brace is
<a id='L8639' name='L8639'></a>&lt;a id='L8625' name='L8625'&gt;&lt;/a&gt;% removed. (Generally, numeric constants should always be followed by a
<a id='L8640' name='L8640'></a>&lt;a id='L8626' name='L8626'&gt;&lt;/a&gt;% space to prevent strange expansion errors.)
<a id='L8641' name='L8641'></a>&lt;a id='L8627' name='L8627'&gt;&lt;/a&gt;\def\supereject{\par\penalty -20000\footnoteno =0 }
<a id='L8642' name='L8642'></a>&lt;a id='L8628' name='L8628'&gt;&lt;/a&gt;
<a id='L8643' name='L8643'></a>&lt;a id='L8629' name='L8629'&gt;&lt;/a&gt;% @footnotestyle is meaningful for Info output only.
<a id='L8644' name='L8644'></a>&lt;a id='L8630' name='L8630'&gt;&lt;/a&gt;\let\footnotestyle=\comment
<a id='L8645' name='L8645'></a>&lt;a id='L8631' name='L8631'&gt;&lt;/a&gt;
<a id='L8646' name='L8646'></a>&lt;a id='L8632' name='L8632'&gt;&lt;/a&gt;{\catcode `\@=11
<a id='L8647' name='L8647'></a>&lt;a id='L8633' name='L8633'&gt;&lt;/a&gt;%
<a id='L8648' name='L8648'></a>&lt;a id='L8634' name='L8634'&gt;&lt;/a&gt;% Auto-number footnotes.  Otherwise like plain.
<a id='L8649' name='L8649'></a>&lt;a id='L8635' name='L8635'&gt;&lt;/a&gt;\gdef\footnote{%
<a id='L8650' name='L8650'></a>&lt;a id='L8636' name='L8636'&gt;&lt;/a&gt;  \let\indent=\ptexindent
<a id='L8651' name='L8651'></a>&lt;a id='L8637' name='L8637'&gt;&lt;/a&gt;  \let\noindent=\ptexnoindent
<a id='L8652' name='L8652'></a>&lt;a id='L8638' name='L8638'&gt;&lt;/a&gt;  \global\advance\footnoteno by \@ne
<a id='L8653' name='L8653'></a>&lt;a id='L8639' name='L8639'&gt;&lt;/a&gt;  \edef\thisfootno{$^{\the\footnoteno}$}%
<a id='L8654' name='L8654'></a>&lt;a id='L8640' name='L8640'&gt;&lt;/a&gt;  %
<a id='L8655' name='L8655'></a>&lt;a id='L8641' name='L8641'&gt;&lt;/a&gt;  % In case the footnote comes at the end of a sentence, preserve the
<a id='L8656' name='L8656'></a>&lt;a id='L8642' name='L8642'&gt;&lt;/a&gt;  % extra spacing after we do the footnote number.
<a id='L8657' name='L8657'></a>&lt;a id='L8643' name='L8643'&gt;&lt;/a&gt;  \let\@sf\empty
<a id='L8658' name='L8658'></a>&lt;a id='L8644' name='L8644'&gt;&lt;/a&gt;  \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi
<a id='L8659' name='L8659'></a>&lt;a id='L8645' name='L8645'&gt;&lt;/a&gt;  %
<a id='L8660' name='L8660'></a>&lt;a id='L8646' name='L8646'&gt;&lt;/a&gt;  % Remove inadvertent blank space before typesetting the footnote number.
<a id='L8661' name='L8661'></a>&lt;a id='L8647' name='L8647'&gt;&lt;/a&gt;  \unskip
<a id='L8662' name='L8662'></a>&lt;a id='L8648' name='L8648'&gt;&lt;/a&gt;  \thisfootno\@sf
<a id='L8663' name='L8663'></a>&lt;a id='L8649' name='L8649'&gt;&lt;/a&gt;  \dofootnote
<a id='L8664' name='L8664'></a>&lt;a id='L8650' name='L8650'&gt;&lt;/a&gt;}%
<a id='L8665' name='L8665'></a>&lt;a id='L8651' name='L8651'&gt;&lt;/a&gt;
<a id='L8666' name='L8666'></a>&lt;a id='L8652' name='L8652'&gt;&lt;/a&gt;% Don't bother with the trickery in plain.tex to not require the
<a id='L8667' name='L8667'></a>&lt;a id='L8653' name='L8653'&gt;&lt;/a&gt;% footnote text as a parameter.  Our footnotes don't need to be so general.
<a id='L8668' name='L8668'></a>&lt;a id='L8654' name='L8654'&gt;&lt;/a&gt;%
<a id='L8669' name='L8669'></a>&lt;a id='L8655' name='L8655'&gt;&lt;/a&gt;% Oh yes, they do; otherwise, @ifset (and anything else that uses
<a id='L8670' name='L8670'></a>&lt;a id='L8656' name='L8656'&gt;&lt;/a&gt;% \parseargline) fails inside footnotes because the tokens are fixed when
<a id='L8671' name='L8671'></a>&lt;a id='L8657' name='L8657'&gt;&lt;/a&gt;% the footnote is read.  --karl, 16nov96.
<a id='L8672' name='L8672'></a>&lt;a id='L8658' name='L8658'&gt;&lt;/a&gt;%
<a id='L8673' name='L8673'></a>&lt;a id='L8659' name='L8659'&gt;&lt;/a&gt;\gdef\dofootnote{%
<a id='L8674' name='L8674'></a>&lt;a id='L8660' name='L8660'&gt;&lt;/a&gt;  \insert\footins\bgroup
<a id='L8675' name='L8675'></a>&lt;a id='L8661' name='L8661'&gt;&lt;/a&gt;  % We want to typeset this text as a normal paragraph, even if the
<a id='L8676' name='L8676'></a>&lt;a id='L8662' name='L8662'&gt;&lt;/a&gt;  % footnote reference occurs in (for example) a display environment.
<a id='L8677' name='L8677'></a>&lt;a id='L8663' name='L8663'&gt;&lt;/a&gt;  % So reset some parameters.
<a id='L8678' name='L8678'></a>&lt;a id='L8664' name='L8664'&gt;&lt;/a&gt;  \hsize=\pagewidth
<a id='L8679' name='L8679'></a>&lt;a id='L8665' name='L8665'&gt;&lt;/a&gt;  \interlinepenalty\interfootnotelinepenalty
<a id='L8680' name='L8680'></a>&lt;a id='L8666' name='L8666'&gt;&lt;/a&gt;  \splittopskip\ht\strutbox % top baseline for broken footnotes
<a id='L8681' name='L8681'></a>&lt;a id='L8667' name='L8667'&gt;&lt;/a&gt;  \splitmaxdepth\dp\strutbox
<a id='L8682' name='L8682'></a>&lt;a id='L8668' name='L8668'&gt;&lt;/a&gt;  \floatingpenalty\@MM
<a id='L8683' name='L8683'></a>&lt;a id='L8669' name='L8669'&gt;&lt;/a&gt;  \leftskip\z@skip
<a id='L8684' name='L8684'></a>&lt;a id='L8670' name='L8670'&gt;&lt;/a&gt;  \rightskip\z@skip
<a id='L8685' name='L8685'></a>&lt;a id='L8671' name='L8671'&gt;&lt;/a&gt;  \spaceskip\z@skip
<a id='L8686' name='L8686'></a>&lt;a id='L8672' name='L8672'&gt;&lt;/a&gt;  \xspaceskip\z@skip
<a id='L8687' name='L8687'></a>&lt;a id='L8673' name='L8673'&gt;&lt;/a&gt;  \parindent\defaultparindent
<a id='L8688' name='L8688'></a>&lt;a id='L8674' name='L8674'&gt;&lt;/a&gt;  %
<a id='L8689' name='L8689'></a>&lt;a id='L8675' name='L8675'&gt;&lt;/a&gt;  \smallfonts \rm
<a id='L8690' name='L8690'></a>&lt;a id='L8676' name='L8676'&gt;&lt;/a&gt;  %
<a id='L8691' name='L8691'></a>&lt;a id='L8677' name='L8677'&gt;&lt;/a&gt;  % Because we use hanging indentation in footnotes, a @noindent appears
<a id='L8692' name='L8692'></a>&lt;a id='L8678' name='L8678'&gt;&lt;/a&gt;  % to exdent this text, so make it be a no-op.  makeinfo does not use
<a id='L8693' name='L8693'></a>&lt;a id='L8679' name='L8679'&gt;&lt;/a&gt;  % hanging indentation so @noindent can still be needed within footnote
<a id='L8694' name='L8694'></a>&lt;a id='L8680' name='L8680'&gt;&lt;/a&gt;  % text after an @example or the like (not that this is good style).
<a id='L8695' name='L8695'></a>&lt;a id='L8681' name='L8681'&gt;&lt;/a&gt;  \let\noindent = \relax
<a id='L8696' name='L8696'></a>&lt;a id='L8682' name='L8682'&gt;&lt;/a&gt;  %
<a id='L8697' name='L8697'></a>&lt;a id='L8683' name='L8683'&gt;&lt;/a&gt;  % Hang the footnote text off the number.  Use \everypar in case the
<a id='L8698' name='L8698'></a>&lt;a id='L8684' name='L8684'&gt;&lt;/a&gt;  % footnote extends for more than one paragraph.
<a id='L8699' name='L8699'></a>&lt;a id='L8685' name='L8685'&gt;&lt;/a&gt;  \everypar = {\hang}%
<a id='L8700' name='L8700'></a>&lt;a id='L8686' name='L8686'&gt;&lt;/a&gt;  \textindent{\thisfootno}%
<a id='L8701' name='L8701'></a>&lt;a id='L8687' name='L8687'&gt;&lt;/a&gt;  %
<a id='L8702' name='L8702'></a>&lt;a id='L8688' name='L8688'&gt;&lt;/a&gt;  % Don't crash into the line above the footnote text.  Since this
<a id='L8703' name='L8703'></a>&lt;a id='L8689' name='L8689'&gt;&lt;/a&gt;  % expands into a box, it must come within the paragraph, lest it
<a id='L8704' name='L8704'></a>&lt;a id='L8690' name='L8690'&gt;&lt;/a&gt;  % provide a place where TeX can split the footnote.
<a id='L8705' name='L8705'></a>&lt;a id='L8691' name='L8691'&gt;&lt;/a&gt;  \footstrut
<a id='L8706' name='L8706'></a>&lt;a id='L8692' name='L8692'&gt;&lt;/a&gt;  %
<a id='L8707' name='L8707'></a>&lt;a id='L8693' name='L8693'&gt;&lt;/a&gt;  % Invoke rest of plain TeX footnote routine.
<a id='L8708' name='L8708'></a>&lt;a id='L8694' name='L8694'&gt;&lt;/a&gt;  \futurelet\next\fo@t
<a id='L8709' name='L8709'></a>&lt;a id='L8695' name='L8695'&gt;&lt;/a&gt;}
<a id='L8710' name='L8710'></a>&lt;a id='L8696' name='L8696'&gt;&lt;/a&gt;}%end \catcode `\@=11
<a id='L8711' name='L8711'></a>&lt;a id='L8697' name='L8697'&gt;&lt;/a&gt;
<a id='L8712' name='L8712'></a>&lt;a id='L8698' name='L8698'&gt;&lt;/a&gt;% In case a @footnote appears in a vbox, save the footnote text and create
<a id='L8713' name='L8713'></a>&lt;a id='L8699' name='L8699'&gt;&lt;/a&gt;% the real \insert just after the vbox finished.  Otherwise, the insertion
<a id='L8714' name='L8714'></a>&lt;a id='L8700' name='L8700'&gt;&lt;/a&gt;% would be lost.
<a id='L8715' name='L8715'></a>&lt;a id='L8701' name='L8701'&gt;&lt;/a&gt;% Similarly, if a @footnote appears inside an alignment, save the footnote
<a id='L8716' name='L8716'></a>&lt;a id='L8702' name='L8702'&gt;&lt;/a&gt;% text to a box and make the \insert when a row of the table is finished.
<a id='L8717' name='L8717'></a>&lt;a id='L8703' name='L8703'&gt;&lt;/a&gt;% And the same can be done for other insert classes.  --kasal, 16nov03.
<a id='L8718' name='L8718'></a>&lt;a id='L8704' name='L8704'&gt;&lt;/a&gt;
<a id='L8719' name='L8719'></a>&lt;a id='L8705' name='L8705'&gt;&lt;/a&gt;% Replace the \insert primitive by a cheating macro.
<a id='L8720' name='L8720'></a>&lt;a id='L8706' name='L8706'&gt;&lt;/a&gt;% Deeper inside, just make sure that the saved insertions are not spilled
<a id='L8721' name='L8721'></a>&lt;a id='L8707' name='L8707'&gt;&lt;/a&gt;% out prematurely.
<a id='L8722' name='L8722'></a>&lt;a id='L8708' name='L8708'&gt;&lt;/a&gt;%
<a id='L8723' name='L8723'></a>&lt;a id='L8709' name='L8709'&gt;&lt;/a&gt;\def\startsavinginserts{%
<a id='L8724' name='L8724'></a>&lt;a id='L8710' name='L8710'&gt;&lt;/a&gt;  \ifx \insert\ptexinsert
<a id='L8725' name='L8725'></a>&lt;a id='L8711' name='L8711'&gt;&lt;/a&gt;    \let\insert\saveinsert
<a id='L8726' name='L8726'></a>&lt;a id='L8712' name='L8712'&gt;&lt;/a&gt;  \else
<a id='L8727' name='L8727'></a>&lt;a id='L8713' name='L8713'&gt;&lt;/a&gt;    \let\checkinserts\relax
<a id='L8728' name='L8728'></a>&lt;a id='L8714' name='L8714'&gt;&lt;/a&gt;  \fi
<a id='L8729' name='L8729'></a>&lt;a id='L8715' name='L8715'&gt;&lt;/a&gt;}
<a id='L8730' name='L8730'></a>&lt;a id='L8716' name='L8716'&gt;&lt;/a&gt;
<a id='L8731' name='L8731'></a>&lt;a id='L8717' name='L8717'&gt;&lt;/a&gt;% This \insert replacement works for both \insert\footins{foo} and
<a id='L8732' name='L8732'></a>&lt;a id='L8718' name='L8718'&gt;&lt;/a&gt;% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}.
<a id='L8733' name='L8733'></a>&lt;a id='L8719' name='L8719'&gt;&lt;/a&gt;%
<a id='L8734' name='L8734'></a>&lt;a id='L8720' name='L8720'&gt;&lt;/a&gt;\def\saveinsert#1{%
<a id='L8735' name='L8735'></a>&lt;a id='L8721' name='L8721'&gt;&lt;/a&gt;  \edef\next{\noexpand\savetobox \makeSAVEname#1}%
<a id='L8736' name='L8736'></a>&lt;a id='L8722' name='L8722'&gt;&lt;/a&gt;  \afterassignment\next
<a id='L8737' name='L8737'></a>&lt;a id='L8723' name='L8723'&gt;&lt;/a&gt;  % swallow the left brace
<a id='L8738' name='L8738'></a>&lt;a id='L8724' name='L8724'&gt;&lt;/a&gt;  \let\temp =
<a id='L8739' name='L8739'></a>&lt;a id='L8725' name='L8725'&gt;&lt;/a&gt;}
<a id='L8740' name='L8740'></a>&lt;a id='L8726' name='L8726'&gt;&lt;/a&gt;\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}}
<a id='L8741' name='L8741'></a>&lt;a id='L8727' name='L8727'&gt;&lt;/a&gt;\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1}
<a id='L8742' name='L8742'></a>&lt;a id='L8728' name='L8728'&gt;&lt;/a&gt;
<a id='L8743' name='L8743'></a>&lt;a id='L8729' name='L8729'&gt;&lt;/a&gt;\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi}
<a id='L8744' name='L8744'></a>&lt;a id='L8730' name='L8730'&gt;&lt;/a&gt;
<a id='L8745' name='L8745'></a>&lt;a id='L8731' name='L8731'&gt;&lt;/a&gt;\def\placesaveins#1{%
<a id='L8746' name='L8746'></a>&lt;a id='L8732' name='L8732'&gt;&lt;/a&gt;  \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname
<a id='L8747' name='L8747'></a>&lt;a id='L8733' name='L8733'&gt;&lt;/a&gt;    {\box#1}%
<a id='L8748' name='L8748'></a>&lt;a id='L8734' name='L8734'&gt;&lt;/a&gt;}
<a id='L8749' name='L8749'></a>&lt;a id='L8735' name='L8735'&gt;&lt;/a&gt;
<a id='L8750' name='L8750'></a>&lt;a id='L8736' name='L8736'&gt;&lt;/a&gt;% eat @SAVE -- beware, all of them have catcode \other:
<a id='L8751' name='L8751'></a>&lt;a id='L8737' name='L8737'&gt;&lt;/a&gt;{
<a id='L8752' name='L8752'></a>&lt;a id='L8738' name='L8738'&gt;&lt;/a&gt;  \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials  %  ;-)
<a id='L8753' name='L8753'></a>&lt;a id='L8739' name='L8739'&gt;&lt;/a&gt;  \gdef\gobblesave @SAVE{}
<a id='L8754' name='L8754'></a>&lt;a id='L8740' name='L8740'&gt;&lt;/a&gt;}
<a id='L8755' name='L8755'></a>&lt;a id='L8741' name='L8741'&gt;&lt;/a&gt;
<a id='L8756' name='L8756'></a>&lt;a id='L8742' name='L8742'&gt;&lt;/a&gt;% initialization:
<a id='L8757' name='L8757'></a>&lt;a id='L8743' name='L8743'&gt;&lt;/a&gt;\def\newsaveins #1{%
<a id='L8758' name='L8758'></a>&lt;a id='L8744' name='L8744'&gt;&lt;/a&gt;  \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}%
<a id='L8759' name='L8759'></a>&lt;a id='L8745' name='L8745'&gt;&lt;/a&gt;  \next
<a id='L8760' name='L8760'></a>&lt;a id='L8746' name='L8746'&gt;&lt;/a&gt;}
<a id='L8761' name='L8761'></a>&lt;a id='L8747' name='L8747'&gt;&lt;/a&gt;\def\newsaveinsX #1{%
<a id='L8762' name='L8762'></a>&lt;a id='L8748' name='L8748'&gt;&lt;/a&gt;  \csname newbox\endcsname #1%
<a id='L8763' name='L8763'></a>&lt;a id='L8749' name='L8749'&gt;&lt;/a&gt;  \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts
<a id='L8764' name='L8764'></a>&lt;a id='L8750' name='L8750'&gt;&lt;/a&gt;    \checksaveins #1}%
<a id='L8765' name='L8765'></a>&lt;a id='L8751' name='L8751'&gt;&lt;/a&gt;}
<a id='L8766' name='L8766'></a>&lt;a id='L8752' name='L8752'&gt;&lt;/a&gt;
<a id='L8767' name='L8767'></a>&lt;a id='L8753' name='L8753'&gt;&lt;/a&gt;% initialize:
<a id='L8768' name='L8768'></a>&lt;a id='L8754' name='L8754'&gt;&lt;/a&gt;\let\checkinserts\empty
<a id='L8769' name='L8769'></a>&lt;a id='L8755' name='L8755'&gt;&lt;/a&gt;\newsaveins\footins
<a id='L8770' name='L8770'></a>&lt;a id='L8756' name='L8756'&gt;&lt;/a&gt;\newsaveins\margin
<a id='L8771' name='L8771'></a>&lt;a id='L8757' name='L8757'&gt;&lt;/a&gt;
<a id='L8772' name='L8772'></a>&lt;a id='L8758' name='L8758'&gt;&lt;/a&gt;
<a id='L8773' name='L8773'></a>&lt;a id='L8759' name='L8759'&gt;&lt;/a&gt;% @image.  We use the macros from epsf.tex to support this.
<a id='L8774' name='L8774'></a>&lt;a id='L8760' name='L8760'&gt;&lt;/a&gt;% If epsf.tex is not installed and @image is used, we complain.
<a id='L8775' name='L8775'></a>&lt;a id='L8761' name='L8761'&gt;&lt;/a&gt;%
<a id='L8776' name='L8776'></a>&lt;a id='L8762' name='L8762'&gt;&lt;/a&gt;% Check for and read epsf.tex up front.  If we read it only at @image
<a id='L8777' name='L8777'></a>&lt;a id='L8763' name='L8763'&gt;&lt;/a&gt;% time, we might be inside a group, and then its definitions would get
<a id='L8778' name='L8778'></a>&lt;a id='L8764' name='L8764'&gt;&lt;/a&gt;% undone and the next image would fail.
<a id='L8779' name='L8779'></a>&lt;a id='L8765' name='L8765'&gt;&lt;/a&gt;\openin 1 = epsf.tex
<a id='L8780' name='L8780'></a>&lt;a id='L8766' name='L8766'&gt;&lt;/a&gt;\ifeof 1 \else
<a id='L8781' name='L8781'></a>&lt;a id='L8767' name='L8767'&gt;&lt;/a&gt;  % Do not bother showing banner with epsf.tex v2.7k (available in
<a id='L8782' name='L8782'></a>&lt;a id='L8768' name='L8768'&gt;&lt;/a&gt;  % doc/epsf.tex and on ctan).
<a id='L8783' name='L8783'></a>&lt;a id='L8769' name='L8769'&gt;&lt;/a&gt;  \def\epsfannounce{\toks0 = }%
<a id='L8784' name='L8784'></a>&lt;a id='L8770' name='L8770'&gt;&lt;/a&gt;  \input epsf.tex
<a id='L8785' name='L8785'></a>&lt;a id='L8771' name='L8771'&gt;&lt;/a&gt;\fi
<a id='L8786' name='L8786'></a>&lt;a id='L8772' name='L8772'&gt;&lt;/a&gt;\closein 1
<a id='L8787' name='L8787'></a>&lt;a id='L8773' name='L8773'&gt;&lt;/a&gt;%
<a id='L8788' name='L8788'></a>&lt;a id='L8774' name='L8774'&gt;&lt;/a&gt;% We will only complain once about lack of epsf.tex.
<a id='L8789' name='L8789'></a>&lt;a id='L8775' name='L8775'&gt;&lt;/a&gt;\newif\ifwarnednoepsf
<a id='L8790' name='L8790'></a>&lt;a id='L8776' name='L8776'&gt;&lt;/a&gt;\newhelp\noepsfhelp{epsf.tex must be installed for images to
<a id='L8791' name='L8791'></a>&lt;a id='L8777' name='L8777'&gt;&lt;/a&gt;  work.  It is also included in the Texinfo distribution, or you can get
<a id='L8792' name='L8792'></a>&lt;a id='L8778' name='L8778'&gt;&lt;/a&gt;  it from ftp://tug.org/tex/epsf.tex.}
<a id='L8793' name='L8793'></a>&lt;a id='L8779' name='L8779'&gt;&lt;/a&gt;%
<a id='L8794' name='L8794'></a>&lt;a id='L8780' name='L8780'&gt;&lt;/a&gt;\def\image#1{%
<a id='L8795' name='L8795'></a>&lt;a id='L8781' name='L8781'&gt;&lt;/a&gt;  \ifx\epsfbox\thisisundefined
<a id='L8796' name='L8796'></a>&lt;a id='L8782' name='L8782'&gt;&lt;/a&gt;    \ifwarnednoepsf \else
<a id='L8797' name='L8797'></a>&lt;a id='L8783' name='L8783'&gt;&lt;/a&gt;      \errhelp = \noepsfhelp
<a id='L8798' name='L8798'></a>&lt;a id='L8784' name='L8784'&gt;&lt;/a&gt;      \errmessage{epsf.tex not found, images will be ignored}%
<a id='L8799' name='L8799'></a>&lt;a id='L8785' name='L8785'&gt;&lt;/a&gt;      \global\warnednoepsftrue
<a id='L8800' name='L8800'></a>&lt;a id='L8786' name='L8786'&gt;&lt;/a&gt;    \fi
<a id='L8801' name='L8801'></a>&lt;a id='L8787' name='L8787'&gt;&lt;/a&gt;  \else
<a id='L8802' name='L8802'></a>&lt;a id='L8788' name='L8788'&gt;&lt;/a&gt;    \imagexxx #1,,,,,\finish
<a id='L8803' name='L8803'></a>&lt;a id='L8789' name='L8789'&gt;&lt;/a&gt;  \fi
<a id='L8804' name='L8804'></a>&lt;a id='L8790' name='L8790'&gt;&lt;/a&gt;}
<a id='L8805' name='L8805'></a>&lt;a id='L8791' name='L8791'&gt;&lt;/a&gt;%
<a id='L8806' name='L8806'></a>&lt;a id='L8792' name='L8792'&gt;&lt;/a&gt;% Arguments to @image:
<a id='L8807' name='L8807'></a>&lt;a id='L8793' name='L8793'&gt;&lt;/a&gt;% #1 is (mandatory) image filename; we tack on .eps extension.
<a id='L8808' name='L8808'></a>&lt;a id='L8794' name='L8794'&gt;&lt;/a&gt;% #2 is (optional) width, #3 is (optional) height.
<a id='L8809' name='L8809'></a>&lt;a id='L8795' name='L8795'&gt;&lt;/a&gt;% #4 is (ignored optional) html alt text.
<a id='L8810' name='L8810'></a>&lt;a id='L8796' name='L8796'&gt;&lt;/a&gt;% #5 is (ignored optional) extension.
<a id='L8811' name='L8811'></a>&lt;a id='L8797' name='L8797'&gt;&lt;/a&gt;% #6 is just the usual extra ignored arg for parsing stuff.
<a id='L8812' name='L8812'></a>&lt;a id='L8798' name='L8798'&gt;&lt;/a&gt;\newif\ifimagevmode
<a id='L8813' name='L8813'></a>&lt;a id='L8799' name='L8799'&gt;&lt;/a&gt;\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
<a id='L8814' name='L8814'></a>&lt;a id='L8800' name='L8800'&gt;&lt;/a&gt;  \catcode`\^^M = 5     % in case we're inside an example
<a id='L8815' name='L8815'></a>&lt;a id='L8801' name='L8801'&gt;&lt;/a&gt;  \normalturnoffactive  % allow _ et al. in names
<a id='L8816' name='L8816'></a>&lt;a id='L8802' name='L8802'&gt;&lt;/a&gt;  % If the image is by itself, center it.
<a id='L8817' name='L8817'></a>&lt;a id='L8803' name='L8803'&gt;&lt;/a&gt;  \ifvmode
<a id='L8818' name='L8818'></a>&lt;a id='L8804' name='L8804'&gt;&lt;/a&gt;    \imagevmodetrue
<a id='L8819' name='L8819'></a>&lt;a id='L8805' name='L8805'&gt;&lt;/a&gt;  \else \ifx\centersub\centerV
<a id='L8820' name='L8820'></a>&lt;a id='L8806' name='L8806'&gt;&lt;/a&gt;    % for @center @image, we need a vbox so we can have our vertical space
<a id='L8821' name='L8821'></a>&lt;a id='L8807' name='L8807'&gt;&lt;/a&gt;    \imagevmodetrue
<a id='L8822' name='L8822'></a>&lt;a id='L8808' name='L8808'&gt;&lt;/a&gt;    \vbox\bgroup % vbox has better behavior than vtop herev
<a id='L8823' name='L8823'></a>&lt;a id='L8809' name='L8809'&gt;&lt;/a&gt;  \fi\fi
<a id='L8824' name='L8824'></a>&lt;a id='L8810' name='L8810'&gt;&lt;/a&gt;  %
<a id='L8825' name='L8825'></a>&lt;a id='L8811' name='L8811'&gt;&lt;/a&gt;  \ifimagevmode
<a id='L8826' name='L8826'></a>&lt;a id='L8812' name='L8812'&gt;&lt;/a&gt;    \nobreak\medskip
<a id='L8827' name='L8827'></a>&lt;a id='L8813' name='L8813'&gt;&lt;/a&gt;    % Usually we'll have text after the image which will insert
<a id='L8828' name='L8828'></a>&lt;a id='L8814' name='L8814'&gt;&lt;/a&gt;    % \parskip glue, so insert it here too to equalize the space
<a id='L8829' name='L8829'></a>&lt;a id='L8815' name='L8815'&gt;&lt;/a&gt;    % above and below.
<a id='L8830' name='L8830'></a>&lt;a id='L8816' name='L8816'&gt;&lt;/a&gt;    \nobreak\vskip\parskip
<a id='L8831' name='L8831'></a>&lt;a id='L8817' name='L8817'&gt;&lt;/a&gt;    \nobreak
<a id='L8832' name='L8832'></a>&lt;a id='L8818' name='L8818'&gt;&lt;/a&gt;  \fi
<a id='L8833' name='L8833'></a>&lt;a id='L8819' name='L8819'&gt;&lt;/a&gt;  %
<a id='L8834' name='L8834'></a>&lt;a id='L8820' name='L8820'&gt;&lt;/a&gt;  % Leave vertical mode so that indentation from an enclosing
<a id='L8835' name='L8835'></a>&lt;a id='L8821' name='L8821'&gt;&lt;/a&gt;  %  environment such as @quotation is respected.
<a id='L8836' name='L8836'></a>&lt;a id='L8822' name='L8822'&gt;&lt;/a&gt;  % However, if we're at the top level, we don't want the
<a id='L8837' name='L8837'></a>&lt;a id='L8823' name='L8823'&gt;&lt;/a&gt;  %  normal paragraph indentation.
<a id='L8838' name='L8838'></a>&lt;a id='L8824' name='L8824'&gt;&lt;/a&gt;  % On the other hand, if we are in the case of @center @image, we don't
<a id='L8839' name='L8839'></a>&lt;a id='L8825' name='L8825'&gt;&lt;/a&gt;  %  want to start a paragraph, which will create a hsize-width box and
<a id='L8840' name='L8840'></a>&lt;a id='L8826' name='L8826'&gt;&lt;/a&gt;  %  eradicate the centering.
<a id='L8841' name='L8841'></a>&lt;a id='L8827' name='L8827'&gt;&lt;/a&gt;  \ifx\centersub\centerV\else \noindent \fi
<a id='L8842' name='L8842'></a>&lt;a id='L8828' name='L8828'&gt;&lt;/a&gt;  %
<a id='L8843' name='L8843'></a>&lt;a id='L8829' name='L8829'&gt;&lt;/a&gt;  % Output the image.
<a id='L8844' name='L8844'></a>&lt;a id='L8830' name='L8830'&gt;&lt;/a&gt;  \ifpdf
<a id='L8845' name='L8845'></a>&lt;a id='L8831' name='L8831'&gt;&lt;/a&gt;    \dopdfimage{#1}{#2}{#3}%
<a id='L8846' name='L8846'></a>&lt;a id='L8832' name='L8832'&gt;&lt;/a&gt;  \else
<a id='L8847' name='L8847'></a>&lt;a id='L8833' name='L8833'&gt;&lt;/a&gt;    % \epsfbox itself resets \epsf?size at each figure.
<a id='L8848' name='L8848'></a>&lt;a id='L8834' name='L8834'&gt;&lt;/a&gt;    \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 &amp;gt; 0pt \epsfxsize=#2\relax \fi
<a id='L8849' name='L8849'></a>&lt;a id='L8835' name='L8835'&gt;&lt;/a&gt;    \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 &amp;gt; 0pt \epsfysize=#3\relax \fi
<a id='L8850' name='L8850'></a>&lt;a id='L8836' name='L8836'&gt;&lt;/a&gt;    \epsfbox{#1.eps}%
<a id='L8851' name='L8851'></a>&lt;a id='L8837' name='L8837'&gt;&lt;/a&gt;  \fi
<a id='L8852' name='L8852'></a>&lt;a id='L8838' name='L8838'&gt;&lt;/a&gt;  %
<a id='L8853' name='L8853'></a>&lt;a id='L8839' name='L8839'&gt;&lt;/a&gt;  \ifimagevmode
<a id='L8854' name='L8854'></a>&lt;a id='L8840' name='L8840'&gt;&lt;/a&gt;    \medskip  % space after a standalone image
<a id='L8855' name='L8855'></a>&lt;a id='L8841' name='L8841'&gt;&lt;/a&gt;  \fi  
<a id='L8856' name='L8856'></a>&lt;a id='L8842' name='L8842'&gt;&lt;/a&gt;  \ifx\centersub\centerV \egroup \fi
<a id='L8857' name='L8857'></a>&lt;a id='L8843' name='L8843'&gt;&lt;/a&gt;\endgroup}
<a id='L8858' name='L8858'></a>&lt;a id='L8844' name='L8844'&gt;&lt;/a&gt;
<a id='L8859' name='L8859'></a>&lt;a id='L8845' name='L8845'&gt;&lt;/a&gt;
<a id='L8860' name='L8860'></a>&lt;a id='L8846' name='L8846'&gt;&lt;/a&gt;% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables,
<a id='L8861' name='L8861'></a>&lt;a id='L8847' name='L8847'&gt;&lt;/a&gt;% etc.  We don't actually implement floating yet, we always include the
<a id='L8862' name='L8862'></a>&lt;a id='L8848' name='L8848'&gt;&lt;/a&gt;% float "here".  But it seemed the best name for the future.
<a id='L8863' name='L8863'></a>&lt;a id='L8849' name='L8849'&gt;&lt;/a&gt;%
<a id='L8864' name='L8864'></a>&lt;a id='L8850' name='L8850'&gt;&lt;/a&gt;\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish}
<a id='L8865' name='L8865'></a>&lt;a id='L8851' name='L8851'&gt;&lt;/a&gt;
<a id='L8866' name='L8866'></a>&lt;a id='L8852' name='L8852'&gt;&lt;/a&gt;% There may be a space before second and/or third parameter; delete it.
<a id='L8867' name='L8867'></a>&lt;a id='L8853' name='L8853'&gt;&lt;/a&gt;\def\eatcommaspace#1, {#1,}
<a id='L8868' name='L8868'></a>&lt;a id='L8854' name='L8854'&gt;&lt;/a&gt;
<a id='L8869' name='L8869'></a>&lt;a id='L8855' name='L8855'&gt;&lt;/a&gt;% #1 is the optional FLOATTYPE, the text label for this float, typically
<a id='L8870' name='L8870'></a>&lt;a id='L8856' name='L8856'&gt;&lt;/a&gt;% "Figure", "Table", "Example", etc.  Can't contain commas.  If omitted,
<a id='L8871' name='L8871'></a>&lt;a id='L8857' name='L8857'&gt;&lt;/a&gt;% this float will not be numbered and cannot be referred to.
<a id='L8872' name='L8872'></a>&lt;a id='L8858' name='L8858'&gt;&lt;/a&gt;%
<a id='L8873' name='L8873'></a>&lt;a id='L8859' name='L8859'&gt;&lt;/a&gt;% #2 is the optional xref label.  Also must be present for the float to
<a id='L8874' name='L8874'></a>&lt;a id='L8860' name='L8860'&gt;&lt;/a&gt;% be referable.
<a id='L8875' name='L8875'></a>&lt;a id='L8861' name='L8861'&gt;&lt;/a&gt;%
<a id='L8876' name='L8876'></a>&lt;a id='L8862' name='L8862'&gt;&lt;/a&gt;% #3 is the optional positioning argument; for now, it is ignored.  It
<a id='L8877' name='L8877'></a>&lt;a id='L8863' name='L8863'&gt;&lt;/a&gt;% will somehow specify the positions allowed to float to (here, top, bottom).
<a id='L8878' name='L8878'></a>&lt;a id='L8864' name='L8864'&gt;&lt;/a&gt;%
<a id='L8879' name='L8879'></a>&lt;a id='L8865' name='L8865'&gt;&lt;/a&gt;% We keep a separate counter for each FLOATTYPE, which we reset at each
<a id='L8880' name='L8880'></a>&lt;a id='L8866' name='L8866'&gt;&lt;/a&gt;% chapter-level command.
<a id='L8881' name='L8881'></a>&lt;a id='L8867' name='L8867'&gt;&lt;/a&gt;\let\resetallfloatnos=\empty
<a id='L8882' name='L8882'></a>&lt;a id='L8868' name='L8868'&gt;&lt;/a&gt;%
<a id='L8883' name='L8883'></a>&lt;a id='L8869' name='L8869'&gt;&lt;/a&gt;\def\dofloat#1,#2,#3,#4\finish{%
<a id='L8884' name='L8884'></a>&lt;a id='L8870' name='L8870'&gt;&lt;/a&gt;  \let\thiscaption=\empty
<a id='L8885' name='L8885'></a>&lt;a id='L8871' name='L8871'&gt;&lt;/a&gt;  \let\thisshortcaption=\empty
<a id='L8886' name='L8886'></a>&lt;a id='L8872' name='L8872'&gt;&lt;/a&gt;  %
<a id='L8887' name='L8887'></a>&lt;a id='L8873' name='L8873'&gt;&lt;/a&gt;  % don't lose footnotes inside @float.
<a id='L8888' name='L8888'></a>&lt;a id='L8874' name='L8874'&gt;&lt;/a&gt;  %
<a id='L8889' name='L8889'></a>&lt;a id='L8875' name='L8875'&gt;&lt;/a&gt;  % BEWARE: when the floats start float, we have to issue warning whenever an
<a id='L8890' name='L8890'></a>&lt;a id='L8876' name='L8876'&gt;&lt;/a&gt;  % insert appears inside a float which could possibly float. --kasal, 26may04
<a id='L8891' name='L8891'></a>&lt;a id='L8877' name='L8877'&gt;&lt;/a&gt;  %
<a id='L8892' name='L8892'></a>&lt;a id='L8878' name='L8878'&gt;&lt;/a&gt;  \startsavinginserts
<a id='L8893' name='L8893'></a>&lt;a id='L8879' name='L8879'&gt;&lt;/a&gt;  %
<a id='L8894' name='L8894'></a>&lt;a id='L8880' name='L8880'&gt;&lt;/a&gt;  % We can't be used inside a paragraph.
<a id='L8895' name='L8895'></a>&lt;a id='L8881' name='L8881'&gt;&lt;/a&gt;  \par
<a id='L8896' name='L8896'></a>&lt;a id='L8882' name='L8882'&gt;&lt;/a&gt;  %
<a id='L8897' name='L8897'></a>&lt;a id='L8883' name='L8883'&gt;&lt;/a&gt;  \vtop\bgroup
<a id='L8898' name='L8898'></a>&lt;a id='L8884' name='L8884'&gt;&lt;/a&gt;    \def\floattype{#1}%
<a id='L8899' name='L8899'></a>&lt;a id='L8885' name='L8885'&gt;&lt;/a&gt;    \def\floatlabel{#2}%
<a id='L8900' name='L8900'></a>&lt;a id='L8886' name='L8886'&gt;&lt;/a&gt;    \def\floatloc{#3}% we do nothing with this yet.
<a id='L8901' name='L8901'></a>&lt;a id='L8887' name='L8887'&gt;&lt;/a&gt;    %
<a id='L8902' name='L8902'></a>&lt;a id='L8888' name='L8888'&gt;&lt;/a&gt;    \ifx\floattype\empty
<a id='L8903' name='L8903'></a>&lt;a id='L8889' name='L8889'&gt;&lt;/a&gt;      \let\safefloattype=\empty
<a id='L8904' name='L8904'></a>&lt;a id='L8890' name='L8890'&gt;&lt;/a&gt;    \else
<a id='L8905' name='L8905'></a>&lt;a id='L8891' name='L8891'&gt;&lt;/a&gt;      {%
<a id='L8906' name='L8906'></a>&lt;a id='L8892' name='L8892'&gt;&lt;/a&gt;        % the floattype might have accents or other special characters,
<a id='L8907' name='L8907'></a>&lt;a id='L8893' name='L8893'&gt;&lt;/a&gt;        % but we need to use it in a control sequence name.
<a id='L8908' name='L8908'></a>&lt;a id='L8894' name='L8894'&gt;&lt;/a&gt;        \indexnofonts
<a id='L8909' name='L8909'></a>&lt;a id='L8895' name='L8895'&gt;&lt;/a&gt;        \turnoffactive
<a id='L8910' name='L8910'></a>&lt;a id='L8896' name='L8896'&gt;&lt;/a&gt;        \xdef\safefloattype{\floattype}%
<a id='L8911' name='L8911'></a>&lt;a id='L8897' name='L8897'&gt;&lt;/a&gt;      }%
<a id='L8912' name='L8912'></a>&lt;a id='L8898' name='L8898'&gt;&lt;/a&gt;    \fi
<a id='L8913' name='L8913'></a>&lt;a id='L8899' name='L8899'&gt;&lt;/a&gt;    %
<a id='L8914' name='L8914'></a>&lt;a id='L8900' name='L8900'&gt;&lt;/a&gt;    % If label is given but no type, we handle that as the empty type.
<a id='L8915' name='L8915'></a>&lt;a id='L8901' name='L8901'&gt;&lt;/a&gt;    \ifx\floatlabel\empty \else
<a id='L8916' name='L8916'></a>&lt;a id='L8902' name='L8902'&gt;&lt;/a&gt;      % We want each FLOATTYPE to be numbered separately (Figure 1,
<a id='L8917' name='L8917'></a>&lt;a id='L8903' name='L8903'&gt;&lt;/a&gt;      % Table 1, Figure 2, ...).  (And if no label, no number.)
<a id='L8918' name='L8918'></a>&lt;a id='L8904' name='L8904'&gt;&lt;/a&gt;      %
<a id='L8919' name='L8919'></a>&lt;a id='L8905' name='L8905'&gt;&lt;/a&gt;      \expandafter\getfloatno\csname\safefloattype floatno\endcsname
<a id='L8920' name='L8920'></a>&lt;a id='L8906' name='L8906'&gt;&lt;/a&gt;      \global\advance\floatno by 1
<a id='L8921' name='L8921'></a>&lt;a id='L8907' name='L8907'&gt;&lt;/a&gt;      %
<a id='L8922' name='L8922'></a>&lt;a id='L8908' name='L8908'&gt;&lt;/a&gt;      {%
<a id='L8923' name='L8923'></a>&lt;a id='L8909' name='L8909'&gt;&lt;/a&gt;        % This magic value for \lastsection is output by \setref as the
<a id='L8924' name='L8924'></a>&lt;a id='L8910' name='L8910'&gt;&lt;/a&gt;        % XREFLABEL-title value.  \xrefX uses it to distinguish float
<a id='L8925' name='L8925'></a>&lt;a id='L8911' name='L8911'&gt;&lt;/a&gt;        % labels (which have a completely different output format) from
<a id='L8926' name='L8926'></a>&lt;a id='L8912' name='L8912'&gt;&lt;/a&gt;        % node and anchor labels.  And \xrdef uses it to construct the
<a id='L8927' name='L8927'></a>&lt;a id='L8913' name='L8913'&gt;&lt;/a&gt;        % lists of floats.
<a id='L8928' name='L8928'></a>&lt;a id='L8914' name='L8914'&gt;&lt;/a&gt;        %
<a id='L8929' name='L8929'></a>&lt;a id='L8915' name='L8915'&gt;&lt;/a&gt;        \edef\lastsection{\floatmagic=\safefloattype}%
<a id='L8930' name='L8930'></a>&lt;a id='L8916' name='L8916'&gt;&lt;/a&gt;        \setref{\floatlabel}{Yfloat}%
<a id='L8931' name='L8931'></a>&lt;a id='L8917' name='L8917'&gt;&lt;/a&gt;      }%
<a id='L8932' name='L8932'></a>&lt;a id='L8918' name='L8918'&gt;&lt;/a&gt;    \fi
<a id='L8933' name='L8933'></a>&lt;a id='L8919' name='L8919'&gt;&lt;/a&gt;    %
<a id='L8934' name='L8934'></a>&lt;a id='L8920' name='L8920'&gt;&lt;/a&gt;    % start with \parskip glue, I guess.
<a id='L8935' name='L8935'></a>&lt;a id='L8921' name='L8921'&gt;&lt;/a&gt;    \vskip\parskip
<a id='L8936' name='L8936'></a>&lt;a id='L8922' name='L8922'&gt;&lt;/a&gt;    %
<a id='L8937' name='L8937'></a>&lt;a id='L8923' name='L8923'&gt;&lt;/a&gt;    % Don't suppress indentation if a float happens to start a section.
<a id='L8938' name='L8938'></a>&lt;a id='L8924' name='L8924'&gt;&lt;/a&gt;    \restorefirstparagraphindent
<a id='L8939' name='L8939'></a>&lt;a id='L8925' name='L8925'&gt;&lt;/a&gt;}
<a id='L8940' name='L8940'></a>&lt;a id='L8926' name='L8926'&gt;&lt;/a&gt;
<a id='L8941' name='L8941'></a>&lt;a id='L8927' name='L8927'&gt;&lt;/a&gt;% we have these possibilities:
<a id='L8942' name='L8942'></a>&lt;a id='L8928' name='L8928'&gt;&lt;/a&gt;% @float Foo,lbl &amp;amp; @caption{Cap}: Foo 1.1: Cap
<a id='L8943' name='L8943'></a>&lt;a id='L8929' name='L8929'&gt;&lt;/a&gt;% @float Foo,lbl &amp;amp; no caption:    Foo 1.1
<a id='L8944' name='L8944'></a>&lt;a id='L8930' name='L8930'&gt;&lt;/a&gt;% @float Foo &amp;amp; @caption{Cap}:     Foo: Cap
<a id='L8945' name='L8945'></a>&lt;a id='L8931' name='L8931'&gt;&lt;/a&gt;% @float Foo &amp;amp; no caption:        Foo
<a id='L8946' name='L8946'></a>&lt;a id='L8932' name='L8932'&gt;&lt;/a&gt;% @float ,lbl &amp;amp; Caption{Cap}:     1.1: Cap
<a id='L8947' name='L8947'></a>&lt;a id='L8933' name='L8933'&gt;&lt;/a&gt;% @float ,lbl &amp;amp; no caption:       1.1
<a id='L8948' name='L8948'></a>&lt;a id='L8934' name='L8934'&gt;&lt;/a&gt;% @float &amp;amp; @caption{Cap}:         Cap
<a id='L8949' name='L8949'></a>&lt;a id='L8935' name='L8935'&gt;&lt;/a&gt;% @float &amp;amp; no caption:
<a id='L8950' name='L8950'></a>&lt;a id='L8936' name='L8936'&gt;&lt;/a&gt;%
<a id='L8951' name='L8951'></a>&lt;a id='L8937' name='L8937'&gt;&lt;/a&gt;\def\Efloat{%
<a id='L8952' name='L8952'></a>&lt;a id='L8938' name='L8938'&gt;&lt;/a&gt;    \let\floatident = \empty
<a id='L8953' name='L8953'></a>&lt;a id='L8939' name='L8939'&gt;&lt;/a&gt;    %
<a id='L8954' name='L8954'></a>&lt;a id='L8940' name='L8940'&gt;&lt;/a&gt;    % In all cases, if we have a float type, it comes first.
<a id='L8955' name='L8955'></a>&lt;a id='L8941' name='L8941'&gt;&lt;/a&gt;    \ifx\floattype\empty \else \def\floatident{\floattype}\fi
<a id='L8956' name='L8956'></a>&lt;a id='L8942' name='L8942'&gt;&lt;/a&gt;    %
<a id='L8957' name='L8957'></a>&lt;a id='L8943' name='L8943'&gt;&lt;/a&gt;    % If we have an xref label, the number comes next.
<a id='L8958' name='L8958'></a>&lt;a id='L8944' name='L8944'&gt;&lt;/a&gt;    \ifx\floatlabel\empty \else
<a id='L8959' name='L8959'></a>&lt;a id='L8945' name='L8945'&gt;&lt;/a&gt;      \ifx\floattype\empty \else % if also had float type, need tie first.
<a id='L8960' name='L8960'></a>&lt;a id='L8946' name='L8946'&gt;&lt;/a&gt;        \appendtomacro\floatident{\tie}%
<a id='L8961' name='L8961'></a>&lt;a id='L8947' name='L8947'&gt;&lt;/a&gt;      \fi
<a id='L8962' name='L8962'></a>&lt;a id='L8948' name='L8948'&gt;&lt;/a&gt;      % the number.
<a id='L8963' name='L8963'></a>&lt;a id='L8949' name='L8949'&gt;&lt;/a&gt;      \appendtomacro\floatident{\chaplevelprefix\the\floatno}%
<a id='L8964' name='L8964'></a>&lt;a id='L8950' name='L8950'&gt;&lt;/a&gt;    \fi
<a id='L8965' name='L8965'></a>&lt;a id='L8951' name='L8951'&gt;&lt;/a&gt;    %
<a id='L8966' name='L8966'></a>&lt;a id='L8952' name='L8952'&gt;&lt;/a&gt;    % Start the printed caption with what we've constructed in
<a id='L8967' name='L8967'></a>&lt;a id='L8953' name='L8953'&gt;&lt;/a&gt;    % \floatident, but keep it separate; we need \floatident again.
<a id='L8968' name='L8968'></a>&lt;a id='L8954' name='L8954'&gt;&lt;/a&gt;    \let\captionline = \floatident
<a id='L8969' name='L8969'></a>&lt;a id='L8955' name='L8955'&gt;&lt;/a&gt;    %
<a id='L8970' name='L8970'></a>&lt;a id='L8956' name='L8956'&gt;&lt;/a&gt;    \ifx\thiscaption\empty \else
<a id='L8971' name='L8971'></a>&lt;a id='L8957' name='L8957'&gt;&lt;/a&gt;      \ifx\floatident\empty \else
<a id='L8972' name='L8972'></a>&lt;a id='L8958' name='L8958'&gt;&lt;/a&gt;        \appendtomacro\captionline{: }% had ident, so need a colon between
<a id='L8973' name='L8973'></a>&lt;a id='L8959' name='L8959'&gt;&lt;/a&gt;      \fi
<a id='L8974' name='L8974'></a>&lt;a id='L8960' name='L8960'&gt;&lt;/a&gt;      %
<a id='L8975' name='L8975'></a>&lt;a id='L8961' name='L8961'&gt;&lt;/a&gt;      % caption text.
<a id='L8976' name='L8976'></a>&lt;a id='L8962' name='L8962'&gt;&lt;/a&gt;      \appendtomacro\captionline{\scanexp\thiscaption}%
<a id='L8977' name='L8977'></a>&lt;a id='L8963' name='L8963'&gt;&lt;/a&gt;    \fi
<a id='L8978' name='L8978'></a>&lt;a id='L8964' name='L8964'&gt;&lt;/a&gt;    %
<a id='L8979' name='L8979'></a>&lt;a id='L8965' name='L8965'&gt;&lt;/a&gt;    % If we have anything to print, print it, with space before.
<a id='L8980' name='L8980'></a>&lt;a id='L8966' name='L8966'&gt;&lt;/a&gt;    % Eventually this needs to become an \insert.
<a id='L8981' name='L8981'></a>&lt;a id='L8967' name='L8967'&gt;&lt;/a&gt;    \ifx\captionline\empty \else
<a id='L8982' name='L8982'></a>&lt;a id='L8968' name='L8968'&gt;&lt;/a&gt;      \vskip.5\parskip
<a id='L8983' name='L8983'></a>&lt;a id='L8969' name='L8969'&gt;&lt;/a&gt;      \captionline
<a id='L8984' name='L8984'></a>&lt;a id='L8970' name='L8970'&gt;&lt;/a&gt;      %
<a id='L8985' name='L8985'></a>&lt;a id='L8971' name='L8971'&gt;&lt;/a&gt;      % Space below caption.
<a id='L8986' name='L8986'></a>&lt;a id='L8972' name='L8972'&gt;&lt;/a&gt;      \vskip\parskip
<a id='L8987' name='L8987'></a>&lt;a id='L8973' name='L8973'&gt;&lt;/a&gt;    \fi
<a id='L8988' name='L8988'></a>&lt;a id='L8974' name='L8974'&gt;&lt;/a&gt;    %
<a id='L8989' name='L8989'></a>&lt;a id='L8975' name='L8975'&gt;&lt;/a&gt;    % If have an xref label, write the list of floats info.  Do this
<a id='L8990' name='L8990'></a>&lt;a id='L8976' name='L8976'&gt;&lt;/a&gt;    % after the caption, to avoid chance of it being a breakpoint.
<a id='L8991' name='L8991'></a>&lt;a id='L8977' name='L8977'&gt;&lt;/a&gt;    \ifx\floatlabel\empty \else
<a id='L8992' name='L8992'></a>&lt;a id='L8978' name='L8978'&gt;&lt;/a&gt;      % Write the text that goes in the lof to the aux file as
<a id='L8993' name='L8993'></a>&lt;a id='L8979' name='L8979'&gt;&lt;/a&gt;      % \floatlabel-lof.  Besides \floatident, we include the short
<a id='L8994' name='L8994'></a>&lt;a id='L8980' name='L8980'&gt;&lt;/a&gt;      % caption if specified, else the full caption if specified, else nothing.
<a id='L8995' name='L8995'></a>&lt;a id='L8981' name='L8981'&gt;&lt;/a&gt;      {%
<a id='L8996' name='L8996'></a>&lt;a id='L8982' name='L8982'&gt;&lt;/a&gt;        \atdummies
<a id='L8997' name='L8997'></a>&lt;a id='L8983' name='L8983'&gt;&lt;/a&gt;        %
<a id='L8998' name='L8998'></a>&lt;a id='L8984' name='L8984'&gt;&lt;/a&gt;        % since we read the caption text in the macro world, where ^^M
<a id='L8999' name='L8999'></a>&lt;a id='L8985' name='L8985'&gt;&lt;/a&gt;        % is turned into a normal character, we have to scan it back, so
<a id='L9000' name='L9000'></a>&lt;a id='L8986' name='L8986'&gt;&lt;/a&gt;        % we don't write the literal three characters "^^M" into the aux file.
<a id='L9001' name='L9001'></a>&lt;a id='L8987' name='L8987'&gt;&lt;/a&gt;        \scanexp{%
<a id='L9002' name='L9002'></a>&lt;a id='L8988' name='L8988'&gt;&lt;/a&gt;          \xdef\noexpand\gtemp{%
<a id='L9003' name='L9003'></a>&lt;a id='L8989' name='L8989'&gt;&lt;/a&gt;            \ifx\thisshortcaption\empty
<a id='L9004' name='L9004'></a>&lt;a id='L8990' name='L8990'&gt;&lt;/a&gt;              \thiscaption
<a id='L9005' name='L9005'></a>&lt;a id='L8991' name='L8991'&gt;&lt;/a&gt;            \else
<a id='L9006' name='L9006'></a>&lt;a id='L8992' name='L8992'&gt;&lt;/a&gt;              \thisshortcaption
<a id='L9007' name='L9007'></a>&lt;a id='L8993' name='L8993'&gt;&lt;/a&gt;            \fi
<a id='L9008' name='L9008'></a>&lt;a id='L8994' name='L8994'&gt;&lt;/a&gt;          }%
<a id='L9009' name='L9009'></a>&lt;a id='L8995' name='L8995'&gt;&lt;/a&gt;        }%
<a id='L9010' name='L9010'></a>&lt;a id='L8996' name='L8996'&gt;&lt;/a&gt;        \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident
<a id='L9011' name='L9011'></a>&lt;a id='L8997' name='L8997'&gt;&lt;/a&gt;          \ifx\gtemp\empty \else : \gtemp \fi}}%
<a id='L9012' name='L9012'></a>&lt;a id='L8998' name='L8998'&gt;&lt;/a&gt;      }%
<a id='L9013' name='L9013'></a>&lt;a id='L8999' name='L8999'&gt;&lt;/a&gt;    \fi
<a id='L9014' name='L9014'></a>&lt;a id='L9000' name='L9000'&gt;&lt;/a&gt;  \egroup  % end of \vtop
<a id='L9015' name='L9015'></a>&lt;a id='L9001' name='L9001'&gt;&lt;/a&gt;  %
<a id='L9016' name='L9016'></a>&lt;a id='L9002' name='L9002'&gt;&lt;/a&gt;  % place the captured inserts
<a id='L9017' name='L9017'></a>&lt;a id='L9003' name='L9003'&gt;&lt;/a&gt;  %
<a id='L9018' name='L9018'></a>&lt;a id='L9004' name='L9004'&gt;&lt;/a&gt;  % BEWARE: when the floats start floating, we have to issue warning
<a id='L9019' name='L9019'></a>&lt;a id='L9005' name='L9005'&gt;&lt;/a&gt;  % whenever an insert appears inside a float which could possibly
<a id='L9020' name='L9020'></a>&lt;a id='L9006' name='L9006'&gt;&lt;/a&gt;  % float. --kasal, 26may04
<a id='L9021' name='L9021'></a>&lt;a id='L9007' name='L9007'&gt;&lt;/a&gt;  %
<a id='L9022' name='L9022'></a>&lt;a id='L9008' name='L9008'&gt;&lt;/a&gt;  \checkinserts
<a id='L9023' name='L9023'></a>&lt;a id='L9009' name='L9009'&gt;&lt;/a&gt;}
<a id='L9024' name='L9024'></a>&lt;a id='L9010' name='L9010'&gt;&lt;/a&gt;
<a id='L9025' name='L9025'></a>&lt;a id='L9011' name='L9011'&gt;&lt;/a&gt;% Append the tokens #2 to the definition of macro #1, not expanding either.
<a id='L9026' name='L9026'></a>&lt;a id='L9012' name='L9012'&gt;&lt;/a&gt;%
<a id='L9027' name='L9027'></a>&lt;a id='L9013' name='L9013'&gt;&lt;/a&gt;\def\appendtomacro#1#2{%
<a id='L9028' name='L9028'></a>&lt;a id='L9014' name='L9014'&gt;&lt;/a&gt;  \expandafter\def\expandafter#1\expandafter{#1#2}%
<a id='L9029' name='L9029'></a>&lt;a id='L9015' name='L9015'&gt;&lt;/a&gt;}
<a id='L9030' name='L9030'></a>&lt;a id='L9016' name='L9016'&gt;&lt;/a&gt;
<a id='L9031' name='L9031'></a>&lt;a id='L9017' name='L9017'&gt;&lt;/a&gt;% @caption, @shortcaption
<a id='L9032' name='L9032'></a>&lt;a id='L9018' name='L9018'&gt;&lt;/a&gt;%
<a id='L9033' name='L9033'></a>&lt;a id='L9019' name='L9019'&gt;&lt;/a&gt;\def\caption{\docaption\thiscaption}
<a id='L9034' name='L9034'></a>&lt;a id='L9020' name='L9020'&gt;&lt;/a&gt;\def\shortcaption{\docaption\thisshortcaption}
<a id='L9035' name='L9035'></a>&lt;a id='L9021' name='L9021'&gt;&lt;/a&gt;\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption}
<a id='L9036' name='L9036'></a>&lt;a id='L9022' name='L9022'&gt;&lt;/a&gt;\def\defcaption#1#2{\egroup \def#1{#2}}
<a id='L9037' name='L9037'></a>&lt;a id='L9023' name='L9023'&gt;&lt;/a&gt;
<a id='L9038' name='L9038'></a>&lt;a id='L9024' name='L9024'&gt;&lt;/a&gt;% The parameter is the control sequence identifying the counter we are
<a id='L9039' name='L9039'></a>&lt;a id='L9025' name='L9025'&gt;&lt;/a&gt;% going to use.  Create it if it doesn't exist and assign it to \floatno.
<a id='L9040' name='L9040'></a>&lt;a id='L9026' name='L9026'&gt;&lt;/a&gt;\def\getfloatno#1{%
<a id='L9041' name='L9041'></a>&lt;a id='L9027' name='L9027'&gt;&lt;/a&gt;  \ifx#1\relax
<a id='L9042' name='L9042'></a>&lt;a id='L9028' name='L9028'&gt;&lt;/a&gt;      % Haven't seen this figure type before.
<a id='L9043' name='L9043'></a>&lt;a id='L9029' name='L9029'&gt;&lt;/a&gt;      \csname newcount\endcsname #1%
<a id='L9044' name='L9044'></a>&lt;a id='L9030' name='L9030'&gt;&lt;/a&gt;      %
<a id='L9045' name='L9045'></a>&lt;a id='L9031' name='L9031'&gt;&lt;/a&gt;      % Remember to reset this floatno at the next chap.
<a id='L9046' name='L9046'></a>&lt;a id='L9032' name='L9032'&gt;&lt;/a&gt;      \expandafter\gdef\expandafter\resetallfloatnos
<a id='L9047' name='L9047'></a>&lt;a id='L9033' name='L9033'&gt;&lt;/a&gt;        \expandafter{\resetallfloatnos #1=0 }%
<a id='L9048' name='L9048'></a>&lt;a id='L9034' name='L9034'&gt;&lt;/a&gt;  \fi
<a id='L9049' name='L9049'></a>&lt;a id='L9035' name='L9035'&gt;&lt;/a&gt;  \let\floatno#1%
<a id='L9050' name='L9050'></a>&lt;a id='L9036' name='L9036'&gt;&lt;/a&gt;}
<a id='L9051' name='L9051'></a>&lt;a id='L9037' name='L9037'&gt;&lt;/a&gt;
<a id='L9052' name='L9052'></a>&lt;a id='L9038' name='L9038'&gt;&lt;/a&gt;% \setref calls this to get the XREFLABEL-snt value.  We want an @xref
<a id='L9053' name='L9053'></a>&lt;a id='L9039' name='L9039'&gt;&lt;/a&gt;% to the FLOATLABEL to expand to "Figure 3.1".  We call \setref when we
<a id='L9054' name='L9054'></a>&lt;a id='L9040' name='L9040'&gt;&lt;/a&gt;% first read the @float command.
<a id='L9055' name='L9055'></a>&lt;a id='L9041' name='L9041'&gt;&lt;/a&gt;%
<a id='L9056' name='L9056'></a>&lt;a id='L9042' name='L9042'&gt;&lt;/a&gt;\def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}%
<a id='L9057' name='L9057'></a>&lt;a id='L9043' name='L9043'&gt;&lt;/a&gt;
<a id='L9058' name='L9058'></a>&lt;a id='L9044' name='L9044'&gt;&lt;/a&gt;% Magic string used for the XREFLABEL-title value, so \xrefX can
<a id='L9059' name='L9059'></a>&lt;a id='L9045' name='L9045'&gt;&lt;/a&gt;% distinguish floats from other xref types.
<a id='L9060' name='L9060'></a>&lt;a id='L9046' name='L9046'&gt;&lt;/a&gt;\def\floatmagic{!!float!!}
<a id='L9061' name='L9061'></a>&lt;a id='L9047' name='L9047'&gt;&lt;/a&gt;
<a id='L9062' name='L9062'></a>&lt;a id='L9048' name='L9048'&gt;&lt;/a&gt;% #1 is the control sequence we are passed; we expand into a conditional
<a id='L9063' name='L9063'></a>&lt;a id='L9049' name='L9049'&gt;&lt;/a&gt;% which is true if #1 represents a float ref.  That is, the magic
<a id='L9064' name='L9064'></a>&lt;a id='L9050' name='L9050'&gt;&lt;/a&gt;% \lastsection value which we \setref above.
<a id='L9065' name='L9065'></a>&lt;a id='L9051' name='L9051'&gt;&lt;/a&gt;%
<a id='L9066' name='L9066'></a>&lt;a id='L9052' name='L9052'&gt;&lt;/a&gt;\def\iffloat#1{\expandafter\doiffloat#1==\finish}
<a id='L9067' name='L9067'></a>&lt;a id='L9053' name='L9053'&gt;&lt;/a&gt;%
<a id='L9068' name='L9068'></a>&lt;a id='L9054' name='L9054'&gt;&lt;/a&gt;% #1 is (maybe) the \floatmagic string.  If so, #2 will be the
<a id='L9069' name='L9069'></a>&lt;a id='L9055' name='L9055'&gt;&lt;/a&gt;% (safe) float type for this float.  We set \iffloattype to #2.
<a id='L9070' name='L9070'></a>&lt;a id='L9056' name='L9056'&gt;&lt;/a&gt;%
<a id='L9071' name='L9071'></a>&lt;a id='L9057' name='L9057'&gt;&lt;/a&gt;\def\doiffloat#1=#2=#3\finish{%
<a id='L9072' name='L9072'></a>&lt;a id='L9058' name='L9058'&gt;&lt;/a&gt;  \def\temp{#1}%
<a id='L9073' name='L9073'></a>&lt;a id='L9059' name='L9059'&gt;&lt;/a&gt;  \def\iffloattype{#2}%
<a id='L9074' name='L9074'></a>&lt;a id='L9060' name='L9060'&gt;&lt;/a&gt;  \ifx\temp\floatmagic
<a id='L9075' name='L9075'></a>&lt;a id='L9061' name='L9061'&gt;&lt;/a&gt;}
<a id='L9076' name='L9076'></a>&lt;a id='L9062' name='L9062'&gt;&lt;/a&gt;
<a id='L9077' name='L9077'></a>&lt;a id='L9063' name='L9063'&gt;&lt;/a&gt;% @listoffloats FLOATTYPE - print a list of floats like a table of contents.
<a id='L9078' name='L9078'></a>&lt;a id='L9064' name='L9064'&gt;&lt;/a&gt;%
<a id='L9079' name='L9079'></a>&lt;a id='L9065' name='L9065'&gt;&lt;/a&gt;\parseargdef\listoffloats{%
<a id='L9080' name='L9080'></a>&lt;a id='L9066' name='L9066'&gt;&lt;/a&gt;  \def\floattype{#1}% floattype
<a id='L9081' name='L9081'></a>&lt;a id='L9067' name='L9067'&gt;&lt;/a&gt;  {%
<a id='L9082' name='L9082'></a>&lt;a id='L9068' name='L9068'&gt;&lt;/a&gt;    % the floattype might have accents or other special characters,
<a id='L9083' name='L9083'></a>&lt;a id='L9069' name='L9069'&gt;&lt;/a&gt;    % but we need to use it in a control sequence name.
<a id='L9084' name='L9084'></a>&lt;a id='L9070' name='L9070'&gt;&lt;/a&gt;    \indexnofonts
<a id='L9085' name='L9085'></a>&lt;a id='L9071' name='L9071'&gt;&lt;/a&gt;    \turnoffactive
<a id='L9086' name='L9086'></a>&lt;a id='L9072' name='L9072'&gt;&lt;/a&gt;    \xdef\safefloattype{\floattype}%
<a id='L9087' name='L9087'></a>&lt;a id='L9073' name='L9073'&gt;&lt;/a&gt;  }%
<a id='L9088' name='L9088'></a>&lt;a id='L9074' name='L9074'&gt;&lt;/a&gt;  %
<a id='L9089' name='L9089'></a>&lt;a id='L9075' name='L9075'&gt;&lt;/a&gt;  % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE.
<a id='L9090' name='L9090'></a>&lt;a id='L9076' name='L9076'&gt;&lt;/a&gt;  \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax
<a id='L9091' name='L9091'></a>&lt;a id='L9077' name='L9077'&gt;&lt;/a&gt;    \ifhavexrefs
<a id='L9092' name='L9092'></a>&lt;a id='L9078' name='L9078'&gt;&lt;/a&gt;      % if the user said @listoffloats foo but never @float foo.
<a id='L9093' name='L9093'></a>&lt;a id='L9079' name='L9079'&gt;&lt;/a&gt;      \message{\linenumber No `\safefloattype' floats to list.}%
<a id='L9094' name='L9094'></a>&lt;a id='L9080' name='L9080'&gt;&lt;/a&gt;    \fi
<a id='L9095' name='L9095'></a>&lt;a id='L9081' name='L9081'&gt;&lt;/a&gt;  \else
<a id='L9096' name='L9096'></a>&lt;a id='L9082' name='L9082'&gt;&lt;/a&gt;    \begingroup
<a id='L9097' name='L9097'></a>&lt;a id='L9083' name='L9083'&gt;&lt;/a&gt;      \leftskip=\tocindent  % indent these entries like a toc
<a id='L9098' name='L9098'></a>&lt;a id='L9084' name='L9084'&gt;&lt;/a&gt;      \let\do=\listoffloatsdo
<a id='L9099' name='L9099'></a>&lt;a id='L9085' name='L9085'&gt;&lt;/a&gt;      \csname floatlist\safefloattype\endcsname
<a id='L9100' name='L9100'></a>&lt;a id='L9086' name='L9086'&gt;&lt;/a&gt;    \endgroup
<a id='L9101' name='L9101'></a>&lt;a id='L9087' name='L9087'&gt;&lt;/a&gt;  \fi
<a id='L9102' name='L9102'></a>&lt;a id='L9088' name='L9088'&gt;&lt;/a&gt;}
<a id='L9103' name='L9103'></a>&lt;a id='L9089' name='L9089'&gt;&lt;/a&gt;
<a id='L9104' name='L9104'></a>&lt;a id='L9090' name='L9090'&gt;&lt;/a&gt;% This is called on each entry in a list of floats.  We're passed the
<a id='L9105' name='L9105'></a>&lt;a id='L9091' name='L9091'&gt;&lt;/a&gt;% xref label, in the form LABEL-title, which is how we save it in the
<a id='L9106' name='L9106'></a>&lt;a id='L9092' name='L9092'&gt;&lt;/a&gt;% aux file.  We strip off the -title and look up \XRLABEL-lof, which
<a id='L9107' name='L9107'></a>&lt;a id='L9093' name='L9093'&gt;&lt;/a&gt;% has the text we're supposed to typeset here.
<a id='L9108' name='L9108'></a>&lt;a id='L9094' name='L9094'&gt;&lt;/a&gt;%
<a id='L9109' name='L9109'></a>&lt;a id='L9095' name='L9095'&gt;&lt;/a&gt;% Figures without xref labels will not be included in the list (since
<a id='L9110' name='L9110'></a>&lt;a id='L9096' name='L9096'&gt;&lt;/a&gt;% they won't appear in the aux file).
<a id='L9111' name='L9111'></a>&lt;a id='L9097' name='L9097'&gt;&lt;/a&gt;%
<a id='L9112' name='L9112'></a>&lt;a id='L9098' name='L9098'&gt;&lt;/a&gt;\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish}
<a id='L9113' name='L9113'></a>&lt;a id='L9099' name='L9099'&gt;&lt;/a&gt;\def\listoffloatsdoentry#1-title\finish{{%
<a id='L9114' name='L9114'></a>&lt;a id='L9100' name='L9100'&gt;&lt;/a&gt;  % Can't fully expand XR#1-lof because it can contain anything.  Just
<a id='L9115' name='L9115'></a>&lt;a id='L9101' name='L9101'&gt;&lt;/a&gt;  % pass the control sequence.  On the other hand, XR#1-pg is just the
<a id='L9116' name='L9116'></a>&lt;a id='L9102' name='L9102'&gt;&lt;/a&gt;  % page number, and we want to fully expand that so we can get a link
<a id='L9117' name='L9117'></a>&lt;a id='L9103' name='L9103'&gt;&lt;/a&gt;  % in pdf output.
<a id='L9118' name='L9118'></a>&lt;a id='L9104' name='L9104'&gt;&lt;/a&gt;  \toksA = \expandafter{\csname XR#1-lof\endcsname}%
<a id='L9119' name='L9119'></a>&lt;a id='L9105' name='L9105'&gt;&lt;/a&gt;  %
<a id='L9120' name='L9120'></a>&lt;a id='L9106' name='L9106'&gt;&lt;/a&gt;  % use the same \entry macro we use to generate the TOC and index.
<a id='L9121' name='L9121'></a>&lt;a id='L9107' name='L9107'&gt;&lt;/a&gt;  \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}%
<a id='L9122' name='L9122'></a>&lt;a id='L9108' name='L9108'&gt;&lt;/a&gt;  \writeentry
<a id='L9123' name='L9123'></a>&lt;a id='L9109' name='L9109'&gt;&lt;/a&gt;}}
<a id='L9124' name='L9124'></a>&lt;a id='L9110' name='L9110'&gt;&lt;/a&gt;
<a id='L9125' name='L9125'></a>&lt;a id='L9111' name='L9111'&gt;&lt;/a&gt;
<a id='L9126' name='L9126'></a>&lt;a id='L9112' name='L9112'&gt;&lt;/a&gt;\message{localization,}
<a id='L9127' name='L9127'></a>&lt;a id='L9113' name='L9113'&gt;&lt;/a&gt;
<a id='L9128' name='L9128'></a>&lt;a id='L9114' name='L9114'&gt;&lt;/a&gt;% For single-language documents, @documentlanguage is usually given very
<a id='L9129' name='L9129'></a>&lt;a id='L9115' name='L9115'&gt;&lt;/a&gt;% early, just after @documentencoding.  Single argument is the language
<a id='L9130' name='L9130'></a>&lt;a id='L9116' name='L9116'&gt;&lt;/a&gt;% (de) or locale (de_DE) abbreviation.
<a id='L9131' name='L9131'></a>&lt;a id='L9117' name='L9117'&gt;&lt;/a&gt;%
<a id='L9132' name='L9132'></a>&lt;a id='L9118' name='L9118'&gt;&lt;/a&gt;{
<a id='L9133' name='L9133'></a>&lt;a id='L9119' name='L9119'&gt;&lt;/a&gt;  \catcode`\_ = \active
<a id='L9134' name='L9134'></a>&lt;a id='L9120' name='L9120'&gt;&lt;/a&gt;  \globaldefs=1
<a id='L9135' name='L9135'></a>&lt;a id='L9121' name='L9121'&gt;&lt;/a&gt;\parseargdef\documentlanguage{\begingroup
<a id='L9136' name='L9136'></a>&lt;a id='L9122' name='L9122'&gt;&lt;/a&gt;  \let_=\normalunderscore  % normal _ character for filenames
<a id='L9137' name='L9137'></a>&lt;a id='L9123' name='L9123'&gt;&lt;/a&gt;  \tex % read txi-??.tex file in plain TeX.
<a id='L9138' name='L9138'></a>&lt;a id='L9124' name='L9124'&gt;&lt;/a&gt;    % Read the file by the name they passed if it exists.
<a id='L9139' name='L9139'></a>&lt;a id='L9125' name='L9125'&gt;&lt;/a&gt;    \openin 1 txi-#1.tex
<a id='L9140' name='L9140'></a>&lt;a id='L9126' name='L9126'&gt;&lt;/a&gt;    \ifeof 1
<a id='L9141' name='L9141'></a>&lt;a id='L9127' name='L9127'&gt;&lt;/a&gt;      \documentlanguagetrywithoutunderscore{#1_\finish}%
<a id='L9142' name='L9142'></a>&lt;a id='L9128' name='L9128'&gt;&lt;/a&gt;    \else
<a id='L9143' name='L9143'></a>&lt;a id='L9129' name='L9129'&gt;&lt;/a&gt;      \globaldefs = 1  % everything in the txi-LL files needs to persist
<a id='L9144' name='L9144'></a>&lt;a id='L9130' name='L9130'&gt;&lt;/a&gt;      \input txi-#1.tex
<a id='L9145' name='L9145'></a>&lt;a id='L9131' name='L9131'&gt;&lt;/a&gt;    \fi
<a id='L9146' name='L9146'></a>&lt;a id='L9132' name='L9132'&gt;&lt;/a&gt;    \closein 1
<a id='L9147' name='L9147'></a>&lt;a id='L9133' name='L9133'&gt;&lt;/a&gt;  \endgroup % end raw TeX
<a id='L9148' name='L9148'></a>&lt;a id='L9134' name='L9134'&gt;&lt;/a&gt;\endgroup}
<a id='L9149' name='L9149'></a>&lt;a id='L9135' name='L9135'&gt;&lt;/a&gt;%
<a id='L9150' name='L9150'></a>&lt;a id='L9136' name='L9136'&gt;&lt;/a&gt;% If they passed de_DE, and txi-de_DE.tex doesn't exist,
<a id='L9151' name='L9151'></a>&lt;a id='L9137' name='L9137'&gt;&lt;/a&gt;% try txi-de.tex.
<a id='L9152' name='L9152'></a>&lt;a id='L9138' name='L9138'&gt;&lt;/a&gt;%
<a id='L9153' name='L9153'></a>&lt;a id='L9139' name='L9139'&gt;&lt;/a&gt;\gdef\documentlanguagetrywithoutunderscore#1_#2\finish{%
<a id='L9154' name='L9154'></a>&lt;a id='L9140' name='L9140'&gt;&lt;/a&gt;  \openin 1 txi-#1.tex
<a id='L9155' name='L9155'></a>&lt;a id='L9141' name='L9141'&gt;&lt;/a&gt;  \ifeof 1
<a id='L9156' name='L9156'></a>&lt;a id='L9142' name='L9142'&gt;&lt;/a&gt;    \errhelp = \nolanghelp
<a id='L9157' name='L9157'></a>&lt;a id='L9143' name='L9143'&gt;&lt;/a&gt;    \errmessage{Cannot read language file txi-#1.tex}%
<a id='L9158' name='L9158'></a>&lt;a id='L9144' name='L9144'&gt;&lt;/a&gt;  \else
<a id='L9159' name='L9159'></a>&lt;a id='L9145' name='L9145'&gt;&lt;/a&gt;    \globaldefs = 1  % everything in the txi-LL files needs to persist
<a id='L9160' name='L9160'></a>&lt;a id='L9146' name='L9146'&gt;&lt;/a&gt;    \input txi-#1.tex
<a id='L9161' name='L9161'></a>&lt;a id='L9147' name='L9147'&gt;&lt;/a&gt;  \fi
<a id='L9162' name='L9162'></a>&lt;a id='L9148' name='L9148'&gt;&lt;/a&gt;  \closein 1
<a id='L9163' name='L9163'></a>&lt;a id='L9149' name='L9149'&gt;&lt;/a&gt;}
<a id='L9164' name='L9164'></a>&lt;a id='L9150' name='L9150'&gt;&lt;/a&gt;}% end of special _ catcode
<a id='L9165' name='L9165'></a>&lt;a id='L9151' name='L9151'&gt;&lt;/a&gt;%
<a id='L9166' name='L9166'></a>&lt;a id='L9152' name='L9152'&gt;&lt;/a&gt;\newhelp\nolanghelp{The given language definition file cannot be found or
<a id='L9167' name='L9167'></a>&lt;a id='L9153' name='L9153'&gt;&lt;/a&gt;is empty.  Maybe you need to install it?  Putting it in the current
<a id='L9168' name='L9168'></a>&lt;a id='L9154' name='L9154'&gt;&lt;/a&gt;directory should work if nowhere else does.}
<a id='L9169' name='L9169'></a>&lt;a id='L9155' name='L9155'&gt;&lt;/a&gt;
<a id='L9170' name='L9170'></a>&lt;a id='L9156' name='L9156'&gt;&lt;/a&gt;% This macro is called from txi-??.tex files; the first argument is the
<a id='L9171' name='L9171'></a>&lt;a id='L9157' name='L9157'&gt;&lt;/a&gt;% \language name to set (without the "\lang@" prefix), the second and
<a id='L9172' name='L9172'></a>&lt;a id='L9158' name='L9158'&gt;&lt;/a&gt;% third args are \{left,right}hyphenmin.
<a id='L9173' name='L9173'></a>&lt;a id='L9159' name='L9159'&gt;&lt;/a&gt;%
<a id='L9174' name='L9174'></a>&lt;a id='L9160' name='L9160'&gt;&lt;/a&gt;% The language names to pass are determined when the format is built.
<a id='L9175' name='L9175'></a>&lt;a id='L9161' name='L9161'&gt;&lt;/a&gt;% See the etex.log file created at that time, e.g.,
<a id='L9176' name='L9176'></a>&lt;a id='L9162' name='L9162'&gt;&lt;/a&gt;% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log.
<a id='L9177' name='L9177'></a>&lt;a id='L9163' name='L9163'&gt;&lt;/a&gt;%
<a id='L9178' name='L9178'></a>&lt;a id='L9164' name='L9164'&gt;&lt;/a&gt;% With TeX Live 2008, etex now includes hyphenation patterns for all
<a id='L9179' name='L9179'></a>&lt;a id='L9165' name='L9165'&gt;&lt;/a&gt;% available languages.  This means we can support hyphenation in
<a id='L9180' name='L9180'></a>&lt;a id='L9166' name='L9166'&gt;&lt;/a&gt;% Texinfo, at least to some extent.  (This still doesn't solve the
<a id='L9181' name='L9181'></a>&lt;a id='L9167' name='L9167'&gt;&lt;/a&gt;% accented characters problem.)
<a id='L9182' name='L9182'></a>&lt;a id='L9168' name='L9168'&gt;&lt;/a&gt;%
<a id='L9183' name='L9183'></a>&lt;a id='L9169' name='L9169'&gt;&lt;/a&gt;\catcode`@=11
<a id='L9184' name='L9184'></a>&lt;a id='L9170' name='L9170'&gt;&lt;/a&gt;\def\txisetlanguage#1#2#3{%
<a id='L9185' name='L9185'></a>&lt;a id='L9171' name='L9171'&gt;&lt;/a&gt;  % do not set the language if the name is undefined in the current TeX.
<a id='L9186' name='L9186'></a>&lt;a id='L9172' name='L9172'&gt;&lt;/a&gt;  \expandafter\ifx\csname lang@#1\endcsname \relax
<a id='L9187' name='L9187'></a>&lt;a id='L9173' name='L9173'&gt;&lt;/a&gt;    \message{no patterns for #1}%
<a id='L9188' name='L9188'></a>&lt;a id='L9174' name='L9174'&gt;&lt;/a&gt;  \else
<a id='L9189' name='L9189'></a>&lt;a id='L9175' name='L9175'&gt;&lt;/a&gt;    \global\language = \csname lang@#1\endcsname
<a id='L9190' name='L9190'></a>&lt;a id='L9176' name='L9176'&gt;&lt;/a&gt;  \fi
<a id='L9191' name='L9191'></a>&lt;a id='L9177' name='L9177'&gt;&lt;/a&gt;  % but there is no harm in adjusting the hyphenmin values regardless.
<a id='L9192' name='L9192'></a>&lt;a id='L9178' name='L9178'&gt;&lt;/a&gt;  \global\lefthyphenmin = #2\relax
<a id='L9193' name='L9193'></a>&lt;a id='L9179' name='L9179'&gt;&lt;/a&gt;  \global\righthyphenmin = #3\relax
<a id='L9194' name='L9194'></a>&lt;a id='L9180' name='L9180'&gt;&lt;/a&gt;}
<a id='L9195' name='L9195'></a>&lt;a id='L9181' name='L9181'&gt;&lt;/a&gt;
<a id='L9196' name='L9196'></a>&lt;a id='L9182' name='L9182'&gt;&lt;/a&gt;% Helpers for encodings.
<a id='L9197' name='L9197'></a>&lt;a id='L9183' name='L9183'&gt;&lt;/a&gt;% Set the catcode of characters 128 through 255 to the specified number.
<a id='L9198' name='L9198'></a>&lt;a id='L9184' name='L9184'&gt;&lt;/a&gt;%
<a id='L9199' name='L9199'></a>&lt;a id='L9185' name='L9185'&gt;&lt;/a&gt;\def\setnonasciicharscatcode#1{%
<a id='L9200' name='L9200'></a>&lt;a id='L9186' name='L9186'&gt;&lt;/a&gt;   \count255=128
<a id='L9201' name='L9201'></a>&lt;a id='L9187' name='L9187'&gt;&lt;/a&gt;   \loop\ifnum\count255&amp;lt;256
<a id='L9202' name='L9202'></a>&lt;a id='L9188' name='L9188'&gt;&lt;/a&gt;      \global\catcode\count255=#1\relax
<a id='L9203' name='L9203'></a>&lt;a id='L9189' name='L9189'&gt;&lt;/a&gt;      \advance\count255 by 1
<a id='L9204' name='L9204'></a>&lt;a id='L9190' name='L9190'&gt;&lt;/a&gt;   \repeat
<a id='L9205' name='L9205'></a>&lt;a id='L9191' name='L9191'&gt;&lt;/a&gt;}
<a id='L9206' name='L9206'></a>&lt;a id='L9192' name='L9192'&gt;&lt;/a&gt;
<a id='L9207' name='L9207'></a>&lt;a id='L9193' name='L9193'&gt;&lt;/a&gt;\def\setnonasciicharscatcodenonglobal#1{%
<a id='L9208' name='L9208'></a>&lt;a id='L9194' name='L9194'&gt;&lt;/a&gt;   \count255=128
<a id='L9209' name='L9209'></a>&lt;a id='L9195' name='L9195'&gt;&lt;/a&gt;   \loop\ifnum\count255&amp;lt;256
<a id='L9210' name='L9210'></a>&lt;a id='L9196' name='L9196'&gt;&lt;/a&gt;      \catcode\count255=#1\relax
<a id='L9211' name='L9211'></a>&lt;a id='L9197' name='L9197'&gt;&lt;/a&gt;      \advance\count255 by 1
<a id='L9212' name='L9212'></a>&lt;a id='L9198' name='L9198'&gt;&lt;/a&gt;   \repeat
<a id='L9213' name='L9213'></a>&lt;a id='L9199' name='L9199'&gt;&lt;/a&gt;}
<a id='L9214' name='L9214'></a>&lt;a id='L9200' name='L9200'&gt;&lt;/a&gt;
<a id='L9215' name='L9215'></a>&lt;a id='L9201' name='L9201'&gt;&lt;/a&gt;% @documentencoding sets the definition of non-ASCII characters
<a id='L9216' name='L9216'></a>&lt;a id='L9202' name='L9202'&gt;&lt;/a&gt;% according to the specified encoding.
<a id='L9217' name='L9217'></a>&lt;a id='L9203' name='L9203'&gt;&lt;/a&gt;%
<a id='L9218' name='L9218'></a>&lt;a id='L9204' name='L9204'&gt;&lt;/a&gt;\parseargdef\documentencoding{%
<a id='L9219' name='L9219'></a>&lt;a id='L9205' name='L9205'&gt;&lt;/a&gt;  % Encoding being declared for the document.
<a id='L9220' name='L9220'></a>&lt;a id='L9206' name='L9206'&gt;&lt;/a&gt;  \def\declaredencoding{\csname #1.enc\endcsname}%
<a id='L9221' name='L9221'></a>&lt;a id='L9207' name='L9207'&gt;&lt;/a&gt;  %
<a id='L9222' name='L9222'></a>&lt;a id='L9208' name='L9208'&gt;&lt;/a&gt;  % Supported encodings: names converted to tokens in order to be able
<a id='L9223' name='L9223'></a>&lt;a id='L9209' name='L9209'&gt;&lt;/a&gt;  % to compare them with \ifx.
<a id='L9224' name='L9224'></a>&lt;a id='L9210' name='L9210'&gt;&lt;/a&gt;  \def\ascii{\csname US-ASCII.enc\endcsname}%
<a id='L9225' name='L9225'></a>&lt;a id='L9211' name='L9211'&gt;&lt;/a&gt;  \def\latnine{\csname ISO-8859-15.enc\endcsname}%
<a id='L9226' name='L9226'></a>&lt;a id='L9212' name='L9212'&gt;&lt;/a&gt;  \def\latone{\csname ISO-8859-1.enc\endcsname}%
<a id='L9227' name='L9227'></a>&lt;a id='L9213' name='L9213'&gt;&lt;/a&gt;  \def\lattwo{\csname ISO-8859-2.enc\endcsname}%
<a id='L9228' name='L9228'></a>&lt;a id='L9214' name='L9214'&gt;&lt;/a&gt;  \def\utfeight{\csname UTF-8.enc\endcsname}%
<a id='L9229' name='L9229'></a>&lt;a id='L9215' name='L9215'&gt;&lt;/a&gt;  %
<a id='L9230' name='L9230'></a>&lt;a id='L9216' name='L9216'&gt;&lt;/a&gt;  \ifx \declaredencoding \ascii
<a id='L9231' name='L9231'></a>&lt;a id='L9217' name='L9217'&gt;&lt;/a&gt;     \asciichardefs
<a id='L9232' name='L9232'></a>&lt;a id='L9218' name='L9218'&gt;&lt;/a&gt;  %
<a id='L9233' name='L9233'></a>&lt;a id='L9219' name='L9219'&gt;&lt;/a&gt;  \else \ifx \declaredencoding \lattwo
<a id='L9234' name='L9234'></a>&lt;a id='L9220' name='L9220'&gt;&lt;/a&gt;     \setnonasciicharscatcode\active
<a id='L9235' name='L9235'></a>&lt;a id='L9221' name='L9221'&gt;&lt;/a&gt;     \lattwochardefs
<a id='L9236' name='L9236'></a>&lt;a id='L9222' name='L9222'&gt;&lt;/a&gt;  %
<a id='L9237' name='L9237'></a>&lt;a id='L9223' name='L9223'&gt;&lt;/a&gt;  \else \ifx \declaredencoding \latone
<a id='L9238' name='L9238'></a>&lt;a id='L9224' name='L9224'&gt;&lt;/a&gt;     \setnonasciicharscatcode\active
<a id='L9239' name='L9239'></a>&lt;a id='L9225' name='L9225'&gt;&lt;/a&gt;     \latonechardefs
<a id='L9240' name='L9240'></a>&lt;a id='L9226' name='L9226'&gt;&lt;/a&gt;  %
<a id='L9241' name='L9241'></a>&lt;a id='L9227' name='L9227'&gt;&lt;/a&gt;  \else \ifx \declaredencoding \latnine
<a id='L9242' name='L9242'></a>&lt;a id='L9228' name='L9228'&gt;&lt;/a&gt;     \setnonasciicharscatcode\active
<a id='L9243' name='L9243'></a>&lt;a id='L9229' name='L9229'&gt;&lt;/a&gt;     \latninechardefs
<a id='L9244' name='L9244'></a>&lt;a id='L9230' name='L9230'&gt;&lt;/a&gt;  %
<a id='L9245' name='L9245'></a>&lt;a id='L9231' name='L9231'&gt;&lt;/a&gt;  \else \ifx \declaredencoding \utfeight
<a id='L9246' name='L9246'></a>&lt;a id='L9232' name='L9232'&gt;&lt;/a&gt;     \setnonasciicharscatcode\active
<a id='L9247' name='L9247'></a>&lt;a id='L9233' name='L9233'&gt;&lt;/a&gt;     \utfeightchardefs
<a id='L9248' name='L9248'></a>&lt;a id='L9234' name='L9234'&gt;&lt;/a&gt;  %
<a id='L9249' name='L9249'></a>&lt;a id='L9235' name='L9235'&gt;&lt;/a&gt;  \else
<a id='L9250' name='L9250'></a>&lt;a id='L9236' name='L9236'&gt;&lt;/a&gt;    \message{Unknown document encoding #1, ignoring.}%
<a id='L9251' name='L9251'></a>&lt;a id='L9237' name='L9237'&gt;&lt;/a&gt;  %
<a id='L9252' name='L9252'></a>&lt;a id='L9238' name='L9238'&gt;&lt;/a&gt;  \fi % utfeight
<a id='L9253' name='L9253'></a>&lt;a id='L9239' name='L9239'&gt;&lt;/a&gt;  \fi % latnine
<a id='L9254' name='L9254'></a>&lt;a id='L9240' name='L9240'&gt;&lt;/a&gt;  \fi % latone
<a id='L9255' name='L9255'></a>&lt;a id='L9241' name='L9241'&gt;&lt;/a&gt;  \fi % lattwo
<a id='L9256' name='L9256'></a>&lt;a id='L9242' name='L9242'&gt;&lt;/a&gt;  \fi % ascii
<a id='L9257' name='L9257'></a>&lt;a id='L9243' name='L9243'&gt;&lt;/a&gt;}
<a id='L9258' name='L9258'></a>&lt;a id='L9244' name='L9244'&gt;&lt;/a&gt;
<a id='L9259' name='L9259'></a>&lt;a id='L9245' name='L9245'&gt;&lt;/a&gt;% A message to be logged when using a character that isn't available
<a id='L9260' name='L9260'></a>&lt;a id='L9246' name='L9246'&gt;&lt;/a&gt;% the default font encoding (OT1).
<a id='L9261' name='L9261'></a>&lt;a id='L9247' name='L9247'&gt;&lt;/a&gt;%
<a id='L9262' name='L9262'></a>&lt;a id='L9248' name='L9248'&gt;&lt;/a&gt;\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}}
<a id='L9263' name='L9263'></a>&lt;a id='L9249' name='L9249'&gt;&lt;/a&gt;
<a id='L9264' name='L9264'></a>&lt;a id='L9250' name='L9250'&gt;&lt;/a&gt;% Take account of \c (plain) vs. \, (Texinfo) difference.
<a id='L9265' name='L9265'></a>&lt;a id='L9251' name='L9251'&gt;&lt;/a&gt;\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi}
<a id='L9266' name='L9266'></a>&lt;a id='L9252' name='L9252'&gt;&lt;/a&gt;
<a id='L9267' name='L9267'></a>&lt;a id='L9253' name='L9253'&gt;&lt;/a&gt;% First, make active non-ASCII characters in order for them to be
<a id='L9268' name='L9268'></a>&lt;a id='L9254' name='L9254'&gt;&lt;/a&gt;% correctly categorized when TeX reads the replacement text of
<a id='L9269' name='L9269'></a>&lt;a id='L9255' name='L9255'&gt;&lt;/a&gt;% macros containing the character definitions.
<a id='L9270' name='L9270'></a>&lt;a id='L9256' name='L9256'&gt;&lt;/a&gt;\setnonasciicharscatcode\active
<a id='L9271' name='L9271'></a>&lt;a id='L9257' name='L9257'&gt;&lt;/a&gt;%
<a id='L9272' name='L9272'></a>&lt;a id='L9258' name='L9258'&gt;&lt;/a&gt;% Latin1 (ISO-8859-1) character definitions.
<a id='L9273' name='L9273'></a>&lt;a id='L9259' name='L9259'&gt;&lt;/a&gt;\def\latonechardefs{%
<a id='L9274' name='L9274'></a>&lt;a id='L9260' name='L9260'&gt;&lt;/a&gt;  \gdef^^a0{\tie}
<a id='L9275' name='L9275'></a>&lt;a id='L9261' name='L9261'&gt;&lt;/a&gt;  \gdef^^a1{\exclamdown}
<a id='L9276' name='L9276'></a>&lt;a id='L9262' name='L9262'&gt;&lt;/a&gt;  \gdef^^a2{\missingcharmsg{CENT SIGN}}
<a id='L9277' name='L9277'></a>&lt;a id='L9263' name='L9263'&gt;&lt;/a&gt;  \gdef^^a3{{\pounds}}
<a id='L9278' name='L9278'></a>&lt;a id='L9264' name='L9264'&gt;&lt;/a&gt;  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
<a id='L9279' name='L9279'></a>&lt;a id='L9265' name='L9265'&gt;&lt;/a&gt;  \gdef^^a5{\missingcharmsg{YEN SIGN}}
<a id='L9280' name='L9280'></a>&lt;a id='L9266' name='L9266'&gt;&lt;/a&gt;  \gdef^^a6{\missingcharmsg{BROKEN BAR}}
<a id='L9281' name='L9281'></a>&lt;a id='L9267' name='L9267'&gt;&lt;/a&gt;  \gdef^^a7{\S}
<a id='L9282' name='L9282'></a>&lt;a id='L9268' name='L9268'&gt;&lt;/a&gt;  \gdef^^a8{\"{}}
<a id='L9283' name='L9283'></a>&lt;a id='L9269' name='L9269'&gt;&lt;/a&gt;  \gdef^^a9{\copyright}
<a id='L9284' name='L9284'></a>&lt;a id='L9270' name='L9270'&gt;&lt;/a&gt;  \gdef^^aa{\ordf}
<a id='L9285' name='L9285'></a>&lt;a id='L9271' name='L9271'&gt;&lt;/a&gt;  \gdef^^ab{\guillemetleft}
<a id='L9286' name='L9286'></a>&lt;a id='L9272' name='L9272'&gt;&lt;/a&gt;  \gdef^^ac{$\lnot$}
<a id='L9287' name='L9287'></a>&lt;a id='L9273' name='L9273'&gt;&lt;/a&gt;  \gdef^^ad{\-}
<a id='L9288' name='L9288'></a>&lt;a id='L9274' name='L9274'&gt;&lt;/a&gt;  \gdef^^ae{\registeredsymbol}
<a id='L9289' name='L9289'></a>&lt;a id='L9275' name='L9275'&gt;&lt;/a&gt;  \gdef^^af{\={}}
<a id='L9290' name='L9290'></a>&lt;a id='L9276' name='L9276'&gt;&lt;/a&gt;  %
<a id='L9291' name='L9291'></a>&lt;a id='L9277' name='L9277'&gt;&lt;/a&gt;  \gdef^^b0{\textdegree}
<a id='L9292' name='L9292'></a>&lt;a id='L9278' name='L9278'&gt;&lt;/a&gt;  \gdef^^b1{$\pm$}
<a id='L9293' name='L9293'></a>&lt;a id='L9279' name='L9279'&gt;&lt;/a&gt;  \gdef^^b2{$^2$}
<a id='L9294' name='L9294'></a>&lt;a id='L9280' name='L9280'&gt;&lt;/a&gt;  \gdef^^b3{$^3$}
<a id='L9295' name='L9295'></a>&lt;a id='L9281' name='L9281'&gt;&lt;/a&gt;  \gdef^^b4{\'{}}
<a id='L9296' name='L9296'></a>&lt;a id='L9282' name='L9282'&gt;&lt;/a&gt;  \gdef^^b5{$\mu$}
<a id='L9297' name='L9297'></a>&lt;a id='L9283' name='L9283'&gt;&lt;/a&gt;  \gdef^^b6{\P}
<a id='L9298' name='L9298'></a>&lt;a id='L9284' name='L9284'&gt;&lt;/a&gt;  %
<a id='L9299' name='L9299'></a>&lt;a id='L9285' name='L9285'&gt;&lt;/a&gt;  \gdef^^b7{$^.$}
<a id='L9300' name='L9300'></a>&lt;a id='L9286' name='L9286'&gt;&lt;/a&gt;  \gdef^^b8{\cedilla\ }
<a id='L9301' name='L9301'></a>&lt;a id='L9287' name='L9287'&gt;&lt;/a&gt;  \gdef^^b9{$^1$}
<a id='L9302' name='L9302'></a>&lt;a id='L9288' name='L9288'&gt;&lt;/a&gt;  \gdef^^ba{\ordm}
<a id='L9303' name='L9303'></a>&lt;a id='L9289' name='L9289'&gt;&lt;/a&gt;  %
<a id='L9304' name='L9304'></a>&lt;a id='L9290' name='L9290'&gt;&lt;/a&gt;  \gdef^^bb{\guillemetright}
<a id='L9305' name='L9305'></a>&lt;a id='L9291' name='L9291'&gt;&lt;/a&gt;  \gdef^^bc{$1\over4$}
<a id='L9306' name='L9306'></a>&lt;a id='L9292' name='L9292'&gt;&lt;/a&gt;  \gdef^^bd{$1\over2$}
<a id='L9307' name='L9307'></a>&lt;a id='L9293' name='L9293'&gt;&lt;/a&gt;  \gdef^^be{$3\over4$}
<a id='L9308' name='L9308'></a>&lt;a id='L9294' name='L9294'&gt;&lt;/a&gt;  \gdef^^bf{\questiondown}
<a id='L9309' name='L9309'></a>&lt;a id='L9295' name='L9295'&gt;&lt;/a&gt;  %
<a id='L9310' name='L9310'></a>&lt;a id='L9296' name='L9296'&gt;&lt;/a&gt;  \gdef^^c0{\`A}
<a id='L9311' name='L9311'></a>&lt;a id='L9297' name='L9297'&gt;&lt;/a&gt;  \gdef^^c1{\'A}
<a id='L9312' name='L9312'></a>&lt;a id='L9298' name='L9298'&gt;&lt;/a&gt;  \gdef^^c2{\^A}
<a id='L9313' name='L9313'></a>&lt;a id='L9299' name='L9299'&gt;&lt;/a&gt;  \gdef^^c3{\~A}
<a id='L9314' name='L9314'></a>&lt;a id='L9300' name='L9300'&gt;&lt;/a&gt;  \gdef^^c4{\"A}
<a id='L9315' name='L9315'></a>&lt;a id='L9301' name='L9301'&gt;&lt;/a&gt;  \gdef^^c5{\ringaccent A}
<a id='L9316' name='L9316'></a>&lt;a id='L9302' name='L9302'&gt;&lt;/a&gt;  \gdef^^c6{\AE}
<a id='L9317' name='L9317'></a>&lt;a id='L9303' name='L9303'&gt;&lt;/a&gt;  \gdef^^c7{\cedilla C}
<a id='L9318' name='L9318'></a>&lt;a id='L9304' name='L9304'&gt;&lt;/a&gt;  \gdef^^c8{\`E}
<a id='L9319' name='L9319'></a>&lt;a id='L9305' name='L9305'&gt;&lt;/a&gt;  \gdef^^c9{\'E}
<a id='L9320' name='L9320'></a>&lt;a id='L9306' name='L9306'&gt;&lt;/a&gt;  \gdef^^ca{\^E}
<a id='L9321' name='L9321'></a>&lt;a id='L9307' name='L9307'&gt;&lt;/a&gt;  \gdef^^cb{\"E}
<a id='L9322' name='L9322'></a>&lt;a id='L9308' name='L9308'&gt;&lt;/a&gt;  \gdef^^cc{\`I}
<a id='L9323' name='L9323'></a>&lt;a id='L9309' name='L9309'&gt;&lt;/a&gt;  \gdef^^cd{\'I}
<a id='L9324' name='L9324'></a>&lt;a id='L9310' name='L9310'&gt;&lt;/a&gt;  \gdef^^ce{\^I}
<a id='L9325' name='L9325'></a>&lt;a id='L9311' name='L9311'&gt;&lt;/a&gt;  \gdef^^cf{\"I}
<a id='L9326' name='L9326'></a>&lt;a id='L9312' name='L9312'&gt;&lt;/a&gt;  %
<a id='L9327' name='L9327'></a>&lt;a id='L9313' name='L9313'&gt;&lt;/a&gt;  \gdef^^d0{\DH}
<a id='L9328' name='L9328'></a>&lt;a id='L9314' name='L9314'&gt;&lt;/a&gt;  \gdef^^d1{\~N}
<a id='L9329' name='L9329'></a>&lt;a id='L9315' name='L9315'&gt;&lt;/a&gt;  \gdef^^d2{\`O}
<a id='L9330' name='L9330'></a>&lt;a id='L9316' name='L9316'&gt;&lt;/a&gt;  \gdef^^d3{\'O}
<a id='L9331' name='L9331'></a>&lt;a id='L9317' name='L9317'&gt;&lt;/a&gt;  \gdef^^d4{\^O}
<a id='L9332' name='L9332'></a>&lt;a id='L9318' name='L9318'&gt;&lt;/a&gt;  \gdef^^d5{\~O}
<a id='L9333' name='L9333'></a>&lt;a id='L9319' name='L9319'&gt;&lt;/a&gt;  \gdef^^d6{\"O}
<a id='L9334' name='L9334'></a>&lt;a id='L9320' name='L9320'&gt;&lt;/a&gt;  \gdef^^d7{$\times$}
<a id='L9335' name='L9335'></a>&lt;a id='L9321' name='L9321'&gt;&lt;/a&gt;  \gdef^^d8{\O}
<a id='L9336' name='L9336'></a>&lt;a id='L9322' name='L9322'&gt;&lt;/a&gt;  \gdef^^d9{\`U}
<a id='L9337' name='L9337'></a>&lt;a id='L9323' name='L9323'&gt;&lt;/a&gt;  \gdef^^da{\'U}
<a id='L9338' name='L9338'></a>&lt;a id='L9324' name='L9324'&gt;&lt;/a&gt;  \gdef^^db{\^U}
<a id='L9339' name='L9339'></a>&lt;a id='L9325' name='L9325'&gt;&lt;/a&gt;  \gdef^^dc{\"U}
<a id='L9340' name='L9340'></a>&lt;a id='L9326' name='L9326'&gt;&lt;/a&gt;  \gdef^^dd{\'Y}
<a id='L9341' name='L9341'></a>&lt;a id='L9327' name='L9327'&gt;&lt;/a&gt;  \gdef^^de{\TH}
<a id='L9342' name='L9342'></a>&lt;a id='L9328' name='L9328'&gt;&lt;/a&gt;  \gdef^^df{\ss}
<a id='L9343' name='L9343'></a>&lt;a id='L9329' name='L9329'&gt;&lt;/a&gt;  %
<a id='L9344' name='L9344'></a>&lt;a id='L9330' name='L9330'&gt;&lt;/a&gt;  \gdef^^e0{\`a}
<a id='L9345' name='L9345'></a>&lt;a id='L9331' name='L9331'&gt;&lt;/a&gt;  \gdef^^e1{\'a}
<a id='L9346' name='L9346'></a>&lt;a id='L9332' name='L9332'&gt;&lt;/a&gt;  \gdef^^e2{\^a}
<a id='L9347' name='L9347'></a>&lt;a id='L9333' name='L9333'&gt;&lt;/a&gt;  \gdef^^e3{\~a}
<a id='L9348' name='L9348'></a>&lt;a id='L9334' name='L9334'&gt;&lt;/a&gt;  \gdef^^e4{\"a}
<a id='L9349' name='L9349'></a>&lt;a id='L9335' name='L9335'&gt;&lt;/a&gt;  \gdef^^e5{\ringaccent a}
<a id='L9350' name='L9350'></a>&lt;a id='L9336' name='L9336'&gt;&lt;/a&gt;  \gdef^^e6{\ae}
<a id='L9351' name='L9351'></a>&lt;a id='L9337' name='L9337'&gt;&lt;/a&gt;  \gdef^^e7{\cedilla c}
<a id='L9352' name='L9352'></a>&lt;a id='L9338' name='L9338'&gt;&lt;/a&gt;  \gdef^^e8{\`e}
<a id='L9353' name='L9353'></a>&lt;a id='L9339' name='L9339'&gt;&lt;/a&gt;  \gdef^^e9{\'e}
<a id='L9354' name='L9354'></a>&lt;a id='L9340' name='L9340'&gt;&lt;/a&gt;  \gdef^^ea{\^e}
<a id='L9355' name='L9355'></a>&lt;a id='L9341' name='L9341'&gt;&lt;/a&gt;  \gdef^^eb{\"e}
<a id='L9356' name='L9356'></a>&lt;a id='L9342' name='L9342'&gt;&lt;/a&gt;  \gdef^^ec{\`{\dotless i}}
<a id='L9357' name='L9357'></a>&lt;a id='L9343' name='L9343'&gt;&lt;/a&gt;  \gdef^^ed{\'{\dotless i}}
<a id='L9358' name='L9358'></a>&lt;a id='L9344' name='L9344'&gt;&lt;/a&gt;  \gdef^^ee{\^{\dotless i}}
<a id='L9359' name='L9359'></a>&lt;a id='L9345' name='L9345'&gt;&lt;/a&gt;  \gdef^^ef{\"{\dotless i}}
<a id='L9360' name='L9360'></a>&lt;a id='L9346' name='L9346'&gt;&lt;/a&gt;  %
<a id='L9361' name='L9361'></a>&lt;a id='L9347' name='L9347'&gt;&lt;/a&gt;  \gdef^^f0{\dh}
<a id='L9362' name='L9362'></a>&lt;a id='L9348' name='L9348'&gt;&lt;/a&gt;  \gdef^^f1{\~n}
<a id='L9363' name='L9363'></a>&lt;a id='L9349' name='L9349'&gt;&lt;/a&gt;  \gdef^^f2{\`o}
<a id='L9364' name='L9364'></a>&lt;a id='L9350' name='L9350'&gt;&lt;/a&gt;  \gdef^^f3{\'o}
<a id='L9365' name='L9365'></a>&lt;a id='L9351' name='L9351'&gt;&lt;/a&gt;  \gdef^^f4{\^o}
<a id='L9366' name='L9366'></a>&lt;a id='L9352' name='L9352'&gt;&lt;/a&gt;  \gdef^^f5{\~o}
<a id='L9367' name='L9367'></a>&lt;a id='L9353' name='L9353'&gt;&lt;/a&gt;  \gdef^^f6{\"o}
<a id='L9368' name='L9368'></a>&lt;a id='L9354' name='L9354'&gt;&lt;/a&gt;  \gdef^^f7{$\div$}
<a id='L9369' name='L9369'></a>&lt;a id='L9355' name='L9355'&gt;&lt;/a&gt;  \gdef^^f8{\o}
<a id='L9370' name='L9370'></a>&lt;a id='L9356' name='L9356'&gt;&lt;/a&gt;  \gdef^^f9{\`u}
<a id='L9371' name='L9371'></a>&lt;a id='L9357' name='L9357'&gt;&lt;/a&gt;  \gdef^^fa{\'u}
<a id='L9372' name='L9372'></a>&lt;a id='L9358' name='L9358'&gt;&lt;/a&gt;  \gdef^^fb{\^u}
<a id='L9373' name='L9373'></a>&lt;a id='L9359' name='L9359'&gt;&lt;/a&gt;  \gdef^^fc{\"u}
<a id='L9374' name='L9374'></a>&lt;a id='L9360' name='L9360'&gt;&lt;/a&gt;  \gdef^^fd{\'y}
<a id='L9375' name='L9375'></a>&lt;a id='L9361' name='L9361'&gt;&lt;/a&gt;  \gdef^^fe{\th}
<a id='L9376' name='L9376'></a>&lt;a id='L9362' name='L9362'&gt;&lt;/a&gt;  \gdef^^ff{\"y}
<a id='L9377' name='L9377'></a>&lt;a id='L9363' name='L9363'&gt;&lt;/a&gt;}
<a id='L9378' name='L9378'></a>&lt;a id='L9364' name='L9364'&gt;&lt;/a&gt;
<a id='L9379' name='L9379'></a>&lt;a id='L9365' name='L9365'&gt;&lt;/a&gt;% Latin9 (ISO-8859-15) encoding character definitions.
<a id='L9380' name='L9380'></a>&lt;a id='L9366' name='L9366'&gt;&lt;/a&gt;\def\latninechardefs{%
<a id='L9381' name='L9381'></a>&lt;a id='L9367' name='L9367'&gt;&lt;/a&gt;  % Encoding is almost identical to Latin1.
<a id='L9382' name='L9382'></a>&lt;a id='L9368' name='L9368'&gt;&lt;/a&gt;  \latonechardefs
<a id='L9383' name='L9383'></a>&lt;a id='L9369' name='L9369'&gt;&lt;/a&gt;  %
<a id='L9384' name='L9384'></a>&lt;a id='L9370' name='L9370'&gt;&lt;/a&gt;  \gdef^^a4{\euro}
<a id='L9385' name='L9385'></a>&lt;a id='L9371' name='L9371'&gt;&lt;/a&gt;  \gdef^^a6{\v S}
<a id='L9386' name='L9386'></a>&lt;a id='L9372' name='L9372'&gt;&lt;/a&gt;  \gdef^^a8{\v s}
<a id='L9387' name='L9387'></a>&lt;a id='L9373' name='L9373'&gt;&lt;/a&gt;  \gdef^^b4{\v Z}
<a id='L9388' name='L9388'></a>&lt;a id='L9374' name='L9374'&gt;&lt;/a&gt;  \gdef^^b8{\v z}
<a id='L9389' name='L9389'></a>&lt;a id='L9375' name='L9375'&gt;&lt;/a&gt;  \gdef^^bc{\OE}
<a id='L9390' name='L9390'></a>&lt;a id='L9376' name='L9376'&gt;&lt;/a&gt;  \gdef^^bd{\oe}
<a id='L9391' name='L9391'></a>&lt;a id='L9377' name='L9377'&gt;&lt;/a&gt;  \gdef^^be{\"Y}
<a id='L9392' name='L9392'></a>&lt;a id='L9378' name='L9378'&gt;&lt;/a&gt;}
<a id='L9393' name='L9393'></a>&lt;a id='L9379' name='L9379'&gt;&lt;/a&gt;
<a id='L9394' name='L9394'></a>&lt;a id='L9380' name='L9380'&gt;&lt;/a&gt;% Latin2 (ISO-8859-2) character definitions.
<a id='L9395' name='L9395'></a>&lt;a id='L9381' name='L9381'&gt;&lt;/a&gt;\def\lattwochardefs{%
<a id='L9396' name='L9396'></a>&lt;a id='L9382' name='L9382'&gt;&lt;/a&gt;  \gdef^^a0{\tie}
<a id='L9397' name='L9397'></a>&lt;a id='L9383' name='L9383'&gt;&lt;/a&gt;  \gdef^^a1{\ogonek{A}}
<a id='L9398' name='L9398'></a>&lt;a id='L9384' name='L9384'&gt;&lt;/a&gt;  \gdef^^a2{\u{}}
<a id='L9399' name='L9399'></a>&lt;a id='L9385' name='L9385'&gt;&lt;/a&gt;  \gdef^^a3{\L}
<a id='L9400' name='L9400'></a>&lt;a id='L9386' name='L9386'&gt;&lt;/a&gt;  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
<a id='L9401' name='L9401'></a>&lt;a id='L9387' name='L9387'&gt;&lt;/a&gt;  \gdef^^a5{\v L}
<a id='L9402' name='L9402'></a>&lt;a id='L9388' name='L9388'&gt;&lt;/a&gt;  \gdef^^a6{\'S}
<a id='L9403' name='L9403'></a>&lt;a id='L9389' name='L9389'&gt;&lt;/a&gt;  \gdef^^a7{\S}
<a id='L9404' name='L9404'></a>&lt;a id='L9390' name='L9390'&gt;&lt;/a&gt;  \gdef^^a8{\"{}}
<a id='L9405' name='L9405'></a>&lt;a id='L9391' name='L9391'&gt;&lt;/a&gt;  \gdef^^a9{\v S}
<a id='L9406' name='L9406'></a>&lt;a id='L9392' name='L9392'&gt;&lt;/a&gt;  \gdef^^aa{\cedilla S}
<a id='L9407' name='L9407'></a>&lt;a id='L9393' name='L9393'&gt;&lt;/a&gt;  \gdef^^ab{\v T}
<a id='L9408' name='L9408'></a>&lt;a id='L9394' name='L9394'&gt;&lt;/a&gt;  \gdef^^ac{\'Z}
<a id='L9409' name='L9409'></a>&lt;a id='L9395' name='L9395'&gt;&lt;/a&gt;  \gdef^^ad{\-}
<a id='L9410' name='L9410'></a>&lt;a id='L9396' name='L9396'&gt;&lt;/a&gt;  \gdef^^ae{\v Z}
<a id='L9411' name='L9411'></a>&lt;a id='L9397' name='L9397'&gt;&lt;/a&gt;  \gdef^^af{\dotaccent Z}
<a id='L9412' name='L9412'></a>&lt;a id='L9398' name='L9398'&gt;&lt;/a&gt;  %
<a id='L9413' name='L9413'></a>&lt;a id='L9399' name='L9399'&gt;&lt;/a&gt;  \gdef^^b0{\textdegree}
<a id='L9414' name='L9414'></a>&lt;a id='L9400' name='L9400'&gt;&lt;/a&gt;  \gdef^^b1{\ogonek{a}}
<a id='L9415' name='L9415'></a>&lt;a id='L9401' name='L9401'&gt;&lt;/a&gt;  \gdef^^b2{\ogonek{ }}
<a id='L9416' name='L9416'></a>&lt;a id='L9402' name='L9402'&gt;&lt;/a&gt;  \gdef^^b3{\l}
<a id='L9417' name='L9417'></a>&lt;a id='L9403' name='L9403'&gt;&lt;/a&gt;  \gdef^^b4{\'{}}
<a id='L9418' name='L9418'></a>&lt;a id='L9404' name='L9404'&gt;&lt;/a&gt;  \gdef^^b5{\v l}
<a id='L9419' name='L9419'></a>&lt;a id='L9405' name='L9405'&gt;&lt;/a&gt;  \gdef^^b6{\'s}
<a id='L9420' name='L9420'></a>&lt;a id='L9406' name='L9406'&gt;&lt;/a&gt;  \gdef^^b7{\v{}}
<a id='L9421' name='L9421'></a>&lt;a id='L9407' name='L9407'&gt;&lt;/a&gt;  \gdef^^b8{\cedilla\ }
<a id='L9422' name='L9422'></a>&lt;a id='L9408' name='L9408'&gt;&lt;/a&gt;  \gdef^^b9{\v s}
<a id='L9423' name='L9423'></a>&lt;a id='L9409' name='L9409'&gt;&lt;/a&gt;  \gdef^^ba{\cedilla s}
<a id='L9424' name='L9424'></a>&lt;a id='L9410' name='L9410'&gt;&lt;/a&gt;  \gdef^^bb{\v t}
<a id='L9425' name='L9425'></a>&lt;a id='L9411' name='L9411'&gt;&lt;/a&gt;  \gdef^^bc{\'z}
<a id='L9426' name='L9426'></a>&lt;a id='L9412' name='L9412'&gt;&lt;/a&gt;  \gdef^^bd{\H{}}
<a id='L9427' name='L9427'></a>&lt;a id='L9413' name='L9413'&gt;&lt;/a&gt;  \gdef^^be{\v z}
<a id='L9428' name='L9428'></a>&lt;a id='L9414' name='L9414'&gt;&lt;/a&gt;  \gdef^^bf{\dotaccent z}
<a id='L9429' name='L9429'></a>&lt;a id='L9415' name='L9415'&gt;&lt;/a&gt;  %
<a id='L9430' name='L9430'></a>&lt;a id='L9416' name='L9416'&gt;&lt;/a&gt;  \gdef^^c0{\'R}
<a id='L9431' name='L9431'></a>&lt;a id='L9417' name='L9417'&gt;&lt;/a&gt;  \gdef^^c1{\'A}
<a id='L9432' name='L9432'></a>&lt;a id='L9418' name='L9418'&gt;&lt;/a&gt;  \gdef^^c2{\^A}
<a id='L9433' name='L9433'></a>&lt;a id='L9419' name='L9419'&gt;&lt;/a&gt;  \gdef^^c3{\u A}
<a id='L9434' name='L9434'></a>&lt;a id='L9420' name='L9420'&gt;&lt;/a&gt;  \gdef^^c4{\"A}
<a id='L9435' name='L9435'></a>&lt;a id='L9421' name='L9421'&gt;&lt;/a&gt;  \gdef^^c5{\'L}
<a id='L9436' name='L9436'></a>&lt;a id='L9422' name='L9422'&gt;&lt;/a&gt;  \gdef^^c6{\'C}
<a id='L9437' name='L9437'></a>&lt;a id='L9423' name='L9423'&gt;&lt;/a&gt;  \gdef^^c7{\cedilla C}
<a id='L9438' name='L9438'></a>&lt;a id='L9424' name='L9424'&gt;&lt;/a&gt;  \gdef^^c8{\v C}
<a id='L9439' name='L9439'></a>&lt;a id='L9425' name='L9425'&gt;&lt;/a&gt;  \gdef^^c9{\'E}
<a id='L9440' name='L9440'></a>&lt;a id='L9426' name='L9426'&gt;&lt;/a&gt;  \gdef^^ca{\ogonek{E}}
<a id='L9441' name='L9441'></a>&lt;a id='L9427' name='L9427'&gt;&lt;/a&gt;  \gdef^^cb{\"E}
<a id='L9442' name='L9442'></a>&lt;a id='L9428' name='L9428'&gt;&lt;/a&gt;  \gdef^^cc{\v E}
<a id='L9443' name='L9443'></a>&lt;a id='L9429' name='L9429'&gt;&lt;/a&gt;  \gdef^^cd{\'I}
<a id='L9444' name='L9444'></a>&lt;a id='L9430' name='L9430'&gt;&lt;/a&gt;  \gdef^^ce{\^I}
<a id='L9445' name='L9445'></a>&lt;a id='L9431' name='L9431'&gt;&lt;/a&gt;  \gdef^^cf{\v D}
<a id='L9446' name='L9446'></a>&lt;a id='L9432' name='L9432'&gt;&lt;/a&gt;  %
<a id='L9447' name='L9447'></a>&lt;a id='L9433' name='L9433'&gt;&lt;/a&gt;  \gdef^^d0{\DH}
<a id='L9448' name='L9448'></a>&lt;a id='L9434' name='L9434'&gt;&lt;/a&gt;  \gdef^^d1{\'N}
<a id='L9449' name='L9449'></a>&lt;a id='L9435' name='L9435'&gt;&lt;/a&gt;  \gdef^^d2{\v N}
<a id='L9450' name='L9450'></a>&lt;a id='L9436' name='L9436'&gt;&lt;/a&gt;  \gdef^^d3{\'O}
<a id='L9451' name='L9451'></a>&lt;a id='L9437' name='L9437'&gt;&lt;/a&gt;  \gdef^^d4{\^O}
<a id='L9452' name='L9452'></a>&lt;a id='L9438' name='L9438'&gt;&lt;/a&gt;  \gdef^^d5{\H O}
<a id='L9453' name='L9453'></a>&lt;a id='L9439' name='L9439'&gt;&lt;/a&gt;  \gdef^^d6{\"O}
<a id='L9454' name='L9454'></a>&lt;a id='L9440' name='L9440'&gt;&lt;/a&gt;  \gdef^^d7{$\times$}
<a id='L9455' name='L9455'></a>&lt;a id='L9441' name='L9441'&gt;&lt;/a&gt;  \gdef^^d8{\v R}
<a id='L9456' name='L9456'></a>&lt;a id='L9442' name='L9442'&gt;&lt;/a&gt;  \gdef^^d9{\ringaccent U}
<a id='L9457' name='L9457'></a>&lt;a id='L9443' name='L9443'&gt;&lt;/a&gt;  \gdef^^da{\'U}
<a id='L9458' name='L9458'></a>&lt;a id='L9444' name='L9444'&gt;&lt;/a&gt;  \gdef^^db{\H U}
<a id='L9459' name='L9459'></a>&lt;a id='L9445' name='L9445'&gt;&lt;/a&gt;  \gdef^^dc{\"U}
<a id='L9460' name='L9460'></a>&lt;a id='L9446' name='L9446'&gt;&lt;/a&gt;  \gdef^^dd{\'Y}
<a id='L9461' name='L9461'></a>&lt;a id='L9447' name='L9447'&gt;&lt;/a&gt;  \gdef^^de{\cedilla T}
<a id='L9462' name='L9462'></a>&lt;a id='L9448' name='L9448'&gt;&lt;/a&gt;  \gdef^^df{\ss}
<a id='L9463' name='L9463'></a>&lt;a id='L9449' name='L9449'&gt;&lt;/a&gt;  %
<a id='L9464' name='L9464'></a>&lt;a id='L9450' name='L9450'&gt;&lt;/a&gt;  \gdef^^e0{\'r}
<a id='L9465' name='L9465'></a>&lt;a id='L9451' name='L9451'&gt;&lt;/a&gt;  \gdef^^e1{\'a}
<a id='L9466' name='L9466'></a>&lt;a id='L9452' name='L9452'&gt;&lt;/a&gt;  \gdef^^e2{\^a}
<a id='L9467' name='L9467'></a>&lt;a id='L9453' name='L9453'&gt;&lt;/a&gt;  \gdef^^e3{\u a}
<a id='L9468' name='L9468'></a>&lt;a id='L9454' name='L9454'&gt;&lt;/a&gt;  \gdef^^e4{\"a}
<a id='L9469' name='L9469'></a>&lt;a id='L9455' name='L9455'&gt;&lt;/a&gt;  \gdef^^e5{\'l}
<a id='L9470' name='L9470'></a>&lt;a id='L9456' name='L9456'&gt;&lt;/a&gt;  \gdef^^e6{\'c}
<a id='L9471' name='L9471'></a>&lt;a id='L9457' name='L9457'&gt;&lt;/a&gt;  \gdef^^e7{\cedilla c}
<a id='L9472' name='L9472'></a>&lt;a id='L9458' name='L9458'&gt;&lt;/a&gt;  \gdef^^e8{\v c}
<a id='L9473' name='L9473'></a>&lt;a id='L9459' name='L9459'&gt;&lt;/a&gt;  \gdef^^e9{\'e}
<a id='L9474' name='L9474'></a>&lt;a id='L9460' name='L9460'&gt;&lt;/a&gt;  \gdef^^ea{\ogonek{e}}
<a id='L9475' name='L9475'></a>&lt;a id='L9461' name='L9461'&gt;&lt;/a&gt;  \gdef^^eb{\"e}
<a id='L9476' name='L9476'></a>&lt;a id='L9462' name='L9462'&gt;&lt;/a&gt;  \gdef^^ec{\v e}
<a id='L9477' name='L9477'></a>&lt;a id='L9463' name='L9463'&gt;&lt;/a&gt;  \gdef^^ed{\'{\dotless{i}}}
<a id='L9478' name='L9478'></a>&lt;a id='L9464' name='L9464'&gt;&lt;/a&gt;  \gdef^^ee{\^{\dotless{i}}}
<a id='L9479' name='L9479'></a>&lt;a id='L9465' name='L9465'&gt;&lt;/a&gt;  \gdef^^ef{\v d}
<a id='L9480' name='L9480'></a>&lt;a id='L9466' name='L9466'&gt;&lt;/a&gt;  %
<a id='L9481' name='L9481'></a>&lt;a id='L9467' name='L9467'&gt;&lt;/a&gt;  \gdef^^f0{\dh}
<a id='L9482' name='L9482'></a>&lt;a id='L9468' name='L9468'&gt;&lt;/a&gt;  \gdef^^f1{\'n}
<a id='L9483' name='L9483'></a>&lt;a id='L9469' name='L9469'&gt;&lt;/a&gt;  \gdef^^f2{\v n}
<a id='L9484' name='L9484'></a>&lt;a id='L9470' name='L9470'&gt;&lt;/a&gt;  \gdef^^f3{\'o}
<a id='L9485' name='L9485'></a>&lt;a id='L9471' name='L9471'&gt;&lt;/a&gt;  \gdef^^f4{\^o}
<a id='L9486' name='L9486'></a>&lt;a id='L9472' name='L9472'&gt;&lt;/a&gt;  \gdef^^f5{\H o}
<a id='L9487' name='L9487'></a>&lt;a id='L9473' name='L9473'&gt;&lt;/a&gt;  \gdef^^f6{\"o}
<a id='L9488' name='L9488'></a>&lt;a id='L9474' name='L9474'&gt;&lt;/a&gt;  \gdef^^f7{$\div$}
<a id='L9489' name='L9489'></a>&lt;a id='L9475' name='L9475'&gt;&lt;/a&gt;  \gdef^^f8{\v r}
<a id='L9490' name='L9490'></a>&lt;a id='L9476' name='L9476'&gt;&lt;/a&gt;  \gdef^^f9{\ringaccent u}
<a id='L9491' name='L9491'></a>&lt;a id='L9477' name='L9477'&gt;&lt;/a&gt;  \gdef^^fa{\'u}
<a id='L9492' name='L9492'></a>&lt;a id='L9478' name='L9478'&gt;&lt;/a&gt;  \gdef^^fb{\H u}
<a id='L9493' name='L9493'></a>&lt;a id='L9479' name='L9479'&gt;&lt;/a&gt;  \gdef^^fc{\"u}
<a id='L9494' name='L9494'></a>&lt;a id='L9480' name='L9480'&gt;&lt;/a&gt;  \gdef^^fd{\'y}
<a id='L9495' name='L9495'></a>&lt;a id='L9481' name='L9481'&gt;&lt;/a&gt;  \gdef^^fe{\cedilla t}
<a id='L9496' name='L9496'></a>&lt;a id='L9482' name='L9482'&gt;&lt;/a&gt;  \gdef^^ff{\dotaccent{}}
<a id='L9497' name='L9497'></a>&lt;a id='L9483' name='L9483'&gt;&lt;/a&gt;}
<a id='L9498' name='L9498'></a>&lt;a id='L9484' name='L9484'&gt;&lt;/a&gt;
<a id='L9499' name='L9499'></a>&lt;a id='L9485' name='L9485'&gt;&lt;/a&gt;% UTF-8 character definitions.
<a id='L9500' name='L9500'></a>&lt;a id='L9486' name='L9486'&gt;&lt;/a&gt;%
<a id='L9501' name='L9501'></a>&lt;a id='L9487' name='L9487'&gt;&lt;/a&gt;% This code to support UTF-8 is based on LaTeX's utf8.def, with some
<a id='L9502' name='L9502'></a>&lt;a id='L9488' name='L9488'&gt;&lt;/a&gt;% changes for Texinfo conventions.  It is included here under the GPL by
<a id='L9503' name='L9503'></a>&lt;a id='L9489' name='L9489'&gt;&lt;/a&gt;% permission from Frank Mittelbach and the LaTeX team.
<a id='L9504' name='L9504'></a>&lt;a id='L9490' name='L9490'&gt;&lt;/a&gt;%
<a id='L9505' name='L9505'></a>&lt;a id='L9491' name='L9491'&gt;&lt;/a&gt;\newcount\countUTFx
<a id='L9506' name='L9506'></a>&lt;a id='L9492' name='L9492'&gt;&lt;/a&gt;\newcount\countUTFy
<a id='L9507' name='L9507'></a>&lt;a id='L9493' name='L9493'&gt;&lt;/a&gt;\newcount\countUTFz
<a id='L9508' name='L9508'></a>&lt;a id='L9494' name='L9494'&gt;&lt;/a&gt;
<a id='L9509' name='L9509'></a>&lt;a id='L9495' name='L9495'&gt;&lt;/a&gt;\gdef\UTFviiiTwoOctets#1#2{\expandafter
<a id='L9510' name='L9510'></a>&lt;a id='L9496' name='L9496'&gt;&lt;/a&gt;   \UTFviiiDefined\csname u8:#1\string #2\endcsname}
<a id='L9511' name='L9511'></a>&lt;a id='L9497' name='L9497'&gt;&lt;/a&gt;%
<a id='L9512' name='L9512'></a>&lt;a id='L9498' name='L9498'&gt;&lt;/a&gt;\gdef\UTFviiiThreeOctets#1#2#3{\expandafter
<a id='L9513' name='L9513'></a>&lt;a id='L9499' name='L9499'&gt;&lt;/a&gt;   \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname}
<a id='L9514' name='L9514'></a>&lt;a id='L9500' name='L9500'&gt;&lt;/a&gt;%
<a id='L9515' name='L9515'></a>&lt;a id='L9501' name='L9501'&gt;&lt;/a&gt;\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter
<a id='L9516' name='L9516'></a>&lt;a id='L9502' name='L9502'&gt;&lt;/a&gt;   \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname}
<a id='L9517' name='L9517'></a>&lt;a id='L9503' name='L9503'&gt;&lt;/a&gt;
<a id='L9518' name='L9518'></a>&lt;a id='L9504' name='L9504'&gt;&lt;/a&gt;\gdef\UTFviiiDefined#1{%
<a id='L9519' name='L9519'></a>&lt;a id='L9505' name='L9505'&gt;&lt;/a&gt;  \ifx #1\relax
<a id='L9520' name='L9520'></a>&lt;a id='L9506' name='L9506'&gt;&lt;/a&gt;    \message{\linenumber Unicode char \string #1 not defined for Texinfo}%
<a id='L9521' name='L9521'></a>&lt;a id='L9507' name='L9507'&gt;&lt;/a&gt;  \else
<a id='L9522' name='L9522'></a>&lt;a id='L9508' name='L9508'&gt;&lt;/a&gt;    \expandafter #1%
<a id='L9523' name='L9523'></a>&lt;a id='L9509' name='L9509'&gt;&lt;/a&gt;  \fi
<a id='L9524' name='L9524'></a>&lt;a id='L9510' name='L9510'&gt;&lt;/a&gt;}
<a id='L9525' name='L9525'></a>&lt;a id='L9511' name='L9511'&gt;&lt;/a&gt;
<a id='L9526' name='L9526'></a>&lt;a id='L9512' name='L9512'&gt;&lt;/a&gt;\begingroup
<a id='L9527' name='L9527'></a>&lt;a id='L9513' name='L9513'&gt;&lt;/a&gt;  \catcode`\~13
<a id='L9528' name='L9528'></a>&lt;a id='L9514' name='L9514'&gt;&lt;/a&gt;  \catcode`\"12
<a id='L9529' name='L9529'></a>&lt;a id='L9515' name='L9515'&gt;&lt;/a&gt;
<a id='L9530' name='L9530'></a>&lt;a id='L9516' name='L9516'&gt;&lt;/a&gt;  \def\UTFviiiLoop{%
<a id='L9531' name='L9531'></a>&lt;a id='L9517' name='L9517'&gt;&lt;/a&gt;    \global\catcode\countUTFx\active
<a id='L9532' name='L9532'></a>&lt;a id='L9518' name='L9518'&gt;&lt;/a&gt;    \uccode`\~\countUTFx
<a id='L9533' name='L9533'></a>&lt;a id='L9519' name='L9519'&gt;&lt;/a&gt;    \uppercase\expandafter{\UTFviiiTmp}%
<a id='L9534' name='L9534'></a>&lt;a id='L9520' name='L9520'&gt;&lt;/a&gt;    \advance\countUTFx by 1
<a id='L9535' name='L9535'></a>&lt;a id='L9521' name='L9521'&gt;&lt;/a&gt;    \ifnum\countUTFx &amp;lt; \countUTFy
<a id='L9536' name='L9536'></a>&lt;a id='L9522' name='L9522'&gt;&lt;/a&gt;      \expandafter\UTFviiiLoop
<a id='L9537' name='L9537'></a>&lt;a id='L9523' name='L9523'&gt;&lt;/a&gt;    \fi}
<a id='L9538' name='L9538'></a>&lt;a id='L9524' name='L9524'&gt;&lt;/a&gt;
<a id='L9539' name='L9539'></a>&lt;a id='L9525' name='L9525'&gt;&lt;/a&gt;  \countUTFx = "C2
<a id='L9540' name='L9540'></a>&lt;a id='L9526' name='L9526'&gt;&lt;/a&gt;  \countUTFy = "E0
<a id='L9541' name='L9541'></a>&lt;a id='L9527' name='L9527'&gt;&lt;/a&gt;  \def\UTFviiiTmp{%
<a id='L9542' name='L9542'></a>&lt;a id='L9528' name='L9528'&gt;&lt;/a&gt;    \xdef~{\noexpand\UTFviiiTwoOctets\string~}}
<a id='L9543' name='L9543'></a>&lt;a id='L9529' name='L9529'&gt;&lt;/a&gt;  \UTFviiiLoop
<a id='L9544' name='L9544'></a>&lt;a id='L9530' name='L9530'&gt;&lt;/a&gt;
<a id='L9545' name='L9545'></a>&lt;a id='L9531' name='L9531'&gt;&lt;/a&gt;  \countUTFx = "E0
<a id='L9546' name='L9546'></a>&lt;a id='L9532' name='L9532'&gt;&lt;/a&gt;  \countUTFy = "F0
<a id='L9547' name='L9547'></a>&lt;a id='L9533' name='L9533'&gt;&lt;/a&gt;  \def\UTFviiiTmp{%
<a id='L9548' name='L9548'></a>&lt;a id='L9534' name='L9534'&gt;&lt;/a&gt;    \xdef~{\noexpand\UTFviiiThreeOctets\string~}}
<a id='L9549' name='L9549'></a>&lt;a id='L9535' name='L9535'&gt;&lt;/a&gt;  \UTFviiiLoop
<a id='L9550' name='L9550'></a>&lt;a id='L9536' name='L9536'&gt;&lt;/a&gt;
<a id='L9551' name='L9551'></a>&lt;a id='L9537' name='L9537'&gt;&lt;/a&gt;  \countUTFx = "F0
<a id='L9552' name='L9552'></a>&lt;a id='L9538' name='L9538'&gt;&lt;/a&gt;  \countUTFy = "F4
<a id='L9553' name='L9553'></a>&lt;a id='L9539' name='L9539'&gt;&lt;/a&gt;  \def\UTFviiiTmp{%
<a id='L9554' name='L9554'></a>&lt;a id='L9540' name='L9540'&gt;&lt;/a&gt;    \xdef~{\noexpand\UTFviiiFourOctets\string~}}
<a id='L9555' name='L9555'></a>&lt;a id='L9541' name='L9541'&gt;&lt;/a&gt;  \UTFviiiLoop
<a id='L9556' name='L9556'></a>&lt;a id='L9542' name='L9542'&gt;&lt;/a&gt;\endgroup
<a id='L9557' name='L9557'></a>&lt;a id='L9543' name='L9543'&gt;&lt;/a&gt;
<a id='L9558' name='L9558'></a>&lt;a id='L9544' name='L9544'&gt;&lt;/a&gt;\begingroup
<a id='L9559' name='L9559'></a>&lt;a id='L9545' name='L9545'&gt;&lt;/a&gt;  \catcode`\"=12
<a id='L9560' name='L9560'></a>&lt;a id='L9546' name='L9546'&gt;&lt;/a&gt;  \catcode`\&amp;lt;=12
<a id='L9561' name='L9561'></a>&lt;a id='L9547' name='L9547'&gt;&lt;/a&gt;  \catcode`\.=12
<a id='L9562' name='L9562'></a>&lt;a id='L9548' name='L9548'&gt;&lt;/a&gt;  \catcode`\,=12
<a id='L9563' name='L9563'></a>&lt;a id='L9549' name='L9549'&gt;&lt;/a&gt;  \catcode`\;=12
<a id='L9564' name='L9564'></a>&lt;a id='L9550' name='L9550'&gt;&lt;/a&gt;  \catcode`\!=12
<a id='L9565' name='L9565'></a>&lt;a id='L9551' name='L9551'&gt;&lt;/a&gt;  \catcode`\~=13
<a id='L9566' name='L9566'></a>&lt;a id='L9552' name='L9552'&gt;&lt;/a&gt;
<a id='L9567' name='L9567'></a>&lt;a id='L9553' name='L9553'&gt;&lt;/a&gt;  \gdef\DeclareUnicodeCharacter#1#2{%
<a id='L9568' name='L9568'></a>&lt;a id='L9554' name='L9554'&gt;&lt;/a&gt;    \countUTFz = "#1\relax
<a id='L9569' name='L9569'></a>&lt;a id='L9555' name='L9555'&gt;&lt;/a&gt;    %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
<a id='L9570' name='L9570'></a>&lt;a id='L9556' name='L9556'&gt;&lt;/a&gt;    \begingroup
<a id='L9571' name='L9571'></a>&lt;a id='L9557' name='L9557'&gt;&lt;/a&gt;      \parseXMLCharref
<a id='L9572' name='L9572'></a>&lt;a id='L9558' name='L9558'&gt;&lt;/a&gt;      \def\UTFviiiTwoOctets##1##2{%
<a id='L9573' name='L9573'></a>&lt;a id='L9559' name='L9559'&gt;&lt;/a&gt;        \csname u8:##1\string ##2\endcsname}%
<a id='L9574' name='L9574'></a>&lt;a id='L9560' name='L9560'&gt;&lt;/a&gt;      \def\UTFviiiThreeOctets##1##2##3{%
<a id='L9575' name='L9575'></a>&lt;a id='L9561' name='L9561'&gt;&lt;/a&gt;        \csname u8:##1\string ##2\string ##3\endcsname}%
<a id='L9576' name='L9576'></a>&lt;a id='L9562' name='L9562'&gt;&lt;/a&gt;      \def\UTFviiiFourOctets##1##2##3##4{%
<a id='L9577' name='L9577'></a>&lt;a id='L9563' name='L9563'&gt;&lt;/a&gt;        \csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
<a id='L9578' name='L9578'></a>&lt;a id='L9564' name='L9564'&gt;&lt;/a&gt;      \expandafter\expandafter\expandafter\expandafter
<a id='L9579' name='L9579'></a>&lt;a id='L9565' name='L9565'&gt;&lt;/a&gt;       \expandafter\expandafter\expandafter
<a id='L9580' name='L9580'></a>&lt;a id='L9566' name='L9566'&gt;&lt;/a&gt;       \gdef\UTFviiiTmp{#2}%
<a id='L9581' name='L9581'></a>&lt;a id='L9567' name='L9567'&gt;&lt;/a&gt;    \endgroup}
<a id='L9582' name='L9582'></a>&lt;a id='L9568' name='L9568'&gt;&lt;/a&gt;
<a id='L9583' name='L9583'></a>&lt;a id='L9569' name='L9569'&gt;&lt;/a&gt;  \gdef\parseXMLCharref{%
<a id='L9584' name='L9584'></a>&lt;a id='L9570' name='L9570'&gt;&lt;/a&gt;    \ifnum\countUTFz &amp;lt; "A0\relax
<a id='L9585' name='L9585'></a>&lt;a id='L9571' name='L9571'&gt;&lt;/a&gt;      \errhelp = \EMsimple
<a id='L9586' name='L9586'></a>&lt;a id='L9572' name='L9572'&gt;&lt;/a&gt;      \errmessage{Cannot define Unicode char value &amp;lt; 00A0}%
<a id='L9587' name='L9587'></a>&lt;a id='L9573' name='L9573'&gt;&lt;/a&gt;    \else\ifnum\countUTFz &amp;lt; "800\relax
<a id='L9588' name='L9588'></a>&lt;a id='L9574' name='L9574'&gt;&lt;/a&gt;      \parseUTFviiiA,%
<a id='L9589' name='L9589'></a>&lt;a id='L9575' name='L9575'&gt;&lt;/a&gt;      \parseUTFviiiB C\UTFviiiTwoOctets.,%
<a id='L9590' name='L9590'></a>&lt;a id='L9576' name='L9576'&gt;&lt;/a&gt;    \else\ifnum\countUTFz &amp;lt; "10000\relax
<a id='L9591' name='L9591'></a>&lt;a id='L9577' name='L9577'&gt;&lt;/a&gt;      \parseUTFviiiA;%
<a id='L9592' name='L9592'></a>&lt;a id='L9578' name='L9578'&gt;&lt;/a&gt;      \parseUTFviiiA,%
<a id='L9593' name='L9593'></a>&lt;a id='L9579' name='L9579'&gt;&lt;/a&gt;      \parseUTFviiiB E\UTFviiiThreeOctets.{,;}%
<a id='L9594' name='L9594'></a>&lt;a id='L9580' name='L9580'&gt;&lt;/a&gt;    \else
<a id='L9595' name='L9595'></a>&lt;a id='L9581' name='L9581'&gt;&lt;/a&gt;      \parseUTFviiiA;%
<a id='L9596' name='L9596'></a>&lt;a id='L9582' name='L9582'&gt;&lt;/a&gt;      \parseUTFviiiA,%
<a id='L9597' name='L9597'></a>&lt;a id='L9583' name='L9583'&gt;&lt;/a&gt;      \parseUTFviiiA!%
<a id='L9598' name='L9598'></a>&lt;a id='L9584' name='L9584'&gt;&lt;/a&gt;      \parseUTFviiiB F\UTFviiiFourOctets.{!,;}%
<a id='L9599' name='L9599'></a>&lt;a id='L9585' name='L9585'&gt;&lt;/a&gt;    \fi\fi\fi
<a id='L9600' name='L9600'></a>&lt;a id='L9586' name='L9586'&gt;&lt;/a&gt;  }
<a id='L9601' name='L9601'></a>&lt;a id='L9587' name='L9587'&gt;&lt;/a&gt;
<a id='L9602' name='L9602'></a>&lt;a id='L9588' name='L9588'&gt;&lt;/a&gt;  \gdef\parseUTFviiiA#1{%
<a id='L9603' name='L9603'></a>&lt;a id='L9589' name='L9589'&gt;&lt;/a&gt;    \countUTFx = \countUTFz
<a id='L9604' name='L9604'></a>&lt;a id='L9590' name='L9590'&gt;&lt;/a&gt;    \divide\countUTFz by 64
<a id='L9605' name='L9605'></a>&lt;a id='L9591' name='L9591'&gt;&lt;/a&gt;    \countUTFy = \countUTFz
<a id='L9606' name='L9606'></a>&lt;a id='L9592' name='L9592'&gt;&lt;/a&gt;    \multiply\countUTFz by 64
<a id='L9607' name='L9607'></a>&lt;a id='L9593' name='L9593'&gt;&lt;/a&gt;    \advance\countUTFx by -\countUTFz
<a id='L9608' name='L9608'></a>&lt;a id='L9594' name='L9594'&gt;&lt;/a&gt;    \advance\countUTFx by 128
<a id='L9609' name='L9609'></a>&lt;a id='L9595' name='L9595'&gt;&lt;/a&gt;    \uccode `#1\countUTFx
<a id='L9610' name='L9610'></a>&lt;a id='L9596' name='L9596'&gt;&lt;/a&gt;    \countUTFz = \countUTFy}
<a id='L9611' name='L9611'></a>&lt;a id='L9597' name='L9597'&gt;&lt;/a&gt;
<a id='L9612' name='L9612'></a>&lt;a id='L9598' name='L9598'&gt;&lt;/a&gt;  \gdef\parseUTFviiiB#1#2#3#4{%
<a id='L9613' name='L9613'></a>&lt;a id='L9599' name='L9599'&gt;&lt;/a&gt;    \advance\countUTFz by "#10\relax
<a id='L9614' name='L9614'></a>&lt;a id='L9600' name='L9600'&gt;&lt;/a&gt;    \uccode `#3\countUTFz
<a id='L9615' name='L9615'></a>&lt;a id='L9601' name='L9601'&gt;&lt;/a&gt;    \uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
<a id='L9616' name='L9616'></a>&lt;a id='L9602' name='L9602'&gt;&lt;/a&gt;\endgroup
<a id='L9617' name='L9617'></a>&lt;a id='L9603' name='L9603'&gt;&lt;/a&gt;
<a id='L9618' name='L9618'></a>&lt;a id='L9604' name='L9604'&gt;&lt;/a&gt;\def\utfeightchardefs{%
<a id='L9619' name='L9619'></a>&lt;a id='L9605' name='L9605'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00A0}{\tie}
<a id='L9620' name='L9620'></a>&lt;a id='L9606' name='L9606'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00A1}{\exclamdown}
<a id='L9621' name='L9621'></a>&lt;a id='L9607' name='L9607'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00A3}{\pounds}
<a id='L9622' name='L9622'></a>&lt;a id='L9608' name='L9608'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00A8}{\"{ }}
<a id='L9623' name='L9623'></a>&lt;a id='L9609' name='L9609'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00A9}{\copyright}
<a id='L9624' name='L9624'></a>&lt;a id='L9610' name='L9610'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00AA}{\ordf}
<a id='L9625' name='L9625'></a>&lt;a id='L9611' name='L9611'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00AB}{\guillemetleft}
<a id='L9626' name='L9626'></a>&lt;a id='L9612' name='L9612'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00AD}{\-}
<a id='L9627' name='L9627'></a>&lt;a id='L9613' name='L9613'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00AE}{\registeredsymbol}
<a id='L9628' name='L9628'></a>&lt;a id='L9614' name='L9614'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00AF}{\={ }}
<a id='L9629' name='L9629'></a>&lt;a id='L9615' name='L9615'&gt;&lt;/a&gt;
<a id='L9630' name='L9630'></a>&lt;a id='L9616' name='L9616'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
<a id='L9631' name='L9631'></a>&lt;a id='L9617' name='L9617'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00B4}{\'{ }}
<a id='L9632' name='L9632'></a>&lt;a id='L9618' name='L9618'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00B8}{\cedilla{ }}
<a id='L9633' name='L9633'></a>&lt;a id='L9619' name='L9619'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00BA}{\ordm}
<a id='L9634' name='L9634'></a>&lt;a id='L9620' name='L9620'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00BB}{\guillemetright}
<a id='L9635' name='L9635'></a>&lt;a id='L9621' name='L9621'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00BF}{\questiondown}
<a id='L9636' name='L9636'></a>&lt;a id='L9622' name='L9622'&gt;&lt;/a&gt;
<a id='L9637' name='L9637'></a>&lt;a id='L9623' name='L9623'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00C0}{\`A}
<a id='L9638' name='L9638'></a>&lt;a id='L9624' name='L9624'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00C1}{\'A}
<a id='L9639' name='L9639'></a>&lt;a id='L9625' name='L9625'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00C2}{\^A}
<a id='L9640' name='L9640'></a>&lt;a id='L9626' name='L9626'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00C3}{\~A}
<a id='L9641' name='L9641'></a>&lt;a id='L9627' name='L9627'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00C4}{\"A}
<a id='L9642' name='L9642'></a>&lt;a id='L9628' name='L9628'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00C5}{\AA}
<a id='L9643' name='L9643'></a>&lt;a id='L9629' name='L9629'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00C6}{\AE}
<a id='L9644' name='L9644'></a>&lt;a id='L9630' name='L9630'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00C7}{\cedilla{C}}
<a id='L9645' name='L9645'></a>&lt;a id='L9631' name='L9631'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00C8}{\`E}
<a id='L9646' name='L9646'></a>&lt;a id='L9632' name='L9632'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00C9}{\'E}
<a id='L9647' name='L9647'></a>&lt;a id='L9633' name='L9633'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00CA}{\^E}
<a id='L9648' name='L9648'></a>&lt;a id='L9634' name='L9634'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00CB}{\"E}
<a id='L9649' name='L9649'></a>&lt;a id='L9635' name='L9635'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00CC}{\`I}
<a id='L9650' name='L9650'></a>&lt;a id='L9636' name='L9636'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00CD}{\'I}
<a id='L9651' name='L9651'></a>&lt;a id='L9637' name='L9637'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00CE}{\^I}
<a id='L9652' name='L9652'></a>&lt;a id='L9638' name='L9638'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00CF}{\"I}
<a id='L9653' name='L9653'></a>&lt;a id='L9639' name='L9639'&gt;&lt;/a&gt;
<a id='L9654' name='L9654'></a>&lt;a id='L9640' name='L9640'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00D0}{\DH}
<a id='L9655' name='L9655'></a>&lt;a id='L9641' name='L9641'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00D1}{\~N}
<a id='L9656' name='L9656'></a>&lt;a id='L9642' name='L9642'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00D2}{\`O}
<a id='L9657' name='L9657'></a>&lt;a id='L9643' name='L9643'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00D3}{\'O}
<a id='L9658' name='L9658'></a>&lt;a id='L9644' name='L9644'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00D4}{\^O}
<a id='L9659' name='L9659'></a>&lt;a id='L9645' name='L9645'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00D5}{\~O}
<a id='L9660' name='L9660'></a>&lt;a id='L9646' name='L9646'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00D6}{\"O}
<a id='L9661' name='L9661'></a>&lt;a id='L9647' name='L9647'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00D8}{\O}
<a id='L9662' name='L9662'></a>&lt;a id='L9648' name='L9648'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00D9}{\`U}
<a id='L9663' name='L9663'></a>&lt;a id='L9649' name='L9649'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00DA}{\'U}
<a id='L9664' name='L9664'></a>&lt;a id='L9650' name='L9650'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00DB}{\^U}
<a id='L9665' name='L9665'></a>&lt;a id='L9651' name='L9651'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00DC}{\"U}
<a id='L9666' name='L9666'></a>&lt;a id='L9652' name='L9652'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00DD}{\'Y}
<a id='L9667' name='L9667'></a>&lt;a id='L9653' name='L9653'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00DE}{\TH}
<a id='L9668' name='L9668'></a>&lt;a id='L9654' name='L9654'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00DF}{\ss}
<a id='L9669' name='L9669'></a>&lt;a id='L9655' name='L9655'&gt;&lt;/a&gt;
<a id='L9670' name='L9670'></a>&lt;a id='L9656' name='L9656'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00E0}{\`a}
<a id='L9671' name='L9671'></a>&lt;a id='L9657' name='L9657'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00E1}{\'a}
<a id='L9672' name='L9672'></a>&lt;a id='L9658' name='L9658'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00E2}{\^a}
<a id='L9673' name='L9673'></a>&lt;a id='L9659' name='L9659'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00E3}{\~a}
<a id='L9674' name='L9674'></a>&lt;a id='L9660' name='L9660'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00E4}{\"a}
<a id='L9675' name='L9675'></a>&lt;a id='L9661' name='L9661'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00E5}{\aa}
<a id='L9676' name='L9676'></a>&lt;a id='L9662' name='L9662'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00E6}{\ae}
<a id='L9677' name='L9677'></a>&lt;a id='L9663' name='L9663'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00E7}{\cedilla{c}}
<a id='L9678' name='L9678'></a>&lt;a id='L9664' name='L9664'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00E8}{\`e}
<a id='L9679' name='L9679'></a>&lt;a id='L9665' name='L9665'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00E9}{\'e}
<a id='L9680' name='L9680'></a>&lt;a id='L9666' name='L9666'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00EA}{\^e}
<a id='L9681' name='L9681'></a>&lt;a id='L9667' name='L9667'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00EB}{\"e}
<a id='L9682' name='L9682'></a>&lt;a id='L9668' name='L9668'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}
<a id='L9683' name='L9683'></a>&lt;a id='L9669' name='L9669'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}
<a id='L9684' name='L9684'></a>&lt;a id='L9670' name='L9670'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}
<a id='L9685' name='L9685'></a>&lt;a id='L9671' name='L9671'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}
<a id='L9686' name='L9686'></a>&lt;a id='L9672' name='L9672'&gt;&lt;/a&gt;
<a id='L9687' name='L9687'></a>&lt;a id='L9673' name='L9673'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00F0}{\dh}
<a id='L9688' name='L9688'></a>&lt;a id='L9674' name='L9674'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00F1}{\~n}
<a id='L9689' name='L9689'></a>&lt;a id='L9675' name='L9675'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00F2}{\`o}
<a id='L9690' name='L9690'></a>&lt;a id='L9676' name='L9676'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00F3}{\'o}
<a id='L9691' name='L9691'></a>&lt;a id='L9677' name='L9677'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00F4}{\^o}
<a id='L9692' name='L9692'></a>&lt;a id='L9678' name='L9678'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00F5}{\~o}
<a id='L9693' name='L9693'></a>&lt;a id='L9679' name='L9679'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00F6}{\"o}
<a id='L9694' name='L9694'></a>&lt;a id='L9680' name='L9680'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00F8}{\o}
<a id='L9695' name='L9695'></a>&lt;a id='L9681' name='L9681'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00F9}{\`u}
<a id='L9696' name='L9696'></a>&lt;a id='L9682' name='L9682'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00FA}{\'u}
<a id='L9697' name='L9697'></a>&lt;a id='L9683' name='L9683'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00FB}{\^u}
<a id='L9698' name='L9698'></a>&lt;a id='L9684' name='L9684'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00FC}{\"u}
<a id='L9699' name='L9699'></a>&lt;a id='L9685' name='L9685'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00FD}{\'y}
<a id='L9700' name='L9700'></a>&lt;a id='L9686' name='L9686'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00FE}{\th}
<a id='L9701' name='L9701'></a>&lt;a id='L9687' name='L9687'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{00FF}{\"y}
<a id='L9702' name='L9702'></a>&lt;a id='L9688' name='L9688'&gt;&lt;/a&gt;
<a id='L9703' name='L9703'></a>&lt;a id='L9689' name='L9689'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0100}{\=A}
<a id='L9704' name='L9704'></a>&lt;a id='L9690' name='L9690'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0101}{\=a}
<a id='L9705' name='L9705'></a>&lt;a id='L9691' name='L9691'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0102}{\u{A}}
<a id='L9706' name='L9706'></a>&lt;a id='L9692' name='L9692'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0103}{\u{a}}
<a id='L9707' name='L9707'></a>&lt;a id='L9693' name='L9693'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0104}{\ogonek{A}}
<a id='L9708' name='L9708'></a>&lt;a id='L9694' name='L9694'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0105}{\ogonek{a}}
<a id='L9709' name='L9709'></a>&lt;a id='L9695' name='L9695'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0106}{\'C}
<a id='L9710' name='L9710'></a>&lt;a id='L9696' name='L9696'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0107}{\'c}
<a id='L9711' name='L9711'></a>&lt;a id='L9697' name='L9697'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0108}{\^C}
<a id='L9712' name='L9712'></a>&lt;a id='L9698' name='L9698'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0109}{\^c}
<a id='L9713' name='L9713'></a>&lt;a id='L9699' name='L9699'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0118}{\ogonek{E}}
<a id='L9714' name='L9714'></a>&lt;a id='L9700' name='L9700'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0119}{\ogonek{e}}
<a id='L9715' name='L9715'></a>&lt;a id='L9701' name='L9701'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{010A}{\dotaccent{C}}
<a id='L9716' name='L9716'></a>&lt;a id='L9702' name='L9702'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{010B}{\dotaccent{c}}
<a id='L9717' name='L9717'></a>&lt;a id='L9703' name='L9703'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{010C}{\v{C}}
<a id='L9718' name='L9718'></a>&lt;a id='L9704' name='L9704'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{010D}{\v{c}}
<a id='L9719' name='L9719'></a>&lt;a id='L9705' name='L9705'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{010E}{\v{D}}
<a id='L9720' name='L9720'></a>&lt;a id='L9706' name='L9706'&gt;&lt;/a&gt;
<a id='L9721' name='L9721'></a>&lt;a id='L9707' name='L9707'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0112}{\=E}
<a id='L9722' name='L9722'></a>&lt;a id='L9708' name='L9708'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0113}{\=e}
<a id='L9723' name='L9723'></a>&lt;a id='L9709' name='L9709'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0114}{\u{E}}
<a id='L9724' name='L9724'></a>&lt;a id='L9710' name='L9710'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0115}{\u{e}}
<a id='L9725' name='L9725'></a>&lt;a id='L9711' name='L9711'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0116}{\dotaccent{E}}
<a id='L9726' name='L9726'></a>&lt;a id='L9712' name='L9712'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0117}{\dotaccent{e}}
<a id='L9727' name='L9727'></a>&lt;a id='L9713' name='L9713'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{011A}{\v{E}}
<a id='L9728' name='L9728'></a>&lt;a id='L9714' name='L9714'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{011B}{\v{e}}
<a id='L9729' name='L9729'></a>&lt;a id='L9715' name='L9715'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{011C}{\^G}
<a id='L9730' name='L9730'></a>&lt;a id='L9716' name='L9716'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{011D}{\^g}
<a id='L9731' name='L9731'></a>&lt;a id='L9717' name='L9717'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{011E}{\u{G}}
<a id='L9732' name='L9732'></a>&lt;a id='L9718' name='L9718'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{011F}{\u{g}}
<a id='L9733' name='L9733'></a>&lt;a id='L9719' name='L9719'&gt;&lt;/a&gt;
<a id='L9734' name='L9734'></a>&lt;a id='L9720' name='L9720'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0120}{\dotaccent{G}}
<a id='L9735' name='L9735'></a>&lt;a id='L9721' name='L9721'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0121}{\dotaccent{g}}
<a id='L9736' name='L9736'></a>&lt;a id='L9722' name='L9722'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0124}{\^H}
<a id='L9737' name='L9737'></a>&lt;a id='L9723' name='L9723'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0125}{\^h}
<a id='L9738' name='L9738'></a>&lt;a id='L9724' name='L9724'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0128}{\~I}
<a id='L9739' name='L9739'></a>&lt;a id='L9725' name='L9725'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}
<a id='L9740' name='L9740'></a>&lt;a id='L9726' name='L9726'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{012A}{\=I}
<a id='L9741' name='L9741'></a>&lt;a id='L9727' name='L9727'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}
<a id='L9742' name='L9742'></a>&lt;a id='L9728' name='L9728'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{012C}{\u{I}}
<a id='L9743' name='L9743'></a>&lt;a id='L9729' name='L9729'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}
<a id='L9744' name='L9744'></a>&lt;a id='L9730' name='L9730'&gt;&lt;/a&gt;
<a id='L9745' name='L9745'></a>&lt;a id='L9731' name='L9731'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0130}{\dotaccent{I}}
<a id='L9746' name='L9746'></a>&lt;a id='L9732' name='L9732'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0131}{\dotless{i}}
<a id='L9747' name='L9747'></a>&lt;a id='L9733' name='L9733'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0132}{IJ}
<a id='L9748' name='L9748'></a>&lt;a id='L9734' name='L9734'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0133}{ij}
<a id='L9749' name='L9749'></a>&lt;a id='L9735' name='L9735'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0134}{\^J}
<a id='L9750' name='L9750'></a>&lt;a id='L9736' name='L9736'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}
<a id='L9751' name='L9751'></a>&lt;a id='L9737' name='L9737'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0139}{\'L}
<a id='L9752' name='L9752'></a>&lt;a id='L9738' name='L9738'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{013A}{\'l}
<a id='L9753' name='L9753'></a>&lt;a id='L9739' name='L9739'&gt;&lt;/a&gt;
<a id='L9754' name='L9754'></a>&lt;a id='L9740' name='L9740'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0141}{\L}
<a id='L9755' name='L9755'></a>&lt;a id='L9741' name='L9741'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0142}{\l}
<a id='L9756' name='L9756'></a>&lt;a id='L9742' name='L9742'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0143}{\'N}
<a id='L9757' name='L9757'></a>&lt;a id='L9743' name='L9743'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0144}{\'n}
<a id='L9758' name='L9758'></a>&lt;a id='L9744' name='L9744'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0147}{\v{N}}
<a id='L9759' name='L9759'></a>&lt;a id='L9745' name='L9745'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0148}{\v{n}}
<a id='L9760' name='L9760'></a>&lt;a id='L9746' name='L9746'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{014C}{\=O}
<a id='L9761' name='L9761'></a>&lt;a id='L9747' name='L9747'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{014D}{\=o}
<a id='L9762' name='L9762'></a>&lt;a id='L9748' name='L9748'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{014E}{\u{O}}
<a id='L9763' name='L9763'></a>&lt;a id='L9749' name='L9749'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{014F}{\u{o}}
<a id='L9764' name='L9764'></a>&lt;a id='L9750' name='L9750'&gt;&lt;/a&gt;
<a id='L9765' name='L9765'></a>&lt;a id='L9751' name='L9751'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0150}{\H{O}}
<a id='L9766' name='L9766'></a>&lt;a id='L9752' name='L9752'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0151}{\H{o}}
<a id='L9767' name='L9767'></a>&lt;a id='L9753' name='L9753'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0152}{\OE}
<a id='L9768' name='L9768'></a>&lt;a id='L9754' name='L9754'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0153}{\oe}
<a id='L9769' name='L9769'></a>&lt;a id='L9755' name='L9755'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0154}{\'R}
<a id='L9770' name='L9770'></a>&lt;a id='L9756' name='L9756'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0155}{\'r}
<a id='L9771' name='L9771'></a>&lt;a id='L9757' name='L9757'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0158}{\v{R}}
<a id='L9772' name='L9772'></a>&lt;a id='L9758' name='L9758'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0159}{\v{r}}
<a id='L9773' name='L9773'></a>&lt;a id='L9759' name='L9759'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{015A}{\'S}
<a id='L9774' name='L9774'></a>&lt;a id='L9760' name='L9760'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{015B}{\'s}
<a id='L9775' name='L9775'></a>&lt;a id='L9761' name='L9761'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{015C}{\^S}
<a id='L9776' name='L9776'></a>&lt;a id='L9762' name='L9762'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{015D}{\^s}
<a id='L9777' name='L9777'></a>&lt;a id='L9763' name='L9763'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{015E}{\cedilla{S}}
<a id='L9778' name='L9778'></a>&lt;a id='L9764' name='L9764'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{015F}{\cedilla{s}}
<a id='L9779' name='L9779'></a>&lt;a id='L9765' name='L9765'&gt;&lt;/a&gt;
<a id='L9780' name='L9780'></a>&lt;a id='L9766' name='L9766'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0160}{\v{S}}
<a id='L9781' name='L9781'></a>&lt;a id='L9767' name='L9767'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0161}{\v{s}}
<a id='L9782' name='L9782'></a>&lt;a id='L9768' name='L9768'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0162}{\cedilla{t}}
<a id='L9783' name='L9783'></a>&lt;a id='L9769' name='L9769'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0163}{\cedilla{T}}
<a id='L9784' name='L9784'></a>&lt;a id='L9770' name='L9770'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0164}{\v{T}}
<a id='L9785' name='L9785'></a>&lt;a id='L9771' name='L9771'&gt;&lt;/a&gt;
<a id='L9786' name='L9786'></a>&lt;a id='L9772' name='L9772'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0168}{\~U}
<a id='L9787' name='L9787'></a>&lt;a id='L9773' name='L9773'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0169}{\~u}
<a id='L9788' name='L9788'></a>&lt;a id='L9774' name='L9774'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{016A}{\=U}
<a id='L9789' name='L9789'></a>&lt;a id='L9775' name='L9775'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{016B}{\=u}
<a id='L9790' name='L9790'></a>&lt;a id='L9776' name='L9776'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{016C}{\u{U}}
<a id='L9791' name='L9791'></a>&lt;a id='L9777' name='L9777'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{016D}{\u{u}}
<a id='L9792' name='L9792'></a>&lt;a id='L9778' name='L9778'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{016E}{\ringaccent{U}}
<a id='L9793' name='L9793'></a>&lt;a id='L9779' name='L9779'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{016F}{\ringaccent{u}}
<a id='L9794' name='L9794'></a>&lt;a id='L9780' name='L9780'&gt;&lt;/a&gt;
<a id='L9795' name='L9795'></a>&lt;a id='L9781' name='L9781'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0170}{\H{U}}
<a id='L9796' name='L9796'></a>&lt;a id='L9782' name='L9782'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0171}{\H{u}}
<a id='L9797' name='L9797'></a>&lt;a id='L9783' name='L9783'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0174}{\^W}
<a id='L9798' name='L9798'></a>&lt;a id='L9784' name='L9784'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0175}{\^w}
<a id='L9799' name='L9799'></a>&lt;a id='L9785' name='L9785'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0176}{\^Y}
<a id='L9800' name='L9800'></a>&lt;a id='L9786' name='L9786'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0177}{\^y}
<a id='L9801' name='L9801'></a>&lt;a id='L9787' name='L9787'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0178}{\"Y}
<a id='L9802' name='L9802'></a>&lt;a id='L9788' name='L9788'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0179}{\'Z}
<a id='L9803' name='L9803'></a>&lt;a id='L9789' name='L9789'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{017A}{\'z}
<a id='L9804' name='L9804'></a>&lt;a id='L9790' name='L9790'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}
<a id='L9805' name='L9805'></a>&lt;a id='L9791' name='L9791'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{017C}{\dotaccent{z}}
<a id='L9806' name='L9806'></a>&lt;a id='L9792' name='L9792'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{017D}{\v{Z}}
<a id='L9807' name='L9807'></a>&lt;a id='L9793' name='L9793'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{017E}{\v{z}}
<a id='L9808' name='L9808'></a>&lt;a id='L9794' name='L9794'&gt;&lt;/a&gt;
<a id='L9809' name='L9809'></a>&lt;a id='L9795' name='L9795'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01C4}{D\v{Z}}
<a id='L9810' name='L9810'></a>&lt;a id='L9796' name='L9796'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01C5}{D\v{z}}
<a id='L9811' name='L9811'></a>&lt;a id='L9797' name='L9797'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01C6}{d\v{z}}
<a id='L9812' name='L9812'></a>&lt;a id='L9798' name='L9798'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01C7}{LJ}
<a id='L9813' name='L9813'></a>&lt;a id='L9799' name='L9799'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01C8}{Lj}
<a id='L9814' name='L9814'></a>&lt;a id='L9800' name='L9800'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01C9}{lj}
<a id='L9815' name='L9815'></a>&lt;a id='L9801' name='L9801'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01CA}{NJ}
<a id='L9816' name='L9816'></a>&lt;a id='L9802' name='L9802'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01CB}{Nj}
<a id='L9817' name='L9817'></a>&lt;a id='L9803' name='L9803'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01CC}{nj}
<a id='L9818' name='L9818'></a>&lt;a id='L9804' name='L9804'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01CD}{\v{A}}
<a id='L9819' name='L9819'></a>&lt;a id='L9805' name='L9805'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01CE}{\v{a}}
<a id='L9820' name='L9820'></a>&lt;a id='L9806' name='L9806'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01CF}{\v{I}}
<a id='L9821' name='L9821'></a>&lt;a id='L9807' name='L9807'&gt;&lt;/a&gt;
<a id='L9822' name='L9822'></a>&lt;a id='L9808' name='L9808'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}
<a id='L9823' name='L9823'></a>&lt;a id='L9809' name='L9809'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01D1}{\v{O}}
<a id='L9824' name='L9824'></a>&lt;a id='L9810' name='L9810'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01D2}{\v{o}}
<a id='L9825' name='L9825'></a>&lt;a id='L9811' name='L9811'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01D3}{\v{U}}
<a id='L9826' name='L9826'></a>&lt;a id='L9812' name='L9812'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01D4}{\v{u}}
<a id='L9827' name='L9827'></a>&lt;a id='L9813' name='L9813'&gt;&lt;/a&gt;
<a id='L9828' name='L9828'></a>&lt;a id='L9814' name='L9814'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01E2}{\={\AE}}
<a id='L9829' name='L9829'></a>&lt;a id='L9815' name='L9815'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01E3}{\={\ae}}
<a id='L9830' name='L9830'></a>&lt;a id='L9816' name='L9816'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01E6}{\v{G}}
<a id='L9831' name='L9831'></a>&lt;a id='L9817' name='L9817'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01E7}{\v{g}}
<a id='L9832' name='L9832'></a>&lt;a id='L9818' name='L9818'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01E8}{\v{K}}
<a id='L9833' name='L9833'></a>&lt;a id='L9819' name='L9819'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01E9}{\v{k}}
<a id='L9834' name='L9834'></a>&lt;a id='L9820' name='L9820'&gt;&lt;/a&gt;
<a id='L9835' name='L9835'></a>&lt;a id='L9821' name='L9821'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}
<a id='L9836' name='L9836'></a>&lt;a id='L9822' name='L9822'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01F1}{DZ}
<a id='L9837' name='L9837'></a>&lt;a id='L9823' name='L9823'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01F2}{Dz}
<a id='L9838' name='L9838'></a>&lt;a id='L9824' name='L9824'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01F3}{dz}
<a id='L9839' name='L9839'></a>&lt;a id='L9825' name='L9825'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01F4}{\'G}
<a id='L9840' name='L9840'></a>&lt;a id='L9826' name='L9826'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01F5}{\'g}
<a id='L9841' name='L9841'></a>&lt;a id='L9827' name='L9827'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01F8}{\`N}
<a id='L9842' name='L9842'></a>&lt;a id='L9828' name='L9828'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01F9}{\`n}
<a id='L9843' name='L9843'></a>&lt;a id='L9829' name='L9829'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01FC}{\'{\AE}}
<a id='L9844' name='L9844'></a>&lt;a id='L9830' name='L9830'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01FD}{\'{\ae}}
<a id='L9845' name='L9845'></a>&lt;a id='L9831' name='L9831'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01FE}{\'{\O}}
<a id='L9846' name='L9846'></a>&lt;a id='L9832' name='L9832'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{01FF}{\'{\o}}
<a id='L9847' name='L9847'></a>&lt;a id='L9833' name='L9833'&gt;&lt;/a&gt;
<a id='L9848' name='L9848'></a>&lt;a id='L9834' name='L9834'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{021E}{\v{H}}
<a id='L9849' name='L9849'></a>&lt;a id='L9835' name='L9835'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{021F}{\v{h}}
<a id='L9850' name='L9850'></a>&lt;a id='L9836' name='L9836'&gt;&lt;/a&gt;
<a id='L9851' name='L9851'></a>&lt;a id='L9837' name='L9837'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0226}{\dotaccent{A}}
<a id='L9852' name='L9852'></a>&lt;a id='L9838' name='L9838'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0227}{\dotaccent{a}}
<a id='L9853' name='L9853'></a>&lt;a id='L9839' name='L9839'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0228}{\cedilla{E}}
<a id='L9854' name='L9854'></a>&lt;a id='L9840' name='L9840'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0229}{\cedilla{e}}
<a id='L9855' name='L9855'></a>&lt;a id='L9841' name='L9841'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{022E}{\dotaccent{O}}
<a id='L9856' name='L9856'></a>&lt;a id='L9842' name='L9842'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{022F}{\dotaccent{o}}
<a id='L9857' name='L9857'></a>&lt;a id='L9843' name='L9843'&gt;&lt;/a&gt;
<a id='L9858' name='L9858'></a>&lt;a id='L9844' name='L9844'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0232}{\=Y}
<a id='L9859' name='L9859'></a>&lt;a id='L9845' name='L9845'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0233}{\=y}
<a id='L9860' name='L9860'></a>&lt;a id='L9846' name='L9846'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{0237}{\dotless{j}}
<a id='L9861' name='L9861'></a>&lt;a id='L9847' name='L9847'&gt;&lt;/a&gt;
<a id='L9862' name='L9862'></a>&lt;a id='L9848' name='L9848'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{02DB}{\ogonek{ }}
<a id='L9863' name='L9863'></a>&lt;a id='L9849' name='L9849'&gt;&lt;/a&gt;
<a id='L9864' name='L9864'></a>&lt;a id='L9850' name='L9850'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
<a id='L9865' name='L9865'></a>&lt;a id='L9851' name='L9851'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
<a id='L9866' name='L9866'></a>&lt;a id='L9852' name='L9852'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}
<a id='L9867' name='L9867'></a>&lt;a id='L9853' name='L9853'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}
<a id='L9868' name='L9868'></a>&lt;a id='L9854' name='L9854'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}
<a id='L9869' name='L9869'></a>&lt;a id='L9855' name='L9855'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}
<a id='L9870' name='L9870'></a>&lt;a id='L9856' name='L9856'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}
<a id='L9871' name='L9871'></a>&lt;a id='L9857' name='L9857'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}
<a id='L9872' name='L9872'></a>&lt;a id='L9858' name='L9858'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}
<a id='L9873' name='L9873'></a>&lt;a id='L9859' name='L9859'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}
<a id='L9874' name='L9874'></a>&lt;a id='L9860' name='L9860'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}
<a id='L9875' name='L9875'></a>&lt;a id='L9861' name='L9861'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}
<a id='L9876' name='L9876'></a>&lt;a id='L9862' name='L9862'&gt;&lt;/a&gt;
<a id='L9877' name='L9877'></a>&lt;a id='L9863' name='L9863'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}
<a id='L9878' name='L9878'></a>&lt;a id='L9864' name='L9864'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}
<a id='L9879' name='L9879'></a>&lt;a id='L9865' name='L9865'&gt;&lt;/a&gt;
<a id='L9880' name='L9880'></a>&lt;a id='L9866' name='L9866'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E20}{\=G}
<a id='L9881' name='L9881'></a>&lt;a id='L9867' name='L9867'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E21}{\=g}
<a id='L9882' name='L9882'></a>&lt;a id='L9868' name='L9868'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}
<a id='L9883' name='L9883'></a>&lt;a id='L9869' name='L9869'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}
<a id='L9884' name='L9884'></a>&lt;a id='L9870' name='L9870'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}
<a id='L9885' name='L9885'></a>&lt;a id='L9871' name='L9871'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}
<a id='L9886' name='L9886'></a>&lt;a id='L9872' name='L9872'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E26}{\"H}
<a id='L9887' name='L9887'></a>&lt;a id='L9873' name='L9873'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E27}{\"h}
<a id='L9888' name='L9888'></a>&lt;a id='L9874' name='L9874'&gt;&lt;/a&gt;
<a id='L9889' name='L9889'></a>&lt;a id='L9875' name='L9875'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E30}{\'K}
<a id='L9890' name='L9890'></a>&lt;a id='L9876' name='L9876'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E31}{\'k}
<a id='L9891' name='L9891'></a>&lt;a id='L9877' name='L9877'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}
<a id='L9892' name='L9892'></a>&lt;a id='L9878' name='L9878'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}
<a id='L9893' name='L9893'></a>&lt;a id='L9879' name='L9879'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}
<a id='L9894' name='L9894'></a>&lt;a id='L9880' name='L9880'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}
<a id='L9895' name='L9895'></a>&lt;a id='L9881' name='L9881'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}
<a id='L9896' name='L9896'></a>&lt;a id='L9882' name='L9882'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}
<a id='L9897' name='L9897'></a>&lt;a id='L9883' name='L9883'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}
<a id='L9898' name='L9898'></a>&lt;a id='L9884' name='L9884'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}
<a id='L9899' name='L9899'></a>&lt;a id='L9885' name='L9885'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E3E}{\'M}
<a id='L9900' name='L9900'></a>&lt;a id='L9886' name='L9886'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E3F}{\'m}
<a id='L9901' name='L9901'></a>&lt;a id='L9887' name='L9887'&gt;&lt;/a&gt;
<a id='L9902' name='L9902'></a>&lt;a id='L9888' name='L9888'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}
<a id='L9903' name='L9903'></a>&lt;a id='L9889' name='L9889'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}
<a id='L9904' name='L9904'></a>&lt;a id='L9890' name='L9890'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}
<a id='L9905' name='L9905'></a>&lt;a id='L9891' name='L9891'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}
<a id='L9906' name='L9906'></a>&lt;a id='L9892' name='L9892'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}
<a id='L9907' name='L9907'></a>&lt;a id='L9893' name='L9893'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}
<a id='L9908' name='L9908'></a>&lt;a id='L9894' name='L9894'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}
<a id='L9909' name='L9909'></a>&lt;a id='L9895' name='L9895'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}
<a id='L9910' name='L9910'></a>&lt;a id='L9896' name='L9896'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}
<a id='L9911' name='L9911'></a>&lt;a id='L9897' name='L9897'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}
<a id='L9912' name='L9912'></a>&lt;a id='L9898' name='L9898'&gt;&lt;/a&gt;
<a id='L9913' name='L9913'></a>&lt;a id='L9899' name='L9899'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E54}{\'P}
<a id='L9914' name='L9914'></a>&lt;a id='L9900' name='L9900'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E55}{\'p}
<a id='L9915' name='L9915'></a>&lt;a id='L9901' name='L9901'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}
<a id='L9916' name='L9916'></a>&lt;a id='L9902' name='L9902'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}
<a id='L9917' name='L9917'></a>&lt;a id='L9903' name='L9903'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}
<a id='L9918' name='L9918'></a>&lt;a id='L9904' name='L9904'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}
<a id='L9919' name='L9919'></a>&lt;a id='L9905' name='L9905'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}
<a id='L9920' name='L9920'></a>&lt;a id='L9906' name='L9906'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}
<a id='L9921' name='L9921'></a>&lt;a id='L9907' name='L9907'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}
<a id='L9922' name='L9922'></a>&lt;a id='L9908' name='L9908'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}
<a id='L9923' name='L9923'></a>&lt;a id='L9909' name='L9909'&gt;&lt;/a&gt;
<a id='L9924' name='L9924'></a>&lt;a id='L9910' name='L9910'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}
<a id='L9925' name='L9925'></a>&lt;a id='L9911' name='L9911'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}
<a id='L9926' name='L9926'></a>&lt;a id='L9912' name='L9912'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}
<a id='L9927' name='L9927'></a>&lt;a id='L9913' name='L9913'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}
<a id='L9928' name='L9928'></a>&lt;a id='L9914' name='L9914'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}
<a id='L9929' name='L9929'></a>&lt;a id='L9915' name='L9915'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}
<a id='L9930' name='L9930'></a>&lt;a id='L9916' name='L9916'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}
<a id='L9931' name='L9931'></a>&lt;a id='L9917' name='L9917'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}
<a id='L9932' name='L9932'></a>&lt;a id='L9918' name='L9918'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}
<a id='L9933' name='L9933'></a>&lt;a id='L9919' name='L9919'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}
<a id='L9934' name='L9934'></a>&lt;a id='L9920' name='L9920'&gt;&lt;/a&gt;
<a id='L9935' name='L9935'></a>&lt;a id='L9921' name='L9921'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E7C}{\~V}
<a id='L9936' name='L9936'></a>&lt;a id='L9922' name='L9922'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E7D}{\~v}
<a id='L9937' name='L9937'></a>&lt;a id='L9923' name='L9923'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}
<a id='L9938' name='L9938'></a>&lt;a id='L9924' name='L9924'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}
<a id='L9939' name='L9939'></a>&lt;a id='L9925' name='L9925'&gt;&lt;/a&gt;
<a id='L9940' name='L9940'></a>&lt;a id='L9926' name='L9926'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E80}{\`W}
<a id='L9941' name='L9941'></a>&lt;a id='L9927' name='L9927'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E81}{\`w}
<a id='L9942' name='L9942'></a>&lt;a id='L9928' name='L9928'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E82}{\'W}
<a id='L9943' name='L9943'></a>&lt;a id='L9929' name='L9929'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E83}{\'w}
<a id='L9944' name='L9944'></a>&lt;a id='L9930' name='L9930'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E84}{\"W}
<a id='L9945' name='L9945'></a>&lt;a id='L9931' name='L9931'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E85}{\"w}
<a id='L9946' name='L9946'></a>&lt;a id='L9932' name='L9932'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}
<a id='L9947' name='L9947'></a>&lt;a id='L9933' name='L9933'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}
<a id='L9948' name='L9948'></a>&lt;a id='L9934' name='L9934'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}
<a id='L9949' name='L9949'></a>&lt;a id='L9935' name='L9935'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}
<a id='L9950' name='L9950'></a>&lt;a id='L9936' name='L9936'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}
<a id='L9951' name='L9951'></a>&lt;a id='L9937' name='L9937'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}
<a id='L9952' name='L9952'></a>&lt;a id='L9938' name='L9938'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E8C}{\"X}
<a id='L9953' name='L9953'></a>&lt;a id='L9939' name='L9939'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E8D}{\"x}
<a id='L9954' name='L9954'></a>&lt;a id='L9940' name='L9940'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}
<a id='L9955' name='L9955'></a>&lt;a id='L9941' name='L9941'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}
<a id='L9956' name='L9956'></a>&lt;a id='L9942' name='L9942'&gt;&lt;/a&gt;
<a id='L9957' name='L9957'></a>&lt;a id='L9943' name='L9943'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E90}{\^Z}
<a id='L9958' name='L9958'></a>&lt;a id='L9944' name='L9944'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E91}{\^z}
<a id='L9959' name='L9959'></a>&lt;a id='L9945' name='L9945'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}
<a id='L9960' name='L9960'></a>&lt;a id='L9946' name='L9946'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}
<a id='L9961' name='L9961'></a>&lt;a id='L9947' name='L9947'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}
<a id='L9962' name='L9962'></a>&lt;a id='L9948' name='L9948'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}
<a id='L9963' name='L9963'></a>&lt;a id='L9949' name='L9949'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}
<a id='L9964' name='L9964'></a>&lt;a id='L9950' name='L9950'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E97}{\"t}
<a id='L9965' name='L9965'></a>&lt;a id='L9951' name='L9951'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}
<a id='L9966' name='L9966'></a>&lt;a id='L9952' name='L9952'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}
<a id='L9967' name='L9967'></a>&lt;a id='L9953' name='L9953'&gt;&lt;/a&gt;
<a id='L9968' name='L9968'></a>&lt;a id='L9954' name='L9954'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}
<a id='L9969' name='L9969'></a>&lt;a id='L9955' name='L9955'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}
<a id='L9970' name='L9970'></a>&lt;a id='L9956' name='L9956'&gt;&lt;/a&gt;
<a id='L9971' name='L9971'></a>&lt;a id='L9957' name='L9957'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}
<a id='L9972' name='L9972'></a>&lt;a id='L9958' name='L9958'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}
<a id='L9973' name='L9973'></a>&lt;a id='L9959' name='L9959'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1EBC}{\~E}
<a id='L9974' name='L9974'></a>&lt;a id='L9960' name='L9960'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1EBD}{\~e}
<a id='L9975' name='L9975'></a>&lt;a id='L9961' name='L9961'&gt;&lt;/a&gt;
<a id='L9976' name='L9976'></a>&lt;a id='L9962' name='L9962'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}
<a id='L9977' name='L9977'></a>&lt;a id='L9963' name='L9963'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}
<a id='L9978' name='L9978'></a>&lt;a id='L9964' name='L9964'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}
<a id='L9979' name='L9979'></a>&lt;a id='L9965' name='L9965'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}
<a id='L9980' name='L9980'></a>&lt;a id='L9966' name='L9966'&gt;&lt;/a&gt;
<a id='L9981' name='L9981'></a>&lt;a id='L9967' name='L9967'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}
<a id='L9982' name='L9982'></a>&lt;a id='L9968' name='L9968'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}
<a id='L9983' name='L9983'></a>&lt;a id='L9969' name='L9969'&gt;&lt;/a&gt;
<a id='L9984' name='L9984'></a>&lt;a id='L9970' name='L9970'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1EF2}{\`Y}
<a id='L9985' name='L9985'></a>&lt;a id='L9971' name='L9971'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1EF3}{\`y}
<a id='L9986' name='L9986'></a>&lt;a id='L9972' name='L9972'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}
<a id='L9987' name='L9987'></a>&lt;a id='L9973' name='L9973'&gt;&lt;/a&gt;
<a id='L9988' name='L9988'></a>&lt;a id='L9974' name='L9974'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1EF8}{\~Y}
<a id='L9989' name='L9989'></a>&lt;a id='L9975' name='L9975'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{1EF9}{\~y}
<a id='L9990' name='L9990'></a>&lt;a id='L9976' name='L9976'&gt;&lt;/a&gt;
<a id='L9991' name='L9991'></a>&lt;a id='L9977' name='L9977'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{2013}{--}
<a id='L9992' name='L9992'></a>&lt;a id='L9978' name='L9978'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{2014}{---}
<a id='L9993' name='L9993'></a>&lt;a id='L9979' name='L9979'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{2018}{\quoteleft}
<a id='L9994' name='L9994'></a>&lt;a id='L9980' name='L9980'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{2019}{\quoteright}
<a id='L9995' name='L9995'></a>&lt;a id='L9981' name='L9981'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{201A}{\quotesinglbase}
<a id='L9996' name='L9996'></a>&lt;a id='L9982' name='L9982'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{201C}{\quotedblleft}
<a id='L9997' name='L9997'></a>&lt;a id='L9983' name='L9983'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{201D}{\quotedblright}
<a id='L9998' name='L9998'></a>&lt;a id='L9984' name='L9984'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{201E}{\quotedblbase}
<a id='L9999' name='L9999'></a>&lt;a id='L9985' name='L9985'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{2022}{\bullet}
<a id='L10000' name='L10000'></a>&lt;a id='L9986' name='L9986'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{2026}{\dots}
<a id='L10001' name='L10001'></a>&lt;a id='L9987' name='L9987'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{2039}{\guilsinglleft}
<a id='L10002' name='L10002'></a>&lt;a id='L9988' name='L9988'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{203A}{\guilsinglright}
<a id='L10003' name='L10003'></a>&lt;a id='L9989' name='L9989'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{20AC}{\euro}
<a id='L10004' name='L10004'></a>&lt;a id='L9990' name='L9990'&gt;&lt;/a&gt;
<a id='L10005' name='L10005'></a>&lt;a id='L9991' name='L9991'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{2192}{\expansion}
<a id='L10006' name='L10006'></a>&lt;a id='L9992' name='L9992'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{21D2}{\result}
<a id='L10007' name='L10007'></a>&lt;a id='L9993' name='L9993'&gt;&lt;/a&gt;
<a id='L10008' name='L10008'></a>&lt;a id='L9994' name='L9994'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{2212}{\minus}
<a id='L10009' name='L10009'></a>&lt;a id='L9995' name='L9995'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{2217}{\point}
<a id='L10010' name='L10010'></a>&lt;a id='L9996' name='L9996'&gt;&lt;/a&gt;  \DeclareUnicodeCharacter{2261}{\equiv}
<a id='L10011' name='L10011'></a>&lt;a id='L9997' name='L9997'&gt;&lt;/a&gt;}% end of \utfeightchardefs
<a id='L10012' name='L10012'></a>&lt;a id='L9998' name='L9998'&gt;&lt;/a&gt;
<a id='L10013' name='L10013'></a>&lt;a id='L9999' name='L9999'&gt;&lt;/a&gt;
<a id='L10014' name='L10014'></a>&lt;a id='L10000' name='L10000'&gt;&lt;/a&gt;% US-ASCII character definitions.
<a id='L10015' name='L10015'></a>&lt;a id='L10001' name='L10001'&gt;&lt;/a&gt;\def\asciichardefs{% nothing need be done
<a id='L10016' name='L10016'></a>&lt;a id='L10002' name='L10002'&gt;&lt;/a&gt;   \relax
<a id='L10017' name='L10017'></a>&lt;a id='L10003' name='L10003'&gt;&lt;/a&gt;}
<a id='L10018' name='L10018'></a>&lt;a id='L10004' name='L10004'&gt;&lt;/a&gt;
<a id='L10019' name='L10019'></a>&lt;a id='L10005' name='L10005'&gt;&lt;/a&gt;% Make non-ASCII characters printable again for compatibility with
<a id='L10020' name='L10020'></a>&lt;a id='L10006' name='L10006'&gt;&lt;/a&gt;% existing Texinfo documents that may use them, even without declaring a
<a id='L10021' name='L10021'></a>&lt;a id='L10007' name='L10007'&gt;&lt;/a&gt;% document encoding.
<a id='L10022' name='L10022'></a>&lt;a id='L10008' name='L10008'&gt;&lt;/a&gt;%
<a id='L10023' name='L10023'></a>&lt;a id='L10009' name='L10009'&gt;&lt;/a&gt;\setnonasciicharscatcode \other
<a id='L10024' name='L10024'></a>&lt;a id='L10010' name='L10010'&gt;&lt;/a&gt;
<a id='L10025' name='L10025'></a>&lt;a id='L10011' name='L10011'&gt;&lt;/a&gt;
<a id='L10026' name='L10026'></a>&lt;a id='L10012' name='L10012'&gt;&lt;/a&gt;\message{formatting,}
<a id='L10027' name='L10027'></a>&lt;a id='L10013' name='L10013'&gt;&lt;/a&gt;
<a id='L10028' name='L10028'></a>&lt;a id='L10014' name='L10014'&gt;&lt;/a&gt;\newdimen\defaultparindent \defaultparindent = 15pt
<a id='L10029' name='L10029'></a>&lt;a id='L10015' name='L10015'&gt;&lt;/a&gt;
<a id='L10030' name='L10030'></a>&lt;a id='L10016' name='L10016'&gt;&lt;/a&gt;\chapheadingskip = 15pt plus 4pt minus 2pt
<a id='L10031' name='L10031'></a>&lt;a id='L10017' name='L10017'&gt;&lt;/a&gt;\secheadingskip = 12pt plus 3pt minus 2pt
<a id='L10032' name='L10032'></a>&lt;a id='L10018' name='L10018'&gt;&lt;/a&gt;\subsecheadingskip = 9pt plus 2pt minus 2pt
<a id='L10033' name='L10033'></a>&lt;a id='L10019' name='L10019'&gt;&lt;/a&gt;
<a id='L10034' name='L10034'></a>&lt;a id='L10020' name='L10020'&gt;&lt;/a&gt;% Prevent underfull vbox error messages.
<a id='L10035' name='L10035'></a>&lt;a id='L10021' name='L10021'&gt;&lt;/a&gt;\vbadness = 10000
<a id='L10036' name='L10036'></a>&lt;a id='L10022' name='L10022'&gt;&lt;/a&gt;
<a id='L10037' name='L10037'></a>&lt;a id='L10023' name='L10023'&gt;&lt;/a&gt;% Don't be very finicky about underfull hboxes, either.
<a id='L10038' name='L10038'></a>&lt;a id='L10024' name='L10024'&gt;&lt;/a&gt;\hbadness = 6666
<a id='L10039' name='L10039'></a>&lt;a id='L10025' name='L10025'&gt;&lt;/a&gt;
<a id='L10040' name='L10040'></a>&lt;a id='L10026' name='L10026'&gt;&lt;/a&gt;% Following George Bush, get rid of widows and orphans.
<a id='L10041' name='L10041'></a>&lt;a id='L10027' name='L10027'&gt;&lt;/a&gt;\widowpenalty=10000
<a id='L10042' name='L10042'></a>&lt;a id='L10028' name='L10028'&gt;&lt;/a&gt;\clubpenalty=10000
<a id='L10043' name='L10043'></a>&lt;a id='L10029' name='L10029'&gt;&lt;/a&gt;
<a id='L10044' name='L10044'></a>&lt;a id='L10030' name='L10030'&gt;&lt;/a&gt;% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
<a id='L10045' name='L10045'></a>&lt;a id='L10031' name='L10031'&gt;&lt;/a&gt;% using an old version of TeX, don't do anything.  We want the amount of
<a id='L10046' name='L10046'></a>&lt;a id='L10032' name='L10032'&gt;&lt;/a&gt;% stretch added to depend on the line length, hence the dependence on
<a id='L10047' name='L10047'></a>&lt;a id='L10033' name='L10033'&gt;&lt;/a&gt;% \hsize.  We call this whenever the paper size is set.
<a id='L10048' name='L10048'></a>&lt;a id='L10034' name='L10034'&gt;&lt;/a&gt;%
<a id='L10049' name='L10049'></a>&lt;a id='L10035' name='L10035'&gt;&lt;/a&gt;\def\setemergencystretch{%
<a id='L10050' name='L10050'></a>&lt;a id='L10036' name='L10036'&gt;&lt;/a&gt;  \ifx\emergencystretch\thisisundefined
<a id='L10051' name='L10051'></a>&lt;a id='L10037' name='L10037'&gt;&lt;/a&gt;    % Allow us to assign to \emergencystretch anyway.
<a id='L10052' name='L10052'></a>&lt;a id='L10038' name='L10038'&gt;&lt;/a&gt;    \def\emergencystretch{\dimen0}%
<a id='L10053' name='L10053'></a>&lt;a id='L10039' name='L10039'&gt;&lt;/a&gt;  \else
<a id='L10054' name='L10054'></a>&lt;a id='L10040' name='L10040'&gt;&lt;/a&gt;    \emergencystretch = .15\hsize
<a id='L10055' name='L10055'></a>&lt;a id='L10041' name='L10041'&gt;&lt;/a&gt;  \fi
<a id='L10056' name='L10056'></a>&lt;a id='L10042' name='L10042'&gt;&lt;/a&gt;}
<a id='L10057' name='L10057'></a>&lt;a id='L10043' name='L10043'&gt;&lt;/a&gt;
<a id='L10058' name='L10058'></a>&lt;a id='L10044' name='L10044'&gt;&lt;/a&gt;% Parameters in order: 1) textheight; 2) textwidth;
<a id='L10059' name='L10059'></a>&lt;a id='L10045' name='L10045'&gt;&lt;/a&gt;% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip;
<a id='L10060' name='L10060'></a>&lt;a id='L10046' name='L10046'&gt;&lt;/a&gt;% 7) physical page height; 8) physical page width.
<a id='L10061' name='L10061'></a>&lt;a id='L10047' name='L10047'&gt;&lt;/a&gt;%
<a id='L10062' name='L10062'></a>&lt;a id='L10048' name='L10048'&gt;&lt;/a&gt;% We also call \setleading{\textleading}, so the caller should define
<a id='L10063' name='L10063'></a>&lt;a id='L10049' name='L10049'&gt;&lt;/a&gt;% \textleading.  The caller should also set \parskip.
<a id='L10064' name='L10064'></a>&lt;a id='L10050' name='L10050'&gt;&lt;/a&gt;%
<a id='L10065' name='L10065'></a>&lt;a id='L10051' name='L10051'&gt;&lt;/a&gt;\def\internalpagesizes#1#2#3#4#5#6#7#8{%
<a id='L10066' name='L10066'></a>&lt;a id='L10052' name='L10052'&gt;&lt;/a&gt;  \voffset = #3\relax
<a id='L10067' name='L10067'></a>&lt;a id='L10053' name='L10053'&gt;&lt;/a&gt;  \topskip = #6\relax
<a id='L10068' name='L10068'></a>&lt;a id='L10054' name='L10054'&gt;&lt;/a&gt;  \splittopskip = \topskip
<a id='L10069' name='L10069'></a>&lt;a id='L10055' name='L10055'&gt;&lt;/a&gt;  %
<a id='L10070' name='L10070'></a>&lt;a id='L10056' name='L10056'&gt;&lt;/a&gt;  \vsize = #1\relax
<a id='L10071' name='L10071'></a>&lt;a id='L10057' name='L10057'&gt;&lt;/a&gt;  \advance\vsize by \topskip
<a id='L10072' name='L10072'></a>&lt;a id='L10058' name='L10058'&gt;&lt;/a&gt;  \outervsize = \vsize
<a id='L10073' name='L10073'></a>&lt;a id='L10059' name='L10059'&gt;&lt;/a&gt;  \advance\outervsize by 2\topandbottommargin
<a id='L10074' name='L10074'></a>&lt;a id='L10060' name='L10060'&gt;&lt;/a&gt;  \pageheight = \vsize
<a id='L10075' name='L10075'></a>&lt;a id='L10061' name='L10061'&gt;&lt;/a&gt;  %
<a id='L10076' name='L10076'></a>&lt;a id='L10062' name='L10062'&gt;&lt;/a&gt;  \hsize = #2\relax
<a id='L10077' name='L10077'></a>&lt;a id='L10063' name='L10063'&gt;&lt;/a&gt;  \outerhsize = \hsize
<a id='L10078' name='L10078'></a>&lt;a id='L10064' name='L10064'&gt;&lt;/a&gt;  \advance\outerhsize by 0.5in
<a id='L10079' name='L10079'></a>&lt;a id='L10065' name='L10065'&gt;&lt;/a&gt;  \pagewidth = \hsize
<a id='L10080' name='L10080'></a>&lt;a id='L10066' name='L10066'&gt;&lt;/a&gt;  %
<a id='L10081' name='L10081'></a>&lt;a id='L10067' name='L10067'&gt;&lt;/a&gt;  \normaloffset = #4\relax
<a id='L10082' name='L10082'></a>&lt;a id='L10068' name='L10068'&gt;&lt;/a&gt;  \bindingoffset = #5\relax
<a id='L10083' name='L10083'></a>&lt;a id='L10069' name='L10069'&gt;&lt;/a&gt;  %
<a id='L10084' name='L10084'></a>&lt;a id='L10070' name='L10070'&gt;&lt;/a&gt;  \ifpdf
<a id='L10085' name='L10085'></a>&lt;a id='L10071' name='L10071'&gt;&lt;/a&gt;    \pdfpageheight #7\relax
<a id='L10086' name='L10086'></a>&lt;a id='L10072' name='L10072'&gt;&lt;/a&gt;    \pdfpagewidth #8\relax
<a id='L10087' name='L10087'></a>&lt;a id='L10073' name='L10073'&gt;&lt;/a&gt;    % if we don't reset these, they will remain at "1 true in" of
<a id='L10088' name='L10088'></a>&lt;a id='L10074' name='L10074'&gt;&lt;/a&gt;    % whatever layout pdftex was dumped with.
<a id='L10089' name='L10089'></a>&lt;a id='L10075' name='L10075'&gt;&lt;/a&gt;    \pdfhorigin = 1 true in
<a id='L10090' name='L10090'></a>&lt;a id='L10076' name='L10076'&gt;&lt;/a&gt;    \pdfvorigin = 1 true in
<a id='L10091' name='L10091'></a>&lt;a id='L10077' name='L10077'&gt;&lt;/a&gt;  \fi
<a id='L10092' name='L10092'></a>&lt;a id='L10078' name='L10078'&gt;&lt;/a&gt;  %
<a id='L10093' name='L10093'></a>&lt;a id='L10079' name='L10079'&gt;&lt;/a&gt;  \setleading{\textleading}
<a id='L10094' name='L10094'></a>&lt;a id='L10080' name='L10080'&gt;&lt;/a&gt;  %
<a id='L10095' name='L10095'></a>&lt;a id='L10081' name='L10081'&gt;&lt;/a&gt;  \parindent = \defaultparindent
<a id='L10096' name='L10096'></a>&lt;a id='L10082' name='L10082'&gt;&lt;/a&gt;  \setemergencystretch
<a id='L10097' name='L10097'></a>&lt;a id='L10083' name='L10083'&gt;&lt;/a&gt;}
<a id='L10098' name='L10098'></a>&lt;a id='L10084' name='L10084'&gt;&lt;/a&gt;
<a id='L10099' name='L10099'></a>&lt;a id='L10085' name='L10085'&gt;&lt;/a&gt;% @letterpaper (the default).
<a id='L10100' name='L10100'></a>&lt;a id='L10086' name='L10086'&gt;&lt;/a&gt;\def\letterpaper{{\globaldefs = 1
<a id='L10101' name='L10101'></a>&lt;a id='L10087' name='L10087'&gt;&lt;/a&gt;  \parskip = 3pt plus 2pt minus 1pt
<a id='L10102' name='L10102'></a>&lt;a id='L10088' name='L10088'&gt;&lt;/a&gt;  \textleading = 13.2pt
<a id='L10103' name='L10103'></a>&lt;a id='L10089' name='L10089'&gt;&lt;/a&gt;  %
<a id='L10104' name='L10104'></a>&lt;a id='L10090' name='L10090'&gt;&lt;/a&gt;  % If page is nothing but text, make it come out even.
<a id='L10105' name='L10105'></a>&lt;a id='L10091' name='L10091'&gt;&lt;/a&gt;  \internalpagesizes{607.2pt}{6in}% that's 46 lines
<a id='L10106' name='L10106'></a>&lt;a id='L10092' name='L10092'&gt;&lt;/a&gt;                    {\voffset}{.25in}%
<a id='L10107' name='L10107'></a>&lt;a id='L10093' name='L10093'&gt;&lt;/a&gt;                    {\bindingoffset}{36pt}%
<a id='L10108' name='L10108'></a>&lt;a id='L10094' name='L10094'&gt;&lt;/a&gt;                    {11in}{8.5in}%
<a id='L10109' name='L10109'></a>&lt;a id='L10095' name='L10095'&gt;&lt;/a&gt;}}
<a id='L10110' name='L10110'></a>&lt;a id='L10096' name='L10096'&gt;&lt;/a&gt;
<a id='L10111' name='L10111'></a>&lt;a id='L10097' name='L10097'&gt;&lt;/a&gt;% Use @smallbook to reset parameters for 7x9.25 trim size.
<a id='L10112' name='L10112'></a>&lt;a id='L10098' name='L10098'&gt;&lt;/a&gt;\def\smallbook{{\globaldefs = 1
<a id='L10113' name='L10113'></a>&lt;a id='L10099' name='L10099'&gt;&lt;/a&gt;  \parskip = 2pt plus 1pt
<a id='L10114' name='L10114'></a>&lt;a id='L10100' name='L10100'&gt;&lt;/a&gt;  \textleading = 12pt
<a id='L10115' name='L10115'></a>&lt;a id='L10101' name='L10101'&gt;&lt;/a&gt;  %
<a id='L10116' name='L10116'></a>&lt;a id='L10102' name='L10102'&gt;&lt;/a&gt;  \internalpagesizes{7.5in}{5in}%
<a id='L10117' name='L10117'></a>&lt;a id='L10103' name='L10103'&gt;&lt;/a&gt;                    {-.2in}{0in}%
<a id='L10118' name='L10118'></a>&lt;a id='L10104' name='L10104'&gt;&lt;/a&gt;                    {\bindingoffset}{16pt}%
<a id='L10119' name='L10119'></a>&lt;a id='L10105' name='L10105'&gt;&lt;/a&gt;                    {9.25in}{7in}%
<a id='L10120' name='L10120'></a>&lt;a id='L10106' name='L10106'&gt;&lt;/a&gt;  %
<a id='L10121' name='L10121'></a>&lt;a id='L10107' name='L10107'&gt;&lt;/a&gt;  \lispnarrowing = 0.3in
<a id='L10122' name='L10122'></a>&lt;a id='L10108' name='L10108'&gt;&lt;/a&gt;  \tolerance = 700
<a id='L10123' name='L10123'></a>&lt;a id='L10109' name='L10109'&gt;&lt;/a&gt;  \hfuzz = 1pt
<a id='L10124' name='L10124'></a>&lt;a id='L10110' name='L10110'&gt;&lt;/a&gt;  \contentsrightmargin = 0pt
<a id='L10125' name='L10125'></a>&lt;a id='L10111' name='L10111'&gt;&lt;/a&gt;  \defbodyindent = .5cm
<a id='L10126' name='L10126'></a>&lt;a id='L10112' name='L10112'&gt;&lt;/a&gt;}}
<a id='L10127' name='L10127'></a>&lt;a id='L10113' name='L10113'&gt;&lt;/a&gt;
<a id='L10128' name='L10128'></a>&lt;a id='L10114' name='L10114'&gt;&lt;/a&gt;% Use @smallerbook to reset parameters for 6x9 trim size.
<a id='L10129' name='L10129'></a>&lt;a id='L10115' name='L10115'&gt;&lt;/a&gt;% (Just testing, parameters still in flux.)
<a id='L10130' name='L10130'></a>&lt;a id='L10116' name='L10116'&gt;&lt;/a&gt;\def\smallerbook{{\globaldefs = 1
<a id='L10131' name='L10131'></a>&lt;a id='L10117' name='L10117'&gt;&lt;/a&gt;  \parskip = 1.5pt plus 1pt
<a id='L10132' name='L10132'></a>&lt;a id='L10118' name='L10118'&gt;&lt;/a&gt;  \textleading = 12pt
<a id='L10133' name='L10133'></a>&lt;a id='L10119' name='L10119'&gt;&lt;/a&gt;  %
<a id='L10134' name='L10134'></a>&lt;a id='L10120' name='L10120'&gt;&lt;/a&gt;  \internalpagesizes{7.4in}{4.8in}%
<a id='L10135' name='L10135'></a>&lt;a id='L10121' name='L10121'&gt;&lt;/a&gt;                    {-.2in}{-.4in}%
<a id='L10136' name='L10136'></a>&lt;a id='L10122' name='L10122'&gt;&lt;/a&gt;                    {0pt}{14pt}%
<a id='L10137' name='L10137'></a>&lt;a id='L10123' name='L10123'&gt;&lt;/a&gt;                    {9in}{6in}%
<a id='L10138' name='L10138'></a>&lt;a id='L10124' name='L10124'&gt;&lt;/a&gt;  %
<a id='L10139' name='L10139'></a>&lt;a id='L10125' name='L10125'&gt;&lt;/a&gt;  \lispnarrowing = 0.25in
<a id='L10140' name='L10140'></a>&lt;a id='L10126' name='L10126'&gt;&lt;/a&gt;  \tolerance = 700
<a id='L10141' name='L10141'></a>&lt;a id='L10127' name='L10127'&gt;&lt;/a&gt;  \hfuzz = 1pt
<a id='L10142' name='L10142'></a>&lt;a id='L10128' name='L10128'&gt;&lt;/a&gt;  \contentsrightmargin = 0pt
<a id='L10143' name='L10143'></a>&lt;a id='L10129' name='L10129'&gt;&lt;/a&gt;  \defbodyindent = .4cm
<a id='L10144' name='L10144'></a>&lt;a id='L10130' name='L10130'&gt;&lt;/a&gt;}}
<a id='L10145' name='L10145'></a>&lt;a id='L10131' name='L10131'&gt;&lt;/a&gt;
<a id='L10146' name='L10146'></a>&lt;a id='L10132' name='L10132'&gt;&lt;/a&gt;% Use @afourpaper to print on European A4 paper.
<a id='L10147' name='L10147'></a>&lt;a id='L10133' name='L10133'&gt;&lt;/a&gt;\def\afourpaper{{\globaldefs = 1
<a id='L10148' name='L10148'></a>&lt;a id='L10134' name='L10134'&gt;&lt;/a&gt;  \parskip = 3pt plus 2pt minus 1pt
<a id='L10149' name='L10149'></a>&lt;a id='L10135' name='L10135'&gt;&lt;/a&gt;  \textleading = 13.2pt
<a id='L10150' name='L10150'></a>&lt;a id='L10136' name='L10136'&gt;&lt;/a&gt;  %
<a id='L10151' name='L10151'></a>&lt;a id='L10137' name='L10137'&gt;&lt;/a&gt;  % Double-side printing via postscript on Laserjet 4050
<a id='L10152' name='L10152'></a>&lt;a id='L10138' name='L10138'&gt;&lt;/a&gt;  % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm.
<a id='L10153' name='L10153'></a>&lt;a id='L10139' name='L10139'&gt;&lt;/a&gt;  % To change the settings for a different printer or situation, adjust
<a id='L10154' name='L10154'></a>&lt;a id='L10140' name='L10140'&gt;&lt;/a&gt;  % \normaloffset until the front-side and back-side texts align.  Then
<a id='L10155' name='L10155'></a>&lt;a id='L10141' name='L10141'&gt;&lt;/a&gt;  % do the same for \bindingoffset.  You can set these for testing in
<a id='L10156' name='L10156'></a>&lt;a id='L10142' name='L10142'&gt;&lt;/a&gt;  % your texinfo source file like this:
<a id='L10157' name='L10157'></a>&lt;a id='L10143' name='L10143'&gt;&lt;/a&gt;  % @tex
<a id='L10158' name='L10158'></a>&lt;a id='L10144' name='L10144'&gt;&lt;/a&gt;  % \global\normaloffset = -6mm
<a id='L10159' name='L10159'></a>&lt;a id='L10145' name='L10145'&gt;&lt;/a&gt;  % \global\bindingoffset = 10mm
<a id='L10160' name='L10160'></a>&lt;a id='L10146' name='L10146'&gt;&lt;/a&gt;  % @end tex
<a id='L10161' name='L10161'></a>&lt;a id='L10147' name='L10147'&gt;&lt;/a&gt;  \internalpagesizes{673.2pt}{160mm}% that's 51 lines
<a id='L10162' name='L10162'></a>&lt;a id='L10148' name='L10148'&gt;&lt;/a&gt;                    {\voffset}{\hoffset}%
<a id='L10163' name='L10163'></a>&lt;a id='L10149' name='L10149'&gt;&lt;/a&gt;                    {\bindingoffset}{44pt}%
<a id='L10164' name='L10164'></a>&lt;a id='L10150' name='L10150'&gt;&lt;/a&gt;                    {297mm}{210mm}%
<a id='L10165' name='L10165'></a>&lt;a id='L10151' name='L10151'&gt;&lt;/a&gt;  %
<a id='L10166' name='L10166'></a>&lt;a id='L10152' name='L10152'&gt;&lt;/a&gt;  \tolerance = 700
<a id='L10167' name='L10167'></a>&lt;a id='L10153' name='L10153'&gt;&lt;/a&gt;  \hfuzz = 1pt
<a id='L10168' name='L10168'></a>&lt;a id='L10154' name='L10154'&gt;&lt;/a&gt;  \contentsrightmargin = 0pt
<a id='L10169' name='L10169'></a>&lt;a id='L10155' name='L10155'&gt;&lt;/a&gt;  \defbodyindent = 5mm
<a id='L10170' name='L10170'></a>&lt;a id='L10156' name='L10156'&gt;&lt;/a&gt;}}
<a id='L10171' name='L10171'></a>&lt;a id='L10157' name='L10157'&gt;&lt;/a&gt;
<a id='L10172' name='L10172'></a>&lt;a id='L10158' name='L10158'&gt;&lt;/a&gt;% Use @afivepaper to print on European A5 paper.
<a id='L10173' name='L10173'></a>&lt;a id='L10159' name='L10159'&gt;&lt;/a&gt;% From romildo@urano.iceb.ufop.br, 2 July 2000.
<a id='L10174' name='L10174'></a>&lt;a id='L10160' name='L10160'&gt;&lt;/a&gt;% He also recommends making @example and @lisp be small.
<a id='L10175' name='L10175'></a>&lt;a id='L10161' name='L10161'&gt;&lt;/a&gt;\def\afivepaper{{\globaldefs = 1
<a id='L10176' name='L10176'></a>&lt;a id='L10162' name='L10162'&gt;&lt;/a&gt;  \parskip = 2pt plus 1pt minus 0.1pt
<a id='L10177' name='L10177'></a>&lt;a id='L10163' name='L10163'&gt;&lt;/a&gt;  \textleading = 12.5pt
<a id='L10178' name='L10178'></a>&lt;a id='L10164' name='L10164'&gt;&lt;/a&gt;  %
<a id='L10179' name='L10179'></a>&lt;a id='L10165' name='L10165'&gt;&lt;/a&gt;  \internalpagesizes{160mm}{120mm}%
<a id='L10180' name='L10180'></a>&lt;a id='L10166' name='L10166'&gt;&lt;/a&gt;                    {\voffset}{\hoffset}%
<a id='L10181' name='L10181'></a>&lt;a id='L10167' name='L10167'&gt;&lt;/a&gt;                    {\bindingoffset}{8pt}%
<a id='L10182' name='L10182'></a>&lt;a id='L10168' name='L10168'&gt;&lt;/a&gt;                    {210mm}{148mm}%
<a id='L10183' name='L10183'></a>&lt;a id='L10169' name='L10169'&gt;&lt;/a&gt;  %
<a id='L10184' name='L10184'></a>&lt;a id='L10170' name='L10170'&gt;&lt;/a&gt;  \lispnarrowing = 0.2in
<a id='L10185' name='L10185'></a>&lt;a id='L10171' name='L10171'&gt;&lt;/a&gt;  \tolerance = 800
<a id='L10186' name='L10186'></a>&lt;a id='L10172' name='L10172'&gt;&lt;/a&gt;  \hfuzz = 1.2pt
<a id='L10187' name='L10187'></a>&lt;a id='L10173' name='L10173'&gt;&lt;/a&gt;  \contentsrightmargin = 0pt
<a id='L10188' name='L10188'></a>&lt;a id='L10174' name='L10174'&gt;&lt;/a&gt;  \defbodyindent = 2mm
<a id='L10189' name='L10189'></a>&lt;a id='L10175' name='L10175'&gt;&lt;/a&gt;  \tableindent = 12mm
<a id='L10190' name='L10190'></a>&lt;a id='L10176' name='L10176'&gt;&lt;/a&gt;}}
<a id='L10191' name='L10191'></a>&lt;a id='L10177' name='L10177'&gt;&lt;/a&gt;
<a id='L10192' name='L10192'></a>&lt;a id='L10178' name='L10178'&gt;&lt;/a&gt;% A specific text layout, 24x15cm overall, intended for A4 paper.
<a id='L10193' name='L10193'></a>&lt;a id='L10179' name='L10179'&gt;&lt;/a&gt;\def\afourlatex{{\globaldefs = 1
<a id='L10194' name='L10194'></a>&lt;a id='L10180' name='L10180'&gt;&lt;/a&gt;  \afourpaper
<a id='L10195' name='L10195'></a>&lt;a id='L10181' name='L10181'&gt;&lt;/a&gt;  \internalpagesizes{237mm}{150mm}%
<a id='L10196' name='L10196'></a>&lt;a id='L10182' name='L10182'&gt;&lt;/a&gt;                    {\voffset}{4.6mm}%
<a id='L10197' name='L10197'></a>&lt;a id='L10183' name='L10183'&gt;&lt;/a&gt;                    {\bindingoffset}{7mm}%
<a id='L10198' name='L10198'></a>&lt;a id='L10184' name='L10184'&gt;&lt;/a&gt;                    {297mm}{210mm}%
<a id='L10199' name='L10199'></a>&lt;a id='L10185' name='L10185'&gt;&lt;/a&gt;  %
<a id='L10200' name='L10200'></a>&lt;a id='L10186' name='L10186'&gt;&lt;/a&gt;  % Must explicitly reset to 0 because we call \afourpaper.
<a id='L10201' name='L10201'></a>&lt;a id='L10187' name='L10187'&gt;&lt;/a&gt;  \globaldefs = 0
<a id='L10202' name='L10202'></a>&lt;a id='L10188' name='L10188'&gt;&lt;/a&gt;}}
<a id='L10203' name='L10203'></a>&lt;a id='L10189' name='L10189'&gt;&lt;/a&gt;
<a id='L10204' name='L10204'></a>&lt;a id='L10190' name='L10190'&gt;&lt;/a&gt;% Use @afourwide to print on A4 paper in landscape format.
<a id='L10205' name='L10205'></a>&lt;a id='L10191' name='L10191'&gt;&lt;/a&gt;\def\afourwide{{\globaldefs = 1
<a id='L10206' name='L10206'></a>&lt;a id='L10192' name='L10192'&gt;&lt;/a&gt;  \afourpaper
<a id='L10207' name='L10207'></a>&lt;a id='L10193' name='L10193'&gt;&lt;/a&gt;  \internalpagesizes{241mm}{165mm}%
<a id='L10208' name='L10208'></a>&lt;a id='L10194' name='L10194'&gt;&lt;/a&gt;                    {\voffset}{-2.95mm}%
<a id='L10209' name='L10209'></a>&lt;a id='L10195' name='L10195'&gt;&lt;/a&gt;                    {\bindingoffset}{7mm}%
<a id='L10210' name='L10210'></a>&lt;a id='L10196' name='L10196'&gt;&lt;/a&gt;                    {297mm}{210mm}%
<a id='L10211' name='L10211'></a>&lt;a id='L10197' name='L10197'&gt;&lt;/a&gt;  \globaldefs = 0
<a id='L10212' name='L10212'></a>&lt;a id='L10198' name='L10198'&gt;&lt;/a&gt;}}
<a id='L10213' name='L10213'></a>&lt;a id='L10199' name='L10199'&gt;&lt;/a&gt;
<a id='L10214' name='L10214'></a>&lt;a id='L10200' name='L10200'&gt;&lt;/a&gt;% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
<a id='L10215' name='L10215'></a>&lt;a id='L10201' name='L10201'&gt;&lt;/a&gt;% Perhaps we should allow setting the margins, \topskip, \parskip,
<a id='L10216' name='L10216'></a>&lt;a id='L10202' name='L10202'&gt;&lt;/a&gt;% and/or leading, also. Or perhaps we should compute them somehow.
<a id='L10217' name='L10217'></a>&lt;a id='L10203' name='L10203'&gt;&lt;/a&gt;%
<a id='L10218' name='L10218'></a>&lt;a id='L10204' name='L10204'&gt;&lt;/a&gt;\parseargdef\pagesizes{\pagesizesyyy #1,,\finish}
<a id='L10219' name='L10219'></a>&lt;a id='L10205' name='L10205'&gt;&lt;/a&gt;\def\pagesizesyyy#1,#2,#3\finish{{%
<a id='L10220' name='L10220'></a>&lt;a id='L10206' name='L10206'&gt;&lt;/a&gt;  \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 &amp;gt; 0pt \hsize=#2\relax \fi
<a id='L10221' name='L10221'></a>&lt;a id='L10207' name='L10207'&gt;&lt;/a&gt;  \globaldefs = 1
<a id='L10222' name='L10222'></a>&lt;a id='L10208' name='L10208'&gt;&lt;/a&gt;  %
<a id='L10223' name='L10223'></a>&lt;a id='L10209' name='L10209'&gt;&lt;/a&gt;  \parskip = 3pt plus 2pt minus 1pt
<a id='L10224' name='L10224'></a>&lt;a id='L10210' name='L10210'&gt;&lt;/a&gt;  \setleading{\textleading}%
<a id='L10225' name='L10225'></a>&lt;a id='L10211' name='L10211'&gt;&lt;/a&gt;  %
<a id='L10226' name='L10226'></a>&lt;a id='L10212' name='L10212'&gt;&lt;/a&gt;  \dimen0 = #1\relax
<a id='L10227' name='L10227'></a>&lt;a id='L10213' name='L10213'&gt;&lt;/a&gt;  \advance\dimen0 by \voffset
<a id='L10228' name='L10228'></a>&lt;a id='L10214' name='L10214'&gt;&lt;/a&gt;  %
<a id='L10229' name='L10229'></a>&lt;a id='L10215' name='L10215'&gt;&lt;/a&gt;  \dimen2 = \hsize
<a id='L10230' name='L10230'></a>&lt;a id='L10216' name='L10216'&gt;&lt;/a&gt;  \advance\dimen2 by \normaloffset
<a id='L10231' name='L10231'></a>&lt;a id='L10217' name='L10217'&gt;&lt;/a&gt;  %
<a id='L10232' name='L10232'></a>&lt;a id='L10218' name='L10218'&gt;&lt;/a&gt;  \internalpagesizes{#1}{\hsize}%
<a id='L10233' name='L10233'></a>&lt;a id='L10219' name='L10219'&gt;&lt;/a&gt;                    {\voffset}{\normaloffset}%
<a id='L10234' name='L10234'></a>&lt;a id='L10220' name='L10220'&gt;&lt;/a&gt;                    {\bindingoffset}{44pt}%
<a id='L10235' name='L10235'></a>&lt;a id='L10221' name='L10221'&gt;&lt;/a&gt;                    {\dimen0}{\dimen2}%
<a id='L10236' name='L10236'></a>&lt;a id='L10222' name='L10222'&gt;&lt;/a&gt;}}
<a id='L10237' name='L10237'></a>&lt;a id='L10223' name='L10223'&gt;&lt;/a&gt;
<a id='L10238' name='L10238'></a>&lt;a id='L10224' name='L10224'&gt;&lt;/a&gt;% Set default to letter.
<a id='L10239' name='L10239'></a>&lt;a id='L10225' name='L10225'&gt;&lt;/a&gt;%
<a id='L10240' name='L10240'></a>&lt;a id='L10226' name='L10226'&gt;&lt;/a&gt;\letterpaper
<a id='L10241' name='L10241'></a>&lt;a id='L10227' name='L10227'&gt;&lt;/a&gt;
<a id='L10242' name='L10242'></a>&lt;a id='L10228' name='L10228'&gt;&lt;/a&gt;
<a id='L10243' name='L10243'></a>&lt;a id='L10229' name='L10229'&gt;&lt;/a&gt;\message{and turning on texinfo input format.}
<a id='L10244' name='L10244'></a>&lt;a id='L10230' name='L10230'&gt;&lt;/a&gt;
<a id='L10245' name='L10245'></a>&lt;a id='L10231' name='L10231'&gt;&lt;/a&gt;\def^^L{\par} % remove \outer, so ^L can appear in an @comment
<a id='L10246' name='L10246'></a>&lt;a id='L10232' name='L10232'&gt;&lt;/a&gt;
<a id='L10247' name='L10247'></a>&lt;a id='L10233' name='L10233'&gt;&lt;/a&gt;% DEL is a comment character, in case @c does not suffice.
<a id='L10248' name='L10248'></a>&lt;a id='L10234' name='L10234'&gt;&lt;/a&gt;\catcode`\^^? = 14
<a id='L10249' name='L10249'></a>&lt;a id='L10235' name='L10235'&gt;&lt;/a&gt;
<a id='L10250' name='L10250'></a>&lt;a id='L10236' name='L10236'&gt;&lt;/a&gt;% Define macros to output various characters with catcode for normal text.
<a id='L10251' name='L10251'></a>&lt;a id='L10237' name='L10237'&gt;&lt;/a&gt;\catcode`\"=\other \def\normaldoublequote{"}
<a id='L10252' name='L10252'></a>&lt;a id='L10238' name='L10238'&gt;&lt;/a&gt;\catcode`\$=\other \def\normaldollar{$}%$ font-lock fix
<a id='L10253' name='L10253'></a>&lt;a id='L10239' name='L10239'&gt;&lt;/a&gt;\catcode`\+=\other \def\normalplus{+}
<a id='L10254' name='L10254'></a>&lt;a id='L10240' name='L10240'&gt;&lt;/a&gt;\catcode`\&amp;lt;=\other \def\normalless{&amp;lt;}
<a id='L10255' name='L10255'></a>&lt;a id='L10241' name='L10241'&gt;&lt;/a&gt;\catcode`\&amp;gt;=\other \def\normalgreater{&amp;gt;}
<a id='L10256' name='L10256'></a>&lt;a id='L10242' name='L10242'&gt;&lt;/a&gt;\catcode`\^=\other \def\normalcaret{^}
<a id='L10257' name='L10257'></a>&lt;a id='L10243' name='L10243'&gt;&lt;/a&gt;\catcode`\_=\other \def\normalunderscore{_}
<a id='L10258' name='L10258'></a>&lt;a id='L10244' name='L10244'&gt;&lt;/a&gt;\catcode`\|=\other \def\normalverticalbar{|}
<a id='L10259' name='L10259'></a>&lt;a id='L10245' name='L10245'&gt;&lt;/a&gt;\catcode`\~=\other \def\normaltilde{~}
<a id='L10260' name='L10260'></a>&lt;a id='L10246' name='L10246'&gt;&lt;/a&gt;
<a id='L10261' name='L10261'></a>&lt;a id='L10247' name='L10247'&gt;&lt;/a&gt;% This macro is used to make a character print one way in \tt
<a id='L10262' name='L10262'></a>&lt;a id='L10248' name='L10248'&gt;&lt;/a&gt;% (where it can probably be output as-is), and another way in other fonts,
<a id='L10263' name='L10263'></a>&lt;a id='L10249' name='L10249'&gt;&lt;/a&gt;% where something hairier probably needs to be done.
<a id='L10264' name='L10264'></a>&lt;a id='L10250' name='L10250'&gt;&lt;/a&gt;%
<a id='L10265' name='L10265'></a>&lt;a id='L10251' name='L10251'&gt;&lt;/a&gt;% #1 is what to print if we are indeed using \tt; #2 is what to print
<a id='L10266' name='L10266'></a>&lt;a id='L10252' name='L10252'&gt;&lt;/a&gt;% otherwise.  Since all the Computer Modern typewriter fonts have zero
<a id='L10267' name='L10267'></a>&lt;a id='L10253' name='L10253'&gt;&lt;/a&gt;% interword stretch (and shrink), and it is reasonable to expect all
<a id='L10268' name='L10268'></a>&lt;a id='L10254' name='L10254'&gt;&lt;/a&gt;% typewriter fonts to have this, we can check that font parameter.
<a id='L10269' name='L10269'></a>&lt;a id='L10255' name='L10255'&gt;&lt;/a&gt;%
<a id='L10270' name='L10270'></a>&lt;a id='L10256' name='L10256'&gt;&lt;/a&gt;\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi}
<a id='L10271' name='L10271'></a>&lt;a id='L10257' name='L10257'&gt;&lt;/a&gt;
<a id='L10272' name='L10272'></a>&lt;a id='L10258' name='L10258'&gt;&lt;/a&gt;% Same as above, but check for italic font.  Actually this also catches
<a id='L10273' name='L10273'></a>&lt;a id='L10259' name='L10259'&gt;&lt;/a&gt;% non-italic slanted fonts since it is impossible to distinguish them from
<a id='L10274' name='L10274'></a>&lt;a id='L10260' name='L10260'&gt;&lt;/a&gt;% italic fonts.  But since this is only used by $ and it uses \sl anyway
<a id='L10275' name='L10275'></a>&lt;a id='L10261' name='L10261'&gt;&lt;/a&gt;% this is not a problem.
<a id='L10276' name='L10276'></a>&lt;a id='L10262' name='L10262'&gt;&lt;/a&gt;\def\ifusingit#1#2{\ifdim \fontdimen1\font&amp;gt;0pt #1\else #2\fi}
<a id='L10277' name='L10277'></a>&lt;a id='L10263' name='L10263'&gt;&lt;/a&gt;
<a id='L10278' name='L10278'></a>&lt;a id='L10264' name='L10264'&gt;&lt;/a&gt;% Turn off all special characters except @
<a id='L10279' name='L10279'></a>&lt;a id='L10265' name='L10265'&gt;&lt;/a&gt;% (and those which the user can use as if they were ordinary).
<a id='L10280' name='L10280'></a>&lt;a id='L10266' name='L10266'&gt;&lt;/a&gt;% Most of these we simply print from the \tt font, but for some, we can
<a id='L10281' name='L10281'></a>&lt;a id='L10267' name='L10267'&gt;&lt;/a&gt;% use math or other variants that look better in normal text.
<a id='L10282' name='L10282'></a>&lt;a id='L10268' name='L10268'&gt;&lt;/a&gt;
<a id='L10283' name='L10283'></a>&lt;a id='L10269' name='L10269'&gt;&lt;/a&gt;\catcode`\"=\active
<a id='L10284' name='L10284'></a>&lt;a id='L10270' name='L10270'&gt;&lt;/a&gt;\def\activedoublequote{{\tt\char34}}
<a id='L10285' name='L10285'></a>&lt;a id='L10271' name='L10271'&gt;&lt;/a&gt;\let"=\activedoublequote
<a id='L10286' name='L10286'></a>&lt;a id='L10272' name='L10272'&gt;&lt;/a&gt;\catcode`\~=\active
<a id='L10287' name='L10287'></a>&lt;a id='L10273' name='L10273'&gt;&lt;/a&gt;\def~{{\tt\char126}}
<a id='L10288' name='L10288'></a>&lt;a id='L10274' name='L10274'&gt;&lt;/a&gt;\chardef\hat=`\^
<a id='L10289' name='L10289'></a>&lt;a id='L10275' name='L10275'&gt;&lt;/a&gt;\catcode`\^=\active
<a id='L10290' name='L10290'></a>&lt;a id='L10276' name='L10276'&gt;&lt;/a&gt;\def^{{\tt \hat}}
<a id='L10291' name='L10291'></a>&lt;a id='L10277' name='L10277'&gt;&lt;/a&gt;
<a id='L10292' name='L10292'></a>&lt;a id='L10278' name='L10278'&gt;&lt;/a&gt;\catcode`\_=\active
<a id='L10293' name='L10293'></a>&lt;a id='L10279' name='L10279'&gt;&lt;/a&gt;\def_{\ifusingtt\normalunderscore\_}
<a id='L10294' name='L10294'></a>&lt;a id='L10280' name='L10280'&gt;&lt;/a&gt;\let\realunder=_
<a id='L10295' name='L10295'></a>&lt;a id='L10281' name='L10281'&gt;&lt;/a&gt;% Subroutine for the previous macro.
<a id='L10296' name='L10296'></a>&lt;a id='L10282' name='L10282'&gt;&lt;/a&gt;\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
<a id='L10297' name='L10297'></a>&lt;a id='L10283' name='L10283'&gt;&lt;/a&gt;
<a id='L10298' name='L10298'></a>&lt;a id='L10284' name='L10284'&gt;&lt;/a&gt;\catcode`\|=\active
<a id='L10299' name='L10299'></a>&lt;a id='L10285' name='L10285'&gt;&lt;/a&gt;\def|{{\tt\char124}}
<a id='L10300' name='L10300'></a>&lt;a id='L10286' name='L10286'&gt;&lt;/a&gt;\chardef \less=`\&amp;lt;
<a id='L10301' name='L10301'></a>&lt;a id='L10287' name='L10287'&gt;&lt;/a&gt;\catcode`\&amp;lt;=\active
<a id='L10302' name='L10302'></a>&lt;a id='L10288' name='L10288'&gt;&lt;/a&gt;\def&amp;lt;{{\tt \less}}
<a id='L10303' name='L10303'></a>&lt;a id='L10289' name='L10289'&gt;&lt;/a&gt;\chardef \gtr=`\&amp;gt;
<a id='L10304' name='L10304'></a>&lt;a id='L10290' name='L10290'&gt;&lt;/a&gt;\catcode`\&amp;gt;=\active
<a id='L10305' name='L10305'></a>&lt;a id='L10291' name='L10291'&gt;&lt;/a&gt;\def&amp;gt;{{\tt \gtr}}
<a id='L10306' name='L10306'></a>&lt;a id='L10292' name='L10292'&gt;&lt;/a&gt;\catcode`\+=\active
<a id='L10307' name='L10307'></a>&lt;a id='L10293' name='L10293'&gt;&lt;/a&gt;\def+{{\tt \char 43}}
<a id='L10308' name='L10308'></a>&lt;a id='L10294' name='L10294'&gt;&lt;/a&gt;\catcode`\$=\active
<a id='L10309' name='L10309'></a>&lt;a id='L10295' name='L10295'&gt;&lt;/a&gt;\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
<a id='L10310' name='L10310'></a>&lt;a id='L10296' name='L10296'&gt;&lt;/a&gt;
<a id='L10311' name='L10311'></a>&lt;a id='L10297' name='L10297'&gt;&lt;/a&gt;% If a .fmt file is being used, characters that might appear in a file
<a id='L10312' name='L10312'></a>&lt;a id='L10298' name='L10298'&gt;&lt;/a&gt;% name cannot be active until we have parsed the command line.
<a id='L10313' name='L10313'></a>&lt;a id='L10299' name='L10299'&gt;&lt;/a&gt;% So turn them off again, and have \everyjob (or @setfilename) turn them on.
<a id='L10314' name='L10314'></a>&lt;a id='L10300' name='L10300'&gt;&lt;/a&gt;% \otherifyactive is called near the end of this file.
<a id='L10315' name='L10315'></a>&lt;a id='L10301' name='L10301'&gt;&lt;/a&gt;\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
<a id='L10316' name='L10316'></a>&lt;a id='L10302' name='L10302'&gt;&lt;/a&gt;
<a id='L10317' name='L10317'></a>&lt;a id='L10303' name='L10303'&gt;&lt;/a&gt;% Used sometimes to turn off (effectively) the active characters even after
<a id='L10318' name='L10318'></a>&lt;a id='L10304' name='L10304'&gt;&lt;/a&gt;% parsing them.
<a id='L10319' name='L10319'></a>&lt;a id='L10305' name='L10305'&gt;&lt;/a&gt;\def\turnoffactive{%
<a id='L10320' name='L10320'></a>&lt;a id='L10306' name='L10306'&gt;&lt;/a&gt;  \normalturnoffactive
<a id='L10321' name='L10321'></a>&lt;a id='L10307' name='L10307'&gt;&lt;/a&gt;  \otherbackslash
<a id='L10322' name='L10322'></a>&lt;a id='L10308' name='L10308'&gt;&lt;/a&gt;}
<a id='L10323' name='L10323'></a>&lt;a id='L10309' name='L10309'&gt;&lt;/a&gt;
<a id='L10324' name='L10324'></a>&lt;a id='L10310' name='L10310'&gt;&lt;/a&gt;\catcode`\@=0
<a id='L10325' name='L10325'></a>&lt;a id='L10311' name='L10311'&gt;&lt;/a&gt;
<a id='L10326' name='L10326'></a>&lt;a id='L10312' name='L10312'&gt;&lt;/a&gt;% \backslashcurfont outputs one backslash character in current font,
<a id='L10327' name='L10327'></a>&lt;a id='L10313' name='L10313'&gt;&lt;/a&gt;% as in \char`\\.
<a id='L10328' name='L10328'></a>&lt;a id='L10314' name='L10314'&gt;&lt;/a&gt;\global\chardef\backslashcurfont=`\\
<a id='L10329' name='L10329'></a>&lt;a id='L10315' name='L10315'&gt;&lt;/a&gt;\global\let\rawbackslashxx=\backslashcurfont  % let existing .??s files work
<a id='L10330' name='L10330'></a>&lt;a id='L10316' name='L10316'&gt;&lt;/a&gt;
<a id='L10331' name='L10331'></a>&lt;a id='L10317' name='L10317'&gt;&lt;/a&gt;% \realbackslash is an actual character `\' with catcode other, and
<a id='L10332' name='L10332'></a>&lt;a id='L10318' name='L10318'&gt;&lt;/a&gt;% \doublebackslash is two of them (for the pdf outlines).
<a id='L10333' name='L10333'></a>&lt;a id='L10319' name='L10319'&gt;&lt;/a&gt;{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}}
<a id='L10334' name='L10334'></a>&lt;a id='L10320' name='L10320'&gt;&lt;/a&gt;
<a id='L10335' name='L10335'></a>&lt;a id='L10321' name='L10321'&gt;&lt;/a&gt;% In texinfo, backslash is an active character; it prints the backslash
<a id='L10336' name='L10336'></a>&lt;a id='L10322' name='L10322'&gt;&lt;/a&gt;% in fixed width font.
<a id='L10337' name='L10337'></a>&lt;a id='L10323' name='L10323'&gt;&lt;/a&gt;\catcode`\\=\active  % @ for escape char from now on.
<a id='L10338' name='L10338'></a>&lt;a id='L10324' name='L10324'&gt;&lt;/a&gt;
<a id='L10339' name='L10339'></a>&lt;a id='L10325' name='L10325'&gt;&lt;/a&gt;% The story here is that in math mode, the \char of \backslashcurfont
<a id='L10340' name='L10340'></a>&lt;a id='L10326' name='L10326'&gt;&lt;/a&gt;% ends up printing the roman \ from the math symbol font (because \char
<a id='L10341' name='L10341'></a>&lt;a id='L10327' name='L10327'&gt;&lt;/a&gt;% in math mode uses the \mathcode, and plain.tex sets
<a id='L10342' name='L10342'></a>&lt;a id='L10328' name='L10328'&gt;&lt;/a&gt;% \mathcode`\\="026E).  It seems better for @backslashchar{} to always
<a id='L10343' name='L10343'></a>&lt;a id='L10329' name='L10329'&gt;&lt;/a&gt;% print a typewriter backslash, hence we use an explicit \mathchar,
<a id='L10344' name='L10344'></a>&lt;a id='L10330' name='L10330'&gt;&lt;/a&gt;% which is the decimal equivalent of "715c (class 7, e.g., use \fam;
<a id='L10345' name='L10345'></a>&lt;a id='L10331' name='L10331'&gt;&lt;/a&gt;% ignored family value; char position "5C).  We can't use " for the
<a id='L10346' name='L10346'></a>&lt;a id='L10332' name='L10332'&gt;&lt;/a&gt;% usual hex value because it has already been made active.
<a id='L10347' name='L10347'></a>&lt;a id='L10333' name='L10333'&gt;&lt;/a&gt;@def@normalbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}}
<a id='L10348' name='L10348'></a>&lt;a id='L10334' name='L10334'&gt;&lt;/a&gt;@let@backslashchar = @normalbackslash % @backslashchar{} is for user documents.
<a id='L10349' name='L10349'></a>&lt;a id='L10335' name='L10335'&gt;&lt;/a&gt;
<a id='L10350' name='L10350'></a>&lt;a id='L10336' name='L10336'&gt;&lt;/a&gt;% On startup, @fixbackslash assigns:
<a id='L10351' name='L10351'></a>&lt;a id='L10337' name='L10337'&gt;&lt;/a&gt;%  @let \ = @normalbackslash
<a id='L10352' name='L10352'></a>&lt;a id='L10338' name='L10338'&gt;&lt;/a&gt;% \rawbackslash defines an active \ to do \backslashcurfont.
<a id='L10353' name='L10353'></a>&lt;a id='L10339' name='L10339'&gt;&lt;/a&gt;% \otherbackslash defines an active \ to be a literal `\' character with
<a id='L10354' name='L10354'></a>&lt;a id='L10340' name='L10340'&gt;&lt;/a&gt;% catcode other.  We switch back and forth between these.
<a id='L10355' name='L10355'></a>&lt;a id='L10341' name='L10341'&gt;&lt;/a&gt;@gdef@rawbackslash{@let\=@backslashcurfont}
<a id='L10356' name='L10356'></a>&lt;a id='L10342' name='L10342'&gt;&lt;/a&gt;@gdef@otherbackslash{@let\=@realbackslash}
<a id='L10357' name='L10357'></a>&lt;a id='L10343' name='L10343'&gt;&lt;/a&gt;
<a id='L10358' name='L10358'></a>&lt;a id='L10344' name='L10344'&gt;&lt;/a&gt;% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
<a id='L10359' name='L10359'></a>&lt;a id='L10345' name='L10345'&gt;&lt;/a&gt;% the literal character `\'.  Also revert - to its normal character, in
<a id='L10360' name='L10360'></a>&lt;a id='L10346' name='L10346'&gt;&lt;/a&gt;% case the active - from code has slipped in.
<a id='L10361' name='L10361'></a>&lt;a id='L10347' name='L10347'&gt;&lt;/a&gt;%
<a id='L10362' name='L10362'></a>&lt;a id='L10348' name='L10348'&gt;&lt;/a&gt;{@catcode`- = @active
<a id='L10363' name='L10363'></a>&lt;a id='L10349' name='L10349'&gt;&lt;/a&gt; @gdef@normalturnoffactive{%
<a id='L10364' name='L10364'></a>&lt;a id='L10350' name='L10350'&gt;&lt;/a&gt;   @let-=@normaldash
<a id='L10365' name='L10365'></a>&lt;a id='L10351' name='L10351'&gt;&lt;/a&gt;   @let"=@normaldoublequote
<a id='L10366' name='L10366'></a>&lt;a id='L10352' name='L10352'&gt;&lt;/a&gt;   @let$=@normaldollar %$ font-lock fix
<a id='L10367' name='L10367'></a>&lt;a id='L10353' name='L10353'&gt;&lt;/a&gt;   @let+=@normalplus
<a id='L10368' name='L10368'></a>&lt;a id='L10354' name='L10354'&gt;&lt;/a&gt;   @let&amp;lt;=@normalless
<a id='L10369' name='L10369'></a>&lt;a id='L10355' name='L10355'&gt;&lt;/a&gt;   @let&amp;gt;=@normalgreater
<a id='L10370' name='L10370'></a>&lt;a id='L10356' name='L10356'&gt;&lt;/a&gt;   @let\=@normalbackslash
<a id='L10371' name='L10371'></a>&lt;a id='L10357' name='L10357'&gt;&lt;/a&gt;   @let^=@normalcaret
<a id='L10372' name='L10372'></a>&lt;a id='L10358' name='L10358'&gt;&lt;/a&gt;   @let_=@normalunderscore
<a id='L10373' name='L10373'></a>&lt;a id='L10359' name='L10359'&gt;&lt;/a&gt;   @let|=@normalverticalbar
<a id='L10374' name='L10374'></a>&lt;a id='L10360' name='L10360'&gt;&lt;/a&gt;   @let~=@normaltilde
<a id='L10375' name='L10375'></a>&lt;a id='L10361' name='L10361'&gt;&lt;/a&gt;   @markupsetuplqdefault
<a id='L10376' name='L10376'></a>&lt;a id='L10362' name='L10362'&gt;&lt;/a&gt;   @markupsetuprqdefault
<a id='L10377' name='L10377'></a>&lt;a id='L10363' name='L10363'&gt;&lt;/a&gt;   @unsepspaces
<a id='L10378' name='L10378'></a>&lt;a id='L10364' name='L10364'&gt;&lt;/a&gt; }
<a id='L10379' name='L10379'></a>&lt;a id='L10365' name='L10365'&gt;&lt;/a&gt;}
<a id='L10380' name='L10380'></a>&lt;a id='L10366' name='L10366'&gt;&lt;/a&gt;
<a id='L10381' name='L10381'></a>&lt;a id='L10367' name='L10367'&gt;&lt;/a&gt;% Make _ and + \other characters, temporarily.
<a id='L10382' name='L10382'></a>&lt;a id='L10368' name='L10368'&gt;&lt;/a&gt;% This is canceled by @fixbackslash.
<a id='L10383' name='L10383'></a>&lt;a id='L10369' name='L10369'&gt;&lt;/a&gt;@otherifyactive
<a id='L10384' name='L10384'></a>&lt;a id='L10370' name='L10370'&gt;&lt;/a&gt;
<a id='L10385' name='L10385'></a>&lt;a id='L10371' name='L10371'&gt;&lt;/a&gt;% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
<a id='L10386' name='L10386'></a>&lt;a id='L10372' name='L10372'&gt;&lt;/a&gt;% That is what \eatinput is for; after that, the `\' should revert to printing
<a id='L10387' name='L10387'></a>&lt;a id='L10373' name='L10373'&gt;&lt;/a&gt;% a backslash.
<a id='L10388' name='L10388'></a>&lt;a id='L10374' name='L10374'&gt;&lt;/a&gt;%
<a id='L10389' name='L10389'></a>&lt;a id='L10375' name='L10375'&gt;&lt;/a&gt;@gdef@eatinput input texinfo{@fixbackslash}
<a id='L10390' name='L10390'></a>&lt;a id='L10376' name='L10376'&gt;&lt;/a&gt;@global@let\ = @eatinput
<a id='L10391' name='L10391'></a>&lt;a id='L10377' name='L10377'&gt;&lt;/a&gt;
<a id='L10392' name='L10392'></a>&lt;a id='L10378' name='L10378'&gt;&lt;/a&gt;% On the other hand, perhaps the file did not have a `\input texinfo'. Then
<a id='L10393' name='L10393'></a>&lt;a id='L10379' name='L10379'&gt;&lt;/a&gt;% the first `\' in the file would cause an error. This macro tries to fix
<a id='L10394' name='L10394'></a>&lt;a id='L10380' name='L10380'&gt;&lt;/a&gt;% that, assuming it is called before the first `\' could plausibly occur.
<a id='L10395' name='L10395'></a>&lt;a id='L10381' name='L10381'&gt;&lt;/a&gt;% Also turn back on active characters that might appear in the input
<a id='L10396' name='L10396'></a>&lt;a id='L10382' name='L10382'&gt;&lt;/a&gt;% file name, in case not using a pre-dumped format.
<a id='L10397' name='L10397'></a>&lt;a id='L10383' name='L10383'&gt;&lt;/a&gt;%
<a id='L10398' name='L10398'></a>&lt;a id='L10384' name='L10384'&gt;&lt;/a&gt;@gdef@fixbackslash{%
<a id='L10399' name='L10399'></a>&lt;a id='L10385' name='L10385'&gt;&lt;/a&gt;  @ifx\@eatinput @let\ = @normalbackslash @fi
<a id='L10400' name='L10400'></a>&lt;a id='L10386' name='L10386'&gt;&lt;/a&gt;  @catcode`+=@active
<a id='L10401' name='L10401'></a>&lt;a id='L10387' name='L10387'&gt;&lt;/a&gt;  @catcode`@_=@active
<a id='L10402' name='L10402'></a>&lt;a id='L10388' name='L10388'&gt;&lt;/a&gt;}
<a id='L10403' name='L10403'></a>&lt;a id='L10389' name='L10389'&gt;&lt;/a&gt;
<a id='L10404' name='L10404'></a>&lt;a id='L10390' name='L10390'&gt;&lt;/a&gt;% Say @foo, not \foo, in error messages.
<a id='L10405' name='L10405'></a>&lt;a id='L10391' name='L10391'&gt;&lt;/a&gt;@escapechar = `@@
<a id='L10406' name='L10406'></a>&lt;a id='L10392' name='L10392'&gt;&lt;/a&gt;
<a id='L10407' name='L10407'></a>&lt;a id='L10393' name='L10393'&gt;&lt;/a&gt;% These (along with &amp;amp; and #) are made active for url-breaking, so need
<a id='L10408' name='L10408'></a>&lt;a id='L10394' name='L10394'&gt;&lt;/a&gt;% active definitions as the normal characters.
<a id='L10409' name='L10409'></a>&lt;a id='L10395' name='L10395'&gt;&lt;/a&gt;@def@normaldot{.}
<a id='L10410' name='L10410'></a>&lt;a id='L10396' name='L10396'&gt;&lt;/a&gt;@def@normalquest{?}
<a id='L10411' name='L10411'></a>&lt;a id='L10397' name='L10397'&gt;&lt;/a&gt;@def@normalslash{/}
<a id='L10412' name='L10412'></a>&lt;a id='L10398' name='L10398'&gt;&lt;/a&gt;
<a id='L10413' name='L10413'></a>&lt;a id='L10399' name='L10399'&gt;&lt;/a&gt;% These look ok in all fonts, so just make them not special.
<a id='L10414' name='L10414'></a>&lt;a id='L10400' name='L10400'&gt;&lt;/a&gt;% @hashchar{} gets its own user-level command, because of #line.
<a id='L10415' name='L10415'></a>&lt;a id='L10401' name='L10401'&gt;&lt;/a&gt;@catcode`@&amp;amp; = @other @def@normalamp{&amp;amp;}
<a id='L10416' name='L10416'></a>&lt;a id='L10402' name='L10402'&gt;&lt;/a&gt;@catcode`@# = @other @def@normalhash{#}
<a id='L10417' name='L10417'></a>&lt;a id='L10403' name='L10403'&gt;&lt;/a&gt;@catcode`@% = @other @def@normalpercent{%}
<a id='L10418' name='L10418'></a>&lt;a id='L10404' name='L10404'&gt;&lt;/a&gt;
<a id='L10419' name='L10419'></a>&lt;a id='L10405' name='L10405'&gt;&lt;/a&gt;@let @hashchar = @normalhash
<a id='L10420' name='L10420'></a>&lt;a id='L10406' name='L10406'&gt;&lt;/a&gt;
<a id='L10421' name='L10421'></a>&lt;a id='L10407' name='L10407'&gt;&lt;/a&gt;@c Finally, make ` and ' active, so that txicodequoteundirected and
<a id='L10422' name='L10422'></a>&lt;a id='L10408' name='L10408'&gt;&lt;/a&gt;@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}.  If we
<a id='L10423' name='L10423'></a>&lt;a id='L10409' name='L10409'&gt;&lt;/a&gt;@c don't make ` and ' active, @code will not get them as active chars.
<a id='L10424' name='L10424'></a>&lt;a id='L10410' name='L10410'&gt;&lt;/a&gt;@c Do this last of all since we use ` in the previous @catcode assignments.
<a id='L10425' name='L10425'></a>&lt;a id='L10411' name='L10411'&gt;&lt;/a&gt;@catcode`@'=@active
<a id='L10426' name='L10426'></a>&lt;a id='L10412' name='L10412'&gt;&lt;/a&gt;@catcode`@`=@active
<a id='L10427' name='L10427'></a>&lt;a id='L10413' name='L10413'&gt;&lt;/a&gt;@markupsetuplqdefault
<a id='L10428' name='L10428'></a>&lt;a id='L10414' name='L10414'&gt;&lt;/a&gt;@markupsetuprqdefault
<a id='L10429' name='L10429'></a>&lt;a id='L10415' name='L10415'&gt;&lt;/a&gt;
<a id='L10430' name='L10430'></a>&lt;a id='L10416' name='L10416'&gt;&lt;/a&gt;@c Local variables:
<a id='L10431' name='L10431'></a>&lt;a id='L10417' name='L10417'&gt;&lt;/a&gt;@c eval: (add-hook 'write-file-hooks 'time-stamp)
<a id='L10432' name='L10432'></a>&lt;a id='L10418' name='L10418'&gt;&lt;/a&gt;@c page-delimiter: "^\\\\message"
<a id='L10433' name='L10433'></a>&lt;a id='L10419' name='L10419'&gt;&lt;/a&gt;@c time-stamp-start: "def\\\\texinfoversion{"
<a id='L10434' name='L10434'></a>&lt;a id='L10420' name='L10420'&gt;&lt;/a&gt;@c time-stamp-format: "%:y-%02m-%02d.%02H"
<a id='L10435' name='L10435'></a>&lt;a id='L10421' name='L10421'&gt;&lt;/a&gt;@c time-stamp-end: "}"
<a id='L10436' name='L10436'></a>&lt;a id='L10422' name='L10422'&gt;&lt;/a&gt;@c End:
<a id='L10437' name='L10437'></a>&lt;a id='L10423' name='L10423'&gt;&lt;/a&gt;
<a id='L10438' name='L10438'></a>&lt;a id='L10424' name='L10424'&gt;&lt;/a&gt;@c vim:sw=2:
<a id='L10439' name='L10439'></a>&lt;a id='L10425' name='L10425'&gt;&lt;/a&gt;
<a id='L10440' name='L10440'></a>&lt;a id='L10426' name='L10426'&gt;&lt;/a&gt;@ignore
<a id='L10441' name='L10441'></a>&lt;a id='L10427' name='L10427'&gt;&lt;/a&gt;   arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115
<a id='L10442' name='L10442'></a>&lt;a id='L10428' name='L10428'&gt;&lt;/a&gt;@end ignore
<a id='L10443' name='L10443'></a>&lt;/pre&gt;
<a id='L10444' name='L10444'></a>&lt;hr /&gt;
<a id='L10445' name='L10445'></a>&lt;a id='BOTTOM' name='BOTTOM'&gt;&lt;/a&gt;
<a id='L10446' name='L10446'></a>&lt;em class='comment'&gt;/* [&amp;lt;][&amp;gt;][^][v]&lt;a href='#TOP'&gt;[top]&lt;/a&gt;[bottom]&lt;a href='../mains.html'&gt;[index]&lt;/a&gt;&lt;a href='../help.html'&gt;[help]&lt;/a&gt; */&lt;/em&gt;
<a id='L10447' name='L10447'></a>&lt;/body&gt;
<a id='L10448' name='L10448'></a>&lt;/html&gt;
</pre>
<hr />
<a id='BOTTOM' name='BOTTOM'></a>
<em class='comment'>/* [&lt;][&gt;][^][v]<a href='#TOP'>[top]</a>[bottom]<a href='../mains.html'>[index]</a><a href='../help.html'>[help]</a> */</em>
</body>
</html>

/* [<][>][^][v][top][bottom][index][help] */