%% 
%% This is file `doc.sty' generated
%% on <1990/2/24> with the docstrip utility (v1.1f). 
%% 
%% The original source file was `doc.doc'.
%% 
%% 
%% Copyright (C) 1989,1990 by Frank Mittelbach. All rights reserved. 
%% 
%% IMPORTANT NOTICE: 
%% 
%% You are not allowed to change this file. You may however copy this file 
%% to a different name and then change this copy. 
%% 
%% You are allowed to distribute this file under the condition that it is 
%% distributed together with all files mentioned in readme.mz1. If you 
%% receive only some of these files from someone, complain! 
%% 
%% You are NOT ALLOWED to distribute this file alone. You are NOT ALLOWED 
%% to take money for the distribution or use of this file (or a changed 
%% version) except for some nominal charge for copying etc. 
%% 
%% Error Reports in case of UNCHANGED versions to 
%% 
%% F. Mittelbach 
%% Eichenweg 29 
%% D-6500 Mainz 1 
%% Federal Republic of Germany 
%% Bitnet: <PZF5HZ@DRUEDS2> 
%% 

\def\fileversion{v1.5y}
\def\filedate{90/02/24}
\def\docdate {90/02/17}

%% \CheckSum{1424}
%% \CharacterTable
%%  {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         \~}
%%


\@ifundefined{macro@cnt}{}{\endinput}
\typeout{Style-Option: `doc' \fileversion\space <\filedate>  (FMi)}
\typeout{English Documentation \@spaces <\docdate>  (RMCS and FMi)}
\catcode`\^^A=14
\def\macrocode{\macro@code
   \frenchspacing \@vobeyspaces
   \xmacro@code}
\def\macro@code{%
   \topsep \MacrocodeTopsep
   \@beginparpenalty \predisplaypenalty
   \trivlist \parskip \z@ \item[]%
   \MacroFont
   \leftskip\@totalleftmargin \advance\leftskip\MacroIndent
   \rightskip\z@ \parindent\z@ \parfillskip\@flushglue
   \blank@linefalse \def\par{\ifblank@line
                             \leavevmode\fi
                             \blank@linetrue\@@par}
   \obeylines \let\do\@makeother \catcode`\`\active \@noligs \dospecials
   \global\@newlistfalse
   \global\@minipagefalse
   \ifcodeline@index
     \everypar{\global\advance\c@CodelineNo\@ne
               \llap{\theCodelineNo\ \hskip\@totalleftmargin}}%
   \fi
   \init@crossref}
\newif\ifblank@line
\def\endmacrocode{%
                 \everypar{}%
                 \global\@inlabelfalse
                 \endtrivlist
                 \close@crossref}
\@ifundefined{MacroFont}{%
  \ifx\undefined\selectfont
    \def\MacroFont{\small\tt}\else
    \def\MacroFont{\math@fontsfalse\small\tt}\fi
  }{}
\newskip\MacrocodeTopsep \MacrocodeTopsep = 3pt plus 1.2pt minus 1pt
\newdimen\MacroIndent
\settowidth\MacroIndent{\scriptsize\rm 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  \verb+\macro@code+;
!    notice the
!    use of the new escape character.  We manage to get the argument
!    surrounded by the string \verb+\end{macrocode}+, but at the end
!    however, in spite of the actual characters used during the
!    definition of
!    this macro, \verb+\end+ with the argument \verb+{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 \verb+\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 \verb+\catcode+ changes have been made local by
!    commencing a
!    new group, there now follows the matching \verb+\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}
\def\@verbatim{\trivlist \item[]\if@minipage\else\vskip\parskip\fi
      \leftskip\@totalleftmargin\rightskip\z@
      \parindent\z@\parfillskip\@flushglue\parskip\z@
      \@tempswafalse
 \def\par{\if@tempswa\hbox{}\fi\@tempswatrue\@@par
   \check@percent}%
 \obeylines \tt \catcode`\`\active \@noligs \let\do\@makeother
 \dospecials}
{\catcode`\%=12
 \long\gdef\check@percent#1{\ifx #1%\let\next\@empty \else
                                    \let\next=#1\fi \next}}

\newcount\macro@cnt \macro@cnt=0
\newcount\macro@level \macro@level=0
\def\macro{%
   \ifnum\macro@level=\z@ \begingroup \fi
   \MakePrivateLetters \m@cro@}
\long\def\m@cro@#1{\endgroup \topsep\MacroTopsep \trivlist
   \advance\macro@level\@ne
   \edef\saved@macroname{\string#1}%
  \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[\noexpand\PrintMacroName{\string#1}]}%
  \@tempa
  {\advance\c@CodelineNo\@ne\SpecialMainIndex{#1}\nobreak}%
  \def\@tempa{#1}%
  \ifx\@tempa\@defpar \else \DoNotIndex{#1}\fi
  \ignorespaces}
\def\endmacro{%
   \endtrivlist
   \ifnum\macro@level>\@ne \advance\macro@level\m@ne \begingroup \fi}
\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\ }}{}
\def\SpecialEscapechar#1{%
    \begingroup \catcode`\~\active
     \uccode`\~`#1%
     \uppercase{\gdef\active@escape@char{~}}%
     \escapechar\m@ne  \xdef\special@escape@char{\string#1}%
   \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}
\def\short@macro#1{\edef\macro@namepart{\string#1}%
   \ifnot@excluded
     \produce@index{#1}\fi
    \scan@allowedfalse#1%
    \scan@allowedtrue }
\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
    \do@not@index}
\long\def\do@not@index#1{%
    \global\let\@gtempa\index@excludelist
    \def\@elt{\noexpand\@elt\noexpand}%
    \def\@tempa{#1}\@for\@tempb:=\@tempa\do
      {\xdef\@gtempa{\@gtempa \expandafter \@elt \@tempb}}%
  \endgroup \let\index@excludelist\@gtempa}
\def\index@excludelist{}
\def\@for#1:=#2\do#3{\expandafter\def\expandafter\@fortmp
      \expandafter{#2}%
      \ifx\@fortmp\@empty \else
          \expandafter\@forloop#2,\@nil,\@nil,\@@#1{#3}\fi}
\def\ifnot@excluded{\@tempswatrue
    \setbox\z@\hbox{\let\@elt\exclude@test \index@excludelist}%
    \if@tempswa}
\def\str@p#1>{}
\def\exclude@test#1{%
    \edef\macro@namepart{\expandafter\str@p\meaning\macro@namepart}
    \edef\@tempa{\expandafter\@gobble\string#1}%
    \ifx \macro@namepart\@tempa
       \aftergroup\@tempswafalse \let\@elt\@gobble \fi}
\@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\special@index{\expandafter\@gobble
                                        \string#1\actualchar
                                        \string\verb
                                        \quotechar*\verbatimchar
                                        \string#1\verbatimchar
                                        \encapchar main}%
                        \@esphack}
\def\SpecialUsageIndex#1{\@bsphack\index{\expandafter\@gobble\string#1%
    \actualchar\string\verb\quotechar*\verbatimchar
    \string#1\verbatimchar
    \encapchar usage}\@esphack}
\def\SpecialEnvIndex#1{\@bsphack
    \index{#1\actualchar{\tt #1} (environment)\encapchar usage}%
    \index{environments:\levelchar{\tt #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{%
    \special@index{\quotechar\percentchar\actualchar\string\verb
           \quotechar*\verbatimchar\quotechar\bslash
           \percentchar\percentchar\verbatimchar}}}{}

{\catcode`\%=12 \gdef\percentchar{%}}
\input{multicol.sty}
\newdimen\IndexMin         \IndexMin       = 80pt
\newcount\c@IndexColumns   \c@IndexColumns = 3
\def\theindex{\multicols\c@IndexColumns[\index@prologue][\IndexMin]%
     \IndexParms \let\item\@idxitem \ignorespaces}
\let\endtheindex=\endmulticols
\long\def\IndexPrologue#1{\@bsphack\def\index@prologue{#1}\@esphack}
\@ifundefined{index@prologue}
     {\def\index@prologue{\section*{Index}%
                 \markboth{Index}{Index}%
                 The italic numbers denote the pages where the
                 corresponding entry is described,
                 numbers underlined point to the definition,
                 all others indicate the places where it 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{#1}}}{}
\@ifundefined{usage}{\def\usage#1{{\it #1}}}{}
\def\PrintIndex{\@input{\jobname.ind}}
\def\printindex{\typeout{\string\printindex\space is obsolete!}%
                \typeout{Please use \string\PrintIndex\space
                         if you are a macro implementor^^J
                         or get a newer version of the documented
                         software if you are a user}%
                \PrintIndex}
\def\changes{\@bsphack\begingroup\@sanitize
   \catcode`\\\z@ \catcode`\ 10 \MakePercentIgnore
   \changes@}
\def\changes@#1#2#3{%
  \def\protect##1{\string##1\space}%
  \edef\@tempa{\noexpand\glossary{#1\levelchar
                                 \expandafter\@gobble
                                 \saved@macroname\actualchar
                                 \string\verb\quotechar*%
                                 \verbatimchar\saved@macroname
                                 \verbatimchar: #3}}%
  \@tempa\endgroup\@esphack}
\def\saved@macroname{` General Changes '}
\let\RecordChanges\makeglossary
\newdimen\GlossaryMin         \GlossaryMin       = 80pt
\newcount\c@GlossaryColumns   \c@GlossaryColumns = 2
\def\theglossary{%
    \multicols\c@GlossaryColumns[\glossary@prologue][\GlossaryMin]%
    \GlossaryParms \let\item\@idxitem \ignorespaces}

\let\endtheglossary=\endmulticols
\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}}
\long\def\StopEventually#1{\@bsphack\def\Finale{#1%
              \check@checksum}%
           \init@checksum
           \@esphack}
\def\OnlyDescription{\@bsphack\long\def\StopEventually##1{%
           ##1\endinput}\@esphack}
{\obeyspaces%
\gdef\meta{\begingroup\obeyspaces%
\def {\egroup\space\hbox\bgroup\it}\m@ta}}
\def\m@ta#1{\hbox\bgroup$\langle$\it#1\/$\rangle$\egroup\endgroup}
\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@{$^{\@thefnmark }$\hss }}%
      \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\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
         \errhelp\wrong@checksum
         \errmessage{Checksum not passed
                    (\the\check@sum<>\the\bslash@cnt)}%
        \fi
     \fi
     \global\check@sum\z@}
\newcount\check@sum           \check@sum  = \z@
\newcount\bslash@cnt          \bslash@cnt = \z@
\newhelp\wrong@checksum
   {The currently documented file seems to be wrong.^^J%
    Try to get a correct version.}%
\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
       \errhelp\wrong@table
       \errmessage{Character table corrupted}%
       \show\default~table
       \show\used~table\fi
    \endgroup}
\newhelp\wrong@table{Some of the ASCII characters are corrupted.^^J
          I now \string\show\space you both tables for comparison.}

\global\let\CharTableChanges\makeatother
\CharTableChanges
\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
\newif\ifcodeline@index \codeline@indexfalse
\def\codeline@wrindex#1{\immediate\write\@indexfile
            {\string\indexentry{#1}%
            {\number\c@CodelineNo}}}
\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@
\def\theCodelineNo{\scriptsize\rm\arabic{CodelineNo}}
       \tolerance=1000\relax
{ \catcode`\"=12
  \global\mathcode`\\="705C \global\mathcode`\@="7040 }
\@ifundefined{DocstyleParms}{}{}
\DocstyleParms     \let\DocstyleParms\relax
\@ifundefined{AmSTeX}
   {\def\AmSTeX{\leavevmode\hbox{$\cal A\kern-.2em\lower.376ex%
        \hbox{$\cal M$}\kern-.2em\cal S$-\TeX}}}{}
\@ifundefined{BibTeX}
   {\def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em%
    T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}}{}
\@ifundefined{SliTeX}
   {\def\SliTeX{{\rm S\kern-.06emL\kern-.18em\raise.32ex\hbox
                {\sc i}\kern -.03em\TeX}}}{}
\@ifundefined{PlainTeX}{\def\PlainTeX{{\sc Plain}\kern2pt\TeX}}{}
\@ifundefined{Web}{\def\Web{{\sc Web}}}{}
\def\MakePercentIgnore{\catcode`\%9\relax}
\def\MakePercentComment{\catcode`\%14\relax}
\def\DocInput#1{\MakePercentIgnore\input{#1}\MakePercentComment}


\endinput

