diff options
author | Karl Berry <karl@freefriends.org> | 2010-06-14 22:32:34 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-06-14 22:32:34 +0000 |
commit | 71ec7bc2f092d29f4a66cce8f5ac9d5d541bf324 (patch) | |
tree | 0c48d505fd36305843042289db2d1956e54d0442 /Master/texmf-dist/tex | |
parent | b3f1741ccbe6dede2fc5cc309815e40728c0330f (diff) |
new latex package nlctdoc
git-svn-id: svn://tug.org/texlive/trunk@18976 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/nlctdoc/nlctdoc.cls | 1172 |
1 files changed, 1172 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/nlctdoc/nlctdoc.cls b/Master/texmf-dist/tex/latex/nlctdoc/nlctdoc.cls new file mode 100644 index 00000000000..6d9b597765d --- /dev/null +++ b/Master/texmf-dist/tex/latex/nlctdoc/nlctdoc.cls @@ -0,0 +1,1172 @@ +% This class file is provided 'as is' in the event that someone +% wants to compile the documentation that comes with my packages. +% Some of the code is taken from doc.sty +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{nlctdoc}[2010/05/11 (NLCT)] +\DeclareOption{a5paper}{\@latexerr{Option not supported}% + {}} +\DeclareOption*{% + \PassOptionsToClass {\CurrentOption}{article}} +\ProcessOptions +\LoadClass{article} +\RequirePackage{xcolor} +\RequirePackage{ifpdf} +\ifpdf + \RequirePackage{cmap} +\else + \RequirePackage[xhtml,fn-in,css-in]{tex4ht} +\fi +\@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 + \updefault + }% + \else + \def\MacroFont{\fontencoding\encodingdefault + \fontfamily\ttdefault + \fontseries\mddefault + \fontshape\updefault + \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} +\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 + \MacroFont \@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\@sverb#1{% + \catcode`#1\active \lccode`\~`#1% + \gdef\verb@balance@group{\verb@egroup + \@latex@error{Illegal use of \noexpand\verb command}\@ehc}% + \aftergroup\verb@balance@group + \lowercase{\let~\verb@egroup}} +\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}% + \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}% +\def\dotfil{\leaders\hbox to.6em{\hss .\hss}\hfil}% +\def\pfill{\unskip~\dotfill\penalty500\strut\nobreak + \dotfil~\ignorespaces}% +\def\*{\leavevmode\lower.8ex\hbox{$\,\widetilde{\ }\,$}} + +\@ifundefined{main}{\def\main#1{\underline{\hyperpage{#1}}}}{} +\@ifundefined{usage}{\def\usage#1{\textit{\hyperpage{#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 + \expandafter\@gobble + \saved@macroname + \actualchar + \string\verb\quotechar*% + \verbatimchar\saved@macroname + \verbatimchar + \fi + :\levelchar #3}}% + \@tempa\endgroup\@esphack} +\def\saved@macroname{} +\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}{} +\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{\rmfamily\itshape} +\def\IndexInput#1{% + \begingroup \macro@code + \frenchspacing \@vobeyspaces + \input{#1}\endmacrocode + \endgroup} +\@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=\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 + \global\check@sum\z@} +\newcount\check@sum \check@sum = \z@ +\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} +\RequirePackage{dox} +\AtBeginDocument{\MakeShortVerb{\|}} +\DeclareFontShape{OT1}{cmtt}{bx}{n}{<-> ssub * cmtt/m/n}{} +\DeclareFontFamily{OMS}{cmtt}{\skewchar\font 48} % '60 +\DeclareFontShape{OMS}{cmtt}{m}{n}{<-> ssub * cmsy/m/n}{} +\DeclareFontShape{OMS}{cmtt}{bx}{n}{<-> ssub * cmsy/b/n}{} +\DeclareFontShape{OT1}{cmss}{m}{it}{<->ssub*cmss/m/sl}{} +\CodelineNumbered +\DisableCrossrefs +\setlength{\textwidth}{355pt} +\addtolength\marginparwidth{30pt} +\addtolength\oddsidemargin{20pt} +\addtolength\evensidemargin{20pt} +\setcounter{StandardModuleDepth}{1} +\def\cmd#1{\cs{\expandafter\cmd@to@cs\string#1}} +\def\cmd@to@cs#1#2{\char\number`#2\relax} +\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}} +\providecommand\marg[1]{% + {\ttfamily\char`\{}\meta{#1}{\ttfamily\char`\}}} +\providecommand\oarg[1]{% + {\ttfamily[}\meta{#1}{\ttfamily]}} +\providecommand\parg[1]{% + {\ttfamily(}\meta{#1}{\ttfamily)}} +\def\oc@scan#1{% + \ifx\oc@bslash#1% + \egroup\let\next\oc@bslash\else + \ifcat a\noexpand#1% + #1\let\next\oc@scan\else + \ifx\oc@percent#1% + \def\next{\char`\%\egroup}% + \else + #1\let\next\egroup + \fi\fi\fi\next} +\def\oc@bslash{\bgroup\oc@ttf\char`\\\oc@scan}% +\def\oc@verb#1{% + \catcode`#1\active + \uccode`\~`#1% + \uppercase{\def~{{\oc@ttf\char`#1}}}} +\begingroup + \obeyspaces% + \catcode`\/=\catcode`\\ + /catcode`/\/active + /catcode`<=/catcode`{% + /catcode`>=/catcode`}% + /catcode`/{/active% + /catcode`/}/active% + /gdef/oldc< \end{oldcomments}>% + /gdef/begmac< \begin{macrocode}>% + /gdef/obs</def <</oc@ttf/ >>>% +/endgroup% +\begingroup + \catcode`\/=\catcode`\\ + \catcode`\\=13 + /catcode`/|=/catcode`/% + /catcode`/%=13 + /gdef/oldcomments{| + /makeatletter + /let/do/oc@verb/dospecials + /frenchspacing/@vobeyspaces/obs + /raggedright + /oc@verb/>| + /oc@verb/<| + /let\/oc@bslash + /let%/oc@percent + /obeylines + /parindent/z@ + /ttfamily/expandafter/let/expandafter/oc@ttf/the/font + /rmfamily + /hfuzz/maxdimen + } +/endgroup +\begingroup + \sloppy% + \obeylines% + \gdef\oc@percent#1^^M{% + \ifvmode% + \def\commentline{#1}% + \ifx\commentline\oldc% + \end{oldcomments}% + \else% + \ifx\commentline\begmac% + \begin{macrocode}% + \else% + \leavevmode% + #1^^M% + \fi\fi% + \else% + {\oc@ttf\char`\%}#1^^M% + \fi}% +\endgroup% +\@addtoreset{CodelineNo}{part} +\def\partname{File} +\newcommand*{\DocInclude}[1]{% + \relax + \clearpage + \docincludeaux + \IfFileExists{#1.fdd}{\def\currentfile{#1.fdd}}{\def\currentfile{#1.dtx}}% + \ifnum\@auxout=\@partaux + \@latexerr{\string\include\space cannot be nested}\@eha + \else \@docinclude#1 \fi} +\def\@docinclude#1 {\clearpage +\if@filesw \immediate\write\@mainaux{\string\@input{#1.aux}}\fi +\@tempswatrue\if@partsw \@tempswafalse\edef\@tempb{#1}\@for +\@tempa:=\@partlist\do{\ifx\@tempa\@tempb\@tempswatrue\fi}\fi +\if@tempswa \let\@auxout\@partaux \if@filesw +\immediate\openout\@partaux #1.aux +\immediate\write\@partaux{\relax}\fi +\let\@ltxdoc@PrintIndex\PrintIndex +\let\PrintIndex\relax +\let\@ltxdoc@PrintChanges\PrintChanges +\let\PrintChanges\relax +\let\@ltxdoc@theglossary\theglossary +\let\@ltxdoc@endtheglossary\endtheglossary +\part{\currentfile}% + {\let\ttfamily\relax + \xdef\filekey{\filekey, \thepart={\ttfamily\currentfile}}}% +\DocInput{\currentfile}% +\let\PrintIndex\@ltxdoc@PrintIndex +\let\PrintChanges\@ltxdoc@PrintChanges +\let\theglossary\@ltxdoc@theglossary +\let\endtheglossary\@ltxdoc@endtheglossary +\clearpage +\@writeckpt{#1}\if@filesw \immediate\closeout\@partaux \fi +\else\@nameuse{cp@#1}\fi\let\@auxout\@mainaux} +\gdef\codeline@wrindex#1{\if@filesw + \immediate\write\@indexfile + {\string\indexentry{#1}% + {\filesep\number\c@CodelineNo}}\fi}% +\let\filesep\@empty +\def\aalph#1{\@aalph{\csname c@#1\endcsname}} +\def\@aalph#1{% + \ifcase#1\or a\or b\or c\or d\or e\or f\or g\or h\or i\or + j\or k\or l\or m\or n\or o\or p\or q\or r\or s\or + t\or u\or v\or w\or x\or y\or z\or A\or B\or C\or + D\or E\or F\or G\or H\or I\or J\or K\or L\or M\or + N\or O\or P\or Q\or R\or S\or T\or U\or V\or W\or + X\or Y\or Z\else\@ctrerr\fi} +\def\docincludeaux{% + \def\thepart{\aalph{part}}\def\filesep{\thepart-}% + \let\filekey\@gobble + \g@addto@macro\index@prologue{% + \gdef\@oddfoot{\parbox{\textwidth}{\strut\footnotesize + \raggedright{\bfseries File Key:} \filekey}}% + \let\@evenfoot\@oddfoot}% + \global\let\docincludeaux\relax + \gdef\@oddfoot{% + \expandafter\ifx\csname ver@\currentfile\endcsname\relax + File \thepart: {\ttfamily\currentfile} % + \else + \GetFileInfo{\currentfile}% + File \thepart: {\ttfamily\filename} % + Date: \filedate\ % + Version \fileversion + \fi + \hfill\thepage}% + \let\@evenfoot\@oddfoot}% +\def\task#1#2{} +\newcommand{\see}[2]{\emph{see} #1} +\RecordChanges +\PageIndex +\CodelineNumbered + +\ifpdf + \definecolor{defbackground}{rgb}{1,1,0.75} + \newsavebox\defsbox + \newlength\defwidth + \newenvironment{definition}[1][]{% + \def\defarg{#1}% + \setlength{\fboxsep}{4pt}\setlength{\fboxrule}{1.25pt}% + \begin{lrbox}{\defsbox}% + \setlength\defwidth\linewidth + \addtolength\defwidth{-2\fboxrule}% + \addtolength\defwidth{-2\fboxsep}% + \begin{minipage}{\defwidth}\flushleft + }{% + \end{minipage} + \end{lrbox}% + \vskip10pt + \noindent + \defarg\fcolorbox{black}{defbackground}{\usebox\defsbox}% + \vskip10pt + \noindent + \ignorespacesafterend + } + + \newenvironment{important}{% + \setlength{\fboxrule}{4pt}% + \setlength\defwidth{\linewidth}% + \addtolength\defwidth{-2\fboxsep}% + \addtolength\defwidth{-2\fboxrule}% + \begin{lrbox}{\defsbox}% + \begin{minipage}{\defwidth}% + }{% + \end{minipage}% + \end{lrbox}% + \par\vskip10pt\noindent + \fcolorbox{red}{white}{\usebox{\defsbox}}\par\vskip10pt + \noindent\ignorespacesafterend + } + + \newenvironment{prompt}{% + \par\vskip\baselineskip + \begin{ttfamily}\obeylines\noindent\ignorespaces + }{% + \end{ttfamily}% + \par\vskip\baselineskip + \noindent\ignorespacesafterend + } + + \newenvironment{display}{% + \par\vskip\baselineskip\noindent + \obeylines\ignorespaces + }{% + \par + \vskip\baselineskip + \noindent\ignorespacesafterend + } + + \newenvironment{labelledbox}[1]{% + \def\defarg{#1}% + \setlength{\fboxsep}{4pt}\setlength{\fboxrule}{1.25pt}% + \begin{lrbox}{\defsbox}% + \setlength\defwidth\linewidth + \addtolength\defwidth{-2\fboxrule}% + \addtolength\defwidth{-2\fboxsep}% + \begin{minipage}{\defwidth}\flushleft + }{% + \end{minipage} + \end{lrbox}% + \vskip10pt + \noindent + \begin{tabular}{@{}r@{}}% + \fbox{\usebox\defsbox}\\[4pt] + \footnotesize\mbox{\defarg}% + \end{tabular} + \vskip10pt + \noindent + \ignorespacesafterend + } + +\else + \newenvironment{definition}[1][]{% + \par\HCode{<hr><div title="Definition">}#1\noindent + }{% + \HCode{</div><hr>}\par\noindent + } + + \newenvironment{important}{% + \par\HCode{<div class="important" title="Important Note">}\noindent + }{% + \HCode{</div>}\par\noindent + } + + \newenvironment{prompt}{% + \HCode{<spacer type=vertical size=10>}\begin{ttfamily}\obeylines\ignorespaces + }{% + \end{ttfamily}\HCode{<spacer type=vertical size=10>}\noindent + } + + \newenvironment{display}{% + \HCode{<spacer type=vertical size=10>}\obeylines\ignorespaces + }{% + \HCode{<spacer type=vertical size=10>}\noindent + } + + \newenvironment{labelledbox}[1]{% + \par\HCode{<hr><div>}\marginpar{#1}\noindent + }{% + \HCode{</div><hr>}\par\noindent + } + +\fi + +\newcommand*{\appfmt}[1]{\texttt{#1}} +\newcommand*{\iapp}[1]{\index{#1=\appfmt{#1}|hyperpage}} +\newcommand*{\app}[1]{\appfmt{#1}\iapp{#1}} + +\newcommand*{\qt}[1]{``#1''} + +\newcommand*{\termdef}[1]{\emph{#1}\iterm{#1}} +\newcommand*{\term}[1]{#1\iterm{#1}} +\newcommand*{\iterm}[1]{\index{#1|main}} +\newcommand*{\tableref}[1]{\hyperref[#1]{table~\ref*{#1}}} +\newcommand*{\Tableref}[1]{\hyperref[#1]{Table~\ref*{#1}}} + +\newcommand*{\ics}[1]{\cs{#1}\SpecialMainIndex{#1}} + +\newcommand*{\icsopt}[2]{\index{#1 +options=\cs{#1} options>#2=\textsf{#2}|hyperpage}} + +\newcommand*{\csopt}[2]{\textsf{#2}\icsopt{#1}{#2}} + +\newcommand*{\pkgoptfmt}[1]{\textsf{#1}} + +% \ipkgopt[value]{option} +\newcommand*{\ipkgopt}[2][]{% + \def\@argi{#1}% + \ifx\@argi\@empty + \index{package options:>#2=\pkgoptfmt{#2}|main}% + \else + \index{package options:>#2=\pkgoptfmt{#2}>#1=\pkgoptfmt{#1}|main}% +\fi +} + +\newcommand*{\pkgopt}[2][]{% + \def\@argi{#1}% + \ifx\@argi\@empty + \pkgoptfmt{#2}\index{package options:>#2=\pkgoptfmt{#2}|main}% + \else + \pkgoptfmt{#2=#1}% + \index{package options:>#2=\pkgoptfmt{#2}>#1=\pkgoptfmt{#1}|main}% +\fi +} + +% \pkgoptval{value}{option} +\newcommand*{\pkgoptval}[2]{% + \pkgoptfmt{#1}% + \index{package options:>#2=\pkgoptfmt{#2}>#1=\pkgoptfmt{#1}|main}% +} + +\newcommand*{\filetypefmt}[1]{\texttt{#1}} +\newcommand*{\ifiletype}[1]{\index{file + types>#1=\filetypefmt{#1}|hyperpage}} + +\newcommand*{\filetype}[1]{\filetypefmt{#1}\ifiletype{#1}} + +\newcommand*{\styfmt}[1]{\textsf{#1}} + +\newcommand*{\isty}[1]{\index{#1 package=\styfmt{#1} + package|hyperpage}} +\newcommand*{\sty}[1]{\styfmt{#1}\isty{#1}} + +\newcommand*{\clsfmt}[1]{\textsf{#1}} + +\newcommand*{\icls}[1]{\index{#1 class=\clsfmt{#1} class|hyperpage}} +\newcommand*{\cls}[1]{\clsfmt{#1}\icls{#1}} + +\newcommand*{\envfmt}[1]{\textsf{#1}} +\newcommand*{\ienv}[1]{\index{#1 environment=\envfmt{#1} +environment|hyperpage}} +\newcommand*{\env}[1]{\envfmt{#1}\ienv{#1}} + +\newcommand*{\menu}[1]{\textsf{#1}} + +\ifpdf + \newcommand*{\toTop}{} + \newcommand*{\sectionref}[1]{Section~\ref{#1}} + \newcommand*{\qtdocref}[2]{\qt{#1} (\href{#2.pdf}{#2.pdf})} + \newcommand*{\docref}[2]{#1 (\href{#2.pdf}{#2.pdf})} + \newcommand*{\urlref}[2]{\url{#1}} + \newcommand*{\urlfootref}[2]{#2\footnote{\url{#1}}} + \newcommand*{\submenu}[1]{\,$\to$\,\menu{#1}} + + % \altdocref{text}{pdf}{html} + \newcommand*{\altdocref}[3]{#1 (\href{#2.pdf}{#2.pdf})} + + % \xrsectionref{label}{html file}{html title} + \newcommand*{\xrsectionref}[3]{Section~\ref{#1}} +\else + \newcommand*{\toTop}{\par\noindent\hyperlink{top}{Top}} + \AtBeginDocument{% + \hypertarget{top}{}% + \Configure{section}{}{\toTop}{}{}% + \Configure{subsection}{\toTop}{}{}{}% + \Configure{subsubsection}{\toTop}{}{}{}% + \Configure{paragraph}{\toTop\par}{}{}{}% + \Configure{subparagraph}{\toTop\par}{}{}{}% + \Css{div.important { background-color:red; }}% + } + + \let\oldlabel\label + \renewcommand*{\label}[1]{% + \HCode{<a name=\string"#1\string">}\oldlabel{#1}% + } + + \newcommand*{\sectionref}[1]{\hyperref[#1]{\S\ref*{#1} }\nameref{#1}} + \newcommand*{\xrsectionref}[3]{\href{#2.html\##1}{#3}} + \newcommand*{\qtdocref}[2]{\href{#2.html}{\qt{#1}}} + \newcommand*{\docref}[2]{\href{#2.html}{#1}} + \newcommand*{\altdocref}[3]{\href{#3.html}{#1}} + \newcommand*{\urlref}[2]{\href{#1}{#2}} + \newcommand*{\urlfootref}[2]{\href{#1}{#2}} + \newcommand*{\submenu}[1]{\menu{-\textgreater #1}} + + \renewcommand{\StopEventually}[1]{#1\toTop} +\fi + +\endinput |