%%
%% This is file `soul.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% soul.dtx  (with options: `package')
%% 
%% IMPORTANT NOTICE:
%% 
%% For the copyright see the source file.
%% 
%% Any modified versions of this file must be renamed
%% with new filenames distinct from soul.sty.
%% 
%% For distribution of the original source see the terms
%% for copying and modification in the file soul.dtx.
%% 
%% This generated file may be distributed as long as the
%% original source files, as listed above, are part of the
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
%% File: soul.dtx  Copyright (C) 1998, 1999, 2002  Melchior FRANZ
%% $Id: soul.dtx,v 1.88 2002/05/29 13:19:21 m Exp $
\expandafter\ifx\csname SOUL@\endcsname\relax\else
  \expandafter\endinput
\fi
\expandafter\ifx\csname documentclass\endcsname\relax
    \chardef\atcode=\catcode`@
    \catcode`\@=11
    \def\DeclareRobustCommand*{\def}
    \def\DeclareOption#1#2{\expandafter\def\csname#1\endcsname{#2}}
    \def\PackageError#1#2#3{{%
        \newlinechar`^^J%
        \errorcontextlines\z@
        \edef\\{\errhelp{#3}}\\%
        \errmessage{Package #1 error: #2}%
    }}
    \def\@height{height}
    \def\@depth{depth}
    \def\@width{width}
    \def\@plus{plus}
    \def\@minus{minus}
    \font\SOUL@tt=ectt1000
    \let\@xobeysp\space
    \let\linebreak\break
    \let\mbox\hbox
\else
    \NeedsTeXFormat{LaTeX2e}
    \ProvidesPackage{soul}
        [2002/05/29 v2.3 letterspacing/underlining  (mf)]
    \newfont\SOUL@tt{ectt1000}
    \newcommand*\sodef{}
    \newcommand*\resetso{}
    \newcommand*\capsdef{}
    \newcommand*\capsfont{}
    \newcommand*\setulcolor{}
    \newcommand*\setuloverlap{}
    \newcommand*\setul{}
    \newcommand*\resetul{}
    \newcommand*\setuldepth{}
    \newcommand*\setstcolor{}
    \newcommand*\sethlcolor{}
    \newcommand*\so{}
    \newcommand*\ul{}
    \newcommand*\st{}
    \newcommand*\hl{}
    \newcommand*\caps{}
    \newcommand*\soulaccent{}
    \newcommand*\soulfont{}
\fi
\newtoks\SOUL@word
\newtoks\SOUL@lasttoken
\toksdef\SOUL@syllable\z@
\newtoks\SOUL@cmds
\newtoks\SOUL@buffer
\newtoks\SOUL@token
\dimendef\SOUL@syllgoal\z@
\dimendef\SOUL@syllwidth\tw@
\dimendef\SOUL@charkern=4
\dimendef\SOUL@hyphkern=6
\countdef\SOUL@minus\z@
\countdef\SOUL@comma\tw@
\countdef\SOUL@apo=4
\countdef\SOUL@grave=6
\countdef\SOUL@level=8
\newskip\SOUL@spaceskip
\newif\ifSOUL@ignorespaces
\newcommand*\soulomit{\noexpand\soulomit}
\def\SOUL@stopM{\SOUL@stop}
\let\SOUL@stop\relax
\def\SOUL@lowerthan{}
\def\SOUL@lowerthanM{\<}
\def\SOUL@hyphenhintM{\-}
\def\SOUL@n*{\let\SOUL@spc= }\SOUL@n* %
\def\SOUL@{%
    \afterassignment\SOUL@expand
    \let\SOUL@@
}
\def\SOUL@expand{%
    \ifcat\bgroup\noexpand\SOUL@@
        \bgroup
        \let\<\SOUL@lowerthan
        \gdef\SOUL@eventuallyexhyphen##1{}%
        \let\SOUL@soeventuallyskip\relax
        \SOUL@spaceskip=\fontdimen\tw@\font\@plus\fontdimen\thr@@\font
            \@minus\fontdimen4\font
        \SOUL@ignorespacesfalse
        \leavevmode
        \SOUL@preamble
        \SOUL@lasttoken={}%
        \SOUL@word={}%
        \SOUL@minus\z@
        \SOUL@comma\z@
        \SOUL@apo\z@
        \SOUL@grave\z@
        \SOUL@level\z@
        \let\SOUL@n\SOUL@scan
    \else
        \bgroup
            \def\\##1##2{\def##2{\noexpand##2}}%
            \the\SOUL@cmds
            \def\\{\noexpand\\}%
            \def~{\noexpand~}%
            \def\,{\noexpand\,}%
            \def\S{\noexpand\S}%
            \def\slash{\noexpand\slash}%
            \def\textregistered{\noexpand\textregistered}%
            \def\textcircled{\noexpand\textcircled}%
            \def\copyright{\noexpand\copyright}%
            \def\TeX{\noexpand\TeX}%
            \def\LaTeX{\noexpand\LaTeX}%
            \let\protect\noexpand
            \xdef\SOUL@n{\noexpand\SOUL@{\SOUL@@}}%
        \egroup
    \fi
    \SOUL@n
}
\def\SOUL@scan{%
    \futurelet\SOUL@@\SOUL@eval
}
\def\SOUL@eval{%
    \def\SOUL@n*##1{\SOUL@scan}%
    \if\noexpand\SOUL@@\SOUL@spc
    \else
        \SOUL@ignorespacesfalse
    \fi
    \ifnum\SOUL@minus=\thr@@
        \SOUL@doword
        \SOUL@eventuallyexhyphen{-}%
        \SOUL@exhyphen{---}%
        \SOUL@minus\z@
    \else\ifnum\SOUL@comma=\tw@
        \edef\x{\SOUL@word={\the\SOUL@word{{,,}}}}\x
        \SOUL@comma\z@
    \else\ifnum\SOUL@apo=\tw@
        \edef\x{\SOUL@word={\the\SOUL@word{{''}}}}\x
        \SOUL@apo\z@
    \else\ifnum\SOUL@grave=\tw@
        \edef\x{\SOUL@word={\the\SOUL@word{{``}}}}\x
        \SOUL@grave\z@
    \fi\fi\fi\fi
    \ifx\SOUL@@-%
        \advance\SOUL@minus\@ne
    \else\ifx\SOUL@@,%
        \advance\SOUL@comma\@ne
    \else\ifx\SOUL@@'%
        \advance\SOUL@apo\@ne
    \else\ifx\SOUL@@`%
        \advance\SOUL@grave\@ne
    \else
        \ifnum\SOUL@minus=\tw@
            \SOUL@doword
            \SOUL@eventuallyexhyphen{-}%
            \SOUL@exhyphen{--}%
            \SOUL@minus\z@
        \else\ifnum\SOUL@minus=\@ne
            \SOUL@doword
            \SOUL@eventuallyexhyphen{-}%
            \SOUL@exhyphen{-}%
            \SOUL@minus\z@
        \else\ifnum\SOUL@comma=\@ne
            \edef\x{\SOUL@word={\the\SOUL@word,}}\x
            \SOUL@comma\z@
        \else\ifnum\SOUL@apo=\@ne
            \edef\x{\SOUL@word={\the\SOUL@word'}}\x
            \SOUL@apo\z@
        \else\ifnum\SOUL@grave=\@ne
            \edef\x{\SOUL@word={\the\SOUL@word`}}\x
            \SOUL@grave\z@
        \fi\fi\fi\fi\fi
        \ifcat\egroup\noexpand\SOUL@@
            \SOUL@doword
            \ifnum\SOUL@level>\z@
                \egroup
                \def\SOUL@n*{\afterassignment\SOUL@scan\let\SOUL@}%
            \else
                \SOUL@eventuallyexhyphen\null
                \def\SOUL@n*{\SOUL@postamble}%
            \fi
        \else\ifx\SOUL@@\par
            \def\SOUL@n*\par{\par\leavevmode\SOUL@scan}%
        \else\if\noexpand\SOUL@@\SOUL@spc
            \SOUL@doword
            \SOUL@eventuallyexhyphen\null
            \ifSOUL@ignorespaces
            \else
                \SOUL@everyspace{}%
            \fi
            \def\SOUL@n* {\SOUL@scan}%
        \else\ifx\SOUL@@\\%
            \SOUL@doword
            \SOUL@eventuallyexhyphen\null
            \SOUL@everyspace{\unskip\nobreak\hfil\break}%
            \SOUL@ignorespacestrue
        \else\ifx\SOUL@@~%
            \SOUL@doword
            \SOUL@eventuallyexhyphen\null
            \SOUL@everyspace{\nobreak}%
        \else\ifx\SOUL@@\slash
            \SOUL@doword
            \SOUL@eventuallyexhyphen{/}%
            \SOUL@exhyphen{/}%
        \else\ifx\SOUL@@\mbox
            \def\SOUL@n*{\SOUL@addprotect}%
        \else\ifx\SOUL@@\hbox
            \def\SOUL@n*{\SOUL@addprotect}%
        \else\ifx\SOUL@@\soulomit
            \def\SOUL@n*\soulomit##1{%
                \SOUL@doword
                {\spaceskip\SOUL@spaceskip##1}%
                \SOUL@scan
            }%
        \else\ifx\SOUL@@\break
            \SOUL@doword
            \break
        \else\ifx\SOUL@@\linebreak
            \SOUL@doword
            \SOUL@everyspace{\linebreak}%
        \else\ifcat\bgroup\noexpand\SOUL@@
            \def\SOUL@n*{\SOUL@addgroup{}}%
        \else\ifcat$\noexpand\SOUL@@
            \def\SOUL@n*{\SOUL@addmath}%
        \else
            \def\SOUL@n*{\SOUL@dotoken}%
        \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
    \fi\fi\fi\fi
    \SOUL@n*%
}
\def\SOUL@dotoken#1{%
    \def\SOUL@@{\SOUL@addtoken{#1}}%
    \def\\##1##2{%
        \edef\SOUL@x{\string#1}%
        \edef\SOUL@n{\string##2}%
        \ifx\SOUL@x\SOUL@n
            \def\SOUL@@{\SOUL@docmd{##1}{#1}}%
        \else
            \edef\SOUL@n{\string##2\space}%
            \ifx\SOUL@x\SOUL@n
                \def\SOUL@@{\SOUL@docmd{##1}{#1}}%
            \fi
        \fi
    }%
    \the\SOUL@cmds
    \SOUL@@
}
\def\SOUL@docmd#1#2{%
    \ifx9#1%
        \def\SOUL@@{\SOUL@addgroup{#2}}%
    \else\ifx1#1%
        \SOUL@doword
        \def\SOUL@@{\SOUL@dofont{#2}}%
    \else
        \SOUL@doword
        #2%
        \def\SOUL@@{\SOUL@scan}%
    \fi\fi
    \SOUL@@
}
\def\SOUL@dofont#1{%
    #1%
    \bgroup
    \advance\SOUL@level\@ne
    \afterassignment\SOUL@scan
    \let\SOUL@
}
\def\SOUL@addgroup#1#2{%
    {\let\protect\noexpand
    \edef\x{\global\SOUL@word={\the\SOUL@word{{\noexpand#1#2}}}}\x}%
    \SOUL@scan
}
\def\SOUL@addmath$#1${%
    {\let\protect\noexpand
    \edef\x{\global\SOUL@word={\the\SOUL@word{{\hbox{$#1$}}}}}\x}%
    \SOUL@scan
}
\def\SOUL@addprotect#1#2{%
    {\let\protect\noexpand
    \edef\x{\global\SOUL@word={\the\SOUL@word{{\hbox{#2}}}}}\x}%
    \SOUL@scan
}
\def\SOUL@addtoken#1{%
    \edef\x{\SOUL@word={\the\SOUL@word\noexpand#1}}\x
    \SOUL@scan
}
\def\SOUL@exhyphen#1{%
    \SOUL@getkern{\the\SOUL@lasttoken}{\SOUL@hyphkern}{#1}%
    \gdef\SOUL@eventuallyexhyphen##1{%
        \SOUL@getkern{#1}{\SOUL@charkern}{##1}%
        \SOUL@everyexhyphen{#1}%
        \gdef\SOUL@eventuallyexhyphen####1{}%
    }%
}
\SOUL@cmds={%
    \\9\`\\9\'\\9\^\\9\"\\9\~\\9\=\\9\.%
    \\9\u\\9\v\\9\H\\9\t\\9\c\\9\d\\9\b
    \\1\emph\\1\textrm\\1\textsf\\1\texttt\\1\textmd\\1\textbf
    \\1\textup\\1\textsl\\1\textit\\1\textsc\\1\textnormal
    \\0\rmfamily\\0\sffamily\\0\ttfamily\\0\mdseries\\0\upshape
    \\0\slshape\\0\itshape\\0\scshape\\0\normalfont
    \\0\em\\0\rm\\0\bf\\0\it\\0\tt\\0\sc\\0\sl\\0\sf
    \\0\tiny\\0\scriptsize\\0\footnotesize\\0\small
    \\0\normalsize\\0\large\\0\Large\\0\LARGE\\0\huge\\0\Huge
    \\1\textfrak\\1\textswab\\1\textgoth
    \\0\frakfamily\\0\swabfamily\\0\gothfamily
}
\def\soulfont#1#2{{%
    \edef\x{\global\SOUL@cmds={\the\SOUL@cmds
        \noexpand\\#2\noexpand#1}}\x
}}
\def\soulaccent#1{\soulfont{#1}9}
\def\SOUL@doword{%
    \edef\x{\the\SOUL@word}%
    \ifx\x\empty
    \else
        \SOUL@buffer={}%
        \setbox\z@\vbox{%
            \SOUL@tt
            \hyphenchar\font`\-
            \hfuzz\maxdimen
            \hbadness\@M
            \pretolerance\m@ne
            \tolerance\@M
            \leftskip\z@
            \rightskip\z@
            \hsize1sp
            \everypar{}%
            \parfillskip\z@\@plus1fil
            \hyphenpenalty-\@M
            \noindent
            \hskip\z@
            \relax
            \the\SOUL@word}%
        \let\SOUL@errmsg\SOUL@error
        \let\-\relax
        \count@\m@ne
        \SOUL@analyze
        \SOUL@word={}%
    \fi
}
\setbox\z@\hbox{\SOUL@tt-}
\newdimen\SOUL@ttwidth
\SOUL@ttwidth\wd\z@
\def\SOUL@analyze{{%
    \setbox\z@\vbox{%
        \unvcopy\z@
        \unskip
        \unpenalty
        \global\setbox\@ne=\lastbox}%
    \ifvoid\@ne
    \else
        \setbox\@ne\hbox{\unhbox\@ne}%
        \SOUL@syllgoal=\wd\@ne
        \advance\count@\@ne
        \SOUL@analyze
        \SOUL@syllwidth\z@
        \SOUL@syllable={}%
        \ifnum\count@>\z@
            \advance\SOUL@syllgoal-\SOUL@ttwidth
            \SOUL@dosyllable
            \SOUL@getkern{\the\SOUL@lasttoken}{\SOUL@hyphkern}%
                {\char\hyphenchar\font}%
            \SOUL@everyhyphen
        \else
            \SOUL@dosyllable
        \fi
    \fi
}}
\def\SOUL@dosyllable{%
    \SOUL@gettoken
    \SOUL@eventuallyexhyphen{\the\SOUL@token}%
    \edef\x{\the\SOUL@token}%
    \ifx\x\SOUL@hyphenhintM
        \let\SOUL@\SOUL@dosyllable
    \else\ifx\x\SOUL@lowerthanM
        \SOUL@gettoken
        \SOUL@getkern{\the\SOUL@lasttoken}{\SOUL@charkern}
            {\the\SOUL@token}%
        \SOUL@everylowerthan
        \SOUL@puttoken
        \let\SOUL@\SOUL@dosyllable
    \else\ifdim\SOUL@syllwidth=\SOUL@syllgoal
        \SOUL@everysyllable
        \SOUL@puttoken
        \let\SOUL@\relax
    \else\ifx\x\SOUL@stopM
        \SOUL@errmsg
        \global\let\SOUL@errmsg\relax
        \let\SOUL@\relax
    \else
        \setbox\tw@\hbox{\SOUL@tt\the\SOUL@token}%
        \advance\SOUL@syllwidth\wd\tw@
        \global\SOUL@lasttoken=\SOUL@token
        \SOUL@gettoken
        \SOUL@getkern{\the\SOUL@lasttoken}{\SOUL@charkern}
            {\the\SOUL@token}%
        \SOUL@puttoken
        \global\SOUL@token=\SOUL@lasttoken
        \SOUL@everytoken
        \edef\x{\SOUL@syllable={\the\SOUL@syllable\the\SOUL@token}}\x
        \let\SOUL@\SOUL@dosyllable
    \fi\fi\fi\fi
    \SOUL@
}
\def\SOUL@gettoken{%
    \edef\x{\the\SOUL@buffer}%
    \ifx\x\empty
        \SOUL@nexttoken
    \else
        \global\SOUL@token=\SOUL@buffer
        \global\SOUL@buffer={}%
    \fi
}
\def\SOUL@puttoken{%
    \edef\x{\the\SOUL@buffer}%
    \ifx\x\empty
        \global\SOUL@buffer=\SOUL@token
        \global\SOUL@token={}%
    \else
        \SOUL@debug{puttoken called twice}%
    \fi
}
\def\SOUL@nexttoken{%
    \edef\x{\the\SOUL@word}%
    \ifx\x\empty
        \SOUL@token={\SOUL@stop}%
    \else
        \expandafter\SOUL@splittoken\the\SOUL@word\SOUL@stop
    \fi
}
\def\SOUL@splittoken#1#2\SOUL@stop{%
    \global\SOUL@token={#1}%
    \global\SOUL@word={#2}%
}
\def\SOUL@getkern#1#2#3{%
    \setbox\tw@\hbox{#1#3}%
    #2\wd\tw@
    \setbox\tw@\hbox{#1\null#3}%
    \advance#2-\wd\tw@
}
\def\SOUL@setkern#1{\ifdim#1=\z@\else\kern#1\fi}
\def\SOUL@error{%
    \vrule\@height.8em\@depth.2em\@width1em
    \PackageError{soul}{Reconstruction failed}{%
        I came across hyphenatable material enclosed in group
        braces,^^Jwhich I can't handle. Either drop the braces or
        make the material^^Junbreakable using an \string\mbox\space
        (\string\hbox). Note that a space^^Jalso counts as possible
        hyphenation point. See page 4 of the manual.^^JI'm leaving
        a black square so that you can see where I am right now.%
    }%
}
\def\SOUL@setup{%
    \let\SOUL@preamble\relax
    \let\SOUL@postamble\relax
    \let\SOUL@everytoken\relax
    \let\SOUL@everysyllable\relax
    \def\SOUL@everyspace##1{##1\space}%
    \let\SOUL@everyhyphen\relax
    \def\SOUL@everyexhyphen##1{##1}%
    \let\SOUL@everylowerthan\relax
}
\SOUL@setup
\def\SOUL@sosetletterskip{\nobreak\hskip\SOUL@soletterskip}
\def\SOUL@sopreamble{%
    \ifdim\lastskip>5sp
        \unskip
        \hskip\SOUL@soouterskip
    \fi
    \spaceskip\SOUL@soinnerskip
}
\def\SOUL@sopostamble{%
    \global\skip@=\SOUL@soouterskip
    \aftergroup\SOUL@socheck
}
\def\SOUL@socheck{%
    \futurelet\SOUL@@\SOUL@sodoouter
}
\def\SOUL@sodoouter{%
    \def\SOUL@n*##1{\hskip\skip@}%
    \ifcat\egroup\noexpand\SOUL@@
        \unkern
        \egroup
        \def\SOUL@n*{\afterassignment\SOUL@socheck\let\SOUL@x=}%
    \else\ifx\SOUL@spc\SOUL@@
        \def\SOUL@n* {\hskip\skip@}%
    \else\ifx~\SOUL@@
        \def\SOUL@n*~{\nobreak\hskip\skip@}%
    \else\ifx\ \SOUL@@
    \else\ifx\space\SOUL@@
    \else\ifx\@xobeysp\SOUL@@
    \else
        \def\SOUL@n*{}%
        \let\SOUL@@\relax
    \fi\fi\fi\fi\fi\fi
    \SOUL@n*%
}
\def\SOUL@soeverytoken{%
    \edef\x{\the\SOUL@token}%
    \ifx\x\SOUL@lowerthanM
    \else
        \global\let\SOUL@soeventuallyskip\SOUL@sosetletterskip
        \the\SOUL@token
        \SOUL@gettoken
        \edef\x{\the\SOUL@token}%
        \ifx\x\SOUL@stopM
        \else
            \SOUL@setkern\SOUL@charkern
            \SOUL@sosetletterskip
            \SOUL@puttoken
        \fi
    \fi
}
\def\SOUL@soeveryspace#1{#1\space\kern\z@}
\def\SOUL@soeveryhyphen{%
    \discretionary{%
        \unkern
        \SOUL@setkern\SOUL@hyphkern
        \char\hyphenchar\font
    }{}{}%
}
\def\SOUL@soeveryexhyphen#1{%
    \SOUL@setkern\SOUL@hyphkern
    \SOUL@soeventuallyskip
    \hbox{#1}%
    \discretionary{}{}{%
        \SOUL@setkern\SOUL@charkern
    }%
    \SOUL@sosetletterskip
    \global\let\SOUL@soeventuallyskip\relax
}
\def\SOUL@soeverylowerthan{%
    \unskip
    \unpenalty
    \global\let\SOUL@soeventuallyskip\relax
    \SOUL@setkern\SOUL@charkern
}
\def\SOUL@sosetup{%
    \SOUL@setup
    \let\SOUL@preamble\SOUL@sopreamble
    \let\SOUL@postamble\SOUL@sopostamble
    \let\SOUL@everytoken\SOUL@soeverytoken
    \let\SOUL@everyspace\SOUL@soeveryspace
    \let\SOUL@everyhyphen\SOUL@soeveryhyphen
    \let\SOUL@everyexhyphen\SOUL@soeveryexhyphen
    \let\SOUL@everylowerthan\SOUL@soeverylowerthan
}
\def\SOUL@setso#1#2#3{%
    \def\SOUL@soletterskip{#1}%
    \def\SOUL@soinnerskip{#2}%
    \def\SOUL@soouterskip{#3}%
}
\def\sodef#1#2#3#4#5{%
    \DeclareRobustCommand*#1{\SOUL@sosetup
        \def\SOUL@preamble{%
            \SOUL@setso{#3}{#4}{#5}%
            #2%
            \SOUL@sopreamble
        }%
        \SOUL@
    }%
}
\def\resetso{%
    \sodef\textso{}{.25em}{.65em\@plus.08em\@minus.06em}%
        {.55em\@plus.275em\@minus.183em}%
}
\resetso
\sodef\sloppyword{%
    \linepenalty10
    \hyphenpenalty10
    \adjdemerits\z@
    \doublehyphendemerits\z@
    \finalhyphendemerits\z@
    \emergencystretch.1em}%
    {\z@\@plus.1em}%
    {.33em\@plus.11em\@minus.11em}%
    {.33em\@plus.11em\@minus.11em}
\expandafter\ifx\csname documentclass\endcsname\relax
\let\capsfont\relax
\let\capsreset\relax
\def\capsdef#1#2#3#4#5{}
\def\capssave#1{}
\sodef\textcaps{\capsfont}
    {.028em\@plus.005em\@minus.01em}%
    {.37em\@plus.1667em\@minus.111em}%
    {.37em\@plus.1em\@minus.14em}
\else
\DeclareRobustCommand*\capsreset{%
    \let\SOUL@capsbase\empty
    \SOUL@capsdefault
}
\def\capsdef#1#2#3#4#5{{%
    \toks\z@{\\{#1/#2/#3/#4/#5}}%
    \toks\tw@=\expandafter{\SOUL@capsbase}%
    \xdef\SOUL@capsbase{\the\toks\z@\the\toks\tw@}%
}}
\DeclareRobustCommand*\capssave[1]{%
    \expandafter\global\expandafter\let
        \csname SOUL@@\string#1\endcsname\SOUL@capsbase
    \def\SOUL@next##1{\DeclareRobustCommand*#1{\let\SOUL@capsbase##1}}%
    \expandafter\SOUL@next\expandafter{%
        \csname SOUL@@\string#1\endcsname}%
}
\def\SOUL@capsfind#1/#2/#3/#4/#5/#6/#7/#8/#9/{%
    \let\SOUL@match=1%
    \SOUL@chk{#1}\f@encoding
    \SOUL@chk{#2}\f@family
    \SOUL@chk{#3}\f@series
    \SOUL@chk{#4}\f@shape
    \SOUL@dimchk{#5}\f@size
    \if\SOUL@match1%
        \let\\\@gobble
        \gdef\SOUL@caps{%
            \SOUL@sosetup
            \def\SOUL@preamble{\SOUL@setso{#7}{#8}{#9}#6%
                \SOUL@sopreamble}%
            \SOUL@}%
    \fi
}
\def\SOUL@chk#1#2{%
    \if$#1$%
    \else
        \def\SOUL@n{#1}%
        \ifx#2\SOUL@n\else\let\SOUL@match=0\fi
    \fi
}
\def\SOUL@dimchk#1#2{\if$#1$\else\SOUL@rangechk{#2}#1--\@ne\@@\fi}
\def\SOUL@rangechk#1#2-#3-#4\@@{%
    \count@=#4%
    \ifnum\count@>\z@
        \ifdim#1\p@=#2\p@\else\let\SOUL@match=0\fi
    \else
        \dimen@=\if$#2$\z@\else#2\p@\fi
        \ifdim#1\p@<\dimen@\let\SOUL@match=0\fi
        \dimen@=\if$#3$\maxdimen\else#3\p@\fi
        \ifdim#1\p@<\dimen@\else\let\SOUL@match=0\fi
    \fi
}
\DeclareRobustCommand*\textcaps{{%
    \def\\##1{\expandafter\SOUL@capsfind##1/}%
    \SOUL@capsbase
    \aftergroup\SOUL@caps
}}
\def\SOUL@capsdefault{%
    \capsdef{////}%
    \SOUL@capsdfltfnt
    {.028em\@plus.005em\@minus.01em}%
    {.37em\@plus.1667em\@minus.1em}%
    {.37em\@plus.111em\@minus.14em}%
}
\let\SOUL@capsdfltfnt\scshape
\capsreset
\fi
\newdimen\SOUL@uldp
\newdimen\SOUL@ulht
\def\SOUL@ulleaders{%
    \leaders\hrule\@depth\SOUL@uldp\@height\SOUL@ulht\relax
}
\def\SOUL@ulunderline#1{{%
    \setbox\z@\hbox{#1}%
    \dimen@=\wd\z@
    \dimen@i=\SOUL@uloverlap
    \advance\dimen@2\dimen@i
    \rlap{%
        \null\kern-\dimen@i
        \SOUL@ulcolor{\SOUL@ulleaders\hskip\dimen@}%
    }%
    \unhcopy\z@
}}
\def\SOUL@ulpreamble{%
    \SOUL@uldp=\SOUL@uldepth
    \SOUL@ulht=-\SOUL@uldp
    \advance\SOUL@uldp\SOUL@ulthickness
    \spaceskip\SOUL@spaceskip
}
\def\SOUL@uleverysyllable{%
    \SOUL@ulunderline{%
        \the\SOUL@syllable
        \SOUL@setkern\SOUL@charkern
    }%
}
\def\SOUL@uleveryspace#1{%
    \SOUL@ulcolor{%
        #1%
        \SOUL@ulleaders
        \hskip\spaceskip
    }%
    \null
}
\def\SOUL@uleveryhyphen{%
    \discretionary{%
        \unkern
        \SOUL@ulunderline{%
            \SOUL@setkern\SOUL@hyphkern
            \char\hyphenchar\font
        }%
    }{}{}%
}
\def\SOUL@uleveryexhyphen#1{%
    \SOUL@setkern\SOUL@hyphkern
    \SOUL@ulunderline{#1}%
    \discretionary{}{}{%
        \SOUL@setkern\SOUL@charkern
    }%
}
\let\SOUL@ulcolor\relax
\def\setulcolor#1{%
    \if$#1$
        \let\SOUL@ulcolor\relax
    \else
        \def\SOUL@ulcolor{\textcolor{#1}}%
    \fi
}
\def\setuloverlap#1{\def\SOUL@uloverlap{#1}}
\setuloverlap{.25pt}
\def\SOUL@ulsetup{%
    \SOUL@setup
    \let\SOUL@preamble\SOUL@ulpreamble
    \let\SOUL@everysyllable\SOUL@uleverysyllable
    \let\SOUL@everyspace\SOUL@uleveryspace
    \let\SOUL@everyhyphen\SOUL@uleveryhyphen
    \let\SOUL@everyexhyphen\SOUL@uleveryexhyphen
}
\DeclareRobustCommand*\textul{\SOUL@ulsetup\SOUL@}
\def\setul#1#2{%
    \if$#1$\else\def\SOUL@uldepth{#1}\fi
    \if$#2$\else\def\SOUL@ulthickness{#2}\fi
}
\def\resetul{\setul{.65ex}{.1ex}}
\resetul
\def\setuldepth#1{{%
    \def\SOUL@n{#1}%
    \setbox\z@\hbox{%
        \tracinglostchars\z@
        \ifx\SOUL@n\empty
            \count@\z@
            \loop
                \ifnum\catcode\count@=11\char\count@\fi
            \ifnum\count@<\@cclv
                \advance\count@\@ne
            \repeat
        \else
        #1%
        \fi
    }%
    \dimen@\dp\z@
    \advance\dimen@\p@
    \xdef\SOUL@uldepth{\the\dimen@}%
}}
\def\SOUL@stpreamble{%
    \dimen@\SOUL@ulthickness
    \dimen@i=-.5ex
    \advance\dimen@i-.5\dimen@
    \edef\SOUL@uldepth{\the\dimen@i}%
    \let\SOUL@ulcolor\SOUL@stcolor
    \SOUL@ulpreamble
}
\def\SOUL@stsetup{%
    \SOUL@ulsetup
    \let\SOUL@preamble\SOUL@stpreamble
}
\DeclareRobustCommand*\textst{\SOUL@stsetup\SOUL@}
\let\SOUL@stcolor\relax
\def\setstcolor#1{%
    \if$#1$
        \let\SOUL@stcolor\relax
    \else
        \def\SOUL@stcolor{\textcolor{#1}}%
    \fi
}
\def\SOUL@hlpreamble{%
    \setul{}{2.5ex}%
    \let\SOUL@stcolor\SOUL@hlcolor
    \SOUL@stpreamble
}
\def\SOUL@hlsetup{%
    \SOUL@stsetup
    \let\SOUL@preamble\SOUL@hlpreamble
}
\DeclareRobustCommand*\texthl{\SOUL@hlsetup\SOUL@}
\def\sethlcolor#1{\if$#1$\else\def\SOUL@hlcolor{\textcolor{#1}}\fi}
\sethlcolor{yellow}
\let\so\textso
\let\ul\textul
\let\st\textst
\let\hl\texthl
\let\caps\textcaps
\expandafter\ifx\csname documentclass\endcsname\relax
    \expandafter\ifx\csname mdqoff\endcsname\relax
    \else
        \soulaccent{"}%
    \fi
    \catcode`\@=\atcode
\else
    \bgroup
        \catcode`\"\active
        \AtBeginDocument{%
            \@ifundefined{color}{%
                \let\SOUL@color\relax
                \let\setulcolor\@gobble
                \let\setstcolor\@gobble
                \let\sethlcolor\@gobble
                \let\hl\ul
            }{}
            \@ifundefined{mdqoff}{}{\soulaccent{"}}
        }
    \egroup
    \DeclareOption{capsdefault}{%
        \AtBeginDocument{%
            \def\SOUL@capsdfltfnt#1{\SOUL@ulsetup\SOUL@ulpreamble}%
        }%
    }
    \InputIfFileExists{soul.cfg}%
        {\PackageInfo{soul}{Local config file soul.cfg used}}{}
    \ProcessOptions
\fi
\endinput
%%
%% End of file `soul.sty'.
