You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
837 lines
30 KiB
837 lines
30 KiB
%%
|
|
%% This is file `doc.sty',
|
|
%% generated with the docstrip utility.
|
|
%%
|
|
%% The original source files were:
|
|
%%
|
|
%% doc.dtx (with options: `package')
|
|
%%
|
|
%% This is a generated file.
|
|
%%
|
|
%% The source is maintained by the LaTeX Project team and bug
|
|
%% reports for it can be opened at https://latex-project.org/bugs.html
|
|
%% (but please observe conditions on bug reports sent to that address!)
|
|
%%
|
|
%%
|
|
%% Copyright (C) 1993-2020
|
|
%% The LaTeX3 Project and any individual authors listed elsewhere
|
|
%% in this file.
|
|
%%
|
|
%% This file was generated from file(s) of the LaTeX base system.
|
|
%% --------------------------------------------------------------
|
|
%%
|
|
%% It may be distributed and/or modified under the
|
|
%% conditions of the LaTeX Project Public License, either version 1.3c
|
|
%% of this license or (at your option) any later version.
|
|
%% The latest version of this license is in
|
|
%% https://www.latex-project.org/lppl.txt
|
|
%% and version 1.3c or later is part of all distributions of LaTeX
|
|
%% version 2008 or later.
|
|
%%
|
|
%% This file has the LPPL maintenance status "maintained".
|
|
%%
|
|
%% This file may only be distributed together with a copy of the LaTeX
|
|
%% base system. You may however distribute the LaTeX base system without
|
|
%% such generated files.
|
|
%%
|
|
%% The list of all files belonging to the LaTeX base distribution is
|
|
%% given in the file `manifest.txt'. See also `legal.txt' for additional
|
|
%% information.
|
|
%%
|
|
%% The list of derived (unpacked) files belonging to the distribution
|
|
%% and covered by LPPL is defined by the unpacking scripts (with
|
|
%% extension .ins) which are part of the distribution.
|
|
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
|
|
\ProvidesPackage{doc}
|
|
[2019/12/16 v2.1l
|
|
Standard LaTeX documentation package (FMi)]
|
|
%%
|
|
%% Package `doc' to use with LaTeX 2e
|
|
%% Copyright (C) 1989-1999 Frank Mittelbach, all rights reserved.
|
|
\@ifundefined{macro@cnt}{}{\endinput}
|
|
\catcode`\^^A=14
|
|
\AtBeginDocument{\catcode`\^^A=14\relax}
|
|
\def\macrocode{\macro@code
|
|
\frenchspacing \@vobeyspaces
|
|
\xmacro@code}
|
|
\def\macro@code{%
|
|
\topsep \MacrocodeTopsep
|
|
\@beginparpenalty \predisplaypenalty
|
|
\if@inlabel\leavevmode\fi
|
|
\trivlist \parskip \z@ \item[]%
|
|
\macro@font
|
|
\leftskip\@totalleftmargin \advance\leftskip\MacroIndent
|
|
\rightskip\z@ \parindent\z@ \parfillskip\@flushglue
|
|
\blank@linefalse \def\par{\ifblank@line
|
|
\leavevmode\fi
|
|
\blank@linetrue\@@par
|
|
\penalty\interlinepenalty}
|
|
\obeylines
|
|
\let\do\do@noligs \verbatim@nolig@list
|
|
\let\do\@makeother \dospecials
|
|
\global\@newlistfalse
|
|
\global\@minipagefalse
|
|
\ifcodeline@index
|
|
\everypar{\global\advance\c@CodelineNo\@ne
|
|
\llap{\theCodelineNo\ \hskip\@totalleftmargin}%
|
|
\check@module}%
|
|
\else \everypar{\check@module}%
|
|
\fi
|
|
\init@crossref}
|
|
\newif\ifblank@line
|
|
\def\endmacrocode{%
|
|
\ifpm@module \endgroup \pm@modulefalse \fi
|
|
\everypar{}%
|
|
\global\@inlabelfalse
|
|
\endtrivlist
|
|
\close@crossref}
|
|
\@ifundefined{MacroFont}{%
|
|
\if@compatibility
|
|
\def\MacroFont{\small
|
|
\usefont\encodingdefault
|
|
\ttdefault
|
|
\mddefault
|
|
\shapedefault
|
|
}%
|
|
\else
|
|
\def\MacroFont{\fontencoding\encodingdefault
|
|
\fontfamily\ttdefault
|
|
\fontseries\mddefault
|
|
\fontshape\shapedefault
|
|
\small}%
|
|
\fi
|
|
}{}
|
|
\@ifundefined{AltMacroFont}{%
|
|
\if@compatibility
|
|
\def\AltMacroFont{\small
|
|
\usefont\encodingdefault
|
|
\ttdefault
|
|
\mddefault
|
|
\sldefault
|
|
}%
|
|
\else
|
|
\def\AltMacroFont{\fontencoding\encodingdefault
|
|
\fontfamily\ttdefault
|
|
\fontseries\mddefault
|
|
\fontshape\sldefault
|
|
\small
|
|
}%
|
|
\fi
|
|
}{}
|
|
\AtBeginDocument{\let\macro@font\MacroFont}
|
|
\def\check@module{%
|
|
\ifcheck@modules
|
|
\ifpm@module \endgroup \pm@modulefalse \fi
|
|
\expandafter\futurelet\expandafter\next\expandafter\ch@percent
|
|
\fi}
|
|
\newif\ifpm@module
|
|
\def\DontCheckModules{\check@modulesfalse}
|
|
\def\CheckModules{\check@modulestrue}
|
|
\newif\ifcheck@modules \check@modulestrue
|
|
\def\ch@percent{%
|
|
\if \percentchar\next
|
|
\expandafter\check@angle
|
|
\fi}
|
|
\def\check@angle#1{\futurelet\next\ch@angle}
|
|
\begingroup
|
|
\catcode`\<\active
|
|
\gdef\ch@angle{\ifx<\next
|
|
\expandafter\ch@plus@etc
|
|
\else \percentchar \fi}
|
|
\gdef\ch@plus@etc<{\futurelet\next\check@plus@etc}
|
|
\gdef\check@plus@etc{%
|
|
\if +\next
|
|
\let\next\pm@module
|
|
\else\if -\next
|
|
\let\next\pm@module
|
|
\else\if *\next
|
|
\let\next\star@module
|
|
\else\if /\next
|
|
\let\next\slash@module
|
|
\else\ifx <\next
|
|
\percentchar
|
|
\else
|
|
\let\next\pm@module
|
|
\fi\fi\fi\fi\fi
|
|
\next}
|
|
\endgroup
|
|
\begingroup
|
|
\catcode`\~=\active
|
|
\lccode`\~=`\>
|
|
\lowercase{\gdef\pm@module#1~}{\pm@moduletrue
|
|
\Module{#1}\begingroup
|
|
\advance\guard@level\@ne
|
|
\ifnum\guard@level>\c@StandardModuleDepth\AltMacroFont\fi
|
|
}
|
|
\lowercase{\gdef\star@module#1~}{%
|
|
\Module{#1}%
|
|
\global \advance \guard@level\@ne
|
|
\ifnum \guard@level>\c@StandardModuleDepth
|
|
\global\let\macro@font=\AltMacroFont \macro@font
|
|
\fi}
|
|
\catcode`\>=\active
|
|
\gdef\slash@module#1>{%
|
|
\Module{#1}%
|
|
\global \advance \guard@level\m@ne
|
|
\ifnum \guard@level=\c@StandardModuleDepth
|
|
\global\let\macro@font\MacroFont \macro@font
|
|
\fi
|
|
}
|
|
\endgroup
|
|
\newcounter{StandardModuleDepth}
|
|
\newcount \guard@level
|
|
\@ifundefined{Module}{%
|
|
\def\Module#1{\mod@math@codes$\langle\mathsf{#1}\rangle$}
|
|
}{}
|
|
\def\mod@math@codes{\mathcode`\|="226A \mathcode`\&="2026
|
|
\mathcode`\-="702D \mathcode`\+="702B
|
|
\mathcode`\:="703A \mathcode`\=="703D }
|
|
\newskip\MacrocodeTopsep \MacrocodeTopsep = 3pt plus 1.2pt minus 1pt
|
|
\newdimen\MacroIndent
|
|
\settowidth\MacroIndent{\rmfamily\scriptsize 00\ }
|
|
\@namedef{macrocode*}{\macro@code\sxmacro@code}
|
|
\expandafter\let\csname endmacrocode*\endcsname = \endmacrocode
|
|
\catcode`\!=\catcode`\% ^^A In this section there must not be
|
|
^^A any exclamation marks.
|
|
^^A
|
|
\begingroup
|
|
\catcode`\|=\z@ \catcode`\[=\@ne \catcode`\]=\tw@
|
|
\catcode`\{=12 \catcode`\}=12
|
|
\catcode`\%=12 \catcode`\ =\active \catcode`\\=\active
|
|
!% \end{macrocode*}
|
|
! Next follows the actual definition of |\macro@code|;
|
|
! notice the
|
|
! use of the new escape character. We manage to get the argument
|
|
! surrounded by the string |\end{macrocode}|, but at the end
|
|
! however, in spite of the actual characters used during the
|
|
! definition of
|
|
! this macro, |\end| with the argument |{macrocode}|
|
|
! will be executed, to ensure a balanced environment.
|
|
! \begin{macrocode*}
|
|
|gdef|xmacro@code#1% \end{macrocode}[#1|end[macrocode]]
|
|
!% \end{macrocode*}
|
|
! \begin{macro}{\sxmacro@code}
|
|
! The definition of |\sxmacro@code| is completely analogous,
|
|
! only
|
|
! here a slightly different terminating string will be used.
|
|
! Note that the space is not active in this environment.
|
|
! \begin{macrocode}
|
|
|catcode`| =12
|
|
|gdef|sxmacro@code#1% \end{macrocode*}[#1|end[macrocode*]]
|
|
!% \end{macrocode}
|
|
! because the |\catcode| changes have been made local by
|
|
! commencing a
|
|
! new group, there now follows the matching |\endgroup|
|
|
! in a rather
|
|
! unusual style of writing.
|
|
! \begin{macrocode}
|
|
|endgroup
|
|
!% \end{macrocode}
|
|
\catcode`\!=12
|
|
\def\DescribeMacro{\leavevmode\@bsphack
|
|
\begingroup\MakePrivateLetters\Describe@Macro}
|
|
\def\Describe@Macro#1{\endgroup
|
|
\marginpar{\raggedleft\PrintDescribeMacro{#1}}%
|
|
\SpecialUsageIndex{#1}\@esphack\ignorespaces}
|
|
\def\DescribeEnv{\leavevmode\@bsphack\begingroup\MakePrivateLetters
|
|
\Describe@Env}
|
|
\def\Describe@Env#1{\endgroup
|
|
\marginpar{\raggedleft\PrintDescribeEnv{#1}}%
|
|
\SpecialEnvIndex{#1}\@esphack\ignorespaces}
|
|
\reversemarginpar
|
|
\setlength\marginparpush{0pt} \setlength\marginparwidth{8pc}
|
|
{\catcode`\|=\z@ \catcode`\\=12
|
|
|gdef|bslash{\}}
|
|
\def\verbatim{\@beginparpenalty \predisplaypenalty \@verbatim
|
|
\MacroFont \frenchspacing \@vobeyspaces \@xverbatim}
|
|
\@namedef{verbatim*}{\@beginparpenalty \predisplaypenalty \@verbatim
|
|
\@setupverbvisiblespace
|
|
\MacroFont \@vobeyspaces \@sxverbatim}
|
|
\def\@verbatim{\trivlist \item[]\if@minipage\else\vskip\parskip\fi
|
|
\leftskip\@totalleftmargin\rightskip\z@
|
|
\parindent\z@\parfillskip\@flushglue\parskip\z@
|
|
\@@par
|
|
\@tempswafalse
|
|
\def\par{\if@tempswa\hbox{}\fi\@tempswatrue\@@par
|
|
\penalty\interlinepenalty
|
|
\check@percent}%
|
|
\obeylines
|
|
\let\do\do@noligs \verbatim@nolig@list
|
|
\let\do\@makeother \dospecials}
|
|
{\catcode`\%=12
|
|
\long\gdef\check@percent#1{\ifx #1%\let\next\@empty \else
|
|
\let\next=#1\fi \next}}
|
|
\def\verb{\relax\ifmmode\hbox\else\leavevmode\null\fi
|
|
\bgroup \let\do\do@noligs \verbatim@nolig@list
|
|
\ttfamily \verb@eol@error \let\do\@makeother \dospecials
|
|
\@ifstar{\@sverb}{\@vobeyspaces \frenchspacing \@sverb}}
|
|
\let\verb@balance@group\@empty
|
|
|
|
\def\verb@egroup{\global\let\verb@balance@group\@empty\egroup}
|
|
|
|
\begingroup
|
|
\obeylines%
|
|
\gdef\verb@eol@error{\obeylines%
|
|
\def^^M{\verb@egroup\@latex@error{%
|
|
Text for \noexpand\verb command ended by end of line}\@ehc}}%
|
|
\endgroup
|
|
\def\verbatim@nolig@list{\do\`\do\<\do\>\do\,\do\'\do\-}
|
|
\def\do@noligs#1{%
|
|
\catcode`#1\active
|
|
\begingroup
|
|
\lccode`\~=`#1\relax
|
|
\lowercase{\endgroup\def~{\leavevmode\kern\z@\char`#1}}}
|
|
\newcount\macro@cnt \macro@cnt=0
|
|
\def\macro{\begingroup
|
|
\catcode`\\12
|
|
\MakePrivateLetters \m@cro@ \iftrue}
|
|
\def\environment{\begingroup
|
|
\catcode`\\12
|
|
\MakePrivateLetters \m@cro@ \iffalse}
|
|
\long\def\m@cro@#1#2{\endgroup \topsep\MacroTopsep \trivlist
|
|
\edef\saved@macroname{\string#2}%
|
|
#1
|
|
\let\saved@indexname\saved@macroname
|
|
\else
|
|
\edef\saved@indexname{\expandafter\@gobble\string#2}%
|
|
\fi
|
|
\def\makelabel##1{\llap{##1}}%
|
|
\if@inlabel
|
|
\let\@tempa\@empty \count@\macro@cnt
|
|
\loop \ifnum\count@>\z@
|
|
\edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne \repeat
|
|
\edef\makelabel##1{\llap{\vtop to\baselineskip
|
|
{\@tempa\hbox{##1}\vss}}}%
|
|
\advance \macro@cnt \@ne
|
|
\else \macro@cnt\@ne \fi
|
|
\edef\@tempa{\noexpand\item[%
|
|
#1%
|
|
\noexpand\PrintMacroName
|
|
\else
|
|
\noexpand\PrintEnvName
|
|
\fi
|
|
{\string#2}]}%
|
|
\@tempa
|
|
\global\advance\c@CodelineNo\@ne
|
|
#1%
|
|
\SpecialMainIndex{#2}\nobreak
|
|
\DoNotIndex{#2}%
|
|
\else
|
|
\SpecialMainEnvIndex{#2}\nobreak
|
|
\fi
|
|
\global\advance\c@CodelineNo\m@ne
|
|
\ignorespaces}
|
|
\let\endmacro \endtrivlist
|
|
\let\endenvironment\endmacro
|
|
\newskip\MacroTopsep \MacroTopsep = 7pt plus 2pt minus 2pt
|
|
\@ifundefined{PrintMacroName}
|
|
{\def\PrintMacroName#1{\strut \MacroFont \string #1\ }}{}
|
|
\@ifundefined{PrintDescribeMacro}
|
|
{\def\PrintDescribeMacro#1{\strut \MacroFont \string #1\ }}{}
|
|
\@ifundefined{PrintDescribeEnv}
|
|
{\def\PrintDescribeEnv#1{\strut \MacroFont #1\ }}{}
|
|
\@ifundefined{PrintEnvName}
|
|
{\def\PrintEnvName#1{\strut \MacroFont #1\ }}{}
|
|
\begingroup
|
|
\catcode`\~\active
|
|
\gdef\SpecialEscapechar#1{%
|
|
\begingroup
|
|
\uccode`\~`#1%
|
|
\uppercase{\gdef\active@escape@char{~}}%
|
|
\escapechar\m@ne \xdef\special@escape@char{\string#1}%
|
|
\endgroup}
|
|
\endgroup
|
|
\begingroup \catcode`\|=\z@ \catcode`\\=\active
|
|
|gdef|init@crossref{|catcode`|\|active |let\|bslash
|
|
|MakePrivateLetters
|
|
|catcode|expandafter`|special@escape@char|active
|
|
|expandafter|let|active@escape@char|scan@macro}
|
|
|endgroup
|
|
\SpecialEscapechar{\\}
|
|
\@ifundefined{MakePrivateLetters}
|
|
{\let\MakePrivateLetters\makeatletter}{}
|
|
\def\close@crossref{\SpecialEscapechar\\}
|
|
\def\scan@macro{%
|
|
\special@escape@char
|
|
\step@checksum
|
|
\ifscan@allowed
|
|
\let\macro@namepart\@empty
|
|
\def\next{\futurelet\next\macro@switch}%
|
|
\else \let\next\@empty \fi
|
|
\next}
|
|
\newif\ifscan@allowed \scan@allowedtrue
|
|
\def\DisableCrossrefs{\@bsphack\scan@allowedfalse\@esphack}
|
|
\def\EnableCrossrefs{\@bsphack\scan@allowedtrue
|
|
\def\DisableCrossrefs{\@bsphack\@esphack}\@esphack}
|
|
\def\macro@switch{\ifcat\noexpand\next a%
|
|
\let\next\macro@name
|
|
\else \let\next\short@macro \fi
|
|
\next}
|
|
\begingroup
|
|
\catcode`\&=12
|
|
\gdef\short@macro#1{\begingroup
|
|
\uccode`\&=\expandafter`\string#1%
|
|
\uppercase{\def\x{\def\macro@namepart{&}}}%
|
|
\expandafter\endgroup\x
|
|
\ifnot@excluded
|
|
\produce@index{#1}\fi
|
|
\scan@allowedfalse#1%
|
|
\scan@allowedtrue }
|
|
\endgroup
|
|
\def\produce@index#1{%
|
|
\if\noexpand#1\special@escape@char
|
|
\scan@allowedfalse \it@is@a\special@escape@char \else
|
|
\if\noexpand#1\bslash \it@is@a\bslash \else
|
|
\if\noexpand#1\space \it@is@a\space \else
|
|
\ifx#1\par
|
|
\it@is@a\space \else
|
|
\ifx#1\relax \else
|
|
\if\noexpand#1\bgroup \LeftBraceIndex \else
|
|
\if\noexpand#1\egroup \RightBraceIndex \else
|
|
\if\noexpand#1\percentchar \PercentIndex \else
|
|
\it@is@a{\string#1}%
|
|
\fi \fi \fi \fi \fi \fi \fi \fi}
|
|
\def\macro@name#1{\edef\macro@namepart{\macro@namepart#1}%
|
|
\futurelet\next\more@macroname}
|
|
\def\more@macroname{\ifcat\noexpand\next a%
|
|
\let\next\macro@name
|
|
\else \let\next\macro@finish \fi
|
|
\next}
|
|
\def\macro@finish{%
|
|
\macro@namepart
|
|
\ifnot@excluded
|
|
\edef\@tempa{\noexpand\SpecialIndex{\bslash\macro@namepart}}%
|
|
\@tempa \fi}
|
|
\def\DoNotIndex{\begingroup \MakePrivateLetters
|
|
\catcode`\\12
|
|
\do@not@index}
|
|
\long\def\do@not@index#1{%
|
|
\endgroup
|
|
\addto@hook\index@excludelist{#1,}}
|
|
\long\def\addto@hook#1#2{#1\expandafter{\the#1#2}}
|
|
\newtoks\index@excludelist
|
|
\index@excludelist{}
|
|
\begingroup
|
|
\catcode`\|=0%
|
|
\catcode`\\=12
|
|
|gdef|ifnot@excluded{|expandafter
|
|
|expanded@notin|expandafter{|expandafter
|
|
\|macro@namepart,}{|the|index@excludelist}}
|
|
|endgroup
|
|
\def\expanded@notin#1#2{%
|
|
\def\in@@##1#1##2##3\in@@{%
|
|
\ifx\expanded@notin##2}%
|
|
\expandafter\in@@#2#1\expanded@notin\in@@}
|
|
\@ifundefined{actualchar}{\def\actualchar{=}}{}
|
|
\@ifundefined{quotechar}{\def\quotechar{!}}{}
|
|
\@ifundefined{levelchar}{\def\levelchar{>}}{}
|
|
\@ifundefined{encapchar}{\def\encapchar{|}}{}
|
|
\@ifundefined{verbatimchar}{\def\verbatimchar{+}}{}
|
|
\def\SpecialIndex#1{\@bsphack\special@index{\expandafter\@gobble
|
|
\string#1\actualchar
|
|
\string\verb\quotechar*\verbatimchar\string#1\verbatimchar}%
|
|
\@esphack}
|
|
|
|
\def\SpecialMainIndex#1{\@bsphack\SpecialIndex@{#1}{\encapchar main}%
|
|
\@esphack}
|
|
\begingroup
|
|
\catcode`\|=0
|
|
\catcode`\\=12
|
|
|gdef|@SpecialIndexHelper@#1#2|@nil{%
|
|
|if |noexpand#1\%
|
|
|gdef|@gtempa{#2}%
|
|
|else
|
|
|begingroup
|
|
|escapechar|m@ne
|
|
|expandafter|gdef|expandafter|@gtempa|expandafter{|string#1#2}%
|
|
|endgroup
|
|
|fi}
|
|
|endgroup
|
|
\def\SpecialIndex@#1#2{%
|
|
\@SpecialIndexHelper@#1\@nil
|
|
\def\@tempb{ }%
|
|
\ifcat \@tempb\@gtempa
|
|
\special@index{\quotechar\space\actualchar
|
|
\string\verb\quotechar*\verbatimchar
|
|
\quotechar\bslash\quotechar\space\verbatimchar#2}%
|
|
\else
|
|
\def\@tempb##1##2\relax{\ifx\relax##2\relax
|
|
\def\@tempc{\special@index{\quotechar##1\actualchar
|
|
\string\verb\quotechar*\verbatimchar
|
|
\quotechar\bslash\quotechar##1\verbatimchar#2}}%
|
|
\else
|
|
\def\@tempc{\special@index{##1##2\actualchar
|
|
\string\verb\quotechar*\verbatimchar
|
|
\bslash##1##2\verbatimchar#2}}%
|
|
\fi}%
|
|
\expandafter\@tempb\@gtempa\relax
|
|
\@tempc
|
|
\fi}
|
|
\def\SpecialMainEnvIndex#1{\@bsphack\special@index{%
|
|
#1\actualchar
|
|
{\string\ttfamily\space#1}
|
|
(environment)%
|
|
\encapchar main}%
|
|
\special@index{environments:\levelchar#1\actualchar{%
|
|
\string\ttfamily\space#1}\encapchar
|
|
main}\@esphack}
|
|
\def\SpecialUsageIndex#1{\@bsphack
|
|
{\let\special@index\index\SpecialIndex@{#1}{\encapchar usage}}%
|
|
\@esphack}
|
|
\def\SpecialEnvIndex#1{\@bsphack
|
|
\index{#1\actualchar{\protect\ttfamily#1}
|
|
(environment)\encapchar usage}%
|
|
\index{environments:\levelchar#1\actualchar
|
|
{\protect\ttfamily#1}\encapchar usage}\@esphack}
|
|
\def\SortIndex#1#2{\index{#1\actualchar#2}}
|
|
\def\it@is@a#1{\special@index{\quotechar #1\actualchar
|
|
\string\verb\quotechar*\verbatimchar
|
|
\quotechar\bslash\quotechar#1\verbatimchar}}
|
|
\@ifundefined{LeftBraceIndex}{\def\LeftBraceIndex{%
|
|
\special@index{\bgroup\actualchar\string\verb\quotechar*\verbatimchar
|
|
\quotechar\bslash{\verbatimchar\string\iffalse}\string\fi}}}{}
|
|
|
|
\@ifundefined{RightBraceIndex}{\def\RightBraceIndex{%
|
|
\special@index{\egroup\actualchar\string\iffalse{\string\fi\string\verb
|
|
\quotechar*\verbatimchar\quotechar\bslash}\verbatimchar}}}{}
|
|
\@ifundefined{PercentIndex}
|
|
{\def\PercentIndex{\it@is@a\percentchar}}{}
|
|
\def\OldMakeindex{\def\PercentIndex{%
|
|
\special@index{\quotechar\percentchar\actualchar\string\verb
|
|
\quotechar*\verbatimchar\quotechar\bslash
|
|
\percentchar\percentchar\verbatimchar}}}
|
|
{\catcode`\%=12 \gdef\percentchar{%}}
|
|
\newif\ifhave@multicol
|
|
\IfFileExists{multicol.sty}{\have@multicoltrue
|
|
\RequirePackage{multicol}%
|
|
}{}
|
|
|
|
\newdimen\IndexMin \IndexMin = 80pt
|
|
\newcount\c@IndexColumns \c@IndexColumns = 3
|
|
\ifhave@multicol
|
|
\renewenvironment{theindex}
|
|
{\begin{multicols}\c@IndexColumns[\index@prologue][\IndexMin]%
|
|
\IndexParms \let\item\@idxitem \ignorespaces}%
|
|
{\end{multicols}}
|
|
\else
|
|
\typeout{Can't find multicol.sty -- will use normal index layout if
|
|
necessary.}
|
|
\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
|
|
\columnseprule \z@ \columnsep 35\p@
|
|
\twocolumn[\index@prologue]%
|
|
\IndexParms \let\item\@idxitem \ignorespaces}
|
|
\def\endtheindex{\if@restonecol\onecolumn\else\clearpage\fi}
|
|
\fi
|
|
\long\def\IndexPrologue#1{\@bsphack\def\index@prologue{#1}\@esphack}
|
|
\@ifundefined{index@prologue}
|
|
{\def\index@prologue{\section*{Index}%
|
|
\markboth{Index}{Index}%
|
|
Numbers written in italic refer to the page
|
|
where the corresponding entry is described;
|
|
numbers underlined refer to the
|
|
\ifcodeline@index
|
|
code line of the
|
|
\fi
|
|
definition; numbers in roman refer to the
|
|
\ifcodeline@index
|
|
code lines
|
|
\else
|
|
pages
|
|
\fi
|
|
where the entry is used.
|
|
}}{}
|
|
\@ifundefined{IndexParms}
|
|
{\def\IndexParms{%
|
|
\parindent \z@
|
|
\columnsep 15pt
|
|
\parskip 0pt plus 1pt
|
|
\rightskip 15pt
|
|
\mathsurround \z@
|
|
\parfillskip=-15pt
|
|
\small
|
|
\def\@idxitem{\par\hangindent 30pt}%
|
|
\def\subitem{\@idxitem\hspace*{15pt}}%
|
|
\def\subsubitem{\@idxitem\hspace*{25pt}}%
|
|
\def\indexspace{\par\vspace{10pt plus 2pt minus 3pt}}%
|
|
}}{}
|
|
\def\efill{\hfill\nopagebreak}%
|
|
\def\dotfill{\leaders\hbox to.6em{\hss .\hss}\hskip\z@ plus 1fill\kern\z@}%
|
|
\def\dotfil{\leaders\hbox to.6em{\hss .\hss}\hfil\kern\z@}%
|
|
\def\pfill{\unskip~\dotfill\penalty500\strut\nobreak
|
|
\dotfil~\ignorespaces}%
|
|
\def\*{\leavevmode\lower.8ex\hbox{$\,\widetilde{\ }\,$}}
|
|
\@ifundefined{main}{\def\main#1{\underline{#1}}}{}
|
|
\@ifundefined{usage}{\def\usage#1{\textit{#1}}}{}
|
|
\def\PrintIndex{\@input@{\jobname.ind}%
|
|
\global\let\PrintIndex\@empty}
|
|
\def\changes{\@bsphack\begingroup\@sanitize
|
|
\catcode`\\\z@ \catcode`\ 10 \MakePercentIgnore
|
|
\changes@}
|
|
\def\changes@#1#2#3{%
|
|
\protected@edef\@tempa{\noexpand\glossary{#1\levelchar
|
|
\ifx\saved@macroname\@empty
|
|
\space
|
|
\actualchar
|
|
\generalname
|
|
\else
|
|
\saved@indexname
|
|
\actualchar
|
|
\string\verb\quotechar*%
|
|
\verbatimchar\saved@macroname
|
|
\verbatimchar
|
|
\fi
|
|
:\levelchar #3}}%
|
|
\@tempa\endgroup\@esphack}
|
|
\def\saved@macroname{}
|
|
\def\saved@indexname{}
|
|
\def\generalname{General}
|
|
\let\RecordChanges\makeglossary
|
|
\newdimen\GlossaryMin \GlossaryMin = 80pt
|
|
\newcount\c@GlossaryColumns \c@GlossaryColumns = 2
|
|
\ifhave@multicol
|
|
\newenvironment{theglossary}{%
|
|
\begin{multicols}\c@GlossaryColumns
|
|
[\glossary@prologue][\GlossaryMin]%
|
|
\GlossaryParms \let\item\@idxitem \ignorespaces}%
|
|
{\end{multicols}}
|
|
\else
|
|
\newenvironment{theglossary}{%
|
|
\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
|
|
\columnseprule \z@ \columnsep 35\p@
|
|
\twocolumn[\glossary@prologue]%
|
|
\GlossaryParms \let\item\@idxitem \ignorespaces}
|
|
{\if@restonecol\onecolumn\else\clearpage\fi}
|
|
\fi
|
|
\long\def\GlossaryPrologue#1{\@bsphack
|
|
\def\glossary@prologue{#1}%
|
|
\@esphack}
|
|
\@ifundefined{glossary@prologue}
|
|
{\def\glossary@prologue{\section*{{Change History}}%
|
|
\markboth{{Change History}}{{Change History}}%
|
|
}}{}
|
|
\@ifundefined{GlossaryParms}{\let\GlossaryParms\IndexParms
|
|
\expandafter\def\expandafter\GlossaryParms\expandafter{\GlossaryParms
|
|
\rightskip 15pt plus 1fil
|
|
\parfillskip -15pt plus -1fil\relax}
|
|
}{}
|
|
\def\PrintChanges{\@input@{\jobname.gls}%
|
|
\global\let\PrintChanges\@empty}
|
|
\newcommand\AlsoImplementation{%
|
|
\long\def\StopEventually##1{\@bsphack\gdef\Finale{##1%
|
|
\check@checksum}%
|
|
\init@checksum
|
|
\@esphack}%
|
|
}
|
|
\AlsoImplementation
|
|
\def\OnlyDescription{\@bsphack\long\def\StopEventually##1{%
|
|
##1\endinput}\@esphack}
|
|
\let\Finale\relax
|
|
\ifx\l@nohyphenation\undefined
|
|
\newlanguage\l@nohyphenation
|
|
\fi
|
|
\DeclareRobustCommand\meta[1]{%
|
|
\ensuremath\langle
|
|
\ifmmode \expandafter \nfss@text \fi
|
|
{%
|
|
\meta@font@select
|
|
\edef\meta@hyphen@restore
|
|
{\hyphenchar\the\font\the\hyphenchar\font}%
|
|
\hyphenchar\font\m@ne
|
|
\language\l@nohyphenation
|
|
#1\/%
|
|
\meta@hyphen@restore
|
|
}\ensuremath\rangle
|
|
}
|
|
\def\meta@font@select{\itshape}
|
|
\def\IndexInput#1{%
|
|
\begingroup \macro@code
|
|
\frenchspacing \@vobeyspaces
|
|
\input{#1}\endmacrocode
|
|
\endgroup}
|
|
\def\maketitle{\par
|
|
\begingroup \def \thefootnote {\fnsymbol {footnote}}%
|
|
\setcounter {footnote}\z@
|
|
\def\@makefnmark{\hbox to\z@{$\m@th^{\@thefnmark}$\hss}}%
|
|
\long\def\@makefntext##1{\parindent 1em\noindent
|
|
\hbox to1.8em{\hss$\m@th^{\@thefnmark}$}##1}%
|
|
\if@twocolumn \twocolumn [\@maketitle ]%
|
|
\else \newpage \global \@topnum \z@ \@maketitle \fi
|
|
\thispagestyle{titlepage}\@thanks \endgroup
|
|
\setcounter {footnote}\z@
|
|
\gdef\@date{\today}\gdef\@thanks{}%
|
|
\gdef\@author{}\gdef\@title{}}
|
|
\@ifundefined{ps@titlepage}
|
|
{\let\ps@titlepage=\ps@plain}{}
|
|
\def\MakeShortVerb{%
|
|
\@ifstar
|
|
{\def\@shortvrbdef{\verb*}\@MakeShortVerb}%
|
|
{\def\@shortvrbdef{\verb}\@MakeShortVerb}}
|
|
\def\@MakeShortVerb#1{%
|
|
\expandafter\ifx\csname cc\string#1\endcsname\relax
|
|
\@shortvrbinfo{Made }{#1}\@shortvrbdef
|
|
\add@special{#1}%
|
|
\expandafter
|
|
\xdef\csname cc\string#1\endcsname{\the\catcode`#1}%
|
|
\begingroup
|
|
\catcode`\~\active \lccode`\~`#1%
|
|
\lowercase{%
|
|
\global\expandafter\let
|
|
\csname ac\string#1\endcsname~%
|
|
\expandafter\gdef\expandafter~\expandafter{\@shortvrbdef~}}%
|
|
\endgroup
|
|
\global\catcode`#1\active
|
|
\else
|
|
\@shortvrbinfo\@empty{#1 already}{\@empty\verb(*)}%
|
|
\fi}
|
|
\def\DeleteShortVerb#1{%
|
|
\expandafter\ifx\csname cc\string#1\endcsname\relax
|
|
\@shortvrbinfo\@empty{#1 not}{\@empty\verb(*)}%
|
|
\else
|
|
\@shortvrbinfo{Deleted }{#1 as}{\@empty\verb(*)}%
|
|
\rem@special{#1}%
|
|
\global\catcode`#1\csname cc\string#1\endcsname
|
|
\global \expandafter\let \csname cc\string#1\endcsname \relax
|
|
\ifnum\catcode`#1=\active
|
|
\begingroup
|
|
\catcode`\~\active \lccode`\~`#1%
|
|
\lowercase{%
|
|
\global\expandafter\let\expandafter~%
|
|
\csname ac\string#1\endcsname}%
|
|
\endgroup \fi \fi}
|
|
\def\@shortvrbinfo#1#2#3{%
|
|
\PackageInfo{doc}{%
|
|
#1\expandafter\@gobble\string#2 a short reference
|
|
for \expandafter\string#3}}
|
|
\def\add@special#1{%
|
|
\rem@special{#1}%
|
|
\expandafter\gdef\expandafter\dospecials\expandafter
|
|
{\dospecials \do #1}%
|
|
\expandafter\gdef\expandafter\@sanitize\expandafter
|
|
{\@sanitize \@makeother #1}}
|
|
\def\rem@special#1{%
|
|
\def\do##1{%
|
|
\ifnum`#1=`##1 \else \noexpand\do\noexpand##1\fi}%
|
|
\xdef\dospecials{\dospecials}%
|
|
\begingroup
|
|
\def\@makeother##1{%
|
|
\ifnum`#1=`##1 \else \noexpand\@makeother\noexpand##1\fi}%
|
|
\xdef\@sanitize{\@sanitize}%
|
|
\endgroup}
|
|
\def\MakeShortverb{\typeout{*** Switch to \noexpand\MakeShortVerb
|
|
syntax, this is obsolete ***}\MakeShortVerb}
|
|
\def\DeleteShortverb{\typeout{*** Switch to \noexpand\DeleteShortVerb
|
|
syntax, this is obsolete ***}\DeleteShortVerb}
|
|
\def\init@checksum{\relax
|
|
\global\bslash@cnt\z@}
|
|
\def\check@checksum{\relax
|
|
\ifnum\check@sum>\m@ne
|
|
\ifnum\check@sum=\z@
|
|
\typeout{**********************************}%
|
|
\typeout{* This macro file has no checksum!}%
|
|
\typeout{* The checksum should be \the\bslash@cnt!}%
|
|
\typeout{**********************************}%
|
|
\else
|
|
\ifnum\check@sum=\bslash@cnt
|
|
\typeout{*******************}%
|
|
\typeout{* Checksum passed *}%
|
|
\typeout{*******************}%
|
|
\else
|
|
\PackageError{doc}{Checksum not passed
|
|
(\the\check@sum<>\the\bslash@cnt)}%
|
|
{The file currently documented seems to be wrong.^^J%
|
|
Try to get a correct version.}%
|
|
\fi
|
|
\fi
|
|
\fi
|
|
\global\check@sum\m@ne}
|
|
\newcount\check@sum \check@sum = \m@ne
|
|
\newcount\bslash@cnt \bslash@cnt = \z@
|
|
\def\CheckSum#1{\@bsphack\global\check@sum#1\relax\@esphack}
|
|
\def\step@checksum{\global\advance\bslash@cnt\@ne}
|
|
\def\CharacterTable{\begingroup \CharTableChanges \character@table}
|
|
\begingroup
|
|
\catcode`\~=11
|
|
\gdef\character@table#1{\def\used~table{#1}%
|
|
\ifx\used~table\default~table
|
|
\typeout{***************************}%
|
|
\typeout{* Character table correct *}%
|
|
\typeout{***************************}%
|
|
\else
|
|
\PackageError{doc}{Character table corrupted}
|
|
{\the\wrong@table}
|
|
\show\default~table
|
|
\show\used~table
|
|
\fi
|
|
\endgroup}
|
|
\global\let\CharTableChanges\@empty
|
|
\makeatother
|
|
\gdef\default~table
|
|
{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
|
|
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
|
|
Digits \0\1\2\3\4\5\6\7\8\9
|
|
Exclamation \! Double quote \" Hash (number) \#
|
|
Dollar \$ Percent \% Ampersand \&
|
|
Acute accent \' Left paren \( Right paren \)
|
|
Asterisk \* Plus \+ Comma \,
|
|
Minus \- Point \. Solidus \/
|
|
Colon \: Semicolon \; Less than \<
|
|
Equals \= Greater than \> Question mark \?
|
|
Commercial at \@ Left bracket \[ Backslash \\
|
|
Right bracket \] Circumflex \^ Underscore \_
|
|
Grave accent \` Left brace \{ Vertical bar \|
|
|
Right brace \} Tilde \~}
|
|
\endgroup
|
|
\newhelp\wrong@table{Some of the ASCII characters are corrupted.^^J
|
|
I now \string\show\space you both tables for comparison.}
|
|
\newif\ifcodeline@index \codeline@indexfalse
|
|
\let\CodelineNumbered\codeline@indextrue
|
|
\def\codeline@wrindex#1{\if@filesw
|
|
\immediate\write\@indexfile
|
|
{\string\indexentry{#1}%
|
|
{\number\c@CodelineNo}}\fi}
|
|
\let\special@index = \@gobble
|
|
\def\CodelineIndex{\makeindex
|
|
\codeline@indextrue
|
|
\let\special@index\codeline@wrindex}
|
|
\def\PageIndex{\makeindex
|
|
\codeline@indexfalse
|
|
\let\special@index\index}
|
|
\newcount\c@CodelineNo \c@CodelineNo\z@
|
|
\@ifundefined{theCodelineNo}
|
|
{\ifx\selectfont\undefined
|
|
\def\theCodelineNo{\rmfamily\scriptsize\arabic{CodelineNo}}%
|
|
\else
|
|
\def\theCodelineNo{\reset@font\scriptsize\arabic{CodelineNo}}%
|
|
\fi}
|
|
{}
|
|
\tolerance=1000\relax
|
|
{ \catcode`\"=12
|
|
\global\mathcode`\\="705C \global\mathcode`\@="7040 }
|
|
\@ifundefined{DocstyleParms}{}{\DocstyleParms}
|
|
\let\DocstyleParms\relax
|
|
\@ifundefined{AmSTeX}
|
|
{\def\AmSTeX{\leavevmode\hbox{$\mathcal A\kern-.2em\lower.376ex%
|
|
\hbox{$\mathcal M$}\kern-.2em\mathcal S$-\TeX}}}{}
|
|
\@ifundefined{BibTeX}
|
|
{\def\BibTeX{{\rmfamily B\kern-.05em%
|
|
\textsc{i\kern-.025em b}\kern-.08em%
|
|
T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}}{}
|
|
\@ifundefined{SliTeX}
|
|
{\def\SliTeX{{\rmfamily S\kern-.06emL\kern-.18em\raise.32ex\hbox
|
|
{\scshape i}\kern -.03em\TeX}}}{}
|
|
\@ifundefined{PlainTeX}{\def\PlainTeX{\textsc{Plain}\kern2pt\TeX}}{}
|
|
\@ifundefined{Web}{\def\Web{\textsc{Web}}}{}
|
|
\def\MakePercentIgnore{\catcode`\%9\relax}
|
|
\def\MakePercentComment{\catcode`\%14\relax}
|
|
\def\DocInput#1{\MakePercentIgnore\input{#1}\MakePercentComment}
|
|
\def\GetFileInfo#1{%
|
|
\def\filename{#1}%
|
|
\def\@tempb##1 ##2 ##3\relax##4\relax{%
|
|
\def\filedate{##1}%
|
|
\def\fileversion{##2}%
|
|
\def\fileinfo{##3}}%
|
|
\edef\@tempa{\csname ver@#1\endcsname}%
|
|
\expandafter\@tempb\@tempa\relax? ? \relax\relax}
|
|
\endinput
|
|
%%
|
|
%% End of file `doc.sty'.
|
|
|