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{"
|