%%
%% This is file `xdoc2.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% xdoc2.dtx  (with options: `pkg,xdoc2')
%% 
%% This file may be distributed and/or modified under the conditions
%% of the LaTeX Project Public License, either version 1.2 of this
%% license or (at your option) any later version. The latest version
%% of this license is in
%%    http://www.latex-project.org/lppl.txt
%% and version 1.2 or later is part of all distributions of LaTeX
%% version 1999/12/01 or later.
%% 
%% This file may only be distributed together with a copy of the source
%% file from which it was generated. You may distribute that source file
%% without this generated file.
%% 
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{xdoc2}[2003/07/06 prot2.5 doc reimplementation package]
\DeclareOption{dolayout}{%
   \if@twoside
      \setlength\oddsidemargin{\paperwidth}
      \addtolength\oddsidemargin{-\textwidth}
      \addtolength\oddsidemargin{-\evensidemargin}
      \addtolength\oddsidemargin{-2in}
   \fi
}
\DeclareOption{olddocinclude}{%
   \PassOptionsToPackage{\CurrentOption}{xdoc2}%
}
\DeclareOption{fileispart}{%
   \PassOptionsToPackage{\CurrentOption}{xdoc2}%
}
\DeclareOption{notrawchar}{%
   \PassOptionsToPackage{\CurrentOption}{xdoc2}%
}
\ProcessOptions\relax
\RequirePackage{doc}
\@ifundefined{PrintChar}{}{%
   \PackageInfo{xdoc2}{Redefining \protect\PrintChar}%
}
\def\PrintChar{%
   \ifx \protect\@typeset@protect
      \expandafter\XD@PrintChar
   \else\ifx \protect\noexpand
      \string\PrintChar
      \expandafter\expandafter \expandafter\XD@threedignum
   \else
      \noexpand\PrintChar
   \fi\fi
}
\edef\XD@threedignum#1{%
   \string{%
   \noexpand\ifnum #1<100 %
      \noexpand\ifnum #1<10 0\noexpand\fi
      0%
   \noexpand\fi
   \noexpand\number#1%
   \string}%
}
\def\XD@PrintChar#1{%
   \leavevmode
   \begingroup
      \count@=#1\relax
      \ifnum \@xxxii>\count@
         \advance \count@ 64%
         \InvisibleCharPrefix
         \PrintVisibleChar\count@
         \InvisibleCharSuffix
      \else\ifnum 127>\count@
         \PrintVisibleChar\count@
      \else
         \InvisibleCharPrefix
         \ifnum 127=\count@ \PrintVisibleChar{63}\else
            \@tempcnta=\count@
            \divide \count@ \sixt@@n
            \@tempcntb=\count@
            \multiply \count@ \sixt@@n
            \advance \@tempcnta -\count@
            \advance \@tempcntb \ifnum 9<\@tempcntb 87\else 48\fi
            \advance \@tempcnta \ifnum 9<\@tempcnta 87\else 48\fi
            \char\@tempcntb \char\@tempcnta
         \fi
         \InvisibleCharSuffix
      \fi\fi
   \endgroup
}
\newcommand\InvisibleCharPrefix{%
   \/\em
   \PrintVisibleChar{`\^}\PrintVisibleChar{`\^}%
}
\newcommand\InvisibleCharSuffix{\/}
\@ifpackagewith{xdoc2}{notrawchar}{%
   \newcommand\PrintVisibleChar[1]{%
      \ifcase #1%
      \or\or\or\or\or\or\or\or \or\or\or\or\or\or\or\or
      \or\or\or\or\or\or\or\or \or\or\or\or\or\or\or\or
      % "20
         \textvisiblespace \or!\or\textquotedbl \or\#\or\textdollar
         \or\%\or\&\or\textquoteright\or(\or)\or*\or+\or,\or-\or.\or/%
      \or % "30
         0\or1\or2\or3\or4\or5\or6\or7\or8\or9\or:\or;\or
         \textless\or=\or\textgreater\or?%
      \or % "40
         @\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 % "50
         P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z\or [\or
         \textbackslash \or]\or\textasciicircum \or\textunderscore
      \or % "60
         \textquoteleft \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 % "70
         p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z\or
         \textbraceleft \or\textbar \or\textbraceright \or
         \textasciitilde
      \fi
   }%
}{%
   \newcommand\PrintVisibleChar[1]{\char #1\relax}%
}
\newcommand\Bslash{\PrintChar{92}}
\begingroup
   \catcode\z@=12
   \@ifdefinable\SetHarmState{
      \gdef\SetHarmState#1#2#3{%
         \begingroup
            \ifx #1\BooleanTrue
               \count@=#2\relax
            \else
               \protected@edef\@tempa{#2}%
               \count@=\expandafter`\@tempa\relax
            \fi
            \ifx #3\BooleanTrue
               \edef\@tempa{\noexpand\PrintChar{\the\count@}}%
            \else
               \uccode\z@=\count@
               \uppercase{\def\@tempa{^^@}}%
            \fi
            \global\expandafter\let
               \csname XD@harmless@\the\count@ \endcsname \@tempa
         \endgroup
      }%
   }
\endgroup
\count@=\z@
\loop
   \expandafter\xdef \csname XD@harmless@\the\count@ \endcsname
      {\noexpand\PrintChar{\the\count@}}%
   \advance \count@ \@ne
\ifnum 33>\count@ \repeat
\begingroup
   \catcode\z@=12\relax
   \@firstofone{%
\endgroup
   \loop
      \if \ifnum 11=\catcode\count@ 1\else \ifnum 12=\catcode\count@
            1\else 0\fi\fi 1%
         \uccode\z@=\count@
         \uppercase{\def\@tempa{^^@}}%
      \else
         \edef\@tempa{\noexpand\PrintChar{\the\count@}}%
      \fi
      \global\expandafter\let
         \csname XD@harmless@\the\count@ \endcsname \@tempa
      \advance \count@ \@ne
   \ifnum 127>\count@ \repeat
}
\loop
   \expandafter\xdef \csname XD@harmless@\the\count@ \endcsname
      {\noexpand\PrintChar{\the\count@}}%
\ifnum \@cclv>\count@
   \advance \count@ \@ne
\repeat
\AtBeginDocument{%
   \SetHarmState\BooleanFalse\actualchar\BooleanTrue
   \SetHarmState\BooleanFalse\encapchar\BooleanTrue
   \SetHarmState\BooleanFalse\levelchar\BooleanTrue
   \SetHarmState\BooleanFalse\quotechar\BooleanTrue
}
\def\MakeHarmless#1#2{%
   \begingroup
      \toks@={}%
      \escapechar=`\\%
      \XD@harmless@#2\XD@harmless@
   \expandafter\endgroup \expandafter\def \expandafter#1%
      \expandafter{\the\toks@}%
}
\def\XD@harmless@iii{%
   \expandafter\futurelet \expandafter\@let@token
   \expandafter\XD@harmless@iv \string
}
\def\XD@harmless@iv{%
   \ifx \@let@token\@sptoken
      \expandafter\XD@harmless@v
   \else
      \expandafter\XD@harmless@vi
   \fi
}
\begingroup
   \catcode`3=\catcode`a
   \catcode`2=\catcode`a
   \@firstofone{\gdef\XD@harmless@v} {%
      \toks@=\expandafter{\the \expandafter\toks@ \XD@harmless@32}%
      \XD@harmless@
   }
\endgroup
\def\XD@harmless@vi#1{%
   \toks@=\expandafter{\the\expandafter\expandafter\expandafter\toks@
      \csname XD@harmless@\number`#1\endcsname}%
   \XD@harmless@
}
\def\XD@harmless@{\futurelet\@let@token \XD@harmless@i}
\def\XD@harmless@i{%
   \ifcat \noexpand\@let@token \noexpand\XD@harmless@
      \expandafter\XD@harmless@ii
   \else
      \expandafter\XD@harmless@iii
   \fi
}
\def\XD@harmless@ii#1{%
   \@ifundefined{XD@harmless\string#1}{%
      \expandafter\XD@harmless@vi \string#1%
   }{\csname XD@harmless\string#1\endcsname}%
}
\expandafter\let
   \csname XD@harmless\string\XD@harmless@\endcsname \@empty
\@namedef{XD@harmless\string\PrintChar}#1{%
   \toks@=\expandafter{\the\expandafter\expandafter\expandafter\toks@
      \csname XD@harmless@\number#1\endcsname}%
   \XD@harmless@
}
\newcommand\SetCharProblematic[1]{%
   \SetHarmState\BooleanTrue{#1}\BooleanTrue
}
\AtBeginDocument{%
   \gdef\SetCharProblematic#1{%
      \if@filesw
         \immediate\write\@auxout{\string\SetHarmState
            \string\BooleanTrue {\number#1}\string\BooleanTrue}%
      \fi
   }%
}
\def\@tempa#1{%
  \rem@special{#1}%
  \expandafter\gdef\expandafter\dospecials\expandafter
    {\dospecials \do #1}%
  \expandafter\gdef\expandafter\@sanitize\expandafter
    {\@sanitize \@makeother #1}}
\ifx \@tempa\add@special
   \def\add@special#1{%
      \rem@special{#1}%
      \expandafter\gdef\expandafter\dospecials\expandafter
         {\dospecials \do #1}%
      \expandafter\gdef\expandafter\@sanitize\expandafter
         {\@sanitize \@makeother #1}%
      \SetCharProblematic{`#1}%
   }
\else
   \PackageWarningNoLine{xdoc2}{Unfamiliar definition of
      \protect\add@special;\MessageBreak the macro was not patched}
\fi
\newcommand\IndexEntry[3]{%
   \@bsphack
   \begingroup
      \def\LevelSame##1{\levelchar##1}%
      \def\LevelSorted##1##2{\levelchar##1\actualchar##2}%
      \protected@edef\@tempa{#1}%
      \protected@edef\@tempa{\expandafter\@gobble\@tempa\@empty}%
      \@ifundefined{XD@idxencap@#2}{%
         \PackageError{xdoc2}{Index entry encap `#2' unknown}\@eha
      }{%
         \XD@if@index{%
            \csname XD@idxencap@#2\endcsname\@tempa{#3}%
         }{}%
      }%
   \endgroup
   \@esphack
}
\let\XD@if@index=\@secondoftwo
\newcommand*\levelsame{\LevelSame}
\newcommand*\levelsorted{\LevelSorted}
\def\XD@idxencap@none#1#2{%
   \protected@write\@indexfile{}{\XD@index@keyword{#1}{#2}}%
}
\def\XD@idxencap@main#1#2{%
   \protected@write\@indexfile{}%
      {\XD@index@keyword{#1\encapchar main}{#2}}%
}
\def\XD@idxencap@usage#1#2{%
   \protected@write\@indexfile{}%
      {\XD@index@keyword{#1\encapchar usage}{#2}}%
}
\@ifundefined{XD@index@keyword}{%
   \edef\XD@index@keyword{\@backslashchar indexentry}%
}{}
\renewcommand\CodelineIndex{%
   \makeindex
   \let\XD@if@index=\@firstoftwo
   \codeline@indextrue
   \def\TheXDIndexNumber{\thecodelineno}%
}
\renewcommand\PageIndex{%
   \makeindex
   \let\XD@if@index=\@firstoftwo
   \codeline@indexfalse
   \def\TheXDIndexNumber{\thepage}%
}
\def\TheXDIndexNumber{??}
\let\XD@operators@list\@empty
\newcommand\MakeSortKey[3]{%
   \begingroup
      \def\PrintChar{\string\PrintChar\XD@threedignum}%
      #3%
      \unrestored@protected@xdef\@gtempa{#2}%
   \endgroup
   \protected@edef#1{%
      \expandafter\XD@operators@list \expandafter\@firstofone
      \@gtempa\@empty
   }%
}
\def\XD@make@operator#1{%
   \begingroup
      \def\PrintChar{\string\PrintChar\XD@threedignum}%
      \let\protect\@gobble
      \xdef\@gtempa{#1}%
   \endgroup
   \expandafter\edef \csname XD@operatorA@\@gtempa\endcsname
      ##1\@firstofone##2\@empty{%
      \expandafter\noexpand \csname XD@operatorB@\@gtempa\endcsname
      \noexpand\@firstofone ##2\noexpand\@firstofone \@gtempa
      \noexpand\@firstofone \relax##1\noexpand\@empty
   }%
   \expandafter\edef \csname XD@operatorB@\@gtempa \expandafter\endcsname
      \expandafter##\expandafter1\expandafter\@firstofone \@gtempa
      ##2\@firstofone##3\relax##4\@empty{%
      \noexpand\ifx $##1$%
         \noexpand\expandafter \noexpand\@firstoftwo
      \noexpand\else
         \noexpand\expandafter \noexpand\@secondoftwo
      \noexpand\fi{%
         ##4\noexpand\@firstofone ##2 \@gtempa
      }{##4##1}%
      \noexpand\@empty
   }%
   \toks@=\expandafter{\csname XD@operatorA@\@gtempa\endcsname}%
}
\newcommand\DoNotIndexBy[1]{%
   \MakeHarmless\@tempa{#1}%
   \XD@make@operator\@tempa
   \expandafter\def \expandafter\XD@operators@list \expandafter{%
      \the\expandafter\toks@ \XD@operators@list
   }%
}
\renewcommand*\SortIndex[2]{%
   \IndexEntry{\LevelSorted{#1}{#2}}{none}{\thepage}%
}
\renewcommand\SpecialIndex[1]{%
   \expandafter\MakeHarmless \expandafter\@tempa
      \expandafter{\string#1}%
   \IndexEntry{%
      \LevelSorted{%
         \expandafter\XD@unbackslash \@tempa\@empty
      }{\texttt{\@tempa}}%
   }{none}{\TheXDIndexNumber}%
}
\renewcommand\SpecialMainIndex[1]{%
   \expandafter\MakeHarmless \expandafter\@tempa
      \expandafter{\string#1}%
   \IndexEntry{%
      \LevelSorted{%
         \expandafter\XD@unbackslash \@tempa\@empty
      }{\texttt{\@tempa}}%
   }{main}{\TheXDIndexNumber}%
}
\renewcommand\SpecialUsageIndex[1]{%
   \expandafter\MakeHarmless \expandafter\@tempa
      \expandafter{\string#1}%
   \IndexEntry{%
      \LevelSorted{%
         \expandafter\XD@unbackslash \@tempa\@empty
      }{\texttt{\@tempa}}%
   }{usage}{\thepage}%
}
\def\XD@unbackslash#1{%
   \ifx \PrintChar#1%
      \expandafter\XD@unbackslash@
   \else
      \expandafter#1%
   \fi
}
\def\XD@unbackslash@#1{\ifnum #1=92 \else \PrintChar{#1}\fi}
\renewcommand\SpecialMainEnvIndex[1]{%
   \IndexEntry{\LevelSorted{#1}{\texttt{#1} (environment)}}{main}%
      {\TheXDIndexNumber}%
   \IndexEntry{\LevelSame{environments:}\LevelSorted{#1}{\texttt{#1}}}%
      {main}{\TheXDIndexNumber}%
}
\renewcommand\SpecialEnvIndex[1]{%
   \IndexEntry{\LevelSorted{#1}{\texttt{#1} (environment)}}{usage}%
      {\thepage}%
   \IndexEntry{\LevelSame{environments:}\LevelSorted{#1}{\texttt{#1}}}%
      {usage}{\thepage}%
}
\def\it@is@a#1{%
   \edef\@tempa{#1}%
   \XD@special@index{\csname XD@harmless@\number
      \expandafter`\@tempa\endcsname}%
}
\def\XD@special@index#1{%
   \MakeSortKey\@tempa{#1}{}%
   \IndexEntry{\LevelSorted{\@tempa}{\texttt{\Bslash#1}}}{none}%
      {\TheXDIndexNumber}%
}
\renewcommand\LeftBraceIndex{\XD@special@index{\PrintChar{123}}}
\renewcommand\RightBraceIndex{\XD@special@index{\PrintChar{125}}}
\renewcommand\PercentIndex{\XD@special@index{\PrintChar{37}}}
\let\OldMakeIndex\relax
\def\@wrindex#1{%
   \protected@write\@indexfile{}{\XD@index@keyword{#1}{\thepage}}%
   \endgroup
   \@esphack
}
\def\macro@switch{%
   \ifcat\noexpand\next a%
      \toks@={}%
      \expandafter\macro@name
   \else
      \expandafter\short@macro
   \fi
}
\def\scan@macro{%
   \special@escape@char
   \step@checksum
   \ifscan@allowed
      \def\next{\futurelet\next\macro@switch}%
   \else \let\next\@empty \fi
   \next}
\def\short@macro#1{%
   \protected@edef\macro@namepart{%
         \csname XD@harmless@\number`#1\endcsname
   }%
   \ifnot@excluded \XD@special@index{\macro@namepart}\fi
   \scan@allowedfalse #1\scan@allowedtrue
}
\def\macro@name#1{%
   \toks@=\expandafter{\the\expandafter\expandafter\expandafter\toks@
      \csname XD@harmless@\number`#1\endcsname}%
   \futurelet\next\more@macroname}
\def\more@macroname{%
   \ifcat\noexpand\next a%
      \expandafter\macro@name
   \else
      \macro@finish
   \fi
}
\def\macro@finish{%
   \edef\macro@namepart{\the\toks@}%
   \ifnot@excluded \XD@special@index{\macro@namepart}\fi
   \macro@namepart
}
\def\XD@paren@PrintChar#1{\noexpand\PrintChar(\number#1)}
\renewcommand\DoNotIndex{%
   \begingroup
      \MakePrivateLetters
      \catcode`\#=12\catcode`\\=12\catcode`,=12\catcode`\%=12
   \expandafter\endgroup \do@not@index
}
\begingroup
   \catcode`\|=0
   \catcode`\,=12
   \catcode`\\=12
   |gdef|do@not@index#1{%
      |def|@tempa{#1}%
      |ifx |@empty|@tempa |else
         |toks@={}%
         |expandafter|XD@do@not@index |@gobble #1,\|XD@do@not@index,\%
      |fi
   }
   |gdef|XD@do@not@index#1,\{%
      |ifx |XD@do@not@index#1%
         |index@excludelist=|expandafter{%
            |the|expandafter|index@excludelist |the|toks@
         }%
         |expandafter|@gobble
      |else
         |MakeHarmless|@tempa{#1}%
         |begingroup
            |let|PrintChar|XD@paren@PrintChar
            |unrestored@protected@xdef|@gtempa{|noexpand|do|@tempa}%
         |endgroup
         |toks@=|expandafter{|the|expandafter|toks@ |@gtempa}%
      |fi
      |XD@do@not@index
   }
|endgroup
\newcommand\DoNotIndexHarmless[1]{%
   \begingroup
      \let\PrintChar\XD@paren@PrintChar
      \unrestored@protected@xdef\@gtempa{\noexpand\do#1}%
   \endgroup
   \index@excludelist=\expandafter{%
      \the\expandafter\index@excludelist \@gtempa
   }%
}
\edef\@tempa{\the\index@excludelist}
\index@excludelist{}
\ifx \@tempa\@empty \else
   \def\@tempb#1,\@nil{\do@not@index{#1}}
   \expandafter\@tempb \@tempa \@nil
   \let\@tempa\@empty
   \let\@tempb\@empty
\fi
\def\ifnot@excluded{%
   \begingroup
      \let\PrintChar\XD@paren@PrintChar
      \edef\@tempa{\macro@namepart}%
   \expandafter\endgroup \expandafter\expanded@notin
      \expandafter{\expandafter\do \@tempa\do}%
      {\the\index@excludelist}%
}
\newcommand\SendExternalXRefMsg[2]{%
   \begingroup
      \if@filesw
         \let\protect\@unexpandable@protect
         \immediate\write\@auxout{\@percentchar\@percentchar
            ExternalXRefMsg {#1} {#2}}%
      \fi
   \endgroup
}
\newcommand\syncexternalxref{%
   \if@filesw
      \immediate\write\@auxout{\@percentchar\@percentchar
         ExternalXRefSync {\the\inputlineno} {\thecodelineno}%
      }%
   \fi
}
\def\XD@input#1#2{%
   \if@filesw
      \immediate\write\@auxout{\@percentchar\@percentchar
         ExternalXRefFile {begin} {#1} {#2}%
      }%
      \immediate\write\@auxout{\@percentchar\@percentchar
         ExternalXRefSync {0} {\thecodelineno}%
      }%
   \fi
   \input{#1}%
   \if@filesw
      \immediate\write\@auxout{\@percentchar\@percentchar
         ExternalXRefFile {end} {#1} {#2}%
      }%
      \immediate\write\@auxout{\@percentchar\@percentchar
         ExternalXRefSync {\the\inputlineno} {\thecodelineno}%
      }%
   \fi
}
\renewcommand\DocInput[1]{%
   \relax
   \ifnum \catcode`\%=14
      \expandafter\@firstoftwo
   \else
      \expandafter\@secondoftwo
   \fi{%
      \MakePercentIgnore\XD@input{#1}{}\MakePercentComment
   }{\XD@input{#1}{}}%
}
\renewcommand\IndexInput[1]{%
   \begingroup
      \macro@code
      \frenchspacing
      \@vobeyspaces
      \XD@input{#1}{TeX}%
      \endmacrocode
   \endgroup
}
\let\IfOddPageSituation=\@secondoftwo
\if@twoside
   \def\StepPageSituation{%
      \global\advance \macro@cnt \@ne
      \ifnum \XD@next@wrong<\macro@cnt
         \global\@next\XD@next@wrong\XD@wrongs@list{}{%
            \let\XD@next@wrong\maxdimen
         }%
      \fi
      \ifnum \ifodd\c@page -\fi \@ne=%
         \ifnum \XD@next@wrong=\macro@cnt -\fi \@ne
         \global\let\IfOddPageSituation\@secondoftwo
      \else
         \global\let\IfOddPageSituation\@firstoftwo
      \fi
   }
   \def\XD@next@wrong{-\maxdimen}
   \let\XD@wrongs@list\@empty
\else
   \let\StepPageSituation=\relax
\fi
\if@twoside
   \def\RecordPageSituation{%
      \if@filesw
         \edef\@tempa{%
            \string\XD@situation{\the\macro@cnt}{%
               \ifodd\c@page 1\else 0\fi
            }{\IfOddPageSituation{1}{0}}%
         }%
         \write\@auxout\expandafter{\@tempa{\ifodd\c@page 1\else 0\fi}}%
      \fi
   }%
\else
   \let\RecordPageSituation=\relax
\fi
\if@twoside
   \def\XD@situation#1#2#3#4{%
      \if #2#4\else
         \ifnum #1<\XD@next@wrong
            \begingroup
               \def\@elt##1##2##3{%
                  \noexpand\@elt
                  \ifcase
                     \ifx ##1\BooleanTrue 0%
                     \else\ifnum ##2<#1 1%
                     \else\ifnum ##2>#1 2%
                     \else 0%
                     \fi\fi\fi
                  \space
                     {##2}\expandafter\@secondoftwo
                  \or
                     {##2}\expandafter\@firstoftwo
                  \else
                     {#1}\noexpand\@elt{##2}\expandafter\@secondoftwo
                  \fi{##3\BooleanFalse}{##3\BooleanTrue}%
               }%
               \xdef\XD@wrongs@list{%
                  \expandafter\expandafter \expandafter\@elt
                  \expandafter\@firstoftwo \expandafter\BooleanFalse
                  \XD@wrongs@list \@gobble
               }%
            \endgroup
         \else\ifnum #1>\XD@next@wrong
            \def\XD@next@wrong{#1}%
            \expandafter\gdef \expandafter\XD@wrongs@list
               \expandafter{\XD@wrongs@list \@elt{#1}}%
         \fi\fi
      \fi
   }
   \def\XD@check@situation#1#2#3#4{%
      \if #3#4\else
         \PackageWarningNoLine{xdoc2}{Page breaks may have changed.%
            \MessageBreak Rerun to get marginal material right}%
         \let\XD@situation\@gobblefour
      \fi
   }
   \AtBeginDocument{\global\let\XD@situation\XD@check@situation}
\else
   \let\XD@situation\@gobblefour
\fi
\if@twoside
   \def\XD@set@situation#1{%
      \global\macro@cnt=#1\relax
      \loop \ifnum \XD@next@wrong<\macro@cnt
         \global\@next\XD@next@wrong\XD@wrongs@list{}{%
            \let\XD@next@wrong\maxdimen
         }%
      \repeat
   }
\else \let\XD@set@situation=\@gobble \fi
\if@twoside
   \def\XD@write@situation@ckpt{%
      \ifx \@elt\@wckptelt
         \immediate\write\@partaux{%
            \string\XD@set@situation{\the\macro@cnt}%
         }%
      \else
         \noexpand\XD@write@situation@ckpt
      \fi
   }
   \expandafter\def \expandafter\cl@@ckpt
      \expandafter{\cl@@ckpt \XD@write@situation@ckpt}
\fi
\def\saved@macroname{{ }{\generalname}}
\newif\if@version@key@
\@version@key@false
\newcommand*\uintver[1]{%
   \if@version@key@
      \ifnum #1>9
         \ifnum #1<100
            A%
         \else\ifnum #1<\@m
            B%
         \else\ifnum #1<\@M
            C%
         \else
            D%
         \fi\fi\fi
      \fi
   \fi
   \expandafter\@firstofone \expandafter{\number#1}%
}
\def\changes@#1#2#3{%
   \global\@version@key@true
   \protected@edef\@tempa{#1}%
   \global\@version@key@false
   \protected@edef\@tempa{%
      \noexpand\glossary{%
         \@tempa\actualchar#1\levelchar
         \expandafter\@firstoftwo\saved@macroname\actualchar
            \expandafter\@secondoftwo\saved@macroname:\levelchar
         #2\actualchar#3%
      }%
   }%
   \@tempa
   \endgroup
   \@esphack
}
\def\@wrglossary#1{%
   \protected@write\@glossaryfile{}%
      {\XD@glossary@keyword{#1}{\thepage}}%
   \endgroup
   \@esphack
}
\@ifundefined{XD@glossary@keyword}{%
   \edef\XD@glossary@keyword{\@backslashchar glossaryentry}%
}{}
\newcommand\definechange{%
   \begingroup\@sanitize
   \catcode`\\\z@ \catcode`\ 10 \MakePercentIgnore
   \expandafter\endgroup \XD@definechange
}
\def\XD@definechange#1#2#3#4{\@namedef{XD@ch-#1}{{#2}{#3}{#4}}}
\newcommand*\usechange[1]{%
   \@ifundefined{XD@ch-#1}{%
      \PackageError{xdoc2}{Named change `#1' undefined}\@eha
   }{%
      \expandafter\expandafter \expandafter\XD@usechange
         \csname XD@ch-#1\endcsname
   }%
}
\def\XD@usechange#1#2#3{%
   \def\@tempa{{ }{\generalname}}%
   \ifx \@tempa\saved@macroname
      \let\@tempa\@empty
   \else
      \protected@edef\@tempa{%
         \encapchar labelednumber%
         {\expandafter\@secondoftwo\saved@macroname}%
      }
   \fi
   \global\@version@key@true
   \protected@edef\@tempb{#1}%
   \global\@version@key@false
   \glossary{%
      \@tempb\actualchar #1\levelchar
      \space\actualchar\generalname:\levelchar
      #2\actualchar#3\@tempa
   }%
}
\newcommand*\labelednumber[2]{#2\nolinebreak[2] (#1)}
\def\XD@grab@arguments#1#2{%
   \toks@={#1}%
   #2\XD@endgrab
}
\def\XD@endgrab{\the\toks@}
\long\def\XD@grab@marg#1\XD@endgrab#2{%
   \addto@hook\toks@{{#2}}%
   #1\XD@endgrab
}
\def\XD@grab@oarg#1\XD@endgrab{%
   \@ifnextchar[{\XD@grab@oarg@{#1}}{%
      \addto@hook\toks@\NoValue
      #1\XD@endgrab
   }%
}
\long\def\XD@grab@oarg@#1[#2]{%
   \addto@hook\toks@{{#2}}%
   #1\XD@endgrab
}
\def\XD@grab@sarg#1#2\XD@endgrab{%
   \@ifnextchar#1{%
      \addto@hook\toks@\BooleanTrue
      \@firstoftwo{#2\XD@endgrab}%
   }{%
      \addto@hook\toks@\BooleanFalse
      #2\XD@endgrab
   }%
}
\def\XD@grab@withprivate{%
   \begingroup\MakePrivateLetters\relax\expandafter\endgroup
   \XD@grab@marg
}
\def\XD@grab@asmacro{%
   \begingroup
      \catcode`\\=12 \MakePrivateLetters\relax
   \expandafter\endgroup
   \XD@grab@marg
}
\def\XD@grab@harmless#1#2\XD@endgrab#3{%
   \MakeHarmless\@tempa{#3}%
   #1%
   \toks@=\expandafter{\the\expandafter\toks@ \expandafter{\@tempa}}%
   #2\XD@endgrab
}
\def\XD@grab@harmless@oarg#1\XD@endgrab{%
   \@ifnextchar[{\XD@grab@harmless@oarg@{#1}}{%
      \addto@hook\toks@\NoValue
      #1\XD@endgrab
   }%
}
\long\def\XD@grab@harmless@oarg@#1[#2]{%
   \MakeHarmless\@tempa{#2}%
   \toks@=\expandafter{\the\expandafter\toks@ \expandafter{\@tempa}}%
   #1\XD@endgrab
}
\def\XD@grab@harmless@asmacro{%
   \begingroup
      \catcode`\\=12 \MakePrivateLetters\relax
   \expandafter\endgroup
   \XD@grab@harmless{%
      \protected@edef\@tempa{%
         \expandafter\XD@unbackslash\@tempa\@empty
      }%
   }%
}
\def\XD@grab@harmless@cs{%
   \begingroup
      \MakePrivateLetters\relax
   \expandafter\endgroup \XD@grab@harmless@cs@
}
\long\def\XD@grab@harmless@cs@#1\XD@endgrab#2{%
   \begingroup
      \escapechar=\m@ne
   \expandafter\endgroup
   \expandafter\MakeHarmless \expandafter\@tempa
      \expandafter{\string#2}%
   \toks@=\expandafter{\the\expandafter\toks@ \expandafter{\@tempa}}%
   #1\XD@endgrab
}
\def\XD@grab@harmless@withprivate{%
   \begingroup\MakePrivateLetters\relax\expandafter\endgroup
   \XD@grab@harmless
}
\def\XDStackItemLabels#1{%
   \setbox\z@=\vbox{%
      \ifdim \XD@macro@dimen=-\maxdimen
         \setbox\z@=\vtop{%
            \color@begingroup
            \everypar={}%
            #1%
            \color@endgroup
         }%
         \kern-\ht\z@
         \unvbox\z@
      \else
         \color@begingroup
         \everypar={}%
         \kern\XD@macro@dimen
         \setbox\z@=\copy\strutbox \ht\z@=\z@ \box\z@
         #1%
         \color@endgroup
      \fi
      \boxmaxdepth=\dp\strutbox
   }%
   \global\XD@macro@dimen=\ht\z@
   \vtop to\z@{\unvbox\z@ \vss}%
}
\newdimen\XD@macro@dimen
\newcommand\XDToMargin[1]{%
   \hb@xt@\z@{%
      \IfOddPageSituation{%
         \dimen@=-\@totalleftmargin
         \advance \dimen@ \labelsep
         \advance \dimen@ \textwidth
         \advance \dimen@ \marginparsep
         \kern\dimen@
      }\hss
      #1%
      \IfOddPageSituation\hss{%
         \dimen@=\@totalleftmargin
         \advance \dimen@ -\labelsep
         \advance \dimen@ \marginparsep
         \kern\dimen@
      }%
   }%
}
\newcommand\XDParToMargin[1]{%
   \parindent=\z@
   \setbox\z@=\vbox{%
      \leftskip=\z@skip
      \rightskip=\z@\@plus 1fil%
      \parfillskip=\z@skip
      \hsize=\marginparwidth
      \linepenalty=1000%
      \color@begingroup
      \noindent\ignorespaces #1\@@par
      \color@endgroup
   \expandafter}%
   \expandafter\ifnum \the\prevgraf<\tw@
      \XDToMargin{#1}%
   \else
      \hsize=\z@
      \leftskip=\z@ \@plus \marginparwidth
      \rightskip=\leftskip
      \IfOddPageSituation{%
         \dimen@=-\@totalleftmargin
         \advance \dimen@ \labelsep
         \advance \dimen@ \textwidth
         \advance \dimen@ \marginparsep
         \advance \leftskip \dimen@
         \advance \rightskip -\dimen@ \@minus \p@
         \advance \rightskip -\marginparwidth
         \parfillskip=\z@ \@plus 1fil%
      }{%
         \dimen@=\@totalleftmargin
         \advance \dimen@ -\labelsep
         \advance \dimen@ \marginparsep
         \advance \leftskip -\dimen@ \@minus \p@
         \advance \leftskip -\marginparwidth
         \advance \rightskip \dimen@
         \parfillskip=\z@ \@plus -\marginparwidth%
      }
      \noindent\nobreak\hskip\parfillskip
      \ignorespaces #1\@@par
   \fi
}
\def\XD@m@cro#1#2#3#4{%
   \topsep\MacroTopsep
   \trivlist
   \global\setbox\@labels=\hbox{%
      \unhbox\@labels
      \if@inlabel \else
         \global\XD@macro@dimen=-\maxdimen
         \StepPageSituation
         \RecordPageSituation
      \fi
      \advance \c@codelineno \@ne
      #2%
   }%
   \let\makelabel\XDStackItemLabels
   \item[#1]%
   \protected@edef\saved@macroname{#3}%
   #4%
   \ignorespaces
}
\newcommand\NewMacroEnvironment{%
   \@ifstar\XD@NewMacroEnvironment\XD@NewMacroEnvironment@
}
\def\XD@NewMacroEnvironment@#1#2#3#4{%
   \XD@NewMacroEnvironment{#1}{#2}{#3}{\XDToMargin{#4}}%
}
\def\XD@NewMacroEnvironment#1#2#3#4#5#6#7{%
   \expandafter\@ifdefinable\csname#1\endcsname{%
      \expandafter\def \csname#1\expandafter\endcsname
         \expandafter{\expandafter\XD@grab@arguments
         \csname\@backslashchar#1\endcsname{#2}}%
      \let\l@ngrel@x\relax
      \expandafter\@yargdef \csname\@backslashchar#1\endcsname \@ne
         {#3}{\XD@m@cro{#4}{#5}{#6}{#7}}%
      \expandafter\let \csname end#1\endcsname \endtrivlist
   }%
}
\newcommand\XDMainIndex[1]{\IndexEntry{#1}{main}{\TheXDIndexNumber}}
\let\macro=\relax
\let\endmacro=\relax
\NewMacroEnvironment{macro}{\XD@grab@harmless@asmacro}{1}
   {\MacroFont\Bslash#1}
   {\MakeSortKey\@tempa{#1}{}%
    \XDMainIndex{\LevelSorted{\@tempa}{\texttt{\Bslash#1}}}}
   {{#1}{\texttt{\Bslash#1}}}
   {\DoNotIndexHarmless{#1}}
\let\environment=\relax
\let\endenvironment=\relax
\NewMacroEnvironment{environment}{\XD@grab@harmless@asmacro}{1}
   {\MacroFont#1}
   {\XDMainIndex{\LevelSorted{#1}{\texttt{#1} (environment)}}%
    \XDMainIndex{%
       \LevelSame{environments:}\LevelSorted{#1}{\texttt{#1}}%
   }}%
   {{#1}{\texttt{#1}}}
   {}%
\NewMacroEnvironment{option}{\XD@grab@harmless\relax}{1}
   {\MacroFont#1 \normalfont option}
   {\XDMainIndex{\LevelSorted{#1}{\texttt{#1} option}}%
    \XDMainIndex{%
       \LevelSame{options:}\LevelSorted{#1}{\texttt{#1}}%
   }}%
   {{#1 option}{\texttt{#1} option}}
   {}%
\NewMacroEnvironment{switch}{\XD@grab@harmless\relax}{1}
   {\MacroFont#1 \normalfont switch}%
   {%
      \MakeSortKey\XD@last@key{#1}{}%
      \XDMainIndex{%
         \LevelSame{switches:}\LevelSorted{\XD@last@key}{\texttt{#1}}%
      }%
      \XDMainIndex{\LevelSorted{\XD@last@key}{\texttt{#1} switch}}%
      \XDMainIndex{\LevelSorted{if#1}{\texttt{\Bslash if#1}}}%
      \MakeSortKey\@tempa{#1false}{}%
      \XDMainIndex{\LevelSorted{\@tempa}{\texttt{\Bslash#1false}}}%
      \MakeSortKey\@tempa{#1true}{}%
      \XDMainIndex{\LevelSorted{\@tempa}{\texttt{\Bslash#1true}}}%
   }%
   {{#1}{\texttt{#1} switch}}
   {\DoNotIndexHarmless{if#1}%
    \DoNotIndexHarmless{#1false}%
    \DoNotIndexHarmless{#1true}}%
\if@twoside
   \@mparswitchtrue
   \normalmarginpar
\fi
\newcommand\GenericDescribePrint[1]{%
   \setbox\z@=\vbox{%
      \parindent=\z@
      \leftskip=\z@skip
      \rightskip=\z@\@plus 1fil%
      \parfillskip=\z@skip
      \hsize=\marginparwidth
      \linepenalty=\@m
      \color@begingroup
      \noindent\ignorespaces #1\@@par
      \color@endgroup
   \expandafter}%
   \expandafter\ifnum \the\prevgraf<\tw@
      \if@twoside
         \marginpar[{\raggedleft\strut #1}]{\raggedright\strut #1}%
      \else
         \marginpar{\raggedleft\strut#1}%
      \fi
   \else
      \if@twoside
         \marginpar[{%
            \leftskip=\z@ \@plus \marginparwidth
            \rightskip=\leftskip
            \parfillskip=\z@ \@plus -\marginparwidth
            \noindent\nobreak\hskip\parfillskip
            \ignorespaces #1%
         }]{%
            \leftskip=\z@ \@plus \marginparwidth
            \rightskip=\leftskip
            \parfillskip=\z@ \@plus 1fil%
            \noindent\nobreak\hskip\parfillskip
            \ignorespaces #1%
         }%
      \else
         \marginpar{%
            \leftskip=\z@ \@plus \marginparwidth
            \rightskip=\leftskip
            \parfillskip=\z@ \@plus -\marginparwidth
            \noindent\nobreak\hskip\parfillskip
            \ignorespaces #1%
         }%
      \fi
   \fi
}
\newcommand\NewDescribeCommand[4]{%
   \@ifdefinable#1{%
      \expandafter\def \expandafter#1\expandafter{%
         \expandafter\XD@grab@arguments \csname\string#1\endcsname{#2}%
      }%
      \let\l@ngrel@x\relax
      \expandafter\@yargdef \csname\string#1\endcsname \@ne {#3}%
         {\leavevmode#4\ignorespaces}%
   }%
}
\let\DescribeMacro=\relax
\NewDescribeCommand\DescribeMacro{\XD@grab@harmless@cs}{1}{%
   \GenericDescribePrint{\MacroFont\Bslash#1}%
   \MakeSortKey\@tempa{#1}{}%
   \IndexEntry{%
      \LevelSorted{\@tempa}{\texttt{\Bslash#1}}%
   }{usage}{\thepage}%
}
\let\DescribeEnv=\relax
\NewDescribeCommand\DescribeEnv{%
   \XD@grab@harmless@withprivate\relax
}{1}{%
   \GenericDescribePrint{\MacroFont#1}%
   \IndexEntry{%
      \LevelSame{environments:}\LevelSorted{#1}{\texttt{#1}}%
   }{usage}{\thepage}%
   \IndexEntry{%
      \LevelSorted{#1}{\texttt{#1} (environment)}%
   }{usage}{\thepage}%
}
\NewDescribeCommand\describeoption{\XD@grab@harmless\relax}{1}{%
   \GenericDescribePrint{\MacroFont#1 \normalfont option}%
   \IndexEntry{%
      \LevelSame{options:}\LevelSorted{#1}{\texttt{#1}}%
   }{usage}{\thepage}%
   \IndexEntry{%
      \LevelSorted{#1}{\texttt{#1} option}%
   }{usage}{\thepage}%
}
\NewDescribeCommand\describecsfamily{\XD@grab@harmless{}}{1}{%
   \GenericDescribePrint{%
      \MetaNormalfont\MacroFont\Bslash#1%
   }%
   \MakeSortKey\@tempa{#1}{\def\meta##1{(##1)}}%
   \IndexEntry{%
      \LevelSorted{\@tempa}{\texttt{\protect\MetaNormalfont\Bslash#1}}%
   }{usage}{\thepage}%
}
\@ifpackagewith{xdoc2}{olddocinclude}{%
   \@ifclassloaded{ltxdoc}{%
      \renewcommand\CodelineIndex{%
         \makeindex
         \let\XD@if@index=\@firstoftwo
         \codeline@indextrue
         \def\TheXDIndexNumber{\filesep\thecodelineno}%
      }%
      \expandafter\def \expandafter\docincludeaux \expandafter{%
         \docincludeaux
         \gdef\filesep{\thepart\XD@page@compositor}%
      }
      \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
            \part{#1.dtx}%
            \if@filesw
               \immediate\write\@partaux{\@percentchar\@percentchar
                  ExternalXRefWrap {\filesep} {}%
               }%
            \fi
            {%
               \let\ttfamily\relax
               \xdef\filekey{%
                  \filekey, \thepart={\ttfamily\currentfile}%
               }%
            }%
            \DocInput{#1.dtx}%
            \clearpage
            \@writeckpt{#1}%
            \if@filesw \immediate\closeout\@partaux \fi
         \else
            \@nameuse{cp@#1}%
         \fi
         \let\@auxout\@mainaux
      }
   }{}
}{}
\@ifpackagewith{xdoc2}{olddocinclude}{}{%
   \def\DocInclude#1{%
      \ifnum\@auxout=\@partaux
         \@latexerr{\string\include\space cannot be nested}{%
            Your \protect\DocInclude\space will be reduced to a
            \protect\DocInput.%
         }%
         \DocInput{#1.dtx}%
      \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
         \docincludeaux{#1.dtx}%
         \DocInput{#1.dtx}%
         \clearpage
         \@writeckpt{#1}%
         \if@filesw \immediate\closeout\@partaux \fi
      \else
         \deadcycles\z@
         \@nameuse{cp@#1}%
      \fi
      \let\@auxout\@mainaux
   }%
}{}
\@ifpackagewith{xdoc2}{olddocinclude}{\iffalse}{
   \@ifpackagewith{xdoc2}{fileispart}{\iftrue}{
      \let\docincludeaux=\@gobble
      \iffalse
   }
} % If fileispart and not olddocinclude then
   \def\docincludeaux#1{%
      \MakeHarmless\currentfile{#1}%
      \part{\texttt{\currentfile}}%
      \pagestyle{docpart}%
      \let\filedate\@empty
      \let\fileversion\@empty
      \let\fileinfo\@empty
      \protected@xdef\filekey{%
         \filekey, \thepart=\texttt{\currentfile}%
      }%
      \if@filesw
         \immediate\write\@partaux{\@percentchar\@percentchar
            ExternalXRefWrap {\thepart\XD@page@compositor} {}%
         }%
      \fi
   }%
   \@ifclassloaded{ltxdoc}{}{\@addtoreset{codelineno}{part}}%
   \renewcommand\CodelineIndex{%
      \makeindex
      \let\XD@if@index=\@firstoftwo
      \codeline@indextrue
      \def\TheXDIndexNumber{\thepart\XD@page@compositor\thecodelineno}%
   }%
   \def\partname{File}
   \def\thepart{\aalph{part}}
   \expandafter\def \expandafter\IndexParms
      \expandafter{\IndexParms \pagestyle{docindex}}
   \PassOptionsToPackage{usedocindexps}{docindex}
   \PassOptionsToPackage{usedocindexps}{docidx2e}
\fi
\@ifpackagewith{xdoc2}{olddocinclude}{}{%
   \def\ps@docpart{%
      \def\@oddfoot{%
         File: \texttt{\currentfile}%
         \ifx \filedate\@empty \else \ Date: \filedate\fi
         \ifx \fileversion\@empty \else \ Version: \fileversion\fi
         \hfill\thepage
      }%
      \if@twoside
         \def\@evenfoot{%
            \thepage\hfill
            File: \texttt{\currentfile}%
            \ifx \filedate\@empty \else \ Date: \filedate\fi
            \ifx \fileversion\@empty \else \ Version: \fileversion\fi
         }%
      \else \let\@evenfoot\@oddfoot \fi
   }
   \newcommand\setfileinfo[1][]{%
      \edef\@tempa{#1}%
      \expandafter\XD@set@file@info \@tempa\@empty? ? \@empty\@empty
   }
   \def\XD@set@file@info#1 #2 #3\@empty#4\@empty{%
      \def\filedate{#1}%
      \def\fileversion{#2}%
      \def\fileinfo{#3}%
   }
}{}
   \def\ps@docindex{%
      \def\@oddfoot{%
         \parbox{\textwidth}{%
            \strut\footnotesize\raggedright
            \textbf{File Key:} \filekey\@empty
         }%
      }%
      \let\@evenfoot\@oddfoot
   }%
   \let\filekey\@gobble
\providecommand*\aalph[1]{\@aalph{\csname c@#1\endcsname}}
\providecommand*\@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
}
\providecommand*\XD@page@compositor{-}
\@ifundefined{BooleanFalse}{\def\BooleanFalse{TF}}{}
\@ifundefined{BooleanTrue}{\def\BooleanTrue{TT}}{}
\@ifundefined{NoValue}{\def\NoValue{-NoValue-}}{}
\begingroup
\obeyspaces%
\catcode`\^^M\active%
\gdef\@gtempa{\begingroup\obeyspaces\catcode`\^^M\active%
\let^^M\do@space\let \do@space%
\def\-{\egroup\discretionary{-}{}{}\hbox\bgroup\itshape}%
\m@ta}%
\endgroup
\ifx \meta\@gtempa
   \@ifundefined{l@nohyphenation}{\newlanguage\l@nohyphenation}{}
   \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
   }
   \let\meta@font@select=\itshape
\fi
\newcommand\MetaNormalfont{\def\meta@font@select{\normalfont\itshape}}
\@namedef{XD@harmless\string\meta}#1{%
   \toks@=\expandafter{\the\toks@ \meta{#1}}%
   \XD@harmless@
}
\renewcommand\check@checksum{%
   \relax
   \ifnum \check@sum=\z@
      \PackageInfo{doc}{This macro file has no checksum!\MessageBreak
         The checksum should be \the\bslash@cnt}%
   \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.\MessageBreak Try to get a correct version.}%
   \fi\fi
   \global\check@sum\z@
}
\@ifundefined{c@codelineno}{}{%
   \PackageInfo{xdoc2}{Overwriting codelineno counter}%
}
\let\c@codelineno=\c@CodelineNo
\let\cl@codelineno=\@empty
\let\p@codelineno=\@empty
\def\thecodelineno{\@arabic\c@codelineno}
\newcommand\PrintCodelineNo{\reset@font\scriptsize\thecodelineno}
\def\theCodelineNo{\PrintCodelineNo}
\endinput
%%
%% End of file `xdoc2.sty'.
