Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
4fbf9d4a
Commit
4fbf9d4a
authored
Dec 24, 2002
by
Joseph Myers
Committed by
Joseph Myers
Dec 24, 2002
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* doc/include/texinfo.tex: Update to version 2002-11-25.11.
From-SVN: r60478
parent
d6bef02d
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
505 additions
and
325 deletions
+505
-325
gcc/ChangeLog
+4
-0
gcc/doc/include/texinfo.tex
+501
-325
No files found.
gcc/ChangeLog
View file @
4fbf9d4a
2002
-
12
-
24
Joseph
S
.
Myers
<
jsm
@polyomino
.
org
.
uk
>
*
doc
/
include
/
texinfo
.
tex
:
Update
to
version
2002
-
11
-
25
.
11
.
2002
-
12
-
24
Nathan
Sidwell
<
nathan
@codesourcery
.
com
>
2002
-
12
-
24
Nathan
Sidwell
<
nathan
@codesourcery
.
com
>
*
configure
.
in
(
enable
-
coverage
)
:
Add
SELF_COVERAGE
.
*
configure
.
in
(
enable
-
coverage
)
:
Add
SELF_COVERAGE
.
...
...
gcc/doc/include/texinfo.tex
View file @
4fbf9d4a
...
@@ -3,10 +3,10 @@
...
@@ -3,10 +3,10 @@
% 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
{
2002-
03-01.06
}
\def\texinfoversion
{
2002-
11-25.11
}
%
%
% Copyright (C) 1985,
86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99
,
% Copyright (C) 1985,
1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995
,
%
2000, 01,
02 Free Software Foundation, Inc.
%
1996, 1997, 1998, 1999, 2000, 2001, 20
02 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
...
@@ -36,12 +36,11 @@
...
@@ -36,12 +36,11 @@
% (and all CTAN mirrors, see http://www.ctan.org),
% (and all CTAN mirrors, see http://www.ctan.org),
% and /home/gd/gnu/doc/texinfo.tex on the GNU machines.
% and /home/gd/gnu/doc/texinfo.tex on the GNU machines.
%
%
% The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
%
% The texinfo.tex in any given Texinfo distribution could well be out
% The texinfo.tex in any given Texinfo distribution could well be out
% of date, so if that's what you're using, please check.
% of date, so if that's what you're using, please check.
%
%
% Texinfo has a small home page at http://texinfo.org/ and also
% http://www.gnu.org/software/texinfo.
%
% Send bug reports to bug-texinfo@gnu.org. Please include including a
% Send bug reports to bug-texinfo@gnu.org. Please include including a
% complete document in each bug report with which we can reproduce the
% complete document in each bug report with which we can reproduce the
% problem. Patches are, of course, greatly appreciated.
% problem. Patches are, of course, greatly appreciated.
...
@@ -53,7 +52,7 @@
...
@@ -53,7 +52,7 @@
% texindex foo.??
% texindex foo.??
% tex foo.texi
% tex foo.texi
% tex foo.texi
% tex foo.texi
% dvips foo.dvi -o
# or whatever, to process the dvi file
; this makes foo.ps.
% dvips foo.dvi -o
# or whatever
; this makes foo.ps.
% The extra TeX runs get the cross-reference information correct.
% The extra TeX runs get the cross-reference information correct.
% Sometimes one run after texindex suffices, and sometimes you need more
% Sometimes one run after texindex suffices, and sometimes you need more
% than two; texi2dvi does it as many times as necessary.
% than two; texi2dvi does it as many times as necessary.
...
@@ -69,6 +68,13 @@
...
@@ -69,6 +68,13 @@
\everyjob
{
\message
{
[Texinfo version
\texinfoversion
]
}
%
\everyjob
{
\message
{
[Texinfo version
\texinfoversion
]
}
%
\catcode
`+=
\active
\catcode
`
\_
=
\active
}
\catcode
`+=
\active
\catcode
`
\_
=
\active
}
\message
{
Basics,
}
\chardef\other
=12
% We never want plain's outer \+ definition in Texinfo.
% For @tex, we can use \tabalign.
\let\+
=
\relax
% Save some parts of plain tex whose names we will redefine.
% Save some parts of plain tex whose names we will redefine.
\let\ptexb
=
\b
\let\ptexb
=
\b
\let\ptexbullet
=
\bullet
\let\ptexbullet
=
\bullet
...
@@ -79,19 +85,16 @@
...
@@ -79,19 +85,16 @@
\let\ptexend
=
\end
\let\ptexend
=
\end
\let\ptexequiv
=
\equiv
\let\ptexequiv
=
\equiv
\let\ptexexclam
=
\!
\let\ptexexclam
=
\!
\let\ptexgtr
=>
\let\ptexhat
=
^
\let\ptexi
=
\i
\let\ptexi
=
\i
\let\ptexlbrace
=
\{
\let\ptexlbrace
=
\{
\let\ptexless
=<
\let\ptexplus
=+
\let\ptexrbrace
=
\}
\let\ptexrbrace
=
\}
\let\ptexstar
=
\*
\let\ptexstar
=
\*
\let\ptext
=
\t
\let\ptext
=
\t
% We never want plain's outer \+ definition in Texinfo.
% For @tex, we can use \tabalign.
\let\+
=
\relax
\message
{
Basics,
}
\chardef\other
=12
% 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
...
@@ -142,36 +145,48 @@
...
@@ -142,36 +145,48 @@
%
%
\def\gobble
#1
{}
\def\gobble
#1
{}
% True if #1 is the empty string, i.e., called like `\ifempty{}'.
%
\def\ifempty
#1
{
\ifemptyx
#1
\emptymarkA\emptymarkB
}
%
\def\ifemptyx
#1#2
\emptymarkB
{
\ifx
#1
\emptymarkA
}
%
% Hyphenation fixes.
\hyphenation
{
ap-pen-dix
}
\hyphenation
{
ap-pen-dix
}
\hyphenation
{
mini-buf-fer mini-buf-fers
}
\hyphenation
{
mini-buf-fer mini-buf-fers
}
\hyphenation
{
eshell
}
\hyphenation
{
eshell
}
\hyphenation
{
white-space
}
\hyphenation
{
white-space
}
% Margin to add to right of even pages, to left of odd pages.
% Margin to add to right of even pages, to left of odd pages.
\newdimen
\bindingoffset
\newdimen\bindingoffset
\newdimen
\normaloffset
\newdimen\normaloffset
\newdimen\pagewidth
\newdimen\pageheight
\newdimen\pagewidth
\newdimen\pageheight
% Sometimes it is convenient to have everything in the transcript file
% Sometimes it is convenient to have everything in the transcript file
% and nothing on the terminal. We don't just call \tracingall here,
% and nothing on the terminal. We don't just call \tracingall here,
% since that produces some useless output on the terminal.
% since that produces some useless output on the terminal. We also make
% some effort to order the tracing commands to reduce output in the log
% file; cf. trace.sty in LaTeX.
%
%
\def\gloggingall
{
\begingroup
\globaldefs
= 1
\loggingall
\endgroup
}
%
\def\gloggingall
{
\begingroup
\globaldefs
= 1
\loggingall
\endgroup
}
%
\ifx\eTeXversion\undefined
\def\loggingall
{
%
\def\loggingall
{
\tracingcommands
2
\tracingstats
2
\tracingstats
2
\tracingpages
1
\tracingoutput
1
\tracinglostchars
1
\tracingpages
1
\tracingmacros
2
\tracingparagraphs
1
\tracingrestores
1
\tracinglostchars
2
% 2 gives us more in etex
\showboxbreadth\maxdimen\showboxdepth\maxdimen
\tracingparagraphs
1
}
%
\tracingoutput
1
\else
\tracingmacros
2
\def\loggingall
{
\tracingcommands
3
\tracingstats
2
\tracingrestores
1
\tracingpages
1
\tracingoutput
1
\tracinglostchars
1
\showboxbreadth\maxdimen
\showboxdepth\maxdimen
\tracingmacros
2
\tracingparagraphs
1
\tracingrestores
1
\ifx\eTeXversion\undefined\else
% etex gives us more logging
\tracingscantokens
1
\tracingassigns
1
\tracingifs
1
\tracingscantokens
1
\tracinggroups
1
\tracingnesting
2
\tracingifs
1
\showboxbreadth\maxdimen\showboxdepth\maxdimen
\tracinggroups
1
\tracingnesting
2
\tracingassigns
1
\fi
\tracingcommands
3
% 3 gives us more in etex
\errorcontextlines\maxdimen
}
%
}
%
\fi
% add check for \lastpenalty to plain's definitions. If the last thing
% add check for \lastpenalty to plain's definitions. If the last thing
% we did was a \nobreak, we don't want to insert more space.
% we did was a \nobreak, we don't want to insert more space.
...
@@ -436,17 +451,6 @@
...
@@ -436,17 +451,6 @@
}
}
% Single-spacing is done by various environments (specifically, in
% \nonfillstart and \quotations).
\newskip\singlespaceskip
\singlespaceskip
= 12.5pt
\def\singlespace
{
%
% Why was this kern here? It messes up equalizing space above and below
% environments. --karl, 6may93
%{\advance \baselineskip by -\singlespaceskip
%\kern \baselineskip}%
\setleading\singlespaceskip
}
%% Simple single-character @ commands
%% Simple single-character @ commands
% @@ prints an @
% @@ prints an @
...
@@ -841,12 +845,6 @@ where each line of input produces a line of output.}
...
@@ -841,12 +845,6 @@ where each line of input produces a line of output.}
% to set catcodes according to plain TeX first, to allow for subscripts,
% to set catcodes according to plain TeX first, to allow for subscripts,
% superscripts, special math chars, etc.
% superscripts, special math chars, etc.
%
%
% @math does not do math typesetting in section titles, index
% entries, and other such contexts where the catcodes are set before
% @math gets a chance to work. This could perhaps be fixed, but for now
% at least we can have real math in the main text, where it's needed most.
%
%
\let\implicitmath
=
$
%$ font-lock fix
\let\implicitmath
=
$
%$ font-lock fix
%
%
% One complication: _ usually means subscripts, but it could also mean
% One complication: _ usually means subscripts, but it could also mean
...
@@ -857,12 +855,42 @@ where each line of input produces a line of output.}
...
@@ -857,12 +855,42 @@ where each line of input produces a line of output.}
{
\catcode
95
=
\active
% 95 = _
{
\catcode
95
=
\active
% 95 = _
\gdef\mathunderscore
{
%
\gdef\mathunderscore
{
%
\catcode
95
=
\active
\catcode
95
=
\active
\def
_{
\ifnum\fam
=
\slfam\_\else\sb\fi
}
%
\def
_{
\ifnum\fam
=
\slfam
\_\else\sb\fi
}
%
}}
}}
%
%
\def\math
{
\tex\mathcode
`
\_
=
"
8000
\mathunderscore
\implicitmath\finishmath
}
% Another complication: we want \\ (and @\) to output a \ character.
% FYI, plain.tex uses \\ as a temporary control sequence (why?), but
% this is not advertised and we don't care. Texinfo does not
% otherwise define @\.
%
% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
\def\mathbackslash
{
\ifnum\fam
=
\ttfam
\mathchar
"
075
C
\else\backslash
\fi
}
%
\def\math
{
%
\tex
\mathcode
`
\_
=
"
8000
\mathunderscore
\let\\
=
\mathbackslash
\mathactive
\implicitmath\finishmath
}
\def\finishmath
#
1
{
#
1
\implicitmath\Etex
}
\def\finishmath
#
1
{
#
1
\implicitmath\Etex
}
% Some active characters (such as <) are spaced differently in math.
% We have to reset their definitions in case the @math was an
% argument to a command which set the catcodes (such as @item or @section).
%
{
\catcode
`
^
=
\active
\catcode
`<
=
\active
\catcode
`>
=
\active
\catcode
`
+
=
\active
\gdef\mathactive
{
%
\let
^
=
\ptexhat
\let
<
=
\ptexless
\let
>
=
\ptexgtr
\let
+
=
\ptexplus
}
}
% @bullet and @minus need the same treatment as @math, just above.
% @bullet and @minus need the same treatment as @math, just above.
\def\bullet
{
\implicitmath\ptexbullet\implicitmath
}
\def\bullet
{
\implicitmath\ptexbullet\implicitmath
}
\def\minus
{
\implicitmath
-
\implicitmath
}
\def\minus
{
\implicitmath
-
\implicitmath
}
...
@@ -976,40 +1004,39 @@ where each line of input produces a line of output.}
...
@@ -976,40 +1004,39 @@ where each line of input produces a line of output.}
\openin
1
\jobname
.toc
\openin
1
\jobname
.toc
\ifeof
1
\else\begingroup
\ifeof
1
\else\begingroup
\closein
1
\closein
1
\indexnofonts
\def\tt
{}
\let\_
=
\normalunderscore
% Thanh's hack / proper braces in bookmarks
% Thanh's hack / proper braces in bookmarks
\edef\mylbrace
{
\iftrue
\string
{
\else
}
\fi
}
\let\{
=
\mylbrace
\edef\mylbrace
{
\iftrue
\string
{
\else
}
\fi
}
\let\{
=
\mylbrace
\edef\myrbrace
{
\iffalse
{
\else\string
}
\fi
}
\let\}
=
\myrbrace
\edef\myrbrace
{
\iffalse
{
\else\string
}
\fi
}
\let\}
=
\myrbrace
%
%
\def\chapentry
##
1
##
2
##
3
{}
\def\chapentry
##
1
##
2
##
3
{}
\let\appendixentry
=
\chapentry
\def\unnumbchapentry
##
1
##
2
{}
\def\secentry
##
1
##
2
##
3
##
4
{
\advancenumber
{
chap##
2
}}
\def\secentry
##
1
##
2
##
3
##
4
{
\advancenumber
{
chap##
2
}}
\def\unnumbsecentry
##
1
##
2
{}
\def\subsecentry
##
1
##
2
##
3
##
4
##
5
{
\advancenumber
{
sec##
2
.##
3
}}
\def\subsecentry
##
1
##
2
##
3
##
4
##
5
{
\advancenumber
{
sec##
2
.##
3
}}
\def\unnumbsubsecentry
##
1
##
2
{}
\def\subsubsecentry
##
1
##
2
##
3
##
4
##
5
##
6
{
\advancenumber
{
subsec##
2
.##
3
.##
4
}}
\def\subsubsecentry
##
1
##
2
##
3
##
4
##
5
##
6
{
\advancenumber
{
subsec##
2
.##
3
.##
4
}}
\def\unnumbsubsubsecentry
##
1
##
2
{}
\let\appendixentry
=
\chapentry
\let\unnumbchapentry
=
\chapentry
\let\unnumbsecentry
=
\secentry
\let\unnumbsubsecentry
=
\subsecentry
\let\unnumbsubsubsecentry
=
\subsubsecentry
\input
\jobname
.toc
\input
\jobname
.toc
\def\chapentry
##
1
##
2
##
3
{
%
\def\chapentry
##
1
##
2
##
3
{
%
\pdfoutline
goto name
{
\pdfmkpgn
{
##
3
}}
count
-
\expnumber
{
chap##
2
}{
##
1
}}
\pdfoutline
goto name
{
\pdfmkpgn
{
##
3
}}
count
-
\expnumber
{
chap##
2
}{
##
1
}}
\let\appendixentry
=
\chapentry
\def\unnumbchapentry
##
1
##
2
{
%
\pdfoutline
goto name
{
\pdfmkpgn
{
##
2
}}{
##
1
}}
\def\secentry
##
1
##
2
##
3
##
4
{
%
\def\secentry
##
1
##
2
##
3
##
4
{
%
\pdfoutline
goto name
{
\pdfmkpgn
{
##
4
}}
count
-
\expnumber
{
sec##
2
.##
3
}{
##
1
}}
\pdfoutline
goto name
{
\pdfmkpgn
{
##
4
}}
count
-
\expnumber
{
sec##
2
.##
3
}{
##
1
}}
\def\unnumbsecentry
##
1
##
2
{
%
\pdfoutline
goto name
{
\pdfmkpgn
{
##
2
}}{
##
1
}}
\def\subsecentry
##
1
##
2
##
3
##
4
##
5
{
%
\def\subsecentry
##
1
##
2
##
3
##
4
##
5
{
%
\pdfoutline
goto name
{
\pdfmkpgn
{
##
5
}}
count
-
\expnumber
{
subsec##
2
.##
3
.##
4
}{
##
1
}}
\pdfoutline
goto name
{
\pdfmkpgn
{
##
5
}}
count
-
\expnumber
{
subsec##
2
.##
3
.##
4
}{
##
1
}}
\def\unnumbsubsecentry
##
1
##
2
{
%
\pdfoutline
goto name
{
\pdfmkpgn
{
##
2
}}{
##
1
}}
\def\subsubsecentry
##
1
##
2
##
3
##
4
##
5
##
6
{
%
\def\subsubsecentry
##
1
##
2
##
3
##
4
##
5
##
6
{
%
\pdfoutline
goto name
{
\pdfmkpgn
{
##
6
}}{
##
1
}}
\pdfoutline
goto name
{
\pdfmkpgn
{
##
6
}}{
##
1
}}
\def\unnumbsubsubsecentry
##
1
##
2
{
%
\let\appendixentry
=
\chapentry
\pdfoutline
goto name
{
\pdfmkpgn
{
##
2
}}{
##
1
}}
\let\unnumbchapentry
=
\chapentry
\let\unnumbsecentry
=
\secentry
\let\unnumbsubsecentry
=
\subsecentry
\let\unnumbsubsubsecentry
=
\subsubsecentry
%
% Make special characters normal for writing to the pdf file.
%
\indexnofonts
\let\tt
=
\relax
\turnoffactive
\input
\jobname
.toc
\input
\jobname
.toc
\endgroup\fi
\endgroup\fi
}}
}}
...
@@ -1159,7 +1186,7 @@ where each line of input produces a line of output.}
...
@@ -1159,7 +1186,7 @@ where each line of input produces a line of output.}
\newcount\mainmagstep
\newcount\mainmagstep
\ifx\bigger\relax
\ifx\bigger\relax
% not really supported.
% not really supported.
\
let\
mainmagstep
=
\magstep
1
\mainmagstep
=
\magstep
1
\setfont\textrm\rmshape
{
12
}{
1000
}
\setfont\textrm\rmshape
{
12
}{
1000
}
\setfont\texttt\ttshape
{
12
}{
1000
}
\setfont\texttt\ttshape
{
12
}{
1000
}
\else
\else
...
@@ -1220,6 +1247,7 @@ where each line of input produces a line of output.}
...
@@ -1220,6 +1247,7 @@ where each line of input produces a line of output.}
\font\titlei
=
cmmi
12
scaled
\magstep
3
\font\titlei
=
cmmi
12
scaled
\magstep
3
\font\titlesy
=
cmsy
10
scaled
\magstep
4
\font\titlesy
=
cmsy
10
scaled
\magstep
4
\def\authorrm
{
\secrm
}
\def\authorrm
{
\secrm
}
\def\authortt
{
\sectt
}
% Chapter (and unnumbered) fonts (17.28pt).
% Chapter (and unnumbered) fonts (17.28pt).
\setfont\chaprm\rmbshape
{
12
}{
\magstep
2
}
\setfont\chaprm\rmbshape
{
12
}{
\magstep
2
}
...
@@ -1334,6 +1362,7 @@ where each line of input produces a line of output.}
...
@@ -1334,6 +1362,7 @@ where each line of input produces a line of output.}
\setfont\shortcontrm\rmshape
{
12
}{
1000
}
\setfont\shortcontrm\rmshape
{
12
}{
1000
}
\setfont\shortcontbf\bxshape
{
12
}{
1000
}
\setfont\shortcontbf\bxshape
{
12
}{
1000
}
\setfont\shortcontsl\slshape
{
12
}{
1000
}
\setfont\shortcontsl\slshape
{
12
}{
1000
}
\setfont\shortconttt\ttshape
{
12
}{
1000
}
%% 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
...
@@ -1341,8 +1370,8 @@ where each line of input produces a line of output.}
...
@@ -1341,8 +1370,8 @@ where each line of input produces a line of output.}
% \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.
\def\smartitalicx
{
\ifx\next
,
\else\ifx\next
-
\else\ifx\next
.
\else\/\fi\fi\fi
}
\def\smartitalicx
{
\ifx\next
,
\else\ifx\next
-
\else\ifx\next
.
\else\/\fi\fi\fi
}
\def\smartslanted
#
1
{{
\sl
#
1
}
\futurelet\next\smartitalicx
}
\def\smartslanted
#
1
{{
\
ifusingtt\ttsl\
sl
#
1
}
\futurelet\next\smartitalicx
}
\def\smartitalic
#
1
{{
\it
#
1
}
\futurelet\next\smartitalicx
}
\def\smartitalic
#
1
{{
\i
fusingtt\ttsl\i
t
#
1
}
\futurelet\next\smartitalicx
}
\let\i
=
\smartitalic
\let\i
=
\smartitalic
\let\var
=
\smartslanted
\let\var
=
\smartslanted
...
@@ -1431,11 +1460,19 @@ where each line of input produces a line of output.}
...
@@ -1431,11 +1460,19 @@ where each line of input produces a line of output.}
\def\realdash
{
-
}
\def\realdash
{
-
}
\def\codedash
{
-
\discretionary
{}{}{}}
\def\codedash
{
-
\discretionary
{}{}{}}
\def\codeunder
{
\ifusingtt
{
\normalunderscore\discretionary
{}{}{}}{
\_
}}
\def\codeunder
{
%
% this is all so @math{@code{var_name}+1} can work. In math mode, _
% is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
% will therefore expand the active definition of _, which is us
% (inside @code that is), therefore an endless loop.
\ifusingtt
{
\ifmmode
\mathchar
"
075
F
% class 0=ordinary, family 7=ttfam, pos 0x5F=_.
\else\normalunderscore
\fi
\discretionary
{}{}{}}
%
{
\_
}
%
}
\def\codex
#
1
{
\tclose
{
#
1
}
\endgroup
}
\def\codex
#
1
{
\tclose
{
#
1
}
\endgroup
}
%\let\exp=\tclose %Was temporary
% @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.
...
@@ -1573,7 +1610,8 @@ where each line of input produces a line of output.}
...
@@ -1573,7 +1610,8 @@ where each line of input produces a line of output.}
\let\subtitlerm
=
\tenrm
\let\subtitlerm
=
\tenrm
\def\subtitlefont
{
\subtitlerm
\normalbaselineskip
=
13
pt
\normalbaselines
}
%
\def\subtitlefont
{
\subtitlerm
\normalbaselineskip
=
13
pt
\normalbaselines
}
%
%
%
\def\authorfont
{
\authorrm
\normalbaselineskip
=
16
pt
\normalbaselines
}
%
\def\authorfont
{
\authorrm
\normalbaselineskip
=
16
pt
\normalbaselines
\let\tt
=
\authortt
}
%
%
%
% Leave some space at the very top of the page.
% Leave some space at the very top of the page.
\vglue\titlepagetopglue
\vglue\titlepagetopglue
...
@@ -1637,8 +1675,6 @@ where each line of input produces a line of output.}
...
@@ -1637,8 +1675,6 @@ where each line of input produces a line of output.}
\global\let\contents
=
\relax
\global\let\contents
=
\relax
\global\let\shortcontents
=
\relax
\global\let\shortcontents
=
\relax
\fi
\fi
%
\ifpdf
\pdfmakepagedesttrue
\fi
}
}
\def\finishtitlepage
{
%
\def\finishtitlepage
{
%
...
@@ -1856,10 +1892,18 @@ where each line of input produces a line of output.}
...
@@ -1856,10 +1892,18 @@ where each line of input produces a line of output.}
% \parskip glue -- logically it's part of the @item we just started.
% \parskip glue -- logically it's part of the @item we just started.
\nobreak
\vskip
-
\parskip
\nobreak
\vskip
-
\parskip
%
%
% Stop a page break at the \parskip glue coming up. Unfortunately
% Stop a page break at the \parskip glue coming up.
(
Unfortunately
% we can't prevent a possible page break at the following
% we can't prevent a possible page break at the following
% \baselineskip glue.
% \baselineskip glue.) However, if what follows is an environment
\nobreak
% such as @example, there will be no \parskip glue; then
% the negative vskip we just would cause the example and the item to
% crash together. So we use this bizarre value of 10001 as a signal
% to \aboveenvbreak to insert \parskip glue after all.
% (Possibly there are other commands that could be followed by
% @example which need the same treatment, but not section titles; or
% maybe section titles are the only special case and they should be
% penalty 10001...)
\penalty
10001
\endgroup
\endgroup
\itemxneedsnegativevskipfalse
\itemxneedsnegativevskipfalse
\else
\else
...
@@ -2396,20 +2440,20 @@ width0pt\relax} \fi
...
@@ -2396,20 +2440,20 @@ width0pt\relax} \fi
\let\item
=
\relax
\let\item
=
\relax
}
}
% Ignore @ignore
... @end ignor
e.
% Ignore @ignore
, @ifhtml, @ifinfo, and the lik
e.
%
%
\def\ignore
{
\doignore
{
ignore
}}
\def\direntry
{
\doignore
{
direntry
}}
\def\documentdescriptionword
{
documentdescription
}
% Also ignore @ifinfo, @ifhtml, @ifnottex, @html, @menu,
\def\documentdescription
{
\doignore
{
documentdescription
}}
% @documentdescription, and @direntry text.
\def\html
{
\doignore
{
html
}}
%
\def\ifinfo
{
\doignore
{
ifinfo
}}
\def\ifhtml
{
\doignore
{
ifhtml
}}
\def\ifhtml
{
\doignore
{
ifhtml
}}
\def\ifinfo
{
\doignore
{
ifinfo
}}
\def\ifnottex
{
\doignore
{
ifnottex
}}
\def\ifnottex
{
\doignore
{
ifnottex
}}
\def\html
{
\doignore
{
html
}}
\def\ifplaintext
{
\doignore
{
ifplaintext
}}
\def\ifxml
{
\doignore
{
ifxml
}}
\def\ignore
{
\doignore
{
ignore
}}
\def\menu
{
\doignore
{
menu
}}
\def\menu
{
\doignore
{
menu
}}
\def\documentdescription
{
\doignore
{
documentdescription
}}
\def\xml
{
\doignore
{
xml
}}
\def\direntry
{
\doignore
{
direntry
}}
% @dircategory CATEGORY -- specify a category of the dir file
% @dircategory CATEGORY -- specify a category of the dir file
% which this file should belong to. Ignore this in TeX.
% which this file should belong to. Ignore this in TeX.
...
@@ -2436,14 +2480,21 @@ width0pt\relax} \fi
...
@@ -2436,14 +2480,21 @@ width0pt\relax} \fi
% We must not have @c interpreted as a control sequence.
% We must not have @c interpreted as a control sequence.
\catcode
`
\@
=
12
\catcode
`
\@
=
12
%
%
\def\ignoreword
{
#
1
}
%
\ifx\ignoreword\documentdescriptionword
% The c kludge breaks documentdescription, since
% `documentdescription' contains a `c'. Means not everything will
% be ignored inside @documentdescription, but oh well...
\else
% Make the letter c a comment character so that the rest of the line
% Make the letter c a comment character so that the rest of the line
% will be ignored. This way, the document can have (for example)
% will be ignored. This way, the document can have (for example)
% @c @end ifinfo
% @c @end ifinfo
% and the @end ifinfo will be properly ignored.
% and the @end ifinfo will be properly ignored.
% (We've just changed @ to catcode 12.)
% (We've just changed @ to catcode 12.)
\catcode
`
\c
=
14
\catcode
`
\c
=
14
\fi
%
%
% And now expand th
at command
.
% And now expand th
e command defined above
.
\doignoretext
\doignoretext
}
}
...
@@ -2484,7 +2535,7 @@ width0pt\relax} \fi
...
@@ -2484,7 +2535,7 @@ width0pt\relax} \fi
% We must actually expand the ignored text to look for the @end
% We must actually expand the ignored text to look for the @end
% command, so that nested ignore constructs work. Thus, we put the
% command, so that nested ignore constructs work. Thus, we put the
% text into a \vbox and then do nothing with the result. To minimize
% text into a \vbox and then do nothing with the result. To minimize
% the chan
g
e of memory overflow, we follow the approach outlined on
% the chan
c
e of memory overflow, we follow the approach outlined on
% page 401 of the TeXbook: make the current font be a dummy font.
% page 401 of the TeXbook: make the current font be a dummy font.
%
%
\setbox
0
=
\vbox\bgroup
\setbox
0
=
\vbox\bgroup
...
@@ -2536,7 +2587,7 @@ width0pt\relax} \fi
...
@@ -2536,7 +2587,7 @@ width0pt\relax} \fi
% Do minimal line-breaking.
% Do minimal line-breaking.
\pretolerance
=
10000
\pretolerance
=
10000
%
%
% Do not execute instructions in @tex
% Do not execute instructions in @tex
.
\def\tex
{
\doignore
{
tex
}}
%
\def\tex
{
\doignore
{
tex
}}
%
% Do not execute macro definitions.
% Do not execute macro definitions.
% `c' is a comment character, so the word `macro' will get cut off.
% `c' is a comment character, so the word `macro' will get cut off.
...
@@ -2634,19 +2685,21 @@ width0pt\relax} \fi
...
@@ -2634,19 +2685,21 @@ width0pt\relax} \fi
\def\ifclearfail
{
\nestedignore
{
ifclear
}}
\def\ifclearfail
{
\nestedignore
{
ifclear
}}
\defineunmatchedend
{
ifclear
}
\defineunmatchedend
{
ifclear
}
% @iftex, @ifnothtml, @ifnotinfo
always succeed; we read the text
% @iftex, @ifnothtml, @ifnotinfo
, @ifnotplaintext always succeed; we
%
following, through the first @end iftex (etc.). Make `@end iftex'
%
read the text following, through the first @end iftex (etc.). Make
% (etc.) valid only after an @iftex.
%
`@end iftex'
(etc.) valid only after an @iftex.
%
%
\def\iftex
{
\conditionalsucceed
{
iftex
}}
\def\iftex
{
\conditionalsucceed
{
iftex
}}
\def\ifnothtml
{
\conditionalsucceed
{
ifnothtml
}}
\def\ifnothtml
{
\conditionalsucceed
{
ifnothtml
}}
\def\ifnotinfo
{
\conditionalsucceed
{
ifnotinfo
}}
\def\ifnotinfo
{
\conditionalsucceed
{
ifnotinfo
}}
\def\ifnotplaintext
{
\conditionalsucceed
{
ifnotplaintext
}}
\defineunmatchedend
{
iftex
}
\defineunmatchedend
{
iftex
}
\defineunmatchedend
{
ifnothtml
}
\defineunmatchedend
{
ifnothtml
}
\defineunmatchedend
{
ifnotinfo
}
\defineunmatchedend
{
ifnotinfo
}
\defineunmatchedend
{
ifnotplaintext
}
% We can't just want to start a group at @iftex (
for example) and end i
t
% We can't just want to start a group at @iftex (
etc.) and end it a
t
%
at
@end iftex, since then @set commands inside the conditional have no
% @end iftex, since then @set commands inside the conditional have no
% effect (they'd get reverted at the end of the group). So we must
% effect (they'd get reverted at the end of the group). So we must
% define \Eiftex to redefine itself to be its previous value. (We can't
% define \Eiftex to redefine itself to be its previous value. (We can't
% just define it to fail again with an ``unmatched end'' error, since
% just define it to fail again with an ``unmatched end'' error, since
...
@@ -2861,7 +2914,7 @@ width0pt\relax} \fi
...
@@ -2861,7 +2914,7 @@ width0pt\relax} \fi
% If an index command is used in an @example environment, any spaces
% If an index command is used in an @example environment, any spaces
% therein should become regular spaces in the raw index file, not the
% therein should become regular spaces in the raw index file, not the
% expansion of \tie (\
\
leavevmode \penalty \@M \ ).
% expansion of \tie (\leavevmode \penalty \@M \ ).
{
\obeyspaces
{
\obeyspaces
\gdef\unsepspaces
{
\obeyspaces\let
=
\space
}}
\gdef\unsepspaces
{
\obeyspaces\let
=
\space
}}
...
@@ -3524,13 +3577,18 @@ width0pt\relax} \fi
...
@@ -3524,13 +3577,18 @@ width0pt\relax} \fi
\global\let\subsubsection
=
\numberedsubsubsec
\global\let\subsubsection
=
\numberedsubsubsec
}
}
% we use \chapno to avoid indenting back
\def\appendixbox
#
1
{
%
\setbox
0
=
\hbox
{
\putwordAppendix
{}
\the\chapno
}
%
\hbox
to
\wd
0
{
#
1
\hss
}}
\outer\def\appendix
{
\parsearg\appendixyyy
}
\outer\def\appendix
{
\parsearg\appendixyyy
}
\def\appendixyyy
#
1
{
\apphead
0
{
#
1
}}
% normally apphead0 calls appendixzzz
\def\appendixyyy
#
1
{
\apphead
0
{
#
1
}}
% normally apphead0 calls appendixzzz
\def\appendixzzz
#
1
{
%
\def\appendixzzz
#
1
{
%
\secno
=
0
\subsecno
=
0
\subsubsecno
=
0
\secno
=
0
\subsecno
=
0
\subsubsecno
=
0
\global\advance
\appendixno
by
1
\global\advance
\appendixno
by
1
\message
{
\putwordAppendix\space
\appendixletter
}
%
\message
{
\putwordAppendix\space
\appendixletter
}
%
\chapmacro
{
#
1
}{
\
putwordAppendix
{}
\appendixletter
}
%
\chapmacro
{
#
1
}{
\
appendixbox
{
\putwordAppendix
{}
\appendixletter
}
}
%
\gdef\thissection
{
#
1
}
%
\gdef\thissection
{
#
1
}
%
\gdef\thischaptername
{
#
1
}
%
\gdef\thischaptername
{
#
1
}
%
\xdef\thischapter
{
\putwordAppendix
{}
\appendixletter
:
\noexpand\thischaptername
}
%
\xdef\thischapter
{
\putwordAppendix
{}
\appendixletter
:
\noexpand\thischaptername
}
%
...
@@ -3572,7 +3630,7 @@ width0pt\relax} \fi
...
@@ -3572,7 +3630,7 @@ width0pt\relax} \fi
\unnumbchapmacro
{
#
1
}
%
\unnumbchapmacro
{
#
1
}
%
\gdef\thischapter
{
#
1
}
\gdef\thissection
{
#
1
}
%
\gdef\thischapter
{
#
1
}
\gdef\thissection
{
#
1
}
%
\toks
0
=
{
#
1
}
%
\toks
0
=
{
#
1
}
%
\edef\temp
{
\noexpand\writetocentry
{
\realbackslash
unnumbchapentry
{
\the\toks
0
}}}
%
\edef\temp
{
\noexpand\writetocentry
{
\realbackslash
unnumbchapentry
{
\the\toks
0
}
{
\the\chapno
}
}}
%
\temp
\temp
\unnumbnoderef
\unnumbnoderef
\global\let\section
=
\unnumberedsec
\global\let\section
=
\unnumberedsec
...
@@ -3613,7 +3671,8 @@ width0pt\relax} \fi
...
@@ -3613,7 +3671,8 @@ width0pt\relax} \fi
\def\unnumberedseczzz
#
1
{
%
\def\unnumberedseczzz
#
1
{
%
\plainsecheading
{
#
1
}
\gdef\thissection
{
#
1
}
%
\plainsecheading
{
#
1
}
\gdef\thissection
{
#
1
}
%
\toks
0
=
{
#
1
}
%
\toks
0
=
{
#
1
}
%
\edef\temp
{
\noexpand\writetocentry
{
\realbackslash
unnumbsecentry
{
\the\toks
0
}}}
%
\edef\temp
{
\noexpand\writetocentry
{
\realbackslash
unnumbsecentry
%
{
\the\toks
0
}{
\the\chapno
}{
\the\secno
}}}
%
\temp
\temp
\unnumbnoderef
\unnumbnoderef
\nobreak
\nobreak
...
@@ -3652,7 +3711,7 @@ width0pt\relax} \fi
...
@@ -3652,7 +3711,7 @@ width0pt\relax} \fi
\plainsubsecheading
{
#
1
}
\gdef\thissection
{
#
1
}
%
\plainsubsecheading
{
#
1
}
\gdef\thissection
{
#
1
}
%
\toks
0
=
{
#
1
}
%
\toks
0
=
{
#
1
}
%
\edef\temp
{
\noexpand\writetocentry
{
\realbackslash
unnumbsubsecentry
%
\edef\temp
{
\noexpand\writetocentry
{
\realbackslash
unnumbsubsecentry
%
{
\the\toks
0
}}}
%
{
\the\toks
0
}{
\the\chapno
}{
\the\secno
}{
\the\subsecno
}}}
%
\temp
\temp
\unnumbnoderef
\unnumbnoderef
\nobreak
\nobreak
...
@@ -3693,7 +3752,7 @@ width0pt\relax} \fi
...
@@ -3693,7 +3752,7 @@ width0pt\relax} \fi
\plainsubsubsecheading
{
#
1
}
\gdef\thissection
{
#
1
}
%
\plainsubsubsecheading
{
#
1
}
\gdef\thissection
{
#
1
}
%
\toks
0
=
{
#
1
}
%
\toks
0
=
{
#
1
}
%
\edef\temp
{
\noexpand\writetocentry
{
\realbackslash
unnumbsubsubsecentry
%
\edef\temp
{
\noexpand\writetocentry
{
\realbackslash
unnumbsubsubsecentry
%
{
\the\toks
0
}}}
%
{
\the\toks
0
}{
\the\chapno
}{
\the\secno
}{
\the\subsecno
}{
\the\subsubsecno
}}}
%
\temp
\temp
\unnumbnoderef
\unnumbnoderef
\nobreak
\nobreak
...
@@ -3892,7 +3951,16 @@ width0pt\relax} \fi
...
@@ -3892,7 +3951,16 @@ width0pt\relax} \fi
\hangindent
=
\wd
0
% zero if no section number
\hangindent
=
\wd
0
% zero if no section number
\unhbox
0
#
3
}
%
\unhbox
0
#
3
}
%
}
%
}
%
\ifdim\parskip
<
10
pt
\nobreak\kern
10
pt
\nobreak\kern
-
\parskip\fi
\nobreak
% Add extra space after the heading -- either a line space or a
% paragraph space, whichever is more. (Some people like to set
% \parskip to large values for some reason.)
\nobreak
\ifdim\parskip
>
\normalbaselineskip
\kern\parskip
\else
\kern\normalbaselineskip
\fi
\nobreak
}
}
...
@@ -3905,7 +3973,7 @@ width0pt\relax} \fi
...
@@ -3905,7 +3973,7 @@ width0pt\relax} \fi
% argument, which will end up as the last argument to the \...entry macro.
% argument, which will end up as the last argument to the \...entry macro.
%
%
% We open the .toc file here instead of at @setfilename or any other
% We open the .toc file here instead of at @setfilename or any other
%
given
time so that @contents can be put in the document anywhere.
%
fixed
time so that @contents can be put in the document anywhere.
%
%
\newif\iftocfileopened
\newif\iftocfileopened
\def\writetocentry
#
1
{
%
\def\writetocentry
#
1
{
%
...
@@ -3914,6 +3982,14 @@ width0pt\relax} \fi
...
@@ -3914,6 +3982,14 @@ width0pt\relax} \fi
\global\tocfileopenedtrue
\global\tocfileopenedtrue
\fi
\fi
\iflinks
\write\tocfile
{
#
1
{
\folio
}}
\fi
\iflinks
\write\tocfile
{
#
1
{
\folio
}}
\fi
%
% Tell \shipout to create a page destination if we're doing pdf, which
% will be the target of the links in the table of contents. We can't
% just do it on every page because the title pages are numbered 1 and
% 2 (the page numbers aren't printed), and so are the first two pages
% of the document. Thus, we'd have two destinations named `1', and
% two named `2'.
\ifpdf
\pdfmakepagedesttrue
\fi
}
}
\newskip\contentsrightmargin
\contentsrightmargin
=
1
in
\newskip\contentsrightmargin
\contentsrightmargin
=
1
in
...
@@ -3973,16 +4049,17 @@ width0pt\relax} \fi
...
@@ -3973,16 +4049,17 @@ width0pt\relax} \fi
\let\unnumbchapentry
=
\shortunnumberedentry
\let\unnumbchapentry
=
\shortunnumberedentry
% We want a true roman here for the page numbers.
% We want a true roman here for the page numbers.
\secfonts
\secfonts
\let\rm
=
\shortcontrm
\let\bf
=
\shortcontbf
\let\sl
=
\shortcontsl
\let\rm
=
\shortcontrm
\let\bf
=
\shortcontbf
\let\sl
=
\shortcontsl
\let\tt
=
\shortconttt
\rm
\rm
\hyphenpenalty
=
10000
\hyphenpenalty
=
10000
\advance\baselineskip
by
1
pt
% Open it up a little.
\advance\baselineskip
by
1
pt
% Open it up a little.
\def\secentry
##
1
##
2
##
3
##
4
{}
\def\secentry
##
1
##
2
##
3
##
4
{}
\def\unnumbsecentry
##
1
##
2
{}
\def\subsecentry
##
1
##
2
##
3
##
4
##
5
{}
\def\subsecentry
##
1
##
2
##
3
##
4
##
5
{}
\def\unnumbsubsecentry
##
1
##
2
{}
\def\subsubsecentry
##
1
##
2
##
3
##
4
##
5
##
6
{}
\def\subsubsecentry
##
1
##
2
##
3
##
4
##
5
##
6
{}
\def\unnumbsubsubsecentry
##
1
##
2
{}
\let\unnumbsecentry
=
\secentry
\let\unnumbsubsecentry
=
\subsecentry
\let\unnumbsubsubsecentry
=
\subsubsecentry
\openin
1
\jobname
.toc
\openin
1
\jobname
.toc
\ifeof
1
\else
\ifeof
1
\else
\closein
1
\closein
1
...
@@ -4015,7 +4092,8 @@ width0pt\relax} \fi
...
@@ -4015,7 +4092,8 @@ width0pt\relax} \fi
}
}
% Appendices, in the main contents.
% Appendices, in the main contents.
\def\appendixentry
#
1
#
2
#
3
{
\dochapentry
{
\putwordAppendix
{}
#
2
\labelspace
#
1
}{
#
3
}}
\def\appendixentry
#
1
#
2
#
3
{
%
\dochapentry
{
\appendixbox
{
\putwordAppendix
{}
#
2
}
\labelspace
#
1
}{
#
3
}}
%
%
% Appendices, in the short toc.
% Appendices, in the short toc.
\let\shortappendixentry
=
\shortchapentry
\let\shortappendixentry
=
\shortchapentry
...
@@ -4039,21 +4117,21 @@ width0pt\relax} \fi
...
@@ -4039,21 +4117,21 @@ width0pt\relax} \fi
}
}
% Unnumbered chapters.
% Unnumbered chapters.
\def\unnumbchapentry
#
1
#
2
{
\dochapentry
{
#
1
}{
#
2
}}
\def\unnumbchapentry
#
1
#
2
#
3
{
\dochapentry
{
#
1
}{
#
3
}}
\def\shortunnumberedentry
#
1
#
2
{
\tocentry
{
#
1
}{
\doshortpageno\bgroup
#
2
\egroup
}}
\def\shortunnumberedentry
#
1
#
2
#
3
{
\tocentry
{
#
1
}{
\doshortpageno\bgroup
#
3
\egroup
}}
% Sections.
% Sections.
\def\secentry
#
1
#
2
#
3
#
4
{
\dosecentry
{
#
2
.#
3
\labelspace
#
1
}{
#
4
}}
\def\secentry
#
1
#
2
#
3
#
4
{
\dosecentry
{
#
2
.#
3
\labelspace
#
1
}{
#
4
}}
\def\unnumbsecentry
#
1
#
2
{
\dosecentry
{
#
1
}{
#
2
}}
\def\unnumbsecentry
#
1
#
2
#
3
#
4
{
\dosecentry
{
#
1
}{
#
4
}}
% Subsections.
% Subsections.
\def\subsecentry
#
1
#
2
#
3
#
4
#
5
{
\dosubsecentry
{
#
2
.#
3
.#
4
\labelspace
#
1
}{
#
5
}}
\def\subsecentry
#
1
#
2
#
3
#
4
#
5
{
\dosubsecentry
{
#
2
.#
3
.#
4
\labelspace
#
1
}{
#
5
}}
\def\unnumbsubsecentry
#
1
#
2
{
\dosubsecentry
{
#
1
}{
#
2
}}
\def\unnumbsubsecentry
#
1
#
2
#
3
#
4
#
5
{
\dosubsecentry
{
#
1
}{
#
5
}}
% And subsubsections.
% And subsubsections.
\def\subsubsecentry
#
1
#
2
#
3
#
4
#
5
#
6
{
%
\def\subsubsecentry
#
1
#
2
#
3
#
4
#
5
#
6
{
%
\dosubsubsecentry
{
#
2
.#
3
.#
4
.#
5
\labelspace
#
1
}{
#
6
}}
\dosubsubsecentry
{
#
2
.#
3
.#
4
.#
5
\labelspace
#
1
}{
#
6
}}
\def\unnumbsubsubsecentry
#
1
#
2
{
\dosubsubsecentry
{
#
1
}{
#
2
}}
\def\unnumbsubsubsecentry
#
1
#
2
#
3
#
4
#
5
#
6
{
\dosubsubsecentry
{
#
1
}{
#
6
}}
% This parameter controls the indentation of the various levels.
% This parameter controls the indentation of the various levels.
\newdimen\tocindent
\tocindent
=
3
pc
\newdimen\tocindent
\tocindent
=
3
pc
...
@@ -4114,36 +4192,27 @@ width0pt\relax} \fi
...
@@ -4114,36 +4192,27 @@ width0pt\relax} \fi
\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
% 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.
% \tt widths. Each \tt character is 1en, so two makes it 1em.
% Furthermore, these definitions must come after we define our fonts.
%
\newbox\dblarrowbox
\newbox\longdblarrowbox
\newbox\pushcharbox
\newbox\bullbox
\newbox\equivbox
\newbox\errorbox
%{\tentt
%\global\setbox\dblarrowbox = \hbox to 1em{\hfil$\Rightarrow$\hfil}
%\global\setbox\longdblarrowbox = \hbox to 1em{\hfil$\mapsto$\hfil}
%\global\setbox\pushcharbox = \hbox to 1em{\hfil$\dashv$\hfil}
%\global\setbox\equivbox = \hbox to 1em{\hfil$\ptexequiv$\hfil}
% Adapted from the manmac format (p.420 of TeXbook)
%\global\setbox\bullbox = \hbox to 1em{\kern.15em\vrule height .75ex width .85ex
% depth .1ex\hfil}
%}
% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
\def\point
{$
\star
$}
\def\point
{$
\star
$}
\def\result
{
\leavevmode\raise
.
15
ex
\hbox
to
1
em
{
\hfil
$
\Rightarrow
$
\hfil
}}
\def\result
{
\leavevmode\raise
.
15
ex
\hbox
to
1
em
{
\hfil
$
\Rightarrow
$
\hfil
}}
\def\expansion
{
\leavevmode\raise
.
1
ex
\hbox
to
1
em
{
\hfil
$
\mapsto
$
\hfil
}}
\def\expansion
{
\leavevmode\raise
.
1
ex
\hbox
to
1
em
{
\hfil
$
\mapsto
$
\hfil
}}
\def\print
{
\leavevmode\lower
.
1
ex
\hbox
to
1
em
{
\hfil
$
\dashv
$
\hfil
}}
\def\print
{
\leavevmode\lower
.
1
ex
\hbox
to
1
em
{
\hfil
$
\dashv
$
\hfil
}}
\def\equiv
{
\leavevmode\lower
.
1
ex
\hbox
to
1
em
{
\hfil
$
\ptexequiv
$
\hfil
}}
\def\equiv
{
\leavevmode\lower
.
1
ex
\hbox
to
1
em
{
\hfil
$
\ptexequiv
$
\hfil
}}
% The @error{} command.
% Adapted from the TeXbook's \boxit.
% Adapted from the TeXbook's \boxit.
%
\newbox\errorbox
%
{
\tentt
\global\dimen
0
=
3
em
}
% Width of the box.
{
\tentt
\global\dimen
0
=
3
em
}
% Width of the box.
\dimen
2
=
.
55
pt
% Thickness of rules
\dimen
2
=
.
55
pt
% Thickness of rules
% The text. (`r' is open on the right, `e' somewhat less so on the left.)
% The text. (`r' is open on the right, `e' somewhat less so on the left.)
\setbox
0
=
\hbox
{
\kern
-
.
75
pt
\tensf
error
\kern
-
1
.
5
pt
}
\setbox
0
=
\hbox
{
\kern
-
.
75
pt
\tensf
error
\kern
-
1
.
5
pt
}
%
\global\setbox\errorbox
=
\hbox
to
\dimen
0
{
\hfil
\global\setbox\errorbox
=
\hbox
to
\dimen
0
{
\hfil
\hsize
=
\dimen
0
\advance\hsize
by
-
5
.
8
pt
% Space to left+right.
\hsize
=
\dimen
0
\advance\hsize
by
-
5
.
8
pt
% Space to left+right.
\advance\hsize
by
-
2
\dimen
2
% Rules.
\advance\hsize
by
-
2
\dimen
2
% Rules.
...
@@ -4154,8 +4223,7 @@ width0pt\relax} \fi
...
@@ -4154,8 +4223,7 @@ width0pt\relax} \fi
\kern
3
pt
\vrule
width
\dimen
2
}
% Space to right.
\kern
3
pt
\vrule
width
\dimen
2
}
% Space to right.
\hrule
height
\dimen
2
}
\hrule
height
\dimen
2
}
\hfil
}
\hfil
}
%
% The @error{} command.
\def\error
{
\leavevmode\lower
.
7
ex
\copy\errorbox
}
\def\error
{
\leavevmode\lower
.
7
ex
\copy\errorbox
}
% @tex ... @end tex escapes into raw Tex temporarily.
% @tex ... @end tex escapes into raw Tex temporarily.
...
@@ -4195,9 +4263,9 @@ width0pt\relax} \fi
...
@@ -4195,9 +4263,9 @@ width0pt\relax} \fi
\def\@
{
@
}
%
\def\@
{
@
}
%
\let\Etex
=
\endgroup
}
\let\Etex
=
\endgroup
}
% Define @lisp ... @endlisp.
% Define @lisp ... @end
lisp.
% @lisp does a \begingroup so it can rebind things,
% @lisp does a \begingroup so it can rebind things,
% including the definition of @endlisp (which normally is erroneous).
% including the definition of @end
lisp (which normally is erroneous).
% Amount to narrow the margins by for @lisp.
% Amount to narrow the margins by for @lisp.
\newskip\lispnarrowing
\lispnarrowing
=
0
.
4
in
\newskip\lispnarrowing
\lispnarrowing
=
0
.
4
in
...
@@ -4226,15 +4294,18 @@ width0pt\relax} \fi
...
@@ -4226,15 +4294,18 @@ width0pt\relax} \fi
% Make spacing and below environment symmetrical. We use \parskip here
% Make spacing and below environment symmetrical. We use \parskip here
% to help in doing that, since in @example-like environments \parskip
% to help in doing that, since in @example-like environments \parskip
% is reset to zero; thus the \afterenvbreak inserts no space -- but the
% is reset to zero; thus the \afterenvbreak inserts no space -- but the
% start of the next paragraph will insert \parskip
% start of the next paragraph will insert \parskip
.
%
%
\def\aboveenvbreak
{{
%
\def\aboveenvbreak
{{
%
\ifnum\lastpenalty
<
10000
% =10000 instead of <10000 because of a special case in \itemzzz, q.v.
\ifnum
\lastpenalty
=
10000
\else
\advance\envskipamount
by
\parskip
\advance\envskipamount
by
\parskip
\endgraf
\endgraf
\ifdim\lastskip
<
\envskipamount
\ifdim\lastskip
<
\envskipamount
\removelastskip
\removelastskip
\penalty
-
50
% it's not a good place to break if the last penalty was \nobreak
% or better ...
\ifnum\lastpenalty
>
10000
\else
\penalty
-
50
\fi
\vskip\envskipamount
\vskip\envskipamount
\fi
\fi
\fi
\fi
...
@@ -4313,7 +4384,6 @@ width0pt\relax} \fi
...
@@ -4313,7 +4384,6 @@ width0pt\relax} \fi
\inENV
% This group ends at the end of the body
\inENV
% This group ends at the end of the body
\hfuzz
=
12
pt
% Don't be fussy
\hfuzz
=
12
pt
% Don't be fussy
\sepspaces
% Make spaces be word-separators rather than space tokens.
\sepspaces
% Make spaces be word-separators rather than space tokens.
\singlespace
\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
=
0
pt
\parskip
=
0
pt
...
@@ -4428,7 +4498,6 @@ width0pt\relax} \fi
...
@@ -4428,7 +4498,6 @@ width0pt\relax} \fi
\def\quotation
{
%
\def\quotation
{
%
\begingroup\inENV
%This group ends at the end of the @quotation body
\begingroup\inENV
%This group ends at the end of the @quotation body
{
\parskip
=
0
pt
\aboveenvbreak
}
% because \aboveenvbreak inserts \parskip
{
\parskip
=
0
pt
\aboveenvbreak
}
% because \aboveenvbreak inserts \parskip
\singlespace
\parindent
=
0
pt
\parindent
=
0
pt
% 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. So to avoid extra space below the environment...
% doing normal filling. So to avoid extra space below the environment...
...
@@ -4451,10 +4520,14 @@ width0pt\relax} \fi
...
@@ -4451,10 +4520,14 @@ width0pt\relax} \fi
%
%
% [Knuth]: Donald Ervin Knuth, 1996. The TeXbook.
% [Knuth]: Donald Ervin Knuth, 1996. The TeXbook.
%
%
% [Knuth] p. 344; only we need to do '@' too
% [Knuth] p.344; only we need to do the other characters Texinfo sets
% active too. Otherwise, they get lost as the first character on a
% verbatim line.
\def\dospecials
{
%
\def\dospecials
{
%
\do\ \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\"
%
}
%
%
% [Knuth] p. 380
% [Knuth] p. 380
\def\uncatcodespecials
{
%
\def\uncatcodespecials
{
%
...
@@ -4541,7 +4614,7 @@ width0pt\relax} \fi
...
@@ -4541,7 +4614,7 @@ width0pt\relax} \fi
%
%
% For Texinfo it's a lot easier than for LaTeX,
% For Texinfo it's a lot easier than for LaTeX,
% because texinfo's \verbatim doesn't stop at '\end{verbatim}':
% because texinfo's \verbatim doesn't stop at '\end{verbatim}':
% we need not redefine '\', '{' and '}'
% we need not redefine '\', '{' and '}'
.
%
%
% Inspired by LaTeX's verbatim command set [latex.ltx]
% Inspired by LaTeX's verbatim command set [latex.ltx]
%% Include LaTeX hack for completeness -- never know
%% Include LaTeX hack for completeness -- never know
...
@@ -4551,9 +4624,14 @@ width0pt\relax} \fi
...
@@ -4551,9 +4624,14 @@ width0pt\relax} \fi
%% \catcode`\\=12|gdef|doverbatim#1@end verbatim[
%% \catcode`\\=12|gdef|doverbatim#1@end verbatim[
%% #1|endgroup|def|Everbatim[]|end[verbatim]]
%% #1|endgroup|def|Everbatim[]|end[verbatim]]
%% |endgroup
%% |endgroup
%
\begingroup
\begingroup
\catcode
`
\
=
\active
\catcode
`
\
=
\active
\gdef\doverbatim
#
1
@end verbatim
{
#
1
\end
{
verbatim
}}
\obeylines
%
% ignore everything up to the first ^^M, that's the newline at the end
% of the @verbatim input line itself. Otherwise we get an extra blank
% line in the output.
\gdef\doverbatim
#
1
^^
M#
2
@end verbatim
{
#
2
\end
{
verbatim
}}
%
\endgroup
\endgroup
%
%
\def\verbatim
{
%
\def\verbatim
{
%
...
@@ -4595,24 +4673,80 @@ width0pt\relax} \fi
...
@@ -4595,24 +4673,80 @@ width0pt\relax} \fi
\endgroup\nonfillfinish\endgroup
\endgroup\nonfillfinish\endgroup
}
}
% @copying ... @end copying.
% Save the text away for @insertcopying later. Many commands won't be
% allowed in this context, but that's ok.
%
% We save the uninterpreted tokens, rather than creating a box.
% Saving the text in a box would be much easier, but then all the
% typesetting commands (@smallbook, font changes, etc.) have to be done
% beforehand -- and a) we want @copying to be done first in the source
% file; b) letting users define the frontmatter in as flexible order as
% possible is very desirable.
%
\def\copying
{
\begingroup
% Define a command to swallow text until we reach `@end copying'.
% \ is the escape char in this texinfo.tex file, so it is the
% delimiter for the command; @ will be the escape char when we read
% it, but that doesn't matter.
\long\def\docopying
##
1
\end
copying
{
\gdef\copyingtext
{
##
1
}
\enddocopying
}
%
%
% We must preserve ^^M's in the input file; see \insertcopying below.
\catcode
`
\^
^
M
=
\active
\docopying
}
% What we do to finish off the copying text.
%
\def\enddocopying
{
\endgroup\ignorespaces
}
% @insertcopying. Here we must play games with ^^M's. On the one hand,
% we need them to delimit commands such as `@end quotation', so they
% must be active. On the other hand, we certainly don't want every
% end-of-line to be a \par, as would happen with the normal active
% definition of ^^M. On the third hand, two ^^M's in a row should still
% generate a \par.
%
% Our approach is to make ^^M insert a space and a penalty1 normally;
% then it can also check if \lastpenalty=1. If it does, then manually
% do \par.
%
% Seems pretty fragile, but for the limited use of getting the copying
% text (which should be quite simple) inserted, we can hope it's ok.
% %
{
\catcode
`
\^
^
M
=
\active
%
\gdef\insertcopying
{
\begingroup
%
\parindent
=
0
pt
% looks wrong on title page
\def
^^
M
{
%
\ifnum
\lastpenalty
=
1
%
\par
%
\else
%
\space
\penalty
1
%
\fi
%
}
%
\copyingtext
%
\endgroup
}
%
}
\message
{
defuns,
}
\message
{
defuns,
}
% @defun etc.
% @defun etc.
% Allow user to change definition object font (\df) internally
% Allow user to change definition object font (\df) internally
\def\setdeffont
#
1
{
\csname
DEF#
1
\endcsname
}
\def\setdeffont
#
1
{
\csname
DEF#
1
\endcsname
}
\newskip\defbodyindent
\defbodyindent
=
.
4
in
\newskip\defbodyindent
\defbodyindent
=
.
4
in
\newskip\defargsindent
\defargsindent
=
50
pt
\newskip\defargsindent
\defargsindent
=
50
pt
\newskip\deftypemargin
\deftypemargin
=
12
pt
\newskip\deflastargmargin
\deflastargmargin
=
18
pt
\newskip\deflastargmargin
\deflastargmargin
=
18
pt
\newcount\parencount
\newcount\parencount
% define \functionparens, which makes ( and ) and & do special things.
% \functionparens affects the group it is contained in.
% We want ()&[] to print specially on the defun line.
%
\def\activeparens
{
%
\def\activeparens
{
%
\catcode
`
\(
=
\active
\catcode
`
\)
=
\active
\catcode
`
\&
=
\active
\catcode
`
\(
=
\active
\catcode
`
\)
=
\active
\catcode
`
\[
=
\active
\catcode
`
\]
=
\active
}
\catcode
`
\&
=
\active
\catcode
`
\[
=
\active
\catcode
`
\]
=
\active
}
% Make control sequences which act like normal parenthesis chars.
% Make control sequences which act like normal parenthesis chars.
\let\lparen
= (
\let\rparen
= )
\let\lparen
= (
\let\rparen
= )
...
@@ -4663,84 +4797,117 @@ width0pt\relax} \fi
...
@@ -4663,84 +4797,117 @@ width0pt\relax} \fi
\global\let
&
=
\ampnr
\global\let
&
=
\ampnr
}
}
% First, defname, which formats the header line itself.
% \defname, which formats the name of the @def (not the args).
% #1 should be the function name.
% #1 is the function name.
% #2 should be the type of definition, such as "Function".
% #2 is the type of definition, such as "Function".
\def\defname
#1#2
{
%
% Get the values of \leftskip and \rightskip as they were
% outside the @def...
\dimen
2=
\leftskip
\advance\dimen
2 by -
\defbodyindent
\noindent
\setbox
0=
\hbox
{
\hskip
\deflastargmargin
{
\rm
#2
}
\hskip
\deftypemargin
}
%
\dimen
0=
\hsize
\advance
\dimen
0 by -
\wd
0
% compute size for first line
\dimen
1=
\hsize
\advance
\dimen
1 by -
\defargsindent
%size for continuations
\parshape
2 0in
\dimen
0
\defargsindent
\dimen
1
% Now output arg 2 ("Function" or some such)
% ending at \deftypemargin from the right margin,
% but stuck inside a box of width 0 so it does not interfere with linebreaking
{
% Adjust \hsize to exclude the ambient margins,
% so that \rightline will obey them.
\advance
\hsize
by -
\dimen
2
\rlap
{
\rightline
{{
\rm
#2
}
\hskip
-1.25pc
}}}
%
% Make all lines underfull and no complaints:
\tolerance
=10000
\hbadness
=10000
\advance\leftskip
by -
\defbodyindent
\exdentamount
=
\defbodyindent
{
\df
#1
}
\enskip
% Generate function name
}
% Actually process the body of a definition
% #1 should be the terminating control sequence, such as \Edefun.
% #2 should be the "another name" control sequence, such as \defunx.
% #3 should be the control sequence that actually processes the header,
% such as \defunheader.
\def\defparsebody
#1#2#3
{
\begingroup\inENV
% Environment for definitionbody
\medbreak
%
% Define the end token that this defining construct specifies
% so that it will exit this group.
\def
#1
{
\endgraf\endgroup\medbreak
}
%
\def
#2
{
\begingroup\obeylines\activeparens\spacesplit
#3
}
%
\parindent
=0in
\advance\leftskip
by
\defbodyindent
\exdentamount
=
\defbodyindent
\begingroup
%
\catcode
61=
\active
% 61 is `='
\obeylines\activeparens\spacesplit
#3
}
% #1 is the \E... control sequence to end the definition (which we define).
% #2 is the \...x control sequence for consecutive fns (which we define).
% #3 is the control sequence to call to resume processing.
% #4, delimited by the space, is the class name.
%
%
\def\defmethparsebody
#1#2#3#4
{
\begingroup\inENV
%
\def\defname
#1#2
{
%
\medbreak
%
% How we'll output the type name. Putting it in brackets helps
% Define the end token that this defining construct specifies
% distinguish it from the body text that may end up on the next line
% so that it will exit this group.
% just below it.
\def
#1
{
\endgraf\endgroup\medbreak
}
%
\ifempty
{
#2
}
%
\def
#2##1
{
\begingroup\obeylines\activeparens\spacesplit
{
#3
{
##1
}}}
%
\def\defnametype
{}
%
\parindent
=0in
\else
\advance\leftskip
by
\defbodyindent
\def\defnametype
{
[
\rm
#2]
}
%
\exdentamount
=
\defbodyindent
\fi
\begingroup\obeylines\activeparens\spacesplit
{
#3
{
#4
}}}
%
% Get the values of \leftskip and \rightskip as they were outside the @def...
\dimen
2=
\leftskip
\advance\dimen
2 by -
\defbodyindent
%
% Figure out values for the paragraph shape.
\setbox
0=
\hbox
{
\hskip
\deflastargmargin
{
\defnametype
}}
%
\dimen
0=
\hsize
\advance
\dimen
0 by -
\wd
0
% compute size for first line
\dimen
1=
\hsize
\advance
\dimen
1 by -
\defargsindent
% size for continuations
\parshape
2 0in
\dimen
0
\defargsindent
\dimen
1
%
% Output arg 2 ("Function" or some such) but stuck inside a box of
% width 0 so it does not interfere with linebreaking.
\noindent
%
{
% Adjust \hsize to exclude the ambient margins,
% so that \rightline will obey them.
\advance
\hsize
by -
\dimen
2
\dimen
3 = 0pt
% was -1.25pc
\rlap
{
\rightline
{
\defnametype\kern\dimen
3
}}
%
}
%
%
% Allow all lines to be underfull without complaint:
\tolerance
=10000
\hbadness
=10000
\advance\leftskip
by -
\defbodyindent
\exdentamount
=
\defbodyindent
{
\df
#1
}
\enskip
% output function name
% \defunargs will be called next to output the arguments, if any.
}
%
Used for @deftypemethod and @deftypeivar
.
%
Common pieces to start any @def..
.
% #1 is the \E... control sequence to end the definition (which we define).
% #1 is the \E... control sequence to end the definition (which we define).
% #2 is the \...x control sequence for consecutive fns (which we define).
% #2 is the \...x control sequence (which our caller defines).
% #3 is the control sequence to call to resume processing.
% #3 is the control sequence to process the header, such as \defunheader.
% #4, delimited by a space, is the class name.
% #5 is the method's return type.
%
%
\def\deftypemethparsebody
#1#2#3#4 #5
{
\begingroup\inENV
\def\parsebodycommon
#1#2#3
{
%
\begingroup\inENV
% If there are two @def commands in a row, we'll have a \nobreak,
% which is there to keep the function description together with its
% header. But if there's nothing but headers, we want to allow a
% break after all.
\ifnum\lastpenalty
=10000
\penalty
0
\fi
\medbreak
\medbreak
%
% Define the \E... end token that this defining construct specifies
% so that it will exit this group.
\def
#1
{
\endgraf\endgroup\medbreak
}
%
\def
#1
{
\endgraf\endgroup\medbreak
}
%
\def
#2##1 ##2
{
\begingroup\obeylines\activeparens\spacesplit
{
#3
{
##1
}{
##2
}}}
%
%
\parindent
=0in
\parindent
=0in
\advance\leftskip
by
\defbodyindent
\advance\leftskip
by
\defbodyindent
\exdentamount
=
\defbodyindent
\exdentamount
=
\defbodyindent
\begingroup\obeylines\activeparens\spacesplit
{
#3
{
#4
}{
#5
}}}
}
% Common part of the \...x definitions.
%
\def\defxbodycommon
{
%
% As with \parsebodycommon above, allow line break if we have multiple
% x headers in a row. It's not a great place, though.
\ifnum\lastpenalty
=10000
\penalty
1000
\fi
%
\begingroup\obeylines
}
% Process body of @defun, @deffn, @defmac, etc.
%
\def\defparsebody
#1#2#3
{
%
\parsebodycommon
{
#1
}{
#2
}{
#3
}
%
\def
#2
{
\defxbodycommon
\activeparens
\spacesplit
#3
}
%
\catcode
61=
\active
% 61 is `='
\begingroup\obeylines\activeparens
\spacesplit
#3
%
}
% #1, #2, #3 are the common arguments (see \parsebodycommon above).
% #4, delimited by the space, is the class name.
%
\def\defmethparsebody
#1#2#3#4
{
%
\parsebodycommon
{
#1
}{
#2
}{
#3
}
%
\def
#2##1
{
\defxbodycommon
\activeparens
\spacesplit
{
#3
{
##1
}}}
%
\begingroup\obeylines\activeparens
% The \empty here prevents misinterpretation of a construct such as
% @deffn {whatever} {Enharmonic comma}
% See comments at \deftpparsebody, although in our case we don't have
% to remove the \empty afterwards, since it is empty.
\spacesplit
{
#3
{
#4
}}
\empty
}
% Used for @deftypemethod and @deftypeivar.
% #1, #2, #3 are the common arguments (see \defparsebody).
% #4, delimited by a space, is the class name.
% #5 is the method's return type.
%
\def\deftypemethparsebody
#1#2#3#4 #5
{
%
\parsebodycommon
{
#1
}{
#2
}{
#3
}
%
\def
#2##1 ##2
{
\defxbodycommon
\activeparens
\spacesplit
{
#3
{
##1
}{
##2
}}}
%
\begingroup\obeylines\activeparens
\spacesplit
{
#3
{
#4
}{
#5
}}
%
}
% Used for @deftypeop. The change from \deftypemethparsebody is an
% Used for @deftypeop. The change from \deftypemethparsebody is an
% extra argument at the beginning which is the `category', instead of it
% extra argument at the beginning which is the `category', instead of it
...
@@ -4749,64 +4916,48 @@ width0pt\relax} \fi
...
@@ -4749,64 +4916,48 @@ width0pt\relax} \fi
% input at hand. Thus also need a control sequence (passed as #5) for
% input at hand. Thus also need a control sequence (passed as #5) for
% the \E... definition to assign the category name to.
% the \E... definition to assign the category name to.
%
%
\def\deftypeopparsebody
#1#2#3#4#5 #6
{
\begingroup\inENV
\def\deftypeopparsebody
#1#2#3#4#5 #6
{
%
\medbreak
\parsebodycommon
{
#1
}{
#2
}{
#3
}
%
\def
#1
{
\endgraf\endgroup\medbreak
}
%
\def
#2##1 ##2 ##3
{
\def
#4
{
##1
}
%
\def
#2##1 ##2 ##3
{
%
\defxbodycommon
\activeparens
\spacesplit
{
#3
{
##2
}{
##3
}}}
%
\def
#4
{
##1
}
%
\begingroup\obeylines\activeparens
\begingroup\obeylines\activeparens\spacesplit
{
#3
{
##2
}{
##3
}}}
%
\spacesplit
{
#3
{
#5
}{
#6
}}
%
\parindent
=0in
}
\advance\leftskip
by
\defbodyindent
\exdentamount
=
\defbodyindent
% For @defop.
\begingroup\obeylines\activeparens\spacesplit
{
#3
{
#5
}{
#6
}}}
\def\defopparsebody
#1#2#3#4#5
{
%
\parsebodycommon
{
#1
}{
#2
}{
#3
}
%
\def\defopparsebody
#1#2#3#4#5
{
\begingroup\inENV
%
\def
#2##1 ##2
{
\def
#4
{
##1
}
%
\medbreak
%
\defxbodycommon
\activeparens
\spacesplit
{
#3
{
##2
}}}
%
% Define the end token that this defining construct specifies
\begingroup\obeylines\activeparens
% so that it will exit this group.
\spacesplit
{
#3
{
#5
}}
%
\def
#1
{
\endgraf\endgroup\medbreak
}
%
}
\def
#2##1 ##2
{
\def
#4
{
##1
}
%
\begingroup\obeylines\activeparens\spacesplit
{
#3
{
##2
}}}
%
\parindent
=0in
\advance\leftskip
by
\defbodyindent
\exdentamount
=
\defbodyindent
\begingroup\obeylines\activeparens\spacesplit
{
#3
{
#5
}}}
% These parsing functions are similar to the preceding ones
% These parsing functions are similar to the preceding ones
% except that they do not make parens into active characters.
% except that they do not make parens into active characters.
% These are used for "variables" since they have no arguments.
% These are used for "variables" since they have no arguments.
\def\defvarparsebody
#1#2#3
{
\begingroup\inENV
% Environment for definitionbody
\medbreak
%
% Define the end token that this defining construct specifies
% so that it will exit this group.
\def
#1
{
\endgraf\endgroup\medbreak
}
%
\def
#2
{
\begingroup\obeylines\spacesplit
#3
}
%
\parindent
=0in
\advance\leftskip
by
\defbodyindent
\exdentamount
=
\defbodyindent
\begingroup
%
\catcode
61=
\active
%
\obeylines\spacesplit
#3
}
% This is used for \def{tp,vr}parsebody. It could probably be used for
% some of the others, too, with some judicious conditionals.
%
%
\def\parsebodycommon
#1#2#3
{
%
\def\defvarparsebody
#1#2#3
{
%
\begingroup\inENV
%
\parsebodycommon
{
#1
}{
#2
}{
#3
}
%
\medbreak
%
\def
#2
{
\defxbodycommon
\spacesplit
#3
}
%
% Define the end token that this defining construct specifies
\catcode
61=
\active
%
% so that it will exit this group.
\def
#1
{
\endgraf\endgroup\medbreak
}
%
\def
#2##1
{
\begingroup\obeylines\spacesplit
{
#3
{
##1
}}}
%
\parindent
=0in
\advance\leftskip
by
\defbodyindent
\exdentamount
=
\defbodyindent
\begingroup\obeylines
\begingroup\obeylines
\spacesplit
#3
%
}
% @defopvar.
\def\defopvarparsebody
#1#2#3#4#5
{
%
\parsebodycommon
{
#1
}{
#2
}{
#3
}
%
\def
#2##1 ##2
{
\def
#4
{
##1
}
%
\defxbodycommon
\spacesplit
{
#3
{
##2
}}}
%
\begingroup\obeylines
\spacesplit
{
#3
{
#5
}}
%
}
}
\def\defvrparsebody
#1#2#3#4
{
%
\def\defvrparsebody
#1#2#3#4
{
%
\parsebodycommon
{
#1
}{
#2
}{
#3
}
%
\parsebodycommon
{
#1
}{
#2
}{
#3
}
%
\def
#2##1
{
\defxbodycommon
\spacesplit
{
#3
{
##1
}}}
%
\begingroup\obeylines
\spacesplit
{
#3
{
#4
}}
%
\spacesplit
{
#3
{
#4
}}
%
}
}
...
@@ -4821,6 +4972,8 @@ width0pt\relax} \fi
...
@@ -4821,6 +4972,8 @@ width0pt\relax} \fi
%
%
\def\deftpparsebody
#1#2#3#4
{
%
\def\deftpparsebody
#1#2#3#4
{
%
\parsebodycommon
{
#1
}{
#2
}{
#3
}
%
\parsebodycommon
{
#1
}{
#2
}{
#3
}
%
\def
#2##1
{
\defxbodycommon
\spacesplit
{
#3
{
##1
}}}
%
\begingroup\obeylines
\spacesplit
{
\parsetpheaderline
{
#3
{
#4
}}}
\empty
\spacesplit
{
\parsetpheaderline
{
#3
{
#4
}}}
\empty
}
}
...
@@ -4837,32 +4990,22 @@ width0pt\relax} \fi
...
@@ -4837,32 +4990,22 @@ width0pt\relax} \fi
#1
{
\removeemptybraces
#2
\relax
}{
#3
}
%
#1
{
\removeemptybraces
#2
\relax
}{
#3
}
%
}
%
}
%
\def\defopvarparsebody
#1#2#3#4#5
{
\begingroup\inENV
%
% Split up #2 (the rest of the input line) at the first space token.
\medbreak
%
% Define the end token that this defining construct specifies
% so that it will exit this group.
\def
#1
{
\endgraf\endgroup\medbreak
}
%
\def
#2##1 ##2
{
\def
#4
{
##1
}
%
\begingroup\obeylines\spacesplit
{
#3
{
##2
}}}
%
\parindent
=0in
\advance\leftskip
by
\defbodyindent
\exdentamount
=
\defbodyindent
\begingroup\obeylines\spacesplit
{
#3
{
#5
}}}
% Split up #2 at the first space token.
% call #1 with two arguments:
% call #1 with two arguments:
% the first is all of #2 before the space token,
% the first is all of #2 before the space token,
% the second is all of #2 after that space token.
% the second is all of #2 after that space token.
% If #2 contains no space token, all of it is passed as the first arg
% If #2 contains no space token, all of it is passed as the first arg
% and the second is passed as empty.
% and the second is passed as empty.
%
{
\obeylines
{
\obeylines
%
\gdef\spacesplit
#1#2
^^
M
{
\endgroup\spacesplitfoo
{
#1
}
#2
\relax\spacesplitfoo
}
%
\gdef\spacesplit
#1#2
^^
M
{
\endgroup\spacesplitx
{
#1
}
#2
\relax\spacesplitx
}
%
\long\gdef\spacesplitfoo
#1#2 #3#4
\spacesplitfoo
{
%
\long\gdef\spacesplitx
#1#2 #3#4
\spacesplitx
{
%
\ifx\relax
#3
%
\ifx\relax
#3
%
#1
{
#2
}{}
\else
#1
{
#2
}{
#3#4
}
\fi
}}
#1
{
#2
}{}
%
\else
%
% So much for the things common to all kinds of definitions.
#1
{
#2
}{
#3#4
}
%
\fi
}
%
}
% Define @defun.
% Define @defun.
...
@@ -5273,7 +5416,7 @@ width0pt\relax} \fi
...
@@ -5273,7 +5416,7 @@ width0pt\relax} \fi
\message
{
Warning: redefining
\the\macname
}
%
\message
{
Warning: redefining
\the\macname
}
%
\else
\else
\expandafter\ifx\csname
\the\macname\endcsname
\relax
\expandafter\ifx\csname
\the\macname\endcsname
\relax
\else
\errmessage
{
The name
\the\macname\space
is reserv
ed
}
\fi
\else
\errmessage
{
Macro name
\the\macname\space
already defin
ed
}
\fi
\global\cslet
{
macsave.
\the\macname
}{
\the\macname
}
%
\global\cslet
{
macsave.
\the\macname
}{
\the\macname
}
%
\global\expandafter\let\csname
ismacro.
\the\macname\endcsname
=1
%
\global\expandafter\let\csname
ismacro.
\the\macname\endcsname
=1
%
% Add the macroname to \macrolist
% Add the macroname to \macrolist
...
@@ -6019,11 +6162,13 @@ should work if nowhere else does.}
...
@@ -6019,11 +6162,13 @@ should work if nowhere else does.}
}
}
% Parameters in order: 1) textheight; 2) textwidth; 3) voffset;
% Parameters in order: 1) textheight; 2) textwidth; 3) voffset;
% 4) hoffset; 5) binding offset; 6) topskip. We also call
% 4) hoffset; 5) binding offset; 6) topskip; 7) physical page height; 8)
% \setleading{\textleading}, so the caller should define \textleading.
% physical page width.
% The caller should also set \parskip.
%
% We also call \setleading{\textleading}, so the caller should define
% \textleading. The caller should also set \parskip.
%
%
\def\internalpagesizes
#1#2#3#4#5#6
{
%
\def\internalpagesizes
#1#2#3#4#5#6
#7#8
{
%
\voffset
= #3
\relax
\voffset
= #3
\relax
\topskip
= #6
\relax
\topskip
= #6
\relax
\splittopskip
=
\topskip
\splittopskip
=
\topskip
...
@@ -6042,6 +6187,11 @@ should work if nowhere else does.}
...
@@ -6042,6 +6187,11 @@ should work if nowhere else does.}
\normaloffset
= #4
\relax
\normaloffset
= #4
\relax
\bindingoffset
= #5
\relax
\bindingoffset
= #5
\relax
%
%
\ifpdf
\pdfpageheight
#7
\relax
\pdfpagewidth
#8
\relax
\fi
%
\setleading
{
\textleading
}
\setleading
{
\textleading
}
%
%
\parindent
=
\defaultparindent
\parindent
=
\defaultparindent
...
@@ -6063,7 +6213,10 @@ should work if nowhere else does.}
...
@@ -6063,7 +6213,10 @@ should work if nowhere else does.}
\textleading
= 13.2pt
\textleading
= 13.2pt
%
%
% If page is nothing but text, make it come out even.
% If page is nothing but text, make it come out even.
\internalpagesizes
{
46
\baselineskip
}{
6in
}{
\voffset
}{
.25in
}{
\bindingoffset
}{
36pt
}
%
\internalpagesizes
{
46
\baselineskip
}{
6in
}
%
{
\voffset
}{
.25in
}
%
{
\bindingoffset
}{
36pt
}
%
{
11in
}{
8.5in
}
%
}}
}}
% Use @smallbook to reset parameters for 7x9.5 (or so) format.
% Use @smallbook to reset parameters for 7x9.5 (or so) format.
...
@@ -6071,13 +6224,15 @@ should work if nowhere else does.}
...
@@ -6071,13 +6224,15 @@ should work if nowhere else does.}
\parskip
= 2pt plus 1pt
\parskip
= 2pt plus 1pt
\textleading
= 12pt
\textleading
= 12pt
%
%
\internalpagesizes
{
7.5in
}{
5.in
}{
\voffset
}{
.25in
}{
\bindingoffset
}{
16pt
}
%
\internalpagesizes
{
7.5in
}{
5in
}
%
{
\voffset
}{
.25in
}
%
{
\bindingoffset
}{
16pt
}
%
{
9.25in
}{
7in
}
%
%
%
\lispnarrowing
= 0.3in
\lispnarrowing
= 0.3in
\tolerance
= 700
\tolerance
= 700
\hfuzz
= 1pt
\hfuzz
= 1pt
\contentsrightmargin
= 0pt
\contentsrightmargin
= 0pt
\deftypemargin
= 0pt
\defbodyindent
= .5cm
\defbodyindent
= .5cm
\smallenvironments
\smallenvironments
}}
}}
...
@@ -6085,12 +6240,27 @@ should work if nowhere else does.}
...
@@ -6085,12 +6240,27 @@ should work if nowhere else does.}
% Use @afourpaper to print on European A4 paper.
% Use @afourpaper to print on European A4 paper.
\def\afourpaper
{{
\globaldefs
= 1
\def\afourpaper
{{
\globaldefs
= 1
\parskip
= 3pt plus 2pt minus 1pt
\parskip
= 3pt plus 2pt minus 1pt
\textleading
= 12pt
\textleading
= 1
3.
2pt
%
%
\internalpagesizes
{
53
\baselineskip
}{
160mm
}{
\voffset
}{
4mm
}{
\bindingoffset
}{
44pt
}
%
% Double-side printing via postscript on Laserjet 4050
% prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm.
% To change the settings for a different printer or situation, adjust
% \normaloffset until the front-side and back-side texts align. Then
% do the same for \bindingoffset. You can set these for testing in
% your texinfo source file like this:
% @tex
% \global\normaloffset = -6mm
% \global\bindingoffset = 10mm
% @end tex
\internalpagesizes
{
51
\baselineskip
}{
160mm
}
{
\voffset
}{
\hoffset
}
%
{
\bindingoffset
}{
44pt
}
%
{
297mm
}{
210mm
}
%
%
%
\tolerance
= 700
\tolerance
= 700
\hfuzz
= 1pt
\hfuzz
= 1pt
\contentsrightmargin
= 0pt
\defbodyindent
= 5mm
}}
}}
% Use @afivepaper to print on European A5 paper.
% Use @afivepaper to print on European A5 paper.
...
@@ -6100,37 +6270,42 @@ should work if nowhere else does.}
...
@@ -6100,37 +6270,42 @@ should work if nowhere else does.}
\parskip
= 2pt plus 1pt minus 0.1pt
\parskip
= 2pt plus 1pt minus 0.1pt
\textleading
= 12.5pt
\textleading
= 12.5pt
%
%
\internalpagesizes
{
166mm
}{
120mm
}{
\voffset
}{
-8mm
}{
\bindingoffset
}{
8pt
}
%
\internalpagesizes
{
160mm
}{
120mm
}
%
{
\voffset
}{
\hoffset
}
%
{
\bindingoffset
}{
8pt
}
%
{
210mm
}{
148mm
}
%
%
%
\lispnarrowing
= 0.2in
\lispnarrowing
= 0.2in
\tolerance
= 800
\tolerance
= 800
\hfuzz
= 1.2pt
\hfuzz
= 1.2pt
\contentsrightmargin
= 0mm
\contentsrightmargin
= 0pt
\deftypemargin
= 0pt
\defbodyindent
= 2mm
\defbodyindent
= 2mm
\tableindent
= 12mm
\tableindent
= 12mm
%
%
\smallenvironments
\smallenvironments
}}
}}
% A specific text layout, 24x15cm overall, intended for A4 paper. Top margin
% A specific text layout, 24x15cm overall, intended for A4 paper.
% 29mm, hence bottom margin 28mm, nominal side margin 3cm.
\def\afourlatex
{{
\globaldefs
= 1
\def\afourlatex
{{
\globaldefs
= 1
\textleading
= 13.6pt
%
\afourpaper
\afourpaper
\internalpagesizes
{
237mm
}{
150mm
}{
3.6mm
}{
3.6mm
}{
3mm
}{
7mm
}
%
\internalpagesizes
{
237mm
}{
150mm
}
%
{
\voffset
}{
4.6mm
}
%
{
\bindingoffset
}{
7mm
}
%
{
297mm
}{
210mm
}
%
%
%
% Must explicitly reset to 0 because we call \afourpaper, apparently,
% Must explicitly reset to 0 because we call \afourpaper.
% although this does not entirely make sense.
\globaldefs
= 0
\globaldefs
= 0
}}
}}
% Use @afourwide to print on
European A4 paper in wid
e format.
% Use @afourwide to print on
A4 paper in landscap
e format.
\def\afourwide
{
%
\def\afourwide
{
{
\globaldefs
= 1
\afourpaper
\afourpaper
\internalpagesizes
{
6.5in
}{
9.5in
}{
\hoffset
}{
\normaloffset
}{
\bindingoffset
}{
7mm
}
%
\internalpagesizes
{
241mm
}{
165mm
}
%
}
{
\voffset
}{
-2.95mm
}
%
{
\bindingoffset
}{
7mm
}
%
{
297mm
}{
210mm
}
%
\globaldefs
= 0
}}
% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
% Perhaps we should allow setting the margins, \topskip, \parskip,
% Perhaps we should allow setting the margins, \topskip, \parskip,
...
@@ -6145,7 +6320,16 @@ should work if nowhere else does.}
...
@@ -6145,7 +6320,16 @@ should work if nowhere else does.}
\parskip
= 3pt plus 2pt minus 1pt
\parskip
= 3pt plus 2pt minus 1pt
\setleading
{
\textleading
}
%
\setleading
{
\textleading
}
%
%
%
\internalpagesizes
{
#1
}{
\hsize
}{
\voffset
}{
\normaloffset
}{
\bindingoffset
}{
44pt
}
%
\dimen
0 = #1
\advance\dimen
0 by
\voffset
%
\dimen
2 =
\hsize
\advance\dimen
2 by
\normaloffset
%
\internalpagesizes
{
#1
}{
\hsize
}
%
{
\voffset
}{
\normaloffset
}
%
{
\bindingoffset
}{
44pt
}
%
{
\dimen
0
}{
\dimen
2
}
%
}}
}}
% Set default to letter.
% Set default to letter.
...
@@ -6269,16 +6453,8 @@ should work if nowhere else does.}
...
@@ -6269,16 +6453,8 @@ should work if nowhere else does.}
@let+=@normalplus
@let+=@normalplus
@let
$
=
@normaldollar
}
%$ font-lock fix
@let
$
=
@normaldollar
}
%$ font-lock fix
@def@normalturnoffactive
{
@let"
=
@normaldoublequote
% Same as @turnoffactive except for \.
@let
\=
@normalbackslash
@def@normalturnoffactive
{
@turnoffactive @let
\=
@normalbackslash
}
@let~
=
@normaltilde
@let
^
=
@normalcaret
@let
_
=
@normalunderscore
@let|
=
@normalverticalbar
@let<
=
@normalless
@let>
=
@normalgreater
@let
+=
@normalplus
@let
$
=@normaldollar
}
%$ font-lock fix
% Make _ and + \other characters, temporarily.
% Make _ and + \other characters, temporarily.
% This is canceled by @fixbackslash.
% This is canceled by @fixbackslash.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment