home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 3 / Meeting_Pearls_III.iso / Pearls / texmf / inputs / misc / doc.sty < prev    next >
Text File  |  1994-05-20  |  29KB  |  742 lines

  1. %% 
  2. %% This is file `doc.sty', generated 
  3. %% on <1994/5/20> with the docstrip utility (2.0r).
  4. %% 
  5. %% The original source files were:
  6. %% 
  7. %% doc.doc  (with options: `style,multicol')
  8. %% 
  9. %% Copyright (C) 1989-1992 by Frank Mittelbach. All rights reserved. 
  10. %% 
  11. %% This file is part of the doc package. 
  12. %% 
  13. %% IMPORTANT NOTICE: 
  14. %% 
  15. %% You are not allowed to change this file. You may however copy 
  16. %% this file to a file with a different name and then change the 
  17. %% copy if you obey the restrictions on file changes described in 
  18. %% readme.mz. 
  19. %% 
  20. %% You are NOT ALLOWED to distribute this file alone. You are NOT 
  21. %% ALLOWED to take money for the distribution or use of this file 
  22. %% (or a changed version) except for a nominal charge for copying 
  23. %% etc. 
  24. %% 
  25. %% You are allowed to distribute this file under the condition that 
  26. %% it is distributed together with all files mentioned in 
  27. %% readme.mz0. 
  28. %% 
  29. %% If you receive only some of these files from someone, complain! 
  30. %% 
  31. %% However, if these files are distributed by established suppliers 
  32. %% as part of a complete TeX distribution, and the structure of the 
  33. %% distribution would make it difficult to distribute the whole set 
  34. %% of files, *those parties* are allowed to distribute only some of 
  35. %% the files provided that it is made clear that the user will get 
  36. %% a complete distribution-set upon request to that supplier (not 
  37. %% me). Notice that this permission is not granted to the end 
  38. %% user. 
  39. %% 
  40. %% 
  41. %% For error reports in case of UNCHANGED versions see readme.mz 
  42. %% 
  43. %% 
  44.  
  45. \def\fileversion{v1.7k}
  46. \def\filedate{92/08/24}
  47. \def\docdate {92/08/28}
  48.  
  49. %% \CharacterTable
  50. %%  {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
  51. %%   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
  52. %%   Digits        \0\1\2\3\4\5\6\7\8\9
  53. %%   Exclamation   \!     Double quote  \"     Hash (number) \#
  54. %%   Dollar        \$     Percent       \%     Ampersand     \&
  55. %%   Acute accent  \'     Left paren    \(     Right paren   \)
  56. %%   Asterisk      \*     Plus          \+     Comma         \,
  57. %%   Minus         \-     Point         \.     Solidus       \/
  58. %%   Colon         \:     Semicolon     \;     Less than     \<
  59. %%   Equals        \=     Greater than  \>     Question mark \?
  60. %%   Commercial at \@     Left bracket  \[     Backslash     \\
  61. %%   Right bracket \]     Circumflex    \^     Underscore    \_
  62. %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
  63. %%   Right brace   \}     Tilde         \~}
  64. %%
  65.  
  66. %% Copyright (C) 1989-1992 Frank Mittelbach, all rights reserved.
  67. %%% \CharacterTable
  68. %%%  {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
  69. %%%   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
  70. %%%   Digits        \0\1\2\3\4\5\6\7\8\9
  71. %%%   Exclamation   \!     Double quote  \"     Hash (number) \#
  72. %%%   Dollar        \$     Percent       \%     Ampersand     \&
  73. %%%   Acute accent  \'     Left paren    \(     Right paren   \)
  74. %%%   Asterisk      \*     Plus          \+     Comma         \,
  75. %%%   Minus         \-     Point         \.     Solidus       \/
  76. %%%   Colon         \:     Semicolon     \;     Less than     \<
  77. %%%   Equals        \=     Greater than  \>     Question mark \?
  78. %%%   Commercial at \@     Left bracket  \[     Backslash     \\
  79. %%%   Right bracket \]     Circumflex    \^     Underscore    \_
  80. %%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
  81. %%%   Right brace   \}     Tilde         \~}
  82. %%%
  83. \@ifundefined{macro@cnt}{}{\endinput} \typeout{Style-Option: `doc'
  84. \fileversion \@spaces\space\space <\filedate> (FMi)} \typeout{English
  85.    Documentation \@spaces\@spaces\space <\docdate> (DLo, FMi, RMCS)}
  86. \catcode`\^^A=14
  87. \def\macrocode{\macro@code
  88.    \frenchspacing \@vobeyspaces
  89.    \xmacro@code}
  90. \def\macro@code{%
  91.    \topsep \MacrocodeTopsep
  92.    \@beginparpenalty \predisplaypenalty
  93.    \trivlist \parskip \z@ \item[]%
  94.    \macro@font
  95.    \leftskip\@totalleftmargin \advance\leftskip\MacroIndent
  96.    \rightskip\z@ \parindent\z@ \parfillskip\@flushglue
  97.    \blank@linefalse \def\par{\ifblank@line
  98.                              \leavevmode\fi
  99.                              \blank@linetrue\@@par
  100.                              \penalty\interlinepenalty}
  101.    \obeylines \let\do\@makeother \catcode`\`\active \@noligs \dospecials
  102.    \global\@newlistfalse
  103.    \global\@minipagefalse
  104.    \ifcodeline@index
  105.      \everypar{\global\advance\c@CodelineNo\@ne
  106.                \llap{\theCodelineNo\ \hskip\@totalleftmargin}%
  107.                \check@module}%
  108.    \else \everypar{\check@module}%
  109.    \fi
  110.    \init@crossref}
  111. \newif\ifblank@line
  112. \def\endmacrocode{%
  113.                  \ifpm@module \endgroup \pm@modulefalse \fi
  114.                  \everypar{}%
  115.                  \global\@inlabelfalse
  116.                  \endtrivlist
  117.                  \close@crossref}
  118. \@ifundefined{MacroFont}{%
  119.   \ifx\undefined\selectfont
  120.     \def\MacroFont{\small\tt}\else
  121.     \def\MacroFont{\math@fontsfalse\reset@font\small\tt}\fi
  122.   }{}
  123. \@ifundefined{AltMacroFont}{%
  124.   \ifx\undefined\selectfont
  125.     \def\AltMacroFont{\small\tt}\else
  126.     \def\AltMacroFont{\math@fontsfalse\small\reset@font\it\tt}\fi
  127.   }{}
  128. \let\macro@font=\MacroFont
  129. \def\check@module{%
  130.   \ifcheck@modules
  131.     \ifpm@module \endgroup \pm@modulefalse \fi
  132.     \expandafter\futurelet\expandafter\next\expandafter\ch@percent
  133.   \fi}
  134. \newif\ifpm@module
  135. \def\DontCheckModules{\check@modulesfalse}
  136. \def\CheckModules{\check@modulestrue}
  137. \newif\ifcheck@modules  \check@modulestrue
  138. \def\ch@percent{%
  139.   \if \percentchar\next
  140.     \expandafter\check@angle
  141.   \fi}
  142. \def\check@angle#1{\futurelet\next\ch@angle}
  143. \def\ch@angle{\if<\next
  144.     \expandafter\ch@plus@etc
  145.   \else \percentchar \fi}
  146. \def\ch@plus@etc<{\futurelet\next\check@plus@etc}
  147. \def\check@plus@etc{%
  148.     \if +\next
  149.       \let\next\pm@module
  150.     \else\if -\next
  151.       \let\next\pm@module
  152.     \else\if *\next
  153.       \let\next\star@module
  154.     \else\if /\next
  155.       \let\next\slash@module
  156.     \else
  157.       \let\next\pm@module
  158.     \fi\fi\fi\fi
  159.     \next}
  160. \def\pm@module#1>{\pm@moduletrue
  161.    \Module{#1}\begingroup
  162.      \advance\guard@level\@ne
  163.      \ifnum\guard@level>\c@StandardModuleDepth\AltMacroFont\fi
  164. }
  165. \def\star@module#1>{%
  166.   \Module{#1}%
  167.   \global \advance \guard@level\@ne
  168.   \ifnum \guard@level>\c@StandardModuleDepth
  169.     \global\let\macro@font=\AltMacroFont \macro@font
  170.   \fi}
  171. \def\slash@module#1>{%
  172.   \Module{#1}%
  173.   \global \advance \guard@level\m@ne
  174.   \ifnum \guard@level=\c@StandardModuleDepth
  175.     \global\let\macro@font\MacroFont  \macro@font
  176.   \fi
  177. }
  178. \newcounter{StandardModuleDepth}
  179. \newcount \guard@level
  180. \@ifundefined{Module}{%
  181.   \ifx\undefined\selectfont
  182.     \def\Module#1{{\mod@math@codes$\fam\sffam\langle #1\rangle$}}
  183.   \else
  184.     \expandafter\ifx\csname ds@oldlfont\endcsname\relax
  185.       \def\Module#1{{\mod@math@codes$\langle\sfmath{#1}\rangle$}}
  186.     \else
  187.       \def\Module#1{{\mod@math@codes$\langle{\sfmath #1}\rangle$}}
  188.     \fi
  189.   \fi}{}
  190. \def\mod@math@codes{\mathcode`\|="226A \mathcode`\&="2026}
  191. \ifx\selectfont\undefined
  192. \else
  193.   \ifx\sfmath\undefined
  194.     \newmathalphabet*{\sfmath}{\sfdefault}{m}{n}\fi
  195. \fi
  196. \newskip\MacrocodeTopsep \MacrocodeTopsep = 3pt plus 1.2pt minus 1pt
  197. \newdimen\MacroIndent
  198. \settowidth\MacroIndent{\rm\scriptsize 00\ }
  199. \@namedef{macrocode*}{\macro@code\sxmacro@code}
  200. \expandafter\let\csname endmacrocode*\endcsname = \endmacrocode
  201. \catcode`\!=\catcode`\%   ^^A In this section there must not be
  202.                               ^^A any exclamation marks.
  203.                               ^^A
  204. \begingroup
  205. \catcode`\|=\z@ \catcode`\[=\@ne \catcode`\]=\tw@
  206. \catcode`\{=12 \catcode`\}=12
  207. \catcode`\%=12 \catcode`\ =\active \catcode`\\=\active
  208. !%    \end{macrocode*}
  209. !    Next follows the actual definition of  \verb+\macro@code+;
  210. !    notice the
  211. !    use of the new escape character.  We manage to get the argument
  212. !    surrounded by the string \verb+\end{macrocode}+, but at the end
  213. !    however, in spite of the actual characters used during the
  214. !    definition of
  215. !    this macro, \verb+\end+ with the argument \verb+{macrocode}+
  216. !    will be executed, to ensure a balanced environment.
  217. !    \begin{macrocode*}
  218. |gdef|xmacro@code#1%    \end{macrocode}[#1|end[macrocode]]
  219. !%    \end{macrocode*}
  220. ! \begin{macro}{\sxmacro@code}
  221. !    The definition of \verb+\sxmacro@code+ is completely analogous,
  222. !    only
  223. !    here a slightly different terminating string will be used.
  224. !    Note that the space is not active in this environment.
  225. !    \begin{macrocode}
  226. |catcode`| =12
  227. |gdef|sxmacro@code#1%    \end{macrocode*}[#1|end[macrocode*]]
  228. !%    \end{macrocode}
  229. !    because the \verb+\catcode+ changes have been made local by
  230. !    commencing a
  231. !    new group, there now follows the matching \verb+\endgroup+
  232. !    in a rather
  233. !    unusual style of writing.
  234. !    \begin{macrocode}
  235. |endgroup
  236. !%    \end{macrocode}
  237. \catcode`\!=12
  238. \def\DescribeMacro{\leavevmode\@bsphack
  239.    \begingroup\MakePrivateLetters\Describe@Macro}
  240. \def\Describe@Macro#1{\endgroup
  241.               \marginpar{\raggedleft\PrintDescribeMacro{#1}}%
  242.               \SpecialUsageIndex{#1}\@esphack\ignorespaces}
  243. \def\DescribeEnv{\leavevmode\@bsphack\begingroup\MakePrivateLetters
  244.   \Describe@Env}
  245. \def\Describe@Env#1{\endgroup
  246.               \marginpar{\raggedleft\PrintDescribeEnv{#1}}%
  247.               \SpecialEnvIndex{#1}\@esphack\ignorespaces}
  248. \reversemarginpar
  249. \setlength\marginparpush{0pt}  \setlength\marginparwidth{8pc}
  250. {\catcode`\|=\z@ \catcode`\\=12
  251. |gdef|bslash{\}}
  252. \def\verbatim{\@beginparpenalty \predisplaypenalty \@verbatim
  253.               \MacroFont \frenchspacing \@vobeyspaces \@xverbatim}
  254. \@namedef{verbatim*}{\@beginparpenalty \predisplaypenalty \@verbatim
  255.               \MacroFont \@sxverbatim}
  256. \def\@verbatim{\trivlist \item[]\if@minipage\else\vskip\parskip\fi
  257.       \leftskip\@totalleftmargin\rightskip\z@
  258.       \parindent\z@\parfillskip\@flushglue\parskip\z@
  259.       \@@par
  260.       \@tempswafalse
  261.  \def\par{\if@tempswa\hbox{}\fi\@tempswatrue\@@par
  262.           \penalty\interlinepenalty
  263.    \check@percent}%
  264.  \obeylines \catcode`\`\active \@noligs \let\do\@makeother
  265.  \dospecials}
  266. {\catcode`\%=12
  267.  \long\gdef\check@percent#1{\ifx #1%\let\next\@empty \else
  268.                                     \let\next=#1\fi \next}}
  269. \begingroup
  270.   \lccode`\~=`\^^M
  271.   \lowercase{%
  272.     \gdef\verb{\relax
  273.       \ifmmode \hbox \else \leavevmode\null \fi
  274.       \bgroup
  275.       \tt   \catcode`\`\active \@noligs
  276.       \let~\verb@err
  277.       \catcode`\^^M\active
  278.       \let\do\@makeother \dospecials
  279.       \@ifstar\@sverb{\@vobeyspaces \frenchspacing \@sverb}}}
  280. \endgroup
  281. \def\verb@err{\egroup\@latexerr{\string\verb\space
  282.                command ended by end of line.}\@ehc}
  283. \def\@sverb#1{%
  284.   \catcode`#1\active  \lccode`\~`#1%
  285.   \lowercase{\let~\egroup}}
  286. \newcount\macro@cnt \macro@cnt=0
  287. \newcount\macro@level \macro@level=0
  288. \def\macro{%
  289.    \ifnum\macro@level=\z@ \begingroup \fi
  290.    \catcode`\\12
  291.    \MakePrivateLetters \m@cro@}
  292. \long\def\m@cro@#1{\endgroup \topsep\MacroTopsep \trivlist
  293.    \advance\macro@level\@ne
  294.    \edef\saved@macroname{\string#1}%
  295.   \def\makelabel##1{\llap{##1}}%
  296.   \if@inlabel
  297.     \let\@tempa\@empty \count@\macro@cnt
  298.     \loop \ifnum\count@>\z@
  299.       \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne \repeat
  300.     \edef\makelabel##1{\llap{\vtop to\baselineskip
  301.                                {\@tempa\hbox{##1}\vss}}}%
  302.     \advance \macro@cnt \@ne
  303.   \else  \macro@cnt\@ne  \fi
  304.   \edef\@tempa{\noexpand\item[\noexpand\PrintMacroName{\string#1}]}%
  305.   \@tempa
  306.   {\advance\c@CodelineNo\@ne\SpecialMainIndex{#1}\nobreak}%
  307.   \DoNotIndex{#1}%
  308.   \ignorespaces}
  309. \def\endmacro{%
  310.    \endtrivlist
  311.    \ifnum\macro@level>\@ne \advance\macro@level\m@ne \begingroup \fi}
  312. \newskip\MacroTopsep     \MacroTopsep = 7pt plus 2pt minus 2pt
  313. \@ifundefined{PrintMacroName}
  314.    {\def\PrintMacroName#1{\strut \MacroFont \string #1\ }}{}
  315. \@ifundefined{PrintDescribeMacro}
  316.    {\def\PrintDescribeMacro#1{\strut \MacroFont \string #1\ }}{}
  317. \@ifundefined{PrintDescribeEnv}
  318.    {\def\PrintDescribeEnv#1{\strut \MacroFont #1\ }}{}
  319. \begingroup
  320. \catcode`\~\active
  321. \gdef\SpecialEscapechar#1{%
  322.     \begingroup
  323.      \uccode`\~`#1%
  324.      \uppercase{\gdef\active@escape@char{~}}%
  325.      \escapechar\m@ne  \xdef\special@escape@char{\string#1}%
  326.    \endgroup}
  327. \endgroup
  328. \begingroup   \catcode`\|=\z@  \catcode`\\=\active
  329. |gdef|init@crossref{|catcode`|\|active   |let\|bslash
  330.     |MakePrivateLetters
  331.     |catcode|expandafter`|special@escape@char|active
  332.     |expandafter|let|active@escape@char|scan@macro}
  333. |endgroup
  334. \SpecialEscapechar{\\}
  335. \@ifundefined{MakePrivateLetters}
  336.     {\let\MakePrivateLetters\makeatletter}{}
  337. \def\close@crossref{\SpecialEscapechar\\}
  338. \def\scan@macro{%
  339.    \special@escape@char
  340.    \step@checksum
  341.    \ifscan@allowed
  342.       \let\macro@namepart\@empty
  343.       \def\next{\futurelet\next\macro@switch}%
  344.    \else \let\next\@empty \fi
  345.    \next}
  346. \newif\ifscan@allowed    \scan@allowedtrue
  347. \def\DisableCrossrefs{\@bsphack\scan@allowedfalse\@esphack}
  348. \def\EnableCrossrefs{\@bsphack\scan@allowedtrue
  349.                      \def\DisableCrossrefs{\@bsphack\@esphack}\@esphack}
  350. \def\macro@switch{\ifcat\noexpand\next a%
  351.      \let\next\macro@name
  352.      \else \let\next\short@macro  \fi
  353.    \next}
  354. \def\short@macro#1{\begingroup
  355.    \catcode`\&=11  \uccode`\&=\expandafter`\string#1%
  356.    \uppercase{\def\macro@namepart{&}}%
  357.    \endgroup
  358.    \ifnot@excluded
  359.      \produce@index{#1}\fi
  360.     \scan@allowedfalse#1%
  361.     \scan@allowedtrue }
  362. \def\produce@index#1{%
  363.   \if\noexpand#1\special@escape@char
  364.      \scan@allowedfalse \it@is@a\special@escape@char \else
  365.      \if\noexpand#1\bslash \it@is@a\bslash \else
  366.        \if\noexpand#1\space \it@is@a\space \else
  367.          \ifx#1\par
  368.          \it@is@a\space \else
  369.          \ifx#1\relax \else
  370.            \if\noexpand#1\bgroup \LeftBraceIndex \else
  371.              \if\noexpand#1\egroup \RightBraceIndex \else
  372.                \if\noexpand#1\percentchar \PercentIndex \else
  373.                  \it@is@a{\string#1}%
  374.        \fi \fi \fi \fi \fi \fi \fi \fi}
  375. \def\macro@name#1{\edef\macro@namepart{\macro@namepart#1}%
  376.      \futurelet\next\more@macroname}
  377. \def\more@macroname{\ifcat\noexpand\next a%
  378.      \let\next\macro@name
  379.      \else \let\next\macro@finish \fi
  380.      \next}
  381. \def\macro@finish{%
  382.   \macro@namepart
  383.   \ifnot@excluded
  384.      \edef\@tempa{\noexpand\SpecialIndex{\bslash\macro@namepart}}%
  385.      \@tempa  \fi}
  386. \def\DoNotIndex{\begingroup \MakePrivateLetters
  387.     \catcode`\\12
  388.     \do@not@index}
  389. \long\def\do@not@index#1{%
  390.     \endgroup
  391.     \addto@hook\index@excludelist{#1,}}
  392. \long\def\addto@hook#1#2{#1\expandafter{\the#1#2}}
  393. \newtoks\index@excludelist
  394. \index@excludelist{}
  395. \begingroup
  396. \catcode`\|=0%
  397. \catcode`\\=12
  398. |gdef|ifnot@excluded{|expandafter
  399.      |expanded@notin|expandafter{|expandafter
  400.      \|macro@namepart,}{|the|index@excludelist}}
  401. |endgroup
  402. \def\expanded@notin#1#2{%
  403.  \def\in@@##1#1##2##3\in@@{%
  404.   \ifx\expanded@notin##2}%
  405.  \expandafter\in@@#2#1\expanded@notin\in@@}
  406. \@ifundefined{actualchar}{\def\actualchar{=}}{}
  407. \@ifundefined{quotechar}{\def\quotechar{!}}{}
  408. \@ifundefined{levelchar}{\def\levelchar{>}}{}
  409. \@ifundefined{encapchar}{\def\encapchar{|}}{}
  410. \@ifundefined{verbatimchar}{\def\verbatimchar{+}}{}
  411. \def\SpecialIndex#1{\@bsphack\special@index{\expandafter\@gobble
  412.                                       \string#1\actualchar
  413.       \string\verb\quotechar*\verbatimchar\string#1\verbatimchar}%
  414.     \@esphack}
  415.  
  416. \def\SpecialMainIndex#1{\@bsphack\special@index{\expandafter\@gobble
  417.                                         \string#1\actualchar
  418.                                         \string\verb
  419.                                         \quotechar*\verbatimchar
  420.                                         \string#1\verbatimchar
  421.                                         \encapchar main}%
  422.                         \@esphack}
  423. \def\SpecialUsageIndex#1{\@bsphack\index{\expandafter\@gobble\string#1%
  424.     \actualchar\string\verb\quotechar*\verbatimchar
  425.     \string#1\verbatimchar
  426.     \encapchar usage}\@esphack}
  427. \def\SpecialEnvIndex#1{\@bsphack
  428.     \index{#1\actualchar{\tt #1} (environment)\encapchar usage}%
  429.     \index{environments:\levelchar{\tt #1}\encapchar usage}\@esphack}
  430. \def\SortIndex#1#2{\index{#1\actualchar#2}}
  431. \def\it@is@a#1{\special@index{\quotechar #1\actualchar
  432.                           \string\verb\quotechar*\verbatimchar
  433.                           \quotechar\bslash\quotechar#1\verbatimchar}}
  434. \@ifundefined{LeftBraceIndex}{\def\LeftBraceIndex{%
  435.    \special@index{\bgroup\actualchar\string\verb\quotechar*\verbatimchar
  436.           \quotechar\bslash{\verbatimchar\string\iffalse}\string\fi}}}{}
  437.  
  438. \@ifundefined{RightBraceIndex}{\def\RightBraceIndex{%
  439.  \special@index{\egroup\actualchar\string\iffalse{\string\fi\string\verb
  440.            \quotechar*\verbatimchar\quotechar\bslash}\verbatimchar}}}{}
  441. \@ifundefined{PercentIndex}
  442.   {\def\PercentIndex{\it@is@a\percentchar}}{}
  443. \def\OldMakeindex{\def\PercentIndex{%
  444.     \special@index{\quotechar\percentchar\actualchar\string\verb
  445.            \quotechar*\verbatimchar\quotechar\bslash
  446.            \percentchar\percentchar\verbatimchar}}}
  447. {\catcode`\%=12 \gdef\percentchar{%}}
  448. \newif\ifhave@multicol
  449. \openin\@ne multicol.sty
  450. \ifeof\@ne \else \have@multicoltrue \fi
  451. \closein\@ne \relax
  452. \have@multicoltrue
  453. \ifhave@multicol \input{multicol.sty} \fi
  454. \newdimen\IndexMin         \IndexMin       = 80pt
  455. \newcount\c@IndexColumns   \c@IndexColumns = 3
  456. \ifhave@multicol
  457.   \renewenvironment{theindex}
  458.     {\begin{multicols}\c@IndexColumns[\index@prologue][\IndexMin]%
  459.       \IndexParms \let\item\@idxitem \ignorespaces}%
  460.     {\end{multicols}}
  461. \else
  462.   \typeout{Can't find multicols.sty -- will use normal index layout if
  463.      necessary.}
  464.   \def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
  465.     \columnseprule \z@  \columnsep 35\p@
  466.     \twocolumn[\index@prologue]%
  467.     \IndexParms \let\item\@idxitem \ignorespaces}
  468.   \def\endtheindex{\if@restonecol\onecolumn\else\clearpage\fi}
  469. \fi
  470. \long\def\IndexPrologue#1{\@bsphack\def\index@prologue{#1}\@esphack}
  471. \@ifundefined{index@prologue}
  472.      {\def\index@prologue{\section*{Index}%
  473.                  \markboth{Index}{Index}%
  474.                  The italic numbers denote the pages where the
  475.                  corresponding entry is described,
  476.                  numbers underlined point to the definition,
  477.                  all others indicate the places where it is used.
  478.                  }}{}
  479. \@ifundefined{IndexParms}
  480.     {\def\IndexParms{%
  481.        \parindent \z@
  482.        \columnsep 15pt
  483.        \parskip 0pt plus 1pt
  484.        \rightskip 15pt
  485.        \mathsurround \z@
  486.        \parfillskip=-15pt
  487.         \small
  488.        \def\@idxitem{\par\hangindent 30pt}%
  489.        \def\subitem{\@idxitem\hspace*{15pt}}%
  490.        \def\subsubitem{\@idxitem\hspace*{25pt}}%
  491.        \def\indexspace{\par\vspace{10pt plus 2pt minus 3pt}}%
  492.       }}{}
  493. \def\efill{\hfill\nopagebreak}%
  494. \def\dotfill{\leaders\hbox to.6em{\hss .\hss}\hskip\z@ plus  1fill}%
  495. \def\dotfil{\leaders\hbox to.6em{\hss .\hss}\hfil}%
  496. \def\pfill{\unskip~\dotfill\penalty500\strut\nobreak
  497.                \dotfil~\ignorespaces}%
  498. \def\*{\leavevmode\lower.8ex\hbox{$\,\widetilde{\ }\,$}}
  499. \@ifundefined{main}{\def\main#1{\underline{#1}}}{}
  500. \@ifundefined{usage}{\def\usage#1{{\it #1}}}{}
  501. \def\PrintIndex{\@input{\jobname.ind}}
  502. \def\printindex{\typeout{\string\printindex\space is obsolete!}%
  503.                 \typeout{Please use \string\PrintIndex\space
  504.                          if you are a macro implementor^^J
  505.                          or get a newer version of the documented
  506.                          software if you are a user}%
  507.                 \PrintIndex}
  508. \def\changes{\@bsphack\begingroup\@sanitize
  509.    \catcode`\\\z@ \catcode`\ 10 \MakePercentIgnore
  510.    \changes@}
  511. \def\changes@#1#2#3{%
  512.   \def\protect##1{\string##1\space}%
  513.   \edef\@tempa{\noexpand\glossary{#1\levelchar
  514.                                  \expandafter\@gobble
  515.                                  \saved@macroname\actualchar
  516.                                  \string\verb\quotechar*%
  517.                                  \verbatimchar\saved@macroname
  518.                                  \verbatimchar:\levelchar #3}}%
  519.   \@tempa\endgroup\@esphack}
  520. \def\saved@macroname{"General"}
  521. \let\RecordChanges\makeglossary
  522. \newdimen\GlossaryMin         \GlossaryMin       = 80pt
  523. \newcount\c@GlossaryColumns   \c@GlossaryColumns = 2
  524. \ifhave@multicol
  525.   \newenvironment{theglossary}{%
  526.     \begin{multicols}\c@GlossaryColumns
  527.                      [\glossary@prologue][\GlossaryMin]%
  528.     \GlossaryParms \let\item\@idxitem \ignorespaces}%
  529.    {\end{multicols}}
  530. \else
  531.   \newenvironment{theglossary}{%
  532.       \@restonecoltrue\if@twocolumn\@restonecolfalse\fi
  533.       \columnseprule \z@  \columnsep 35\p@
  534.       \twocolumn[\glossary@prologue]%
  535.       \GlossaryParms \let\item\@idxitem \ignorespaces}
  536.     {\if@restonecol\onecolumn\else\clearpage\fi}
  537. \fi
  538. \long\def\GlossaryPrologue#1{\@bsphack
  539.                              \def\glossary@prologue{#1}%
  540.                              \@esphack}
  541. \@ifundefined{glossary@prologue}
  542.      {\def\glossary@prologue{\section*{{Change History}}%
  543.                  \markboth{{Change History}}{{Change History}}%
  544.                  }}{}
  545. \@ifundefined{GlossaryParms}{\let\GlossaryParms\IndexParms}{}
  546. \def\PrintChanges{\@input{\jobname.gls}}
  547. \long\def\StopEventually#1{\@bsphack\gdef\Finale{#1%
  548.               \check@checksum}%
  549.            \init@checksum
  550.            \@esphack}
  551. \def\OnlyDescription{\@bsphack\long\def\StopEventually##1{%
  552.            ##1\endinput}\@esphack}
  553. \begingroup
  554. \obeyspaces%
  555. \catcode`\^^M\active%
  556. \gdef\meta{\begingroup\obeyspaces\catcode`\^^M\active%
  557. \let^^M\do@space\let \do@space%
  558. \def\-{\egroup\discretionary{-}{}{}\hbox\bgroup\it}%
  559. \m@ta}%
  560. \endgroup
  561. \def\m@ta#1{\leavevmode\hbox\bgroup$\langle$\it#1\/$\rangle$\egroup
  562.     \endgroup}
  563. \def\do@space{\egroup\space
  564.     \hbox\bgroup\it\futurelet\next\sp@ce}
  565. \def\sp@ce{\ifx\next\do@space\expandafter\sp@@ce\fi}
  566. \def\sp@@ce#1{\futurelet\next\sp@ce}
  567. \def\IndexInput#1{%
  568.      \begingroup \macro@code
  569.    \frenchspacing \@vobeyspaces
  570.      \input{#1}\endmacrocode
  571.      \endgroup}
  572. \def\maketitle{\par
  573.       \begingroup \def \thefootnote {\fnsymbol {footnote}}%
  574.       \setcounter {footnote}\z@
  575.       \def \@makefnmark {\hbox to \z@{$^{\@thefnmark }$\hss }}%
  576.       \if@twocolumn \twocolumn [\@maketitle ]%
  577.       \else \newpage \global \@topnum \z@ \@maketitle \fi
  578.        \thispagestyle{titlepage}\@thanks \endgroup
  579.       \setcounter {footnote}\z@
  580.       \gdef\@date{\today}\gdef\@thanks{}%
  581.       \gdef\@author{}\gdef\@title{}}
  582. \@ifundefined{ps@titlepage}
  583.     {\let\ps@titlepage=\ps@plain}{}
  584. \def\MakeShortVerb#1{%
  585.   \typeout{*** Made \expandafter\@gobble\string#1\space a short
  586.            reference for \string\verb \on@line\space ***}%
  587.   \add@special{#1}%
  588.   \expandafter
  589.   \xdef\csname cc\string#1\endcsname{\the\catcode`#1}%
  590.   \begingroup
  591.     \catcode`\~\active  \lccode`\~`#1%
  592.     \lowercase{%
  593.     \global\expandafter\let
  594.        \csname ac\string#1\endcsname~%
  595.     \gdef~{\verb~}}%
  596.   \endgroup
  597.   \global\catcode`#1\active}
  598. \def\DeleteShortVerb#1{%
  599.   \expandafter\ifx\csname cc\string#1\endcsname\relax
  600.   \else
  601.     \typeout{*** Deleted \expandafter\@gobble\string#1\space as short
  602.              reference for \string\verb \on@line\space ***}%
  603.     \rem@special{#1}%
  604.     \global\catcode`#1\csname cc\string#1\endcsname
  605.     \ifnum\catcode`#1=\active
  606.       \begingroup
  607.         \catcode`\~\active   \lccode`\~`#1%
  608.         \lowercase{%
  609.           \global\expandafter\let\expandafter~%
  610.           \csname ac\string#1\endcsname}%
  611.       \endgroup \fi \fi}
  612. \def\add@special#1{%
  613.   \rem@special{#1}%
  614.   \expandafter\gdef\expandafter\dospecials\expandafter
  615.     {\dospecials \do #1}%
  616.   \expandafter\gdef\expandafter\@sanitize\expandafter
  617.     {\@sanitize \@makeother #1}}
  618. \def\rem@special#1{%
  619.   \def\do##1{%
  620.     \ifnum`#1=`##1 \else \noexpand\do\noexpand##1\fi}%
  621.   \xdef\dospecials{\dospecials}%
  622.   \begingroup
  623.     \def\@makeother##1{%
  624.       \ifnum`#1=`##1 \else \noexpand\@makeother\noexpand##1\fi}%
  625.     \xdef\@sanitize{\@sanitize}%
  626.   \endgroup}
  627. \def\MakeShortverb{\typeout{*** Switch to \noexpand\MakeShortVerb
  628.                          syntax, this is obsolete ***}\MakeShortVerb}
  629. \def\DeleteShortverb{\typeout{*** Switch to \noexpand\DeleteShortVerb
  630.                          syntax, this is obsolete ***}\DeleteShortVerb}
  631. \def\init@checksum{\relax
  632.     \global\bslash@cnt\z@}
  633. \def\check@checksum{\relax
  634.      \ifnum\check@sum=\z@
  635.        \typeout{**********************************}%
  636.        \typeout{* This macro file has no checksum!}%
  637.        \typeout{* The checksum should be \the\bslash@cnt!}%
  638.        \typeout{**********************************}%
  639.      \else
  640.        \ifnum\check@sum=\bslash@cnt
  641.          \typeout{*******************}%
  642.          \typeout{* Checksum passed *}%
  643.          \typeout{*******************}%
  644.        \else
  645.          \errhelp\wrong@checksum
  646.          \errmessage{Checksum not passed
  647.                     (\the\check@sum<>\the\bslash@cnt)}%
  648.         \fi
  649.      \fi
  650.      \global\check@sum\z@}
  651. \newcount\check@sum           \check@sum  = \z@
  652. \newcount\bslash@cnt          \bslash@cnt = \z@
  653. \newhelp\wrong@checksum
  654.    {The currently documented file seems to be wrong.^^J%
  655.     Try to get a correct version.}%
  656. \def\CheckSum#1{\@bsphack\global\check@sum#1\relax\@esphack}
  657. \def\step@checksum{\global\advance\bslash@cnt\@ne}
  658. \def\CharacterTable{\begingroup \CharTableChanges \character@table}
  659. \begingroup
  660.   \catcode`\~=11
  661.   \gdef\character@table#1{\def\used~table{#1}%
  662.       \ifx\used~table\default~table
  663.            \typeout{***************************}%
  664.            \typeout{* Character table correct *}%
  665.            \typeout{***************************}%
  666.       \else
  667.          \errhelp\wrong@table
  668.          \errmessage{Character table corrupted}%
  669.          \show\default~table
  670.          \show\used~table
  671.       \fi
  672.       \endgroup}
  673.   \global\let\CharTableChanges\@empty
  674.   \makeatother
  675.   \gdef\default~table
  676.      {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
  677.       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
  678.       Digits        \0\1\2\3\4\5\6\7\8\9
  679.       Exclamation   \!     Double quote  \"     Hash (number) \#
  680.       Dollar        \$     Percent       \%     Ampersand     \&
  681.       Acute accent  \'     Left paren    \(     Right paren   \)
  682.       Asterisk      \*     Plus          \+     Comma         \,
  683.       Minus         \-     Point         \.     Solidus       \/
  684.       Colon         \:     Semicolon     \;     Less than     \<
  685.       Equals        \=     Greater than  \>     Question mark \?
  686.       Commercial at \@     Left bracket  \[     Backslash     \\
  687.       Right bracket \]     Circumflex    \^     Underscore    \_
  688.       Grave accent  \`     Left brace    \{     Vertical bar  \|
  689.       Right brace   \}     Tilde         \~}
  690. \endgroup
  691.   \newhelp\wrong@table{Some of the ASCII characters are corrupted.^^J
  692.             I now \string\show\space you both tables for comparison.}
  693. \newif\ifcodeline@index \codeline@indexfalse
  694. \def\codeline@wrindex#1{\if@filesw
  695.         \immediate\write\@indexfile
  696.             {\string\indexentry{#1}%
  697.             {\number\c@CodelineNo}}\fi}
  698. \let\special@index = \@gobble
  699. \def\CodelineIndex{\makeindex
  700.                    \codeline@indextrue
  701.                    \let\special@index\codeline@wrindex}
  702. \def\PageIndex{\makeindex
  703.                \codeline@indexfalse
  704.                \let\special@index\index}
  705. \newcount\c@CodelineNo  \c@CodelineNo\z@
  706. \@ifundefined{theCodelineNo}
  707.   {\ifx\selectfont\undefined
  708.      \def\theCodelineNo{\rm\scriptsize\arabic{CodelineNo}}%
  709.    \else
  710.      \def\theCodelineNo{\reset@font\scriptsize\arabic{CodelineNo}}%
  711.    \fi}
  712.   {}
  713.        \tolerance=1000\relax
  714. { \catcode`\"=12
  715.   \global\mathcode`\\="705C \global\mathcode`\@="7040 }
  716. \@ifundefined{DocstyleParms}{}{}
  717. \DocstyleParms     \let\DocstyleParms\relax
  718. \@ifundefined{AmSTeX}
  719.    {\def\AmSTeX{\leavevmode\hbox{$\cal A\kern-.2em\lower.376ex%
  720.         \hbox{$\cal M$}\kern-.2em\cal S$-\TeX}}}{}
  721. \@ifundefined{BibTeX}
  722.    {\def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em%
  723.     T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}}{}
  724. \@ifundefined{SliTeX}
  725.    {\def\SliTeX{{\rm S\kern-.06emL\kern-.18em\raise.32ex\hbox
  726.                 {\sc i}\kern -.03em\TeX}}}{}
  727. \@ifundefined{PlainTeX}{\def\PlainTeX{{\sc Plain}\kern2pt\TeX}}{}
  728. \@ifundefined{Web}{\def\Web{{\sc Web}}}{}
  729. \def\MakePercentIgnore{\catcode`\%9\relax}
  730. \def\MakePercentComment{\catcode`\%14\relax}
  731. \def\DocInput#1{\MakePercentIgnore\input{#1}\MakePercentComment}
  732. \ifx\on@line\undefined
  733.   \def\on@line{ on input line \the\inputlineno}
  734.   \errhelp{Support for input line numbers has been added
  735.            to latex.tex <dec91>.^^J^^J%
  736.            Please update to a newer LaTeX release.}
  737.   \errmessage{Obsolete LaTeX release (older than Dec.91)}
  738. \fi
  739. \endinput
  740. %% 
  741. %% End of file `doc.sty'.
  742.