Standard Document Classes For LATEX PDF
Standard Document Classes For LATEX PDF
Contents
1 The docstrip modules 2 Initial Code 3 Declaration of Options 3.1 Setting Paper Sizes . . . . . . . 3.2 Choosing the type size . . . . . 3.3 Two-side or one-side printing . 3.4 Draft option . . . . . . . . . . . 3.5 Titlepage option . . . . . . . . 3.6 openright option . . . . . . . . 3.7 Twocolumn printing . . . . . . 3.8 Equation numbering on the left 3.9 Flush left displays . . . . . . . 3.10 Open bibliography . . . . . . . 4 Executing Options 5 Loading Packages 6 Document Layout 6.1 Fonts . . . . . . . . . . . . . . . . . 6.2 Paragraphing . . . . . . . . . . . . 6.3 Page Layout . . . . . . . . . . . . . 6.3.1 Vertical spacing . . . . . . . 6.3.2 The dimension of text . . . 6.3.3 Margins . . . . . . . . . . . 6.3.4 Footnotes . . . . . . . . . . 6.3.5 Float placement parameters 6.4 Page Styles . . . . . . . . . . . . . 6.4.1 Marking conventions . . . . 6.4.2 Dening the page styles . . 7 Document Markup 7.1 The title . . . . . . . . . . . . . . . 7.2 Chapters and Sections . . . . . . . 7.2.1 Building blocks . . . . . . . 7.2.2 Mark commands . . . . . . 7.2.3 Dene Counters . . . . . . 7.2.4 Front Matter, Main Matter, 7.2.5 Parts . . . . . . . . . . . . .
This
2 3 3 3 4 4 4 4 4 5 5 5 5 5 6 6 6 8 9 10 10 12 14 14 16 17 17 19 19 21 21 22 22 23 24
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
7.3
7.4
7.5
7.6
7.7
7.2.6 Chapters . . . . . . . . . . . . . . . . 7.2.7 Lower level headings . . . . . . . . . . Lists . . . . . . . . . . . . . . . . . . . . . . . 7.3.1 General List Parameters . . . . . . . . 7.3.2 Enumerate . . . . . . . . . . . . . . . 7.3.3 Itemize . . . . . . . . . . . . . . . . . 7.3.4 Description . . . . . . . . . . . . . . . Dening new environments . . . . . . . . . . 7.4.1 Abstract . . . . . . . . . . . . . . . . . 7.4.2 Verse . . . . . . . . . . . . . . . . . . 7.4.3 Quotation . . . . . . . . . . . . . . . . 7.4.4 Quote . . . . . . . . . . . . . . . . . . 7.4.5 Theorem . . . . . . . . . . . . . . . . 7.4.6 Titlepage . . . . . . . . . . . . . . . . 7.4.7 Appendix . . . . . . . . . . . . . . . . Setting parameters for existing environments 7.5.1 Array and tabular . . . . . . . . . . . 7.5.2 Tabbing . . . . . . . . . . . . . . . . . 7.5.3 Minipage . . . . . . . . . . . . . . . . 7.5.4 Framed boxes . . . . . . . . . . . . . . 7.5.5 Equation and eqnarray . . . . . . . . . Floating objects . . . . . . . . . . . . . . . . . 7.6.1 Figure . . . . . . . . . . . . . . . . . . 7.6.2 Table . . . . . . . . . . . . . . . . . . 7.6.3 Captions . . . . . . . . . . . . . . . . Font changing . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
26 28 29 29 31 31 31 32 32 32 32 33 33 33 34 34 34 35 35 35 35 35 36 36 37 38 38 38 39 41 42 42 43 44 45 45 45 45 46 46
8 Cross Referencing 8.1 Table of Contents, etc. . . 8.1.1 Table of Contents 8.1.2 List of gures . . . 8.1.3 List of tables . . . 8.2 Bibliography . . . . . . . 8.3 The index . . . . . . . . . 8.4 Footnotes . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
9 Initialization 9.1 Words . . . . . . . . . . . . . . 9.2 Date . . . . . . . . . . . . . . . 9.3 Two column mode . . . . . . . 9.4 The page style . . . . . . . . . 9.5 Single or double sided printing
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
The following modules are used in the implementation to direct docstrip in generating the external les: article report size10 size11 size12 book bk10 bk11 bk12 driver produce produce produce produce produce produce produce produce produce produce the documentclass article the documentclass report the class option for 10pt the class option for 11pt the class option for 12pt the documentclass book the book class option for 10pt the book class option for 11pt the book class option for 12pt a documentation driver le 2
2
\@ptsize
Initial Code
In this part we dene a few commands that are used later on. This control sequence is used to store the second digit of the pointsize we are typesetting in. So, normally, its value is one of 0, 1 or 2.
1 2
\if@restonecol
When the document has to printed in two columns, we sometimes have to temporarily switch to one column. This switch is used to remember to switch back.
3
\newif\if@restonecol
\if@titlepage
A switch to indicate if a titlepage has to be produced. For the article document class the default is not to make a separate titlepage.
\newif\if@titlepage article \@titlepagefalse 6 !article \@titlepagetrue
4 5
\if@openright
A switch to indicate if chapters must start on a right-hand page. The default for the report class is no; for the book class its yes.
7
!article \newif\if@openright
\if@mainmatter
The switch \if@mainmatter, only available in the document class book, indicates whether we are processing the main material in the book.
8
3
3.1
Declaration of Options
Setting Paper Sizes
The variables \paperwidth and \paperheight should reect the physical paper size after trimming. For desk printer output this is usually the real paper size since there is no post-processing. Classes for real book production will probably add other paper sizes and additionally the production of crop marks for trimming. In compatibility mode, these (and some of the subsequent) options are disabled, A as they were not present in L TEX2.09.
\if@compatibility\else \DeclareOption{a4paper} 11 {\setlength\paperheight {297mm}% 12 \setlength\paperwidth {210mm}} 13 \DeclareOption{a5paper} 14 {\setlength\paperheight {210mm}% 15 \setlength\paperwidth {148mm}} 16 \DeclareOption{b5paper} 17 {\setlength\paperheight {250mm}% 18 \setlength\paperwidth {176mm}} 19 \DeclareOption{letterpaper} 20 {\setlength\paperheight {11in}% 21 \setlength\paperwidth {8.5in}} 22 \DeclareOption{legalpaper} 23 {\setlength\paperheight {14in}% 24 \setlength\paperwidth {8.5in}} 25 \DeclareOption{executivepaper} 26 {\setlength\paperheight {10.5in}% 27 \setlength\paperwidth {7.25in}}
9 10
The option landscape switches the values of \paperheight and \paperwidth, assuming the dimensions were given for portrait paper.
28
\DeclareOption{landscape}
3.2
The type size options are handled by dening \@ptsize to contain the last digit of the size in question and branching on \ifcase statements. This is done for historical reasons to stay compatible with other packages that use the \@ptsize variable to select special actions. It makes the declarations of size options less than 10pt dicult, although one can probably use 9 and 8 assuming that a class wont dene both 8pt and 18pt options.
\if@compatibility \renewcommand\@ptsize{0} 35 \else 36 \DeclareOption{10pt}{\renewcommand\@ptsize{0}} 37 \fi 38 \DeclareOption{11pt}{\renewcommand\@ptsize{1}} 39 \DeclareOption{12pt}{\renewcommand\@ptsize{2}}
33 34
3.3
For two-sided printing we use the switch \if@twoside. In addition we have to set the \if@mparswitch to get any margin paragraphs into the outside margin.
\if@compatibility\else \DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse} 42 \fi 43 \DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
40 41
3.4
Draft option
If the user requests draft we show any overfull boxes. We could probably add some more interesting stu to this option.
\DeclareOption{draft}{\setlength\overfullrule{5pt}} \if@compatibility\else 46 \DeclareOption{final}{\setlength\overfullrule{0pt}} 47 \fi
44 45
3.5
48 49
Titlepage option
An article usually has no separate titlepage, but the user can request one.
\DeclareOption{titlepage}{\@titlepagetrue} \if@compatibility\else 50 \DeclareOption{notitlepage}{\@titlepagefalse} 51 \fi
3.6
openright option
This option determines whether or not a chapter must start on a right-hand page request one.
52 53 54 55 56 57
!article \if@compatibility book \@openrighttrue !article \else !article \DeclareOption{openright}{\@openrighttrue} !article \DeclareOption{openany}{\@openrightfalse} !article \fi
3.7
58 59
Twocolumn printing
3.8
The option leqno can be used to get the equation numbers on the left side of the equation. It loads code which is generated automatically from the kernel les when the format is built. If the equation number does get a special formatting then instead of using the kernel le the class would need to provide the code explicitly.
62
\DeclareOption{leqno}{\input{leqno.clo}}
3.9
The option eqn redenes the displayed math environments in such a way that they come out ush left, with an indentation of \mathindent from the prevailing left margin. It loads code which is generated automatically from the kernel les when the format is built.
63
\DeclareOption{fleqn}{\input{fleqn.clo}}
3.10
Open bibliography
The option openbib produces the open bibliography style, in which each block starts on a new line, and succeeding lines in a block are indented by \bibindent.
64
\DeclareOption{openbib}{% \AtEndOfPackage{% \renewcommand\@openbib@code{% \advance\leftmargin\bibindent \itemindent -\bibindent \listparindent \itemindent \parsep \z@ }% \renewcommand\newblock{\par}}% }
Executing Options
Here we execute the default options to initialize certain variables. Note that the document class book always uses two sided printing.
74
The \ProcessOptions command causes the execution of the code for every option FOO which is declared and for which the user typed the FOO option in his \documentclass command. For every option BAR he typed, which is not declared, the option is assumed to be a global option. All options will be passed as document options to any \usepackage command in the document preamble.
83
\ProcessOptions
Now that all the options have been executed we can load the chosen class option le that contains all size dependent code.
84 85 86
Loading Packages
Document Layout
In this section we are nally dealing with the nasty typographical details.
6.1
Fonts
A L TEX oers the user commands to change the size of the font, relative to the main size. Each relative size changing command \size executes the command \@setfontsize\size font-size baselineskip where:
font-size The absolute size of the font to use from now on. baselineskip The normal value of \baselineskip for the size of the font selected. (The actual value will be \baselinestretch * baselineskip .)
A A number of commands, dened in the L TEX kernel, shorten the following denitions and are used throughout. They are:
5 8 10.95
6 9 12
7 10 14.4
A The user level command for the main size is \normalsize. Internally L TEX uses \@normalsize \@normalsize when it refers to the main size. \@normalsize will be dened to work like \normalsize if the latter is redened from its default denition (that just issues an error message). Otherwise \@normalsize simply selects a 10pt/12pt size. The \normalsize macro also sets new values for \abovedisplayskip, \abovedisplayshortskip and \belowdisplayshortskip.
10pt | 11pt | 12pt \renewcommand\normalsize{% 89 10pt 90 \@setfontsize\normalsize\@xpt\@xiipt 91 \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ 92 \abovedisplayshortskip \z@ \@plus3\p@ 93 \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ 94 /10pt 95 11pt 96 \@setfontsize\normalsize\@xipt{13.6}% 97 \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@ 98 \abovedisplayshortskip \z@ \@plus3\p@
87 88
\belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ /11pt 12pt \@setfontsize\normalsize\@xiipt{14.5}% \abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@ \abovedisplayshortskip \z@ \@plus3\p@ \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ /12pt
The \belowdisplayskip is always equal to the \abovedisplayskip. The parameters of the rst level list are always given by \@listI.
107 108
\small
\footnotesize
/10pt 11pt 155 \@setfontsize\footnotesize\@ixpt{11}% 156 \abovedisplayskip 8\p@ \@plus2\p@ \@minus4\p@ 157 \abovedisplayshortskip \z@ \@plus\p@ 158 \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ 159 \def\@listi{\leftmargin\leftmargini 160 \topsep 4\p@ \@plus2\p@ \@minus2\p@ 161 \parsep 2\p@ \@plus\p@ \@minus\p@ 162 \itemsep \parsep}% 163 /11pt 164 12pt 165 \@setfontsize\footnotesize\@xpt\@xiipt 166 \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ 167 \abovedisplayshortskip \z@ \@plus3\p@ 168 \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ 169 \def\@listi{\leftmargin\leftmargini 170 \topsep 6\p@ \@plus2\p@ \@minus2\p@ 171 \parsep 3\p@ \@plus2\p@ \@minus\p@ 172 \itemsep \parsep}% 173 /12pt 174 \belowdisplayskip \abovedisplayskip 175 } 176 /10pt | 11pt | 12pt
153 154
\scriptsize
These are all much simpler than the previous macros, they just select a new \tiny fontsize, but leave the parameters for displays and lists alone.
10pt \newcommand\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt} 179 \newcommand\tiny{\@setfontsize\tiny\@vpt\@vipt} 180 \newcommand\large{\@setfontsize\large\@xiipt{14}} 181 \newcommand\Large{\@setfontsize\Large\@xivpt{18}} 182 \newcommand\LARGE{\@setfontsize\LARGE\@xviipt{22}} 183 \newcommand\huge{\@setfontsize\huge\@xxpt{25}} 184 \newcommand\Huge{\@setfontsize\Huge\@xxvpt{30}} 185 /10pt 186 11pt 187 \newcommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}} 188 \newcommand\tiny{\@setfontsize\tiny\@vipt\@viipt} 189 \newcommand\large{\@setfontsize\large\@xiipt{14}} 190 \newcommand\Large{\@setfontsize\Large\@xivpt{18}} 191 \newcommand\LARGE{\@setfontsize\LARGE\@xviipt{22}} 192 \newcommand\huge{\@setfontsize\huge\@xxpt{25}} 193 \newcommand\Huge{\@setfontsize\Huge\@xxvpt{30}} 194 /11pt 195 12pt 196 \newcommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}} 197 \newcommand\tiny{\@setfontsize\tiny\@vipt\@viipt} 198 \newcommand\large{\@setfontsize\large\@xivpt{18}} 199 \newcommand\Large{\@setfontsize\Large\@xviipt{22}} 200 \newcommand\LARGE{\@setfontsize\LARGE\@xxpt{25}} 201 \newcommand\huge{\@setfontsize\huge\@xxvpt{30}} 202 \let\Huge=\huge 203 /12pt
177 178
6.2
\lineskip \normallineskip
Paragraphing
These parameters control TEXs behaviour when two lines tend to come too close together.
article | report | book \setlength\lineskip{1\p@} 206 \setlength\normallineskip{1\p@}
204 205
\baselinestretch
This is used as a multiplier for \baselineskip. The default is to not stretch the baselines. Note that if this command doesnt resolve to empty any plus or minus part in the specication of \baselineskip is ignored.
207
\renewcommand\baselinestretch{}
\parskip gives extra vertical space between paragraphs and \parindent is the \parindent width of the paragraph indentation. The value of \parindent depends on whether we are in two column mode.
\parskip \setlength\parskip{0\p@ \@plus \p@} /article | report | book 210 10pt | 11pt | 12pt 211 \if@twocolumn 212 \setlength\parindent{1em} 213 \else 214 10pt \setlength\parindent{15\p@} 215 11pt \setlength\parindent{17\p@} 216 12pt \setlength\parindent{1.5em} 217 \fi 218 /10pt | 11pt | 12pt
208 209
A The values for these three parameters are set in the L TEX kernel. They should perhaps vary, according to the size option specied. But as they have always had the same value regardless of the size option we do not change them to stay A A compatible with both L TEX 2.09 and older releases of L TEX 2 .
10pt | 11pt | 12pt \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
219 220
The commands \nopagebreak and \nolinebreak put in penalties to discourage these breaks at the point they are put in. They use \@lowpenalty, \@medpenalty \@medpenalty or \@highpenalty , dependent on their argument. \@highpenalty
\@lowpenalty article | report | book \@lowpenalty 51 226 \@medpenalty 151 227 \@highpenalty 301
224 225
\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 229
Discourage (but not so much) widows in front of a math display and forbid breaking 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.
% \displaywidowpenalty 50 % \predisplaypenalty 10000 232 % \postdisplaypenalty 0
230 231
\interlinepenalty
% \interlinepenalty 0
\brokenpenalty
6.3
Page Layout
All margin dimensions are measured from a point one inch from the top and lefthand side of the page. 9
6.3.1
\headheight \headsep \topskip
Vertical spacing
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 A the text. The \topskip is the \baselineskip for the rst line on a page; L TEXs output routine will not work properly if it has the value 0pt, so do not do that!
10pt | 11pt | 12pt \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@}
236 237
\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 246 247 248
!bk \setlength\footskip{30\p@} 10pt & bk \setlength\footskip{.35in} 11pt & bk \setlength\footskip{.38in} 12pt & bk \setlength\footskip{30\p@}
\maxdepth
The TEX 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 TEX A A and L TEX 2.09 \maxdepth had a xed value of 4pt; in native L TEX2e 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 250
6.3.2
\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.
\if@compatibility \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
251 252
When we are not in compatibility mode we can set some of the dimensions dierently, 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 approximately 6070 characters in \@tempdimb. The values given are more or less suitable when Computer Modern fonts are used.
263 264 265 266 267
10
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 269 270 271 272 273
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.
\else \ifdim\@tempdima>\@tempdimb\relax 276 \setlength\textwidth{\@tempdimb} 277 \else 278 \setlength\textwidth{\@tempdima} 279 \fi 280 \fi 281 \fi
274 275
Here we modify the width of the text a little to be a whole number of points.
\if@compatibility\else \@settopoint\textwidth 284 \fi
282 283
\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 A had with L TEX2.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.
\if@compatibility 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}
285 286
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 291
We leave at least a 1 inch margin on the top and the bottom of the page.
292
We also have to leave room for the running headers and footers.
293
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 295
11
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.
\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 \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@}
300
Now we can give the values for the other margin parameters. For native A L TEX 2 , these are calculated.
\oddsidemargin \evensidemargin \marginparwidth
First we give the values for the compatibility mode. Values for two-sided printing:
\if@compatibility bk 311 10pt \setlength\oddsidemargin {.5in} 312 11pt \setlength\oddsidemargin {.25in} 313 12pt \setlength\oddsidemargin {.25in} 314 10pt \setlength\evensidemargin {1.5in} 315 11pt \setlength\evensidemargin {1.25in} 316 12pt \setlength\evensidemargin {1.25in} 317 10pt \setlength\marginparwidth {.75in} 318 11pt \setlength\marginparwidth {1in} 319 12pt \setlength\marginparwidth {1in} 320 /bk 321 !bk 322 \if@twoside 323 10pt \setlength\oddsidemargin {44\p@} 324 11pt \setlength\oddsidemargin {36\p@} 325 12pt \setlength\oddsidemargin {21\p@} 326 10pt \setlength\evensidemargin {82\p@} 327 11pt \setlength\evensidemargin {74\p@} 328 12pt \setlength\evensidemargin {59\p@} 329 10pt \setlength\marginparwidth {107\p@} 330 11pt \setlength\marginparwidth {100\p@} 331 12pt \setlength\marginparwidth {85\p@}
309 310
\else 10pt 11pt 12pt 10pt 11pt 12pt 10pt 11pt 12pt \fi /!bk
12
When we are not in compatibility mode we can take the dimensions of the selected paper into account. The values for \oddsidemargin and \marginparwidth will be set depending on the status of the \if@twoside. If @twoside is true (which is always the case for book) we make the inner margin smaller than the outer one.
\else \if@twoside 351 \setlength\@tempdima 352 \addtolength\@tempdima 353 \setlength\oddsidemargin 354 \addtolength\oddsidemargin
349 350
The width of the margin for text is set to the remainder of the width except for a real margin of white space of width 0.4in. A check should perhaps be built in to ensure that the (text) margin width does not get too small!
355 356 357
For one-sided printing we center the text on the page, by calculating the dierence between \textwidth and \paperwidth. Half of that dierence is than used for the margin (thus \oddsidemargin is 1in less).
358 359 360 361 362 363 364 365 366 367
\else \setlength\@tempdima \addtolength\@tempdima \setlength\oddsidemargin \addtolength\oddsidemargin \setlength\marginparwidth \addtolength\marginparwidth \addtolength\marginparwidth \addtolength\marginparwidth \fi
With the above algorithm the \marginparwidth can come out quite large which we may not want.
368 369 370
\ifdim \marginparwidth >2in \setlength\marginparwidth{2in} \fi \@settopoint\oddsidemargin \@settopoint\marginparwidth \setlength\evensidemargin {\paperwidth} \addtolength\evensidemargin{-2in} \addtolength\evensidemargin{-\textwidth} \addtolength\evensidemargin{-\oddsidemargin}
The \evensidemargin can now be computed from the values set above.
373 374 375 376
Setting \evensidemargin to a full point value may produce a small error. However it will lie within the error range a doublesided printer of todays technology can accurately print.
377 378
\@settopoint\evensidemargin \fi
13
\topmargin
The \topmargin is the distance between the top of the printable areawhich is 1 inch below the top of the paperand the top of the box which contains the running head. It can now be computed from the values set above.
\if@compatibility !bk \setlength\topmargin{27pt} 381 10pt & bk \setlength\topmargin{.75in} 382 11pt & bk \setlength\topmargin{.73in} 383 12pt & bk \setlength\topmargin{.73in} 384 \else 385 \setlength\topmargin{\paperheight} 386 \addtolength\topmargin{-2in} 387 \addtolength\topmargin{-\headheight} 388 \addtolength\topmargin{-\headsep} 389 \addtolength\topmargin{-\textheight} 390 \addtolength\topmargin{-\footskip}
379 380
By changing the factor in the next line the complete page can be shifted vertically.
\addtolength\topmargin{-.5\topmargin} \@settopoint\topmargin 393 \fi
391 392
6.3.4
\footnotesep
Footnotes
\footnotesep is the height of the strut placed at the beginning of every footnote. It equals the height of a normal \footnotesize strut in this class, thus no extra space occurs between footnotes.
394 395 396
\footins
\skip\footins is the space between the last line of the main text and the top of the rst footnote.
397 398 399 400
10pt \setlength{\skip\footins}{9\p@ \@plus 4\p@ \@minus 2\p@} 11pt \setlength{\skip\footins}{10\p@ \@plus 4\p@ \@minus 2\p@} 12pt \setlength{\skip\footins}{10.8\p@ \@plus 4\p@ \@minus 2\p@} /10pt | 11pt | 12pt
6.3.5
A All oat parameters are given default values in the L TEX 2 kernel. For this reason parameters that are not counters need to be set with \renewcommand.
The topnumber counter holds the maximum number of oats that can appear on the top of a text page.
401 402
\topfraction
This indicates the maximum part of a text page that can be occupied by oats at the top.
403
\renewcommand\topfraction{.7}
\c@bottomnumber
The bottomnumber counter holds the maximum number of oats that can appear on the bottom of a text page.
404
\setcounter{bottomnumber}{1}
\bottomfraction
This indicates the maximum part of a text page that can be occupied by oats at the bottom.
405
\renewcommand\bottomfraction{.3}
14
\c@totalnumber
This indicates the maximum number of oats that can appear on any text page.
406
\setcounter{totalnumber}{3}
\textfraction
This indicates the minimum part of a text page that has to be occupied by text.
407
\renewcommand\textfraction{.2}
\floatpagefraction
This indicates the minimum part of a page that has to be occupied by oating objects before a oat page is produced.
408
\renewcommand\floatpagefraction{.5}
\c@dbltopnumber
The dbltopnumber counter holds the maximum number of two column oats that can appear on the top of a two column text page.
409
\setcounter{dbltopnumber}{2}
\dbltopfraction
This indicates the maximum part of a two column text page that can be occupied by two column oats at the top.
410
\renewcommand\dbltopfraction{.7}
\dblfloatpagefraction
This indicates the minimum part of a page that has to be occupied by two column wide oating objects before a oat page is produced.
411 412
When a oating object is placed on a page with text, these parameters control the separation between the oat and the other objects on the page. These parameters are used for both one-column mode and single-column oats in two-column mode. \floatsep is the space between adjacent oats that are moved to the top or bottom of the text page. \textfloatsep is the space between the main text and oats at the top or bottom of the page. \intextsep is the space between in-text oats and the text.
10pt \setlength\floatsep {12\p@ 415 \setlength\textfloatsep{20\p@ 416 \setlength\intextsep {12\p@ 417 /10pt 418 11pt 419 \setlength\floatsep {12\p@ 420 \setlength\textfloatsep{20\p@ 421 \setlength\intextsep {12\p@ 422 /11pt 423 12pt 424 \setlength\floatsep {12\p@ 425 \setlength\textfloatsep{20\p@ 426 \setlength\intextsep {14\p@ 427 /12pt
413 414
\@plus 2\p@ \@minus 2\p@} \@plus 2\p@ \@minus 4\p@} \@plus 2\p@ \@minus 2\p@}
\@plus 2\p@ \@minus 2\p@} \@plus 2\p@ \@minus 4\p@} \@plus 2\p@ \@minus 2\p@}
\@plus 2\p@ \@minus 4\p@} \@plus 2\p@ \@minus 4\p@} \@plus 4\p@ \@minus 4\p@}
\dblfloatsep \dbltextfloatsep
When oating objects that span the whole \textwidth are placed on a text page when we are in twocolumn mode the separation between the oat and the text is controlled by \dblfloatsep and \dbltextfloatsep. \dblfloatsep is the space between adjacent oats that are moved to the top or bottom of the text page. \dbltextfloatsep is the space between the main text and oats at the top or bottom of the page.
10pt \setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@} 430 \setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
428 429
15
/10pt 11pt 433 \setlength\dblfloatsep {12\p@ 434 \setlength\dbltextfloatsep{20\p@ 435 /11pt 436 12pt 437 \setlength\dblfloatsep {14\p@ 438 \setlength\dbltextfloatsep{20\p@ 439 /12pt
431 432
Floats on their own page or column When oating objects are placed on separate pages the layout of such pages is con\@fpsep trolled by these parameters. At the top of the page \@fptop amount of stretchable \@fpbot whitespace is inserted, at the bottom of the page we get an \@fpbot amount of stretchable whitespace. Between adjacent oats the \@fpsep is inserted. These parameters are used for the placement of oating objects in one column mode, or in single column oats in two column mode. Note that at least one of the two parameters \@fptop and \@fpbot should contain a plus ...fil to allow lling the remaining empty space.
\@fptop 10pt \setlength\@fptop{0\p@ \@plus 1fil} 442 \setlength\@fpsep{8\p@ \@plus 2fil} 443 \setlength\@fpbot{0\p@ \@plus 1fil} 444 /10pt 445 11pt 446 \setlength\@fptop{0\p@ \@plus 1fil} 447 \setlength\@fpsep{8\p@ \@plus 2fil} 448 \setlength\@fpbot{0\p@ \@plus 1fil} 449 /11pt 450 12pt 451 \setlength\@fptop{0\p@ \@plus 1fil} 452 \setlength\@fpsep{10\p@ \@plus 2fil} 453 \setlength\@fpbot{0\p@ \@plus 1fil} 454 /12pt
440 441
Double column oats in two column mode are handled with similar parameters.
10pt \setlength\@dblfptop{0\p@ \@plus 1fil} 457 \setlength\@dblfpsep{8\p@ \@plus 2fil} 458 \setlength\@dblfpbot{0\p@ \@plus 1fil} 459 /10pt 460 11pt 461 \setlength\@dblfptop{0\p@ \@plus 1fil} 462 \setlength\@dblfpsep{8\p@ \@plus 2fil} 463 \setlength\@dblfpbot{0\p@ \@plus 1fil} 464 /11pt 465 12pt 466 \setlength\@dblfptop{0\p@ \@plus 1fil} 467 \setlength\@dblfpsep{10\p@ \@plus 2fil} 468 \setlength\@dblfpbot{0\p@ \@plus 1fil} 469 /12pt 470 article | report | book
455 456
6.4
Page Styles
The page style foo is dened by dening the command \ps@foo. This command should make only local denitions. There should be no stray spaces in the denition, since they could lead to mysterious extra spaces in the output (well, thats something that should be always avoided).
16
The \ps@... command denes the macros \@oddhead, \@oddfoot, \@evenhead, and \@evenfoot to dene the running heads and feete.g., \@oddhead is the \@oddhead macro to produce the contents of the heading box for odd-numbered pages. It is \@evenfoot called inside an \hbox of width \textwidth. \@oddfoot
\@evenhead
6.4.1
Marking conventions
To make headings determined by the sectioning commands, the page style denes the commands \chaptermark, \sectionmark, . . . , where \chaptermark{ TEXT } is called by \chapter to set a mark, and so on. The \...mark commands and the \...head macros are dened with the help of the following macros. (All the \...mark commands should be initialized to no-ops.) A L TEX extends TEXs \mark facility by producing two kinds of marks, a left and a right mark, using the following commands: \markboth{ LEFT }{ RIGHT }: Adds both marks. \markright{ RIGHT }: Adds a right mark. \leftmark: Used in the \@oddhead, \@oddfoot, \@evenhead or \@evenfoot macros, it gets the current left mark. \leftmark works like TEXs \botmark command. \rightmark: Used in the \@oddhead, \@oddfoot, \@evenhead or \@evenfoot macros, it gets the current right mark. \rightmark works like TEXs \firstmark command. The marking commands work reasonably well for right marks numbered within left markse.g., the left mark is changed by a \chapter command and the right mark is changed by a \section command. However, it does produce somewhat anomalous results if two \markboths occur on the same page. Commands like \tableofcontents that should set the marks in some page styles use a \@mkboth command, which is \let by the pagestyle command (\ps@...) to \markboth for setting the heading or to \@gobbletwo to do nothing. 6.4.2 Dening the page styles
The denition of the page style headings has to be dierent for two sided printing than it is for one sided printing.
471 472
\if@twoside \def\ps@headings{%
The running feet are empty in this page style, the running head contains the page number and one of the marks.
473 474 475
When using this page style, the contents of the running head is determined by the chapter and section titles. So we \let \@mkboth to \markboth.
476
\let\@mkboth\markboth
For the article document class we dene \sectionmark to clear the right mark and put the number of the section (when it is numbered) and its title in the left mark. The rightmark is set by \subsectionmark to contain the subsection titles. Note the use of ##1 for the parameter of the \sectionmark command, which will be dened when \ps@headings is executed.
477 478 479 480
17
481 482 483 484 485 486 487 488 489 490
\thesection\quad \fi ##1}}{}}% \def\subsectionmark##1{% \markright {% \ifnum \c@secnumdepth >\@ne \thesubsection\quad \fi ##1}}} /article
In the report and book document classes we use the \chaptermark and \sectionmark macros to ll the running heads. Note the use of ##1 for the parameter of the \chaptermark command, which will be dened when \ps@headings is executed.
491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506
report | book \def\chaptermark##1{% \markboth {\MakeUppercase{% \ifnum \c@secnumdepth >\m@ne book \if@mainmatter \@chapapp\ \thechapter. \ % book \fi \fi ##1}}{}}% \def\sectionmark##1{% \markright {\MakeUppercase{% \ifnum \c@secnumdepth >\z@ \thesection. \ % \fi ##1}}}} /report | book
The denition of \ps@headings for one sided printing can be much simpler, because we treat even and odd pages the same. Therefore we dont need to dene \@even....
\else \def\ps@headings{% 509 \let\@oddfoot\@empty 510 \def\@oddhead{{\slshape\rightmark}\hfil\thepage}% 511 \let\@mkboth\markboth
507 508
We use \markright now instead of \markboth as we did for two sided printing.
512 513 514 515 516 517 518 519 520 521
article \def\sectionmark##1{% \markright {\MakeUppercase{% \ifnum \c@secnumdepth >\m@ne \thesection\quad \fi ##1}}}} /article
report | book \def\chaptermark##1{% 522 \markright {\MakeUppercase{% 523 \ifnum \c@secnumdepth >\m@ne 524 book \if@mainmatter 525 \@chapapp\ \thechapter. \ % 526 book \fi 527 \fi 528 ##1}}}} 529 /report | book 530 \fi
18
\ps@myheadings
The denition of the page style myheadings is fairly simple because the user determines the contents of the running head himself by using the \markboth and \markright commands.
\def\ps@myheadings{% \let\@oddfoot\@empty\let\@evenfoot\@empty 533 \def\@evenhead{\thepage\hfil\slshape\leftmark}% 534 \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
531 532
We have to make sure that the marking commands that are used by the chapter and section headings are disabled. We do this \letting them to a macro that gobbles its argument(s).
535 536 537 538 539
7
7.1
\title \author \date
Document Markup
The title
These three macros are provided by latex.dtx to provide information about the title, author(s) and date of the document. The information is stored away in internal control sequences. It is the task of the \maketitle command to use the information provided. The denitions of these macros are shown here for information.
% \newcommand*{\title}[1]{\gdef\@title{#1}} % \newcommand*{\author}[1]{\gdef\@author{#1}} 542 % \newcommand*{\date}[1]{\gdef\@date{#1}}
540 541
% \date{\today}
\maketitle
The denition of \maketitle depends on whether a separate title page is made. This is the default for the report and book document classes, but for the article class it is optional. When we are making a title page, we locally redene \footnotesize and footnoterule to change the appearance of the footnotes that are produced by the \thanks command; these changes aect all footnotes.
544 545 546 547 548
We center the entire title vertically; the centering is set o a little by adding a \vskip. (In compatibility mode the pagenumber is set to 0 by the titlepage A environment to keep the behaviour of L TEX 2.09 style les.)
549 550
Then we set the title, in a \LARGE font; leave a little space and set the author(s) in a \large font. We do this inside a tabular environment to get them in a single column. Before the date we leave a little whitespace again.
551 552 553 554 555 556 557
\begin{center}% {\LARGE \@title \par}% \vskip 3em% {\large \lineskip .75em% \begin{tabular}[t]{c}% \@author
19
Then we call \@thanks to print the information that goes into the footnote and nish the page.
562 563 564
We reset the footnote counter, disable \thanks and \maketitle and save some storage space by emptying the internal information macros.
565 566 567 568 569 570 571
After the title is set the declaration commands \title, etc. can vanish. The denition of \and makes only sense within the argument of \author so this can go as well.
572 573 574 575 576
When the title is not on a page of its own, the layout of the title is a little dierent. We use symbols to mark the footnotes and we have to deal with two column documents. Therefore we rst start a new group to keep changes local. Then we redene \thefootnote to use \fnsymbol; and change \@makefnmark so that footnotemarks have zero width (to make the centering of the author names look better).
\else \newcommand\maketitle{\par 579 \begingroup 580 \renewcommand\thefootnote{\@fnsymbol\c@footnote}% 581 \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}% 582 \long\def\@makefntext##1{\parindent 1em\noindent 583 \hb@xt@1.8em{% 584 \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
577 578
If this is a twocolumn document we start a new page in twocolumn mode, with the title set to the full width of the text. The actual printing of the title information is left to \@maketitle.
585 586 587 588 589 590 591
When this is not a twocolumn document we just start a new page, prevent oating objects from appearing on the top of this page and print the title information.
592 593 594 595
This page gets a plain layout. We call \@thanks to produce the footnotes.
596
\thispagestyle{plain}\@thanks
20
Now we can close the group, reset the footnote counter, disable \thanks, \maketitle and \@maketitle and save some storage space by emptying the internal information macros.
597 598 599 600 601 602 603 604 605 606 607 608 609 610
\endgroup \setcounter{footnote}{0}% \global\let\thanks\relax \global\let\maketitle\relax \global\let\@maketitle\relax \global\let\@thanks\@empty \global\let\@author\@empty \global\let\@date\@empty \global\let\@title\@empty \global\let\title\relax \global\let\author\relax \global\let\date\relax \global\let\and\relax }
\@maketitle
This macro takes care of formatting the title information when we have no separate title page. We always start a new page, leave some white space and center the information. The title is set in a \LARGE font, the author names and the date in a \large font.
\def\@maketitle{% \newpage 613 \null 614 \vskip 2em% 615 \begin{center}% 616 \let \footnote \thanks 617 {\LARGE \@title \par}% 618 \vskip 1.5em% 619 {\large 620 \lineskip .5em% 621 \begin{tabular}[t]{c}% 622 \@author 623 \end{tabular}\par}% 624 \vskip 1em% 625 {\large \@date}% 626 \end{center}% 627 \par 628 \vskip 1.5em} 629 \fi
611 612
7.2
7.2.1
The denitions in this part of the class le make use of two internal macros, \@startsection and \secdef. To understand what is going on here, we describe their syntax. The macro \@startsection has 6 required arguments, optionally followed by a , an optional argument and a required argument: \@startsection name level indent beforeskip afterskip style optional * [ altheading ] heading It is a generic command to start a section, the arguments have the following meaning: name The name of the user level command, e.g., section. level A number, denoting the depth of the section e.g., chapter=1, section = 2, etc. A section number will be printed if and only if level <= the value of the secnumdepth counter.
21
indent The indentation of the heading from the left margin beforeskip The absolute value of this argument gives the skip to leave above the heading. If it is negative, then the paragraph indent of the text following the heading is suppressed. afterskip If positive, this gives the skip to leave below the heading, else it gives the skip to leave to the right of a run-in heading. style Commands to set the style of the heading. When this is missing the heading is numbered and the corresponding counter is incremented. altheading Gives an alternative heading to use in the table of contents and in the running heads. This should be present when the form is used. heading The heading of the new section. A sectioning command is normally dened to \@startsection and its rst six arguments. The macro \secdef can be used when a sectioning command is dened without using \@startsection. It has two arguments: \secdef unstarcmds starcmds unstarcmds Used for the normal form of the sectioning command. starcmds Used for the -form of the sectioning command. You can use \secdef as follows:
\def\chapter { ... \secdef \CMDA \CMDB } \def\CMDA [#1]#2{ ... } % Command to define % \chapter[...]{...} \def\CMDB #1{ ... } % Command to define % \chapter*{...}
7.2.2
\chaptermark \sectionmark \subsectionmark \subsubsectionmark \paragraphmark \subparagraphmark
Mark commands
Default initializations of \...mark commands. These commands are used in the denition of the page styles (see section 6.4.2) Most of them are already dened by latex.dtx, so they are only shown here.
!article \newcommand*\chaptermark[1]{} % \newcommand*\sectionmark[1]{} 632 % \newcommand*\subsectionmark[1]{} 633 % \newcommand*\subsubsectionmark[1]{} 634 % \newcommand*\paragraphmark[1]{} 635 % \newcommand*\subparagraphmark[1]{}
630 631
7.2.3
\c@secnumdepth
Dene Counters
The value of the counter secnumdepth gives the depth of the highest-level sectioning command that is to produce section numbers.
636 637
These counters are used for the section numbers. The macro \newcounter{ newctr }[ oldctr ] denes newctr to be a counter, which is reset to zero when counter oldctr is stepped. Counter oldctr must already be dened.
638
\newcounter {part}
22
article \newcounter {section} report | book 641 \newcounter {chapter} 642 \newcounter {section}[chapter] 643 /report | book 644 \newcounter {subsection}[section] 645 \newcounter {subsubsection}[subsection] 646 \newcounter {paragraph}[subsubsection] 647 \newcounter {subparagraph}[paragraph]
639 640
For any counter CTR, \theCTR is a macro that denes the printed version of counter CTR. It is dened in terms of the following macros: \arabic{COUNTER} prints the value of COUNTER as an arabic numeral. \roman{COUNTER} prints the value of COUNTER as a lowercase roman numberal. \Roman{COUNTER} prints the value of COUNTER as an uppercase roman numberal. \alph{COUNTER} prints the value of COUNTER as a lowercase letter: 1 = a, 2 = b, etc. \Alph{COUNTER} prints the value of COUNTER as an uppercase letter: 1 = A, 2 = B, etc. Actually to save space the internal counter repesentations and the commands operating on those are used.
\renewcommand \thepart {\@Roman\c@part} article \renewcommand \thesection {\@arabic\c@section} 650 report | book 651 \renewcommand \thechapter {\@arabic\c@chapter} 652 \renewcommand \thesection {\thechapter.\@arabic\c@section} 653 /report | book 654 \renewcommand\thesubsection {\thesection.\@arabic\c@subsection} 655 \renewcommand\thesubsubsection{\thesubsection .\@arabic\c@subsubsection} 656 \renewcommand\theparagraph {\thesubsubsection.\@arabic\c@paragraph} 657 \renewcommand\thesubparagraph {\theparagraph.\@arabic\c@subparagraph}
648 649
\@chapapp
7.2.4
A book contains these three (logical) sections. The switch \@mainmatter is true i we are processing Main Matter. When this switch is false, the \chapter command does not print chapter numbers. Here we dene the commands that start these sections.
\frontmatter
This command starts Roman page numbering and turns o chapter numbering. Since this restarts the page numbering from 1, it should also ensure that a recto page is used.
book \newcommand\frontmatter{% 661 % \if@openright 662 \cleardoublepage 663 % \else 664 % \clearpage 665 % \fi 666 \@mainmatterfalse 667 \pagenumbering{roman}}
659 660
\mainmatter
This command clears the page, starts arabic page numbering and turns on chapter numbering. Since this restarts the page numbering from 1, it should also ensure that a recto page is used.
23
668
\newcommand\mainmatter{% % \if@openright 670 \cleardoublepage 671 % \else 672 % \clearpage 673 % \fi 674 \@mainmattertrue 675 \pagenumbering{arabic}}
669
\backmatter
This clears the page, turns o chapter numbering and leaves page numbering unchanged.
\newcommand\backmatter{% \if@openright 678 \cleardoublepage 679 \else 680 \clearpage 681 \fi 682 \@mainmatterfalse} 683 /book
676 677
7.2.5
\part
Parts
The command to start a new part of our document. In the article class the denition of \part is rather simple; we start a new paragraph, add a little white space, suppress the indentation of the rst paragraph and make use of \secdef. As in other sectioning commands (cf. \@startsection in A the L TEX 2 kernel), we need to check the @noskipsec switch and force horizontal mode if it is set.
article \newcommand\part{% 686 \if@noskipsec \leavevmode \fi 687 \par 688 \addvspace{4ex}% 689 \@afterindentfalse 690 \secdef\@part\@spart} 691 /article
684 685
For the report and book classes we things a bit dierent. We start a new (righthand) page and use the plain pagestyle.
report | book \newcommand\part{% 694 \if@openright 695 \cleardoublepage 696 \else 697 \clearpage 698 \fi 699 \thispagestyle{plain}%
692 693
When we are making a two column document, this will be a one column page. We use @tempswa to remember to switch back to two columns.
700 701 702 703 704 705
Here we use \secdef to indicate which commands to use to make the actual heading.
707 708
24
\@part
This macro does the actual formatting of the title of the part. Again the macro is dierently dened for the article document class than for the document classes report and book. When secnumdepth is larger than 1 for the document class article, we have a numbered part, otherwise it is unnumbered.
article \def\@part[#1]#2{% 711 \ifnum \c@secnumdepth >\m@ne 712 \refstepcounter{part}% 713 \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% 714 \else 715 \addcontentsline{toc}{part}{#1}% 716 \fi
709 710
We print the title ush left in the article class. Also we prevent breaking between lines and reset the font.
717 718 719
When this is a numbered part we have to print the number and the title. The \nobreak should prevent a page break here.
720 721 722 723 724
\ifnum \c@secnumdepth >\m@ne \Large\bfseries \partname\nobreakspace\thepart \par\nobreak \fi \huge \bfseries #2%
Now we empty the mark registers, leave some white space and let \@afterheading take care of suppressing the indentation.
725 726 727 728 729
When secnumdepth is larger than 2 for the document class report and book, we have a numbered part, otherwise it is unnumbered.
report | book \def\@part[#1]#2{% 732 \ifnum \c@secnumdepth >-2\relax 733 \refstepcounter{part}% 734 \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% 735 \else 736 \addcontentsline{toc}{part}{#1}% 737 \fi
730 731
We empty the mark registers and center the title on the page in the report and book document classes. Also we prevent breaking between lines and reset the font.
738 739 740 741
\markboth{}{}% {\centering \interlinepenalty \@M \normalfont \ifnum \c@secnumdepth >-2\relax \huge\bfseries \partname\nobreakspace\thepart \par
We leave some space before we print the title and leave the nishing up to \@endpart.
745 746 747
25
748 749
\@spart
This macro does the actual formatting of the title of the part when the star form of the user command was used. In this case we never print a number. Otherwise the formatting is the same. The dierences between the denition of this macro in the article document class and in the report and book document classes are similar as they were for \@part.
article \def\@spart#1{% 752 {\parindent \z@ \raggedright 753 \interlinepenalty \@M 754 \normalfont 755 \huge \bfseries #1\par}% 756 \nobreak 757 \vskip 3ex 758 \@afterheading} 759 /article 760 report | book 761 \def\@spart#1{% 762 {\centering 763 \interlinepenalty \@M 764 \normalfont 765 \Huge \bfseries #1\par}% 766 \@endpart} 767 /report | book
750 751
\@endpart
This macro nishes the part page, for both \@part and \@spart. First we ll the current page.
768 769
Then, when we are in twosided mode and chapters are supposed to be on right hand sides, we produce a completely blank page.
770 771 772 773 774 775 776
When this was a two column document we have to switch back to two column mode.
777 778 779 780
7.2.6
\chapter
Chapters
A chapter should always start on a new page therefore we start by calling \clearpage and setting the pagestyle for this page to plain.
report | book \newcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi 783 \thispagestyle{plain}%
781 782
Then we prevent oats from appearing at the top of this page because it looks weird to see a oating object above a chapter title.
784
\global\@topnum\z@
26
Then we suppress the indentation of the rst paragraph by setting the switch \@afterindent to false. We use \secdef to specify the macros to use for actually setting the chapter title.
785 786
\@afterindentfalse \secdef\@chapter\@schapter}
\@chapter
This macro is called when we have a numbered chapter. When secnumdepth is larger than 1 and, in the book class, \@mainmatter is true, we display the chapter number. We also inform the user that a new chapter is about to be typeset by writing a message to the terminal.
\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne book \if@mainmatter 789 \refstepcounter{chapter}% 790 \typeout{\@chapapp\space\thechapter.}% 791 \addcontentsline{toc}{chapter}% 792 {\protect\numberline{\thechapter}#1}% 793 book 794 \else 795 \addcontentsline{toc}{chapter}{#1}% 796 \fi 797 /book 798 \else 799 \addcontentsline{toc}{chapter}{#1}% 800 \fi
787 788
After having written an entry to the table of contents we store the (alternative) title of this chapter with \chaptermark and add some white space to the lists of gures and tables.
801 802 803
Then we call upon \@makechapterhead to format the actual chapter title. We have to do this in a special way when we are in twocolumn mode in order to have the chapter title use the entire \textwidth. In one column mode we call \@afterheading which takes care of suppressing the indentation.
804 805 806 807 808 809
\@makechapterhead
The macro above uses \@makechapterhead text to format the heading of the chapter. We begin by leaving some white space. The we open a group in which we have a paragraph indent of 0pt, and in which we have the text set ragged right. We also reset the font.
\def\@makechapterhead#1{% \vspace*{50\p@}% 812 {\parindent \z@ \raggedright \normalfont
810 811
Then we check whether the number of the chapter has to be printed. If so we leave some whitespace between the chapternumber and its title.
813 814 815 816 817 818 819
\ifnum \c@secnumdepth >\m@ne book \if@mainmatter \huge\bfseries \@chapapp\space \thechapter \par\nobreak \vskip 20\p@ book \fi \fi
27
Now we set the title in a large bold font. We prevent a pagebreak from occuring in the middle of or after the title. Finally we leave some whitespace before the text begins.
820 821 822 823
\@schapter
This macro is called when we have an unnumbered chapter. It is much simpler than \@chapter because it only needs to typeset the chapter title.
\def\@schapter#1{\if@twocolumn \@topnewpage[\@makeschapterhead{#1}]% 826 \else 827 \@makeschapterhead{#1}% 828 \@afterheading 829 \fi}
824 825
\@makeschapterhead
The macro above uses \@makeschapterhead text to format the heading of the chapter. It is similar to \@makechapterhead except that it never has to print a chapter number.
\def\@makeschapterhead#1{% \vspace*{50\p@}% 832 {\parindent \z@ \raggedright 833 \normalfont 834 \interlinepenalty\@M 835 \Huge \bfseries #1\par\nobreak 836 \vskip 40\p@ 837 }} 838 /report | book
830 831
7.2.7
This gives a normal heading with white space above and below the heading, the title set in \Large\bfseries, and no indentation on the rst paragraph.
839 840
\newcommand\section{\@startsection {section}{1}{\z@}% {-3.5ex \@plus -1ex \@minus -.2ex}% 841 {2.3ex \@plus.2ex}% 842 {\normalfont\Large\bfseries}}
\subsection
This gives a normal heading with white space above and below the heading, the title set in \large\bfseries, and no indentation on the rst paragraph.
\newcommand\subsection{\@startsection{subsection}{2}{\z@}% {-3.25ex\@plus -1ex \@minus -.2ex}% 845 {1.5ex \@plus .2ex}% 846 {\normalfont\large\bfseries}}
843 844
\subsubsection
This gives a normal heading with white space above and below the heading, the title set in \normalsize\bfseries, and no indentation on the rst paragraph.
\newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% {-3.25ex\@plus -1ex \@minus -.2ex}% 849 {1.5ex \@plus .2ex}% 850 {\normalfont\normalsize\bfseries}}
847 848
\paragraph
This gives a run-in heading with white space above and to the right of the heading, the title set in \normalsize\bfseries.
\newcommand\paragraph{\@startsection{paragraph}{4}{\z@}% {3.25ex \@plus1ex \@minus.2ex}% 853 {-1em}% 854 {\normalfont\normalsize\bfseries}}
851 852
28
\subparagraph
This gives an indented run-in heading with white space above and to the right of the heading, the title set in \normalsize\bfseries.
\newcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}% {3.25ex \@plus1ex \@minus .2ex}% 857 {-1em}% 858 {\normalfont\normalsize\bfseries}}
855 856
7.3
7.3.1
Lists
General List Parameters
The following commands are used to set the default values for the list environA ments parameters. See the L TEX manual for an explanation of the meanings of the parameters. Defaults for the list environment are set as follows. First, \rightmargin, \listparindent and \itemindent are set to 0pt. Then, for a Kth level list, the command \@listK is called, where K denotes i, i, ... , vi. (I.e., \@listiii is called for a third-level list.) By convention, \@listK should set \leftmargin to \leftmarginK.
\leftmargin \leftmargini \leftmarginii \leftmarginiii \leftmarginiv \leftmarginv \leftmarginvi
When we are in two column mode some of the margins are set somewhat smaller.
\if@twocolumn \setlength\leftmargini 861 \else 862 \setlength\leftmargini 863 \fi
859 860
{2em} {2.5em}
Until the whole of the parameter setting in these les is rationalised, we need to set the value of \leftmargin at this outer level.
864
\leftmargin
\leftmargini
The following three are calculated so that they are larger than the sum of \labelsep and the width of the default labels (which are (m), vii. and M.).
\setlength\leftmarginii {2.2em} \setlength\leftmarginiii {1.87em} 867 \setlength\leftmarginiv {1.7em} 868 \if@twocolumn 869 \setlength\leftmarginv {.5em} 870 \setlength\leftmarginvi {.5em} 871 \else 872 \setlength\leftmarginv {1em} 873 \setlength\leftmarginvi {1em} 874 \fi
865 866
\labelsep \labelwidth
\labelsep is the distance between the label and the text of an item; \labelwidth is the width of the label.
\setlength \labelsep {.5em} \setlength \labelwidth{\leftmargini} 877 \addtolength\labelwidth{-\labelsep}
875 876
\partopsep
When the user leaves a blank line before the environment an extra vertical space of \partopsep is inserted, in addition to \parskip and \topsep.
878 879 880 881
/article | report | book 10pt \setlength\partopsep{2\p@ \@plus 1\p@ \@minus 1\p@} 11pt \setlength\partopsep{3\p@ \@plus 1\p@ \@minus 1\p@} 12pt \setlength\partopsep{3\p@ \@plus 2\p@ \@minus 2\p@}
These penalties are inserted before and after a list or paragraph environment. They are set to a bonus value to encourage page breaking at these points. This penalty is inserted between list items.
882 883
29
884
\@listi \@listI
\@listi denes the values of \leftmargin, \parsep, \topsep, \itemsep, etc. for the lists that appear on top-level. Its denition is modied by the font-size commands (eg within \small the list parameters get smaller values). For this reason listI is dened to hold a saved copy of listi so that \normalsize can switch all parameters back.
10pt | 11pt | 12pt \def\@listi{\leftmargin\leftmargini 889 10pt 890 \parsep 4\p@ \@plus2\p@ \@minus\p@ 891 \topsep 8\p@ \@plus2\p@ \@minus4\p@ 892 \itemsep4\p@ \@plus2\p@ \@minus\p@} 893 /10pt 894 11pt 895 \parsep 4.5\p@ \@plus2\p@ \@minus\p@ 896 \topsep 9\p@ \@plus3\p@ \@minus5\p@ 897 \itemsep4.5\p@ \@plus2\p@ \@minus\p@} 898 /11pt 899 12pt 900 \parsep 5\p@ \@plus2.5\p@ \@minus\p@ 901 \topsep 10\p@ \@plus4\p@ \@minus6\p@ 902 \itemsep5\p@ \@plus2.5\p@ \@minus\p@} 903 /12pt 904 \let\@listI\@listi
887 888
\@listi
Here are the same macros for the higher level lists. Note that they dont have \@listiii saved versions and are not modied by the font size commands. In other words \@listiv this class assumes that nested lists only appear in \normalsize, i.e. the main \@listv document size.
\@listii \@listvi \def\@listii {\leftmargin\leftmarginii \labelwidth\leftmarginii 908 \advance\labelwidth-\labelsep 909 10pt 910 \topsep 4\p@ \@plus2\p@ \@minus\p@ 911 \parsep 2\p@ \@plus\p@ \@minus\p@ 912 /10pt 913 11pt 914 \topsep 4.5\p@ \@plus2\p@ \@minus\p@ 915 \parsep 2\p@ \@plus\p@ \@minus\p@ 916 /11pt 917 12pt 918 \topsep 5\p@ \@plus2.5\p@ \@minus\p@ 919 \parsep 2.5\p@ \@plus\p@ \@minus\p@ 920 /12pt 921 \itemsep \parsep} 922 \def\@listiii{\leftmargin\leftmarginiii 923 \labelwidth\leftmarginiii 924 \advance\labelwidth-\labelsep 925 10pt \topsep 2\p@ \@plus\p@\@minus\p@ 926 11pt \topsep 2\p@ \@plus\p@\@minus\p@ 927 12pt \topsep 2.5\p@\@plus\p@\@minus\p@ 928 \parsep \z@ 929 \partopsep \p@ \@plus\z@ \@minus\p@ 930 \itemsep \topsep} 931 \def\@listiv {\leftmargin\leftmarginiv 932 \labelwidth\leftmarginiv
906 907
30
933 934
\advance\labelwidth-\labelsep} {\leftmargin\leftmarginv 935 \labelwidth\leftmarginv 936 \advance\labelwidth-\labelsep} 937 \def\@listvi {\leftmargin\leftmarginvi 938 \labelwidth\leftmarginvi 939 \advance\labelwidth-\labelsep} 940 /10pt | 11pt | 12pt \def\@listv
7.3.2
Enumerate
The enumerate environment uses four counters: enumi, enumii, enumiii and enumiv, where enumN controls the numbering of the Nth level enumeration.
\theenumi \theenumii \theenumiii \theenumiv
The counters are already dened in latex.dtx, but their representation is changed here.
article | report | book \renewcommand\theenumi{\@arabic\c@enumi} 943 \renewcommand\theenumii{\@alph\c@enumii} 944 \renewcommand\theenumiii{\@roman\c@enumiii} 945 \renewcommand\theenumiv{\@Alph\c@enumiv}
941 942
The label for each item is generated by the commands \labelenumi . . . \labelenumiv.
\newcommand\labelenumi{\theenumi.} \newcommand\labelenumii{(\theenumii)} 948 \newcommand\labelenumiii{\theenumiii.} 949 \newcommand\labelenumiv{\theenumiv.}
946 947
The expansion of \p@enumN\theenumN denes the output of a \ref command when referencing an item of the Nth level of an enumerated list.
\renewcommand\p@enumii{\theenumi} \renewcommand\p@enumiii{\theenumi(\theenumii)} 952 \renewcommand\p@enumiv{\p@enumiii\theenumiii}
950 951
7.3.3
\labelitemi \labelitemii \labelitemiii \labelitemiv
Itemize
Itemization is controlled by four commands: \labelitemi, \labelitemii, \labelitemiii, and \labelitemiv, which dene the labels of thevarious itemization levels: the symbols used are bullet, bold en-dash, centered asterisk and centred dot.
\newcommand\labelitemi{\textbullet} \newcommand\labelitemii{\normalfont\bfseries \textendash} 955 \newcommand\labelitemiii{\textasteriskcentered} 956 \newcommand\labelitemiv{\textperiodcentered}
953 954
7.3.4
description
Description
The description environment is dened here while the itemize and enumerate environments are dened in latex.dtx.
\newenvironment{description} {\list{}{\labelwidth\z@ \itemindent-\leftmargin 959 \let\makelabel\descriptionlabel}} 960 {\endlist}
957 958
\descriptionlabel
31
7.4
7.4.1
abstract
When we are producing a separate titlepage we also put the abstract on a page of its own. It will be centred vertically on the page. Note that this environment is not dened for books.
% \changes{v1.3m}{1995/10/23}{Added setting of \cs{beginparpenalty} to % discourage page break before abstract heading.} 965 article | report 966 \if@titlepage 967 \newenvironment{abstract}{% 968 \titlepage 969 \null\vfil 970 \@beginparpenalty\@lowpenalty 971 \begin{center}% 972 \bfseries \abstractname 973 \@endparpenalty\@M 974 \end{center}}% 975 {\par\vfil\null\endtitlepage}
963 964
When we are not making a separate titlepage the default for the article document class we have to check if we are in twocolumn mode. In that case the abstract is as a \section*, otherwise the quotation environment is used to typeset the abstract.
\else \newenvironment{abstract}{% 978 \if@twocolumn 979 \section*{\abstractname}% 980 \else 981 \small 982 \begin{center}% 983 {\bfseries \abstractname\vspace{-.5em}\vspace{\z@}}% 984 \end{center}% 985 \quotation 986 \fi} 987 {\if@twocolumn\else\endquotation\fi} 988 \fi 989 /article | report
976 977
7.4.2
verse
Verse
The verse environment is dened by making clever use of the list environments parameters. The user types \\ to end a line. This is implemented by \leting \\ equal \@centercr.
\newenvironment{verse} {\let\\\@centercr 992 \list{}{\itemsep \z@ 993 \itemindent -1.5em% 994 \listparindent\itemindent 995 \rightmargin \leftmargin 996 \advance\leftmargin 1.5em}% 997 \item\relax} 998 {\endlist}
990 991
7.4.3
quotation
Quotation
The quotation environment is also dened by making clever use of the list environments parameters. The lines in the environment are set smaller than \textwidth. The rst line of a paragraph inside this environment is indented.
999 1000
32
7.4.4
quote
Quote
The quote environment is like the quotation environment except that paragraphs are not indented.
\newenvironment{quote} {\list{}{\rightmargin\leftmargin}% 1008 \item\relax} 1009 {\endlist}
1006 1007
7.4.5
Theorem
This document class does not dene its own theorem environments, the defaults, supplied by latex.dtx are available. 7.4.6
titlepage
Titlepage
In the normal environments, the titlepage environment does nothing but start and end a page, and inhibit page numbers. In the report style, it also resets the page number to one, and then sets it back to one at the end. In compatibility mode, it sets the page number to zero. This is incorrect since it results in using the page parameters for a right-hand page but it is the way it was. In two-column style, it still makes a one-column page. First we do give the denition for compatibility mode.
\if@compatibility \newenvironment{titlepage} 1012 {% 1013 book \cleardoublepage 1014 \if@twocolumn 1015 \@restonecoltrue\onecolumn 1016 \else 1017 \@restonecolfalse\newpage 1018 \fi 1019 \thispagestyle{empty}% 1020 \setcounter{page}\z@ 1021 }% 1022 {\if@restonecol\twocolumn \else \newpage \fi 1023 }
1010 1011 A And here is the one for native L TEX 2 .
\else \newenvironment{titlepage} 1026 {% 1027 book \cleardoublepage 1028 \if@twocolumn 1029 \@restonecoltrue\onecolumn 1030 \else 1031 \@restonecolfalse\newpage 1032 \fi 1033 \thispagestyle{empty}% 1034 \setcounter{page}\@ne 1035 }% 1036 {\if@restonecol\twocolumn \else \newpage \fi
1024 1025
If we are not in two-side mode the rst page after the title page should also get page number 1.
1037
\if@twoside\else
33
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. This redefinition is done globally to ensure that it survives even if \appendix is issued within an environment such as multicols.
article \newcommand\appendix{\par 1044 \setcounter{section}{0}% 1045 \setcounter{subsection}{0}% 1046 \gdef\thesection{\@Alph\c@section}} 1047 /article
1042 1043
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. This redenition is done globally to ensure that it survives even if \appendix is issued within an environment such as multicols.
report | book \newcommand\appendix{\par 1050 \setcounter{chapter}{0}% 1051 \setcounter{section}{0}% 1052 \gdef\@chapapp{\appendixname}% 1053 \gdef\thechapter{\@Alph\c@chapter}} 1054 /report | book
1048 1049
7.5
7.5.1
\arraycolsep
\setlength\arraycolsep{5\p@}
\tabcolsep
\setlength\tabcolsep{6\p@}
\arrayrulewidth
The width of rules in the array and tabular environments is given by \arrayrulewidth.
1057
\setlength\arrayrulewidth{.4\p@}
\doublerulesep
The space between adjacent rules in the array and tabular environments is given by \doublerulesep.
1058
\setlength\doublerulesep{2\p@}
34
7.5.2
\tabbingsep
Tabbing
A This controls the space that the \ command puts in. (See L TEX manual for an explanation.) 1059
\setlength\tabbingsep{\labelsep}
7.5.3
\@minipagerestore
Minipage
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. Minipages have their own footnotes; \skip\@mpfootins plays same r ole for footnotes in a minipage as \skip\footins does for ordinary footnotes.
1060
\@mpfootins
\skip\@mpfootins = \skip\footins
7.5.4
\fboxsep \fboxrule
Framed boxes
The space left by \fbox and \framebox between the box and the text in it. The width of the rules in the box made by \fbox and \framebox.
1061 1062
\setlength\fboxsep{3\p@} \setlength\fboxrule{.4\p@}
7.5.5
\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.
article \renewcommand \theequation {\@arabic\c@equation} report | book 1065 \@addtoreset {equation}{chapter} 1066 \renewcommand\theequation 1067 {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@equation} 1068 /report | book
1063 1064
\jot
\jot is the extra space added between lines of an eqnarray environment. The default value is used.
1069
% \setlength\jot{3pt}
\@eqnnum
The macro \@eqnnum denes how equation numbers are to appear in equations. Again the default is used.
1070
% \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.
35
\fnum@TYPE A macro to generate the gure number for a caption. For example, \fnum@TYPE == Figure \thefigure. \@makecaption num text 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 dened 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. The environment is ended by \end@float. E.g., \figure == \@floatgure, \endfigure == \end@float. 7.6.1 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.
article \newcounter{figure} 1073 \renewcommand \thefigure {\@arabic\c@figure} 1074 /article 1075 report | book 1076 \newcounter{figure}[chapter] 1077 \renewcommand \thefigure 1078 {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@figure} 1079 /report | book
1071 1072
Here are the parameters for the oating objects of type gure.
\def\fps@figure{tbp} \def\ftype@figure{1} 1082 \def\ext@figure{lof} 1083 \def\fnum@figure{\figurename\nobreakspace\thefigure}
1080 1081
figure figure*
And the denition of the actual environment. The form with the * is used for double column gures.
\newenvironment{figure} {\@float{figure}} 1086 {\end@float} 1087 \newenvironment{figure*} 1088 {\@dblfloat{figure}} 1089 {\end@dblfloat}
1084 1085
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.
article \newcounter{table} 1092 \renewcommand\thetable{\@arabic\c@table} 1093 /article 1094 report | book
1090 1091
36
\newcounter{table}[chapter] \renewcommand \thetable 1097 {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@table} 1098 /report | book
1095 1096
Here are the parameters for the oating objects of type table.
\def\fps@table{tbp} \def\ftype@table{2} 1101 \def\ext@table{lot} 1102 \def\fnum@table{\tablename\nobreakspace\thetable}
1099 1100
table table*
And the denition of the actual environment. The form with the * is used for double column tables.
\newenvironment{table} {\@float{table}} 1105 {\end@float} 1106 \newenvironment{table*} 1107 {\@dblfloat{table}} 1108 {\end@dblfloat}
1103 1104
7.6.3
\@makecaption
Captions
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.
These lengths contain the amount of white space to leave above and below the \belowcaptionskip caption.
\abovecaptionskip \newlength\abovecaptionskip \newlength\belowcaptionskip 1111 \setlength\abovecaptionskip{10\p@} 1112 \setlength\belowcaptionskip{0\p@}
1109 1110
The denition of this macro is \long in order to allow more then one paragraph in a caption.
1113 1114
\long\def\@makecaption#1#2{% \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.
1115
\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.
1116 1117
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.
1118 1119 1120 1121 1122
37
7.7
Font changing
Here we supply the declarative font changing commands that were common in A L TEX 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 A A command to be dened; L TEX commands to execute in text mode and L TEX commands to execute in math mode.
\rm \tt \sf
The commands to change the family. When in compatibility mode we select the A default font rst, to get L TEX2.09 behviour.
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} \DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} 1125 \DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
1123 1124
\bf
The command to change to the bold series. One should use \mdseries to explicitly switch back to medium series.
1126
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
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.
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} \DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} 1129 \DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
1127 1128
\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.
1130 1131
\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal} \DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
8
8.1
Cross Referencing
Table of Contents, etc.
A \section command writes a \contentsline{section}{ title }{ page } command 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. 38
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
\newcommand\@pnumwidth{1.55em} \newcommand\@tocrmarg{2.55em} 1134 \newcommand\@dotsep{4.5} 1135 article \setcounter{tocdepth}{3} 1136 !article \setcounter{tocdepth}{2}
1132 1133
8.1.1
\tableofcontents
Table of Contents
A This macro is used to request that L TEX 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.
\newcommand\tableofcontents{% report | book 1139 \if@twocolumn 1140 \@restonecoltrue\onecolumn 1141 \else 1142 \@restonecolfalse 1143 \fi
1137 1138
The title is set using the \chapter* command, making sure that the running head if one is required contains the right information.
1144 1145 1146 1147 1148
The the actual table of contents is made by calling \@starttoc{toc}. After that we restore twocolumn mode if necessary.
1149 1150 1151
\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.
\newcommand*\l@part[2]{% \ifnum \c@tocdepth >-2\relax 1154 article \addpenalty\@secpenalty 1155 !article \addpenalty{-\@highpenalty}% 1156 \addvspace{2.25em \@plus\p@}%
1152 1153
The macro \numberline requires that the width of the box that holds the part A number is stored in L TEXs scratch register \@tempdima. Therefore we initialize it there even though we do not use \numberline internallythe value used is quite large so that something like \numberline{VIII} would still work.
1157 1158
\setlength\@tempdima{3em}% \begingroup
39
We set \parindent to 0pt and use \rightskip to leave enough room for the pagenumbers.1 To prevent overfull box messages the \parfillskip is set to a negative value.
1159 1160
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.
1161 1162
Prevent a pagebreak immediately after this entry, but use \everypar to reset the \if@nobreak switch. Finally we close the group.
1163 1164 1165 1166 1167 1168 1169
\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.
report | book \newcommand*\l@chapter[2]{% 1172 \ifnum \c@tocdepth >\m@ne 1173 \addpenalty{-\@highpenalty}% 1174 \vskip 1.0em \@plus\p@
1170 1171
The macro \numberline requires that the width of the box that holds the part A number is stored in L TEXs scratch register \@tempdima. Therefore we initialize it there even though we do not use \numberline internally (the position as well as the values seems questionable but cant be changed without producing compatibility problems). We begin a group, and change some of the paragraph parameters (see also the remark at \l@part regarding \rightskip).
1175 1176 1177 1178
\setlength\@tempdima{1.5em}% \begingroup \parindent \z@ \rightskip \@pnumwidth \parfillskip -\@pnumwidth \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 immediately after a chapter entry.
1180 1181 1182 1183 1184 1185 1186
\advance\leftskip\@tempdima \hskip -\leftskip #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par \penalty\@highpenalty \endgroup \fi} /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.
1 We should really set \rightskip to \@tocrmarg instead of \@pnumwidth (no version of L A TEX ever did this), otherwise the \rightskip is too small. Unfortunately this cant be changed in A A L TEX 2 as we dont want to create dierent versions of L TEX 2 which produce dierent typset A output unless this is absolutely necessary; instead we suspend it for L TEX3.
40
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.
article \newcommand*\l@section[2]{% 1189 \ifnum \c@tocdepth >\z@ 1190 \addpenalty\@secpenalty 1191 \addvspace{1.0em \@plus\p@}%
1187 1188
The macro \numberline requires that the width of the box that holds the A part number is stored in L TEXs scratch register \@tempdima. Therefore we put it there. We begin a group, and change some of the paragraph parameters (see also the remark at \l@part regarding \rightskip).
1192 1193 1194 1195
\setlength\@tempdima{1.5em}% \begingroup \parindent \z@ \rightskip \@pnumwidth \parfillskip -\@pnumwidth \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 immediately after a chapter entry.
1197 1198 1199 1200 1201 1202
In the report and book document classes the denition for \l@section is much simpler.
report | book \newcommand*\l@section{\@dottedtocline{1}{1.5em}{2.3em}} 1205 /report | book
1203 1204
All lower level entries are dened using the macro \@dottedtocline (see above).
article \newcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}} 1208 \newcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}} 1209 \newcommand*\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}} 1210 \newcommand*\l@subparagraph{\@dottedtocline{5}{10em}{5em}} 1211 /article 1212 report | book 1213 \newcommand*\l@subsection{\@dottedtocline{2}{3.8em}{3.2em}} 1214 \newcommand*\l@subsubsection{\@dottedtocline{3}{7.0em}{4.1em}} 1215 \newcommand*\l@paragraph{\@dottedtocline{4}{10em}{5em}} 1216 \newcommand*\l@subparagraph{\@dottedtocline{5}{12em}{6em}} 1217 /report | book
1206 1207
8.1.2
\listoffigures
List of gures
A This macro is used to request that L TEX produces a list of gures. It is very similar to \tableofcontents.
\newcommand\listoffigures{% report | book 1220 \if@twocolumn 1221 \@restonecoltrue\onecolumn 1222 \else 1223 \@restonecolfalse 1224 \fi 1225 \chapter*{\listfigurename}% 1226 /report | book
1218 1219
41
article
\l@figure
\newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
8.1.3
\listoftables
List of tables
A This macro is used to request that L TEX produces a list of tables. It is very similar to \tableofcontents.
\newcommand\listoftables{% report | book 1236 \if@twocolumn 1237 \@restonecoltrue\onecolumn 1238 \else 1239 \@restonecolfalse 1240 \fi 1241 \chapter*{\listtablename}% 1242 /report | book 1243 article \section*{\listtablename}% 1244 \@mkboth{% 1245 \MakeUppercase\listtablename}% 1246 {\MakeUppercase\listtablename}% 1247 \@starttoc{lot}% 1248 report | book \if@restonecol\twocolumn\fi 1249 }
1234 1235
\l@table
\let\l@table\l@figure
8.2
\bibindent
1251 1252
Bibliography
\newdimen\bibindent \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-ofsentence space. The implementation of this environment is based on the generic list environment. It uses the enumiv counter internally to generate the labels of the list. When an empty thebibliography environment is found, a warning is issued.
\newenvironment{thebibliography}[1] article 1255 {\section*{\refname}%
1253 1254
The \@mkboth was moved out of the heading argument since at least in report and book (twocolumn option) there are denitions for \chapter which would swallow it otherwise.
1256 1257 1258
42
1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270
{\chapter*{\bibname}% \@mkboth{\MakeUppercase\bibname}{\MakeUppercase\bibname}% /!article \list{\@biblabel{\@arabic\c@enumiv}}% {\settowidth\labelwidth{\@biblabel{#1}}% \leftmargin\labelwidth \advance\leftmargin\labelsep \@openbib@code \usecounter{enumiv}% \let\p@enumiv\@empty \renewcommand\theenumiv{\@arabic\c@enumiv}}% \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?)
1271 1272 1273 1274 1275 1276 1277
\clubpenalty4000 \@clubpenalty \clubpenalty \widowpenalty4000% \sfcode\.\@m} {\def\@noitemerr {\@latex@warning{Empty thebibliography environment}}% \endlist}
\newblock
\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.
1279
\let\@openbib@code\@empty
\@biblabel
The label for a \bibitem[...] command is produced by this macro. The default from latex.dtx is used.
1280
% \renewcommand*{\@biblabel}[1]{[#1]\hfill}
\@cite
The output of the \cite command is produced by this macro. The default from latex.dtx is used.
1281
% \renewcommand*{\@cite}[1]{[#1]}
8.3
theindex
The index
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 commands \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.
\newenvironment{theindex} {\if@twocolumn 1284 \@restonecolfalse 1285 \else 1286 \@restonecoltrue 1287 \fi 1288 article \twocolumn[\section*{\indexname}]% 1289 !article \twocolumn[\@makeschapterhead{\indexname}]% 1290 \@mkboth{\MakeUppercase\indexname}% 1291 {\MakeUppercase\indexname}% 1292 \thispagestyle{plain}\parindent\z@
1282 1283
Parameter changes to \columnseprule and \columnsep have to be done after \twocolumn has acted. Otherwise they can aect the last page before the index.
1293
43
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.
1297
{\if@restonecol\onecolumn\else\clearpage\fi}
\indexspace
The amount of white space that is inserted between letter blocks in the index.
1301
8.4
\footnoterule
Footnotes
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.
\renewcommand\footnoterule{% \kern-3\p@ 1304 \hrule\@width.4\columnwidth 1305 \kern2.6\p@}
1302 1303
\c@footnote
Footnotes are numbered within chapters in the report and book document styles.
1306
!article \@addtoreset{footnote}{chapter}
\@makefntext
A The footnote mechanism of L TEX 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 TEX 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.
44
\@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.
1311 1312
%\renewcommand\@makefnmark{\hbox{\@textsuperscript % {\normalfont\@thefnmark}}}
9
9.1
Initialization
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. These commands may be redened in any class or package that is customising A L TEX for use with non-English languages.
\contentsname \listfigurename \listtablename \newcommand\contentsname{Contents} \newcommand\listfigurename{List of Figures} 1315 \newcommand\listtablename{List of Tables}
1313 1314
\refname \bibname \indexname article \newcommand\refname{References} report | book \newcommand\bibname{Bibliography} 1318 \newcommand\indexname{Index}
1316 1317
\figurename \tablename
1319 1320
\newcommand\figurename{Figure} \newcommand\tablename{Table}
\partname \chaptername \appendixname \abstractname \newcommand\partname{Part} report | book \newcommand\chaptername{Chapter} 1323 \newcommand\appendixname{Appendix} 1324 !book \newcommand\abstractname{Abstract}
1321 1322
9.2
\today
Date
This macro uses the TEX primitives \month, \day and \year to provide the date A of the L TEX-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.
\def\today{\ifcase\month\or January\or February\or March\or April\or May\or June\or 1327 July\or August\or September\or October\or November\or December\fi 1328 \space\number\day, \number\year}
1325 1326
9.3
\columnsep
1329
This gives the distance between two columns in two column mode.
45
\columnseprule
This gives the width of the rule between two columns in two column mode. We have no visible rule.
1330
\setlength\columnseprule{0\p@}
9.4
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.
!book \pagestyle{plain} book \pagestyle{headings} 1333 \pagenumbering{arabic}
1331 1332
9.5
When the twoside option wasnt specied, we dont try to make each page as long as all the others.
\if@twoside \else 1336 \raggedbottom 1337 \fi
1334 1335
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.
\if@twocolumn \twocolumn 1340 \sloppy 1341 \flushbottom
1338 1339
Index
Numbers written in italic refer to the page where the corresponding entry is described; numbers underlined refer to the code line of the denition; numbers in roman refer to the code lines where the entry is used.
Symbols \@Roman . . . . . . . . . . 648 \@afterheading . . . . . 728, 758, 808, 828 \@afterindentfalse . . . . . . . . . 689, 785 \@author . . . . . 541, 557, 569, 603, 622 \@beginparpenalty . . . . . . . . . 882, 970 \@biblabel . . . . . . . . . 1262, 1263, 1280 \@chapapp . 496, 525, 658, 790, 815, 1052 \@chapter . . . . 786, 787 \@cite . . . . . . . . . . 1281 \@clubpenalty . . . . 1272 \@date . . . . . . . 542, 560, 570, 604, 625 \@dblfloat . 1088, 1107 \@dblfpbot . . . . . . . 455 \@dblfpsep . . . . . . . 455 \@dblfptop . . . . . . . 455 \@dotsep . . . . . . . . 1132 \@dottedtocline 1204, 1207, 1208, 1209, 1210, 1213, 1214, 1215, 1216, 1233 \@endparpenalty 882, 973 \@endpart . 748, 766, 768 \@eqnnum . . . . . . . . 1070 \@evenfoot 471, 473, 532 \@evenhead 471, 474, 533 \@fnsymbol . . . . . . . 580 \@fontswitch 1130, 1131 \@fpbot . . . . . . . . . . 440 \@fpsep . . . . . . . . . . 440 \@fptop . . . . . . . . . . 440 \@highpenalty . 224, 1155, 1173, 1183 \@idxitem . . 1296, 1298 \@itempenalty . . . . . 882 \@latex@warning . . 1276 \@listI . . . . . . 108, 887 \@listi . . . . . . 108, 116, 126, 136, 149, 159, 169, 887 \@listii . . . . . . . . . 906 \@listiii . . . . . . . . 906 \@listiv . . . . . . . . . 906 \@listv . . . . . . . . . . 906 \@listvi . . . . . . . . . 906
46
\@lowpenalty . . 224, 883, 884, 885, 970 \@mainmatterfalse . . . . . . . . . 666, 682 \@mainmattertrue 8, 674 \@makecaption . . . . 1109 \@makechapterhead . . . . . 805, 807, 810 \@makefnmark . . . . . . . . 581, 1310, 1311 \@makefntext . 582, 1307 \@makeschapterhead . 825, 827, 830, 1289 \@maketitle . . . 587, 589, 594, 601, 611 \@medpenalty . . . . . . 224 \@minipagefalse . . 1119 \@minipagerestore 1060 \@mparswitchfalse . 41 \@mparswitchtrue . . 43 \@mpfootins . . . . . . 1060 \@nobreakfalse . . . 1166 \@nobreaktrue . . . . 1165 \@noitemerr . . . . . . 1275 \@normalsize . . . . . . 87 \@oddfoot . . . . . . . . . 471, 473, 509, 532 \@oddhead . . . . . . . . . 471, 475, 510, 534 \@openbib@code . . . . . . . 66, 1266, 1279 \@openrightfalse . . 56 \@openrighttrue . 53, 55 \@part . . . . 690, 707, 709 \@pnumwidth . . . 1132, 1159, 1160, 1162, 1177, 1178, 1182, 1194, 1195, 1199 \@ptsize . . . . 1, 34, 36, 38, 39, 84, 85 \@restonecolfalse . . . . . . . . 1017, 1031, 1142, 1223, 1239, 1284 \@restonecoltrue . . . . . . . . . 1015, 1029, 1140, 1221, 1237, 1286 \@roman . . . . . . . . . . 944 \@schapter . . . 786, 824 \@secpenalty 1154, 1190 \@setfontsize . . . . . 90, 96, 102, 112, 122, 132, 145, 155, 165, 178, 179, 180, 181, 182, 183, 184, 187, 188, 189, 190, 191, 192, 193, 196, 197, 198, 199, 200, 201
\@settopoint . . 283, 371, 372, 377, 392 \@spart . . . 690, 707, 750 \@startsection 839, 843, 847, 851, 855 \@starttoc . . . . . . . . . 1149, 1230, 1247 \@textsuperscript . . . . 581, 584, 1311 \@thanks . . . . . . . . . . 562, 568, 596, 602 \@thefnmark . . . . . . . . . . 581, 584, 1312 \@title . . . . . . 540, 552, 571, 605, 617 \@titlepagefalse . 5, 50 \@titlepagetrue . . 6, 48 \@tocrmarg . . . . . . 1132 \@topnewpage . . 805, 825 \@topnum . . . . . 593, 784 \@twocolumnfalse . . 59 \@twocolumntrue . . . 61 \@twosidefalse . . . . 41 \@twosidetrue . . . . . 43 \@width . . . . . . . . . 1304
\belowcaptionskip . . . . . . . 1109, 1122 \belowdisplayshortskip . . . . . . 93, 99, 105, 115, 125, 135, 148, 158, 168 \belowdisplayskip . . . . . 107, 141, 174 \bf . . . . . . . . . . . . 1126 \bibindent 67, 68, 1251 \bibname 1259, 1260, 1316 \bigskipamount . . . . 219 \bottomfraction . . . 405 \brokenpenalty . . . . 234 C \c@bottomnumber . . . 404 \c@chapter . . . . . . . 638, 651, 1053, 1067, 1078, 1097 \c@dbltopnumber . . . 409 \c@enumi . . . . . . . . . 942 \c@enumii . . . . . . . . 943 \c@enumiii . . . . . . . 944 \c@enumiv 945, 1262, 1269 \c@equation . 1063, 1067 \c@figure . . . . . . . 1071 \c@footnote . . 580, 1306 \c@paragraph . . 638, 656 \c@part . . . . . . 638, 648 \c@secnumdepth . . . . . 480, 486, 494, 502, 515, 523, 636, 711, 720, 732, 742, 787, 813 \c@section . . . . . . . 638, 649, 652, 1046 \c@subparagraph 638, 657 \c@subsection . 638, 654 \c@subsubsection . . . . . . . . . . 638, 655 \c@table . . . . . . . . 1090 \c@tocdepth . . . . . . . . . 1153, 1172, 1189 \c@topnumber . . . . . . 401 \c@totalnumber . . . . 406 \cal . . . . . . . . . . . . 1130 \centering . . . 739, 762 \changes . . . . . . . . . 963 \chapter . 781, 1144, 1225, 1241, 1259 \chaptermark . . 492, 521, 536, 630, 801 \chaptername . 658, 1321 \cleardoublepage . . . 662, 670, 678, 695, 782, 1013, 1027 \clearpage 664, 672, 680, 697, 782, 1297 \clubpenalty . . . . . . . . 228, 1271, 1272 \col@number . . . . . . . 586 \columnsep . 1295, 1329
A \abovecaptionskip . . . . . . . 1109, 1114 \abovedisplayshortskip . . . . . . 92, 98, 104, 114, 124, 134, 147, 157, 167 \abovedisplayskip . . . . . . . 91, 97, 103, 107, 113, 123, 133, 141, 146, 156, 166, 174 abstract (environment) . . . . . . 963 \abstractname . . . . . 972, 979, 983, 1321 \addcontentsline . . . 713, 715, 734, 736, 791, 795, 799 \addtocontents 802, 803 \and . . . . . . . . . 575, 609 \appendix . . . . . . . 1042 \appendixname 1052, 1321 \arraycolsep . . . . . 1055 \arrayrulewidth . . 1057 \AtEndOfPackage . . . 65 \author . . . 540, 573, 607 B \backmatter . . . . . . . 676 \baselineskip . . . . . . . . . 286, 287, 288, 289, 294, 296 \baselinestretch . . 207
47
\columnseprule . . . . . . . . . . 1294, 1330 \columnwidth . . . . . 1304 \contentsname . 1144, 1146, 1148, 1313 \cs . . . . . . . . . . . . . 963 D \date . . . . . 540, 574, 608 \dblfloatpagefraction . . . . . . . . . . . 411 \dblfloatsep . . . . . . 428 \dbltextfloatsep . . 428 \dbltopfraction . . . 410 \DeclareOldFontCommand . . . 1123, 1124, 1125, 1126, 1127, 1128, 1129 \DeclareRobustCommand . . . . . . 1130, 1131 description (environment) . . . . . . 957 \descriptionlabel . . . . . . . . . 959, 961 \displaywidowpenalty . . . . . . . . . . . 230 \doublerulesep . . . 1058 E \endquotation . . . . \endtitlepage . . . . environments: abstract . . . . . description . . . figure . . . . . . . figure* . . . . . . quotation . . . . . quote . . . . . . . . table . . . . . . . . table* . . . . . . . thebibliography theindex . . . . . titlepage . . . . . verse . . . . . . . . \evensidemargin . . \ext@figure . . . . . . \ext@table . . . . . .
. . . . . . . .
. . . . 394 143, 546 245, 390 . . . 1080 . . . 1099 . . . . 659 . . . 1080 . . . 1099
J \jot . . . . . . . . . . . . 1069 L \l@chapter . . . . . . 1170 \l@figure . . 1233, 1250 \l@paragraph . . . . . 1206 \l@part . . . . . . . . . 1152 \l@section . . . . . . 1187 \l@subparagraph . . 1206 \l@subsection . . . . 1206 \l@subsubsection . 1206 \l@table . . . . . . . . 1250 \labelenumi . . . . . . . 946 \labelenumii . . . . . . 946 \labelenumiii . . . . . 946 \labelenumiv . . . . . . 946 \labelitemi . . . . . . . 953 \labelitemii . . . . . . 953 \labelitemiii . . . . . 953 \labelitemiv . . . . . . 953 \labelsep . 875, 908, 924, 933, 936, 939, 961, 1059, 1265 \labelwidth . . . 875, 907, 908, 923, 924, 932, 933, 935, 936, 938, 939, 958, 1263, 1264 \LARGE . . . . 177, 552, 617 \Large . . . . 177, 721, 842 \large 177, 554, 560, 619, 625, 846, 1162 \leftmargin . . . . . . . . . 67, 116, 126, 136, 149, 159, 169, 859, 888, 906, 922, 931, 934, 937, 958, 995, 996, 1002, 1007, 1264, 1265 \leftmargini 116, 126, 136, 149, 159, 169, 859, 876, 888 \leftmarginii . . . . . . . . . 859, 906, 907 \leftmarginiii . . . . . . . . 859, 922, 923 \leftmarginiv . . . . . . . . . 859, 931, 932 \leftmarginv . . . . . . . . . . 859, 934, 935 \leftmarginvi . . . . . . . . . 859, 937, 938 \leftskip . . . . 1180, 1181, 1197, 1198 \lineskip . 204, 555, 620 \listfigurename . . . . . . 1225, 1227, 1228, 1229, 1313 \listoffigures . . . 1218 \listoftables . . . . 1234
H \hb@xt@ . . . . . . . . . . 583, 1120, 1162, 1182, 1199, 1310 \headheight . . . 236, 387 \headsep . . . . . 236, 388 \Huge . . . . . . . . 177, 747, 765, 821, 835 \huge . . . . . . . . 177, 724, 743, 755, 815 I \if@compatibility . . . 9, 33, 40, 45, 49, 52, 58, 249, 251, 282, 285, 309, 379, 1010, 1164 \if@mainmatter . . 8, 495, 524, 788, 814 \if@noskipsec . . . . . 686 \if@openright . . . . . . . . 7, 661, 669, 677, 694, 771, 782 \if@restonecol . . . . . . . . . 3, 1022, 1036, 1150, 1231, 1248, 1297 \if@titlepage 4, 544, 966 \if@twocolumn . 211, 252, 268, 299, 344, 585, 700, 804, 824, 859, 868, 978, 987, 1014, 1028, 1139, 1220, 1236, 1283, 1338 \if@twoside 322, 350, 471, 770, 1037, 1334 \indexname 1288, 1289, 1290, 1291, 1316 \indexspace . . . . . . 1301 \interlinepenalty . . 233, 718, 740, 753, 763, 820, 834 \intextsep . . . . . . . 413 \it . . . . . . . . . . . . 1127 \item 997, 1004, 1008, 1296 \itemindent . . 68, 69, 958, 993, 994, 1001 \itemsep . . 119, 129, 139, 152, 162, 172, 892, 897, 902, 921, 930, 992 \itshape . . . . . . . . 1127
. 987 . 975 . 963 . 957 1084 1084 . 999 1006 1103 1103 1253 1282 1010 . 990 . 309 1080 1099
F \fboxrule . . . . . . . 1061 \fboxsep . . . . . . . . 1061 figure (environment) 1084 figure* (environment) . . . . . . . . . . 1084 \figurename . 1083, 1319 \floatpagefraction . 408 \floatsep . . . . . . . . 413 \flushbottom . . . . . 1341 \fnum@figure . . . . . 1083 \fnum@table . . . . . . 1102 \footins . . . . 397, 1060 \footnote . . . . 548, 616 \footnoterule 547, 1302
48
\listparindent . . . . 69, 994, 1000, 1001 \listtablename . . . . . . . 1241, 1243, 1245, 1246, 1313 M \mainmatter . . . . . . . 668 \makelabel . . . . . . . 959 \maketitle . . . . . . . 544 \MakeUppercase 479, 493, 501, 514, 522, 1148, 1228, 1229, 1245, 1246, 1256, 1260, 1290, 1291 \marginparpush . . . . 299 \marginparsep . . . . . . . . . 299, 356, 364 \marginparwidth . . . 309 \mathbf . . . . . . . . . 1126 \mathcal . . . . . . . . 1130 \mathit . . . . . . . . . 1127 \mathnormal . . . . . . 1131 \mathrm . . . . . . . . . 1123 \mathsf . . . . . . . . . 1124 \mathtt . . . . . . . . . 1125 \maxdepth . . . . . . . . 249 \medskipamount . . . . 219 \mit . . . . . . . . . . . . 1130 N \newblock . . . . 72, 1278 \newif . . . . . . . 3, 4, 7, 8 \nobreakspace . . . . . 721, 743, 1083, 1102 \normalfont . . . 581, 584, 719, 741, 754, 764, 812, 833, 842, 846, 850, 854, 858, 954, 962, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1312 \normallineskip . . . 204 \normalsize . . . . . . . . 87, 850, 854, 858 \num@figure . . . . . . 1080 \num@table . . . . . . 1099 O \oddsidemargin . . . . 309 \onecolumn . . . 701, 1015, 1029, 1140, 1221, 1237, 1297, 1343 \overfullrule . . . 44, 46 P \p@enumii . . . . . . . . 950 \p@enumiii . . . . . . . 950 \p@enumiv . . . 950, 1268
\pagenumbering . . . . . . . 667, 675, 1333 \paperheight . . . 11, 14, 17, 20, 23, 26, 29, 30, 291, 385 \paperwidth . . . . . . . . 12, 15, 18, 21, 24, 27, 30, 31, 263, 351, 359, 373 \paragraph . . . . . . . 851 \paragraphmark . . . . 630 \parindent . . . . . . . . 208, 582, 717, 752, 812, 832, 855, 1159, 1177, 1194, 1292, 1308 \parsep 70, 118, 119, 128, 129, 138, 139, 151, 152, 161, 162, 171, 172, 890, 895, 900, 911, 915, 919, 921, 928, 1003 \parskip . . . . 208, 1293 \part . . . . . . . . . . . . 684 \partname 721, 743, 1321 \partopsep . . . 878, 929 \postdisplaypenalty 230 \predisplaypenalty . 230 \ps@headings . . . . . . 471 \ps@myheadings . . . . 531 Q \quad . . . . . 481, 487, 516 \quotation . . . . . . . 985 quotation (environment) . . . . . . 999 quote (environment) 1006 R \refname 1255, 1256, 1316 \rm . . . . . . . . . . . . 1123 S \sbox . . . . . . . . . . . 1115 \sc . . . . . . . . . . . . 1127 \scriptsize . . . . . . . 177 \scshape . . . . . . . . 1129 \section . . . . . 839, 979, 1146, 1227, 1243, 1255, 1288 \sectionmark . . 478, 500, 513, 537, 630 \sf . . . . . . . . . . . . 1123 \sffamily . . . . . . . 1124 \sl . . . . . . . . . . . . 1127 \small . . . . 110, 546, 981 \smallskipamount . . 219 \subitem . . . . . . . . 1298 \subparagraph . . . . . 855 \subparagraphmark . 630 \subsection . . . . . . . 843
\subsectionmark . . . . . . . 484, 538, 630 \subsubitem . . . . . . 1298 \subsubsection . . . . 847 \subsubsectionmark . 630 T \tabbingsep . . . . . . 1059 \tabcolsep . . . . . . 1056 table (environment) 1103 table* (environment) 1103 \tablename . 1102, 1319 \tableofcontents . 1137 \textasteriskcentered . . . . . . . . . . . 955 \textbullet . . . . . . . 953 \textendash . . . . . . . 954 \textfloatsep . . . . . 413 \textfraction . . . . . 407 \textheight . . . 285, 389 \textperiodcentered 956 \textwidth . . . . . . . . 251, 352, 360, 375 \thanks 548, 566, 599, 616 thebibliography (environment) . . 1253 \thechapter . . . 496, 525, 648, 790, 792, 815, 1053, 1067, 1078, 1097 \theenumi . . . . . . . . . 941, 946, 950, 951 \theenumii 941, 947, 951 \theenumiii 941, 948, 952 \theenumiv 941, 949, 1269 \theequation 1063, 1070 \thefigure . . . . . . . . . 1073, 1077, 1083 \thefootnote . . . . . . 580 theindex (environment) . . . . . 1282 \thepage . . . . . 474, 475, 510, 533, 534 \theparagraph . . . . . 648 \thepart . . . . . 648, 713, 721, 734, 743 \thesection . . . 481, 503, 516, 648, 1046 \thesubparagraph . . 648 \thesubsection 487, 648 \thesubsubsection . 648 \thetable . . . . . . . . . . 1092, 1096, 1102 \thispagestyle 596, 699, 773, 783, 1019, 1033, 1292 \tiny . . . . . . . . . . . . 177 \title . . . . 540, 572, 606 \titlepage . . . . . . . 968 titlepage (environment) . . . . . 1010 \today . . . . . . 543, 1325 \topfraction . . . . . . 403
49
\topmargin . . . . . . . 379 \topsep 117, 127, 137, 150, 160, 170, 891, 896, 901, 910, 914, 918, 925, 926, 927, 930 \topskip . . 236, 250, 298
\tt . . . . . . . . . . . . 1123 \ttfamily . . . . . . . 1125 \twocolumn . . . . . . . 589, 778, 1022, 1036, 1150, 1231, 1248, 1288, 1289, 1339
50