OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [or1ksim/] [doc/] [texinfo.tex] - Diff between revs 19 and 82

Show entire file | Details | Blame | View Log

Rev 19 Rev 82
Line 1... Line 1...
% texinfo.tex -- TeX macros to handle Texinfo files.
% texinfo.tex -- TeX macros to handle Texinfo files.
%
%
% Load plain if necessary, i.e., if running under initex.
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
%
\def\texinfoversion{2007-12-02.17}
\def\texinfoversion{2009-08-14.15}
%
%
% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, 2007,
% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
% 2007 Free Software Foundation, Inc.
% 2007, 2008, 2009 Free Software Foundation, Inc.
%
%
% This texinfo.tex file is free software: you can redistribute it and/or
% This texinfo.tex file is free software: you can redistribute it and/or
% modify it under the terms of the GNU General Public License as
% modify it under the terms of the GNU General Public License as
% published by the Free Software Foundation, either version 3 of the
% published by the Free Software Foundation, either version 3 of the
% License, or (at your option) any later version.
% License, or (at your option) any later version.
Line 95... Line 95...
\let\ptexplus=+
\let\ptexplus=+
\let\ptexrbrace=\}
\let\ptexrbrace=\}
\let\ptexslash=\/
\let\ptexslash=\/
\let\ptexstar=\*
\let\ptexstar=\*
\let\ptext=\t
\let\ptext=\t
 
\let\ptextop=\top
 
{\catcode`\'=\active
 
\global\let\ptexquoteright'}% Math-mode def from plain.tex.
 
\let\ptexraggedright=\raggedright
 
 
% If this character appears in an error message or help string, it
% If this character appears in an error message or help string, it
% starts a new line in the output.
% starts a new line in the output.
\newlinechar = `^^J
\newlinechar = `^^J
 
 
Line 458... Line 462...
 
 
% First remove any @comment, then any @c comment.
% First remove any @comment, then any @c comment.
\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
 
 
% Each occurence of `\^^M' or `<space>\^^M' is replaced by a single space.
% Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space.
%
%
% \argremovec might leave us with trailing space, e.g.,
% \argremovec might leave us with trailing space, e.g.,
%    @end itemize  @c foo
%    @end itemize  @c foo
% This space token undergoes the same procedure and is eventually removed
% This space token undergoes the same procedure and is eventually removed
% by \finishparsearg.
% by \finishparsearg.
Line 483... Line 487...
 
 
% If a _delimited_ argument is enclosed in braces, they get stripped; so
% If a _delimited_ argument is enclosed in braces, they get stripped; so
% to get _exactly_ the rest of the line, we had to prevent such situation.
% to get _exactly_ the rest of the line, we had to prevent such situation.
% We prepended an \empty token at the very beginning and we expand it now,
% We prepended an \empty token at the very beginning and we expand it now,
% just before passing the control to \argtorun.
% just before passing the control to \argtorun.
% (Similarily, we have to think about #3 of \argcheckspacesY above: it is
% (Similarly, we have to think about #3 of \argcheckspacesY above: it is
% either the null string, or it ends with \^^M---thus there is no danger
% either the null string, or it ends with \^^M---thus there is no danger
% that a pair of braces would be stripped.
% that a pair of braces would be stripped.
%
%
% But first, we have to remove the trailing space token.
% But first, we have to remove the trailing space token.
%
%
Line 540... Line 544...
% defines \thisenv, so the current environment is known; @end checks
% defines \thisenv, so the current environment is known; @end checks
% whether the environment name matches.  The \checkenv macro can also be
% whether the environment name matches.  The \checkenv macro can also be
% used to check whether the current environment is the one expected.
% used to check whether the current environment is the one expected.
%
%
% Non-false conditionals (@iftex, @ifset) don't fit into this, so they
% Non-false conditionals (@iftex, @ifset) don't fit into this, so they
% are not treated as enviroments; they don't open a group.  (The
% are not treated as environments; they don't open a group.  (The
% implementation of @end takes care not to call \endgroup in this
% implementation of @end takes care not to call \endgroup in this
% special case.)
% special case.)
 
 
 
 
% At runtime, environments start with this:
% At run-time, environments start with this:
\def\startenvironment#1{\begingroup\def\thisenv{#1}}
\def\startenvironment#1{\begingroup\def\thisenv{#1}}
% initialize
% initialize
\let\thisenv\empty
\let\thisenv\empty
 
 
% ... but they get defined via ``\envdef\foo{...}'':
% ... but they get defined via ``\envdef\foo{...}'':
Line 563... Line 567...
  \else
  \else
    \badenverr
    \badenverr
  \fi
  \fi
}
}
 
 
% Evironment mismatch, #1 expected:
% Environment mismatch, #1 expected:
\def\badenverr{%
\def\badenverr{%
  \errhelp = \EMsimple
  \errhelp = \EMsimple
  \errmessage{This command can appear only \inenvironment\temp,
  \errmessage{This command can appear only \inenvironment\temp,
    not \inenvironment\thisenv}%
    not \inenvironment\thisenv}%
}
}
Line 647... Line 651...
% Dotless i and dotless j, used for accents.
% Dotless i and dotless j, used for accents.
\def\imacro{i}
\def\imacro{i}
\def\jmacro{j}
\def\jmacro{j}
\def\dotless#1{%
\def\dotless#1{%
  \def\temp{#1}%
  \def\temp{#1}%
  \ifx\temp\imacro \ptexi
  \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
  \else\ifx\temp\jmacro \j
  \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
  \else \errmessage{@dotless can be used only with i or j}%
  \else \errmessage{@dotless can be used only with i or j}%
  \fi\fi
  \fi\fi
}
}
 
 
% The \TeX{} logo, as in plain, but resetting the spacing so that a
% The \TeX{} logo, as in plain, but resetting the spacing so that a
Line 914... Line 918...
    \def\temp{\inleftmargin\lefttext}%
    \def\temp{\inleftmargin\lefttext}%
  \fi
  \fi
  \temp
  \temp
}
}
 
 
% @include file    insert text of that file as input.
% @include FILE -- \input text of FILE.
%
%
\def\include{\parseargusing\filenamecatcodes\includezzz}
\def\include{\parseargusing\filenamecatcodes\includezzz}
\def\includezzz#1{%
\def\includezzz#1{%
  \pushthisfilestack
  \pushthisfilestack
  \def\thisfile{#1}%
  \def\thisfile{#1}%
  {%
  {%
    \makevalueexpandable
    \makevalueexpandable  % we want to expand any @value in FILE.
    \def\temp{\input #1 }%
    \turnoffactive        % and allow special characters in the expansion
 
    \indexnofonts         % Allow `@@' and other weird things in file names.
 
    \edef\temp{\noexpand\input #1 }%
 
    %
 
    % This trickery is to read FILE outside of a group, in case it makes
 
    % definitions, etc.
    \expandafter
    \expandafter
  }\temp
  }\temp
  \popthisfilestack
  \popthisfilestack
}
}
\def\filenamecatcodes{%
\def\filenamecatcodes{%
Line 937... Line 946...
  \catcode`|=\other
  \catcode`|=\other
  \catcode`<=\other
  \catcode`<=\other
  \catcode`>=\other
  \catcode`>=\other
  \catcode`+=\other
  \catcode`+=\other
  \catcode`-=\other
  \catcode`-=\other
 
  \catcode`\`=\other
 
  \catcode`\'=\other
}
}
 
 
\def\pushthisfilestack{%
\def\pushthisfilestack{%
  \expandafter\pushthisfilestackX\popthisfilestack\StackTerm
  \expandafter\pushthisfilestackX\popthisfilestack\StackTerm
}
}
Line 1112... Line 1123...
\def\math{%
\def\math{%
  \tex
  \tex
  \mathunderscore
  \mathunderscore
  \let\\ = \mathbackslash
  \let\\ = \mathbackslash
  \mathactive
  \mathactive
 
  % make the texinfo accent commands work in math mode
 
  \let\"=\ddot
 
  \let\'=\acute
 
  \let\==\bar
 
  \let\^=\hat
 
  \let\`=\grave
 
  \let\u=\breve
 
  \let\v=\check
 
  \let\~=\tilde
 
  \let\dotaccent=\dot
  $\finishmath
  $\finishmath
}
}
\def\finishmath#1{#1$\endgroup}  % Close the group opened by \tex.
\def\finishmath#1{#1$\endgroup}  % Close the group opened by \tex.
 
 
% Some active characters (such as <) are spaced differently in math.
% Some active characters (such as <) are spaced differently in math.
Line 1125... Line 1146...
{
{
  \catcode`^ = \active
  \catcode`^ = \active
  \catcode`< = \active
  \catcode`< = \active
  \catcode`> = \active
  \catcode`> = \active
  \catcode`+ = \active
  \catcode`+ = \active
 
  \catcode`' = \active
  \gdef\mathactive{%
  \gdef\mathactive{%
    \let^ = \ptexhat
    \let^ = \ptexhat
    \let< = \ptexless
    \let< = \ptexless
    \let> = \ptexgtr
    \let> = \ptexgtr
    \let+ = \ptexplus
    \let+ = \ptexplus
 
    \let' = \ptexquoteright
  }
  }
}
}
 
 
% @bullet and @minus need the same treatment as @math, just above.
% Some math mode symbols.
\def\bullet{$\ptexbullet$}
\def\bullet{$\ptexbullet$}
\def\minus{$-$}
\def\geq{\ifmmode \ge\else $\ge$\fi}
 
\def\leq{\ifmmode \le\else $\le$\fi}
 
\def\minus{\ifmmode -\else $-$\fi}
 
 
% @dots{} outputs an ellipsis using the current font.
% @dots{} outputs an ellipsis using the current font.
% We do .5em per period so that it has the same spacing in the cm
% We do .5em per period so that it has the same spacing in the cm
% typewriter fonts as three actual period characters; on the other hand,
% typewriter fonts as three actual period characters; on the other hand,
% in other typewriter fonts three periods are wider than 1.5em.  So do
% in other typewriter fonts three periods are wider than 1.5em.  So do
Line 1305... Line 1330...
be supported due to the design of the PDF format; use regular TeX (DVI
be supported due to the design of the PDF format; use regular TeX (DVI
output) for that.)}
output) for that.)}
 
 
\ifpdf
\ifpdf
  %
  %
  % Color manipulation macros based on pdfcolor.tex.
  % Color manipulation macros based on pdfcolor.tex,
  \def\cmykDarkRed{0.28 1 1 0.35}
  % except using rgb instead of cmyk; the latter is said to render as a
  \def\cmykBlack{0 0 0 1}
  % very dark gray on-screen and a very dark halftone in print, instead
 
  % of actual black.
 
  \def\rgbDarkRed{0.50 0.09 0.12}
 
  \def\rgbBlack{0 0 0}
 
  %
 
  % k sets the color for filling (usual text, etc.);
 
  % K sets the color for stroking (thin rules, e.g., normal _'s).
 
  \def\pdfsetcolor#1{\pdfliteral{#1 rg  #1 RG}}
  %
  %
  \def\pdfsetcolor#1{\pdfliteral{#1 k}}
 
  % Set color, and create a mark which defines \thiscolor accordingly,
  % Set color, and create a mark which defines \thiscolor accordingly,
  % so that \makeheadline knows which color to restore.
  % so that \makeheadline knows which color to restore.
  \def\setcolor#1{%
  \def\setcolor#1{%
    \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}%
    \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}%
    \domark
    \domark
    \pdfsetcolor{#1}%
    \pdfsetcolor{#1}%
  }
  }
  %
  %
  \def\maincolor{\cmykBlack}
  \def\maincolor{\rgbBlack}
  \pdfsetcolor{\maincolor}
  \pdfsetcolor{\maincolor}
  \edef\thiscolor{\maincolor}
  \edef\thiscolor{\maincolor}
  \def\lastcolordefs{}
  \def\lastcolordefs{}
  %
  %
  \def\makefootline{%
  \def\makefootline{%
Line 1360... Line 1391...
      \openin 1 #1.png \ifeof 1
      \openin 1 #1.png \ifeof 1
        \openin 1 #1.jpg \ifeof 1
        \openin 1 #1.jpg \ifeof 1
          \openin 1 #1.jpeg \ifeof 1
          \openin 1 #1.jpeg \ifeof 1
            \openin 1 #1.JPG \ifeof 1
            \openin 1 #1.JPG \ifeof 1
              \openin 1 #1.pdf \ifeof 1
              \openin 1 #1.pdf \ifeof 1
 
                \openin 1 #1.PDF \ifeof 1
                \errhelp = \nopdfimagehelp
                \errhelp = \nopdfimagehelp
                \errmessage{Could not find image file #1 for pdf}%
                \errmessage{Could not find image file #1 for pdf}%
 
                \else \gdef\pdfimgext{PDF}%
 
                \fi
              \else \gdef\pdfimgext{pdf}%
              \else \gdef\pdfimgext{pdf}%
              \fi
              \fi
            \else \gdef\pdfimgext{JPG}%
            \else \gdef\pdfimgext{JPG}%
            \fi
            \fi
          \else \gdef\pdfimgext{jpeg}%
          \else \gdef\pdfimgext{jpeg}%
Line 1375... Line 1409...
      \else \gdef\pdfimgext{png}%
      \else \gdef\pdfimgext{png}%
      \fi
      \fi
      \closein 1
      \closein 1
    \endgroup
    \endgroup
    %
    %
    % without \immediate, pdftex seg faults when the same image is
    % without \immediate, ancient pdftex seg faults when the same image is
    % included twice.  (Version 3.14159-pre-1.0-unofficial-20010704.)
    % included twice.  (Version 3.14159-pre-1.0-unofficial-20010704.)
    \ifnum\pdftexversion < 14
    \ifnum\pdftexversion < 14
      \immediate\pdfimage
      \immediate\pdfimage
    \else
    \else
      \immediate\pdfximage
      \immediate\pdfximage
Line 1410... Line 1444...
  % used to mark target names; must be expandable.
  % used to mark target names; must be expandable.
  \def\pdfmkpgn#1{#1}
  \def\pdfmkpgn#1{#1}
  %
  %
  % by default, use a color that is dark enough to print on paper as
  % by default, use a color that is dark enough to print on paper as
  % nearly black, but still distinguishable for online viewing.
  % nearly black, but still distinguishable for online viewing.
  \def\urlcolor{\cmykDarkRed}
  \def\urlcolor{\rgbDarkRed}
  \def\linkcolor{\cmykDarkRed}
  \def\linkcolor{\rgbDarkRed}
  \def\endlink{\setcolor{\maincolor}\pdfendlink}
  \def\endlink{\setcolor{\maincolor}\pdfendlink}
  %
  %
  % Adding outlines to PDF; macros for calculating structure of outlines
  % Adding outlines to PDF; macros for calculating structure of outlines
  % come from Petr Olsak
  % come from Petr Olsak
  \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
  \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
Line 1545... Line 1579...
      %
      %
      \normalturnoffactive
      \normalturnoffactive
      \def\@{@}%
      \def\@{@}%
      \let\/=\empty
      \let\/=\empty
      \makevalueexpandable
      \makevalueexpandable
 
      % do we want to go so far as to use \indexnofonts instead of just
 
      % special-casing \var here?
 
      \def\var##1{##1}%
 
      %
      \leavevmode\setcolor{\urlcolor}%
      \leavevmode\setcolor{\urlcolor}%
      \startlink attr{/Border [0 0 0]}%
      \startlink attr{/Border [0 0 0]}%
        user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
        user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
    \endgroup}
    \endgroup}
  \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
  \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
Line 1575... Line 1613...
  \def\pdflink#1{%
  \def\pdflink#1{%
    \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
    \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
    \setcolor{\linkcolor}#1\endlink}
    \setcolor{\linkcolor}#1\endlink}
  \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
  \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
\else
\else
 
  % non-pdf mode
  \let\pdfmkdest = \gobble
  \let\pdfmkdest = \gobble
  \let\pdfurl = \gobble
  \let\pdfurl = \gobble
  \let\endlink = \relax
  \let\endlink = \relax
  \let\setcolor = \gobble
  \let\setcolor = \gobble
  \let\pdfsetcolor = \gobble
  \let\pdfsetcolor = \gobble
Line 1605... Line 1644...
\def\it{\fam=\itfam \setfontstyle{it}}
\def\it{\fam=\itfam \setfontstyle{it}}
\def\sl{\fam=\slfam \setfontstyle{sl}}
\def\sl{\fam=\slfam \setfontstyle{sl}}
\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
\def\tt{\fam=\ttfam \setfontstyle{tt}}
\def\tt{\fam=\ttfam \setfontstyle{tt}}
 
 
 
% Unfortunately, we have to override this for titles and the like, since
 
% in those cases "rm" is bold.  Sigh.
 
\def\rmisbold{\rm\def\curfontstyle{bf}}
 
 
% Texinfo sort of supports the sans serif font style, which plain TeX does not.
% Texinfo sort of supports the sans serif font style, which plain TeX does not.
% So we set up a \sf.
% So we set up a \sf.
\newfam\sffam
\newfam\sffam
\def\sf{\fam=\sffam \setfontstyle{sf}}
\def\sf{\fam=\sffam \setfontstyle{sf}}
\let\li = \sf % Sometimes we call it \li, not \sf.
\let\li = \sf % Sometimes we call it \li, not \sf.
Line 2002... Line 2045...
\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
\let\titlebf=\titlerm
\let\titlebf=\titlerm
\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
\font\titlei=cmmi12 scaled \magstep3
\font\titlei=cmmi12 scaled \magstep3
\font\titlesy=cmsy10 scaled \magstep4
\font\titlesy=cmsy10 scaled \magstep4
\def\authorrm{\secrm}
 
\def\authortt{\sectt}
 
\def\titleecsize{2074}
\def\titleecsize{2074}
 
 
% Chapter (and unnumbered) fonts (17.28pt).
% Chapter (and unnumbered) fonts (17.28pt).
\def\chapnominalsize{17pt}
\def\chapnominalsize{17pt}
\setfont\chaprm\rmbshape{12}{\magstep2}{OT1}
\setfont\chaprm\rmbshape{12}{\magstep2}{OT1}
Line 2135... Line 2176...
\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
\let\titlebf=\titlerm
\let\titlebf=\titlerm
\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
\font\titlei=cmmi12 scaled \magstep3
\font\titlei=cmmi12 scaled \magstep3
\font\titlesy=cmsy10 scaled \magstep4
\font\titlesy=cmsy10 scaled \magstep4
\def\authorrm{\secrm}
 
\def\authortt{\sectt}
 
\def\titleecsize{2074}
\def\titleecsize{2074}
 
 
% Chapter fonts (14.4pt).
% Chapter fonts (14.4pt).
\def\chapnominalsize{14pt}
\def\chapnominalsize{14pt}
\setfont\chaprm\rmbshape{12}{\magstep1}{OT1}
\setfont\chaprm\rmbshape{12}{\magstep1}{OT1}
Line 2268... Line 2307...
  \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
  \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
  \let\tenttsl=\titlettsl
  \let\tenttsl=\titlettsl
  \def\curfontsize{title}%
  \def\curfontsize{title}%
  \def\lsize{chap}\def\lllsize{subsec}%
  \def\lsize{chap}\def\lllsize{subsec}%
  \resetmathfonts \setleading{25pt}}
  \resetmathfonts \setleading{25pt}}
\def\titlefont#1{{\titlefonts\rm #1}}
\def\titlefont#1{{\titlefonts\rmisbold #1}}
\def\chapfonts{%
\def\chapfonts{%
  \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
  \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
  \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
  \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
  \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
  \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
  \let\tenttsl=\chapttsl
  \let\tenttsl=\chapttsl
Line 2319... Line 2358...
  \let\tenttsl=\smallerttsl
  \let\tenttsl=\smallerttsl
  \def\curfontsize{smaller}%
  \def\curfontsize{smaller}%
  \def\lsize{smaller}\def\lllsize{smaller}%
  \def\lsize{smaller}\def\lllsize{smaller}%
  \resetmathfonts \setleading{9.5pt}}
  \resetmathfonts \setleading{9.5pt}}
 
 
 
% Fonts for short table of contents.
 
\setfont\shortcontrm\rmshape{12}{1000}{OT1}
 
\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1}  % no cmb12
 
\setfont\shortcontsl\slshape{12}{1000}{OT1}
 
\setfont\shortconttt\ttshape{12}{1000}{OT1TT}
 
 
 
% Define these just so they can be easily changed for other fonts.
 
\def\angleleft{$\langle$}
 
\def\angleright{$\rangle$}
 
 
% Set the fonts to use with the @small... environments.
% Set the fonts to use with the @small... environments.
\let\smallexamplefonts = \smallfonts
\let\smallexamplefonts = \smallfonts
 
 
% About \smallexamplefonts.  If we use \smallfonts (9pt), @smallexample
% About \smallexamplefonts.  If we use \smallfonts (9pt), @smallexample
% can fit this many characters:
% can fit this many characters:
Line 2332... Line 2381...
% For me, subjectively, the few extra characters that fit aren't worth
% For me, subjectively, the few extra characters that fit aren't worth
% the additional smallness of 8pt.  So I'm making the default 9pt.
% the additional smallness of 8pt.  So I'm making the default 9pt.
%
%
% By the way, for comparison, here's what fits with @example (10pt):
% By the way, for comparison, here's what fits with @example (10pt):
%   8.5x11=71  smallbook=60  a4=75  a5=58
%   8.5x11=71  smallbook=60  a4=75  a5=58
%
 
% I wish the USA used A4 paper.
 
% --karl, 24jan03.
% --karl, 24jan03.
 
 
 
 
% Set up the default fonts, so we can use them for creating boxes.
% Set up the default fonts, so we can use them for creating boxes.
%
%
\definetextfontsizexi
\definetextfontsizexi
 
 
% Define these so they can be easily changed for other fonts.
 
\def\angleleft{$\langle$}
\message{markup,}
\def\angleright{$\rangle$}
 
 
% Check if we are currently using a typewriter font.  Since all the
 
% Computer Modern typewriter fonts have zero interword stretch (and
 
% shrink), and it is reasonable to expect all typewriter fonts to have
 
% this property, we can check that font parameter.
 
%
 
\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
 
 
 
% Markup style infrastructure.  \defmarkupstylesetup\INITMACRO will
 
% define and register \INITMACRO to be called on markup style changes.
 
% \INITMACRO can check \currentmarkupstyle for the innermost
 
% style and the set of \ifmarkupSTYLE switches for all styles
 
% currently in effect.
 
\newif\ifmarkupvar
 
\newif\ifmarkupsamp
 
\newif\ifmarkupkey
 
%\newif\ifmarkupfile % @file == @samp.
 
%\newif\ifmarkupoption % @option == @samp.
 
\newif\ifmarkupcode
 
\newif\ifmarkupkbd
 
%\newif\ifmarkupenv % @env == @code.
 
%\newif\ifmarkupcommand % @command == @code.
 
\newif\ifmarkuptex % @tex (and part of @math, for now).
 
\newif\ifmarkupexample
 
\newif\ifmarkupverb
 
\newif\ifmarkupverbatim
 
 
 
\let\currentmarkupstyle\empty
 
 
 
\def\setupmarkupstyle#1{%
 
  \csname markup#1true\endcsname
 
  \def\currentmarkupstyle{#1}%
 
  \markupstylesetup
 
}
 
 
 
\let\markupstylesetup\empty
 
 
 
\def\defmarkupstylesetup#1{%
 
  \expandafter\def\expandafter\markupstylesetup
 
    \expandafter{\markupstylesetup #1}%
 
  \def#1%
 
}
 
 
 
% Markup style setup for left and right quotes.
 
\defmarkupstylesetup\markupsetuplq{%
 
  \expandafter\let\expandafter \temp \csname markupsetuplq\currentmarkupstyle\endcsname
 
  \ifx\temp\relax \markupsetuplqdefault \else \temp \fi
 
}
 
 
 
\defmarkupstylesetup\markupsetuprq{%
 
  \expandafter\let\expandafter \temp \csname markupsetuprq\currentmarkupstyle\endcsname
 
  \ifx\temp\relax \markupsetuprqdefault \else \temp \fi
 
}
 
 
 
{
 
\catcode`\'=\active
 
\catcode`\`=\active
 
 
 
\gdef\markupsetuplqdefault{\let`\lq}
 
\gdef\markupsetuprqdefault{\let'\rq}
 
 
 
\gdef\markupsetcodequoteleft{\let`\codequoteleft}
 
\gdef\markupsetcodequoteright{\let'\codequoteright}
 
 
 
\gdef\markupsetnoligaturesquoteleft{\let`\noligaturesquoteleft}
 
}
 
 
 
\let\markupsetuplqcode \markupsetcodequoteleft
 
\let\markupsetuprqcode \markupsetcodequoteright
 
\let\markupsetuplqexample \markupsetcodequoteleft
 
\let\markupsetuprqexample \markupsetcodequoteright
 
\let\markupsetuplqverb \markupsetcodequoteleft
 
\let\markupsetuprqverb \markupsetcodequoteright
 
\let\markupsetuplqverbatim \markupsetcodequoteleft
 
\let\markupsetuprqverbatim \markupsetcodequoteright
 
 
 
\let\markupsetuplqsamp \markupsetnoligaturesquoteleft
 
\let\markupsetuplqkbd \markupsetnoligaturesquoteleft
 
 
 
% Allow an option to not replace quotes with a regular directed right
 
% quote/apostrophe (char 0x27), but instead use the undirected quote
 
% from cmtt (char 0x0d).  The undirected quote is ugly, so don't make it
 
% the default, but it works for pasting with more pdf viewers (at least
 
% evince), the lilypond developers report.  xpdf does work with the
 
% regular 0x27.
 
%
 
\def\codequoteright{%
 
  \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
 
    \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
 
      '%
 
    \else \char'15 \fi
 
  \else \char'15 \fi
 
}
 
%
 
% and a similar option for the left quote char vs. a grave accent.
 
% Modern fonts display ASCII 0x60 as a grave accent, so some people like
 
% the code environments to do likewise.
 
%
 
\def\codequoteleft{%
 
  \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax
 
    \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
 
      % [Knuth] pp. 380,381,391
 
      % \relax disables Spanish ligatures ?` and !` of \tt font.
 
      \relax`%
 
    \else \char'22 \fi
 
  \else \char'22 \fi
 
}
 
 
 
% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font.
 
\def\noligaturesquoteleft{\relax\lq}
 
 
% Count depth in font-changes, for error checks
% Count depth in font-changes, for error checks
\newcount\fontdepth \fontdepth=0
\newcount\fontdepth \fontdepth=0
 
 
% Fonts for short table of contents.
 
\setfont\shortcontrm\rmshape{12}{1000}{OT1}
 
\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1}  % no cmb12
 
\setfont\shortcontsl\slshape{12}{1000}{OT1}
 
\setfont\shortconttt\ttshape{12}{1000}{OT1TT}
 
 
 
%% Add scribe-like font environments, plus @l for inline lisp (usually sans
%% Add scribe-like font environments, plus @l for inline lisp (usually sans
%% serif) and @ii for TeX italic
%% serif) and @ii for TeX italic
 
 
% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
% unless the following character is such as not to need one.
% unless the following character is such as not to need one.
Line 2368... Line 2517...
 
 
% like \smartslanted except unconditionally uses \ttsl.
% like \smartslanted except unconditionally uses \ttsl.
% @var is set to this for defun arguments.
% @var is set to this for defun arguments.
\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx}
\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx}
 
 
% like \smartslanted except unconditionally use \sl.  We never want
% @cite is like \smartslanted except unconditionally use \sl.  We never want
% ttsl for book titles, do we?
% ttsl for book titles, do we?
\def\cite#1{{\sl #1}\futurelet\next\smartitalicx}
\def\cite#1{{\sl #1}\futurelet\next\smartitalicx}
 
 
\let\i=\smartitalic
\let\i=\smartitalic
\let\slanted=\smartslanted
\let\slanted=\smartslanted
\let\var=\smartslanted
\def\var#1{{\setupmarkupstyle{var}\smartslanted{#1}}}
\let\dfn=\smartslanted
\let\dfn=\smartslanted
\let\emph=\smartitalic
\let\emph=\smartitalic
 
 
% @b, explicit bold.
% Explicit font changes: @r, @sc, undocumented @ii.
 
\def\r#1{{\rm #1}}              % roman font
 
\def\sc#1{{\smallcaps#1}}       % smallcaps font
 
\def\ii#1{{\it #1}}             % italic font
 
 
 
% @b, explicit bold.  Also @strong.
\def\b#1{{\bf #1}}
\def\b#1{{\bf #1}}
\let\strong=\b
\let\strong=\b
 
 
% @sansserif, explicit sans.
% @sansserif, explicit sans.
\def\sansserif#1{{\sf #1}}
\def\sansserif#1{{\sf #1}}
Line 2410... Line 2564...
    \def\endofsentencespacefactor{3000}% for @. and friends
    \def\endofsentencespacefactor{3000}% for @. and friends
  }
  }
\catcode`@=\other
\catcode`@=\other
\def\endofsentencespacefactor{3000}% default
\def\endofsentencespacefactor{3000}% default
 
 
 
% @t, explicit typewriter.
\def\t#1{%
\def\t#1{%
  {\tt \rawbackslash \plainfrenchspacing #1}%
  {\tt \rawbackslash \plainfrenchspacing #1}%
  \null
  \null
}
}
\def\samp#1{`\tclose{#1}'\null}
 
\setfont\keyrm\rmshape{8}{1000}{OT1}
% @samp.
\font\keysy=cmsy9
\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}}
\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
 
  \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
% definition of @key that produces a lozenge.  Doesn't adjust to text size.
    \vbox{\hrule\kern-0.4pt
%\setfont\keyrm\rmshape{8}{1000}{OT1}
     \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
%\font\keysy=cmsy9
    \kern-0.4pt\hrule}%
%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
  \kern-.06em\raise0.4pt\hbox{\angleright}}}}
%  \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
\def\key #1{{\nohyphenation \uppercase{#1}}\null}
%    \vbox{\hrule\kern-0.4pt
% The old definition, with no lozenge:
%     \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null}
%    \kern-0.4pt\hrule}%
 
%  \kern-.06em\raise0.4pt\hbox{\angleright}}}}
 
 
 
% definition of @key with no lozenge.  If the current font is already
 
% monospace, don't change it; that way, we respect @kbdinputstyle.  But
 
% if it isn't monospace, then use \tt.
 
%
 
\def\key#1{{\setupmarkupstyle{key}%
 
  \nohyphenation
 
  \ifmonospace\else\tt\fi
 
  #1}\null}
 
 
 
% ctrl is no longer a Texinfo command.
\def\ctrl #1{{\tt \rawbackslash \hat}#1}
\def\ctrl #1{{\tt \rawbackslash \hat}#1}
 
 
% @file, @option are the same as @samp.
% @file, @option are the same as @samp.
\let\file=\samp
\let\file=\samp
\let\option=\samp
\let\option=\samp
Line 2467... Line 2634...
% and arrange explicitly to hyphenate at a dash.
% and arrange explicitly to hyphenate at a dash.
%  -- rms.
%  -- rms.
{
{
  \catcode`\-=\active \catcode`\_=\active
  \catcode`\-=\active \catcode`\_=\active
  \catcode`\'=\active \catcode`\`=\active
  \catcode`\'=\active \catcode`\`=\active
 
  \global\let'=\rq \global\let`=\lq  % default definitions
  %
  %
  \global\def\code{\begingroup
  \global\def\code{\begingroup
    \catcode\rquoteChar=\active \catcode\lquoteChar=\active
    \setupmarkupstyle{code}%
    \let'\codequoteright \let`\codequoteleft
    % The following should really be moved into \setupmarkupstyle handlers.
    %
 
    \catcode\dashChar=\active  \catcode\underChar=\active
    \catcode\dashChar=\active  \catcode\underChar=\active
    \ifallowcodebreaks
    \ifallowcodebreaks
     \let-\codedash
     \let-\codedash
     \let_\codeunder
     \let_\codeunder
    \else
    \else
Line 2523... Line 2690...
  \fi\fi
  \fi\fi
}
}
 
 
% @kbd is like @code, except that if the argument is just one @key command,
% @kbd is like @code, except that if the argument is just one @key command,
% then @kbd has no effect.
% then @kbd has no effect.
 
\def\kbd#1{{\setupmarkupstyle{kbd}\def\look{#1}\expandafter\kbdfoo\look??\par}}
 
 
% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
%   `example' (@kbd uses ttsl only inside of @example and friends),
%   `example' (@kbd uses ttsl only inside of @example and friends),
%   or `code' (@kbd uses normal tty font always).
%   or `code' (@kbd uses normal tty font always).
\parseargdef\kbdinputstyle{%
\parseargdef\kbdinputstyle{%
Line 2544... Line 2712...
}
}
\def\worddistinct{distinct}
\def\worddistinct{distinct}
\def\wordexample{example}
\def\wordexample{example}
\def\wordcode{code}
\def\wordcode{code}
 
 
% Default is `distinct.'
% Default is `distinct'.
\kbdinputstyle distinct
\kbdinputstyle distinct
 
 
\def\xkey{\key}
\def\xkey{\key}
\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
\ifx\one\xkey\ifx\threex\three \key{#2}%
\ifx\one\xkey\ifx\threex\three \key{#2}%
\else{\tclose{\kbdfont\look}}\fi
\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
\else{\tclose{\kbdfont\look}}\fi}
\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi}
 
 
% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
\let\indicateurl=\code
\let\indicateurl=\code
\let\env=\code
\let\env=\code
\let\command=\code
\let\command=\code
 
 
 
% @clicksequence{File @click{} Open ...}
 
\def\clicksequence#1{\begingroup #1\endgroup}
 
 
 
% @clickstyle @arrow   (by default)
 
\parseargdef\clickstyle{\def\click{#1}}
 
\def\click{\arrow}
 
 
% @uref (abbreviation for `urlref') takes an optional (comma-separated)
% @uref (abbreviation for `urlref') takes an optional (comma-separated)
% second argument specifying the text to display and an optional third
% second argument specifying the text to display and an optional third
% arg as text to display instead of (rather than in addition to) the url
% arg as text to display instead of (rather than in addition to) the url
% itself.  First (mandatory) arg is the url.  Perhaps eventually put in
% itself.  First (mandatory) arg is the url.  Perhaps eventually put in
% a hypertex \special here.
% a hypertex \special here.
Line 2607... Line 2782...
  \endgroup}
  \endgroup}
\else
\else
  \let\email=\uref
  \let\email=\uref
\fi
\fi
 
 
% Check if we are currently using a typewriter font.  Since all the
 
% Computer Modern typewriter fonts have zero interword stretch (and
 
% shrink), and it is reasonable to expect all typewriter fonts to have
 
% this property, we can check that font parameter.
 
%
 
\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
 
 
 
% Typeset a dimension, e.g., `in' or `pt'.  The only reason for the
% Typeset a dimension, e.g., `in' or `pt'.  The only reason for the
% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
%
%
\def\dmn#1{\thinspace #1}
\def\dmn#1{\thinspace #1}
 
 
\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par}
 
 
 
% @l was never documented to mean ``switch to the Lisp font'',
% @l was never documented to mean ``switch to the Lisp font'',
% and it is not used as such in any manual I can find.  We need it for
% and it is not used as such in any manual I can find.  We need it for
% Polish suppressed-l.  --karl, 22sep96.
% Polish suppressed-l.  --karl, 22sep96.
%\def\l#1{{\li #1}\null}
%\def\l#1{{\li #1}\null}
 
 
% Explicit font changes: @r, @sc, undocumented @ii.
 
\def\r#1{{\rm #1}}              % roman font
 
\def\sc#1{{\smallcaps#1}}       % smallcaps font
 
\def\ii#1{{\it #1}}             % italic font
 
 
 
% @acronym for "FBI", "NATO", and the like.
% @acronym for "FBI", "NATO", and the like.
% We print this one point size smaller, since it's intended for
% We print this one point size smaller, since it's intended for
% all-uppercase.
% all-uppercase.
%
%
\def\acronym#1{\doacronym #1,,\finish}
\def\acronym#1{\doacronym #1,,\finish}
Line 2656... Line 2817...
  \ifx\temp\empty \else
  \ifx\temp\empty \else
    \space ({\unsepspaces \ignorespaces \temp \unskip})%
    \space ({\unsepspaces \ignorespaces \temp \unskip})%
  \fi
  \fi
}
}
 
 
 
 
 
\message{glyphs,}
 
 
 
% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
 
%
 
% Since these characters are used in examples, they should be an even number of
 
% \tt widths. Each \tt character is 1en, so two makes it 1em.
 
%
 
\def\point{$\star$}
 
\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}}
 
\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
 
\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}}
 
\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
 
\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}}
 
 
 
% The @error{} command.
 
% Adapted from the TeXbook's \boxit.
 
%
 
\newbox\errorbox
 
%
 
{\tentt \global\dimen0 = 3em}% Width of the box.
 
\dimen2 = .55pt % Thickness of rules
 
% The text. (`r' is open on the right, `e' somewhat less so on the left.)
 
\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt}
 
%
 
\setbox\errorbox=\hbox to \dimen0{\hfil
 
   \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
 
   \advance\hsize by -2\dimen2 % Rules.
 
   \vbox{%
 
      \hrule height\dimen2
 
      \hbox{\vrule width\dimen2 \kern3pt          % Space to left of text.
 
         \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
 
         \kern3pt\vrule width\dimen2}% Space to right.
 
      \hrule height\dimen2}
 
    \hfil}
 
%
 
\def\error{\leavevmode\lower.7ex\copy\errorbox}
 
 
% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
%
%
\def\pounds{{\it\$}}
\def\pounds{{\it\$}}
 
 
% @euro{} comes from a separate font, depending on the current style.
% @euro{} comes from a separate font, depending on the current style.
Line 2708... Line 2907...
    \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
    \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
  \fi
  \fi
  \thiseurofont
  \thiseurofont
}
}
 
 
% Hacks for glyphs from the EC fonts similar to \euro.  We don't
% Glyphs from the EC fonts.  We don't use \let for the aliases, because
% use \let for the aliases, because sometimes we redefine the original
% sometimes we redefine the original macro, and the alias should reflect
% macro, and the alias should reflect the redefinition.
% the redefinition.
 
%
 
% Use LaTeX names for the Icelandic letters.
 
\def\DH{{\ecfont \char"D0}} % Eth
 
\def\dh{{\ecfont \char"F0}} % eth
 
\def\TH{{\ecfont \char"DE}} % Thorn
 
\def\th{{\ecfont \char"FE}} % thorn
 
%
\def\guillemetleft{{\ecfont \char"13}}
\def\guillemetleft{{\ecfont \char"13}}
\def\guillemotleft{\guillemetleft}
\def\guillemotleft{\guillemetleft}
\def\guillemetright{{\ecfont \char"14}}
\def\guillemetright{{\ecfont \char"14}}
\def\guillemotright{\guillemetright}
\def\guillemotright{\guillemetright}
\def\guilsinglleft{{\ecfont \char"0E}}
\def\guilsinglleft{{\ecfont \char"0E}}
\def\guilsinglright{{\ecfont \char"0F}}
\def\guilsinglright{{\ecfont \char"0F}}
\def\quotedblbase{{\ecfont \char"12}}
\def\quotedblbase{{\ecfont \char"12}}
\def\quotesinglbase{{\ecfont \char"0D}}
\def\quotesinglbase{{\ecfont \char"0D}}
%
%
 
% This positioning is not perfect (see the ogonek LaTeX package), but
 
% we have the precomposed glyphs for the most common cases.  We put the
 
% tests to use those glyphs in the single \ogonek macro so we have fewer
 
% dummy definitions to worry about for index entries, etc.
 
%
 
% ogonek is also used with other letters in Lithuanian (IOU), but using
 
% the precomposed glyphs for those is not so easy since they aren't in
 
% the same EC font.
 
\def\ogonek#1{{%
 
  \def\temp{#1}%
 
  \ifx\temp\macrocharA\Aogonek
 
  \else\ifx\temp\macrochara\aogonek
 
  \else\ifx\temp\macrocharE\Eogonek
 
  \else\ifx\temp\macrochare\eogonek
 
  \else
 
    \ecfont \setbox0=\hbox{#1}%
 
    \ifdim\ht0=1ex\accent"0C #1%
 
    \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}%
 
    \fi
 
  \fi\fi\fi\fi
 
  }%
 
}
 
\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A}
 
\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a}
 
\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E}
 
\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e}
 
%
 
% Use the ec* fonts (cm-super in outline format) for non-CM glyphs.
\def\ecfont{%
\def\ecfont{%
  % We can't distinguish serif/sanserif and italic/slanted, but this
  % We can't distinguish serif/sans and italic/slanted, but this
  % is used for crude hacks anyway (like adding French and German
  % is used for crude hacks anyway (like adding French and German
  % quotes to documents typeset with CM, where we lose kerning), so
  % quotes to documents typeset with CM, where we lose kerning), so
  % hopefully nobody will notice/care.
  % hopefully nobody will notice/care.
  \edef\ecsize{\csname\curfontsize ecsize\endcsname}%
  \edef\ecsize{\csname\curfontsize ecsize\endcsname}%
  \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}%
  \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}%
Line 2849... Line 3083...
%%% Macros to be used within @titlepage:
%%% Macros to be used within @titlepage:
 
 
\let\subtitlerm=\tenrm
\let\subtitlerm=\tenrm
\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
 
 
\def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines
 
                \let\tt=\authortt}
 
 
 
\parseargdef\title{%
\parseargdef\title{%
  \checkenv\titlepage
  \checkenv\titlepage
  \leftline{\titlefonts\rm #1}
  \leftline{\titlefonts\rmisbold #1}
  % print a rule at the page bottom also.
  % print a rule at the page bottom also.
  \finishedtitlepagefalse
  \finishedtitlepagefalse
  \vskip4pt \hrule height 4pt width \hsize \vskip4pt
  \vskip4pt \hrule height 4pt width \hsize \vskip4pt
}
}
 
 
Line 2875... Line 3106...
  \ifx\thisenv\temp
  \ifx\thisenv\temp
    \def\quotationauthor{#1}% printed in \Equotation.
    \def\quotationauthor{#1}% printed in \Equotation.
  \else
  \else
    \checkenv\titlepage
    \checkenv\titlepage
    \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi
    \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi
    {\authorfont \leftline{#1}}%
    {\secfonts\rmisbold \leftline{#1}}%
  \fi
  \fi
}
}
 
 
 
 
%%% Set up page headings and footings.
%%% Set up page headings and footings.
Line 3197... Line 3428...
  \advance\leftskip by \itemindent
  \advance\leftskip by \itemindent
  \exdentamount=\itemindent
  \exdentamount=\itemindent
  \parindent=0pt
  \parindent=0pt
  \parskip=\smallskipamount
  \parskip=\smallskipamount
  \ifdim\parskip=0pt \parskip=2pt \fi
  \ifdim\parskip=0pt \parskip=2pt \fi
 
  %
 
  % Try typesetting the item mark that if the document erroneously says
 
  % something like @itemize @samp (intending @table), there's an error
 
  % right away at the @itemize.  It's not the best error message in the
 
  % world, but it's better than leaving it to the @item.  This means if
 
  % the user wants an empty mark, they have to say @w{} not just @w.
  \def\itemcontents{#1}%
  \def\itemcontents{#1}%
 
  \setbox0 = \hbox{\itemcontents}%
 
  %
  % @itemize with no arg is equivalent to @itemize @bullet.
  % @itemize with no arg is equivalent to @itemize @bullet.
  \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
  \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
 
  %
  \let\item=\itemizeitem
  \let\item=\itemizeitem
}
}
 
 
% Definition of @item while inside @itemize and @enumerate.
% Definition of @item while inside @itemize and @enumerate.
%
%
Line 3220... Line 3460...
   % space.  In that case, we won't have a \nobreak before.  At least
   % space.  In that case, we won't have a \nobreak before.  At least
   % that's the theory.
   % that's the theory.
   \ifnum\lastpenalty<10000 \parskip=0in \fi
   \ifnum\lastpenalty<10000 \parskip=0in \fi
   \noindent
   \noindent
   \hbox to 0pt{\hss \itemcontents \kern\itemmargin}%
   \hbox to 0pt{\hss \itemcontents \kern\itemmargin}%
 
   %
   \vadjust{\penalty 1200}}% not good to break after first line of item.
   \vadjust{\penalty 1200}}% not good to break after first line of item.
  \flushcr
  \flushcr
}
}
 
 
% \splitoff TOKENS\endmark defines \first to be the first token in
% \splitoff TOKENS\endmark defines \first to be the first token in
Line 3441... Line 3682...
 
 
% multitable-only commands.
% multitable-only commands.
%
%
% @headitem starts a heading row, which we typeset in bold.
% @headitem starts a heading row, which we typeset in bold.
% Assignments have to be global since we are inside the implicit group
% Assignments have to be global since we are inside the implicit group
% of an alignment entry.  Note that \everycr resets \everytab.
% of an alignment entry.  \everycr resets \everytab so we don't have to
\def\headitem{\checkenv\multitable \crcr \global\everytab={\bf}\the\everytab}%
% undo it ourselves.
 
\def\headitemfont{\b}% for people to use in the template row; not changeable
 
\def\headitem{%
 
  \checkenv\multitable
 
  \crcr
 
  \global\everytab={\bf}% can't use \headitemfont since the parsing differs
 
  \the\everytab % for the first item
 
}%
%
%
% A \tab used to include \hskip1sp.  But then the space in a template
% A \tab used to include \hskip1sp.  But then the space in a template
% line is not enough.  That is bad.  So let's go back to just `&' until
% line is not enough.  That is bad.  So let's go back to just `&' until
% we encounter the problem it was intended to solve again.
% we again encounter the problem the 1sp was intended to solve.
%                                       --karl, nathan@acm.org, 20apr99.
%                                       --karl, nathan@acm.org, 20apr99.
\def\tab{\checkenv\multitable &\the\everytab}%
\def\tab{\checkenv\multitable &\the\everytab}%
 
 
% @multitable ... @end multitable definitions:
% @multitable ... @end multitable definitions:
%
%
Line 3845... Line 4093...
% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
% #3 the target index (bar).
% #3 the target index (bar).
\def\dosynindex#1#2#3{%
\def\dosynindex#1#2#3{%
  % Only do \closeout if we haven't already done it, else we'll end up
  % Only do \closeout if we haven't already done it, else we'll end up
  % closing the target index.
  % closing the target index.
  \expandafter \ifx\csname donesynindex#2\endcsname \undefined
  \expandafter \ifx\csname donesynindex#2\endcsname \relax
    % The \closeout helps reduce unnecessary open files; the limit on the
    % The \closeout helps reduce unnecessary open files; the limit on the
    % Acorn RISC OS is a mere 16 files.
    % Acorn RISC OS is a mere 16 files.
    \expandafter\closeout\csname#2indfile\endcsname
    \expandafter\closeout\csname#2indfile\endcsname
    \expandafter\let\csname\donesynindex#2\endcsname = 1
    \expandafter\let\csname donesynindex#2\endcsname = 1
  \fi
  \fi
  % redefine \fooindfile:
  % redefine \fooindfile:
  \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
  \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
  \expandafter\let\csname#2indfile\endcsname=\temp
  \expandafter\let\csname#2indfile\endcsname=\temp
  % redefine \fooindex:
  % redefine \fooindex:
Line 3964... Line 4212...
  \definedummyletter\_%
  \definedummyletter\_%
  %
  %
  % Non-English letters.
  % Non-English letters.
  \definedummyword\AA
  \definedummyword\AA
  \definedummyword\AE
  \definedummyword\AE
 
  \definedummyword\DH
  \definedummyword\L
  \definedummyword\L
  \definedummyword\OE
 
  \definedummyword\O
  \definedummyword\O
 
  \definedummyword\OE
 
  \definedummyword\TH
  \definedummyword\aa
  \definedummyword\aa
  \definedummyword\ae
  \definedummyword\ae
 
  \definedummyword\dh
 
  \definedummyword\exclamdown
  \definedummyword\l
  \definedummyword\l
  \definedummyword\oe
 
  \definedummyword\o
  \definedummyword\o
  \definedummyword\ss
  \definedummyword\oe
  \definedummyword\exclamdown
 
  \definedummyword\questiondown
 
  \definedummyword\ordf
  \definedummyword\ordf
  \definedummyword\ordm
  \definedummyword\ordm
 
  \definedummyword\questiondown
 
  \definedummyword\ss
 
  \definedummyword\th
  %
  %
  % Although these internal commands shouldn't show up, sometimes they do.
  % Although these internal commands shouldn't show up, sometimes they do.
  \definedummyword\bf
  \definedummyword\bf
  \definedummyword\gtr
  \definedummyword\gtr
  \definedummyword\hat
  \definedummyword\hat
Line 4007... Line 4259...
  \definedummyword\guillemetright
  \definedummyword\guillemetright
  \definedummyword\guilsinglleft
  \definedummyword\guilsinglleft
  \definedummyword\guilsinglright
  \definedummyword\guilsinglright
  \definedummyword\expansion
  \definedummyword\expansion
  \definedummyword\minus
  \definedummyword\minus
 
  \definedummyword\ogonek
  \definedummyword\pounds
  \definedummyword\pounds
  \definedummyword\point
  \definedummyword\point
  \definedummyword\print
  \definedummyword\print
  \definedummyword\quotedblbase
  \definedummyword\quotedblbase
  \definedummyword\quotedblleft
  \definedummyword\quotedblleft
Line 4050... Line 4303...
  \definedummyaccent\~%
  \definedummyaccent\~%
  \definedummyword\u
  \definedummyword\u
  \definedummyword\v
  \definedummyword\v
  \definedummyword\H
  \definedummyword\H
  \definedummyword\dotaccent
  \definedummyword\dotaccent
 
  \definedummyword\ogonek
  \definedummyword\ringaccent
  \definedummyword\ringaccent
  \definedummyword\tieaccent
  \definedummyword\tieaccent
  \definedummyword\ubaraccent
  \definedummyword\ubaraccent
  \definedummyword\udotaccent
  \definedummyword\udotaccent
  \definedummyword\dotless
  \definedummyword\dotless
Line 4069... Line 4323...
  \definedummyword\acronym
  \definedummyword\acronym
  \definedummyword\cite
  \definedummyword\cite
  \definedummyword\code
  \definedummyword\code
  \definedummyword\command
  \definedummyword\command
  \definedummyword\dfn
  \definedummyword\dfn
 
  \definedummyword\email
  \definedummyword\emph
  \definedummyword\emph
  \definedummyword\env
  \definedummyword\env
  \definedummyword\file
  \definedummyword\file
  \definedummyword\kbd
  \definedummyword\kbd
  \definedummyword\key
  \definedummyword\key
Line 4117... Line 4372...
  \def\_{\normalunderscore}%
  \def\_{\normalunderscore}%
  %
  %
  % Non-English letters.
  % Non-English letters.
  \def\AA{AA}%
  \def\AA{AA}%
  \def\AE{AE}%
  \def\AE{AE}%
 
  \def\DH{DZZ}%
  \def\L{L}%
  \def\L{L}%
  \def\OE{OE}%
  \def\OE{OE}%
  \def\O{O}%
  \def\O{O}%
 
  \def\TH{ZZZ}%
  \def\aa{aa}%
  \def\aa{aa}%
  \def\ae{ae}%
  \def\ae{ae}%
 
  \def\dh{dzz}%
 
  \def\exclamdown{!}%
  \def\l{l}%
  \def\l{l}%
  \def\oe{oe}%
  \def\oe{oe}%
  \def\o{o}%
 
  \def\ss{ss}%
 
  \def\exclamdown{!}%
 
  \def\questiondown{?}%
 
  \def\ordf{a}%
  \def\ordf{a}%
  \def\ordm{o}%
  \def\ordm{o}%
 
  \def\o{o}%
 
  \def\questiondown{?}%
 
  \def\ss{ss}%
 
  \def\th{zzz}%
  %
  %
  \def\LaTeX{LaTeX}%
  \def\LaTeX{LaTeX}%
  \def\TeX{TeX}%
  \def\TeX{TeX}%
  %
  %
  % Assorted special characters.
  % Assorted special characters.
  % (The following {} will end up in the sort string, but that's ok.)
  % (The following {} will end up in the sort string, but that's ok.)
  \def\bullet{bullet}%
  \def\bullet{bullet}%
  \def\comma{,}%
  \def\comma{,}%
  \def\copyright{copyright}%
  \def\copyright{copyright}%
  \def\registeredsymbol{R}%
 
  \def\dots{...}%
  \def\dots{...}%
  \def\enddots{...}%
  \def\enddots{...}%
  \def\equiv{==}%
  \def\equiv{==}%
  \def\error{error}%
  \def\error{error}%
  \def\euro{euro}%
  \def\euro{euro}%
 
  \def\expansion{==>}%
  \def\guillemetleft{<<}%
  \def\guillemetleft{<<}%
  \def\guillemetright{>>}%
  \def\guillemetright{>>}%
  \def\guilsinglleft{<}%
  \def\guilsinglleft{<}%
  \def\guilsinglright{>}%
  \def\guilsinglright{>}%
  \def\expansion{==>}%
 
  \def\minus{-}%
  \def\minus{-}%
  \def\pounds{pounds}%
 
  \def\point{.}%
  \def\point{.}%
 
  \def\pounds{pounds}%
  \def\print{-|}%
  \def\print{-|}%
  \def\quotedblbase{"}%
  \def\quotedblbase{"}%
  \def\quotedblleft{"}%
  \def\quotedblleft{"}%
  \def\quotedblright{"}%
  \def\quotedblright{"}%
  \def\quoteleft{`}%
  \def\quoteleft{`}%
  \def\quoteright{'}%
  \def\quoteright{'}%
  \def\quotesinglbase{,}%
  \def\quotesinglbase{,}%
 
  \def\registeredsymbol{R}%
  \def\result{=>}%
  \def\result{=>}%
  \def\textdegree{degrees}%
  \def\textdegree{o}%
  %
  %
  % We need to get rid of all macros, leaving only the arguments (if present).
  % We need to get rid of all macros, leaving only the arguments (if present).
  % Of course this is not nearly correct, but it is the best we can do for now.
  % Of course this is not nearly correct, but it is the best we can do for now.
  % makeinfo does not expand macros in the argument to @deffn, which ends up
  % makeinfo does not expand macros in the argument to @deffn, which ends up
  % writing an index entry, and texindex isn't prepared for an index sort entry
  % writing an index entry, and texindex isn't prepared for an index sort entry
Line 4430... Line 4689...
% then page number (#2) flushed to the right margin.  It is used for index
% then page number (#2) flushed to the right margin.  It is used for index
% and table of contents entries.  The paragraph is indented by \leftskip.
% and table of contents entries.  The paragraph is indented by \leftskip.
%
%
% A straightforward implementation would start like this:
% A straightforward implementation would start like this:
%       \def\entry#1#2{...
%       \def\entry#1#2{...
% But this frozes the catcodes in the argument, and can cause problems to
% But this freezes the catcodes in the argument, and can cause problems to
% @code, which sets - active.  This problem was fixed by a kludge---
% @code, which sets - active.  This problem was fixed by a kludge---
% ``-'' was active throughout whole index, but this isn't really right.
% ``-'' was active throughout whole index, but this isn't really right.
%
%
% The right solution is to prevent \entry from swallowing the whole text.
% The right solution is to prevent \entry from swallowing the whole text.
%                                 --kasal, 21nov03
%                                 --kasal, 21nov03
Line 4881... Line 5140...
  %
  %
  % Used for \float.
  % Used for \float.
  \gdef\chaplevelprefix{\the\chapno.}%
  \gdef\chaplevelprefix{\the\chapno.}%
  \resetallfloatnos
  \resetallfloatnos
  %
  %
  \message{\putwordChapter\space \the\chapno}%
  % \putwordChapter can contain complex things in translations.
 
  \toks0=\expandafter{\putwordChapter}%
 
  \message{\the\toks0 \space \the\chapno}%
  %
  %
  % Write the actual heading.
  % Write the actual heading.
  \chapmacro{#1}{Ynumbered}{\the\chapno}%
  \chapmacro{#1}{Ynumbered}{\the\chapno}%
  %
  %
  % So @section and the like are numbered underneath this chapter.
  % So @section and the like are numbered underneath this chapter.
  \global\let\section = \numberedsec
  \global\let\section = \numberedsec
  \global\let\subsection = \numberedsubsec
  \global\let\subsection = \numberedsubsec
  \global\let\subsubsection = \numberedsubsubsec
  \global\let\subsubsection = \numberedsubsubsec
}
}
 
 
\outer\parseargdef\appendix{\apphead0{#1}} % normally apphead0 calls appendixzzz
\outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz
 
%
\def\appendixzzz#1{%
\def\appendixzzz#1{%
  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
    \global\advance\appendixno by 1
    \global\advance\appendixno by 1
  \gdef\chaplevelprefix{\appendixletter.}%
  \gdef\chaplevelprefix{\appendixletter.}%
  \resetallfloatnos
  \resetallfloatnos
  %
  %
  \def\appendixnum{\putwordAppendix\space \appendixletter}%
  % \putwordAppendix can contain complex things in translations.
  \message{\appendixnum}%
  \toks0=\expandafter{\putwordAppendix}%
 
  \message{\the\toks0 \space \appendixletter}%
  %
  %
  \chapmacro{#1}{Yappendix}{\appendixletter}%
  \chapmacro{#1}{Yappendix}{\appendixletter}%
  %
  %
  \global\let\section = \appendixsec
  \global\let\section = \appendixsec
  \global\let\subsection = \appendixsubsec
  \global\let\subsection = \appendixsubsec
Line 5032... Line 5295...
%       2) \hyphenpenalty is set to 10000 because hyphenation in a
%       2) \hyphenpenalty is set to 10000 because hyphenation in a
%          heading is obnoxious; this forbids it.
%          heading is obnoxious; this forbids it.
%       3) Likewise, headings look best if no \parindent is used, and
%       3) Likewise, headings look best if no \parindent is used, and
%          if justification is not attempted.  Hence \raggedright.
%          if justification is not attempted.  Hence \raggedright.
 
 
 
 
\def\majorheading{%
\def\majorheading{%
  {\advance\chapheadingskip by 10pt \chapbreak }%
  {\advance\chapheadingskip by 10pt \chapbreak }%
  \parsearg\chapheadingzzz
  \parsearg\chapheadingzzz
}
}
 
 
\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
\def\chapheadingzzz#1{%
\def\chapheadingzzz#1{%
  {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
  {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
                    \parindent=0pt\raggedright
                    \parindent=0pt\ptexraggedright
                    \rm #1\hfill}}%
                    \rmisbold #1\hfill}}%
  \bigskip \par\penalty 200\relax
  \bigskip \par\penalty 200\relax
  \suppressfirstparagraphindent
  \suppressfirstparagraphindent
}
}
 
 
% @heading, @subheading, @subsubheading.
% @heading, @subheading, @subsubheading.
Line 5134... Line 5396...
  \else\ifx\temptype\Yappendixkeyword
  \else\ifx\temptype\Yappendixkeyword
    \toks0={#1}%
    \toks0={#1}%
    \xdef\lastchapterdefs{%
    \xdef\lastchapterdefs{%
      \gdef\noexpand\thischaptername{\the\toks0}%
      \gdef\noexpand\thischaptername{\the\toks0}%
      \gdef\noexpand\thischapternum{\appendixletter}%
      \gdef\noexpand\thischapternum{\appendixletter}%
      \gdef\noexpand\thischapter{\putwordAppendix{} \noexpand\thischapternum:
      % \noexpand\putwordAppendix avoids expanding indigestible
 
      % commands in some of the translations.
 
      \gdef\noexpand\thischapter{\noexpand\putwordAppendix{}
 
                                 \noexpand\thischapternum:
                                 \noexpand\thischaptername}%
                                 \noexpand\thischaptername}%
    }%
    }%
  \else
  \else
    \toks0={#1}%
    \toks0={#1}%
    \xdef\lastchapterdefs{%
    \xdef\lastchapterdefs{%
      \gdef\noexpand\thischaptername{\the\toks0}%
      \gdef\noexpand\thischaptername{\the\toks0}%
      \gdef\noexpand\thischapternum{\the\chapno}%
      \gdef\noexpand\thischapternum{\the\chapno}%
      \gdef\noexpand\thischapter{\putwordChapter{} \noexpand\thischapternum:
      % \noexpand\putwordChapter avoids expanding indigestible
 
      % commands in some of the translations.
 
      \gdef\noexpand\thischapter{\noexpand\putwordChapter{}
 
                                 \noexpand\thischapternum:
                                 \noexpand\thischaptername}%
                                 \noexpand\thischaptername}%
    }%
    }%
  \fi\fi\fi
  \fi\fi\fi
  %
  %
  % Output the mark.  Pass it through \safewhatsit, to take care of
  % Output the mark.  Pass it through \safewhatsit, to take care of
Line 5161... Line 5429...
  \let\prevchapterdefs=\lastchapterdefs
  \let\prevchapterdefs=\lastchapterdefs
  \let\prevsectiondefs=\lastsectiondefs
  \let\prevsectiondefs=\lastsectiondefs
  \domark
  \domark
  %
  %
  {%
  {%
    \chapfonts \rm
    \chapfonts \rmisbold
    %
    %
    % Have to define \lastsection before calling \donoderef, because the
    % Have to define \lastsection before calling \donoderef, because the
    % xref code eventually uses it.  On the other hand, it has to be called
    % xref code eventually uses it.  On the other hand, it has to be called
    % after \pchapsepmacro, or the headline will change too soon.
    % after \pchapsepmacro, or the headline will change too soon.
    \gdef\lastsection{#1}%
    \gdef\lastsection{#1}%
Line 5198... Line 5466...
    % being visible, for instance under high magnification.
    % being visible, for instance under high magnification.
    \donoderef{#2}%
    \donoderef{#2}%
    %
    %
    % Typeset the actual heading.
    % Typeset the actual heading.
    \nobreak % Avoid page breaks at the interline glue.
    \nobreak % Avoid page breaks at the interline glue.
    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
          \hangindent=\wd0 \centerparametersmaybe
          \hangindent=\wd0 \centerparametersmaybe
          \unhbox0 #1\par}%
          \unhbox0 #1\par}%
  }%
  }%
  \nobreak\bigskip % no page break after a chapter title
  \nobreak\bigskip % no page break after a chapter title
  \nobreak
  \nobreak
Line 5222... Line 5490...
%
%
\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
%
%
\def\unnchfopen #1{%
\def\unnchfopen #1{%
\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
                       \parindent=0pt\raggedright
                       \parindent=0pt\ptexraggedright
                       \rm #1\hfill}}\bigskip \par\nobreak
                       \rmisbold #1\hfill}}\bigskip \par\nobreak
}
}
\def\chfopen #1#2{\chapoddpage {\chapfonts
\def\chfopen #1#2{\chapoddpage {\chapfonts
\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
\par\penalty 5000 %
\par\penalty 5000 %
}
}
\def\centerchfopen #1{%
\def\centerchfopen #1{%
\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
                       \parindent=0pt
                       \parindent=0pt
                       \hfill {\rm #1}\hfill}}\bigskip \par\nobreak
                       \hfill {\rmisbold #1}\hfill}}\bigskip \par\nobreak
}
}
\def\CHAPFopen{%
\def\CHAPFopen{%
  \global\let\chapmacro=\chfopen
  \global\let\chapmacro=\chfopen
  \global\let\centerchapmacro=\centerchfopen}
  \global\let\centerchapmacro=\centerchfopen}
 
 
Line 5265... Line 5533...
\def\seckeyword{sec}
\def\seckeyword{sec}
%
%
\def\sectionheading#1#2#3#4{%
\def\sectionheading#1#2#3#4{%
  {%
  {%
    % Switch to the right set of fonts.
    % Switch to the right set of fonts.
    \csname #2fonts\endcsname \rm
    \csname #2fonts\endcsname \rmisbold
    %
    %
    \def\sectionlevel{#2}%
    \def\sectionlevel{#2}%
    \def\temptype{#3}%
    \def\temptype{#3}%
    %
    %
    % Insert first mark before the heading break (see notes for \domark).
    % Insert first mark before the heading break (see notes for \domark).
Line 5285... Line 5553...
      \ifx\sectionlevel\seckeyword
      \ifx\sectionlevel\seckeyword
        \toks0={#1}%
        \toks0={#1}%
        \xdef\lastsectiondefs{%
        \xdef\lastsectiondefs{%
          \gdef\noexpand\thissectionname{\the\toks0}%
          \gdef\noexpand\thissectionname{\the\toks0}%
          \gdef\noexpand\thissectionnum{#4}%
          \gdef\noexpand\thissectionnum{#4}%
          \gdef\noexpand\thissection{\putwordSection{} \noexpand\thissectionnum:
          % \noexpand\putwordSection avoids expanding indigestible
 
          % commands in some of the translations.
 
          \gdef\noexpand\thissection{\noexpand\putwordSection{}
 
                                     \noexpand\thissectionnum:
                                     \noexpand\thissectionname}%
                                     \noexpand\thissectionname}%
        }%
        }%
      \fi
      \fi
    \else
    \else
      \ifx\sectionlevel\seckeyword
      \ifx\sectionlevel\seckeyword
        \toks0={#1}%
        \toks0={#1}%
        \xdef\lastsectiondefs{%
        \xdef\lastsectiondefs{%
          \gdef\noexpand\thissectionname{\the\toks0}%
          \gdef\noexpand\thissectionname{\the\toks0}%
          \gdef\noexpand\thissectionnum{#4}%
          \gdef\noexpand\thissectionnum{#4}%
          \gdef\noexpand\thissection{\putwordSection{} \noexpand\thissectionnum:
          % \noexpand\putwordSection avoids expanding indigestible
 
          % commands in some of the translations.
 
          \gdef\noexpand\thissection{\noexpand\putwordSection{}
 
                                     \noexpand\thissectionnum:
                                     \noexpand\thissectionname}%
                                     \noexpand\thissectionname}%
        }%
        }%
      \fi
      \fi
    \fi\fi\fi
    \fi\fi\fi
    %
    %
 
    % Go into vertical mode.  Usually we'll already be there, but we
 
    % don't want the following whatsit to end up in a preceding paragraph
 
    % if the document didn't happen to have a blank line.
 
    \par
 
    %
    % Output the mark.  Pass it through \safewhatsit, to take care of
    % Output the mark.  Pass it through \safewhatsit, to take care of
    % the preceding space.
    % the preceding space.
    \safewhatsit\domark
    \safewhatsit\domark
    %
    %
    % Insert space above the heading.
    % Insert space above the heading.
Line 5350... Line 5629...
    % break, since then the whatsits could end up on page n while the
    % break, since then the whatsits could end up on page n while the
    % section is on page n+1, thus toc/etc. are wrong.  Debian bug 276000.
    % section is on page n+1, thus toc/etc. are wrong.  Debian bug 276000.
    \nobreak
    \nobreak
    %
    %
    % Output the actual section heading.
    % Output the actual section heading.
    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
          \hangindent=\wd0  % zero if no section number
          \hangindent=\wd0  % zero if no section number
          \unhbox0 #1}%
          \unhbox0 #1}%
  }%
  }%
  % Add extra space after the heading -- half of whatever came above it.
  % Add extra space after the heading -- half of whatever came above it.
  % Don't allow stretch, though.
  % Don't allow stretch, though.
Line 5648... Line 5927...
 
 
 
 
\message{environments,}
\message{environments,}
% @foo ... @end foo.
% @foo ... @end foo.
 
 
% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
 
%
 
% Since these characters are used in examples, it should be an even number of
 
% \tt widths. Each \tt character is 1en, so two makes it 1em.
 
%
 
\def\point{$\star$}
 
\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
 
\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
 
\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
 
\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
 
 
 
% The @error{} command.
 
% Adapted from the TeXbook's \boxit.
 
%
 
\newbox\errorbox
 
%
 
{\tentt \global\dimen0 = 3em}% Width of the box.
 
\dimen2 = .55pt % Thickness of rules
 
% The text. (`r' is open on the right, `e' somewhat less so on the left.)
 
\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt}
 
%
 
\setbox\errorbox=\hbox to \dimen0{\hfil
 
   \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
 
   \advance\hsize by -2\dimen2 % Rules.
 
   \vbox{%
 
      \hrule height\dimen2
 
      \hbox{\vrule width\dimen2 \kern3pt          % Space to left of text.
 
         \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
 
         \kern3pt\vrule width\dimen2}% Space to right.
 
      \hrule height\dimen2}
 
    \hfil}
 
%
 
\def\error{\leavevmode\lower.7ex\copy\errorbox}
 
 
 
% @tex ... @end tex    escapes into raw Tex temporarily.
% @tex ... @end tex    escapes into raw Tex temporarily.
% One exception: @ is still an escape character, so that @end tex works.
% One exception: @ is still an escape character, so that @end tex works.
% But \@ or @@ will get a plain tex @ character.
% But \@ or @@ will get a plain tex @ character.
 
 
\envdef\tex{%
\envdef\tex{%
 
  \setupmarkupstyle{tex}%
  \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
  \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
  \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
  \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
  \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
  \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
  \catcode `\%=14
  \catcode `\%=14
  \catcode `\+=\other
  \catcode `\+=\other
  \catcode `\"=\other
  \catcode `\"=\other
  \catcode `\|=\other
  \catcode `\|=\other
  \catcode `\<=\other
  \catcode `\<=\other
  \catcode `\>=\other
  \catcode `\>=\other
 
  \catcode`\`=\other
 
  \catcode`\'=\other
  \escapechar=`\\
  \escapechar=`\\
  %
  %
  \let\b=\ptexb
  \let\b=\ptexb
  \let\bullet=\ptexbullet
  \let\bullet=\ptexbullet
  \let\c=\ptexc
  \let\c=\ptexc
Line 5715... Line 5963...
  \let\+=\tabalign
  \let\+=\tabalign
  \let\}=\ptexrbrace
  \let\}=\ptexrbrace
  \let\/=\ptexslash
  \let\/=\ptexslash
  \let\*=\ptexstar
  \let\*=\ptexstar
  \let\t=\ptext
  \let\t=\ptext
 
  \expandafter \let\csname top\endcsname=\ptextop  % outer
  \let\frenchspacing=\plainfrenchspacing
  \let\frenchspacing=\plainfrenchspacing
  %
  %
  \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
  \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
  \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
  \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
  \def\@{@}%
  \def\@{@}%
Line 5830... Line 6079...
}
}
 
 
 
 
% This macro is called at the beginning of all the @example variants,
% This macro is called at the beginning of all the @example variants,
% inside a group.
% inside a group.
 
\newdimen\nonfillparindent
\def\nonfillstart{%
\def\nonfillstart{%
  \aboveenvbreak
  \aboveenvbreak
  \hfuzz = 12pt % Don't be fussy
  \hfuzz = 12pt % Don't be fussy
  \sepspaces % Make spaces be word-separators rather than space tokens.
  \sepspaces % Make spaces be word-separators rather than space tokens.
  \let\par = \lisppar % don't ignore blank lines
  \let\par = \lisppar % don't ignore blank lines
  \obeylines % each line of input is a line of output
  \obeylines % each line of input is a line of output
  \parskip = 0pt
  \parskip = 0pt
 
  % Turn off paragraph indentation but redefine \indent to emulate
 
  % the normal \indent.
 
  \nonfillparindent=\parindent
  \parindent = 0pt
  \parindent = 0pt
 
  \let\indent\nonfillindent
 
  %
  \emergencystretch = 0pt % don't try to avoid overfull boxes
  \emergencystretch = 0pt % don't try to avoid overfull boxes
  \ifx\nonarrowing\relax
  \ifx\nonarrowing\relax
    \advance \leftskip by \lispnarrowing
    \advance \leftskip by \lispnarrowing
    \exdentamount=\lispnarrowing
    \exdentamount=\lispnarrowing
  \else
  \else
    \let\nonarrowing = \relax
    \let\nonarrowing = \relax
  \fi
  \fi
  \let\exdent=\nofillexdent
  \let\exdent=\nofillexdent
}
}
 
 
 
\begingroup
 
\obeyspaces
 
% We want to swallow spaces (but not other tokens) after the fake
 
% @indent in our nonfill-environments, where spaces are normally
 
% active and set to @tie, resulting in them not being ignored after
 
% @indent.
 
\gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}%
 
\gdef\nonfillindentcheck{%
 
\ifx\temp %
 
\expandafter\nonfillindentgobble%
 
\else%
 
\leavevmode\nonfillindentbox%
 
\fi%
 
}%
 
\endgroup
 
\def\nonfillindentgobble#1{\nonfillindent}
 
\def\nonfillindentbox{\hbox to \nonfillparindent{\hss}}
 
 
% If you want all examples etc. small: @set dispenvsize small.
% If you want all examples etc. small: @set dispenvsize small.
% If you want even small examples the full size: @set dispenvsize nosmall.
% If you want even small examples the full size: @set dispenvsize nosmall.
% This affects the following displayed environments:
% This affects the following displayed environments:
%    @example, @display, @format, @lisp
%    @example, @display, @format, @lisp
%
%
Line 5896... Line 6169...
% @smallexample and @smalllisp: use smaller fonts.
% @smallexample and @smalllisp: use smaller fonts.
% Originally contributed by Pavel@xerox.
% Originally contributed by Pavel@xerox.
%
%
\maketwodispenvs {lisp}{example}{%
\maketwodispenvs {lisp}{example}{%
  \nonfillstart
  \nonfillstart
  \tt\quoteexpand
  \tt\setupmarkupstyle{example}%
  \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
  \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
  \gobble       % eat return
  \gobble       % eat return
}
}
% @display/@smalldisplay: same as @lisp except keep current font.
% @display/@smalldisplay: same as @lisp except keep current font.
%
%
Line 5934... Line 6207...
  \gobble
  \gobble
}
}
\let\Eflushright = \afterenvbreak
\let\Eflushright = \afterenvbreak
 
 
 
 
 
% @raggedright does more-or-less normal line breaking but no right
 
% justification.  From plain.tex.
 
\envdef\raggedright{%
 
  \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax
 
}
 
\let\Eraggedright\par
 
 
 
\envdef\raggedleft{%
 
  \parindent=0pt \leftskip0pt plus2em
 
  \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
 
  \hbadness=10000 % Last line will usually be underfull, so turn off
 
                  % badness reporting.
 
}
 
\let\Eraggedleft\par
 
 
 
\envdef\raggedcenter{%
 
  \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em
 
  \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
 
  \hbadness=10000 % Last line will usually be underfull, so turn off
 
                  % badness reporting.
 
}
 
\let\Eraggedcenter\par
 
 
 
 
% @quotation does normal linebreaking (hence we can't use \nonfillstart)
% @quotation does normal linebreaking (hence we can't use \nonfillstart)
% and narrows the margins.  We keep \parskip nonzero in general, since
% and narrows the margins.  We keep \parskip nonzero in general, since
% we're doing normal filling.  So, when using \aboveenvbreak and
% we're doing normal filling.  So, when using \aboveenvbreak and
% \afterenvbreak, temporarily make \parskip 0.
% \afterenvbreak, temporarily make \parskip 0.
%
%
\envdef\quotation{%
\def\quotationstart{%
  {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
  {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
  \parindent=0pt
  \parindent=0pt
  %
  %
  % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
  % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
  \ifx\nonarrowing\relax
  \ifx\nonarrowing\relax
Line 5954... Line 6251...
    \let\nonarrowing = \relax
    \let\nonarrowing = \relax
  \fi
  \fi
  \parsearg\quotationlabel
  \parsearg\quotationlabel
}
}
 
 
 
\envdef\quotation{%
 
  \setnormaldispenv
 
  \quotationstart
 
}
 
 
 
\envdef\smallquotation{%
 
  \setsmalldispenv
 
  \quotationstart
 
}
 
\let\Esmallquotation = \Equotation
 
 
% We have retained a nonzero parskip for the environment, since we're
% We have retained a nonzero parskip for the environment, since we're
% doing normal filling.
% doing normal filling.
%
%
\def\Equotation{%
\def\Equotation{%
  \par
  \par
Line 5989... Line 6297...
% verbatim line.
% verbatim line.
\def\dospecials{%
\def\dospecials{%
  \do\ \do\\\do\{\do\}\do\$\do\&%
  \do\ \do\\\do\{\do\}\do\$\do\&%
  \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%
  \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%
  \do\<\do\>\do\|\do\@\do+\do\"%
  \do\<\do\>\do\|\do\@\do+\do\"%
 
  % Don't do the quotes -- if we do, @set txicodequoteundirected and
 
  % @set txicodequotebacktick will not have effect on @verb and
 
  % @verbatim, and ?` and !` ligatures won't get disabled.
 
  %\do\`\do\'%
}
}
%
%
% [Knuth] p. 380
% [Knuth] p. 380
\def\uncatcodespecials{%
\def\uncatcodespecials{%
  \def\do##1{\catcode`##1=\other}\dospecials}
  \def\do##1{\catcode`##1=\other}\dospecials}
%
%
% [Knuth] pp. 380,381,391
 
% Disable Spanish ligatures ?` and !` of \tt font
 
\begingroup
 
  \catcode`\`=\active\gdef`{\relax\lq}
 
\endgroup
 
%
 
% Setup for the @verb command.
% Setup for the @verb command.
%
%
% Eight spaces for a tab
% Eight spaces for a tab
\begingroup
\begingroup
  \catcode`\^^I=\active
  \catcode`\^^I=\active
Line 6012... Line 6318...
\endgroup
\endgroup
%
%
\def\setupverb{%
\def\setupverb{%
  \tt  % easiest (and conventionally used) font for verbatim
  \tt  % easiest (and conventionally used) font for verbatim
  \def\par{\leavevmode\endgraf}%
  \def\par{\leavevmode\endgraf}%
  \catcode`\`=\active
  \setupmarkupstyle{verb}%
  \tabeightspaces
  \tabeightspaces
  % Respect line breaks,
  % Respect line breaks,
  % print special symbols as themselves, and
  % print special symbols as themselves, and
  % make each space count
  % make each space count
  % must do in this order:
  % must do in this order:
Line 6027... Line 6333...
%
%
% Real tab expansion
% Real tab expansion
\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
%
%
\def\starttabbox{\setbox0=\hbox\bgroup}
\def\starttabbox{\setbox0=\hbox\bgroup}
 
 
% Allow an option to not replace quotes with a regular directed right
 
% quote/apostrophe (char 0x27), but instead use the undirected quote
 
% from cmtt (char 0x0d).  The undirected quote is ugly, so don't make it
 
% the default, but it works for pasting with more pdf viewers (at least
 
% evince), the lilypond developers report.  xpdf does work with the
 
% regular 0x27.
 
%
 
\def\codequoteright{%
 
  \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
 
    \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
 
      '%
 
    \else \char'15 \fi
 
  \else \char'15 \fi
 
}
 
%
 
% and a similar option for the left quote char vs. a grave accent.
 
% Modern fonts display ASCII 0x60 as a grave accent, so some people like
 
% the code environments to do likewise.
 
%
 
\def\codequoteleft{%
 
  \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax
 
    \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
 
      `%
 
    \else \char'22 \fi
 
  \else \char'22 \fi
 
}
 
%
%
\begingroup
\begingroup
  \catcode`\^^I=\active
  \catcode`\^^I=\active
  \gdef\tabexpand{%
  \gdef\tabexpand{%
    \catcode`\^^I=\active
    \catcode`\^^I=\active
Line 6067... Line 6346...
      \multiply\dimen0 by\tabw % compute previous multiple of \tabw
      \multiply\dimen0 by\tabw % compute previous multiple of \tabw
      \advance\dimen0 by\tabw  % advance to next multiple of \tabw
      \advance\dimen0 by\tabw  % advance to next multiple of \tabw
      \wd0=\dimen0 \box0 \starttabbox
      \wd0=\dimen0 \box0 \starttabbox
    }%
    }%
  }
  }
  \catcode`\'=\active
 
  \gdef\rquoteexpand{\catcode\rquoteChar=\active \def'{\codequoteright}}%
 
  %
 
  \catcode`\`=\active
 
  \gdef\lquoteexpand{\catcode\lquoteChar=\active \def`{\codequoteleft}}%
 
  %
 
  \gdef\quoteexpand{\rquoteexpand \lquoteexpand}%
 
\endgroup
\endgroup
 
 
% start the verbatim environment.
% start the verbatim environment.
\def\setupverbatim{%
\def\setupverbatim{%
  \let\nonarrowing = t%
  \let\nonarrowing = t%
  \nonfillstart
  \nonfillstart
  % Easiest (and conventionally used) font for verbatim
  % Easiest (and conventionally used) font for verbatim
  \tt
  \tt
  \def\par{\leavevmode\egroup\box0\endgraf}%
  \def\par{\leavevmode\egroup\box0\endgraf}%
  \catcode`\`=\active
 
  \tabexpand
  \tabexpand
  \quoteexpand
  \setupmarkupstyle{verbatim}%
  % Respect line breaks,
  % Respect line breaks,
  % print special symbols as themselves, and
  % print special symbols as themselves, and
  % make each space count
  % make each space count
  % must do in this order:
  % must do in this order:
  \obeylines \uncatcodespecials \sepspaces
  \obeylines \uncatcodespecials \sepspaces
Line 6145... Line 6416...
%
%
\def\doverbatiminclude#1{%
\def\doverbatiminclude#1{%
  {%
  {%
    \makevalueexpandable
    \makevalueexpandable
    \setupverbatim
    \setupverbatim
 
    \indexnofonts       % Allow `@@' and other weird things in file names.
    \input #1
    \input #1
    \afterenvbreak
    \afterenvbreak
  }%
  }%
}
}
 
 
Line 6244... Line 6516...
}
}
 
 
\def\Edefun{\endgraf\medbreak}
\def\Edefun{\endgraf\medbreak}
 
 
% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
% the only thing remainnig is to define \deffnheader.
% the only thing remaining is to define \deffnheader.
%
%
\def\makedefun#1{%
\def\makedefun#1{%
  \expandafter\let\csname E#1\endcsname = \Edefun
  \expandafter\let\csname E#1\endcsname = \Edefun
  \edef\temp{\noexpand\domakedefun
  \edef\temp{\noexpand\domakedefun
    \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}%
    \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}%
Line 6423... Line 6695...
  % tt for the names.
  % tt for the names.
  \df \sl \hyphenchar\font=0
  \df \sl \hyphenchar\font=0
  %
  %
  % On the other hand, if an argument has two dashes (for instance), we
  % On the other hand, if an argument has two dashes (for instance), we
  % want a way to get ttsl.  Let's try @var for that.
  % want a way to get ttsl.  Let's try @var for that.
  \let\var=\ttslanted
  \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}%
  #1%
  #1%
  \sl\hyphenchar\font=45
  \sl\hyphenchar\font=45
}
}
 
 
% We want ()&[] to print specially on the defun line.
% We want ()&[] to print specially on the defun line.
Line 6951... Line 7223...
    \fi
    \fi
  \fi
  \fi
  %
  %
  % Make link in pdf output.
  % Make link in pdf output.
  \ifpdf
  \ifpdf
    \leavevmode
 
    \getfilename{#4}%
 
    {\indexnofonts
    {\indexnofonts
     \turnoffactive
     \turnoffactive
 
     % This expands tokens, so do it after making catcode changes, so _
 
     % etc. don't get their TeX definitions.
 
     \getfilename{#4}%
 
     %
     % See comments at \activebackslashdouble.
     % See comments at \activebackslashdouble.
     {\activebackslashdouble \xdef\pdfxrefdest{#1}%
     {\activebackslashdouble \xdef\pdfxrefdest{#1}%
      \backslashparens\pdfxrefdest}%
      \backslashparens\pdfxrefdest}%
     %
     %
     \ifnum\filenamelength>0
     \leavevmode
       \startlink attr{/Border [0 0 0]}%
       \startlink attr{/Border [0 0 0]}%
 
     \ifnum\filenamelength>0
         goto file{\the\filename.pdf} name{\pdfxrefdest}%
         goto file{\the\filename.pdf} name{\pdfxrefdest}%
     \else
     \else
       \startlink attr{/Border [0 0 0]}%
 
         goto name{\pdfmkpgn{\pdfxrefdest}}%
         goto name{\pdfmkpgn{\pdfxrefdest}}%
     \fi
     \fi
    }%
    }%
    \setcolor{\linkcolor}%
    \setcolor{\linkcolor}%
  \fi
  \fi
Line 7315... Line 7589...
}%end \catcode `\@=11
}%end \catcode `\@=11
 
 
% In case a @footnote appears in a vbox, save the footnote text and create
% In case a @footnote appears in a vbox, save the footnote text and create
% the real \insert just after the vbox finished.  Otherwise, the insertion
% the real \insert just after the vbox finished.  Otherwise, the insertion
% would be lost.
% would be lost.
% Similarily, if a @footnote appears inside an alignment, save the footnote
% Similarly, if a @footnote appears inside an alignment, save the footnote
% text to a box and make the \insert when a row of the table is finished.
% text to a box and make the \insert when a row of the table is finished.
% And the same can be done for other insert classes.  --kasal, 16nov03.
% And the same can be done for other insert classes.  --kasal, 16nov03.
 
 
% Replace the \insert primitive by a cheating macro.
% Replace the \insert primitive by a cheating macro.
% Deeper inside, just make sure that the saved insertions are not spilled
% Deeper inside, just make sure that the saved insertions are not spilled
Line 7419... Line 7693...
  \catcode`\^^M = 5     % in case we're inside an example
  \catcode`\^^M = 5     % in case we're inside an example
  \normalturnoffactive  % allow _ et al. in names
  \normalturnoffactive  % allow _ et al. in names
  % If the image is by itself, center it.
  % If the image is by itself, center it.
  \ifvmode
  \ifvmode
    \imagevmodetrue
    \imagevmodetrue
    \nobreak\bigskip
    \nobreak\medskip
    % Usually we'll have text after the image which will insert
    % Usually we'll have text after the image which will insert
    % \parskip glue, so insert it here too to equalize the space
    % \parskip glue, so insert it here too to equalize the space
    % above and below.
    % above and below.
    \nobreak\vskip\parskip
    \nobreak\vskip\parskip
    \nobreak
    \nobreak
    \line\bgroup
 
  \fi
  \fi
  %
  %
 
  % Leave vertical mode so that indentation from an enclosing
 
  % environment such as @quotation is respected.  On the other hand, if
 
  % it's at the top level, we don't want the normal paragraph indentation.
 
  \noindent
 
  %
  % Output the image.
  % Output the image.
  \ifpdf
  \ifpdf
    \dopdfimage{#1}{#2}{#3}%
    \dopdfimage{#1}{#2}{#3}%
  \else
  \else
    % \epsfbox itself resets \epsf?size at each figure.
    % \epsfbox itself resets \epsf?size at each figure.
    \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
    \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
    \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
    \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
    \epsfbox{#1.eps}%
    \epsfbox{#1.eps}%
  \fi
  \fi
  %
  %
  \ifimagevmode \egroup \bigbreak \fi  % space after the image
  \ifimagevmode \medskip \fi  % space after the standalone image
\endgroup}
\endgroup}
 
 
 
 
% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables,
% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables,
% etc.  We don't actually implement floating yet, we always include the
% etc.  We don't actually implement floating yet, we always include the
Line 7710... Line 7988...
}}
}}
 
 
 
 
\message{localization,}
\message{localization,}
 
 
% @documentlanguage is usually given very early, just after
% For single-language documents, @documentlanguage is usually given very
% @setfilename.  If done too late, it may not override everything
% early, just after @documentencoding.  Single argument is the language
% properly.  Single argument is the language (de) or locale (de_DE)
% (de) or locale (de_DE) abbreviation.
% abbreviation.  It would be nice if we could set up a hyphenation file.
 
%
%
{
{
  \catcode`\_ = \active
  \catcode`\_ = \active
  \globaldefs=1
  \globaldefs=1
\parseargdef\documentlanguage{\begingroup
\parseargdef\documentlanguage{\begingroup
Line 7726... Line 8003...
    % Read the file by the name they passed if it exists.
    % Read the file by the name they passed if it exists.
    \openin 1 txi-#1.tex
    \openin 1 txi-#1.tex
    \ifeof 1
    \ifeof 1
      \documentlanguagetrywithoutunderscore{#1_\finish}%
      \documentlanguagetrywithoutunderscore{#1_\finish}%
    \else
    \else
 
      \globaldefs = 1  % everything in the txi-LL files needs to persist
      \input txi-#1.tex
      \input txi-#1.tex
    \fi
    \fi
    \closein 1
    \closein 1
  \endgroup
  \endgroup % end raw TeX
\endgroup}
\endgroup}
}
 
%
%
% If they passed de_DE, and txi-de_DE.tex doesn't exist,
% If they passed de_DE, and txi-de_DE.tex doesn't exist,
% try txi-de.tex.
% try txi-de.tex.
%
%
\def\documentlanguagetrywithoutunderscore#1_#2\finish{%
\gdef\documentlanguagetrywithoutunderscore#1_#2\finish{%
  \openin 1 txi-#1.tex
  \openin 1 txi-#1.tex
  \ifeof 1
  \ifeof 1
    \errhelp = \nolanghelp
    \errhelp = \nolanghelp
    \errmessage{Cannot read language file txi-#1.tex}%
    \errmessage{Cannot read language file txi-#1.tex}%
  \else
  \else
 
    \globaldefs = 1  % everything in the txi-LL files needs to persist
    \input txi-#1.tex
    \input txi-#1.tex
  \fi
  \fi
  \closein 1
  \closein 1
}
}
 
}% end of special _ catcode
%
%
\newhelp\nolanghelp{The given language definition file cannot be found or
\newhelp\nolanghelp{The given language definition file cannot be found or
is empty.  Maybe you need to install it?  In the current directory
is empty.  Maybe you need to install it?  Putting it in the current
should work if nowhere else does.}
directory should work if nowhere else does.}
 
 
 
% This macro is called from txi-??.tex files; the first argument is the
 
% \language name to set (without the "\lang@" prefix), the second and
 
% third args are \{left,right}hyphenmin.
 
%
 
% The language names to pass are determined when the format is built.
 
% See the etex.log file created at that time, e.g.,
 
% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log.
 
%
 
% With TeX Live 2008, etex now includes hyphenation patterns for all
 
% available languages.  This means we can support hyphenation in
 
% Texinfo, at least to some extent.  (This still doesn't solve the
 
% accented characters problem.)
 
%
 
\catcode`@=11
 
\def\txisetlanguage#1#2#3{%
 
  % do not set the language if the name is undefined in the current TeX.
 
  \expandafter\ifx\csname lang@#1\endcsname \relax
 
    \message{no patterns for #1}%
 
  \else
 
    \global\language = \csname lang@#1\endcsname
 
  \fi
 
  % but there is no harm in adjusting the hyphenmin values regardless.
 
  \global\lefthyphenmin = #2\relax
 
  \global\righthyphenmin = #3\relax
 
}
 
 
 
% Helpers for encodings.
% Set the catcode of characters 128 through 255 to the specified number.
% Set the catcode of characters 128 through 255 to the specified number.
%
%
\def\setnonasciicharscatcode#1{%
\def\setnonasciicharscatcode#1{%
   \count255=128
   \count255=128
   \loop\ifnum\count255<256
   \loop\ifnum\count255<256
Line 7839... Line 8145...
  \gdef^^a6{\missingcharmsg{BROKEN BAR}}
  \gdef^^a6{\missingcharmsg{BROKEN BAR}}
  \gdef^^a7{\S}
  \gdef^^a7{\S}
  \gdef^^a8{\"{}}
  \gdef^^a8{\"{}}
  \gdef^^a9{\copyright}
  \gdef^^a9{\copyright}
  \gdef^^aa{\ordf}
  \gdef^^aa{\ordf}
  \gdef^^ab{\missingcharmsg{LEFT-POINTING DOUBLE ANGLE QUOTATION MARK}}
  \gdef^^ab{\guillemetleft}
  \gdef^^ac{$\lnot$}
  \gdef^^ac{$\lnot$}
  \gdef^^ad{\-}
  \gdef^^ad{\-}
  \gdef^^ae{\registeredsymbol}
  \gdef^^ae{\registeredsymbol}
  \gdef^^af{\={}}
  \gdef^^af{\={}}
  %
  %
Line 7858... Line 8164...
  \gdef^^b7{$^.$}
  \gdef^^b7{$^.$}
  \gdef^^b8{\cedilla\ }
  \gdef^^b8{\cedilla\ }
  \gdef^^b9{$^1$}
  \gdef^^b9{$^1$}
  \gdef^^ba{\ordm}
  \gdef^^ba{\ordm}
  %
  %
  \gdef^^bb{\missingcharmsg{RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK}}
  \gdef^^bb{\guilletright}
  \gdef^^bc{$1\over4$}
  \gdef^^bc{$1\over4$}
  \gdef^^bd{$1\over2$}
  \gdef^^bd{$1\over2$}
  \gdef^^be{$3\over4$}
  \gdef^^be{$3\over4$}
  \gdef^^bf{\questiondown}
  \gdef^^bf{\questiondown}
  %
  %
Line 7881... Line 8187...
  \gdef^^cc{\`I}
  \gdef^^cc{\`I}
  \gdef^^cd{\'I}
  \gdef^^cd{\'I}
  \gdef^^ce{\^I}
  \gdef^^ce{\^I}
  \gdef^^cf{\"I}
  \gdef^^cf{\"I}
  %
  %
  \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER ETH}}
  \gdef^^d0{\DH}
  \gdef^^d1{\~N}
  \gdef^^d1{\~N}
  \gdef^^d2{\`O}
  \gdef^^d2{\`O}
  \gdef^^d3{\'O}
  \gdef^^d3{\'O}
  \gdef^^d4{\^O}
  \gdef^^d4{\^O}
  \gdef^^d5{\~O}
  \gdef^^d5{\~O}
Line 7895... Line 8201...
  \gdef^^d9{\`U}
  \gdef^^d9{\`U}
  \gdef^^da{\'U}
  \gdef^^da{\'U}
  \gdef^^db{\^U}
  \gdef^^db{\^U}
  \gdef^^dc{\"U}
  \gdef^^dc{\"U}
  \gdef^^dd{\'Y}
  \gdef^^dd{\'Y}
  \gdef^^de{\missingcharmsg{LATIN CAPITAL LETTER THORN}}
  \gdef^^de{\TH}
  \gdef^^df{\ss}
  \gdef^^df{\ss}
  %
  %
  \gdef^^e0{\`a}
  \gdef^^e0{\`a}
  \gdef^^e1{\'a}
  \gdef^^e1{\'a}
  \gdef^^e2{\^a}
  \gdef^^e2{\^a}
Line 7915... Line 8221...
  \gdef^^ec{\`{\dotless i}}
  \gdef^^ec{\`{\dotless i}}
  \gdef^^ed{\'{\dotless i}}
  \gdef^^ed{\'{\dotless i}}
  \gdef^^ee{\^{\dotless i}}
  \gdef^^ee{\^{\dotless i}}
  \gdef^^ef{\"{\dotless i}}
  \gdef^^ef{\"{\dotless i}}
  %
  %
  \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER ETH}}
  \gdef^^f0{\dh}
  \gdef^^f1{\~n}
  \gdef^^f1{\~n}
  \gdef^^f2{\`o}
  \gdef^^f2{\`o}
  \gdef^^f3{\'o}
  \gdef^^f3{\'o}
  \gdef^^f4{\^o}
  \gdef^^f4{\^o}
  \gdef^^f5{\~o}
  \gdef^^f5{\~o}
Line 7929... Line 8235...
  \gdef^^f9{\`u}
  \gdef^^f9{\`u}
  \gdef^^fa{\'u}
  \gdef^^fa{\'u}
  \gdef^^fb{\^u}
  \gdef^^fb{\^u}
  \gdef^^fc{\"u}
  \gdef^^fc{\"u}
  \gdef^^fd{\'y}
  \gdef^^fd{\'y}
  \gdef^^fe{\missingcharmsg{LATIN SMALL LETTER THORN}}
  \gdef^^fe{\th}
  \gdef^^ff{\"y}
  \gdef^^ff{\"y}
}
}
 
 
% Latin9 (ISO-8859-15) encoding character definitions.
% Latin9 (ISO-8859-15) encoding character definitions.
\def\latninechardefs{%
\def\latninechardefs{%
Line 7951... Line 8257...
}
}
 
 
% Latin2 (ISO-8859-2) character definitions.
% Latin2 (ISO-8859-2) character definitions.
\def\lattwochardefs{%
\def\lattwochardefs{%
  \gdef^^a0{~}
  \gdef^^a0{~}
  \gdef^^a1{\missingcharmsg{LATIN CAPITAL LETTER A WITH OGONEK}}
  \gdef^^a1{\ogonek{A}}
  \gdef^^a2{\u{}}
  \gdef^^a2{\u{}}
  \gdef^^a3{\L}
  \gdef^^a3{\L}
  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
  \gdef^^a5{\v L}
  \gdef^^a5{\v L}
  \gdef^^a6{\'S}
  \gdef^^a6{\'S}
Line 7968... Line 8274...
  \gdef^^ad{\-}
  \gdef^^ad{\-}
  \gdef^^ae{\v Z}
  \gdef^^ae{\v Z}
  \gdef^^af{\dotaccent Z}
  \gdef^^af{\dotaccent Z}
  %
  %
  \gdef^^b0{\textdegree}
  \gdef^^b0{\textdegree}
  \gdef^^b1{\missingcharmsg{LATIN SMALL LETTER A WITH OGONEK}}
  \gdef^^b1{\ogonek{a}}
  \gdef^^b2{\missingcharmsg{OGONEK}}
  \gdef^^b2{\ogonek{ }}
  \gdef^^b3{\l}
  \gdef^^b3{\l}
  \gdef^^b4{\'{}}
  \gdef^^b4{\'{}}
  \gdef^^b5{\v l}
  \gdef^^b5{\v l}
  \gdef^^b6{\'s}
  \gdef^^b6{\'s}
  \gdef^^b7{\v{}}
  \gdef^^b7{\v{}}
Line 7994... Line 8300...
  \gdef^^c5{\'L}
  \gdef^^c5{\'L}
  \gdef^^c6{\'C}
  \gdef^^c6{\'C}
  \gdef^^c7{\cedilla C}
  \gdef^^c7{\cedilla C}
  \gdef^^c8{\v C}
  \gdef^^c8{\v C}
  \gdef^^c9{\'E}
  \gdef^^c9{\'E}
  \gdef^^ca{\missingcharmsg{LATIN CAPITAL LETTER E WITH OGONEK}}
  \gdef^^ca{\ogonek{E}}
  \gdef^^cb{\"E}
  \gdef^^cb{\"E}
  \gdef^^cc{\v E}
  \gdef^^cc{\v E}
  \gdef^^cd{\'I}
  \gdef^^cd{\'I}
  \gdef^^ce{\^I}
  \gdef^^ce{\^I}
  \gdef^^cf{\v D}
  \gdef^^cf{\v D}
  %
  %
  \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER D WITH STROKE}}
  \gdef^^d0{\DH}
  \gdef^^d1{\'N}
  \gdef^^d1{\'N}
  \gdef^^d2{\v N}
  \gdef^^d2{\v N}
  \gdef^^d3{\'O}
  \gdef^^d3{\'O}
  \gdef^^d4{\^O}
  \gdef^^d4{\^O}
  \gdef^^d5{\H O}
  \gdef^^d5{\H O}
Line 8028... Line 8334...
  \gdef^^e5{\'l}
  \gdef^^e5{\'l}
  \gdef^^e6{\'c}
  \gdef^^e6{\'c}
  \gdef^^e7{\cedilla c}
  \gdef^^e7{\cedilla c}
  \gdef^^e8{\v c}
  \gdef^^e8{\v c}
  \gdef^^e9{\'e}
  \gdef^^e9{\'e}
  \gdef^^ea{\missingcharmsg{LATIN SMALL LETTER E WITH OGONEK}}
  \gdef^^ea{\ogonek{e}}
  \gdef^^eb{\"e}
  \gdef^^eb{\"e}
  \gdef^^ec{\v e}
  \gdef^^ec{\v e}
  \gdef^^ed{\'\i}
  \gdef^^ed{\'\i}
  \gdef^^ee{\^\i}
  \gdef^^ee{\^\i}
  \gdef^^ef{\v d}
  \gdef^^ef{\v d}
  %
  %
  \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER D WITH STROKE}}
  \gdef^^f0{\dh}
  \gdef^^f1{\'n}
  \gdef^^f1{\'n}
  \gdef^^f2{\v n}
  \gdef^^f2{\v n}
  \gdef^^f3{\'o}
  \gdef^^f3{\'o}
  \gdef^^f4{\^o}
  \gdef^^f4{\^o}
  \gdef^^f5{\H o}
  \gdef^^f5{\H o}
Line 8208... Line 8514...
  \DeclareUnicodeCharacter{00CC}{\`I}
  \DeclareUnicodeCharacter{00CC}{\`I}
  \DeclareUnicodeCharacter{00CD}{\'I}
  \DeclareUnicodeCharacter{00CD}{\'I}
  \DeclareUnicodeCharacter{00CE}{\^I}
  \DeclareUnicodeCharacter{00CE}{\^I}
  \DeclareUnicodeCharacter{00CF}{\"I}
  \DeclareUnicodeCharacter{00CF}{\"I}
 
 
 
  \DeclareUnicodeCharacter{00D0}{\DH}
  \DeclareUnicodeCharacter{00D1}{\~N}
  \DeclareUnicodeCharacter{00D1}{\~N}
  \DeclareUnicodeCharacter{00D2}{\`O}
  \DeclareUnicodeCharacter{00D2}{\`O}
  \DeclareUnicodeCharacter{00D3}{\'O}
  \DeclareUnicodeCharacter{00D3}{\'O}
  \DeclareUnicodeCharacter{00D4}{\^O}
  \DeclareUnicodeCharacter{00D4}{\^O}
  \DeclareUnicodeCharacter{00D5}{\~O}
  \DeclareUnicodeCharacter{00D5}{\~O}
Line 8220... Line 8527...
  \DeclareUnicodeCharacter{00D9}{\`U}
  \DeclareUnicodeCharacter{00D9}{\`U}
  \DeclareUnicodeCharacter{00DA}{\'U}
  \DeclareUnicodeCharacter{00DA}{\'U}
  \DeclareUnicodeCharacter{00DB}{\^U}
  \DeclareUnicodeCharacter{00DB}{\^U}
  \DeclareUnicodeCharacter{00DC}{\"U}
  \DeclareUnicodeCharacter{00DC}{\"U}
  \DeclareUnicodeCharacter{00DD}{\'Y}
  \DeclareUnicodeCharacter{00DD}{\'Y}
 
  \DeclareUnicodeCharacter{00DE}{\TH}
  \DeclareUnicodeCharacter{00DF}{\ss}
  \DeclareUnicodeCharacter{00DF}{\ss}
 
 
  \DeclareUnicodeCharacter{00E0}{\`a}
  \DeclareUnicodeCharacter{00E0}{\`a}
  \DeclareUnicodeCharacter{00E1}{\'a}
  \DeclareUnicodeCharacter{00E1}{\'a}
  \DeclareUnicodeCharacter{00E2}{\^a}
  \DeclareUnicodeCharacter{00E2}{\^a}
Line 8239... Line 8547...
  \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}
  \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}
  \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}
  \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}
  \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}
  \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}
  \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}
  \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}
 
 
 
  \DeclareUnicodeCharacter{00F0}{\dh}
  \DeclareUnicodeCharacter{00F1}{\~n}
  \DeclareUnicodeCharacter{00F1}{\~n}
  \DeclareUnicodeCharacter{00F2}{\`o}
  \DeclareUnicodeCharacter{00F2}{\`o}
  \DeclareUnicodeCharacter{00F3}{\'o}
  \DeclareUnicodeCharacter{00F3}{\'o}
  \DeclareUnicodeCharacter{00F4}{\^o}
  \DeclareUnicodeCharacter{00F4}{\^o}
  \DeclareUnicodeCharacter{00F5}{\~o}
  \DeclareUnicodeCharacter{00F5}{\~o}
Line 8251... Line 8560...
  \DeclareUnicodeCharacter{00F9}{\`u}
  \DeclareUnicodeCharacter{00F9}{\`u}
  \DeclareUnicodeCharacter{00FA}{\'u}
  \DeclareUnicodeCharacter{00FA}{\'u}
  \DeclareUnicodeCharacter{00FB}{\^u}
  \DeclareUnicodeCharacter{00FB}{\^u}
  \DeclareUnicodeCharacter{00FC}{\"u}
  \DeclareUnicodeCharacter{00FC}{\"u}
  \DeclareUnicodeCharacter{00FD}{\'y}
  \DeclareUnicodeCharacter{00FD}{\'y}
 
  \DeclareUnicodeCharacter{00FE}{\th}
  \DeclareUnicodeCharacter{00FF}{\"y}
  \DeclareUnicodeCharacter{00FF}{\"y}
 
 
  \DeclareUnicodeCharacter{0100}{\=A}
  \DeclareUnicodeCharacter{0100}{\=A}
  \DeclareUnicodeCharacter{0101}{\=a}
  \DeclareUnicodeCharacter{0101}{\=a}
  \DeclareUnicodeCharacter{0102}{\u{A}}
  \DeclareUnicodeCharacter{0102}{\u{A}}
  \DeclareUnicodeCharacter{0103}{\u{a}}
  \DeclareUnicodeCharacter{0103}{\u{a}}
 
  \DeclareUnicodeCharacter{0104}{\ogonek{A}}
 
  \DeclareUnicodeCharacter{0105}{\ogonek{a}}
  \DeclareUnicodeCharacter{0106}{\'C}
  \DeclareUnicodeCharacter{0106}{\'C}
  \DeclareUnicodeCharacter{0107}{\'c}
  \DeclareUnicodeCharacter{0107}{\'c}
  \DeclareUnicodeCharacter{0108}{\^C}
  \DeclareUnicodeCharacter{0108}{\^C}
  \DeclareUnicodeCharacter{0109}{\^c}
  \DeclareUnicodeCharacter{0109}{\^c}
 
  \DeclareUnicodeCharacter{0118}{\ogonek{E}}
 
  \DeclareUnicodeCharacter{0119}{\ogonek{e}}
  \DeclareUnicodeCharacter{010A}{\dotaccent{C}}
  \DeclareUnicodeCharacter{010A}{\dotaccent{C}}
  \DeclareUnicodeCharacter{010B}{\dotaccent{c}}
  \DeclareUnicodeCharacter{010B}{\dotaccent{c}}
  \DeclareUnicodeCharacter{010C}{\v{C}}
  \DeclareUnicodeCharacter{010C}{\v{C}}
  \DeclareUnicodeCharacter{010D}{\v{c}}
  \DeclareUnicodeCharacter{010D}{\v{c}}
  \DeclareUnicodeCharacter{010E}{\v{D}}
  \DeclareUnicodeCharacter{010E}{\v{D}}
Line 8408... Line 8722...
 
 
  \DeclareUnicodeCharacter{0232}{\=Y}
  \DeclareUnicodeCharacter{0232}{\=Y}
  \DeclareUnicodeCharacter{0233}{\=y}
  \DeclareUnicodeCharacter{0233}{\=y}
  \DeclareUnicodeCharacter{0237}{\dotless{j}}
  \DeclareUnicodeCharacter{0237}{\dotless{j}}
 
 
 
  \DeclareUnicodeCharacter{02DB}{\ogonek{ }}
 
 
  \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
  \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
  \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
  \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
  \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}
  \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}
  \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}
  \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}
  \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}
  \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}
Line 8789... Line 9105...
\letterpaper
\letterpaper
 
 
 
 
\message{and turning on texinfo input format.}
\message{and turning on texinfo input format.}
 
 
 
% DEL is a comment character, in case @c does not suffice.
 
\catcode`\^^? = 14
 
 
% Define macros to output various characters with catcode for normal text.
% Define macros to output various characters with catcode for normal text.
\catcode`\"=\other
\catcode`\"=\other
\catcode`\~=\other
\catcode`\~=\other
\catcode`\^=\other
\catcode`\^=\other
\catcode`\_=\other
\catcode`\_=\other
Line 8910... Line 9229...
  @let|=@normalverticalbar
  @let|=@normalverticalbar
  @let<=@normalless
  @let<=@normalless
  @let>=@normalgreater
  @let>=@normalgreater
  @let+=@normalplus
  @let+=@normalplus
  @let$=@normaldollar %$ font-lock fix
  @let$=@normaldollar %$ font-lock fix
 
  @markupsetuplqdefault
 
  @markupsetuprqdefault
  @unsepspaces
  @unsepspaces
}
}
 
 
% Make _ and + \other characters, temporarily.
% Make _ and + \other characters, temporarily.
% This is canceled by @fixbackslash.
% This is canceled by @fixbackslash.
Line 8944... Line 9265...
% These look ok in all fonts, so just make them not special.
% These look ok in all fonts, so just make them not special.
@catcode`@& = @other
@catcode`@& = @other
@catcode`@# = @other
@catcode`@# = @other
@catcode`@% = @other
@catcode`@% = @other
 
 
 
@c Finally, make ` and ' active, so that txicodequoteundirected and
 
@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}.  If we
 
@c don't make ` and ' active, @code will not get them as active chars.
 
@c Do this last of all since we use ` in the previous @catcode assignments.
 
@catcode`@'=@active
 
@catcode`@`=@active
 
@markupsetuplqdefault
 
@markupsetuprqdefault
 
 
@c Local variables:
@c Local variables:
@c eval: (add-hook 'write-file-hooks 'time-stamp)
@c eval: (add-hook 'write-file-hooks 'time-stamp)
@c page-delimiter: "^\\\\message"
@c page-delimiter: "^\\\\message"
@c time-stamp-start: "def\\\\texinfoversion{"
@c time-stamp-start: "def\\\\texinfoversion{"

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.