home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD1.bin / useful / text / tex / pastex / macros / latex2e / contrib / supported / refman / refman.dtx (.txt) < prev    next >
LaTeX Document  |  1994-05-30  |  129KB  |  3,417 lines

  1. % \iffalse meta-comment
  2. % Copyright (C) 1988 - 94 by H. Partl.
  3. % Copyright (C) 1994 by Axel Kielhorn.  All rights reserved.
  4. % For additional copyright information see further down in this file.
  5. % This file is to be used with the LaTeX2e system.
  6. % ------------------------------------------------
  7. %  This system is distributed in the hope that it will be useful,
  8. %  but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. %  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  10. % IMPORTANT NOTICE:
  11. % For error reports in case of UNCHANGED versions see readme files.
  12. % Please do not request updates from us directly.  Distribution is
  13. % done through Mail-Servers and TeX organizations.
  14. % You are not allowed to change this file.
  15. % You are NOT ALLOWED to distribute this file alone.  You are NOT
  16. % ALLOWED to take money for the distribution or use of either this
  17. % file or a changed version, except for a nominal charge for copying
  18. % etc.
  19. % \fi
  20. % \CheckSum{3203}
  21. %% \CharacterTable
  22. %%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  23. %%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
  24. %%   Digits        \0\1\2\3\4\5\6\7\8\9
  25. %%   Exclamation   \!     Double quote  \"     Hash (number) \#
  26. %%   Dollar        \$     Percent       \%     Ampersand     \&
  27. %%   Acute accent  \'     Left paren    \(     Right paren   \)
  28. %%   Asterisk      \*     Plus          \+     Comma         \,
  29. %%   Minus         \-     Point         \.     Solidus       \/
  30. %%   Colon         \:     Semicolon     \;     Less than     \<
  31. %%   Equals        \=     Greater than  \>     Question mark \?
  32. %%   Commercial at \@     Left bracket  \[     Backslash     \\
  33. %%   Right bracket \]     Circumflex    \^     Underscore    \_
  34. %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
  35. %%   Right brace   \}     Tilde         \~}
  36. % \title{Document Class \texttt{refman} for \LaTeX{} version 2e}
  37. % \author{%
  38. % Copyright (C) 1988 by Hubert Partl \and
  39. % Copyright (C) 1994-94 by Axel Kielhorn
  40. % \maketitle
  41. % \tableofcontents
  42. % \StopEventually{}    ^^A 
  43. % \section{Identification}
  44. %    These document classes can only be used with \LaTeXe, so we make
  45. %    sure that an appropriate message is displayed when another \TeX{}
  46. %    format is used.
  47. %    \begin{macrocode}
  48. %<*refman-s|refman>
  49. \NeedsTeXFormat{LaTeX2e}
  50. %    \end{macrocode}
  51. %    We store the date, version and name of this file in three control
  52. %    sequences, for future use.
  53. %    \begin{macrocode}
  54. \def\filedate{1994/05/28}
  55. \def\fileversion{1.9}
  56. \def\filename{refman.dtx}
  57. %</refman-s|refman>
  58. %    \end{macrocode}
  59. %    Announce the Class name and its version:
  60. %    \begin{macrocode}
  61. %<*refman-s>
  62. \ProvidesClass{refman-s}[\filedate\space LaTeX2e document class]
  63. %</refman-s>
  64. %<*refman>
  65. \ProvidesClass{refman}[\filedate\space LaTeX2e document class]
  66. %</refman>
  67. %    \end{macrocode}
  68. %    \begin{macrocode}
  69. %<+10pt>\ProvidesFile{ref10.clo}[\filedate\space
  70. %<+10pt>                      LaTeX2e document class size dependent file]
  71. %<+11pt>\ProvidesFile{ref11.clo}[\filedate\space
  72. %<+11pt>                      LaTeX2e document class size dependent file]
  73. %<+12pt>\ProvidesFile{ref12.clo}[\filedate\space
  74. %<+12pt>                      LaTeX2e document class size dependent file]
  75. %    \end{macrocode}
  76. %     And display it on the terminal (and the log file):
  77. %    \begin{macrocode}
  78. %<+refman-s>\typeout{Document Class `refman-s' <\filedate>.}
  79. %<+refman>\typeout{Document Class `refman' <\filedate>.}
  80. %    \end{macrocode}
  81. % \section{Initial Code}
  82. %    In this part we define a few commands that are used later on.
  83. % \begin{macro}{\@ptsize}
  84. %    This control sequence is used to store the second digit of the
  85. %    pointsize we are typesetting in. So, normally, it's value is one
  86. %    of 0, 1 or 2.
  87. %    \begin{macrocode}
  88. %<*refman-s|refman>
  89. \newcommand\@ptsize{}
  90. %    \end{macrocode}
  91. % \end{macro}
  92. % \begin{macro}{\if@restonecol}
  93. %    Only the index may be printed in twocolumn-layout, but this is not 
  94. %    implemented yet. Nevertheless we provide the neccesary commands.
  95. %    \begin{macrocode}
  96. \newif\if@restonecol
  97. %    \end{macrocode}
  98. % \end{macro}
  99. % \begin{macro}{\if@titlepage}
  100. %    A switch to indicate if a titlepage has to be produced.  For the
  101. %    refman-s document class the default is not to make a seperate
  102. %    titlepage.
  103. %    \begin{macrocode}
  104. \newif\if@titlepage
  105. %<+refman-s>\@titlepagefalse
  106. %<-refman-s>\@titlepagetrue
  107. %    \end{macrocode}
  108. % \end{macro}
  109. % \begin{macro}{\if@openbib}
  110. %    A switch to indicate if the bibliography has to be produced in
  111. %    the ``open'' format. The default is to use a ``closed'' format.
  112. %    \begin{macrocode}
  113. \newif\if@openbib
  114. \@openbibfalse
  115. %    \end{macrocode}
  116. % \end{macro}
  117. % \section{Declaration of Options}
  118. % \subsection{Setting Paper Sizes}
  119. %    The variables |\paperwidth| and |\paperheight| should reflect the
  120. %    physical paper size after trimming. For desk printer output this
  121. %    is usually the real paper size since there is no post-processing.
  122. %    Classes for real book production will probably add other paper
  123. %    sizes and additionally the production of crop marks for trimming.
  124. %    \begin{macrocode}
  125. \DeclareOption{a4paper}
  126.    {\setlength\paperheight {297mm}%
  127.     \setlength\paperwidth  {210mm}}
  128. \DeclareOption{a5paper}
  129.    {\setlength\paperheight {210mm}%
  130.     \setlength\paperwidth  {148mm}}
  131. \DeclareOption{b5paper}
  132.    {\setlength\paperheight {250mm}%
  133.     \setlength\paperwidth  {176mm}}
  134. \DeclareOption{letterpaper}
  135.    {\setlength\paperheight {11in}%
  136.     \setlength\paperwidth  {8.5in}}
  137. \DeclareOption{legalpaper}
  138.    {\setlength\paperheight {14in}%
  139.     \setlength\paperwidth  {8.5in}}
  140. \DeclareOption{executivepaper}
  141.    {\setlength\paperheight {10.5in}%
  142.     \setlength\paperwidth  {7.25in}}
  143. %    \end{macrocode}
  144. %    The option \Lopt{landscape} switches the values of |\paperheight|
  145. %    and |\paperwidth|, assuming the dimensions were given for portrait
  146. %    paper.
  147. %    \begin{macrocode}
  148. \DeclareOption{landscape}
  149.    {\setlength\@tempdima   {\paperheight}%
  150.     \setlength\paperheight {\paperwidth}%
  151.     \setlength\paperwidth  {\@tempdima}}
  152. %    \end{macrocode}
  153. %    The option \Lopt{sqare} assigns the values of |\paperwidth|
  154. %    to |\paperheight|, which will result in a square layout.
  155. %    \begin{macrocode}
  156. \DeclareOption{square}
  157.    {\setlength\paperheight {\paperwidth}}
  158. %    \end{macrocode}
  159. % \subsection{Choosing the type size}
  160. %    The type size options are handled by defining |\@ptsize| to contain
  161. %    the last digit of the size in question and branching on |\ifcase|
  162. %    statements. This is done for historical reasons to stay compatible
  163. %    with other packages that use the |\@ptsize| variable to select
  164. %    special actions. It makes the declarations of size options less
  165. %    than 10pt difficult, although one can probably use \texttt{9}
  166. %    and \texttt{8} assuming that a class wont define both
  167. %    \Lopt{8pt} and \Lopt{18pt} options.
  168. %    \begin{macrocode}
  169. \DeclareOption{10pt}{\renewcommand\@ptsize{0}}
  170. \DeclareOption{11pt}{\renewcommand\@ptsize{1}}
  171. \DeclareOption{12pt}{\renewcommand\@ptsize{2}}
  172. %    \end{macrocode}
  173. %  \subsection{Two-side or one-side printing}
  174. %    For two-sided printing we use the switch |\if@twoside|. In
  175. %    addition we have to set the |\if@mparswitch| to get any margin
  176. %    paragraphs into the outside margin.
  177. %    \begin{macrocode}
  178. \DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
  179. \DeclareOption{twoside}{\@twosidetrue  \@mparswitchtrue}
  180. %    \end{macrocode}
  181. %  \subsection{Draft option}
  182. %    If the user requests \Lopt{draft} we show any overfull boxes.
  183. %    We could probably add some more interesting stuff to this option.
  184. %    \begin{macrocode}
  185. \DeclareOption{draft}{\setlength\overfullrule{5pt}}
  186. \DeclareOption{final}{\setlength\overfullrule{0pt}}
  187. %    \end{macrocode}
  188. %  \subsection{Titlepage option}
  189. %    An article usually has no separate titlepage, but the user can
  190. %    request one.
  191. %    \begin{macrocode}
  192. \DeclareOption{titlepage}{\@titlepagetrue}
  193. \DeclareOption{notitlepage}{\@titlepagefalse}
  194. %    \end{macrocode}
  195. %  \subsection{Twocolumn printing}
  196. %    Two-column is only alowed in the index. Therefore the option
  197. %    \Lopt{twocolumn} will lead to an error message.
  198. %    \begin{macrocode}
  199. \DeclareOption{onecolumn}{\@twocolumnfalse}
  200. \DeclareOption{twocolumn}{\typeout{`Twocolumn' may be only
  201.                            used in the index}\@twocolumnfalse}
  202. %    \end{macrocode}
  203. %  \subsection{Equation numbering on the left}
  204. %    The option \Lopt{leqno} can be used to get the equation numbers
  205. %    on the left side of the equation. \file{leqno.clo} is defined in
  206. %    \file{classes.dtx}.
  207. %    \begin{macrocode}
  208. \DeclareOption{leqno}{\input{leqno.clo}}
  209. %    \end{macrocode}
  210. %  \subsection{Flush left displays}
  211. %    The option \Lopt{fleqn} redefines the displayed math environmens
  212. %    in such a way that they come out flush left, with an indentation
  213. %    of |\mathindent| from the prevailing left margin.\file{fleqn.clo}
  214. %    is defined in \file{classes.dtx}.
  215. %    \begin{macrocode}
  216. \DeclareOption{fleqn}{\input{fleqn.clo}}
  217. %    \end{macrocode}
  218. % \subsection{Open bibliography}
  219. %    The option \Lopt{openbib} produces the ``open'' bibliography
  220. %    style, in which each block starts on a new line, and succeeding
  221. %    lines in a block are indented by |\bibindent|.
  222. %    \begin{macrocode}
  223. \DeclareOption{openbib}{\@openbibtrue}
  224. %    \end{macrocode}
  225. % \subsection{User flags}
  226. %   There are some flags the user may change to control the
  227. %   behaviour of some commands:
  228. %   \begin{macro}{\ifdescriptioncolon}
  229. %   This switch controls whether there is a colon in the
  230. %   description item or not.
  231. %    \begin{macrocode}
  232. \newif\ifdescriptioncolon \descriptioncolontrue
  233. %    \end{macrocode}
  234. %   \end{macro}
  235. %   \begin{macro}{\ifdescriptionleft}
  236. %   This switch controls whether the description items
  237. %   are set left bound or right bound.
  238. %    \begin{macrocode}
  239. \newif\ifdescriptionleft \descriptionleftfalse
  240. %    \end{macrocode}
  241. %   \end{macro}
  242. %   \begin{macro}{\ifmaxipagerule}
  243. %   This switch controls whether there is a rule at the
  244. %   beginning and end of a maxipage. This flag may later be used
  245. %   to select rules at other places (like part or chapter) as well.
  246. %    \begin{macrocode}
  247. \newif\ifmaxipagerule \maxipageruletrue
  248. %    \end{macrocode}
  249. %   \end{macro}
  250. % \section{Executing Options}
  251. %    Here we execute the default options to initialize certain
  252. %    variables.
  253. %    \begin{macrocode}
  254. \ExecuteOptions{letterpaper,10pt,oneside,onecolumn,final}
  255. %    \end{macrocode}
  256. %    The |\ProcessOptions| command causes the execution of the code
  257. %    for every option \Lopt{FOO}
  258. %    which is declared and for which the user typed
  259. %    the \Lopt{FOO} option in his
  260. %    |\documentclass| command.  For every option \Lopt{BAR} he typed,
  261. %    which is not declared, the option is assumed to be a global option.
  262. %    All options will be passed as document options to any
  263. %    |\usepackage| command in the document preamble.
  264. %    \begin{macrocode}
  265. \ProcessOptions
  266. %    \end{macrocode}
  267. %    Now that all the options have been executed we can load the
  268. %    chosen class option file that contains all size dependent code.
  269. %    \begin{macrocode}
  270. \input{ref1\@ptsize.clo}
  271. %</refman-s|refman>
  272. %    \end{macrocode}
  273. %  \section{Loading Packages}
  274. %  The standard class files do not load additional packages.
  275. % \section{Document Layout}
  276. % \label{sec:maincode}
  277. %  In this section we are finally dealing with the nasty typographical
  278. %  details.
  279. % \subsection{Fonts}
  280. %    \LaTeX\ offers the user commands to change the size of the font,
  281. %    relative to the `main' size. Each relative size changing command
  282. %    |\size| executes the command
  283. %    |\@setfontsize||\size|\meta{font-size}\meta{baselineskip} where:
  284. %    \begin{description}
  285. %    \item[\meta{font-size}] The absolute size of the font to use from
  286. %        now on.
  287. %    \item[\meta{baselineskip}] The normal value of |\baselineskip|
  288. %        for the size of the font selected. (The actual value will be
  289. %        |\baselinestretch| * \meta{baselineskip}.)
  290. %    \end{description}
  291. %    A number of commands, defined in the \LaTeX{} kernel, shorten the
  292. %    following  definitions and are used throughout. They are:
  293. % \begin{center}
  294. % \begin{tabular}{ll@{\qquad}ll@{\qquad}ll}
  295. %  \verb=\@vpt= & 5 & \verb=\@vipt= & 6 & \verb=\@viipt= & 7 \\
  296. %  \verb=\@viiipt= & 8 & \verb=\@ixpt= & 9 & \verb=\@xpt= & 10 \\
  297. %  \verb=\@xipt= & 10.95 & \verb=\@xiipt= & 12 & \verb=\@xivpt= & 14.4\\
  298. %  ...
  299. %  \end{tabular}
  300. %  \end{center}
  301. % \begin{macro}{\normalsize}
  302. % \begin{macro}{\@normalsize}
  303. %    The user level command for the main size is |\normalsize|.
  304. %    Internally \LaTeX{} uses |\@normalsize| when it refers to the
  305. %    main size. |\@normalsize| will be defined to work like
  306. %    |\normalsize| if the latter is redefined from its default
  307. %    definition (that just issues an error message). Otherwise
  308. %    |\@normalsize| simply selects a 10pt/12pt size.
  309. %    The |\normalsize| macro also sets new values for
  310. %    |\abovedisplayskip|, |\abovedisplayshortskip| and
  311. %    |\belowdisplayshortskip|.
  312. %    \begin{macrocode}
  313. %<*10pt|11pt|12pt>
  314. \renewcommand\normalsize{%
  315. %<*10pt>
  316.    \@setfontsize\normalsize\@xpt\@xiipt
  317.    \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
  318.    \abovedisplayshortskip \z@ \@plus3\p@
  319.    \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
  320. %</10pt>
  321. %<*11pt>
  322.    \@setfontsize\normalsize\@xipt{13.6}%
  323.    \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
  324.    \abovedisplayshortskip \z@ \@plus3\p@
  325.    \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
  326. %</11pt>
  327. %<*12pt>
  328.    \@setfontsize\normalsize\@xiipt{14.5}%
  329.    \abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@
  330.    \abovedisplayshortskip \z@ \@plus3\p@
  331.    \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
  332. %</12pt>
  333. %    \end{macrocode}
  334. %    The |\belowdisplayskip| is always equal to the
  335. %    |\abovedisplayskip|. The parameters of the first level list are
  336. %    always given by |\@listI|.
  337. %    \begin{macrocode}
  338.    \belowdisplayskip \abovedisplayskip
  339.    \let\@listi\@listI}
  340. %    \end{macrocode}
  341. %    We initially choose the normalsize font.
  342. %    \begin{macrocode}
  343. \normalsize
  344. %    \end{macrocode}
  345. % \end{macro}
  346. % \end{macro}
  347. % \begin{macro}{\small}
  348. %    This is similar to |\normalsize|.
  349. %    \begin{macrocode}
  350. \renewcommand\small{%
  351. %<*10pt>
  352.    \@setfontsize\small\@ixpt{11}%
  353.    \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
  354.    \abovedisplayshortskip \z@ \@plus2\p@
  355.    \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
  356.    \def\@listi{\leftmargin\leftmargini
  357.                \topsep 4\p@ \@plus2\p@ \@minus2\p@
  358.                \parsep 2\p@ \@plus\p@ \@minus\p@
  359.                \itemsep \parsep}%
  360. %</10pt>
  361. %<*11pt>
  362.    \@setfontsize\small\@xpt\@xiipt
  363.    \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
  364.    \abovedisplayshortskip \z@ \@plus3\p@
  365.    \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
  366.    \def\@listi{\leftmargin\leftmargini
  367.                \topsep 6\p@ \@plus2\p@ \@minus2\p@
  368.                \parsep 3\p@ \@plus2\p@ \@minus\p@
  369.                \itemsep \parsep}%
  370. %</11pt>
  371. %<*12pt>
  372.    \@setfontsize\small\@xipt{13.6}%
  373.    \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
  374.    \abovedisplayshortskip \z@ \@plus3\p@
  375.    \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
  376.    \def\@listi{\leftmargin\leftmargini
  377.                \topsep 9\p@ \@plus3\p@ \@minus5\p@
  378.                \parsep 4.5\p@ \@plus2\p@ \@minus\p@
  379.                \itemsep \parsep}%
  380. %</12pt>
  381.    \belowdisplayskip \abovedisplayskip
  382. %    \end{macrocode}
  383. % \end{macro}
  384. % \begin{macro}{\footnotesize}
  385. %    This is similar to |\normalsize|.
  386. %    \begin{macrocode}
  387. \renewcommand\footnotesize{%
  388. %<*10pt>
  389.    \@setfontsize\footnotesize\@viiipt{9.5}%
  390.    \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@
  391.    \abovedisplayshortskip \z@ \@plus\p@
  392.    \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
  393.    \def\@listi{\leftmargin\leftmargini
  394.                \topsep 3\p@ \@plus\p@ \@minus\p@
  395.                \parsep 2\p@ \@plus\p@ \@minus\p@
  396.                \itemsep \parsep}%
  397. %</10pt>
  398. %<*11pt>
  399.    \@setfontsize\footnotesize\@ixpt{11}%
  400.    \abovedisplayskip 8\p@ \@plus2\p@ \@minus4\p@
  401.    \abovedisplayshortskip \z@ \@plus\p@
  402.    \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
  403.    \def\@listi{\leftmargin\leftmargini
  404.                \topsep 4\p@ \@plus2\p@ \@minus2\p@
  405.                \parsep 2\p@ \@plus\p@ \@minus\p@
  406.                \itemsep \parsep}%
  407. %</11pt>
  408. %<*12pt>
  409.    \@setfontsize\footnotesize\@xpt\@xiipt
  410.    \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
  411.    \abovedisplayshortskip \z@ \@plus3\p@
  412.    \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
  413.    \def\@listi{\leftmargin\leftmargini
  414.                \topsep 6\p@ \@plus2\p@ \@minus2\p@
  415.                \parsep 3\p@ \@plus2\p@ \@minus\p@
  416.                \itemsep \parsep}%
  417. %</12pt>
  418.    \belowdisplayskip \abovedisplayskip
  419. %</10pt|11pt|12pt>
  420. %    \end{macrocode}
  421. % \end{macro}
  422. % \begin{macro}{\scriptsize}
  423. % \begin{macro}{\tiny}
  424. % \begin{macro}{\large}
  425. % \begin{macro}{\Large}
  426. % \begin{macro}{\LARGE}
  427. % \begin{macro}{\huge}
  428. % \begin{macro}{\Huge}
  429. %    These are all much simpler than the previous macros, they just
  430. %    select a new fontsize, but leave the parameters for displays and
  431. %    lists alone.
  432. %    \begin{macrocode}
  433. %<*10pt>
  434. \renewcommand\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt}
  435. \renewcommand\tiny{\@setfontsize\tiny\@vpt\@vipt}
  436. \renewcommand\large{\@setfontsize\large\@xiipt{14}}
  437. \renewcommand\Large{\@setfontsize\Large\@xivpt{18}}
  438. \renewcommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}
  439. \renewcommand\huge{\@setfontsize\huge\@xxpt{25}}
  440. \renewcommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
  441. %</10pt>
  442. %<*11pt>
  443. \renewcommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
  444. \renewcommand\tiny{\@setfontsize\tiny\@vipt\@viipt}
  445. \renewcommand\large{\@setfontsize\large\@xiipt{14}}
  446. \renewcommand\Large{\@setfontsize\Large\@xivpt{18}}
  447. \renewcommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}
  448. \renewcommand\huge{\@setfontsize\huge\@xxpt{25}}
  449. \renewcommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
  450. %</11pt>
  451. %<*12pt>
  452. \renewcommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
  453. \renewcommand\tiny{\@setfontsize\tiny\@vipt\@viipt}
  454. \renewcommand\large{\@setfontsize\large\@xivpt{18}}
  455. \renewcommand\Large{\@setfontsize\Large\@xviipt{22}}
  456. \renewcommand\LARGE{\@setfontsize\LARGE\@xxpt{25}}
  457. \renewcommand\huge{\@setfontsize\huge\@xxvpt{30}}
  458. \let\Huge=\huge
  459. %</12pt>
  460. %    \end{macrocode}
  461. % \end{macro}
  462. % \end{macro}
  463. % \end{macro}
  464. % \end{macro}
  465. % \end{macro}
  466. % \end{macro}
  467. % \end{macro}
  468. % \subsection{Paragraphing}
  469. % \begin{macro}{\lineskip}
  470. % \begin{macro}{\normallineskip}
  471. %    These parameters control \TeX's behaviour when two lines tend to
  472. %    come too close together.
  473. %    \begin{macrocode}
  474. %<*refman-s|refman>
  475. \setlength\lineskip{1\p@}
  476. \setlength\normallineskip{1\p@}
  477. %    \end{macrocode}
  478. % \end{macro}
  479. % \end{macro}
  480. % \begin{macro}{\baselinestretch}
  481. %    This is used as a multiplier for |\baselineskip|. The default is
  482. %    to {\em not\/} stretch the baselines.
  483. %    \begin{macrocode}
  484. \renewcommand\baselinestretch{}
  485. %    \end{macrocode}
  486. % \end{macro}
  487. % \begin{macro}{\parskip}
  488. % \begin{macro}{\parindent}
  489. %    |\parskip| gives extra vertical space between paragraphs and
  490. %    |\parindent| is the width of the paragraph indentation. The value
  491. %    of |\parindent| is set to 0 but the definition kept in the
  492. %    size-dependend files for compatibility reasons.
  493. %    \begin{macrocode}
  494. \setlength\parskip{0.5\baselineskip \@plus 2\p@}
  495. %</refman-s|refman>
  496. %<*10pt|11pt|12pt>
  497. \setlength\parindent{\z@}
  498. %</10pt|11pt|12pt>
  499. %    \end{macrocode}
  500. % \end{macro}
  501. % \end{macro}
  502. % \begin{macro}{\@lowpenalty}
  503. % \begin{macro}{\@medpenalty}
  504. % \begin{macro}{\@highpenalty}%
  505. %    The commands |\nopagebreak| and |\nolinebreak| put in penalties
  506. %    to discourage these breaks at the point they are put in.
  507. %    They use |\@lowpenalty|, |\@medpenalty| or |\@highpenalty|,
  508. %    dependent on their argument.
  509. %    \begin{macrocode}
  510. %<*refman-s|refman>
  511. \@lowpenalty   51
  512. \@medpenalty  151
  513. \@highpenalty 301
  514. %    \end{macrocode}
  515. % \end{macro}
  516. % \end{macro}
  517. % \end{macro}
  518. % \begin{macro}{\clubpenalty}
  519. % \begin{macro}{\widowpenalty}
  520. %    These penalties are use to discourrage club and widow lines.
  521. %    Because we use their default values we only show them here,
  522. %    commented out.
  523. %    \begin{macrocode}
  524. % \clubpenalty  150
  525. % \widowpenalty 150
  526. %    \end{macrocode}
  527. % \end{macro}
  528. % \end{macro}
  529. % \begin{macro}{\displaywidowpenalty}
  530. % \begin{macro}{\predisplaypenalty}
  531. % \begin{macro}{\postdisplaypenalty}
  532. %    Discourrage (but not so much) widows in front of a math display
  533. %    and forbid breaking directly in front of a display. Allow break
  534. %    after a display without a penalty. Again the default values are
  535. %    used, therefore we only show them here.
  536. %    \begin{macrocode}
  537. % \displaywidowpenalty 50
  538. % \predisplaypenalty   10000
  539. % \postdisplaypenalty  0
  540. %    \end{macrocode}
  541. % \end{macro}
  542. % \end{macro}
  543. % \end{macro}
  544. % \begin{macro}{\interlinepenalty}
  545. %    Allow the breaking of a page in the middle of a paragraph.
  546. %    \begin{macrocode}
  547. % \interlinepenalty 0
  548. %    \end{macrocode}
  549. % \end{macro}
  550. % \begin{macro}{\brokenpenalty}
  551. %    We allow the breaking of a page after a hyphenated line.
  552. %    \begin{macrocode}
  553. % \brokenpenalty 0
  554. %</refman-s|refman>
  555. %    \end{macrocode}
  556. % \end{macro}
  557. % \subsection{Page Layout}
  558. %    All margin dimensions are measured from a point one inch from the
  559. %    top and lefthand side of the page.
  560. % \subsubsection{Vertical spacing}
  561. % \begin{macro}{\headheight}
  562. % \begin{macro}{\headsep}
  563. % \begin{macro}{\topskip}
  564. %    The |\headheight| is the height of the box that will contain the
  565. %    running head. The |\headsep| is the distance between the bottom
  566. %    of the running head and the top of the text. |\topskip| is the
  567. %    |\baselineskip| for the first line on a page.
  568. %    \begin{macrocode}
  569. %<*10pt|11pt|12pt>
  570. \setlength\headheight{12\p@}
  571. \setlength\headsep   {\baselineskip}
  572. %<+10pt>\setlength\topskip   {10\p@}
  573. %<+11pt>\setlength\topskip   {11\p@}
  574. %<+12pt>\setlength\topskip   {12\p@}
  575. %    \end{macrocode}
  576. % \end{macro}
  577. % \end{macro}
  578. % \end{macro}
  579. % \begin{macro}{\footskip}
  580. %    The distance from the baseline of the box which contains the
  581. %    running footer to the baseline of last line of text is controlled
  582. %    by the |\footskip|.
  583. %    Bottom of page:
  584. %    \begin{macrocode}
  585. \setlength\footskip{30\p@}   %
  586. %    \end{macrocode}
  587. % \end{macro}
  588. % \subsubsection{The dimension of text}
  589. % \begin{macro}{\fullwidth}
  590. % \begin{macro}{\textwidth}
  591. % \begin{macro}{\leftmarginwidth}
  592. %    There is no need to supply a compatibility mode since the
  593. %    independend \texttt{refman.sty} was never released to the
  594. %    public.
  595. %    We will set the dimensions differently,
  596. %    taking into account the paper size for instance.
  597. %    First, we calculate the maximum textwidth, which will fit on the
  598. %    selected paper and store it in |\@tempdima|. Then we store the
  599. %    length of a line with approximately 60 -- 70 characters
  600. %    multiplyied by 1.4 in |\@tempdimb|. This will lead to |\fullwidth|
  601. %    which is later multipied by 0.7 to give the correct textwidth.
  602. %    \begin{macrocode}
  603. \newdimen\leftmarginwidth
  604. \newdimen\fullwidth
  605. \newdimen\emptyfoottopmargin
  606. \newdimen\emptyheadtopmargin
  607. \setlength\@tempdima{\paperwidth}
  608. \addtolength\@tempdima{-2in}
  609. %<+10pt>\setlength\@tempdimb{531\p@}
  610. %<+11pt>\setlength\@tempdimb{582\p@}
  611. %<+12pt>\setlength\@tempdimb{634\p@}
  612. %    \end{macrocode}
  613. %    Now we can set the |\textwidth|, depending on whether we will be
  614. %    setting one or two columns.
  615. %    In two column mode each {\em column} shouldn't be wider than
  616. %    |\@tempdimb| (which could happen on \textsc{a3} paper for
  617. %    instance).
  618. %    \begin{macrocode}
  619. \if@twocolumn
  620.   \ifdim\@tempdima>2\@tempdimb\relax
  621.     \setlength\textwidth{2\@tempdimb}
  622.   \else
  623.     \setlength\textwidth{\@tempdima}
  624.   \fi
  625. %    \end{macrocode}
  626. %    In one column mode the text should not be wider than the minimum
  627. %    of the paperwidth (minus 2 inches for the margins) and the
  628. %    maximum length of a line as defined by the number of characters.
  629. %    \begin{macrocode}
  630. \else
  631.   \ifdim\@tempdima>\@tempdimb\relax
  632.     \setlength\fullwidth{\@tempdimb}
  633.   \else
  634.     \setlength\fullwidth{\@tempdima}
  635.   \fi
  636. %    \end{macrocode}
  637. %    Here we modify the width of the text a little to be a whole
  638. %    number of points.
  639. %    \begin{macrocode}
  640. \@settopoint\fullwidth
  641. \setlength\textwidth{0.7\fullwidth} % This may change
  642. \@settopoint\textwidth
  643. \setlength\leftmarginwidth{\fullwidth}
  644. \addtolength\leftmarginwidth{-\textwidth}
  645. %    \end{macrocode}
  646. % \end{macro}
  647. % \end{macro}
  648. % \end{macro}
  649. % \begin{macro}{\textheight}
  650. %    Now that we have computed the width of the text, we have to take
  651. %    care of the height. The |\textheight| is the height of text
  652. %    (including footnotes and figures, excluding running head and
  653. %    foot).
  654. %    Again we compute this, depending on the papersize and depending
  655. %    on the baselineskip that is used, in order to have a whole number
  656. %    of lines on the page.
  657. %    \begin{macrocode}
  658. \setlength\@tempdima{\paperheight}
  659. %    \end{macrocode}
  660. %    We leave at least a 1 inch margin on the top and the bottom of
  661. %    the page.
  662. %    \begin{macrocode}
  663. \addtolength\@tempdima{-2in}
  664. %    \end{macrocode}
  665. %    The running headers and footers extend partly into the top
  666. %    and bottom margins.
  667. %    \begin{macrocode}
  668. \addtolength\@tempdima{-.5in}
  669. %    \end{macrocode}
  670. %    Then we divide the result by the current |\baselineskip| and
  671. %    store this in the count register |\@tempcnta|, which then
  672. %    contains the number of lines that fit on this page.
  673. %    \begin{macrocode}
  674. \divide\@tempdima\baselineskip
  675. \@tempcnta=\@tempdima
  676. %    \end{macrocode}
  677. %    From this we can calculate the height of the text.
  678. %    \begin{macrocode}
  679. \setlength\textheight{\@tempcnta\baselineskip}
  680. %    \end{macrocode}
  681. %    The first line on the page has a height of |\topskip|.
  682. %    \begin{macrocode}
  683. \advance\textheight by \topskip
  684. %    \end{macrocode}
  685. % \end{macro}
  686. % \subsubsection{Margins}
  687. % \begin{macro}{\oddsidemargin}
  688. % \begin{macro}{\evensidemargin}
  689. % \begin{macro}{\marginparwidth}
  690. %    The values for |\oddsidemargin| and |\marginparwidth| will be set
  691. %    independing on the status of the |\if@twoside|. (We have the same
  692. %    layout on odd and even pages.)
  693. %    For one-sided printing we center the text on the page, by
  694. %    calculating the difference between |textwidth| and
  695. %    |\paperwidth|$-$|2in|. Half of that difference is than used for
  696. %    the margin. The amount of space that can be used for marginal
  697. %    notes is |leftmarginwidth| $-$ |marginparsep|
  698. %    to which we add any `leftover' space.
  699. %    \begin{macrocode}
  700. \setlength\@tempdima        {\paperwidth}
  701. \addtolength\@tempdima      {-2in}
  702. \addtolength\@tempdima      {-\fullwidth}
  703. \setlength\oddsidemargin    {.5\@tempdima}
  704. \addtolength\oddsidemargin  {\leftmarginwidth}
  705. \setlength\marginparwidth   {.5\@tempdima}
  706. \addtolength\marginparwidth {\leftmarginwidth}
  707. %    \end{macrocode}
  708. %    Then |\evensidemargin| is set to |\oddsidemargin|.
  709. %    \begin{macrocode}
  710. \setlength\evensidemargin  {\oddsidemargin}
  711. %    \end{macrocode}
  712. % \end{macro}
  713. % \end{macro}
  714. % \end{macro}
  715. % \begin{macro}{\marginparsep}
  716. % \begin{macro}{\marginparpush}
  717. %    The horizontal space between the main text and marginal notes is
  718. %    determined by |\marginparsep|, the minimum vertical separation
  719. %    between two marginal notes is controlled by |\marginparpush| which
  720. %    is set to 0 because we will have lots of margin notes. The width
  721. %    of the |marginpar| is reduced by |marginparsep| to produce flushleft
  722. %    pages.
  723. %    \begin{macrocode}
  724. \if@twocolumn
  725.   \setlength\marginparsep{10\p@}
  726. \else
  727. %<+10pt>  \setlength\marginparsep{11\p@}
  728. %<+11pt>  \setlength\marginparsep{10\p@}
  729. %<+12pt>  \setlength\marginparsep{10\p@}
  730. \addtolength\marginparwidth {-\marginparsep}
  731. \setlength\marginparpush{0\p@}
  732. %    \end{macrocode}
  733. % \end{macro}
  734. % \end{macro}
  735. % \begin{macro}{\topmargin}
  736. %    The |\topmargin| is the distance between the top of `the
  737. %    printable area' --which is 1 inch below the top of the paper--
  738. %    and the top of the box which contains the running head.
  739. %    It can now be computed from the values set above.
  740. %    \begin{macrocode}
  741. \setlength\topmargin{\paperheight}
  742. \addtolength\topmargin{-2in}
  743. \addtolength\topmargin{-\headheight}
  744. \addtolength\topmargin{-\headsep}
  745. \addtolength\topmargin{-\textheight}
  746. \addtolength\topmargin{-\footskip}     % this might be wrong!
  747. %    \end{macrocode}
  748. %    By changing the factor in the next line the complete page
  749. %    can be shifted vertically.
  750. %    The contents of the page is shifted up or down by one
  751. %    |\baselineskip| depending on the pagestyle.
  752. %    Do not combine headings and footings
  753. %    in one document!
  754. %    \begin{macrocode}
  755. \addtolength\topmargin{-.5\topmargin}
  756. \setlength\emptyfoottopmargin{\topmargin}
  757. \addtolength\emptyfoottopmargin{\baselineskip}
  758. \setlength\emptyheadtopmargin{\topmargin}
  759. \addtolength\emptyheadtopmargin{-\baselineskip}
  760. \@settopoint\topmargin
  761. %    \end{macrocode}
  762. % \end{macro}
  763. % \subsubsection{Footnotes}
  764. % \begin{macro}{\footnotesep}
  765. %    |\footnotesep| is the height of the strut placed at the beginning
  766. %    of every footnote. It equals the  height of a normal
  767. %    |\footnotesize| strut in this
  768. %    class, thus no extra space occurs between footnotes.
  769. %    \begin{macrocode}
  770. %<+10pt>\setlength\footnotesep{6.65\p@}
  771. %<+11pt>\setlength\footnotesep{7.7\p@}
  772. %<+12pt>\setlength\footnotesep{8.4\p@}
  773. %    \end{macrocode}
  774. % \end{macro}
  775. % \begin{macro}{\footins}
  776. %    |\skip\footins| is the space between the last line of the main
  777. %    text and the top of the first footnote.
  778. %    \begin{macrocode}
  779. %<+10pt>\setlength{\skip\footins}  {9\p@ \@plus 4\p@ \@minus 2\p@}
  780. %<+11pt>\setlength{\skip\footins}  {10\p@ \@plus 4\p@ \@minus 2\p@}
  781. %<+12pt>\setlength{\skip\footins}  {10.8\p@ \@plus 4\p@ \@minus 2\p@}
  782. %</10pt|11pt|12pt>
  783. %    \end{macrocode}
  784. % \end{macro}
  785. % \subsubsection{Float placement parameters}
  786. % All float parameters are given default values in the \LaTeXe{}
  787. % kernel. For this reason counters only need to be set with
  788. % |\setcounter| and other parameters are set using |\renewcommand|.
  789. % \paragraph{Limits for the placement of floating objects}
  790. % \begin{macro}{\c@topnumber}
  791. %    The \Lcount{topnumber} counter holds the maximum number of
  792. %    floats that can appear on the top of a text page.
  793. %    \begin{macrocode}
  794. %<*refman-s|refman>
  795. \setcounter{topnumber}{2}
  796. %    \end{macrocode}
  797. % \end{macro}
  798. % \begin{macro}{\topfraction}
  799. %    This indicates the maximum part of a text page that can be
  800. %    occupied by floats at the top.
  801. %    \begin{macrocode}
  802. \renewcommand\topfraction{.7}
  803. %    \end{macrocode}
  804. % \end{macro}
  805. % \begin{macro}{\c@bottomnumber}
  806. %    The \Lcount{bottomnumber} counter holds the maximum number of
  807. %    floats that can appear on the bottom of a text page.
  808. %    \begin{macrocode}
  809. \setcounter{bottomnumber}{1}
  810. %    \end{macrocode}
  811. % \end{macro}
  812. % \begin{macro}{\bottomfraction}
  813. %    This indicates the maximum part of a text page that can be
  814. %    occupied by floats at the bottom.
  815. %    \begin{macrocode}
  816. \renewcommand\bottomfraction{.3}
  817. %    \end{macrocode}
  818. % \end{macro}
  819. % \begin{macro}{\c@totalnumber}
  820. %    This indicates the maximum number of floats that can appear on
  821. %    any text page.
  822. %    \begin{macrocode}
  823. \setcounter{totalnumber}{3}
  824. %    \end{macrocode}
  825. % \end{macro}
  826. % \begin{macro}{\textfraction}
  827. %    This indicates the minimum part of a text page that has to be
  828. %    occupied by text.
  829. %    \begin{macrocode}
  830. \renewcommand\textfraction{.2}
  831. %    \end{macrocode}
  832. % \end{macro}
  833. % \begin{macro}{\floatpagefraction}
  834. %    This indicates the minimum part of a page that has to be
  835. %    occupied by floating objects before a `float page' is produced.
  836. %    \begin{macrocode}
  837. \renewcommand\floatpagefraction{.5}
  838. %    \end{macrocode}
  839. % \end{macro}
  840. % \begin{macro}{\c@dbltopnumber}
  841. %    The \Lcount{dbltopnumber} counter holds the maximum number of
  842. %    two column floats that can appear on the top of a two column text
  843. %    page.
  844. %    \begin{macrocode}
  845. \setcounter{dbltopnumber}{2}
  846. %    \end{macrocode}
  847. % \end{macro}
  848. % \begin{macro}{\dbltopfraction}
  849. %    This indicates the maximum part of a two column text page that
  850. %    can be occupied by two column floats at the top.
  851. %    \begin{macrocode}
  852. \renewcommand\dbltopfraction{.7}
  853. %    \end{macrocode}
  854. % \end{macro}
  855. % \begin{macro}{\dblfloatpagefraction}
  856. %    This indicates the minimum part of a page that has to be
  857. %    occupied by two column wide floating objects before a `float
  858. %    page' is produced.
  859. %    \begin{macrocode}
  860. \renewcommand\dblfloatpagefraction{.5}
  861. %</refman-s|refman>
  862. %    \end{macrocode}
  863. % \end{macro}
  864. % \paragraph{Floats on a text page}
  865. % \begin{macro}{\floatsep}
  866. % \begin{macro}{\textfloatsep}
  867. % \begin{macro}{\intextsep}
  868. %    When a floating object is placed on a page with text, these
  869. %    parameters control the separation between the float and the other
  870. %    objects on the page. These parameters are used for both
  871. %    one-column mode and single-column floats in two-column mode.
  872. %    |\floatsep| is the space between adjacent floats that are moved
  873. %    to the top or bottom of the text page.
  874. %    |\textfloatsep| is the space between the main text and floats
  875. %    at the top or bottom of the page.
  876. %    |\intextsep| is the space between in-text floats and the text.
  877. %    \begin{macrocode}
  878. %<*10pt>
  879. \setlength\floatsep      {12\p@ \@plus 2\p@ \@minus 2\p@}
  880. \setlength\textfloatsep  {20\p@ \@plus 2\p@ \@minus 4\p@}
  881. \setlength\intextsep     {12\p@ \@plus 2\p@ \@minus 2\p@}
  882. %</10pt>
  883. %<*11pt>
  884. \setlength\floatsep      {12\p@ \@plus 2\p@ \@minus 2\p@}
  885. \setlength\textfloatsep  {20\p@ \@plus 2\p@ \@minus 4\p@}
  886. \setlength\intextsep     {12\p@ \@plus 2\p@ \@minus 2\p@}
  887. %</11pt>
  888. %<*12pt>
  889. \setlength\floatsep      {12\p@ \@plus 2\p@ \@minus 4\p@}
  890. \setlength\textfloatsep  {20\p@ \@plus 2\p@ \@minus 4\p@}
  891. \setlength\intextsep     {14\p@ \@plus 4\p@ \@minus 4\p@}
  892. %</12pt>
  893. %    \end{macrocode}
  894. % \end{macro}
  895. % \end{macro}
  896. % \end{macro}
  897. % \begin{macro}{\dblfloatsep}
  898. % \begin{macro}{\dbltextfloatsep}
  899. %    When floating objects that span the whole |\textwidth| are placed
  900. %    on a text page when we are in twocolumn mode the separation
  901. %    between the float and the text is controlled by |\dblfloatsep|
  902. %    and |\dbltextfloatsep|.
  903. %    |\dblfloatsep| is the space between adjacent floats that are moved
  904. %    to the top or bottom of the text page.
  905. %    |\dbltextfloatsep| is the space between the main text and floats
  906. %    at the top or bottom of the page.
  907. %    \begin{macrocode}
  908. %<*10pt>
  909. \setlength\dblfloatsep    {12\p@ \@plus 2\p@ \@minus 2\p@}
  910. \setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
  911. %</10pt>
  912. %<*11pt>
  913. \setlength\dblfloatsep    {12\p@ \@plus 2\p@ \@minus 2\p@}
  914. \setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
  915. %</11pt>
  916. %<*12pt>
  917. \setlength\dblfloatsep    {14\p@ \@plus 2\p@ \@minus 4\p@}
  918. \setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
  919. %</12pt>
  920. %    \end{macrocode}
  921. % \end{macro}
  922. % \end{macro}
  923. % \paragraph{Floats on their own page or column}
  924. % \begin{macro}{\@fptop}
  925. % \begin{macro}{\@fpsep}
  926. % \begin{macro}{\@fpbot}
  927. %    When floating objects are placed on seperate pages the layout of
  928. %    such pages is controlled by these parameters. At the top of the
  929. %    page |\@fptop| amount of stretchable whitespace is inserted, at
  930. %    the bottom of the page we get an |\@fpbot| amount of stretchable
  931. %    whitespace. Between adjacent floats the |\@fpsep| is inserted.
  932. %    These parameters are used for the placement of floating objects
  933. %    in one column mode, or in single column floats in two column
  934. %    mode.
  935. %    Note that at least one of the two parameters |\@fptop| and
  936. %    |\@fpbot| should contain a |plus ...fil| to allow filling the
  937. %    remaining empty space.
  938. %    \begin{macrocode}
  939. %<*10pt>
  940. \setlength\@fptop{0\p@ \@plus 1fil}
  941. \setlength\@fpsep{8\p@ \@plus 2fil}
  942. \setlength\@fpbot{0\p@ \@plus 1fil}
  943. %</10pt>
  944. %<*11pt>
  945. \setlength\@fptop{0\p@ \@plus 1fil}
  946. \setlength\@fpsep{8\p@ \@plus 2fil}
  947. \setlength\@fpbot{0\p@ \@plus 1fil}
  948. %</11pt>
  949. %<*12pt>
  950. \setlength\@fptop{0\p@ \@plus 1fil}
  951. \setlength\@fpsep{10\p@ \@plus 2fil}
  952. \setlength\@fpbot{0\p@ \@plus 1fil}
  953. %</12pt>
  954. %    \end{macrocode}
  955. % \end{macro}
  956. % \end{macro}
  957. % \end{macro}
  958. % \begin{macro}{\@dblfptop}
  959. % \begin{macro}{\@dblfpsep}
  960. % \begin{macro}{\@dblfpbot}
  961. %    Double column floats in two column mode are handled with similar
  962. %    parameters.
  963. %    \begin{macrocode}
  964. %<*10pt>
  965. \setlength\@dblfptop{0\p@ \@plus 1fil}
  966. \setlength\@dblfpsep{8\p@ \@plus 2fil}
  967. \setlength\@dblfpbot{0\p@ \@plus 1fil}
  968. %</10pt>
  969. %<*11pt>
  970. \setlength\@dblfptop{0\p@ \@plus 1fil}
  971. \setlength\@dblfpsep{8\p@ \@plus 2fil}
  972. \setlength\@dblfpbot{0\p@ \@plus 1fil}
  973. %</11pt>
  974. %<*12pt>
  975. \setlength\@dblfptop{0\p@ \@plus 1fil}
  976. \setlength\@dblfpsep{10\p@ \@plus 2fil}
  977. \setlength\@dblfpbot{0\p@ \@plus 1fil}
  978. %</12pt>
  979. %<*refman-s|refman>
  980. %    \end{macrocode}
  981. % \end{macro}
  982. % \end{macro}
  983. % \end{macro}
  984. % \subsection{Page Styles}
  985. %    The page style \pstyle{foo} is defined by defining the command
  986. %    |\ps@foo|.   This command should make only local definitions.
  987. %    There should be no stray spaces in the definition, since they
  988. %    could lead to mysterious extra spaces in the output (well, that's
  989. %    something that should be always avoided).
  990. % \begin{macro}{\@evenhead}
  991. % \begin{macro}{\@oddhead}
  992. % \begin{macro}{\@evenfoot}
  993. % \begin{macro}{\@oddfoot}
  994. %    The |\ps@...| command defines the macros |\@oddhead|,
  995. %    |\@oddfoot|, |\@evenhead|, and |\@evenfoot| to define the running
  996. %    heads and feet---e.g., |\@oddhead| is the macro to produce the
  997. %    contents of the heading box for odd-numbered pages.  It is called
  998. %    inside an |\hbox| of width |\textwidth|.
  999. % \end{macro}
  1000. % \end{macro}
  1001. % \end{macro}
  1002. % \end{macro}
  1003. % \subsubsection{Marking conventions}
  1004. %    To make headings determined by the sectioning commands, the page
  1005. %    style defines the commands |\chaptermark|, |\sectionmark|,
  1006. %    \ldots, where |\chaptermark{|\meta{TEXT}|}| is called by
  1007. %    |\chapter| to set a mark, and so on.
  1008. %    The |\...mark| commands and the |\...head| macros are defined
  1009. %    with the help of the following macros.  (All the |\...mark|
  1010. %    commands should be initialized to no-ops.)
  1011. %    \LaTeX{} extends \TeX's |\mark| facility by producing two kinds
  1012. %    of marks, a `left' and a `right' mark, using the following
  1013. %    commands:
  1014. %    \begin{flushleft}
  1015. %     |\markboth{|\meta{LEFT}|}{|\meta{RIGHT}|}|: Adds both marks.
  1016. %     |\markright{|\meta{RIGHT}|}|: Adds a `right' mark.
  1017. %     |\leftmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead|
  1018. %                  or |\@evenfoot| macros, it gets the current `left'
  1019. %                  mark.  |\leftmark| works like \TeX's |\botmark|
  1020. %                  command.
  1021. %     |\rightmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead|
  1022. %                   or  |\@evenfoot| macros, it gets the current
  1023. %                   `right' mark. |\rightmark| works like \TeX's
  1024. %                   |\firstmark| command.
  1025. %    \end{flushleft}
  1026. %    The marking commands work reasonably well for right marks
  1027. %    `numbered within' left marks--e.g., the left mark is changed by a
  1028. %    |\chapter| command and the right mark is changed by a |\section|
  1029. %    command.  However, it does produce somewhat anomalous results if
  1030. %    two |\markboth|'s occur on the same page.
  1031. %    Commands like |\tableofcontents| that should set the marks in some
  1032. %    page styles use a |\@mkboth| command, which is |\let| by the
  1033. %    pagestyle command (|\ps@...|)  to |\markboth| for setting the
  1034. %    heading or to |\@gobbletwo| to do nothing.
  1035. %    \begin{macrocode}
  1036. % %%%\mark{{}{}}   % Initializes TeX's marks   <--- can vanish
  1037. %    \end{macrocode}
  1038. % \subsubsection{Defining the page styles}
  1039. % \label{sec:pagestyle}
  1040. %    The pagestyles \pstyle{empty} and \pstyle{plain} are defined in
  1041. %    \file{latex.dtx}.
  1042. % \begin{macro}{\ps@headings}
  1043. %    The definition of the page style \pstyle{headings} has to be
  1044. %    different for two sided printing than it is for one sided
  1045. %    printing.
  1046. %    \begin{macrocode}
  1047. \if@twoside
  1048.     \def\ps@headings{%
  1049. %    \end{macrocode}
  1050. %    The running feet are empty in this page style, the running head
  1051. %    contains the page number and one of the marks.
  1052. %    \begin{macrocode}
  1053.       \let\@oddfoot\@empty\let\@evenfoot\@empty
  1054.       \def\@evenhead{\hss\vbox to \z@{\vss\hsize=\fullwidth
  1055.       \hbox to \fullwidth{\thepage\hfil\slshape\leftmark}
  1056.       \vskip 3\p@ \hrule}}%
  1057.       \def\@oddhead{\hss\vbox to \z@{\vss\hsize=\fullwidth
  1058.       \hbox to \fullwidth{{\slshape\rightmark}\hfil\thepage}
  1059.       \vskip 3\p@ \hrule}}%
  1060. %    \end{macrocode}
  1061. %    When using this page style, the contents of the running head is
  1062. %    determined by the chapter and section titles. So we |\let|
  1063. %    |\@mkboth| to |\markboth|.
  1064. %    \begin{macrocode}
  1065.       \let\@mkboth\markboth
  1066. %    \end{macrocode}
  1067. %   We shift the page one |\baselineskip| to the bottom to
  1068. %   compensate for the headings.
  1069. %    \begin{macrocode}
  1070.       \topmargin\emptyfoottopmargin
  1071. %    \end{macrocode}
  1072. %    For the refman-s document class we define |\sectionmark| to clear
  1073. %    the right mark and put the number of the section (when it is
  1074. %    numbered) and its title in the left mark. The rightmark is set by
  1075. %    |\subsectionmark| to contain the subsection titles.
  1076. %    Note the use of |##1| for the parameter of the |\sectionmark|
  1077. %    command, which will be defined when |\ps@headings| is executed.
  1078. %    \begin{macrocode}
  1079. %<*refman-s>
  1080.       \def\sectionmark##1{%
  1081.         \markboth {\ifnum \c@secnumdepth >\z@
  1082.             \thesection\hskip 1em\relax\fi
  1083.             ##1}{}}%
  1084.       \def\subsectionmark##1{%
  1085.         \markright {\ifnum \c@secnumdepth >\@ne
  1086.             \thesubsection\hskip 1em\relax \fi
  1087.             ##1}}}
  1088. %</refman-s>
  1089. %    \end{macrocode}
  1090. %    In the refman document class we use the |\chaptermark|
  1091. %    and |\sectionmark| macros to fill the running heads.
  1092. %    Note the use of |##1| for the parameter of the |\chaptermark|
  1093. %    command, which will be defined when |\ps@headings| is executed.
  1094. %    \begin{macrocode}
  1095. %<*refman>
  1096.       \def\chaptermark##1{%
  1097.         \markboth {\ifnum \c@secnumdepth >\m@ne
  1098.             \@chapapp\ \thechapter \ \fi
  1099.             ##1}{}}%
  1100.       \def\sectionmark##1{%
  1101.         \markright \ifnum \c@secnumdepth >\z@
  1102.             \thesection \ \fi
  1103.             ##1}}}
  1104. %</refman>
  1105. %    \end{macrocode}
  1106. %    The definition of |\ps@headings| for one sided printing can be
  1107. %    much simpler, because we treat even and odd pages the same.
  1108. %    Therefore we don't need to define |\@even...|.
  1109. %    \begin{macrocode}
  1110. %<*refman-s|refman>
  1111. \else
  1112.     \def\ps@headings{%
  1113.       \let\@oddfoot\@empty
  1114.       \def\@oddhead{\hss\vbox to \z@{\vss\hsize=\fullwidth
  1115.       \hbox to \fullwidth{{\slshape\rightmark}\hfil\thepage}
  1116.       \vskip 3\p@ \hrule}}%
  1117.       \let\@mkboth\markboth
  1118. %    \end{macrocode}
  1119. %   We shift the page one |\baselineskip| to the bottom to
  1120. %   compensate for the headings.
  1121. %    \begin{macrocode}
  1122.       \topmargin\emptyfoottopmargin
  1123. %    \end{macrocode}
  1124. %    We use |\markright| now instead of |\markboth| as we did for two
  1125. %    sided printing.
  1126. %    \begin{macrocode}
  1127. %<*refman-s>
  1128.       \def\sectionmark##1{%
  1129.         \markright {\ifnum \c@secnumdepth >\m@ne
  1130.             \thesection\hskip 1em\relax \fi
  1131.             ##1}}}
  1132. %</refman-s>
  1133. %    \end{macrocode}
  1134. %    \begin{macrocode}
  1135. %<*refman>
  1136.       \def\chaptermark##1{%
  1137.         \markright \ifnum \c@secnumdepth >\m@ne
  1138.             \@chapapp\ \thechapter \ \fi
  1139.             ##1}}}
  1140. %</refman>
  1141. %</refman-s|refman>
  1142. %    \end{macrocode}
  1143. % \end{macro}
  1144. % \begin{macro}{\ps@footings}
  1145. %    The definition of the page style \pstyle{footings} has to be
  1146. %    different for two sided printing than it is for one sided
  1147. %    printing.
  1148. %    \begin{macrocode}
  1149. \if@twoside
  1150.     \def\ps@footings{%
  1151. %    \end{macrocode}
  1152. %    The running head is empty in this page style, the running foot
  1153. %    contains the page number and one of the marks.
  1154. %    \begin{macrocode}
  1155.       \let\@oddhead\@empty\let\@evenhead\@empty
  1156.       \def\@evenfoot{\hss\vbox to \z@{\vss\hsize=\fullwidth
  1157.       \hrule \vskip 3\p@
  1158.       \hbox to \fullwidth{\thepage\hfil\slshape\leftmark}}}%
  1159.       \def\@oddfoot{\hss\vbox to \z@{\vss\hsize=\fullwidth
  1160.       \hrule \vskip 3\p@
  1161.       \hbox to \fullwidth{{\slshape\rightmark}\hfil\thepage}}}%
  1162. %    \end{macrocode}
  1163. %    When using this page style, the contents of the running foot is
  1164. %    determined by the chapter and section titles. So we |\let|
  1165. %    |\@mkboth| to |\markboth|.
  1166. %    \begin{macrocode}
  1167.       \let\@mkboth\markboth
  1168. %    \end{macrocode}
  1169. %   We shift the page one |\baselineskip| to the top to
  1170. %   compensate for the footings.
  1171. %    \begin{macrocode}
  1172.       \topmargin\emptyheadtopmargin
  1173. %    \end{macrocode}
  1174. %    For the refman-s document class we define |\sectionmark| to clear
  1175. %    the right mark and put the number of the section (when it is
  1176. %    numbered) and its title in the left mark. The rightmark is set by
  1177. %    |\subsectionmark| to contain the subsection titles.
  1178. %    Note the use of |##1| for the parameter of the |\sectionmark|
  1179. %    command, which will be defined when |\ps@headings| is executed.
  1180. %    \begin{macrocode}
  1181. %<*refman-s>
  1182.       \def\sectionmark##1{%
  1183.         \markboth {\ifnum \c@secnumdepth >\z@
  1184.             \thesection\hskip 1em\relax\fi
  1185.             ##1}{}}%
  1186.       \def\subsectionmark##1{%
  1187.         \markright {\ifnum \c@secnumdepth >\@ne
  1188.             \thesubsection\hskip 1em\relax \fi
  1189.             ##1}}}
  1190. %</refman-s>
  1191. %    \end{macrocode}
  1192. %    In the refman document class we use the |\chaptermark|
  1193. %    and |\sectionmark| macros to fill the running heads.
  1194. %    Note the use of |##1| for the parameter of the |\chaptermark|
  1195. %    command, which will be defined when |\ps@footings| is executed.
  1196. %    \begin{macrocode}
  1197. %<*refman>
  1198.       \def\chaptermark##1{%
  1199.         \markboth {\ifnum \c@secnumdepth >\m@ne
  1200.             \@chapapp\ \thechapter \ \fi
  1201.             ##1}{}}%
  1202.       \def\sectionmark##1{%
  1203.         \markright \ifnum \c@secnumdepth >\z@
  1204.             \thesection \ \fi
  1205.             ##1}}}
  1206. %</refman>
  1207. %    \end{macrocode}
  1208. %    The definition of |\ps@footings| for one sided printing can be
  1209. %    much simpler, because we treat even and odd pages the same.
  1210. %    Therefore we don't need to define |\@even...|.
  1211. %    \begin{macrocode}
  1212. %<*refman-s|refman>
  1213. \else
  1214.     \def\ps@headings{%
  1215.       \let\@oddhead\@empty
  1216.       \def\@oddfoot{\hss\vbox to \z@{\vss\hsize=\fullwidth
  1217.       \hrule \vskip 3\p@
  1218.       \hbox to \fullwidth{{\slshape\rightmark}\hfil\thepage}}}%
  1219.       \let\@mkboth\markboth
  1220. %    \end{macrocode}
  1221. %   We shift the page one |\baselineskip| to the top to
  1222. %   compensate for the footings.
  1223. %    \begin{macrocode}
  1224.       \topmargin\emptyheadtopmargin
  1225. %    \end{macrocode}
  1226. %    We use |\markright| now instead of |\markboth| as we did for two
  1227. %    sided printing.
  1228. %    \begin{macrocode}
  1229. %<*refman-s>
  1230.       \def\sectionmark##1{%
  1231.         \markright {\ifnum \c@secnumdepth >\m@ne
  1232.             \thesection\hskip 1em\relax \fi
  1233.             ##1}}}
  1234. %</refman-s>
  1235. %    \end{macrocode}
  1236. %    \begin{macrocode}
  1237. %<*refman>
  1238.       \def\chaptermark##1{%
  1239.         \markright \ifnum \c@secnumdepth >\m@ne
  1240.             \@chapapp\ \thechapter \ \fi
  1241.             ##1}}}
  1242. %</refman>
  1243. %</refman-s|refman>
  1244. %    \end{macrocode}
  1245. % \end{macro}
  1246. % \begin{macro}{\ps@myheadings}
  1247. %    The definition of the page style \pstyle{myheadings} is fairly
  1248. %    simple because the user determines the contents of the running
  1249. %    head himself by using the |\markboth| and |\markright| commands.
  1250. %    \begin{macrocode}
  1251. \def\ps@myheadings{%
  1252.     \let\@oddfoot\@empty\let\@evenfoot\@empty
  1253.     \def\@evenhead{\hss\vbox to \z@{\vss\hsize=\fullwidth
  1254.     \hbox to \fullwidth{\thepage\hfil\slshape\leftmark}
  1255.     \vskip 3\p@ \hrule}}%
  1256.     \def\@oddhead{\hss\vbox to \z@{\vss\hsize=\fullwidth
  1257.     \hbox to \fullwidth{{\slshape\rightmark}\hfil\thepage}
  1258.     \vskip 3\p@ \hrule}}%
  1259. %    \end{macrocode}
  1260. %    We have to make sure that the marking commands that are used by
  1261. %    the chapter and section headings are disabled. We do this
  1262. %    |\let|ting them to a macro that gobbles its argument(s).
  1263. %    \begin{macrocode}
  1264.     \let\@mkboth\@gobbletwo
  1265. %<+refman>    \let\chaptermark\@gobble
  1266.     \let\sectionmark\@gobble
  1267. %<+refman-s>    \let\subsectionmark\@gobble
  1268.     }
  1269. %    \end{macrocode}
  1270. %   We shift the page one |\baselineskip| to the bottom to
  1271. %   compensate for the headings.
  1272. %    \begin{macrocode}
  1273.       \topmargin\emptyfoottopmargin
  1274. %    \end{macrocode}
  1275. % \end{macro}
  1276. % \begin{macro}{\ps@myfootings}
  1277. %    The definition of the page style \pstyle{myfootings} is fairly
  1278. %    simple because the user determines the contents of the running
  1279. %    head himself by using the |\markboth| and |\markright| commands.
  1280. %    \begin{macrocode}
  1281. \def\ps@myfootings{%
  1282.       \let\@oddhead\@empty\let\@evenhead\@empty
  1283.       \def\@evenfoot{\hss\vbox to \z@{\vss\hsize=\fullwidth
  1284.       \hrule \vskip 3\p@
  1285.       \hbox to \fullwidth{\thepage\hfil\slshape\leftmark}}}%
  1286.       \def\@oddfoot{\hss\vbox to \z@{\vss\hsize=\fullwidth
  1287.       \hrule \vskip 3\p@
  1288.       \hbox to \fullwidth{{\slshape\rightmark}\hfil\thepage}}}%
  1289. %    \end{macrocode}
  1290. %    We have to make sure that the marking commands that are used by
  1291. %    the chapter and section footings are disabled. We do this
  1292. %    |\let|ting them to a macro that gobbles its argument(s).
  1293. %    \begin{macrocode}
  1294.     \let\@mkboth\@gobbletwo
  1295. %<+refman>    \let\chaptermark\@gobble
  1296.     \let\sectionmark\@gobble
  1297. %<+refman-s>    \let\subsectionmark\@gobble
  1298.     }
  1299. %    \end{macrocode}
  1300. %   We shift the page one |\baselineskip| to the top to
  1301. %   compensate for the footings.
  1302. %    \begin{macrocode}
  1303.       \topmargin\emptyheadtopmargin
  1304. %    \end{macrocode}
  1305. % \end{macro}
  1306. % \section{Document Markup}
  1307. % \subsection{The title}
  1308. % \begin{macro}{\title}
  1309. % \begin{macro}{\author}
  1310. % \begin{macro}{\date}
  1311. %    These three macros are provided by \file{latex.dtx} to provide
  1312. %    information about the title, author(s) and date of the document.
  1313. %    The information is stored away in internal control sequences.
  1314. %    It is the task of the |\maketitle| command to use the
  1315. %    information provided. The definitions of these macros are shown
  1316. %    here for information.
  1317. %    \begin{macrocode}
  1318. % \newcommand\title[1]{\gdef\@title{#1}}
  1319. % \newcommand\author[1]{\gdef\@author{#1}}
  1320. % \newcommand\date[1]{\gdef\@date{#1}}
  1321. %    \end{macrocode}
  1322. %    The |\date| macro gets today's date by default.
  1323. %    \begin{macrocode}
  1324. % \gdef\@date{\today}
  1325. %    \end{macrocode}
  1326. % \end{macro}
  1327. % \end{macro}
  1328. % \end{macro}
  1329. % \begin{macro}{\maketitle}
  1330. %    The definition of |\maketitle| depends on whether a seperate
  1331. %    title page is made. This is the default for the refman
  1332. %    document class, but for the refman-s class it is optional.
  1333. %    When we are making a title page, we locally redefine
  1334. %    |\footnotesize| and |footnoterule| to change the appearance of
  1335. %    the footnotes that are produced by the |\thanks| command.
  1336. %    \begin{macrocode}
  1337. \if@titlepage
  1338.   \newcommand\maketitle{\begin{titlepage}%
  1339.   \let\footnotesize\small
  1340.   \let\footnoterule\relax
  1341. %    \end{macrocode}
  1342. %    We center the entire title vertically; the centering is set off a
  1343. %    little by adding a |\vskip|. In compatibility mode the pagenumber
  1344. %    is set to 0 to keep the behaviour of \LaTeX\ 2.09 style files
  1345. %    \begin{macrocode}
  1346.   \null\vfil
  1347.   \vskip 60\p@
  1348. %    \end{macrocode}
  1349. %    Then we set the title, in a |\LARGE| font; leave a little space
  1350. %    and set the author(s) in a |\large| font. We do this inside a
  1351. %    tabular environment to get them in a single column.
  1352. %    Before the date we leave a little whitespace again.
  1353. %    \begin{macrocode}
  1354.   \begin{center}%
  1355.     {\LARGE \@title \par}%
  1356.     \vskip 3em%
  1357.     {\large
  1358.      \lineskip .75em%
  1359.       \begin{tabular}[t]{c}%
  1360.         \@author
  1361.       \end{tabular}\par}%
  1362.       \vskip 1.5em%
  1363.     {\large \@date \par}%       % Set date in \large size.
  1364.   \end{center}\par
  1365. %    \end{macrocode}
  1366. %    Then we call |\@thanks| to print the information that goes into
  1367. %    the footnote and finish the page.
  1368. %    \begin{macrocode}
  1369.   \@thanks
  1370.   \vfil\null
  1371.   \end{titlepage}%
  1372. %    \end{macrocode}
  1373. %    We reset the \Lcount{footnote} counter, disable |\thanks| and
  1374. %    |\maketitle| and save some storage space by emptying the internal
  1375. %    information macros.
  1376. %    \begin{macrocode}
  1377.   \setcounter{footnote}{0}%
  1378.   \let\thanks\relax\let\maketitle\relax
  1379.   \gdef\@thanks{}\gdef\@author{}\gdef\@title{}}
  1380. %    \end{macrocode}
  1381. %    When the title is not on a page of its own, the layout of the
  1382. %    title is a little different. We use symbols to mark the footnotes
  1383. %    and we have to deal with two column documents.
  1384. %    Therefore we first start a new group to keep changes local. Then
  1385. %    we redefine |\thefootnote| to use |\fnsymbol|; and change
  1386. %    |\@makefnmark| so that footnotemarks have zero width (to make the
  1387. %    centering of the author names look better).
  1388. %    \begin{macrocode}
  1389. \else
  1390.   \newcommand\maketitle{\par
  1391.     \begingroup
  1392.       \renewcommand\thefootnote{\fnsymbol{footnote}}%
  1393.       \def\@makefnmark{\hbox to\z@{$\m@th^{\@thefnmark}$\hss}}%
  1394. %    \end{macrocode}
  1395. %    If this is a twocolumn document we start a new page in twocolumn
  1396. %    mode, with the title set to the full width of the text. The
  1397. %    actual printing of the title information is left to
  1398. %    |\@maketitle|.
  1399. %    \begin{macrocode}
  1400.       \if@twocolumn
  1401.         \twocolumn[\@maketitle]%
  1402.       \else
  1403. %    \end{macrocode}
  1404. %    When this is not a twocolumn document we just start a new page,
  1405. %    prevent floating objects from appearing on the top of this page
  1406. %    and print the title information.
  1407. %    \begin{macrocode}
  1408.         \newpage
  1409.         \global\@topnum\z@   % Prevents figures from going at top of page.
  1410.         \@maketitle
  1411.       \fi
  1412. %    \end{macrocode}
  1413. %    This page gets a \pstyle{plain} layout. We call |\@thanks| to
  1414. %    produce the footnotes.
  1415. %    \begin{macrocode}
  1416.       \thispagestyle{plain}\@thanks
  1417. %    \end{macrocode}
  1418. %    Now we can close the group, reset the \Lcount{footnote} counter,
  1419. %    disable |\thanks|, |\maketitle| and |\@maketitle| and save some
  1420. %    storage space by emptying the internal information macros.
  1421. %    \begin{macrocode}
  1422.     \endgroup
  1423.     \setcounter{footnote}{0}%
  1424.     \let\thanks\relax
  1425.     \let\maketitle\relax\let\@maketitle\relax
  1426.     \gdef\@thanks{}\gdef\@author{}\gdef\@title{}}
  1427. %    \end{macrocode}
  1428. % \end{macro}
  1429. % \begin{macro}{\@maketitle}
  1430. %    This macro takes care of formatting the title information when we
  1431. %    have no seperate title page.
  1432. %    We always start a new page and put the title flushleft
  1433. %    using a |\Large| bold font with
  1434. %    thick rules above and below. Then we put the autor information
  1435. %    flushright in slanted type. This title will allways show the
  1436. %    date unless it is set to nothing, using the |\date{}| command.
  1437. %    \begin{macrocode}
  1438.   \def\@maketitle{%
  1439.     \newpage
  1440.     \null
  1441.     %\vskip 2em%
  1442.     \longthickrule\vskip1.5em%
  1443.     {\secshape \parskip\z@ \parindent\z@
  1444.     \Large\bfseries \@title \par}%
  1445.     \vskip1.5em\longthickrule\vskip1.5em%
  1446.     {\normalsize
  1447.       \lineskip .5em%
  1448.       \begin{flushright}%
  1449.         {\slshape\@author\par}
  1450.         \vskip 1em%
  1451.         {\@date}%
  1452.       \end{flushright}\par}%
  1453.     \vskip 1.5em}
  1454. %    \end{macrocode}
  1455. % \end{macro}
  1456. % \subsection{Chapters and Sections}
  1457. % \subsubsection{Building blocks}
  1458. %    The definitions in this part of the class file make use of two
  1459. %    macros, |\@startsection| and |\secdef|, which are defined by
  1460. %    \file{latex.dtx}. They are not described here, see the
  1461. %    \file{classes.dtx} for more information.
  1462. % \subsubsection{Mark commands}
  1463. % \begin{macro}{\chaptermark}
  1464. % \begin{macro}{\sectionmark}
  1465. % \begin{macro}{\subsectionmark}
  1466. % \begin{macro}{\subsubsectionmark}
  1467. % \begin{macro}{\paragraphmark}
  1468. % \begin{macro}{\subparagraphmark}
  1469. %    Default initializations of |\...mark| commands.  These commands
  1470. %    are used in the definition of the page styles (see
  1471. %    section~\ref{sec:pagestyle}) Most of them are already defined by
  1472. %    \file{latex.dtx}, so they are only shown here.
  1473. %    \begin{macrocode}
  1474. %<+refman>\newcommand\chaptermark[1]{}
  1475. % \newcommand\sectionmark[1]{}
  1476. % \newcommand\subsectionmark[1]{}
  1477. % \newcommand\subsubsectionmark[1]{}
  1478. % \newcommand\paragraphmark[1]{}
  1479. % \newcommand\subparagraphmark[1]{}
  1480. %    \end{macrocode}
  1481. % \end{macro}
  1482. % \end{macro}
  1483. % \end{macro}
  1484. % \end{macro}
  1485. % \end{macro}
  1486. % \end{macro}
  1487. % \subsubsection{Define Counters}
  1488. % \begin{macro}{\c@secnumdepth}
  1489. %    The value of the counter \Lcount{secnumdepth} gives the depth of
  1490. %    the highest-level sectioning command that is to produce section
  1491. %    numbers.
  1492. %    \begin{macrocode}
  1493. %<+refman-s>\setcounter{secnumdepth}{3}
  1494. %<+refman>\setcounter{secnumdepth}{2}
  1495. %    \end{macrocode}
  1496. % \end{macro}
  1497. % \begin{macro}{\c@part}
  1498. % \begin{macro}{\c@chapter}
  1499. % \begin{macro}{\c@section}
  1500. % \begin{macro}{\c@subsection}
  1501. % \begin{macro}{\c@subsubsection}
  1502. % \begin{macro}{\c@paragraph}
  1503. % \begin{macro}{\c@subparagraph}
  1504. %    These counters are used for the section numbers. The macro
  1505. %    |\newcounter{|\meta{newctr}|}[|\meta{oldctr}|]| defines
  1506. %    \meta{newctr} to be a counter, which is reset to zero when
  1507. %    counter \meta{oldctr} is stepped. Counter \meta{oldctr} must
  1508. %    already be defined.
  1509. %    \begin{macrocode}
  1510. \newcounter {part}
  1511. %<+refman-s>\newcounter {section}
  1512. %<*refman>
  1513. \newcounter {chapter}
  1514. \newcounter {section}[chapter]
  1515. %</refman>
  1516. \newcounter {subsection}[section]
  1517. \newcounter {subsubsection}[subsection]
  1518. \newcounter {paragraph}[subsubsection]
  1519. \newcounter {subparagraph}[paragraph]
  1520. %    \end{macrocode}
  1521. % \end{macro}
  1522. % \end{macro}
  1523. % \end{macro}
  1524. % \end{macro}
  1525. % \end{macro}
  1526. % \end{macro}
  1527. % \end{macro}
  1528. % \begin{macro}{\thepart}
  1529. % \begin{macro}{\thechapter}
  1530. % \begin{macro}{\thesection}
  1531. % \begin{macro}{\thesubsection}
  1532. % \begin{macro}{\thesubsubsection}
  1533. % \begin{macro}{\theparagraph}
  1534. % \begin{macro}{\thesubparagraph}
  1535. %    For any counter \Lcount{CTR}, |\theCTR| is a macro that defines
  1536. %    the printed version of counter \Lcount{CTR}.  It is defined in
  1537. %    terms of the following macros:
  1538. %    |\arabic{|\Lcount{COUNTER}|}| prints the value of
  1539. %    \Lcount{COUNTER} as an arabic numeral.
  1540. %    |\roman{|\Lcount{COUNTER}|}| prints the value of
  1541. %    \Lcount{COUNTER} as a lowercase roman numberal.
  1542. %    |\Roman{|\Lcount{COUNTER}|}| prints the value of
  1543. %    \Lcount{COUNTER} as an uppercase roman numberal.
  1544. %    |\alph{|\Lcount{COUNTER}|}| prints the value of \Lcount{COUNTER}
  1545. %    as a lowercase letter: $1 =$~a, $2 =$~ b, etc.
  1546. %    |\Alph{|\Lcount{COUNTER}|}| prints the value of \Lcount{COUNTER}
  1547. %    as an uppercase letter: $1 =$~A, $2 =$~B, etc.
  1548. %    \begin{macrocode}
  1549. \renewcommand\thepart          {\Roman{part}}
  1550. %<+refman-s>\renewcommand\thesection       {\arabic{section}}
  1551. %<*refman>
  1552. \renewcommand\thechapter       {\arabic{chapter}}
  1553. \renewcommand\thesection       {\thechapter.\arabic{section}}
  1554. %</refman>
  1555. \renewcommand\thesubsection    {\thesection.\arabic{subsection}}
  1556. \renewcommand\thesubsubsection {\thesubsection .\arabic{subsubsection}}
  1557. \renewcommand\theparagraph     {\thesubsubsection.\arabic{paragraph}}
  1558. \renewcommand\thesubparagraph  {\theparagraph.\arabic{subparagraph}}
  1559. %    \end{macrocode}
  1560. % \end{macro}
  1561. % \end{macro}
  1562. % \end{macro}
  1563. % \end{macro}
  1564. % \end{macro}
  1565. % \end{macro}
  1566. % \end{macro}
  1567. % \begin{macro}{\@chapapp}
  1568. %    |\@chapapp| is initially defined to be empty. The
  1569. %    |\appendix| command redefines it to be `|\appendixname|'.
  1570. %    \begin{macrocode}
  1571. %<+refman>\newcommand\@chapapp{}
  1572. %    \end{macrocode}
  1573. % \end{macro}
  1574. % \subsubsection{Parts}
  1575. % \begin{macro}{\part}
  1576. %    The command to start a new part of our document.
  1577. %    In the refman-s class the definition of |\part| is rather simple;
  1578. %    we start a new paragraph, add a little white space, suppress the
  1579. %    indentation of the first paragraph and make use of |\@secdef|.
  1580. %    \begin{macrocode}
  1581. %<*refman-s>
  1582. \newcommand\part{\par
  1583.    \addvspace{4ex}%
  1584.    \@afterindentfalse
  1585.    \secdef\@part\@spart}
  1586. %</refman-s>
  1587. %    \end{macrocode}
  1588. %    For the refman class things are a bit different.
  1589. %    We start a new (righthand) page and use the \pstyle{plain}.
  1590. %    \begin{macrocode}
  1591. %<*refman>
  1592. \newcommand\part{\cleardoublepage
  1593.                  \thispagestyle{plain}%
  1594. %    \end{macrocode}
  1595. %    When we are making a two column document, this will be a one
  1596. %    column page. We use |@tempswa| to remember to switch back to two
  1597. %    columns.
  1598. %    \begin{macrocode}
  1599.                  \if@twocolumn
  1600.                      \onecolumn
  1601.                      \@tempswatrue
  1602.                    \else
  1603.                      \@tempswafalse
  1604.                  \fi
  1605. %    \end{macrocode}
  1606. %    We need an empty box to prevent the fil glue from disappearing.
  1607. %    \begin{macrocode}
  1608.                  \hbox{}\vfil
  1609. %    \end{macrocode}
  1610. %    Here we use |\secdef| to indicate which commands to use to make
  1611. %    the actual heading.
  1612. %    \begin{macrocode}
  1613.                  \secdef\@part\@spart}
  1614. %</refman>
  1615. %    \end{macrocode}
  1616. % \end{macro}
  1617. % \begin{macro}{\@part}
  1618. %    This macro does the actual formatting of the title of the part.
  1619. %    Again the macro is differently defined for the refman-s document
  1620. %    class than for the document class refman.
  1621. %    When \Lcount{secnumdepth} is larger than $-1$ for the
  1622. %    document class refman-s or $-2$ for the document class refman,
  1623. %    we have a numbered part, otherwise it is unnumbered.
  1624. %    \begin{macrocode}
  1625. %<*refman-s|refman>
  1626. \def\@part[#1]#2{%
  1627. %<+refman-s>    \ifnum \c@secnumdepth >\m@ne
  1628. %<+refman>    \ifnum \c@secnumdepth >-2\relax
  1629.       \refstepcounter{part}%
  1630.       \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
  1631.     \else
  1632.       \addcontentsline{toc}{part}{#1}%
  1633.     \fi
  1634. %    \end{macrocode}
  1635. %    We  print the title flush left, we also
  1636. %    prevent breaking between lines and reset the font.
  1637. %    \begin{macrocode}
  1638.      \longrule\medskip
  1639.     {\parindent \z@ \raggedright
  1640.      \interlinepenalty \@M
  1641.      \reset@font
  1642. %    \end{macrocode}
  1643. %    When this is a numbered part we have to print the number and the
  1644. %    title. The |\nobreak| should prevent a page break here.
  1645. %    \begin{macrocode}
  1646.      \Large
  1647. %<+refman-s>     \ifnum \c@secnumdepth >\m@ne
  1648. %<+refman>     \ifnum \c@secnumdepth >-2 \relax
  1649.      \thepart.\quad
  1650.      \fi
  1651.      #2\par \medskip
  1652.      \longrule\bigskip%
  1653. %    \end{macrocode}
  1654. %    Then we empty the mark registers, leave some white space and call
  1655. %    |\@afterheading| to  takes care of suppressing the indentation.
  1656. %    \begin{macrocode}
  1657.      \markboth{}{}\par}%
  1658.     \nobreak
  1659.     \vskip 3ex
  1660.     \@afterheading}
  1661. %</refman-s|refman>
  1662. %    \end{macrocode}
  1663. % \end{macro}
  1664. % \begin{macro}{\@spart}
  1665. %    This macro does the actual formatting of the title of the part
  1666. %    when the star form of the user command was used. In this case we
  1667. %    {\em never} print a number. Otherwise the formatting is the same.
  1668. %    \begin{macrocode}
  1669. %<*refman-s|refman>
  1670. \def\@spart#1{%
  1671.     \longrule\medskip
  1672.     {\parindent \z@ \raggedright
  1673.      \interlinepenalty \@M
  1674.      \reset@font
  1675.      \Large #1\par}%
  1676.     \medskip\longrule
  1677.      \nobreak
  1678.      \vskip 3ex
  1679.      \@afterheading}
  1680. %</refman-s|refman>
  1681. %    \end{macrocode}
  1682. % \end{macro}
  1683. % \subsubsection{Chapters}
  1684. % \begin{macro}{\chapter}
  1685. %    A chapter should always start on a new page therefore we start by
  1686. %    calling |\clearpage| and setting the pagestyle for this page to
  1687. %    \pstyle{plain}.
  1688. %    \begin{macrocode}
  1689. %<*refman>
  1690. \newcommand\chapter{\clearpage
  1691.                     \thispagestyle{plain}%
  1692. %    \end{macrocode}
  1693. %    Then we prevent floats from appearing at the top of this page
  1694. %    because it looks weird to see a floating object above a chapter
  1695. %    title.
  1696. %    \begin{macrocode}
  1697.                     \global\@topnum\z@
  1698. %    \end{macrocode}
  1699. %    Then we suppress the indentation of the first paragraph by
  1700. %    setting the switch |\@afterindent| to |false|. We use |\secdef|
  1701. %    to specify the macros to use for actually setting the chapter
  1702. %    title.
  1703. %    \begin{macrocode}
  1704.                     \@afterindentfalse
  1705.                     \secdef\@chapter\@schapter}
  1706. %    \end{macrocode}
  1707. %    \end{macro}
  1708. % \begin{macro}{\@chapter}
  1709. %    This macro is called when we have a numbered chapter. When
  1710. %    \Lcount{secnumdepth} is larger than $-1$ we display the chapter
  1711. %    number. We also inform the user that a new chapter is about to be
  1712. %    typeset by writing a message to the terminal.
  1713. %    \begin{macrocode}
  1714. \def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
  1715.                       \refstepcounter{chapter}%
  1716.                       \typeout{\@chapapp\space\thechapter.}%
  1717.                       \addcontentsline{toc}{chapter}%
  1718.                                    {\protect\numberline{\thechapter}#1}%
  1719.                     \else
  1720.                       \addcontentsline{toc}{chapter}{#1}
  1721.                     \fi
  1722. %    \end{macrocode}
  1723. %    After having written an entry to the table of contents we store
  1724. %    the (alternative) title of this chapter with |\chaptermark| and
  1725. %    add some white space to the lists of figures and tables.
  1726. %    \begin{macrocode}
  1727.                     \chaptermark{#1}%
  1728.                     \addtocontents{lof}{\protect\addvspace{10\p@}}%
  1729.                     \addtocontents{lot}{\protect\addvspace{10\p@}}%
  1730. %    \end{macrocode}
  1731. %    Then we call upon |\@makechapterhead| to format the actual
  1732. %    chapter title. We have to do this in a special way when we are in
  1733. %    twocolumn mode in order to have the chapter title use the entire
  1734. %    |\textwidth|. In one column mode we call |\@afterheading| which
  1735. %    takes care of suppressing the indentation.
  1736. %    \begin{macrocode}
  1737.                     \if@twocolumn
  1738.                       \@topnewpage[\@makechapterhead{#2}]%
  1739.                     \else
  1740.                       \@makechapterhead{#2}%
  1741.                       \@afterheading
  1742.                     \fi}
  1743. %    \end{macrocode}
  1744. %    \end{macro}
  1745. % \begin{macro}{\@makechapterhead}
  1746. %    The macro above uses |\@makechapterhead|\meta{text} to format the
  1747. %    heading of the chapter.
  1748. %    We begin by leaving some white space. The we open a group in
  1749. %    which we have a paragraph indent of 0pt, and in which we have the
  1750. %    text set ragged right. We also reset the font.
  1751. %    \begin{macrocode}
  1752. \def\@makechapterhead#1{%
  1753.   \longthickrule\bigskip%
  1754.   {\parindent \z@ \raggedright \reset@font
  1755. %    \end{macrocode}
  1756. %    Then we check whether the number of the chapter has to be printed.
  1757. %    If so we leave some whitespace between the chapternumber and its
  1758. %    title.
  1759. %    \begin{macrocode}
  1760.   \ifnum \c@secnumdepth >\m@ne
  1761.     \Large\bfseries \@chapapp{} \thechapter.\quad
  1762.   \fi
  1763. %    \end{macrocode}
  1764. %    Now we set the title in a large bold font. We prevent a pagebreak
  1765. %    at this point and leave some whitespace before the text begins.
  1766. %    \begin{macrocode}
  1767.   #1\par}
  1768.   \bigskip\longthickrule\bigskip
  1769. %    \end{macrocode}
  1770. % \end{macro}
  1771. % \begin{macro}{\@schapter}
  1772. %    This macro is called when we have an unnumbered chapter. It is
  1773. %    much simpler than |\@chapter| because it only needs to typeset
  1774. %    the chapter title.
  1775. %    \begin{macrocode}
  1776. \def\@schapter#1{\if@twocolumn
  1777.                    \@topnewpage[\@makeschapterhead{#1}]%
  1778.                  \else
  1779.                    \@makeschapterhead{#1}%
  1780.                    \@afterheading
  1781.                  \fi}
  1782. %    \end{macrocode}
  1783. %   \end{macro}
  1784. % \begin{macro}{\@makeschapterhead}
  1785. %    The macro above uses |\@makeschapterhead|\meta{text}to format
  1786. %    the heading of the chapter. It is similar to |\@makechapterhead|
  1787. %    except that it never has to print a chapter number.
  1788. %    \begin{macrocode}
  1789. \def\@makeschapterhead#1{%
  1790.     \longthickrule\bigskip%
  1791.     {\parindent \z@ \raggedright \reset@font
  1792.     \Large \bfseries  #1\par}
  1793.     \bigskip\longthickrule\bigskip
  1794.     }
  1795. %</refman>
  1796. %    \end{macrocode}
  1797. % \end{macro}
  1798. % \subsubsection{Lower level headings}
  1799. % \begin{macro}{\secshape}
  1800. %    \begin{macrocode}
  1801. \newcommand\secshape{\leftskip=-\leftmarginwidth%
  1802.                      \rightskip=\@flushglue%
  1803.                      \hyphenpenalty=2000}
  1804. %    \end{macrocode}
  1805. %  \end{macro}
  1806. %    These commands all make use of |\@startsection|.
  1807. % \begin{macro}{\section}
  1808. %    This gives a normal heading with white space above and below the
  1809. %    heading, the title set in |\large\bfseries|, and no indentation
  1810. %    on the first paragraph.
  1811. %    \begin{macrocode}
  1812. \newcommand\section{\@startsection {section}{1}{\z@}%
  1813.                                    {-2ex \@plus -1ex \@minus -.2ex}%
  1814.                                    {0.5ex \@plus.2ex}%
  1815.                                    {\secshape\reset@font\large\bfseries}}
  1816. %    \end{macrocode}
  1817. % \end{macro}
  1818. % \begin{macro}{\subsection}
  1819. %    This gives a normal heading with white space above and below the
  1820. %    heading, the title set in |\large\bfseries|, and no indentation
  1821. %    on the first paragraph.
  1822. %    \begin{macrocode}
  1823. \newcommand\subsection{\@startsection{subsection}{2}{\z@}%
  1824.                                      {-1.5ex\@plus -.5ex \@minus -.2ex}%
  1825.                                      {0.5ex \@plus .2ex}%
  1826.                                      {\secshape\reset@font\normalsize\bfseries}}
  1827. %    \end{macrocode}
  1828. % \end{macro}
  1829. % \begin{macro}{\subsubsection}
  1830. %    This gives a normal heading with white space above and below the
  1831. %    heading, the title set in |\normalsize\bfseries|, and no
  1832. %    indentation on the first paragraph.
  1833. %    \begin{macrocode}
  1834. \newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
  1835.                                      {-1.5ex\@plus -.5ex \@minus -.2ex}%
  1836.                                      {0.5ex \@plus .2ex}%
  1837.                                      {\secshape\reset@font\normalsize\mdseries}}
  1838. %    \end{macrocode}
  1839. % \end{macro}
  1840. % \begin{macro}{\paragraph}
  1841. %    This gives a run-in heading with white space above and to the
  1842. %    right of the heading, the title set in |\normalsize\bfseries|.
  1843. %    \begin{macrocode}
  1844. \newcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
  1845.                                     {2ex\@plus 1ex \@minus .2ex}%
  1846.                                     {-1em}%
  1847.                                     {\reset@font\normalsize\bfseries}}
  1848. %    \end{macrocode}
  1849. % \end{macro}
  1850. % \begin{macro}{\subparagraph}
  1851. %    This gives an indented run-in heading with white space above and
  1852. %    to the right of the heading, the title set in
  1853. %    |\normalsize\bfseries|.
  1854. %    \begin{macrocode}
  1855. \newcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
  1856.                                        {2ex \@plus 1ex \@minus .2ex}%
  1857.                                        {-1em}%
  1858.                                        {\reset@font\normalsize\bfseries}}
  1859. %    \end{macrocode}
  1860. % \end{macro}
  1861. % \subsection{Lists}
  1862. % \subsubsection{General List Parameters}
  1863. % The following commands are used to set the default values for the list
  1864. % environment's parameters. See the \LaTeX{} manual for an explanation
  1865. % of the meanings of the parameters.  Defaults for the list
  1866. % environment are set as follows.  First, |\rightmargin|,
  1867. % |\listparindent| and |\itemindent| are set to 0pt.  Then, for a Kth
  1868. % level list, the command |\@listK| is called, where `K' denotes `i',
  1869. % '`i', ... , `vi'.  (I.e., |\@listiii| is called for a third-level
  1870. % list.)  By convention, |\@listK| should set |\leftmargin| to
  1871. % |\leftmarginK|.
  1872. % \begin{macro}{\leftmargin}
  1873. % \begin{macro}{\leftmargini}
  1874. % \begin{macro}{\leftmarginii}
  1875. % \begin{macro}{\leftmarginiii}
  1876. % \begin{macro}{\leftmarginiv}
  1877. % \begin{macro}{\leftmarginv}
  1878. % \begin{macro}{\leftmarginvi}
  1879. % For efficiency, level-one list's values are defined at top level, and
  1880. % |\@listi| is defined to set only |\leftmargin|.
  1881. % When we are in two column mode some of the margins are set somewhat
  1882. % smaller.
  1883. %    \begin{macrocode}
  1884. \if@twocolumn
  1885.   \setlength\leftmargini  {2em}
  1886. \else
  1887.   \setlength\leftmargini  {2.5em}
  1888. %    \end{macrocode}
  1889. %    The following three are calculated so  that they are larger than
  1890. %    the sum of |\labelsep| and the width of the default labels (which
  1891. %    are `(m)', `vii.' and `M.').
  1892. %    \begin{macrocode}
  1893. \setlength\leftmarginii  {2.2em}
  1894. \setlength\leftmarginiii {1.87em}
  1895. \setlength\leftmarginiv  {1.7em}
  1896. \if@twocolumn
  1897.   \setlength\leftmarginv  {.5em}
  1898.   \setlength\leftmarginvi {.5em}
  1899. \else
  1900.   \setlength\leftmarginv  {1em}
  1901.   \setlength\leftmarginvi {1em}
  1902. %    \end{macrocode}
  1903. %    Here we set the top level leftmargin.
  1904. %    \begin{macrocode}
  1905. \setlength\leftmargin    {\leftmargini}
  1906. %    \end{macrocode}
  1907. % \end{macro}
  1908. % \end{macro}
  1909. % \end{macro}
  1910. % \end{macro}
  1911. % \end{macro}
  1912. % \end{macro}
  1913. % \end{macro}
  1914. % \begin{macro}{\labelsep}
  1915. % \begin{macro}{\labelwidth}
  1916. %    |\labelsep| is the distance between the label and the text of an
  1917. %    item; |\labelwidth| is the width of the label.
  1918. %    \begin{macrocode}
  1919. \setlength  \labelsep  {.5em}
  1920. \setlength  \labelwidth{\leftmargini}
  1921. \addtolength\labelwidth{-\labelsep}
  1922. %    \end{macrocode}
  1923. % \end{macro}
  1924. % \end{macro}
  1925. % \begin{macro}{\partopsep}
  1926. %    When the user leaves a blank line before the environment an extra
  1927. %    vertical space of |\partopsep| is inserted, in addition to
  1928. %    |\parskip| and |\topsep|.
  1929. %    \begin{macrocode}
  1930. %</refman-s|refman>
  1931. %<+10pt>\setlength\partopsep{2\p@ \@plus 1\p@ \@minus 1\p@}
  1932. %<+11pt>\setlength\partopsep{3\p@ \@plus 1\p@ \@minus 1\p@}
  1933. %<+12pt>\setlength\partopsep{3\p@ \@plus 2\p@ \@minus 2\p@}
  1934. %    \end{macrocode}
  1935. % \end{macro}
  1936. % \begin{macro}{\@beginparpenalty}
  1937. % \begin{macro}{\@endparpenalty}
  1938. %    These penalties are inserted before and after a list or paragraph
  1939. %    environment. They are set to a bonus value to encourage page
  1940. %    breaking at these points.
  1941. % \begin{macro}{\@itempenalty}
  1942. %    This penalty is inserted between list items.
  1943. %    \begin{macrocode}
  1944. %<*refman-s|refman>
  1945. \@beginparpenalty -\@lowpenalty
  1946. \@endparpenalty   -\@lowpenalty
  1947. \@itempenalty     -\@lowpenalty
  1948. %</refman-s|refman>
  1949. %    \end{macrocode}
  1950. % \end{macro}
  1951. % \end{macro}
  1952. % \end{macro}
  1953. % \begin{macro}{\@listI}
  1954. % \begin{macro}{\@listi}
  1955. % |\@listI| defines top level and |\@listi| values of
  1956. % |\leftmargin|, |\parsep|, |\topsep|, and |\itemsep|
  1957. %    \begin{macrocode}
  1958. %<*10pt|11pt|12pt>
  1959. \def\@listI{\leftmargin\leftmargini
  1960.             \parsep \parskip
  1961.             \topsep \z@
  1962.             \itemsep\z@}
  1963. \let\@listi\@listI
  1964. %    \end{macrocode}
  1965. %    We have to initialise these parameters.
  1966. %    \begin{macrocode}
  1967. \@listi
  1968. %    \end{macrocode}
  1969. % \end{macro}
  1970. % \end{macro}
  1971. % \begin{macro}{\@listii}
  1972. % \begin{macro}{\@listiii}
  1973. % \begin{macro}{\@listiv}
  1974. % \begin{macro}{\@listv}
  1975. % \begin{macro}{\@listvi}
  1976. %    Here are the same macros for the higher level lists.
  1977. %    \begin{macrocode}
  1978. \def\@listii {\leftmargin\leftmarginii
  1979.               \labelwidth\leftmarginii
  1980.               \advance\labelwidth-\labelsep
  1981.               \topsep    \z@
  1982.               \parsep    \parskip
  1983.               \itemsep   \z@}
  1984. \def\@listiii{\leftmargin\leftmarginiii
  1985.               \labelwidth\leftmarginiii
  1986.               \advance\labelwidth-\labelsep
  1987.               \topsep    \z@
  1988.               \parsep    \parskip
  1989.               \partopsep \z@
  1990.               \itemsep   \topsep}
  1991. \def\@listiv {\leftmargin\leftmarginiv
  1992.               \labelwidth\leftmarginiv
  1993.               \advance\labelwidth-\labelsep}
  1994. \def\@listv  {\leftmargin\leftmarginv
  1995.               \labelwidth\leftmarginv
  1996.               \advance\labelwidth-\labelsep}
  1997. \def\@listvi {\leftmargin\leftmarginvi
  1998.               \labelwidth\leftmarginvi
  1999.               \advance\labelwidth-\labelsep}
  2000. %</10pt|11pt|12pt>
  2001. %    \end{macrocode}
  2002. % \end{macro}
  2003. % \end{macro}
  2004. % \end{macro}
  2005. % \end{macro}
  2006. % \end{macro}
  2007. % \subsubsection{Enumerate}
  2008. %    The enumerate environment uses  four counters: \Lcount{enumi},
  2009. %    \Lcount{enumii}, \Lcount{enumiii} and \Lcount{enumiv}, where
  2010. %    \Lcount{enumN} controls the numbering of the Nth level
  2011. %    enumeration.
  2012. % \begin{macro}{\theenumi}
  2013. % \begin{macro}{\theenumii}
  2014. % \begin{macro}{\theenumiii}
  2015. % \begin{macro}{\theenumiv}
  2016. %    The counters are already defined in \file{latex.dtx}, but their
  2017. %    representation is changed here.
  2018. %    \begin{macrocode}
  2019. %<*refman-s|refman>
  2020. \renewcommand\theenumi{\arabic{enumi}}
  2021. \renewcommand\theenumii{\alph{enumii}}
  2022. \renewcommand\theenumiii{\roman{enumiii}}
  2023. \renewcommand\theenumiv{\Alph{enumiv}}
  2024. %    \end{macrocode}
  2025. % \end{macro}
  2026. % \end{macro}
  2027. % \end{macro}
  2028. % \end{macro}
  2029. % \begin{macro}{\labelenumi}
  2030. % \begin{macro}{\labelenumii}
  2031. % \begin{macro}{\labelenumiii}
  2032. % \begin{macro}{\labelenumiv}
  2033. %    The label for each item is generated by the commands
  2034. %    |\labelenumi| ... |\labelenumiv|.
  2035. %    \begin{macrocode}
  2036. \newcommand\labelenumi{\theenumi.}
  2037. \newcommand\labelenumii{(\theenumii)}
  2038. \newcommand\labelenumiii{\theenumiii.}
  2039. \newcommand\labelenumiv{\theenumiv.}
  2040. %    \end{macrocode}
  2041. % \end{macro}
  2042. % \end{macro}
  2043. % \end{macro}
  2044. % \end{macro}
  2045. % \begin{macro}{\p@enumii}
  2046. % \begin{macro}{\p@enumiii}
  2047. % \begin{macro}{\p@enumiv}
  2048. %    The expansion of |\p@enumN||\theenumN| defines the output of a
  2049. %    |\ref| command when referencing an item of the Nth level of an
  2050. %    enumerated list.
  2051. %    \begin{macrocode}
  2052. \renewcommand\p@enumii{\theenumi}
  2053. \renewcommand\p@enumiii{\theenumi(\theenumii)}
  2054. \renewcommand\p@enumiv{\p@enumiii\theenumiii}
  2055. %    \end{macrocode}
  2056. % \end{macro}
  2057. % \end{macro}
  2058. % \end{macro}
  2059. % \subsubsection{Itemize}
  2060. % \begin{macro}{\labelitemi}
  2061. % \begin{macro}{\labelitemii}
  2062. % \begin{macro}{\labelitemiii}
  2063. % \begin{macro}{\labelitemiv}
  2064. % Itemization is controlled by four commands: |\labelitemi|,
  2065. % |\labelitemii|, |\labelitemiii|, and |\labelitemiv|, which define
  2066. % the labels of thevarious itemization levels: the symbols used are
  2067. % bullet, bold en-dash, asterisk and centred dot.
  2068. %    \begin{macrocode}
  2069. \newcommand\labelitemi{$\m@th\bullet$}
  2070. \newcommand\labelitemii{\bfseries --}
  2071. \newcommand\labelitemiii{$\m@th\ast$}
  2072. \newcommand\labelitemiv{$\m@th\cdot$}
  2073. %    \end{macrocode}
  2074. % \end{macro}
  2075. % \end{macro}
  2076. % \end{macro}
  2077. % \end{macro}
  2078. % \subsubsection{Description}
  2079. % \begin{macro}{\description}
  2080. % \begin{macro}{\descriptionlabel}
  2081. %    The description environment is defined here -- while the itemize
  2082. %    and enumerate environments are defined in \file{latex.dtx}.
  2083. %    To change the formatting of the label, you must redefine
  2084. %    |\descriptionlabel|.
  2085. %    \begin{macrocode}
  2086. \newcommand\descriptionlabel[1]{%
  2087.             \ifdescriptionleft\else \hfil\fi
  2088.             \rmfamily #1 \ifdescriptioncolon :\fi
  2089.             \ifdescriptionleft \hfil \fi}
  2090. \newenvironment{description}
  2091.                {\list{}{%
  2092.                     \labelsep\marginparsep
  2093.                     \labelwidth\leftmarginwidth
  2094.                     %\advance\labelwidth by \@totalleftmargin
  2095.                     \advance\labelwidth by \leftmargin
  2096.                     \advance\labelwidth by -\labelsep
  2097.                     \let\makelabel\descriptionlabel}}
  2098.                {\endlist}
  2099. %    \end{macrocode}
  2100. % \end{macro}
  2101. % \end{macro}
  2102. % \subsection{Defining new environments}
  2103. % \subsubsection{Abstract}
  2104. % \begin{macro}{\abstract}
  2105. %    When we are producing a separate titlepage we also put the
  2106. %    abstract on a page of its own. It will be centred vertically on
  2107. %    the page.
  2108. %    \begin{macrocode}
  2109. \if@titlepage
  2110.   \newenvironment{abstract}{%
  2111.       \titlepage
  2112.       \null\vfil
  2113.       \begin{center}
  2114.         \bfseries \abstractname
  2115.       \end{center}}
  2116.      {\par\vfil\null\endtitlepage}
  2117. %    \end{macrocode}
  2118. %    When we are not making a seperate titlepage --the default for the
  2119. %    refman-s document class-- we have to check if we are in twocolumn
  2120. %    mode. In that case the abstract is as a |\section*|, otherwise
  2121. %    the quotation environment is used to typeset the abstract.
  2122. %    \begin{macrocode}
  2123. \else
  2124.   \newenvironment{abstract}{%
  2125.       \if@twocolumn
  2126.         \section*{\abstractname}%
  2127.       \else
  2128.         \small
  2129.         \begin{center}%
  2130.           {\bfseries \abstractname\vspace{-.5em}\vspace{\z@}}%
  2131.         \end{center}%
  2132.         \quotation
  2133.       \fi}
  2134.       {\if@twocolumn\else\endquotation\fi}
  2135. %    \end{macrocode}
  2136. % \end{macro}
  2137. % \subsubsection{Verse}
  2138. % \begin{macro}{\verse}
  2139. %   The verse environment is defined by making clever use of the
  2140. %   list environment's parameters.  The user types |\\| to end a line.
  2141. %   This is implemented by |\let|'ing |\\| equal |\@centercr|.
  2142. %    \begin{macrocode}
  2143. \newenvironment{verse}
  2144.                {\let\\=\@centercr
  2145.                 \list{}{\itemsep      \z@
  2146.                         \itemindent   -1.5em%
  2147.                         \listparindent\itemindent
  2148.                         \rightmargin  \leftmargin
  2149.                         \advance\leftmargin 1.5em}%
  2150.                 \item[]}
  2151.                {\endlist}
  2152. %    \end{macrocode}
  2153. % \end{macro}
  2154. % \subsubsection{Quotation}
  2155. % \begin{macro}{\quotation}
  2156. %   The quotation environment is also defined by making clever use of
  2157. %   the list environment's parameters. The lines in the environment
  2158. %   are set smaller than |\textwidth|. The first line of a paragraph
  2159. %   inside this environment is indented.
  2160. %    \begin{macrocode}
  2161. \newenvironment{quotation}
  2162.                {\list{}{\listparindent 1.5em%
  2163.                         \itemindent    \listparindent
  2164.                         \rightmargin   \leftmargin
  2165.                         \parsep        \z@ \@plus\p@}%
  2166.                 \item[]}
  2167.                {\endlist}
  2168. %    \end{macrocode}
  2169. % \end{macro}
  2170. % \subsubsection{Quote}
  2171. % \begin{macro}{\quote}
  2172. %   The quote environment is like the quotation environment except
  2173. %   that paragraphs are not indented.
  2174. %    \begin{macrocode}
  2175. \newenvironment{quote}
  2176.                {\list{}{\rightmargin\leftmargin}%
  2177.                 \item[]}
  2178.                {\endlist}
  2179. %    \end{macrocode}
  2180. % \end{macro}
  2181. % \subsubsection{Example}
  2182. % \begin{macro}{\example}
  2183. %   The example environment is a verse environment with tt font
  2184. %   which tries to avoid pagebrakes at the |\begin{example}|.
  2185. %    \begin{macrocode}
  2186. \newenvironment{example}
  2187.                {\@beginparpenalty=\highpenalty
  2188.                \let\\=\@centercr
  2189.                 \list{}{\itemsep      \z@
  2190.                         \itemindent   -1.5em%
  2191.                         \listparindent\itemindent
  2192.                         \rightmargin  \leftmargin
  2193.                         \advance\leftmargin 1.5em}%
  2194.                 \ttfamily
  2195.                 \item[]}
  2196.                {\endlist}
  2197. %    \end{macrocode}
  2198. % \end{macro}
  2199. % \subsubsection{Theorem}
  2200. %    This document class does not define it's own theorem environments,
  2201. %    the defaults, supplied by \file{latex.dtx} are available.
  2202. % \subsubsection{Titlepage}
  2203. % \begin{macro}{\titlepage}
  2204. %  In the normal environments, the titlepage environment does nothing
  2205. %  but start and end a page, and inhibit page numbers.  It also resets
  2206. %  the page number to zero.  In two-column style, it still makes a
  2207. %  one-column page.
  2208. %    \begin{macrocode}
  2209. \newenvironment{titlepage}
  2210.                {\if@twocolumn
  2211.                   \@restonecoltrue\onecolumn
  2212.                 \else
  2213.                   \@restonecolfalse\newpage
  2214.                 \fi
  2215.                 \thispagestyle{empty}%
  2216.                 \setcounter{page}{0}}
  2217.                {\if@restonecol\twocolumn \else \newpage \fi}
  2218. %    \end{macrocode}
  2219. % \end{macro}
  2220. % \subsubsection{Appendix}
  2221. % \begin{macro}{\appendix}
  2222. %    The |\appendix| command is not really an environment, it is a
  2223. %    macro that makes some changes in the way things are done.
  2224. %    In the article document class the |\appendix| command must do the
  2225. %    following:
  2226. %    \begin{itemize}
  2227. %    \item reset the section and subsection counters to zero,
  2228. %    \item redefine |\thesection| to produce alphabetic appendix
  2229. %        numbers.
  2230. %    \end{itemize}
  2231. %    \begin{macrocode}
  2232. %<*refman-s>
  2233. \newcommand\appendix{\par
  2234.   \setcounter{section}{0}%
  2235.   \setcounter{subsection}{0}%
  2236.   \renewcommand\thesection{\Alph{section}}}
  2237. %</refman-s>
  2238. %    \end{macrocode}
  2239. %    In the report and book document classes the |\appendix| command
  2240. %    must do the following:
  2241. %    \begin{itemize}
  2242. %    \item reset the chapter and section counters to zero,
  2243. %    \item set |\@chapapp| to |\appendixname| (for messages),
  2244. %    \item redefine the chapter counter to produce appendix numbers,
  2245. %    \item possibly redefine the |\chapter| command if appendix titles
  2246. %        and headings are to look different from chapter titles and
  2247. %        headings.
  2248. %    \end{itemize}
  2249. %    \begin{macrocode}
  2250. %<*refman>
  2251. \newcommand\appendix{\par
  2252.   \setcounter{chapter}{0}%
  2253.   \setcounter{section}{0}%
  2254.   \renewcommand\@chapapp{\appendixname}%
  2255.   \renewcommand\thechapter{\Alph{chapter}}}
  2256. %</refman>
  2257. %    \end{macrocode}
  2258. % \end{macro}
  2259. % \subsection{Setting parameters for existing environments}
  2260. % \subsubsection{Array and tabular}
  2261. % \begin{macro}{\arraycolsep}
  2262. %    The columns in an array environment are separated by
  2263. %    2|\arraycolsep|.
  2264. %    \begin{macrocode}
  2265. \setlength\arraycolsep{5\p@}
  2266. %    \end{macrocode}
  2267. % \end{macro}
  2268. % \begin{macro}{\tabcolsep}
  2269. %    The columns in an tabular environment are separated by
  2270. %    2|\tabcolsep|.
  2271. %    \begin{macrocode}
  2272. \setlength\tabcolsep{6\p@}
  2273. %    \end{macrocode}
  2274. % \end{macro}
  2275. % \begin{macro}{\arrayrulewidth}
  2276. %    The width of rules in the array and tabular environments is given
  2277. %    by |\arrayrulewidth|.
  2278. %    \begin{macrocode}
  2279. \setlength\arrayrulewidth{.4\p@}
  2280. %    \end{macrocode}
  2281. % \end{macro}
  2282. % \begin{macro}{\doublerulesep}
  2283. %    The space between adjacent rules in the array and tabular
  2284. %    environments is given by |\doublerulesep|.
  2285. %    \begin{macrocode}
  2286. \setlength\doublerulesep{2\p@}
  2287. %    \end{macrocode}
  2288. % \end{macro}
  2289. % \subsubsection{Tabbing}
  2290. % \begin{macro}{\tabbingsep}
  2291. %    This controls the space that the |\'| command puts in. (See
  2292. %    \LaTeX{} manual for an explanation.)
  2293. %    \begin{macrocode}
  2294. \setlength\tabbingsep{\labelsep}
  2295. %    \end{macrocode}
  2296. % \end{macro}
  2297. % \subsubsection{Minipage}
  2298. % \begin{macro}{\@minipagerestore}
  2299. %    The macro |\@minipagerestore| is called upon entry to a minipage
  2300. %    environment to set up things that are to be handled differently
  2301. %    inside a minipage environment. In the current styles, it does
  2302. %    nothing.
  2303. % \end{macro}
  2304. % \begin{macro}{\@mpfootins}
  2305. %    Minipages have their own footnotes; |\skip||\@mpfootins| plays
  2306. %    same r\^ole for footnotes in a minipage as |\skip||\footins| does
  2307. %    for ordinary footnotes.
  2308. %    \begin{macrocode}
  2309. \skip\@mpfootins = \skip\footins
  2310. %    \end{macrocode}
  2311. % \end{macro}
  2312. % \subsubsection{Framed boxes}
  2313. % \begin{macro}{\fboxsep}
  2314. %    The space left by |\fbox| and |\framebox| between the box and the
  2315. %    text in it.
  2316. % \begin{macro}{\fboxrule}
  2317. %    The width of the rules in the box made by |\fbox| and |\framebox|.
  2318. %    \begin{macrocode}
  2319. \setlength\fboxsep{3\p@}
  2320. \setlength\fboxrule{.4\p@}
  2321. %    \end{macrocode}
  2322. % \end{macro}
  2323. % \end{macro}
  2324. % \subsubsection{Equation and eqnarray}
  2325. % \begin{macro}{\theequation}
  2326. %    The equation counter will be reset at beginning of a new chapter
  2327. %    and the equation number will be prefixed by the chapter number.
  2328. %    This code  must follow the |\chapter| definition, or more exactly
  2329. %    the definition of the chapter counter.
  2330. %    \begin{macrocode}
  2331. %<+refman-s>\renewcommand\theequation{\arabic{equation}}
  2332. %<*refman>
  2333. \@addtoreset{equation}{chapter}
  2334. \renewcommand\theequation{\thechapter.\arabic{equation}}
  2335. %</refman>
  2336. %    \end{macrocode}
  2337. % \end{macro}
  2338. % \begin{macro}{\jot}
  2339. %    |\jot| is the extra space added between lines of an eqnarray
  2340. %    environment. The default value is used.
  2341. %    \begin{macrocode}
  2342. % \setlength\jot{3pt}
  2343. %    \end{macrocode}
  2344. % \end{macro}
  2345. % \begin{macro}{\@eqnnum}
  2346. %    The macro |\@eqnnum| defines how equation numbers are to appear in
  2347. %    equations. Again the default is used.
  2348. %    \begin{macrocode}
  2349. % \def\@eqnnum{(\theequation)}
  2350. %    \end{macrocode}
  2351. % \end{macro}
  2352. % \subsection{Floating objects}
  2353. %    The file \file{latex.dtx} only defines a number of tools with
  2354. %    which floating objects can be defined. This is done in the
  2355. %    document class. It needs to define the following macros for each
  2356. %    floating object of type \texttt{TYPE} (e.g., \texttt{TYPE} =
  2357. %    figure).
  2358. %    \begin{description}
  2359. %    \item[\texttt{\bslash fps@TYPE}]
  2360. %        The default placement specifier for floats of type
  2361. %        \texttt{TYPE}.
  2362. %    \item[\texttt{\bslash ftype@TYPE}]
  2363. %        The type number for floats of type \texttt{TYPE}.  Each
  2364. %        \texttt{TYPE} has associated a unique positive {\texttt
  2365. %        TYPE} number, which is a power of two.  E.g., figures might
  2366. %        have type number 1, tables type number 2, programs type
  2367. %        number 4, etc.
  2368. %    \item[\texttt{\bslash ext@TYPE}]
  2369. %        The file extension indicating the file on which the contents
  2370. %        list for float type \texttt{TYPE} is stored.  For example,
  2371. %        |\ext@figure| = `lof'.
  2372. %    \item[\texttt{\bslash fnum@TYPE}]
  2373. %        A macro to generate the figure number for a caption. For
  2374. %        example, |\fnum@TYPE| == `Figure |\thefigure|'.
  2375. %    \item[\texttt{\bslash @makecaption{\meta{num}}{\meta{text}}}]
  2376. %        A macro to make a caption, with \meta{num} the value produced
  2377. %        by |\fnum@...| and \meta{text} the text of the caption. It
  2378. %        can assume it's in a |\parbox| of the appropriate width.
  2379. %        This will be used for {\em all} floating objects.
  2380. %    \end{description}
  2381. %    The actual environment that implements a floating object such as
  2382. %    a figure is defined using the macros |\@float| and |\end@float|,
  2383. %    which are defined in \file{latex.dtx}.
  2384. %    An environment that implements a single column floating object is
  2385. %    started with |\@float{|\texttt{TYPE}|}[|\meta{placement}|]| of type
  2386. %    \texttt{TYPE} with \meta{placement} as the placement specifier.
  2387. %    The default value of \meta{PLACEMENT} is defined by |\fps@TYPE|.
  2388. %    The environment is ended by |\end@float|.  E.g., |\figure| ==
  2389. %    |\@float|{figure}, |\endfigure| == |\end@float|.
  2390. % \subsubsection{Figure}
  2391. %    Here is the implementation of the figure environment.
  2392. % \begin{macro}{\c@figure}
  2393. %    First we have to allocate a counter to number the figures. In the
  2394. %    report and book document classes the figures are numbered per
  2395. %    chapter.
  2396. %    \begin{macrocode}
  2397. %<*refman-s>
  2398. \newcounter{figure}
  2399. \renewcommand\thefigure{\@arabic\c@figure}
  2400. %</refman-s>
  2401. %<*refman>
  2402. \newcounter{figure}[chapter]
  2403. \renewcommand\thefigure{\thechapter.\@arabic\c@figure}
  2404. %</refman>
  2405. %    \end{macrocode}
  2406. % \end{macro}
  2407. % \begin{macro}{\fps@figure}
  2408. % \begin{macro}{\ftype@figure}
  2409. % \begin{macro}{\ext@figure}
  2410. % \begin{macro}{\num@figure}
  2411. %    Here are the parameters for the floating objects of type `figure'.
  2412. %    \begin{macrocode}
  2413. \def\fps@figure{tbp}
  2414. \def\ftype@figure{1}
  2415. \def\ext@figure{lof}
  2416. \def\fnum@figure{\figurename~\thefigure}
  2417. %    \end{macrocode}
  2418. % \end{macro}
  2419. % \end{macro}
  2420. % \end{macro}
  2421. % \end{macro}
  2422. % \begin{environment}{figure}
  2423. % \begin{environment}{figure*}
  2424. %    And the definition of the actual environment. The form with the
  2425. %    |*| is used for double column figures.
  2426. %    \begin{macrocode}
  2427. \newenvironment{figure}
  2428.                {\@float{figure}}
  2429.                {\end@float}
  2430. \newenvironment{figure*}
  2431.                {\@dblfloat{figure}}
  2432.                {\end@dblfloat}
  2433. %    \end{macrocode}
  2434. % \end{environment}
  2435. % \end{environment}
  2436. % \subsubsection{Table}
  2437. %    Here is the implementation of the table environment. It is very
  2438. %    much the same as the figure environment.
  2439. % \begin{macro}{\c@table}
  2440. %    First we have to allocate a counter to number the tables. In the
  2441. %    report and book document classes the tables are numbered per
  2442. %    chapter.
  2443. %    \begin{macrocode}
  2444. %<*refman-s>
  2445. \newcounter{table}
  2446. \renewcommand\thetable{\@arabic\c@table}
  2447. %</refman-s>
  2448. %<*refman>
  2449. \newcounter{table}[chapter]
  2450. \renewcommand\thetable{\thechapter.\@arabic\c@table}
  2451. %</refman>
  2452. %    \end{macrocode}
  2453. % \end{macro}
  2454. % \begin{macro}{\fps@table}
  2455. % \begin{macro}{\ftype@table}
  2456. % \begin{macro}{\ext@table}
  2457. % \begin{macro}{\num@table}
  2458. %    Here are the parameters for the floating objects of type `table'.
  2459. %    \begin{macrocode}
  2460. \def\fps@table{tbp}
  2461. \def\ftype@table{2}
  2462. \def\ext@table{lot}
  2463. \def\fnum@table{\tablename~\thetable}
  2464. %    \end{macrocode}
  2465. % \end{macro}
  2466. % \end{macro}
  2467. % \end{macro}
  2468. % \end{macro}
  2469. % \begin{environment}{table}
  2470. % \begin{environment}{table*}
  2471. %    And the definition of the actual environment. The form with the
  2472. %    |*| is used for double column tables.
  2473. %    \begin{macrocode}
  2474. \newenvironment{table}
  2475.                {\@float{table}}
  2476.                {\end@float}
  2477. \newenvironment{table*}
  2478.                {\@dblfloat{table}}
  2479.                {\end@dblfloat}
  2480. %    \end{macrocode}
  2481. % \end{environment}
  2482. % \end{environment}
  2483. % \subsubsection{Captions}
  2484. % \begin{macro}{\@makecaption}
  2485. %    The |\caption| command calls |\@makecaption| to format the
  2486. %    caption of floating objects. It gets two arguments,
  2487. %    \meta{number}, the number of the floating object and \meta{text},
  2488. %    the text of the caption. Usually \meta{number} contains a string
  2489. %    such as `Figure 3.2'. The macro can assume it is called inside a
  2490. %    |\parbox| of right width, with |\normalsize|.
  2491. % \begin{macro}{\abovecaptionskip}
  2492. % \begin{macro}{\belowcaptionskip}
  2493. %    These lengths contain the amount of white space to leave above
  2494. %    and below the caption.
  2495. %    \begin{macrocode}
  2496. \newlength\abovecaptionskip
  2497. \newlength\belowcaptionskip
  2498. \setlength\abovecaptionskip{10\p@}
  2499. \setlength\belowcaptionskip{0\p@}
  2500. %    \end{macrocode}
  2501. % \end{macro}
  2502. % \end{macro}
  2503. %    The definition of this macro is |\long| in order to allow more
  2504. %    then one paragraph in a caption.
  2505. %    \begin{macrocode}
  2506. \long\def\@makecaption#1#2{%
  2507.   \vskip\abovecaptionskip
  2508. %    \end{macrocode}
  2509. %    We want to see if the caption fits on one line on the page,
  2510. %    therefore we first typeset it in a temporary box.
  2511. %    \begin{macrocode}
  2512.   \setbox\@tempboxa\hbox{#1: #2}%
  2513. %    \end{macrocode}
  2514. %    We can the measure its width. It that is larger than the current
  2515. %    |\hsize| we typeset the caption as an ordinary paragraph.
  2516. %    \begin{macrocode}
  2517.   \ifdim \wd\@tempboxa >\hsize
  2518.     #1: #2\par
  2519. %    \end{macrocode}
  2520. %    If the caption fits, we center it.
  2521. %    \begin{macrocode}
  2522.   \else
  2523.     \hbox to\hsize{\hfil\box\@tempboxa\hfil}%
  2524.   \fi
  2525.   \vskip\belowcaptionskip}
  2526. %    \end{macrocode}
  2527. % \end{macro}
  2528. % \subsection{Font changing}
  2529. %    Here we supply the declarative font changing commands that were
  2530. %    common in \LaTeX\ version 2.09 and earlier. These commands work
  2531. %    in text mode \emph{and} in math mode. They are provided for
  2532. %    compatibility, but one should start using the |\text...| and
  2533. %    |\math...| commands instead. These commands are defined using
  2534. %    |\@newfontswitch|, a command with three arguments: the user
  2535. %    command to be defined; \LaTeX\ commands to execute in text mode
  2536. %    and \LaTeX\ commands to execute in math mode.
  2537. %  \begin{macro}{\rm}
  2538. %  \begin{macro}{\tt}
  2539. %  \begin{macro}{\sf}
  2540. %    The commands to change the family. When in compatibility mode we
  2541. %    select the `default' font first, to get \LaTeX2.09 behviour.
  2542. %    \begin{macrocode}
  2543. \@renewfontswitch{\rm}{\normalfont\rmfamily}{\mathrm}
  2544. \@renewfontswitch{\sf}{\normalfont\sffamily}{\mathsf}
  2545. \@renewfontswitch{\tt}{\normalfont\ttfamily}{\mathtt}
  2546. %    \end{macrocode}
  2547. %  \end{macro}
  2548. %  \end{macro}
  2549. %  \end{macro}
  2550. %  \begin{macro}{\bf}
  2551. %    The command to change to the bold series. One should use
  2552. %    |\mdseries| to explicitly switch back to medium series.
  2553. %    \begin{macrocode}
  2554. \@renewfontswitch{\bf}{\normalfont\bfseries}{\mathbf}
  2555. %    \end{macrocode}
  2556. %  \end{macro}
  2557. %  \begin{macro}{\sl}
  2558. %  \begin{macro}{\it}
  2559. %  \begin{macro}{\sc}
  2560. %    And the commands to change the shape of the font. The slanted and
  2561. %    small caps shapes are not available by default as math alphabets,
  2562. %    so those changes do nothing in math mode. One should use
  2563. %    |\upshape| to explicitly change back to the upright shape.
  2564. %    \begin{macrocode}
  2565. \@renewfontswitch{\it}{\normalfont\itshape}{\mathit}
  2566. \@renewfontswitch{\sl}{\normalfont\slshape}{\relax}
  2567. \@renewfontswitch{\sc}{\normalfont\scshape}{\relax}
  2568. %    \end{macrocode}
  2569. %  \end{macro}
  2570. %  \end{macro}
  2571. %  \end{macro}
  2572. % \begin{macro}{\cal}
  2573. % \begin{macro}{\mit}
  2574. %    The commands |\cal| and |\mit| should only be used in math mode,
  2575. %    outside math mode they have no effect. Currently the New Font
  2576. %    Selection Scheme defines these commands to generate warning
  2577. %    messages. Therefore we have to define them `by hand'.
  2578. %    \begin{macrocode}
  2579. \renewcommand{\cal}{\protect\pcal}
  2580. \newcommand{\pcal}{\@fontswitch{\relax}{\mathcal}}
  2581. \renewcommand{\mit}{\protect\pmit}
  2582. \newcommand{\pmit}{\@fontswitch{\relax}{\mathnormal}}
  2583. %    \end{macrocode}
  2584. %  \end{macro}
  2585. %  \end{macro}
  2586. % \section{Cross Referencing}
  2587. % \subsection{Table of Contents, etc.}
  2588. %     A |\section| command writes a
  2589. %     |\contentsline{section}{|\meta{title}|}{|\meta{page}|}| command
  2590. %     on the \file{.toc} file, where \meta{title} contains the
  2591. %     contents of the entry and \meta{page} is the page number. If
  2592. %     sections are being numbered, then \meta{title} will be of the
  2593. %     form |\numberline{|\meta{num}|}{|\meta{heading}|}| where
  2594. %     \meta{num} is the number produced by |\thesection|.  Other
  2595. %     sectioning commands work similarly.
  2596. %     A |\caption| command in a `figure' environment writes
  2597. %     |\contentsline{figure}{\numberline{|\meta{num}|}{|%
  2598. %                    \meta{caption}|}}{|\meta{page}|}|
  2599. %     on the .\file{lof} file, where \meta{num} is the number produced
  2600. %     by |\thefigure| and \meta{caption} is the figure caption.  It
  2601. %     works similarly for a `table' environment.
  2602. %    The command |\contentsline{|\meta{name}|}| expands to
  2603. %    |\l@|\meta{name}.  So, to specify the table of contents, we must
  2604. %    define |\l@chapter|, |\l@section|, |\l@subsection|, ... ; to
  2605. %    specify the list of figures, we must define |\l@figure|; and so
  2606. %    on.  Most of these can be defined with the |\@dottedtocline|
  2607. %    command, which works as follows.
  2608. %    |\@dottedtocline{|\meta{level}|}{|\meta{indent}|}{|^^A
  2609. %                      \meta{numwidth}|}{|^^A
  2610. %                      \meta{title}|}{|\meta{page}|}|
  2611. %    \begin{description}
  2612. %    \item[\meta{level}] An entry is produced only if\meta{ level}
  2613. %        $<=$ value of the \Lcount{tocdepth} counter.  Note,
  2614. %        |\chapter| is level 0, |\section| is level 1, etc.
  2615. %    \item[\meta{indent}] The indentation from the outer left margin
  2616. %        of the start   of the contents line.
  2617. %    \item[\meta{numwidth}] The width of a box in which the section
  2618. %        number is to go, if \meta{title} includes a |\numberline|
  2619. %        command.
  2620. %    \end{description}
  2621. % \begin{macro}{\@pnumwidth}
  2622. % \begin{macro}{\@tocrmarg}
  2623. % \begin{macro}{\@dotsep}
  2624. %    This command uses the following three parameters, which are set
  2625. %    with a |\newcommand| (so em's can be used to make them depend upon
  2626. %    the font).
  2627. %    \begin{description}
  2628. %    \item[\texttt{\bslash @pnumwidth}] The width of a box in which the
  2629. %        page number is put.
  2630. %    \item[\texttt{\bslash @tocrmarg}] The right margin for multiple
  2631. %        line entries.  One wants |\@tocrmarg| > or = |\@pnumwidth|
  2632. %    \item[\texttt{\bslash @dotsep}] Separation between dots, in mu
  2633. %        units. Should be defined as a number like 2 or 1.7
  2634. %    \end{description}
  2635. %    \begin{macrocode}
  2636. \newcommand\@pnumwidth{1.55em}
  2637. \newcommand\@tocrmarg {2.55em}
  2638. \newcommand\@dotsep{4.5}
  2639. %<+refman-s>\setcounter{tocdepth}{3}
  2640. %<+refman>\setcounter{tocdepth}{2}
  2641. %    \end{macrocode}
  2642. % \end{macro}
  2643. % \end{macro}
  2644. % \end{macro}
  2645. % \subsubsection{Table of Contents}
  2646. % \begin{macro}{\tableofcontents}
  2647. %    This macro is used to request that \LaTeX{} produces a table of
  2648. %    contents. In the report and book document classes the tables of
  2649. %    contents, figures etc. are always set in single-column style.
  2650. %    \begin{macrocode}
  2651. \newcommand\tableofcontents{%
  2652. %<*refman>
  2653.     \if@twocolumn
  2654.       \@restonecoltrue\onecolumn
  2655.     \else
  2656.       \@restonecolfalse
  2657.     \fi
  2658. %    \end{macrocode}
  2659. %    The title is set using the |\chapter*| command, making sure that
  2660. %    the running head --if one is required-- contains the right
  2661. %    information.
  2662. %    \begin{macrocode}
  2663.     \chapter*{\contentsname
  2664. %</refman>
  2665. %<+refman-s>    \section*{\contentsname
  2666.         \@mkboth{\contentsname}{\contentsname}}%
  2667. %    \end{macrocode}
  2668. %    The the actual table of contents is made by calling
  2669. %    |\@starttoc{toc}|. After that we restore twocolumn mode if
  2670. %    necessary.
  2671. %    \begin{macrocode}
  2672.     \@starttoc{toc}%
  2673. %<-refman-s>    \if@restonecol\twocolumn\fi
  2674.     }
  2675. %    \end{macrocode}
  2676. % \end{macro}
  2677. % \begin{macro}{\l@part}
  2678. %    Each sectioning command needs an additional macro  to format its
  2679. %    entry in the table of contents, as described above. The macro for
  2680. %    the entry for parts is defined in a special way.
  2681. %    First we make sure that if a pagebreak should occur, it occurs
  2682. %    {\em before} this entry. Also a little whitespace is added and a
  2683. %    group begun to keep changes local.
  2684. %    \begin{macrocode}
  2685. \newcommand\l@part[2]{%
  2686. %<+refman-s>    \addpenalty{\@secpenalty}%
  2687. %<+refman>    \addpenalty{-\@highpenalty}%
  2688.     \addvspace{2.25em \@plus\p@}%
  2689.     \begingroup
  2690. %    \end{macrocode}
  2691. %    The macro |\numberline| requires that the width of the box that
  2692. %    holds the part number is stored in \LaTeX's scratch register
  2693. %    |\@tempdima|. Therefore we put it there.
  2694. %    \begin{macrocode}
  2695.       \setlength\@tempdima{3em}%
  2696. %    \end{macrocode}
  2697. %    The we set |\parindent| to 0pt and use |\rightskip| to leave
  2698. %    enough room for the pagenumbers. To prevent overfull box messages
  2699. %    the |\parfillskip| is set to a negative value.
  2700. %    \begin{macrocode}
  2701.       \parindent \z@ \rightskip \@pnumwidth
  2702.       \parfillskip -\@pnumwidth
  2703. %    \end{macrocode}
  2704. %    Now we can set the entry, in a large bold font. We make sure to
  2705. %    leave vertical mode, set the part title and add the pagenumber,
  2706. %    set flush right.
  2707. %    \begin{macrocode}
  2708.       {\leavevmode
  2709.        \large \bfseries #1\hfil \hbox to\@pnumwidth{\hss #2}}\par
  2710. %    \end{macrocode}
  2711. %    Prevent a pagebreak immediately after this entry, but use
  2712. %    |\everypar| to reset the |\if@nobreak| switch. Finally we close
  2713. %    the group.
  2714. %    \begin{macrocode}
  2715.        \nobreak
  2716.          \global\@nobreaktrue
  2717.          \everypar{\global\@nobreakfalse\everypar{}}
  2718.       \endgroup}
  2719. %    \end{macrocode}
  2720. % \end{macro}
  2721. % \begin{macro}{\l@chapter}
  2722. %    This macro formats the entries in the table of contents for
  2723. %    chapters. It is very similar to |\l@part|
  2724. %    First we make sure that if a pagebreak should occur, it occurs
  2725. %    {\em before} this entry. Also a little whitespace is added and a
  2726. %    group begun to keep changes local.
  2727. %    \begin{macrocode}
  2728. %<*refman>
  2729. \newcommand\l@chapter[2]{%
  2730.     \addpenalty{-\@highpenalty}%
  2731.     \vskip 1.0em \@plus\p@
  2732. %    \end{macrocode}
  2733. %    The macro |\numberline| requires that the width of the box that
  2734. %    holds the part number is stored in \LaTeX's scratch register
  2735. %    |\@tempdima|. Therefore we put it there. We begin a group, and
  2736. %    change some of the paragraph parameters.
  2737. %    \begin{macrocode}
  2738.     \setlength\@tempdima{1.5em}%
  2739.     \begingroup
  2740.     \parindent \z@ \rightskip \@pnumwidth
  2741.     \parfillskip -\@pnumwidth
  2742. %    \end{macrocode}
  2743. %    Then we leave vertical mode and switch to a bold font.
  2744. %    \begin{macrocode}
  2745.     \leavevmode \bfseries
  2746. %    \end{macrocode}
  2747. %    Because we do not use |\numberline| here, we have do some fine
  2748. %    tuning `by hand', before we can set the entry. We discourage but
  2749. %    not disallow a pagebreak immediately after a chapter entry.
  2750. %    \begin{macrocode}
  2751.     \advance\leftskip\@tempdima
  2752.     \hskip -\leftskip
  2753.     #1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss #2}\par
  2754.     \penalty\@highpenalty
  2755.    \endgroup}
  2756. %</refman>
  2757. %    \end{macrocode}
  2758. % \end{macro}
  2759. % \begin{macro}{\l@section}
  2760. %    In the article document class the entry in the table of contents
  2761. %    for sections looks much like the chapter entries for the report
  2762. %    and book document classes.
  2763. %    First we make sure that if a pagebreak should occur, it occurs
  2764. %    {\em before} this entry. Also a little whitespace is added and a
  2765. %    group begun to keep changes local.
  2766. %    \begin{macrocode}
  2767. %<*refman-s>
  2768. \newcommand\l@section[2]{%
  2769.     \addpenalty{\@secpenalty}%
  2770.     \addvspace{1.0em \@plus\p@}%
  2771. %    \end{macrocode}
  2772. %    The macro |\numberline| requires that the width of the box that
  2773. %    holds the part number is stored in \LaTeX's scratch register
  2774. %    |\@tempdima|. Therefore we put it there. We begin a group, and
  2775. %    change some of the paragraph parameters.
  2776. %    \begin{macrocode}
  2777.     \setlength\@tempdima{1.5em}%
  2778.     \begingroup
  2779.     \parindent \z@ \rightskip \@pnumwidth
  2780.     \parfillskip -\@pnumwidth
  2781. %    \end{macrocode}
  2782. %    Then we leave vertical mode and switch to a bold font.
  2783. %    \begin{macrocode}
  2784.     \leavevmode \bfseries
  2785. %    \end{macrocode}
  2786. %    Because we do not use |\numberline| here, we have do some fine
  2787. %    tuning `by hand', before we can set the entry. We discourage but
  2788. %    not disallow a pagebreak immediately after a chapter entry.
  2789. %    \begin{macrocode}
  2790.     \advance\leftskip\@tempdima
  2791.     \hskip -\leftskip
  2792.     #1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss #2}\par
  2793.    \endgroup}
  2794. %</refman-s>
  2795. %    \end{macrocode}
  2796. %    In the report and book document classes the definition for
  2797. %    |\l@section| is much simpler.
  2798. %    \begin{macrocode}
  2799. %<*refman>
  2800. \newcommand\l@section      {\@dottedtocline{1}{1.5em}{2.3em}}
  2801. %</refman>
  2802. %    \end{macrocode}
  2803. % \end{macro}
  2804. % \begin{macro}{\l@subsection}
  2805. % \begin{macro}{\l@subsubsection}
  2806. % \begin{macro}{\l@paragraph}
  2807. % \begin{macro}{\l@subparagraph}
  2808. %    All lower level entries are defined using the macro
  2809. %    |\@dottedtocline| (see above).
  2810. %    \begin{macrocode}
  2811. %<*refman-s>
  2812. \newcommand\l@subsection   {\@dottedtocline{2}{1.5em}{2.3em}}
  2813. \newcommand\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
  2814. \newcommand\l@paragraph    {\@dottedtocline{4}{7.0em}{4.1em}}
  2815. \newcommand\l@subparagraph {\@dottedtocline{5}{10em}{5em}}
  2816. %</refman-s>
  2817. %<*refman>
  2818. \newcommand\l@subsection   {\@dottedtocline{2}{3.8em}{3.2em}}
  2819. \newcommand\l@subsubsection{\@dottedtocline{3}{7.0em}{4.1em}}
  2820. \newcommand\l@paragraph    {\@dottedtocline{4}{10em}{5em}}
  2821. \newcommand\l@subparagraph {\@dottedtocline{5}{12em}{6em}}
  2822. %</refman>
  2823. %    \end{macrocode}
  2824. % \end{macro}
  2825. % \end{macro}
  2826. % \end{macro}
  2827. % \end{macro}
  2828. % \subsubsection{List of figures}
  2829. % \begin{macro}{\listoffigures}
  2830. %    This macro is used to request that \LaTeX{} produces a list of
  2831. %    figures. It is very similar to |\tableofcontents|.
  2832. %    \begin{macrocode}
  2833. \newcommand\listoffigures{%
  2834. %<*refman>
  2835.     \if@twocolumn
  2836.       \@restonecoltrue\onecolumn
  2837.     \else
  2838.       \@restonecolfalse
  2839.     \fi
  2840.     \chapter*{\listfigurename
  2841. %</refman>
  2842. %<+refman-s>    \section*{\listfigurename
  2843.       \@mkboth{\listfigurename}%
  2844.               {listfigurename}}%
  2845.     \@starttoc{lof}%
  2846. %<+refman>    \if@restonecol\twocolumn\fi
  2847.     }
  2848. %    \end{macrocode}
  2849. % \end{macro}
  2850. % \begin{macro}{\l@figure}
  2851. %    This macro produces an entry in the list of figures.
  2852. %    \begin{macrocode}
  2853. \newcommand\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
  2854. %    \end{macrocode}
  2855. % \end{macro}
  2856. % \subsubsection{List of tables}
  2857. % \begin{macro}{\listoftables}
  2858. %    This macro is used to request that \LaTeX{} produces a list of
  2859. %    tables. It is very similar to |\tableofcontents|.
  2860. %    \begin{macrocode}
  2861. \newcommand\listoftables{%
  2862. %<*refman>
  2863.     \if@twocolumn
  2864.       \@restonecoltrue\onecolumn
  2865.     \else
  2866.       \@restonecolfalse
  2867.     \fi
  2868.     \chapter*{\listtablename
  2869. %</refman>
  2870. %<+refman-s>    \section*{\listtablename
  2871.       \@mkboth{\listtablename}{\listtablename}}%
  2872.     \@starttoc{lot}%
  2873. %<+refman>    \if@restonecol\twocolumn\fi
  2874.     }
  2875. %    \end{macrocode}
  2876. % \end{macro}
  2877. % \begin{macro}{\l@table}
  2878. %    This macro produces an entry in the list of tables.
  2879. %    \begin{macrocode}
  2880. \let\l@table\l@figure
  2881. %    \end{macrocode}
  2882. % \end{macro}
  2883. % \subsection{Bibliography}
  2884. % \begin{macro}{\bibindent}
  2885. %    The ``open'' bibliography format uses an indentation of
  2886. %    |\bibindent|.
  2887. %    \begin{macrocode}
  2888. \newdimen\bibindent
  2889. \bibindent=1.5em
  2890. %    \end{macrocode}
  2891. % \end{macro}
  2892. % \begin{macro}{\thebibliography}
  2893. % \begin{macro}{\newblock}
  2894. %    The `thebibliography' environment executes the following
  2895. %    commands:
  2896. %    |\renewcommand\newblock{\hskip .11em \@plus .33em \@minus .07em}|
  2897. %      -- Defines the ``closed'' format, where the blocks (major units
  2898. %      of information) of an entry run together.
  2899. %    |\sloppy|  -- Used because it's rather hard to do line breaks in
  2900. %      bibliographies,
  2901. %    |\sfcode`\.=1000\relax| --
  2902. %      Causes a `.' (period) not to produce an end-of-sentence space.
  2903. %    The implementation of this environment is based on the generic
  2904. %    list environment. It uses the \Lcount{enumiv} counter internally
  2905. %    to generate the labels of the list.
  2906. %    When an empty `thebibliography' environment is found, a warning
  2907. %    is issued.
  2908. %    \begin{macrocode}
  2909. \newcommand\newblock{}
  2910. \newenvironment{thebibliography}[1]
  2911. %<+refman-s>     {\section*{\refname
  2912. %<+refman-s>         \@mkboth{\refname}{\refname}}%
  2913. %<+refman>     {\chapter*{\bibname
  2914. %<+refman>         \@mkboth{\bibname}{\bibname}}%
  2915.       \list{\@biblabel{\arabic{enumiv}}}%
  2916.    {\settowidth\labelwidth{\@biblabel{#1}}%
  2917.             \leftmargin\labelwidth
  2918.             \advance\leftmargin\labelsep
  2919.             \if@openbib
  2920.               \advance\leftmargin\bibindent
  2921.               \itemindent -\bibindent
  2922.               \listparindent \itemindent
  2923.               \parsep \z@
  2924.             \fi
  2925.             \usecounter{enumiv}%
  2926.             \let\p@enumiv\@empty
  2927.             \renewcommand\theenumiv{\arabic{enumiv}}}%
  2928.       \if@openbib
  2929.         \renewcommand\newblock{\par}
  2930.       \else
  2931.         \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}%
  2932.       \fi
  2933.       \sloppy\clubpenalty4000\widowpenalty4000%
  2934.       \sfcode`\.=\@m}
  2935.      {\def\@noitemerr{\@warning{Empty `thebibliography' environment}}%
  2936.       \endlist}
  2937. %    \end{macrocode}
  2938. % \end{macro}
  2939. % \end{macro}
  2940. % \begin{macro}{\@biblabel}
  2941. %    The label for a |\bibitem[...]| command is produced by this
  2942. %    macro. The default from \file{latex.dtx} is used.
  2943. %    \begin{macrocode}
  2944. % \renewcommand\@biblabel[1]{[#1]\hfill}
  2945. %    \end{macrocode}
  2946. % \end{macro}
  2947. % \begin{macro}{\@cite}
  2948. %    The output of the |\cite| command is produced by this macro. The
  2949. %    default from \file{latex.dtx} is used.
  2950. %    \begin{macrocode}
  2951. % \renewcommand\@cite[1]{[#1]}
  2952. %    \end{macrocode}
  2953. % \end{macro}
  2954. %  \subsection{The index}
  2955. % \begin{macro}{\theindex}
  2956. %    The environment `theindex' can be used for indices. It makes an
  2957. %    index with two columns, with each entry a seperate paragraph. At
  2958. %    the user level the commands |\item|, |\subitem| and |\subsubitem|
  2959. %    are used to produce index entries of various levels. When a new
  2960. %    letter of the alphabet is encountered an amount of |\indexspace|
  2961. %    white space can be added.
  2962. %    \begin{macrocode}
  2963. \newenvironment{theindex}
  2964.                {\if@twocolumn
  2965.                   \@restonecolfalse
  2966.                 \else
  2967.                   \@restonecoltrue
  2968.                 \fi
  2969.                 \begin{fullpage}
  2970.                 \let\twocolumn\REF@twocolumn
  2971.                 \columnseprule \z@
  2972.                 \columnsep 35\p@
  2973. %<+refman-s>                \twocolumn[\section*{\indexname}]%
  2974. %<+refman>                \twocolumn[\@makeschapterhead{\indexname}]%
  2975.                 \@mkboth{\indexname}%
  2976.                         {\indexname}%
  2977.                 \thispagestyle{plain}\parindent\z@
  2978.                 \parskip\z@ \@plus .3\p@\relax
  2979.                 \let\item\@idxitem}
  2980. %    \end{macrocode}
  2981. %    When the document continues after the index and it was a one
  2982. %    column document we have to switch back to one column after the
  2983. %    index.
  2984. %    \begin{macrocode}
  2985.                {\end{fullpage}\if@restonecol\onecolumn\else\clearpage\fi}
  2986. %    \end{macrocode}
  2987. % \end{macro}
  2988. % \begin{macro}{\@idxitem}
  2989. % \begin{macro}{\subitem}
  2990. % \begin{macro}{\subsubitem}
  2991. %    Thsee macros are used to format the entries in the index. ^^AA ???
  2992. %    \begin{macrocode}
  2993. \newcommand\@idxitem  {\par\hangindent 40\p@}
  2994. \newcommand\subitem   {\par\hangindent 40\p@ \hspace*{20\p@}}
  2995. \newcommand\subsubitem{\par\hangindent 40\p@ \hspace*{30\p@}}
  2996. %    \end{macrocode}
  2997. % \end{macro}
  2998. % \end{macro}
  2999. % \end{macro}
  3000. % \begin{macro}{\indexspace}
  3001. %    The amount of white space that is inserted between `letter
  3002. %    blocks' in the index.
  3003. %    \begin{macrocode}
  3004. \newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
  3005. %    \end{macrocode}
  3006. % \end{macro}
  3007. % \subsection{Footnotes}
  3008. % \begin{macro}{\footnoterule}
  3009. %    Usually, footnotes are separated from the main body of the text
  3010. %    by a small rule. This rule is drawn by the macro |\footnoterule|.
  3011. %    We have to make sure that the rule takes no vertical space (see
  3012. %    \file{plain.tex}) so we compensate for the natural heigth of the
  3013. %    rule of 0.4pt by adding the right amount of vertical skip.
  3014. %    To prevent the rule from colliding with the footnote we first add
  3015. %    a little negative vertical skip, then we put the rule and make
  3016. %    sure we end up at the same point where we begun this operation.
  3017. %    \begin{macrocode}
  3018. \renewcommand\footnoterule{%
  3019.   \kern-3\p@
  3020.   \hrule width .4\columnwidth
  3021.   \kern 2.6\p@}
  3022. %    \end{macrocode}
  3023. % \end{macro}
  3024. % \begin{macro}{\c@footnote}
  3025. %    Footnotes are numbered within chapters in the report and book
  3026. %    document styles.
  3027. %    \begin{macrocode}
  3028. % \newcounter{footnote}
  3029. %<-refman-s>\@addtoreset{footnote}{chapter}
  3030. %    \end{macrocode}
  3031. % \end{macro}
  3032. % \begin{macro}{\@makefntext}
  3033. %    The footnote mechanism of \LaTeX{} calls the macro |\@makefntext|
  3034. %    to produce the actual footnote. The macro gets the text of the
  3035. %    footnote as its argument and should use |\@thefnmark| as the mark
  3036. %    of the footnote. The macro |\@makefntext|is called when
  3037. %    effectively inside a |\parbox| of width |\columnwidth| (i.e.,
  3038. %    with |\hsize| = |\columnwidth|).
  3039. %   An example of what can be achieved is given by the following piece
  3040. %   of \TeX\ code.
  3041. % \begin{verbatim}
  3042. %          \long\def\@makefntext#1{%
  3043. %             \@setpar{\@@par
  3044. %                      \@tempdima = \hsize
  3045. %                      \advance\@tempdima-10pt
  3046. %                      \parshape \@ne 10pt \@tempdima}%
  3047. %             \par
  3048. %             \parindent 1em\noindent
  3049. %             \hbox to \z@{\hss$\m@th^{\@thefnmark}$}#1}
  3050. % \end{verbatim}
  3051. %    The effect of this definition is that all lines of the footnote
  3052. %    are indented by 10pt, while the first line of a new paragraph is
  3053. %    indented by 1em. To change these dimensions, just substitute the
  3054. %    desired value for `10pt' (in both places) or `1em'.  The mark is
  3055. %    flushright against the footnote.
  3056. %    In these document classes we use a simpler macro, in which the
  3057. %    footnote text is set like an ordinary text paragraph, with no
  3058. %    indentation except on the first line of a paragraph, and the
  3059. %    first line of the footnote. Thus, all the macro must do is set
  3060. %    |\parindent| to the appropriate value for succeeding paragraphs
  3061. %    and put the proper indentation before the mark.
  3062. %    \begin{macrocode}
  3063. \long\def\@makefntext#1{%
  3064.     \@setpar{\@@par
  3065.             \@tempdima = \hsize
  3066.             \advance\@tempdima -1em
  3067.             \parshape \@ne 1em \@tempdima}%
  3068.     \par
  3069.     \parindent 1em \noindent
  3070.     \hbox to \z@{\hss$\m@th^{\@thefnmark}$}#1}
  3071. %    \end{macrocode}
  3072. % \end{macro}
  3073. % \begin{macro}{\@makefnmark}
  3074. %    The footnote markers that are printed in the text to point to the
  3075. %    footnotes should be produced by the macro |\@makefnmark|. We use
  3076. %    the default definition for it.
  3077. %    \begin{macrocode}
  3078. %\def\@makefnmark{\hbox{$^{\@thefnmark}\m@th$}}
  3079. %    \end{macrocode}
  3080. % \end{macro}
  3081. %  \section{New commands}
  3082. %    \begin{macro}{\@addmarginpar}
  3083. %   Redefine the |\@addmarginpar| command to only use the left
  3084. %   margin.
  3085. %    \begin{macrocode}
  3086. \def\@addmarginpar{\@next\@marbox\@currlist{\@cons\@freelist\@marbox
  3087.     \@cons\@freelist\@currbox}\@latexbug\@tempcnta\@ne
  3088.     \if@twocolumn
  3089.         \if@firstcolumn \@tempcnta\m@ne \fi
  3090.     \else
  3091.          \@tempcnta\m@ne
  3092.     \fi
  3093.     \ifnum\@tempcnta <\z@  \global\setbox\@marbox\box\@currbox \fi
  3094.     \@tempdima\@mparbottom
  3095.     \advance\@tempdima -\@pageht
  3096.     \advance\@tempdima\ht\@marbox
  3097.     \ifdim\@tempdima >\z@
  3098.       \@@warning{Marginpar on page \thepage\space moved}%
  3099.     \else
  3100.       \@tempdima\z@
  3101.     \fi
  3102.     \global\@mparbottom\@pageht
  3103.     \global\advance\@mparbottom\@tempdima
  3104.     \global\advance\@mparbottom\dp\@marbox
  3105.     \global\advance\@mparbottom\marginparpush
  3106.     \advance\@tempdima -\ht\@marbox
  3107.     \global\setbox \@marbox
  3108.                    \vbox {\vskip \@tempdima \box \@marbox}%
  3109.     \global \ht\@marbox \z@
  3110.     \global \dp\@marbox \z@
  3111.     \kern -\@pagedp
  3112.     \nointerlineskip
  3113.     \hbox to\columnwidth
  3114.       {\ifnum \@tempcnta >\z@
  3115.           \hskip\columnwidth \hskip\marginparsep
  3116.        \else
  3117.           \hskip -\marginparsep \hskip -\marginparwidth
  3118.        \fi
  3119.        \box\@marbox \hss}%
  3120.     \nointerlineskip
  3121.     \hbox{\vrule \@height\z@ \@width\z@ \@depth\@pagedp}}
  3122. %    \end{macrocode}
  3123. %   \end{macro}
  3124. %   \subsection{Margin commands}
  3125. %   \begin{macro}{\marginlable}
  3126. %   \begin{macro}{\attention}
  3127. %   \begin{macro}{\seealso}
  3128. %   This defines three commands to put information in the margin:
  3129. %   |\marginlabel| buts the argument into a flushright marginpar,
  3130. %   |\attention| puts !$\rightarrow$ to the left of the text to mark
  3131. %   an important piece of text and |\seealso| puts a $\rightarrow$ to
  3132. %   the left oft the margin to mark a reference within the text.
  3133. %    \begin{macrocode}
  3134. \def\marginlabel#1{\mbox{}\marginpar{\raggedleft #1}\ignorespaces}
  3135. \def\attention{\mbox{}\marginpar{\raggedleft \large\bfseries ! 
  3136.                $\rightarrow$}}
  3137. \def\seealso#1{\mbox{}\marginpar{\small $\rightarrow$ #1}\ignorespaces}
  3138. %    \end{macrocode} 
  3139. %   \end{macro}
  3140. %   \end{macro}
  3141. %   \end{macro}
  3142. %   \subsection{Rules}
  3143. %   \begin{macro}{\longrule}
  3144. %   \begin{macro}{\longthickrule}
  3145. %   These rules are used in several places, like the title, new
  3146. %   parts and chapters and for maxi and fullpages.
  3147. %    \begin{macrocode}
  3148. \def\longrule{\par\hbox to \linewidth{\hss
  3149.               \vrule width \fullwidth height 0.4pt depth 0pt}\par}
  3150. \def\longthickrule{\par\hbox to \linewidth{\hss
  3151.               \vrule width \fullwidth height 1.0pt depth 0pt}\par}
  3152. %    \end{macrocode}
  3153. %   \end{macro}
  3154. %   \end{macro}
  3155. %   \subsection{Pages}
  3156. %   \begin{macro}{\maxipage}
  3157. %   \begin{macro}{\fullpage}
  3158. %   The |\maxipage| is a minipage which uses the full width of
  3159. %   the page with optional rules on the top and bottom. A maxipage
  3160. %   can not split over pages. You can use it for wide tables, long
  3161. %   math equations and the like. It can be used in floats.
  3162. %   The |\fullpage| changes the page layout such that normal text
  3163. %   and all environments use the full width of the page. This will
  3164. %   be used in the index. (Not implemented yet!)
  3165. %    \begin{macrocode}
  3166. \newenvironment{maxipage}{\par
  3167.               \mbox{}\kern-\leftmarginwidth %\kern-\@totalleftmargin
  3168.               \begin{minipage}{\fullwidth}
  3169.                 \medskip \ifmaxipagerule \hrule\medskip \fi
  3170.                 \parskip = 0.5\baselineskip
  3171.                 \def\marginpar{%
  3172.                 \typeout{Marginpar not allowed within Maxipage}}}
  3173.               {\par \vskip\parskip
  3174.                  \medskip \ifmaxipagerule \hrule\medskip \fi
  3175.                \end{minipage}\par}
  3176. \newenvironment{fullpage}{\clearpage \leftmarginwidth\z@
  3177.               \textwidth=\fullwidth
  3178.               \oddsidemargin=\z@ \linewidth=\fullwidth
  3179.               \columnwidth=\fullwidth
  3180.               \def\marginpar{%
  3181.               \typeout{Marginpar not allowed within Fullpage}}}
  3182.               {\clearpage}
  3183. %    \end{macrocode}
  3184. %   \end{macro}
  3185. %   \end{macro}
  3186. %   \subsection{Miscellaneous}
  3187. %   \begin{macro}{\condbreak}
  3188. %   \begin{macro}{\noparskip}
  3189. %    The |\condbreak{length}| controls pagebreaks:
  3190. %    If less then length is left on this page it will be moved
  3191. %    to the next page. Thus it will remain together, either on
  3192. %    this page or on the next.
  3193. %    |\noparskip| removes the vertical parskip like |\noindent|
  3194. %    removes the parindent.
  3195. %    \begin{macrocode}
  3196. \def\condbreak#1{@vskip 0pt plus #1\pagebreak[3]\vskip 0pt plus -#1\relax}
  3197. \def\noparskip{\vskip-\parskip}
  3198. %    \end{macrocode}
  3199. %   \end{macro}
  3200. %   \end{macro}
  3201. %   \begin{macro}{\REF@twocolumn}
  3202. %   \begin{macro}{\twocolumn}
  3203. %     Since this layout does not support |\twocolumn| the
  3204. %     command is disabled but saved in |\REF@twocolumn|. The
  3205. %     saved version will be used in the index. This is still
  3206. %     experimental! Don't rely on it in future releases.
  3207. %    \begin{macrocode}
  3208. \let\REF@twocolumn\twocolumn
  3209. \def\twocolumn{\typeout{%
  3210.                `Twocolumn' may only be used in the index}}
  3211. %    \end{macrocode}
  3212. %   \end{macro}
  3213. %   \end{macro}
  3214. %   \subsection{Obsolete commands}
  3215. %   Well, these comands are not really obsolete, but they are not
  3216. %   implemented in this version and will not be implemented later
  3217. %   unless there is popular demand.
  3218. %   |\makeauthor|: The author is printed when |\maketitel| is
  3219. %   executed thus there is no need for this command.
  3220. %   |\setleftmarginwidth| has been used in version 1.1 to
  3221. %   change the horizontal layout. I would prefer to set the
  3222. %   |leftmarginfraction| instead but I'm still open to
  3223. %   suggestions from users.
  3224. %   \subsection{Future commands}
  3225. %   The following commands are not yet implemented but sound
  3226. %   like a good idea.
  3227. %   \begin{macro}{\pagebychapter}
  3228. %    This gives you a pagecount per chapter like 1-1, 1-2, 2-1.
  3229. %    Since this is often requested and would be usefull in a
  3230. %    reference manual style. It will be in version 2.0.
  3231. %     |begin{macrocode}|
  3232. %     |end{macrocode}|
  3233. %   \end{macro}
  3234. %   \begin{macro}{\leftmarginfraction}
  3235. %   This provides an interface to change the horizontal layout.
  3236. %   In this version the margin is set to 0.3 |fullwidth|, this
  3237. %   may change in future versions.
  3238. %   \end{macro}
  3239. % \section{Initialization}
  3240. % \subsection{Words}
  3241. % \begin{macro}{\contentsname}
  3242. % \begin{macro}{\listfigurename}
  3243. % \begin{macro}{\listtablename}
  3244. % \begin{macro}{\refname}
  3245. % \begin{macro}{\bibname}
  3246. % \begin{macro}{\indexname}
  3247. % \begin{macro}{\figurename}
  3248. % \begin{macro}{\tablename}
  3249. % \begin{macro}{\partname}
  3250. % \begin{macro}{\chaptername}
  3251. % \begin{macro}{\appendixname}
  3252. % \begin{macro}{\abstractname}
  3253. % This document class is for documents prepared in the English language.
  3254. % To prepare a version for another language, various English words must
  3255. % be replaced.  All the English words that require replacement are
  3256. % defined below in command names.
  3257. %    \begin{macrocode}
  3258. \newcommand\contentsname{Contents}
  3259. \newcommand\listfigurename{List of Figures}
  3260. \newcommand\listtablename{List of Tables}
  3261. %<+refman-s>\newcommand\refname{References}
  3262. %<+refman>\newcommand\bibname{Bibliography}
  3263. \newcommand\indexname{Index}
  3264. \newcommand\figurename{Figure}
  3265. \newcommand\tablename{Table}
  3266. \newcommand\partname{Part}
  3267. %<+refman>\newcommand\chaptername{Chapter}
  3268. \newcommand\appendixname{Appendix}
  3269. \newcommand\abstractname{Abstract}
  3270. %    \end{macrocode}
  3271. % \end{macro}
  3272. % \end{macro}
  3273. % \end{macro}
  3274. % \end{macro}
  3275. % \end{macro}
  3276. % \end{macro}
  3277. % \end{macro}
  3278. % \end{macro}
  3279. % \end{macro}
  3280. % \end{macro}
  3281. % \end{macro}
  3282. % \end{macro}
  3283. % \subsection{Date}
  3284. % \begin{macro}{\today}
  3285. %    This macro uses the \TeX\ primitives |\month|, |\day| and |\year|
  3286. %    to provide the date of the \LaTeX-run.
  3287. %    \begin{macrocode}
  3288. \newcommand\today{\ifcase\month\or
  3289.   January\or February\or March\or April\or May\or June\or
  3290.   July\or August\or September\or October\or November\or December\fi
  3291.   \space\number\day, \number\year}
  3292. %    \end{macrocode}
  3293. % \end{macro}
  3294. % \subsection{Two column mode}
  3295. % \begin{macro}{\columnsep}
  3296. %    This gives the distance between two columns in two column mode.
  3297. %    \begin{macrocode}
  3298. \setlength\columnsep{10\p@}
  3299. %    \end{macrocode}
  3300. % \end{macro}
  3301. % \begin{macro}{\columnseprule}
  3302. %    This gives the width of the rule between two columns in two
  3303. %    column mode. We have no visible rule.
  3304. %    \begin{macrocode}
  3305. \setlength\columnseprule{0\p@}
  3306. %    \end{macrocode}
  3307. % \end{macro}
  3308. % \subsection{The page style}
  3309. %    We have \pstyle{plain} pages in the document classes article and
  3310. %    report unless the user specified otherwise. In the `book'
  3311. %    document class we use the page style \pstyle{headings} by
  3312. %    default. We use arabic pagenumbers.
  3313. %    \begin{macrocode}
  3314. \pagestyle{plain}
  3315. \pagenumbering{arabic}      % Arabic page numbers
  3316. %    \end{macrocode}
  3317. % \subsection{Single or double sided printing}
  3318. %    When the \Lopt{twoside} option was specified, we don't try to
  3319. %    make each page as long as all the others.
  3320. %    \begin{macrocode}
  3321. \if@twoside
  3322. \else
  3323.   \raggedbottom
  3324. %    \end{macrocode}
  3325. %    When the \Lopt{twocolumn} option was specified we call
  3326. %    |\twocolumn| to activate this mode. We try to make each column as
  3327. %    long as the others, but call |sloppy| to make our life easier.
  3328. %    \begin{macrocode}
  3329. \if@twocolumn
  3330.   \twocolumn
  3331.   \sloppy
  3332.   \flushbottom
  3333. %    \end{macrocode}
  3334. %    Normally we call |\onecolumn| to initiate typesetting in one
  3335. %    column.
  3336. %    \begin{macrocode}
  3337. \else
  3338.   \onecolumn
  3339. %</refman-s|refman>
  3340. %    \end{macrocode}
  3341. % \section{The documentation driver file}
  3342. %    We have our own document class to format the \LaTeXe
  3343. %    documentation.
  3344. %    \begin{macrocode}
  3345. %<*driver>
  3346. \documentclass{ltxdoc}
  3347. %    \end{macrocode}
  3348. %    We don't want everything to appear in the index
  3349. %    \begin{macrocode}
  3350. \DoNotIndex{\',\.,\@M,\@@input,\@addtoreset,\@arabic,\@badmath}
  3351. \DoNotIndex{\@centercr,\@cite}
  3352. \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue}
  3353. \DoNotIndex{\@input,\@ixpt,\@m}
  3354. \DoNotIndex{\@minus,\@mkboth,\@ne,\@nil,\@nomath,\@plus,\@set@topoint}
  3355. \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb}
  3356. \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt}
  3357. \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt}
  3358. \DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace}
  3359. \DoNotIndex{\advance,\Alph,\alph}
  3360. \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box}
  3361. \DoNotIndex{\bullet}
  3362. \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption}
  3363. \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass}
  3364. \DoNotIndex{\DoNotIndex,\egroup,\else,\em,\endtrivlist}
  3365. \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup}
  3366. \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter}
  3367. \DoNotIndex{\fbox,\fi}
  3368. \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef}
  3369. \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule}
  3370. \DoNotIndex{\hsize,\hskip\hspace,\hss,\if@tempswa,\ifcase,\ifdim}
  3371. \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\input}
  3372. \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark}
  3373. \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright}
  3374. \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment,\newif}
  3375. \DoNotIndex{\NeedsTeXFormat,\newdimen}
  3376. \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number}
  3377. \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\or,\p@}
  3378. \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip}
  3379. \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions}
  3380. \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright}
  3381. \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font}
  3382. \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily,\roman}
  3383. \DoNotIndex{\roman,\secdef,\selectfont,\setbox,\setcounter,\setlength}
  3384. \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space}
  3385. \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase}
  3386. \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt}
  3387. \DoNotIndex{\viipt,\vipt,\vskip,\vspace}
  3388. \DoNotIndex{\wd,\xiipt,\year,\z@}
  3389. %    \end{macrocode}
  3390. %    We do want an index, using linenumbers
  3391. %    \begin{macrocode}
  3392. \EnableCrossrefs
  3393. %    \end{macrocode}
  3394. %    We use so many \file{docstrip} modules that we set the
  3395. %    \texttt{StandardModuleDepth} counter to 1.
  3396. %    \begin{macrocode}
  3397. \setcounter{StandardModuleDepth}{1}
  3398. %    \end{macrocode}
  3399. %    Some commonly used abbreviations
  3400. %    \begin{macrocode}
  3401. \newcommand\Lopt[1]{\textsf {#1}}
  3402. \newcommand\file[1]{\texttt {#1}}
  3403. \newcommand\Lcount[1]{\textsl {\small#1}}
  3404. \newcommand\pstyle[1]{\textsl {#1}}
  3405. %    \end{macrocode}
  3406. %    We also want the full details.
  3407. %    \begin{macrocode}
  3408. \begin{document}
  3409. \DocInput{refman.dtx}
  3410. \PrintIndex
  3411. % ^^A\PrintChanges
  3412. \end{document}
  3413. %</driver>
  3414. %    \end{macrocode}
  3415. % \Finale
  3416. \endinput
  3417.