Standard Document Classes For L TEX Version 2e: A Johannes Braams 1997/10/10
Standard Document Classes For L TEX Version 2e: A Johannes Braams 1997/10/10
A
T
E
X version 2e
.
219 10pt | 11pt | 12pt
220 \setlength\smallskipamount{3\p@ \@plus 1\p@ \@minus 1\p@}
221 \setlength\medskipamount{6\p@ \@plus 2\p@ \@minus 2\p@}
222 \setlength\bigskipamount{12\p@ \@plus 4\p@ \@minus 4\p@}
223 /10pt | 11pt | 12pt
\@lowpenalty
\@medpenalty
\@highpenalty
The commands \nopagebreak and \nolinebreak put in penalties to discourage
these breaks at the point they are put in. They use \@lowpenalty, \@medpenalty
or \@highpenalty, dependent on their argument.
224 article | report | book
225 \@lowpenalty 51
226 \@medpenalty 151
227 \@highpenalty 301
\clubpenalty
\widowpenalty
These penalties are use to discourage club and widow lines. Because we use their
default values we only show them here, commented out.
228 % \clubpenalty 150
229 % \widowpenalty 150
\displaywidowpenalty
\predisplaypenalty
\postdisplaypenalty
Discourage (but not so much) widows in front of a math display and forbid break-
ing directly in front of a display. Allow break after a display without a penalty.
Again the default values are used, therefore we only show them here.
11
230 % \displaywidowpenalty 50
231 % \predisplaypenalty 10000
232 % \postdisplaypenalty 0
\interlinepenalty Allow the breaking of a page in the middle of a paragraph.
233 % \interlinepenalty 0
\brokenpenalty We allow the breaking of a page after a hyphenated line.
234 % \brokenpenalty 100
235 /article | report | book
6.3 Page Layout
All margin dimensions are measured from a point one inch from the top and
lefthand side of the page.
6.3.1 Vertical spacing
\headheight
\headsep
\topskip
The \headheight is the height of the box that will contain the running head. The
\headsep is the distance between the bottom of the running head and the top of
the text. The \topskip is the \baselineskip for the rst line on a page; L
A
T
E
Xs
output routine will not work properly if it has the value 0pt, so do not do that!
236 10pt | 11pt | 12pt
237 \setlength\headheight{12\p@}
238 !bk\setlength\headsep {25\p@}
239 10pt & bk\setlength\headsep {.25in}
240 11pt & bk\setlength\headsep {.275in}
241 12pt & bk\setlength\headsep {.275in}
242 10pt\setlength\topskip {10\p@}
243 11pt\setlength\topskip {11\p@}
244 12pt\setlength\topskip {12\p@}
\footskip The distance from the baseline of the box which contains the running footer to
the baseline of last line of text is controlled by the \footskip.
245 !bk\setlength\footskip{30\p@}
246 10pt & bk\setlength\footskip{.35in}
247 11pt & bk\setlength\footskip{.38in}
248 12pt & bk\setlength\footskip{30\p@}
\maxdepth The T
E
X primitive register \maxdepth has a function that is similar to that of
\topskip. The register \@maxdepth should always contain a copy of \maxdepth.
This is achieved by setting it internally at \begin{document}. In both plain T
E
X
and L
A
T
E
X 2.09 \maxdepth had a xed value of 4pt; in native L
A
T
E
X2e mode we
let the value depend on the typesize. We set it so that \maxdepth + \topskip =
typesize 1.5. As it happens, in these classes \topskip is equal to the typesize,
therefore we set \maxdepth to half the value of \topskip.
249 \if@compatibility \setlength\maxdepth{4\p@} \else
250 \setlength\maxdepth{.5\topskip} \fi
12
6.3.2 The dimension of text
\textwidth When we are in compatibility mode we have to make sure that the dimensions of
the printed area are not dierent from what the user was used to see.
251 \if@compatibility
252 \if@twocolumn
253 \setlength\textwidth{410\p@}
254 \else
255 10pt&!bk \setlength\textwidth{345\p@}
256 11pt&!bk \setlength\textwidth{360\p@}
257 12pt&!bk \setlength\textwidth{390\p@}
258 10pt & bk \setlength\textwidth{4.5in}
259 11pt & bk \setlength\textwidth{5in}
260 12pt & bk \setlength\textwidth{5in}
261 \fi
When we are not in compatibility mode we can set some of the dimensions dier-
ently, taking into account the paper size for instance.
262 \else
First, we calculate the maximum \textwidth, which we will allow on the selected
paper and store it in \@tempdima. Then we store the length of a line with ap-
proximately 6070 characters in \@tempdimb. The values given are more or less
suitable when Computer Modern fonts are used.
263 \setlength\@tempdima{\paperwidth}
264 \addtolength\@tempdima{-2in}
265 10pt \setlength\@tempdimb{345\p@}
266 11pt \setlength\@tempdimb{360\p@}
267 12pt \setlength\@tempdimb{390\p@}
Now we can set the \textwidth, depending on whether we will be setting one
or two columns.
In two column mode each column shouldnt be wider than \@tempdimb (which
could happen on a3 paper for instance).
268 \if@twocolumn
269 \ifdim\@tempdima>2\@tempdimb\relax
270 \setlength\textwidth{2\@tempdimb}
271 \else
272 \setlength\textwidth{\@tempdima}
273 \fi
In one column mode the text should not be wider than the minimum of the
paperwidth (minus 2 inches for the margins) and the maximum length of a line as
dened by the number of characters.
274 \else
275 \ifdim\@tempdima>\@tempdimb\relax
276 \setlength\textwidth{\@tempdimb}
277 \else
278 \setlength\textwidth{\@tempdima}
279 \fi
13
280 \fi
281 \fi
Here we modify the width of the text a little to be a whole number of points.
282 \if@compatibility\else
283 \@settopoint\textwidth
284 \fi
\textheight Now that we have computed the width of the text, we have to take care of the
height. The \textheight is the height of text (including footnotes and gures,
excluding running head and foot).
First make sure that the compatibility mode gets the same dimensions as we
had with L
A
T
E
X2.09. The number of lines was calculated as the oor of the old
\textheight minus \topskip, divided by \baselineskip for \normalsize. The
old value of \textheight was 528pt.
285 \if@compatibility
286 10pt&!bk \setlength\textheight{43\baselineskip}
287 10pt & bk \setlength\textheight{41\baselineskip}
288 11pt \setlength\textheight{38\baselineskip}
289 12pt \setlength\textheight{36\baselineskip}
Again we compute this, depending on the papersize and depending on the
baselineskip that is used, in order to have a whole number of lines on the page.
290 \else
291 \setlength\@tempdima{\paperheight}
We leave at least a 1 inch margin on the top and the bottom of the page.
292 \addtolength\@tempdima{-2in}
We also have to leave room for the running headers and footers.
293 \addtolength\@tempdima{-1.5in}
Then we divide the result by the current \baselineskip and store this in the
count register \@tempcnta, which then contains the number of lines that t on
this page.
294 \divide\@tempdima\baselineskip
295 \@tempcnta=\@tempdima
From this we can calculate the height of the text.
296 \setlength\textheight{\@tempcnta\baselineskip}
297 \fi
The rst line on the page has a height of \topskip.
298 \addtolength\textheight{\topskip}
6.3.3 Margins
Most of the values of these parameters are now calculated, based on the papersize
in use. In the calcluations the \marginparsep needs to be taken into account so
we give it its value rst.
14
\marginparsep
\marginparpush
The horizontal space between the main text and marginal notes is determined by
\marginparsep, the minimum vertical separation between two marginal notes is
controlled by \marginparpush.
299 \if@twocolumn
300 \setlength\marginparsep {10\p@}
301 \else
302 10pt&!bk \setlength\marginparsep{11\p@}
303 11pt&!bk \setlength\marginparsep{10\p@}
304 12pt&!bk \setlength\marginparsep{10\p@}
305 bk \setlength\marginparsep{7\p@}
306 \fi
307 10pt | 11pt\setlength\marginparpush{5\p@}
308 12pt\setlength\marginparpush{7\p@}
Now we can give the values for the other margin parameters. For native
L
A
T
E
X2
.
1020 \else
1021 \newenvironment{titlepage}
1022 {%
1023 book \cleardoublepage
41
1024 \if@twocolumn
1025 \@restonecoltrue\onecolumn
1026 \else
1027 \@restonecolfalse\newpage
1028 \fi
1029 \thispagestyle{empty}%
1030 \setcounter{page}\@ne
1031 }%
1032 {\if@restonecol\twocolumn \else \newpage \fi
If we are not in two-side mode the rst page after the title page should also get
page number 1.
1033 \if@twoside\else
1034 \setcounter{page}\@ne
1035 \fi
1036 }
1037 \fi
7.4.7 Appendix
\appendix The \appendix command is not really an environment, it is a macro that makes
some changes in the way things are done.
In the article document class the \appendix command must do the following:
reset the section and subsection counters to zero,
redene \thesection to produce alphabetic appendix numbers.
1038 article
1039 \newcommand\appendix{\par
1040 \setcounter{section}{0}%
1041 \setcounter{subsection}{0}%
1042 \renewcommand\thesection{\@Alph\c@section}}
1043 /article
In the report and book document classes the \appendix command must do
the following:
reset the chapter and section counters to zero,
set \@chapapp to \appendixname (for messages),
redene the chapter counter to produce appendix numbers,
possibly redene the \chapter command if appendix titles and headings are
to look dierent from chapter titles and headings.
1044 report | book
1045 \newcommand\appendix{\par
1046 \setcounter{chapter}{0}%
1047 \setcounter{section}{0}%
1048 \renewcommand\@chapapp{\appendixname}%
1049 \renewcommand\thechapter{\@Alph\c@chapter}}
1050 /report | book
42
7.5 Setting parameters for existing environments
7.5.1 Array and tabular
\arraycolsep The columns in an array environment are separated by 2\arraycolsep.
1051 \setlength\arraycolsep{5\p@}
\tabcolsep The columns in an tabular environment are separated by 2\tabcolsep.
1052 \setlength\tabcolsep{6\p@}
\arrayrulewidth The width of rules in the array and tabular environments is given by
\arrayrulewidth.
1053 \setlength\arrayrulewidth{.4\p@}
\doublerulesep The space between adjacent rules in the array and tabular environments is given
by \doublerulesep.
1054 \setlength\doublerulesep{2\p@}
7.5.2 Tabbing
\tabbingsep This controls the space that the \ command puts in. (See L
A
T
E
X manual for an
explanation.)
1055 \setlength\tabbingsep{\labelsep}
7.5.3 Minipage
\@minipagerestore The macro \@minipagerestore is called upon entry to a minipage environment
to set up things that are to be handled dierently inside a minipage environment.
In the current styles, it does nothing.
\@mpfootins Minipages have their own footnotes; \skip\@mpfootins plays same role for foot-
notes in a minipage as \skip\footins does for ordinary footnotes.
1056 \skip\@mpfootins = \skip\footins
7.5.4 Framed boxes
\fboxsep The space left by \fbox and \framebox between the box and the text in it.
\fboxrule The width of the rules in the box made by \fbox and \framebox.
1057 \setlength\fboxsep{3\p@}
1058 \setlength\fboxrule{.4\p@}
43
7.5.5 Equation and eqnarray
\theequation When within chapters, the equation counter will be reset at the beginning of a
new chapter and the equation number will be prexed by the chapter number.
This code must follow the \chapter denition or, more exactly, the denition
of the chapter counter.
1059 article\renewcommand \theequation {\@arabic\c@equation}
1060 report | book
1061 \@addtoreset {equation}{chapter}
1062 \renewcommand\theequation
1063 {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@equation}
1064 /report | book
\jot \jot is the extra space added between lines of an eqnarray environment. The
default value is used.
1065 % \setlength\jot{3pt}
\@eqnnum The macro \@eqnnum denes how equation numbers are to appear in equations.
Again the default is used.
1066 % \def\@eqnnum{(\theequation)}
7.6 Floating objects
The le latex.dtx only denes a number of tools with which oating objects can
be dened. This is done in the document class. It needs to dene the following
macros for each oating object of type TYPE (e.g., TYPE = gure).
\fps@TYPE The default placement specier for oats of type TYPE.
\ftype@TYPE The type number for oats of type TYPE. Each TYPE has associated
a unique positive TYPE number, which is a power of two. E.g., gures might
have type number 1, tables type number 2, programs type number 4, etc.
\ext@TYPE The le extension indicating the le on which the contents list for oat
type TYPE is stored. For example, \ext@figure = lof.
\fnum@TYPE A macro to generate the gure number for a caption. For example,
\fnum@TYPE == Figure \thefigure.
\@makecaptionnumtext A macro to make a caption, with num the value
produced by \fnum@... and text the text of the caption. It can assume
its in a \parbox of the appropriate width. This will be used for all oating
objects.
The actual environment that implements a oating object such as a gure is de-
ned using the macros \@float and \end@float, which are dened in latex.dtx.
An environment that implements a single column oating object is started with
\@float{TYPE}[placement ] of type TYPE with placement as the placement
specier. The default value of PLACEMENT is dened by \fps@TYPE.
44
The environment is ended by \end@float. E.g., \figure == \@floatgure,
\endfigure == \end@float.
7.6.1 Figure
Here is the implementation of the gure environment.
\c@figure First we have to allocate a counter to number the gures.
In the report and book document classes gures within chapters are numbered
per chapter.
1067 article
1068 \newcounter{figure}
1069 \renewcommand \thefigure {\@arabic\c@figure}
1070 /article
1071 report | book
1072 \newcounter{figure}[chapter]
1073 \renewcommand \thefigure
1074 {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@figure}
1075 /report | book
\fps@figure
\ftype@figure
\ext@figure
\num@figure
Here are the parameters for the oating objects of type gure.
1076 \def\fps@figure{tbp}
1077 \def\ftype@figure{1}
1078 \def\ext@figure{lof}
1079 \def\fnum@figure{\figurename~\thefigure}
figure
figure*
And the denition of the actual environment. The form with the * is used for
double column gures.
1080 \newenvironment{figure}
1081 {\@float{figure}}
1082 {\end@float}
1083 \newenvironment{figure*}
1084 {\@dblfloat{figure}}
1085 {\end@dblfloat}
7.6.2 Table
Here is the implementation of the table environment. It is very much the same as
the gure environment.
\c@table First we have to allocate a counter to number the tables.
In the report and book document classes tables within chapters are numbered
per chapter.
1086 article
1087 \newcounter{table}
1088 \renewcommand\thetable{\@arabic\c@table}
1089 /article
1090 report | book
45
1091 \newcounter{table}[chapter]
1092 \renewcommand \thetable
1093 {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@table}
1094 /report | book
\fps@table
\ftype@table
\ext@table
\num@table
Here are the parameters for the oating objects of type table.
1095 \def\fps@table{tbp}
1096 \def\ftype@table{2}
1097 \def\ext@table{lot}
1098 \def\fnum@table{\tablename~\thetable}
table
table*
And the denition of the actual environment. The form with the * is used for
double column tables.
1099 \newenvironment{table}
1100 {\@float{table}}
1101 {\end@float}
1102 \newenvironment{table*}
1103 {\@dblfloat{table}}
1104 {\end@dblfloat}
7.6.3 Captions
\@makecaption The \caption command calls \@makecaption to format the caption of oating
objects. It gets two arguments, number, the number of the oating object and
text , the text of the caption. Usually number contains a string such as Figure
3.2. The macro can assume it is called inside a \parbox of right width, with
\normalsize.
\abovecaptionskip
\belowcaptionskip
These lengths contain the amount of white space to leave above and below the
caption.
1105 \newlength\abovecaptionskip
1106 \newlength\belowcaptionskip
1107 \setlength\abovecaptionskip{10\p@}
1108 \setlength\belowcaptionskip{0\p@}
The denition of this macro is \long in order to allow more then one paragraph
in a caption.
1109 \long\def\@makecaption#1#2{%
1110 \vskip\abovecaptionskip
We want to see if the caption ts on one line on the page, therefore we rst typeset
it in a temporary box.
1111 \sbox\@tempboxa{#1: #2}%
We can the measure its width. It that is larger than the current \hsize we typeset
the caption as an ordinary paragraph.
1112 \ifdim \wd\@tempboxa >\hsize
1113 #1: #2\par
46
If the caption ts, we center it. Because this uses an \hbox directly in vertical
mode, it does not execute the \everypar tokens; the only thing that could be
needed here is resetting the minipage ag so we do this explicitly.
1114 \else
1115 \global \@minipagefalse
1116 \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
1117 \fi
1118 \vskip\belowcaptionskip}
7.7 Font changing
Here we supply the declarative font changing commands that were common in
L
A
T
E
X version 2.09 and earlier. These commands work in text mode and in
math mode. They are provided for compatibility, but one should start using
the \text... and \math... commands instead. These commands are dened
using \DeclareTextFontCommand, a command with three arguments: the user
command to be dened; L
A
T
E
X commands to execute in text mode and L
A
T
E
X
commands to execute in math mode.
\rm
\tt
\sf
The commands to change the family. When in compatibility mode we select the
default font rst, to get L
A
T
E
X2.09 behviour.
1119 \DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
1120 \DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
1121 \DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
\bf The command to change to the bold series. One should use \mdseries to explicitly
switch back to medium series.
1122 \DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
\sl
\it
\sc
And the commands to change the shape of the font. The slanted and small caps
shapes are not available by default as math alphabets, so those changes do nothing
in math mode. However, we do warn the user that the selection will not have any
eect.One should use \upshape to explicitly change back to the upright shape.
1123 \DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
1124 \DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
1125 \DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
\cal
\mit
The commands \cal and \mit should only be used in math mode, outside math
mode they have no eect. Currently the New Font Selection Scheme denes these
commands to generate warning messages. Therefore we have to dene them by
hand.
1126 \DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
1127 \DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
47
8 Cross Referencing
8.1 Table of Contents, etc.
A \section command writes a \contentsline{section}{title}{page} com-
mand on the .toc le, where title contains the contents of the entry and page
is the page number. If sections are being numbered, then title will be of the
form \numberline{num}{heading} where num is the number produced by
\thesection. Other sectioning commands work similarly.
A \caption command in a gure environment writes
\contentsline{figure}{\numberline{num}{ caption}}{page}
on the .lof le, where num is the number produced by \thefigure and
caption is the gure caption. It works similarly for a table environment.
The command \contentsline{name} expands to \l@name. So, to specify
the table of contents, we must dene \l@chapter, \l@section, \l@subsection,
... ; to specify the list of gures, we must dene \l@figure; and so on. Most of
these can be dened with the \@dottedtocline command, which works as follows.
\@dottedtocline{level }{indent }{numwidth}{title}{page}
level An entry is produced only if level <= value of the tocdepth counter.
Note, \chapter is level 0, \section is level 1, etc.
indent The indentation from the outer left margin of the start of the contents
line.
numwidth The width of a box in which the section number is to go, if title
includes a \numberline command.
\@pnumwidth
\@tocrmarg
\@dotsep
This command uses the following three parameters, which are set with a
\newcommand (so ems can be used to make them depend upon the font).
\@pnumwidth The width of a box in which the page number is put.
\@tocrmarg The right margin for multiple line entries. One wants \@tocrmarg
\@pnumwidth
\@dotsep Separation between dots, in mu units. Should be dened as a number
like 2 or 1.7
1128 \newcommand\@pnumwidth{1.55em}
1129 \newcommand\@tocrmarg{2.55em}
1130 \newcommand\@dotsep{4.5}
1131 article\setcounter{tocdepth}{3}
1132 !article\setcounter{tocdepth}{2}
8.1.1 Table of Contents
\tableofcontents This macro is used to request that L
A
T
E
X produces a table of contents. In the
report and book document classes the tables of contents, gures etc. are always
set in single-column style.
48
1133 \newcommand\tableofcontents{%
1134 report | book
1135 \if@twocolumn
1136 \@restonecoltrue\onecolumn
1137 \else
1138 \@restonecolfalse
1139 \fi
The title is set using the \chapter* command, making sure that the running head
if one is required contains the right information.
1140 \chapter*{\contentsname
1141 /report | book
1142 article \section*{\contentsname
1143 \@mkboth{%
1144 \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
The the actual table of contents is made by calling \@starttoc{toc}. After that
we restore twocolumn mode if necessary.
1145 \@starttoc{toc}%
1146 !article \if@restonecol\twocolumn\fi
1147 }
\l@part Each sectioning command needs an additional macro to format its entry in the
table of contents, as described above. The macro for the entry for parts is dened
in a special way.
First we make sure that if a pagebreak should occur, it occurs before this entry.
Also a little whitespace is added and a group begun to keep changes local.
1148 \newcommand*\l@part[2]{%
1149 \ifnum \c@tocdepth >-2\relax
1150 article \addpenalty\@secpenalty
1151 !article \addpenalty{-\@highpenalty}%
1152 \addvspace{2.25em \@plus\p@}%
1153 \begingroup
We set \parindent to 0pt and use \rightskip to leave enough room for the
pagenumbers. To prevent overfull box messages the \parfillskip is set to a
negative value.
1154 \parindent \z@ \rightskip \@pnumwidth
1155 \parfillskip -\@pnumwidth
Now we can set the entry, in a large bold font. We make sure to leave vertical
mode, set the part title and add the pagenumber, set ush right.
1156 {\leavevmode
1157 \large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par
Prevent a pagebreak immediately after this entry, but use \everypar to reset the
\if@nobreak switch. Finally we close the group.
1158 \nobreak
1159 article \if@compatibility
1160 \global\@nobreaktrue
49
1161 \everypar{\global\@nobreakfalse\everypar{}}%
1162 article \fi
1163 \endgroup
1164 \fi}
\l@chapter This macro formats the entries in the table of contents for chapters. It is very
similar to \l@part
First we make sure that if a pagebreak should occur, it occurs before this entry.
Also a little whitespace is added and a group begun to keep changes local.
1165 report | book
1166 \newcommand*\l@chapter[2]{%
1167 \ifnum \c@tocdepth >\m@ne
1168 \addpenalty{-\@highpenalty}%
1169 \vskip 1.0em \@plus\p@
The macro \numberline requires that the width of the box that holds the
part number is stored in L
A
T
E
Xs scratch register \@tempdima. Therefore we put
it there. We begin a group, and change some of the paragraph parameters.
1170 \setlength\@tempdima{1.5em}%
1171 \begingroup
1172 \parindent \z@ \rightskip \@pnumwidth
1173 \parfillskip -\@pnumwidth
Then we leave vertical mode and switch to a bold font.
1174 \leavevmode \bfseries
Because we do not use \numberline here, we have do some ne tuning by hand,
before we can set the entry. We discourage but not disallow a pagebreak immedi-
ately after a chapter entry.
1175 \advance\leftskip\@tempdima
1176 \hskip -\leftskip
1177 #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
1178 \penalty\@highpenalty
1179 \endgroup
1180 \fi}
1181 /report | book
\l@section In the article document class the entry in the table of contents for sections looks
much like the chapter entries for the report and book document classes.
First we make sure that if a pagebreak should occur, it occurs before this entry.
Also a little whitespace is added and a group begun to keep changes local.
1182 article
1183 \newcommand*\l@section[2]{%
1184 \ifnum \c@tocdepth >\z@
1185 \addpenalty\@secpenalty
1186 \addvspace{1.0em \@plus\p@}%
The macro \numberline requires that the width of the box that holds the
part number is stored in L
A
T
E
Xs scratch register \@tempdima. Therefore we put
it there. We begin a group, and change some of the paragraph parameters.
50
1187 \setlength\@tempdima{1.5em}%
1188 \begingroup
1189 \parindent \z@ \rightskip \@pnumwidth
1190 \parfillskip -\@pnumwidth
Then we leave vertical mode and switch to a bold font.
1191 \leavevmode \bfseries
Because we do not use \numberline here, we have do some ne tuning by hand,
before we can set the entry. We discourage but not disallow a pagebreak immedi-
ately after a chapter entry.
1192 \advance\leftskip\@tempdima
1193 \hskip -\leftskip
1194 #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
1195 \endgroup
1196 \fi}
1197 /article
In the report and book document classes the denition for \l@section is much
simpler.
1198 report | book
1199 \newcommand*\l@section{\@dottedtocline{1}{1.5em}{2.3em}}
1200 /report | book
\l@subsection
\l@subsubsection
\l@paragraph
\l@subparagraph
All lower level entries are dened using the macro \@dottedtocline (see above).
1201 article
1202 \newcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
1203 \newcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
1204 \newcommand*\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}}
1205 \newcommand*\l@subparagraph{\@dottedtocline{5}{10em}{5em}}
1206 /article
1207 report | book
1208 \newcommand*\l@subsection{\@dottedtocline{2}{3.8em}{3.2em}}
1209 \newcommand*\l@subsubsection{\@dottedtocline{3}{7.0em}{4.1em}}
1210 \newcommand*\l@paragraph{\@dottedtocline{4}{10em}{5em}}
1211 \newcommand*\l@subparagraph{\@dottedtocline{5}{12em}{6em}}
1212 /report | book
8.1.2 List of gures
\listoffigures This macro is used to request that L
A
T
E
X produces a list of gures. It is very
similar to \tableofcontents.
1213 \newcommand\listoffigures{%
1214 report | book
1215 \if@twocolumn
1216 \@restonecoltrue\onecolumn
1217 \else
1218 \@restonecolfalse
1219 \fi
1220 \chapter*{\listfigurename
51
1221 /report | book
1222 article \section*{\listfigurename
1223 \@mkboth{\MakeUppercase\listfigurename}%
1224 {\MakeUppercase\listfigurename}}%
1225 \@starttoc{lof}%
1226 report | book \if@restonecol\twocolumn\fi
1227 }
\l@figure This macro produces an entry in the list of gures.
1228 \newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
8.1.3 List of tables
\listoftables This macro is used to request that L
A
T
E
X produces a list of tables. It is very similar
to \tableofcontents.
1229 \newcommand\listoftables{%
1230 report | book
1231 \if@twocolumn
1232 \@restonecoltrue\onecolumn
1233 \else
1234 \@restonecolfalse
1235 \fi
1236 \chapter*{\listtablename
1237 /report | book
1238 article \section*{\listtablename
1239 \@mkboth{%
1240 \MakeUppercase\listtablename}{\MakeUppercase\listtablename}}%
1241 \@starttoc{lot}%
1242 report | book \if@restonecol\twocolumn\fi
1243 }
\l@table This macro produces an entry in the list of tables.
1244 \let\l@table\l@figure
8.2 Bibliography
\bibindent The open bibliography format uses an indentation of \bibindent.
1245 \newdimen\bibindent
1246 \setlength\bibindent{1.5em}
thebibliography The thebibliography environment executes the following commands:
\renewcommand{\newblock}{\hskip.11em \@plus.33em \@minus.07em}
Denes the closed format, where the blocks (major units of information) of
an entry run together.
\sloppy Used because its rather hard to do line breaks in bibliographies,
\sfcode\.=1000\relax Causes a . (period) not to produce an end-of-
sentence space.
52
The implementation of this environment is based on the generic list environ-
ment. It uses the enumiv counter internally to generate the labels of the list.
When an empty thebibliography environment is found, a warning is issued.
1247 \newenvironment{thebibliography}[1]
1248 article
1249 {\section*{\refname
1250 \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}}%
1251 /article
1252 !article
1253 {\chapter*{\bibname
1254 \@mkboth{\MakeUppercase\bibname}{\MakeUppercase\bibname}}%
1255 /!article
1256 \list{\@biblabel{\@arabic\c@enumiv}}%
1257 {\settowidth\labelwidth{\@biblabel{#1}}%
1258 \leftmargin\labelwidth
1259 \advance\leftmargin\labelsep
1260 \@openbib@code
1261 \usecounter{enumiv}%
1262 \let\p@enumiv\@empty
1263 \renewcommand\theenumiv{\@arabic\c@enumiv}}%
1264 \sloppy
This is setting the normal (non-innite) value of \clubpenalty for the whole of
this environment, so we must reset its stored value also. (Why is there a % after
the second 4000 below?)
1265 \clubpenalty4000
1266 \@clubpenalty \clubpenalty
1267 \widowpenalty4000%
1268 \sfcode\.\@m}
1269 {\def\@noitemerr
1270 {\@latex@warning{Empty thebibliography environment}}%
1271 \endlist}
\newblock The default denition for \newblock is to produce a small space.
1272 \newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em}
\@openbib@code The default denition for \@openbib@code is to do nothing. It will be changed by
the openbib option.
1273 \let\@openbib@code\@empty
\@biblabel The label for a \bibitem[...] command is produced by this macro. The default
from latex.dtx is used.
1274 % \renewcommand*{\@biblabel}[1]{[#1]\hfill}
\@cite The output of the \cite command is produced by this macro. The default from
latex.dtx is used.
1275 % \renewcommand*{\@cite}[1]{[#1]}
53
8.3 The index
theindex The environment theindex can be used for indices. It makes an index with
two columns, with each entry a separate paragraph. At the user level the com-
mands \item, \subitem and \subsubitem are used to produce index entries of
various levels. When a new letter of the alphabet is encountered an amount of
\indexspace white space can be added.
1276 \newenvironment{theindex}
1277 {\if@twocolumn
1278 \@restonecolfalse
1279 \else
1280 \@restonecoltrue
1281 \fi
1282 \columnseprule \z@
1283 \columnsep 35\p@
1284 article \twocolumn[\section*{\indexname}]%
1285 !article \twocolumn[\@makeschapterhead{\indexname}]%
1286 \@mkboth{\MakeUppercase\indexname}%
1287 {\MakeUppercase\indexname}%
1288 \thispagestyle{plain}\parindent\z@
1289 \parskip\z@ \@plus .3\p@\relax
1290 \let\item\@idxitem}
When the document continues after the index and it was a one column document
we have to switch back to one column after the index.
1291 {\if@restonecol\onecolumn\else\clearpage\fi}
\@idxitem
\subitem
\subsubitem
These macros are used to format the entries in the index.
1292 \newcommand\@idxitem{\par\hangindent 40\p@}
1293 \newcommand\subitem{\@idxitem \hspace*{20\p@}}
1294 \newcommand\subsubitem{\@idxitem \hspace*{30\p@}}
\indexspace The amount of white space that is inserted between letter blocks in the index.
1295 \newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
8.4 Footnotes
\footnoterule Usually, footnotes are separated from the main body of the text by a small rule.
This rule is drawn by the macro \footnoterule. We have to make sure that the
rule takes no vertical space (see plain.tex) so we compensate for the natural
heigth of the rule of 0.4pt by adding the right amount of vertical skip.
To prevent the rule from colliding with the footnote we rst add a little negative
vertical skip, then we put the rule and make sure we end up at the same point
where we begun this operation.
1296 \renewcommand\footnoterule{%
1297 \kern-3\p@
1298 \hrule\@width.4\columnwidth
1299 \kern2.6\p@}
54
\c@footnote Footnotes are numbered within chapters in the report and book document styles.
1300 !article\@addtoreset{footnote}{chapter}
\@makefntext The footnote mechanism of L
A
T
E
X calls the macro \@makefntext to produce the
actual footnote. The macro gets the text of the footnote as its argument and
should use \@thefnmark as the mark of the footnote. The macro \@makefntextis
called when eectively inside a \parbox of width \columnwidth (i.e., with \hsize
= \columnwidth).
An example of what can be achieved is given by the following piece of T
E
X
code.
\newcommand\@makefntext[1]{%
\@setpar{\@@par
\@tempdima = \hsize
\advance\@tempdima-10pt
\parshape \@ne 10pt \@tempdima}%
\par
\parindent 1em\noindent
\hbox to \z@{\hss\@makefnmark}#1}
The eect of this denition is that all lines of the footnote are indented by 10pt,
while the rst line of a new paragraph is indented by 1em. To change these
dimensions, just substitute the desired value for 10pt (in both places) or 1em.
The mark is ushright against the footnote.
In these document classes we use a simpler macro, in which the footnote text
is set like an ordinary text paragraph, with no indentation except on the rst line
of a paragraph, and the rst line of the footnote. Thus, all the macro must do is
set \parindent to the appropriate value for succeeding paragraphs and put the
proper indentation before the mark.
1301 \newcommand\@makefntext[1]{%
1302 \parindent 1em%
1303 \noindent
1304 \hb@[email protected]{\hss\@makefnmark}#1}
\@makefnmark The footnote markers that are printed in the text to point to the footnotes should
be produced by the macro \@makefnmark. We use the default denition for it.
1305 %\renewcommand\@makefnmark{\hbox{\@textsuperscript
1306 % {\normalfont\@thefnmark}}}
9 Initialization
9.1 Words
This document class is for documents prepared in the English language. To prepare
a version for another language, various English words must be replaced. All the
English words that require replacement are dened below in command names.
55
These commands may be redened in any class or package that is customising
L
A
T
E
X for use with non-English languages.
\contentsname
\listfigurename
\listtablename
1307 \newcommand\contentsname{Contents}
1308 \newcommand\listfigurename{List of Figures}
1309 \newcommand\listtablename{List of Tables}
\refname
\bibname
\indexname
1310 article\newcommand\refname{References}
1311 report | book\newcommand\bibname{Bibliography}
1312 \newcommand\indexname{Index}
\figurename
\tablename
1313 \newcommand\figurename{Figure}
1314 \newcommand\tablename{Table}
\partname
\chaptername
\appendixname
\abstractname
1315 \newcommand\partname{Part}
1316 report | book\newcommand\chaptername{Chapter}
1317 \newcommand\appendixname{Appendix}
1318 !book\newcommand\abstractname{Abstract}
9.2 Date
\today This macro uses the T
E
X primitives \month, \day and \year to provide the date
of the L
A
T
E
X-run.
At \begin{document} this denition will be optimised so that the names of
all the wrong months are not stored. This optimisation is not done here as that
would freeze \today in any special purpose format made by loading the class le
into the format le.
1319 \def\today{\ifcase\month\or
1320 January\or February\or March\or April\or May\or June\or
1321 July\or August\or September\or October\or November\or December\fi
1322 \space\number\day, \number\year}
9.3 Two column mode
\columnsep This gives the distance between two columns in two column mode.
1323 \setlength\columnsep{10\p@}
\columnseprule This gives the width of the rule between two columns in two column mode. We
have no visible rule.
1324 \setlength\columnseprule{0\p@}
56
9.4 The page style
We have plain pages in the document classes article and report unless the user
specied otherwise. In the book document class we use the page style headings
by default. We use arabic pagenumbers.
1325 !book\pagestyle{plain}
1326 book\pagestyle{headings}
1327 \pagenumbering{arabic}
9.5 Single or double sided printing
When the twoside option wasnt specied, we dont try to make each page as long
as all the others.
1328 \if@twoside
1329 \else
1330 \raggedbottom
1331 \fi
When the twocolumn option was specied we call \twocolumn to activate this
mode. We try to make each column as long as the others, but call sloppy to make
our life easier.
1332 \if@twocolumn
1333 \twocolumn
1334 \sloppy
1335 \flushbottom
Normally we call \onecolumn to initiate typesetting in one column.
1336 \else
1337 \onecolumn
1338 \fi
1339 /article | report | book
Index
Numbers written in italic refer to the page where the corresponding entry is de-
scribed, the ones underlined to the code line of the denition, the rest to the code
lines where the entry is used.
Symbols
\@Roman . . . . . . . . . . 648
\@afterheading . . . .
. 726, 756, 804, 824
\@afterindentfalse .
. . . . . . . . 687, 781
\@author . . . . . 541,
557, 569, 603, 622
\@beginparpenalty .
. . . . . . . . 878, 966
\@biblabel . . . . . . .
. . 1256, 1257, 1274
\@chapapp . 496, 525,
658, 786, 811, 1048
\@chapter . . . . 782, 783
\@cite . . . . . . . . . . 1275
\@clubpenalty . . . . 1266
\@date . . . . . . . 542,
560, 570, 604, 625
\@dblfloat . 1084, 1103
\@dblfpbot . . . . . . . 455
\@dblfpsep . . . . . . . 455
\@dblfptop . . . . . . . 455
\@dotsep . . . . . . . . 1128
\@dottedtocline 1199,
12021205,
12081211, 1228
\@endparpenalty 878, 969
\@endpart . 746, 764, 766
\@eqnnum . . . . . . . . 1066
57
\@evenfoot 471, 473, 532
\@evenhead 471, 474, 533
\@fnsymbol . . . . . . . 580
\@fontswitch 1126, 1127
\@fpbot . . . . . . . . . . 440
\@fpsep . . . . . . . . . . 440
\@fptop . . . . . . . . . . 440
\@highpenalty . 224,
1151, 1168, 1178
\@idxitem . . 1290, 1292
\@itempenalty . . . . . 878
\@latex@warning . . 1270
\@listI . . . . . . 108, 883
\@listi . . . . . . 108,
116, 126, 136,
149, 159, 169, 883
\@listii . . . . . . . . . 902
\@listiii . . . . . . . . 902
\@listiv . . . . . . . . . 902
\@listv . . . . . . . . . . 902
\@listvi . . . . . . . . . 902
\@lowpenalty . . . . . .
. 224, 879881, 966
\@mainmatterfalse .
. . . . . . . . 666, 682
\@mainmattertrue 8, 674
\@makecaption . . . . 1105
\@makechapterhead .
. . . . 801, 803, 806
\@makefnmark . . . . . .
. . 581, 1304, 1305
\@makefntext . 582, 1301
\@makeschapterhead .
821, 823, 826, 1285
\@maketitle . . . 587,
589, 594, 601, 611
\@medpenalty . . . . . . 224
\@minipagefalse . . 1115
\@minipagerestore 1056
\@mparswitchfalse . 41
\@mparswitchtrue . . 43
\@mpfootins . . . . . . 1056
\@nobreakfalse . . . 1161
\@nobreaktrue . . . . 1160
\@noitemerr . . . . . . 1269
\@normalsize . . . . . . 87
\@oddfoot . . . . . . . .
. 471, 473, 509, 532
\@oddhead . . . . . . . .
. 471, 475, 510, 534
\@openbib@code . . . .
. . . 66, 1260, 1273
\@openrightfalse . . 56
\@openrighttrue . 53, 55
\@part . . . . 688, 705, 707
\@pnumwidth . . . 1128,
1154, 1155,
1157, 1172,
1173, 1177,
1189, 1190, 1194
\@ptsize . . . . 1, 34,
36, 38, 39, 84, 85
\@restonecolfalse .
. . . . . . . 1013,
1027, 1138,
1218, 1234, 1278
\@restonecoltrue . .
. . . . . . . 1011,
1025, 1136,
1216, 1232, 1280
\@roman . . . . . . . . . . 940
\@schapter . . . 782, 820
\@secpenalty 1150, 1185
\@setfontsize 90, 96,
102, 112, 122,
132, 145, 155,
165, 178184,
187193, 196201
\@settopoint . . 283,
371, 372, 377, 392
\@spart . . . 688, 705, 748
\@startsection 835,
839, 843, 847, 851
\@starttoc . . . . . . .
. . 1145, 1225, 1241
\@textsuperscript .
. . . 581, 584, 1305
\@thanks . . . . . . . . .
. 562, 568, 596, 602
\@thefnmark . . . . . . .
. . . 581, 584, 1306
\@title . . . . . . 540,
552, 571, 605, 617
\@titlepagefalse . 5, 50
\@titlepagetrue . . 6, 48
\@tocrmarg . . . . . . 1128
\@topnewpage . . 801, 821
\@topnum . . . . . 593, 780
\@twocolumnfalse . . 59
\@twocolumntrue . . . 61
\@twosidefalse . . . . 41
\@twosidetrue . . . . . 43
\@width . . . . . . . . . 1298
A
\abovecaptionskip .
. . . . . . 1105, 1110
\abovedisplayshortskip
. . . . . . 92, 98,
104, 114, 124,
134, 147, 157, 167
\abovedisplayskip .
. . . . . . 91, 97,
103, 107, 113,
123, 133, 141,
146, 156, 166, 174
abstract (environ-
ment) . . . . . . 959
\abstractname . . . . .
968, 975, 979, 1315
\addcontentsline . .
. 711, 713, 732,
734, 787, 791, 795
\addtocontents 798, 799
\and . . . . . . . . . 575, 609
\appendix . . . . . . . 1038
\appendixname 1048, 1315
\arraycolsep . . . . . 1051
\arrayrulewidth . . 1053
\AtEndOfPackage . . . 65
\author . . . 540, 573, 607
B
\backmatter . . . . . . . 676
\baselineskip . . . . .
. 286289, 294, 296
\baselinestretch . . 207
\belowcaptionskip .
. . . . . . 1105, 1118
\belowdisplayshortskip
. . . . . . 93, 99,
105, 115, 125,
135, 148, 158, 168
\belowdisplayskip .
. . . . 107, 141, 174
\bf . . . . . . . . . . . . 1122
\bibindent 67, 68, 1245
\bibname 1253, 1254, 1310
\bigskipamount . . . . 219
\bottomfraction . . . 405
58
\brokenpenalty . . . . 234
C
\c@bottomnumber . . . 404
\c@chapter . . . . . . .
638, 651, 1049,
1063, 1074, 1093
\c@dbltopnumber . . . 409
\c@enumi . . . . . . . . . 938
\c@enumii . . . . . . . . 939
\c@enumiii . . . . . . . 940
\c@enumiv 941, 1256, 1263
\c@equation . 1059, 1063
\c@figure . . . . . . . 1067
\c@footnote . . 580, 1300
\c@paragraph . . 638, 656
\c@part . . . . . . 638, 648
\c@secnumdepth . . . .
. 480, 486, 494,
502, 515, 523,
636, 709, 718,
730, 740, 783, 809
\c@section . . . . . . .
638, 649, 652, 1042
\c@subparagraph 638, 657
\c@subsection . 638, 654
\c@subsubsection . .
. . . . . . . . 638, 655
\c@table . . . . . . . . 1086
\c@tocdepth . . . . . . .
. . 1149, 1167, 1184
\c@topnumber . . . . . . 401
\c@totalnumber . . . . 406
\cal . . . . . . . . . . . . 1126
\centering . . . 737, 760
\changes . . . . . . . . . 959
\chapter . 777, 1140,
1220, 1236, 1253
\chaptermark . . 492,
521, 536, 630, 797
\chaptername . 658, 1315
\cleardoublepage . .
. 662, 670, 678,
693, 778, 1009, 1023
\clearpage 664, 672,
680, 695, 778, 1291
\clubpenalty . . . . . .
. . 228, 1265, 1266
\col@number . . . . . . . 586
\columnsep . 1283, 1323
\columnseprule . . . .
. . . . . . 1282, 1324
\columnwidth . . . . . 1298
\contentsname . 1140,
1142, 1144, 1307
\cs . . . . . . . . . . . . . 959
D
\date . . . . . 540, 574, 608
\dblfloatpagefraction
. . . . . . . . . . . 411
\dblfloatsep . . . . . . 428
\dbltextfloatsep . . 428
\dbltopfraction . . . 410
\DeclareOldFontCommand
. . . . . . 11191125
\DeclareRobustCommand
. . . . . . 1126, 1127
description (environ-
ment) . . . . . . 953
\descriptionlabel .
. . . . . . . . 955, 957
\displaywidowpenalty
. . . . . . . . . . . 230
\doublerulesep . . . 1054
E
\endquotation . . . . . 983
\endtitlepage . . . . . 971
environments:
abstract . . . . . . 39
description . . . . 39
figure* . . . . . . . 45
figure . . . . . . . . 45
quotation . . . . . . 40
quote . . . . . . . . . 41
table* . . . . . . . . 46
table . . . . . . . . . 46
thebibliography 52
theindex . . . . . . 54
titlepage . . . . . . 41
verse . . . . . . . . . 40
\evensidemargin . . . 309
\ext@figure . . . . . . 1076
\ext@table . . . . . . 1095
F
\fboxrule . . . . . . . 1057
\fboxsep . . . . . . . . 1057
figure (environment) 1080
figure* (environment)
. . . . . . . . . . 1080
\figurename . 1079, 1313
\floatpagefraction . 408
\floatsep . . . . . . . . 413
\flushbottom . . . . . 1335
\fnum@figure . . . . . 1079
\fnum@table . . . . . . 1098
\footins . . . . 397, 1056
\footnote . . . . 548, 616
\footnoterule 547, 1296
\footnotesep . . . . . . 394
\footnotesize . 143, 546
\footskip . . . . 245, 390
\fps@figure . . . . . . 1076
\fps@table . . . . . . 1095
\frontmatter . . . . . . 659
\ftype@figure . . . . 1076
\ftype@table . . . . . 1095
H
\hb@xt@ . . . . . . . . . .
583, 1116, 1157,
1177, 1194, 1304
\headheight . . . 236, 387
\headsep . . . . . 236, 388
\Huge . . . . . . . . 177,
745, 763, 817, 831
\huge . . . . . . . . 177,
722, 741, 753, 811
I
\if@compatibility .
. . 9, 33, 40, 45,
49, 52, 58, 249,
251, 282, 285,
309, 379, 1006, 1159
\if@mainmatter . . 8,
495, 524, 784, 810
\if@openright 7, 661,
669, 677, 692, 778
\if@restonecol . . . .
. . . . . 3, 1018,
1032, 1146,
1226, 1242, 1291
\if@titlepage 4, 544, 962
\if@twocolumn . 211,
252, 268, 299,
344, 585, 698,
800, 820, 855,
59
864, 974, 983,
1010, 1024,
1135, 1215,
1231, 1277, 1332
\if@twoside 322, 350,
471, 768, 1033, 1328
\indexname . . . . . . .
. . 12841287, 1310
\indexspace . . . . . . 1295
\interlinepenalty .
. 233, 716, 738,
751, 761, 816, 830
\intextsep . . . . . . . 413
\it . . . . . . . . . . . . 1123
\item 993, 1000, 1004, 1290
\itemindent . . 68, 69,
954, 989, 990, 997
\itemsep . . 119, 129,
139, 152, 162,
172, 888, 893,
898, 917, 926, 988
\itshape . . . . . . . . 1123
J
\jot . . . . . . . . . . . . 1065
L
\l@chapter . . . . . . 1165
\l@figure . . 1228, 1244
\l@paragraph . . . . . 1201
\l@part . . . . . . . . . 1148
\l@section . . . . . . 1182
\l@subparagraph . . 1201
\l@subsection . . . . 1201
\l@subsubsection . 1201
\l@table . . . . . . . . 1244
\labelenumi . . . . . . . 942
\labelenumii . . . . . . 942
\labelenumiii . . . . . 942
\labelenumiv . . . . . . 942
\labelitemi . . . . . . . 949
\labelitemii . . . . . . 949
\labelitemiii . . . . . 949
\labelitemiv . . . . . . 949
\labelsep . 871, 904,
920, 929, 932,
935, 957, 1055, 1259
\labelwidth . . . 871,
903, 904, 919,
920, 928, 929,
931, 932, 934,
935, 954, 1257, 1258
\LARGE . . . . 177, 552, 617
\Large . . . . 177, 719, 838
\large 177, 554, 560,
619, 625, 842, 1157
\leftmargin . . . . . . .
. . 67, 116, 126,
136, 149, 159,
169, 855, 884,
902, 918, 927,
930, 933, 954,
991, 992, 998,
1003, 1258, 1259
\leftmargini 116, 126,
136, 149, 159,
169, 855, 872, 884
\leftmarginii . . . . .
. . . . 855, 902, 903
\leftmarginiii . . . .
. . . . 855, 918, 919
\leftmarginiv . . . . .
. . . . 855, 927, 928
\leftmarginv . . . . . .
. . . . 855, 930, 931
\leftmarginvi . . . . .
. . . . 855, 933, 934
\leftskip . . . . 1175,
1176, 1192, 1193
\lineskip . 204, 555, 620
\listfigurename 1220,
12221224, 1307
\listoffigures . . . 1213
\listoftables . . . . 1229
\listparindent . . . .
. 69, 990, 996, 997
\listtablename 1236,
1238, 1240, 1307
M
\mainmatter . . . . . . . 668
\makelabel . . . . . . . 955
\maketitle . . . . . . . 544
\MakeUppercase . . . .
. 479, 493, 501,
514, 522, 1144,
1223, 1224,
1240, 1250,
1254, 1286, 1287
\marginparpush . . . . 299
\marginparsep . . . . .
. . . . 299, 356, 364
\marginparwidth . . . 309
\mathbf . . . . . . . . . 1122
\mathcal . . . . . . . . 1126
\mathit . . . . . . . . . 1123
\mathnormal . . . . . . 1127
\mathrm . . . . . . . . . 1119
\mathsf . . . . . . . . . 1120
\mathtt . . . . . . . . . 1121
\maxdepth . . . . . . . . 249
\medskipamount . . . . 219
\mit . . . . . . . . . . . . 1126
N
\newblock . . . . 72, 1272
\newif . . . . . . . 3, 4, 7, 8
\normalfont . . . . . . .
. 581, 584, 717,
739, 752, 762,
808, 829, 838,
842, 846, 850,
854, 950, 958,
11191125, 1306
\normallineskip . . . 204
\normalsize . . . . . . .
. 87, 846, 850, 854
\num@figure . . . . . . 1076
\num@table . . . . . . 1095
O
\oddsidemargin . . . . 309
\onecolumn . . . 699,
1011, 1025,
1136, 1216,
1232, 1291, 1337
\overfullrule . . . 44, 46
P
\p@enumii . . . . . . . . 946
\p@enumiii . . . . . . . 946
\p@enumiv . . . 946, 1262
\pagenumbering . . . .
. . . 667, 675, 1327
\paperheight . . . 11,
14, 17, 20, 23,
26, 29, 30, 291, 385
\paperwidth . . . . . . .
. 12, 15, 18, 21,
24, 27, 30, 31,
263, 351, 359, 373
60
\paragraph . . . . . . . 847
\paragraphmark . . . . 630
\parindent . . . . . . .
. 208, 582, 715,
750, 808, 828,
851, 1154, 1172,
1189, 1288, 1302
\parsep 70, 118, 119,
128, 129, 138,
139, 151, 152,
161, 162, 171,
172, 886, 891,
896, 907, 911,
915, 917, 924, 999
\parskip . . . . 208, 1289
\part . . . . . . . . . . . . 684
\partname 719, 741, 1315
\partopsep . . . 874, 925
\postdisplaypenalty 230
\predisplaypenalty . 230
\ps@headings . . . . . . 471
\ps@myheadings . . . . 531
Q
\quad . . . . . 481, 487, 516
\quotation . . . . . . . 981
quotation (environ-
ment) . . . . . . 995
quote (environment) 1002
R
\refname 1249, 1250, 1310
\rm . . . . . . . . . . . . 1119
S
\sbox . . . . . . . . . . . 1111
\sc . . . . . . . . . . . . 1123
\scriptsize . . . . . . . 177
\scshape . . . . . . . . 1125
\section . . . . . 835,
975, 1142, 1222,
1238, 1249, 1284
\sectionmark . . 478,
500, 513, 537, 630
\sf . . . . . . . . . . . . 1119
\sffamily . . . . . . . 1120
\sl . . . . . . . . . . . . 1123
\small . . . . 110, 546, 977
\smallskipamount . . 219
\subitem . . . . . . . . 1292
\subparagraph . . . . . 851
\subparagraphmark . 630
\subsection . . . . . . . 839
\subsectionmark . . .
. . . . 484, 538, 630
\subsubitem . . . . . . 1292
\subsubsection . . . . 843
\subsubsectionmark . 630
T
\tabbingsep . . . . . . 1055
\tabcolsep . . . . . . 1052
table (environment) 1099
table* (environment) 1099
\tablename . 1098, 1313
\tableofcontents . 1133
\textasteriskcentered
. . . . . . . . . . . 951
\textbullet . . . . . . . 949
\textendash . . . . . . . 950
\textfloatsep . . . . . 413
\textfraction . . . . . 407
\textheight . . . 285, 389
\textperiodcentered 952
\textwidth . . . . . . .
. 251, 352, 360, 375
\thanks 548, 566, 599, 616
thebibliography (envi-
ronment) . . 1247
\thechapter . . . 496,
525, 648, 786,
788, 811, 1049,
1063, 1074, 1093
\theenumi . . . . . . . .
. 937, 942, 946, 947
\theenumii 937, 943, 947
\theenumiii 937, 944, 948
\theenumiv 937, 945, 1263
\theequation 1059, 1066
\thefigure . . . . . . .
. . 1069, 1073, 1079
\thefootnote . . . . . . 580
theindex (environ-
ment) . . . . . 1276
\thepage . . . . . 474,
475, 510, 533, 534
\theparagraph . . . . . 648
\thepart . . . . . 648,
711, 719, 732, 741
\thesection . . . 481,
503, 516, 648, 1042
\thesubparagraph . . 648
\thesubsection 487, 648
\thesubsubsection . 648
\thetable . . . . . . . .
. . 1088, 1092, 1098
\thispagestyle 596,
697, 770, 779,
1015, 1029, 1288
\tiny . . . . . . . . . . . . 177
\title . . . . 540, 572, 606
\titlepage . . . . . . . 964
titlepage (environ-
ment) . . . . . 1006
\today . . . . . . 543, 1319
\topfraction . . . . . . 403
\topmargin . . . . . . . 379
\topsep . . . 117, 127,
137, 150, 160,
170, 887, 892,
897, 906, 910,
914, 921923, 926
\topskip . . 236, 250, 298
\tt . . . . . . . . . . . . 1119
\ttfamily . . . . . . . 1121
\twocolumn . . . . . . .
589, 774, 1018,
1032, 1146,
1226, 1242,
1284, 1285, 1333
V
verse (environment) . 986
W
\widowpenalty 228, 1267
61
Change History
v1.0d
General: Added use of
\NeedsTeXFormat . . . . . . . . . . 1
Made eqaution and eqnarray en-
vironments in the eqn option
up to date with latex.dtx . . . . . 1
remove \@in, made option
makeindex a synonym for op-
tion makeidx . . . . . . . . . . . . . 1
removed \@minus, \@plus,
\@settopoint, \@setfontsize;
they are now in the kernel . . . . 1
Replaced \bf with \bfseries;
\rm with \rmfamily . . . . . . . . 1
v1.0e
\@normalsize: \normalsize
doesnt exist, so use
\newcommand . . . . . . . . . . . . . . 8
v1.0f
General: Made all lines shorter than
72 characters . . . . . . . . . . . . . 1
\bf: Macro added . . . . . . . . . . . 47
\it: Macro added . . . . . . . . . . . 47
\rm: Macro added . . . . . . . . . . . 47
\sc: Macro added . . . . . . . . . . . 47
\sf: Macro added . . . . . . . . . . . 47
\sl: Macro added . . . . . . . . . . . 47
\tt: Macro added . . . . . . . . . . . 47
v1.0g
General: Distinguished between
compatibility and normal
mode for the font changing com-
mands. . . . . . . . . . . . . . . . . . 47
Made change in eqnarray for the
eqn option, as suggested by
Rainer. . . . . . . . . . . . . . . . . . . 1
Removed typo, A4 is not 279 mm
high . . . . . . . . . . . . . . . . . . . . 4
\cal: Macro added . . . . . . . . . . 47
theindex: Moved the setting of
\@restonecoltrue . . . . . . . . 54
titlepage: Moved the setting of
\@restonecolfalse . . . . . . . 41
\listoffigures: Moved the setting
of \@restonecolfalse . . . . . 51
\listoftables: Moved the setting
of \@restonecolfalse . . . . . 52
\maketitle: Removed the setting
of the page number, when not
in compatibility mode . . . . . . 24
\mit: Macro added . . . . . . . . . . 47
\tableofcontents: Moved the set-
ting of \@restonecolfalse . . 48
v1.0h
\@normalsize: \normalsize is now
dened in the kernel, so use
\renewcommand. ASAJ. . . . . . . 8
General: Corrected some typos.
ASAJ. . . . . . . . . . . . . . . . . . . 6
Made the denitions of the
font- and size-changing com-
mands use \renew rather than
\new. Dened the oat pa-
rameters with \renewcommand
rather than \newcommand. Cor-
rected some typos in the eqn
option. Replaced two oc-
currences of -\@secpenalty by
\@secpenalty. ASAJ. . . . . . . . 1
These are now dened in the ker-
nel, so use \@renewfontswitch.
Compatibility mode denes
\@renewfontswitch to do noth-
ing, so we dont need to check
for compatibility mode any
more. . . . . . . . . . . . . . . . . . . 47
\bottomfraction: Replaced
\newcommand with \renewcommand.
ASAJ. . . . . . . . . . . . . . . . . . 18
\dblfloatpagefraction: Re-
placed \newcommand with
\renewcommand. ASAJ. . . . . . 19
\dbltopfraction: Replaced
\newcommand with \renewcommand.
ASAJ. . . . . . . . . . . . . . . . . . 18
\floatpagefraction: Re-
placed \newcommand with
\renewcommand. ASAJ. . . . . . 18
\footnotesize: \footnotesize is
now dened in the kernel, so use
\renewcommand. ASAJ. . . . . . . 9
62
\Huge: These are now dened in the
kernel, so use \renewcommand.
ASAJ. . . . . . . . . . . . . . . . . . 10
\l@part: Replaced -\@secpenalty
by \@secpenalty. ASAJ. . . . 49
\l@section: Replaced -
\@secpenalty by \@secpenalty.
ASAJ. . . . . . . . . . . . . . . . . . 50
\small: \small is now de-
ned in the kernel, so use
\renewcommand. ASAJ. . . . . . . 8
\textfraction: Replaced
\newcommand with \renewcommand.
ASAJ. . . . . . . . . . . . . . . . . . 18
\topfraction: Replaced \newcommand
with \renewcommand. ASAJ. . 18
v1.0i
thebibliography: Corrected deni-
tion of thebibliography for arti-
cle . . . . . . . . . . . . . . . . . . . . 53
v1.0j
General: Added \normalfont back
in the denitions of \rm etc. as
this should be the default be-
haviour . . . . . . . . . . . . . . . . 47
Added \ProvidesFile to size
les . . . . . . . . . . . . . . . . . . . . 1
Use \cmd in change entries . . . . 1
v1.0k
General: Removed some ty-
pos/bugs . . . . . . . . . . . . . . . . 1
v1.0l
General: add the extension to the
names of the les . . . . . . . . . . 1
Changed version numbering;
moved leqno and eqn options
to an external le. . . . . . . . . . . 1
\marginparwidth: Computing of
\evensidemargin should only
occur in compatibility mode . 17
v1.0m
\labelwidth: Use em instead of pt
to remain compatible with old
styles . . . . . . . . . . . . . . . . . . 36
\leftmarginvi: Use em instead of
pt to remain compatible with
old styles . . . . . . . . . . . . . . . 36
\parindent: \parindent should be
dierent, depending on the
pointsize . . . . . . . . . . . . . . . . 11
\partopsep: \partopsep should be
dierent, depending on the
pointsize . . . . . . . . . . . . . . . . 37
v1.0n
General: Removed code for makeidx
option and made it a sepa-
rate package; removed use of
\setlength from list parame-
ters. . . . . . . . . . . . . . . . . . . . . 1
v1.0o
\@normalsize: \@normalsize now
dened in the kernel . . . . . . . . 8
General: Small documention
changes . . . . . . . . . . . . . . . . . 1
v1.0q
General: Small documention
changes . . . . . . . . . . . . . . . . . 1
v1.1a
\@makefntext: Use \@makefnmark
to generate footnote marker . . 55
General: Removed \typeout mes-
sages . . . . . . . . . . . . . . . . . . . 1
\brokenpenalty: Show correct de-
fault which is 100 . . . . . . . . . 12
\marginparwidth: New algorithm
for \marginparwidth . . . . . . . 16
New algorithm for \oddsidemargin
. . . . . . . . . . . . . . . . . . . . . . . 16
\textwidth: Have old values for
width in native mode . . . . . . 13
v1.1f
General: Inserted forgotten line
break . . . . . . . . . . . . . . . . . . . 1
v1.2a
General: Added openright option.
(LL) . . . . . . . . . . . . . . . . . . . . 1
v1.2b
General: Added the . . . matter com-
mands. (LL) . . . . . . . . . . . . . . 1
v1.2c
General: Fixed page numbering in
titlepage env. (LL) . . . . . . . . . 1
titlepage: page := 0 only in com-
patibility mode (LL) . . . . . . . 41
\maketitle: Removed setting of
page number, now done in ti-
tlepage environment . . . . . . . 24
v1.2d
General: Checked the le for long
lines and wrapped them when
63
necessary; made a slight imple-
mentation modication to the
openright and openany options. 1
titlepage: Moved \cleardoublepage
inside denition of titlepage en-
vironment . . . . . . . . . . . . . . . 41
v1.2e
General: \@renewfontswitch has
become \DeclareOldFontCommand
. . . . . . . . . . . . . . . . . . . . . . . 47
\footnotesize: use \newcommand
again . . . . . . . . . . . . . . . . . . . 9
\Huge: use \newcommand again . . 10
\small: \small is no longer dened
in the kernel; use \newcommand . 8
v1.2g
\sc: Added warning if used in math
mode . . . . . . . . . . . . . . . . . . 47
\sl: Added warning if used in math
mode . . . . . . . . . . . . . . . . . . 47
v1.2i
General: Use LaTeX instead of La-
TeX2e in messages . . . . . . . . . 1
\l@chapter: Dont print a toc line
when the tocdepth counter is
less then 0 . . . . . . . . . . . . . . 50
\l@part: Dont print a toc line
when the tocdepth counter is
less then -1 . . . . . . . . . . . . . . 49
\l@section: Dont print a toc line
when the tocdepth counter is
less then 1 . . . . . . . . . . . . . . 50
v1.2j
General: Removed the use of
\fileversion c.s. . . . . . . . . . . 1
v1.2k
\descriptionlabel: Inserted
\normalfont . . . . . . . . . . . . . 39
\labelitemii: Inserted \normalfont
. . . . . . . . . . . . . . . . . . . . . . . 39
\maketitle: Added check on num-
ber of columns in use locally . 25
\maxdepth: Added setting of
\maxdepth and \@maxdepth . . 12
v1.2l
General: changed some \changes
entries . . . . . . . . . . . . . . . . . . 1
v1.2m
General: Forgot a few entries . . . . 1
v1.2o
General: Changed le information 1
v1.2p
General: Moved identication and
driver to the front of the le . . 1
v1.2q
\@makecaption: Use \sbox\@tempboxa
instead of \setbox\@tempboxa\hbox
to make this colour safe . . . . . 46
v1.2s
\maketitle: Reset \@makefntext 25
v1.2t
General: Refrased a few sentences
to prevent overfull hboxes . . . . 1
v1.2u
\topmargin: Moved rounding of
\topmargin to native mode . . 17
v1.2v
\@dotsep: Changed documentation
from > or = to . . . . . . . . . 48
\@makechapterhead: Added
\interlinepenalty\@M to pre-
vent a pagebreak in the middle
of a title . . . . . . . . . . . . . . . . 34
Added a \nobreak to prevent a
pagebreak between the chapter-
number and the chaptertitle . 34
\@makeschapterhead: Added
\interlinepenalty\@M to pre-
vent a pagebreak in the middle
of a title . . . . . . . . . . . . . . . . 35
General: Made the oneside option
work for the book class . . . . . . 1
removed typo . . . . . . . . . . . . . 57
\if@mainmatter: Moved the alloca-
tion of \if@mainmatter here . . 4
v1.2w
General: Use \newcommand* for
commands with arguments . . . 1
\mit: Now dene \cal and \mit us-
ing \DeclareRobustCommand* 47
v1.2x
\@makecaption: Due to a change in
the way oats are handled we
need to set the \if@minipage
switch to false . . . . . . . . . . . . 47
v1.2y
\descriptionlabel: made com-
mand short . . . . . . . . . . . . . . 39
64
v1.2z
General: Always use \cs in
\changes entries . . . . . . . . . . . 1
thebibliography: added a missing
percent character . . . . . . . . . 53
\marginparwidth: Also take
\marginparsep into account
here . . . . . . . . . . . . . . . . . . . 16
\ps@headings: Removed extra dot
after \thesection (PR 1519) . 22
v1.3a
General: Replaced all \hbox to by
\hb@xt@ . . . . . . . . . . . . . . . . . 1
\footnoterule: use \@width . . . 54
\maketitle: Use \@makefnmark in
denition of \@makefntext . . 25
v1.3b
thebibliography: Added missing
braces in denition of thebibli-
ography environment. . . . . . . 53
\l@chapter: Added missing
braces around argument to
\addpenalty. . . . . . . . . . . . . 50
\l@part: Added missing
braces around argument to
\addpenalty. . . . . . . . . . . . . 49
v1.3c
\@makechapterhead: replace
\reset@font with \normalfont
. . . . . . . . . . . . . . . . . . . . . . . 34
\@makeschapterhead: re-
place \reset@font with
\normalfont . . . . . . . . . . . . . 35
\@part: replace \reset@font with
\normalfont . . . . . . . . . . 31, 32
\@spart: replace \reset@font with
\normalfont . . . . . . . . . . . . . 32
\ps@headings: Replace \hskip
1em\relax with \quad . . . . . . 22
\section: replace \reset@font
with \normalfont . . . . . . . . . 35
v1.3d
General: Replaced all \uppercase
by \MakeUppercase . . . . . . . . . 1
v1.3e
abstract: Added setting of
\@endparpenalty to avoid page
break after abstract heading. . 39
v1.3f
\subsubitem: Corrected error in
denition of \@idxitem. . . . . 54
v1.3g
\maketitle: Fix denition
of \@makefnmark and
\@makefntext to a) work and
b) without using math . . . . . 25
v1.3h
General: Split up to save save stack
/1742 . . . . . . . . . . . . . . . . . . 56
v1.3i
General: Moved code for generic
class options leqno and eqn to
kernel le . . . . . . . . . . . . . . . 57
titlepage: New implementation
with support for twoside and
openright option . . . . . . . . . . 41
v1.3j
\@endpart: move docstrip guard to
avoid dening \@endpart in ar-
ticle . . . . . . . . . . . . . . . . . . . 32
\@makechapterhead: replace braces
by \space . . . . . . . . . . . . . . 34
\@part: add missing percent . . . . 32
verse: stop \item scanning for [
with \relax . . . . . . . . . . . . . 40
thebibliography: remove surplus
spaces . . . . . . . . . . . . . . . . . 53
\l@part: Add missing percent . . 49
\maketitle: use \let to save space
. . . . . . . . . . . . . . . . . . . . 25, 26
\maxdepth: Take setting of
\@maxdepth out again . . . . . . 12
\mit: Remove surplus braces . . . 47
\part: Replace \hbox by \null . 30
\subsubitem: use \@idxitem to
save space . . . . . . . . . . . . . . 54
\today: use \edef to save a lot of
space . . . . . . . . . . . . . . . . . . 56
quotation: stop \item scanning for
[ with \relax . . . . . . . . . . . . 40
quote: stop \item scanning for [
with \relax . . . . . . . . . . . . . 41
v1.3k
\@openbib@code: Macro added . . 53
General: Macro \if@openbib re-
moved . . . . . . . . . . . . . . . . . . 4
openbib option reimplemented . 6
65
thebibliography: Code for open-
bib changed . . . . . . . . . . . . . 53
\maketitle: Disable \title and
similar decls . . . . . . . . . . 25, 26
\newblock: Default changed. . . . 53
v1.3l
General: Disabled in compatibility
mode all options that are new
in L
A
T
E
X2. . . . . . . . . . . . . . . 1
v1.3n
\bigskipamount: Added setting the
values of \...skipamount . . . 11
\maketitle: Empty \@date as well
. . . . . . . . . . . . . . . . . . . . 25, 26
v1.3o
\@maketitle: (CAR) Make
\footnote always work in ti-
tle, etc . . . . . . . . . . . . . . . . . 26
\maketitle: (CAR) Make
\footnote always work in ti-
tle, etc . . . . . . . . . . . . . . . . . 24
v1.3q
\leftmarginvi: Temporary(?) x:
revert to setting \leftmargin
at outer level . . . . . . . . . . . . 36
v1.3r
\frontmatter: Make this command
react to the option openany . . 29
\mainmatter: Make this command
react to the option openany . . 29
\part: Make this command react to
the option openany . . . . . . . . 30
v1.3s
\labelitemii: Replaced -- with
\textendash . . . . . . . . . . . . . 39
v1.3t
thebibliography: Added setting
value of \@clubpenalty . . . . . 53
v1.3u
\c@figure: Added test for non-zero
chapter number . . . . . . . . . . 45
\c@table: Added test for non-zero
chapter number . . . . . . . . . . 45
\labelitemii: Changed to
\textbullet, \textasteriskcentered
and \textperiodcentered . . . 39
\theequation: Added test for non-
zero chapter number . . . . . . . 44
v1.3v
General: Documentation xes. . . . 1
v1.3w
\today: use \def again, latex/2620 56
v1.3x
\l@part: Removed setting of
\@tempdima as this macro does
not use \numberline to set the
toc line. . . . . . . . . . . . . . . . . 49
66