%%
%% This is file `soul-ori.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% soul-ori.dtx  (with options: `package')
%% 
%% Copyright (C) 1998--2003  Melchior FRANZ
%% Copyright (C) 2007 Heiko Oberdiek
%% Copyright (C) 2022-2023 Oberdiek Package Support Group
%% 
%% It may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License (LPPL), either version 1.3c of
%% this license or (at your option) any later version.  The latest
%% version of this license is in the file:
%% 
%%    https://www.latex-project.org/lppl.txt
%% 
%% This file is part of the "soul bundle" (The Work in LPPL)
%% and all files in that bundle must be distributed together.
%% 
%% File: soul-ori.dtx
%% Original author data:
%% ====================================================================
%%  @LaTeX-package-file{
%%     author          = "Melchior FRANZ",
%%     version         = "2.4",
%%     date            = "17 November 2003",
%%     filename        = "soul.dtx",
%%     address         = "Melchior FRANZ
%%                        Rieder Hauptstrasse 52
%%                        A-5212 SCHNEEGATTERN
%%                        AUSTRIA",
%%     telephone       = "++43 7746 3109",
%%     URL             = "http://www.unet.univie.ac.at/~a8603365/",
%%     email           = "a8603365@unet.univie.ac.at",
%%     codetable       = "ISO/ASCII",
%%     keywords        = "spacing out, letterspacing, underlining, striking out,
%%                        highlighting",
%%     supported       = "yes",
%%     docstring       = "This article describes the `soul' package, which
%%                        provides hyphenatable letterspacing (spacing out),
%%                        underlining, and some derivatives.
%%                        All features are based upon a common mechanism
%%                        that allows to typeset text syllable by syllable,
%%                        where the excellent TeX hyphenation algorithm is
%%                        used to find the proper hyphenation points.
%%                        Two examples show how to use the provided interface to
%%                        implement things such as `an-a-lyz-ing syl-la-bles'.
%%                        Although the package is optimized for LaTeX2e,
%%                        it works with Plain TeX and with other
%%                        packages, too.",
%%  }
%% ====================================================================
\expandafter\ifx\csname SOUL@\endcsname\relax\else
    \expandafter\endinput
\fi
\ifx\documentclass\SOULundefined
    \chardef\atcode=\catcode`@
    \catcode`\@=11
    \def\DeclareRobustCommand*{\def}
    \let\newcommand\DeclareRobustCommand
    \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-ori}
        [2023-06-14 v3.1 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*\soulregister{}
    \newcommand*\soulfont{}
    \newcommand*\soulomit{}
\fi
\newtoks\SOUL@word
\newtoks\SOUL@lasttoken
\newtoks\SOUL@syllable
\newtoks\SOUL@cmds
\newtoks\SOUL@buffer
\newtoks\SOUL@token
\newdimen\SOUL@syllgoal
\newdimen\SOUL@syllwidth
\newdimen\SOUL@charkern
\newdimen\SOUL@hyphkern
\newdimen\SOUL@dimen
\newdimen\SOUL@dimeni
\newcount\SOUL@minus
\newcount\SOUL@comma
\newcount\SOUL@apo
\newcount\SOUL@grave
\newskip\SOUL@spaceskip
\newif\ifSOUL@ignorespaces
\def\soulomit#1{#1}
\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@{%
    \futurelet\SOUL@@\SOUL@expand
}
\def\SOUL@expand{%
    \ifcat\bgroup\noexpand\SOUL@@
        \let\SOUL@n\SOUL@start
    \else
        \bgroup
            \def\\##1##2{\def##2{\noexpand##2}}%
            \the\SOUL@cmds
            \SOUL@buffer={%
                \\\TeX\\\LaTeX\\\soulomit\\\mbox\\\hbox\\\textregistered
                \\\slash\\\textcircled\\\copyright\\\S\\\,\\\<\\\>\\~%
                \\\\%
            }%
            \def\\##1{\def##1{\noexpand##1}}%
            \the\SOUL@buffer
            \let\protect\noexpand
            \xdef\SOUL@n##1{\noexpand\SOUL@start{\SOUL@@}}%
        \egroup
    \fi
    \SOUL@n
}
\long\def\SOUL@start#1{{%
    \let\<\SOUL@lowerthan
    \let\>\empty
    \def\soulomit{\noexpand\soulomit}%
    \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@do{#1}%
    \SOUL@postamble
}}
\long\def\SOUL@do#1{%
    \SOUL@scan#1\SOUL@stop
}
\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@flushminus
    \else\ifnum\SOUL@comma=\tw@
        \SOUL@flushcomma
    \else\ifnum\SOUL@apo=\tw@
        \SOUL@flushapo
    \else\ifnum\SOUL@grave=\tw@
        \SOUL@flushgrave
    \fi\fi\fi\fi
    \ifx\SOUL@@-\else\SOUL@flushminus\fi
    \ifx\SOUL@@,\else\SOUL@flushcomma\fi
    \ifx\SOUL@@'\else\SOUL@flushapo\fi
    \ifx\SOUL@@`\else\SOUL@flushgrave\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
        \SOUL@flushminus
        \SOUL@flushcomma
        \SOUL@flushapo
        \SOUL@flushgrave
        \ifx\SOUL@@\SOUL@stop
            \def\SOUL@n*{%
                \SOUL@doword
                \SOUL@eventuallyexhyphen\null
            }%
        \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@flushminus{%
    \ifcase\SOUL@minus
    \else
        \SOUL@doword
        \SOUL@eventuallyexhyphen{-}%
        \ifcase\SOUL@minus
        \or
            \SOUL@exhyphen{-}%
        \or
            \SOUL@exhyphen{--}%
        \or
            \SOUL@exhyphen{---}%
        \fi
        \SOUL@minus\z@
    \fi
}
\def\SOUL@flushcomma{%
    \ifcase\SOUL@comma
    \or
        \edef\x{\SOUL@word={\the\SOUL@word,}}\x
    \or
        \edef\x{\SOUL@word={\the\SOUL@word{{,,}}}}\x
    \fi
    \SOUL@comma\z@
}
\def\SOUL@flushapo{%
    \ifcase\SOUL@apo
    \or
        \edef\x{\SOUL@word={\the\SOUL@word'}}\x
    \or
        \edef\x{\SOUL@word={\the\SOUL@word{{''}}}}\x
    \fi
    \SOUL@apo\z@
}
\def\SOUL@flushgrave{%
    \ifcase\SOUL@grave
    \or
        \edef\x{\SOUL@word={\the\SOUL@word`}}\x
    \or
        \edef\x{\SOUL@word={\the\SOUL@word{{``}}}}\x
    \fi
    \SOUL@grave\z@
}
\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\ifx8#1%
        \SOUL@doword
        \def\SOUL@@##1{%
            \SOUL@token={\footnotemark}%
            \SOUL@everytoken
            \SOUL@syllable={\footnotemark}%
            \SOUL@everysyllable
            \footnotetext{##1}%
            \SOUL@doword
            \SOUL@scan
        }%
    \else\ifx7#1%
        \SOUL@doword
        \def\SOUL@@##1{%
            \SOUL@token={#2{##1}}%
            \SOUL@everytoken
            \SOUL@syllable={#2{##1}}%
            \SOUL@everysyllable
            \SOUL@doword
            \SOUL@scan
        }%
    \else\ifx1#1%
        \SOUL@doword
        \def\SOUL@@##1{%
            #2{\protect\SOUL@do{##1}}%
            \SOUL@scan
        }%
    \else
        \SOUL@doword
        #2%
        \let\SOUL@@\SOUL@scan
    \fi\fi\fi\fi
    \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\\9\r
    \\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\MakeUppercase\\7\textsuperscript\\8\footnote
    \\1\textfrak\\1\textswab\\1\textgoth
    \\0\frakfamily\\0\swabfamily\\0\gothfamily
}
\def\soulregister#1#2{{%
    \edef\x{\global\SOUL@cmds={\the\SOUL@cmds
        \noexpand\\#2\noexpand#1}}\x
}}
\def\soulaccent#1{\soulregister{#1}9}
\let\soulfont\soulregister
\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@sethyphenchar{%
    \ifnum\hyphenchar\font=\m@ne
    \else
        \char\hyphenchar\font
    \fi
}
\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}%
                {\SOUL@sethyphenchar}%
            \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@n\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@n\SOUL@dosyllable
    \else\ifdim\SOUL@syllwidth=\SOUL@syllgoal
        \SOUL@everysyllable
        \SOUL@puttoken
        \let\SOUL@n\relax
    \else\ifx\x\SOUL@stopM
        \SOUL@errmsg
        \global\let\SOUL@errmsg\relax
        \let\SOUL@n\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@n\SOUL@dosyllable
    \fi\fi\fi\fi
    \SOUL@n
}
\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
        \SOUL@sethyphenchar
    }{}{}%
}
\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}
\ifx\documentclass\@undefined
\let\capsfont\relax
\let\capsreset\relax
\def\capsdef#1#2#3#4#5{}
\def\capssave#1{}
\def\capsselect#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@db@#1\endcsname\SOUL@capsbase
}
\DeclareRobustCommand*\capsselect[1]{%
    \expandafter\let\expandafter\SOUL@capsbase
        \csname SOUL@db@#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
        \SOUL@dimen=\if$#2$\z@\else#2\p@\fi
        \ifdim#1\p@<\SOUL@dimen\let\SOUL@match=0\fi
        \SOUL@dimen=\if$#3$\maxdimen\else#3\p@\fi
        \ifdim#1\p@<\SOUL@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}%
    \SOUL@dimen=\wd\z@
    \SOUL@dimeni=\SOUL@uloverlap
    \advance\SOUL@dimen2\SOUL@dimeni
    \rlap{%
        \null
        \kern-\SOUL@dimeni
        \SOUL@ulcolor{\SOUL@ulleaders\hskip\SOUL@dimen\kern\z@}%
    }%
    \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
        \kern\z@
    }%
    \null
}
\def\SOUL@uleveryhyphen{%
    \discretionary{%
        \unkern
        \SOUL@ulunderline{%
            \SOUL@setkern\SOUL@hyphkern
            \SOUL@sethyphenchar
        }%
    }{}{}%
}
\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
    }%
    \SOUL@dimen\dp\z@
    \advance\SOUL@dimen\p@
    \xdef\SOUL@uldepth{\the\SOUL@dimen}%
}}
\def\SOUL@stpreamble{%
    \SOUL@dimen\SOUL@ulthickness
    \SOUL@dimeni=-.5ex
    \advance\SOUL@dimeni-.5\SOUL@dimen
    \edef\SOUL@uldepth{\the\SOUL@dimeni}%
    \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
\ifx\documentclass\@undefined
    \ifx\mdqoff\@undefined
    \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
                \scshape
            }%
        }%
    }
    \InputIfFileExists{soul.cfg}%
        {\PackageInfo{soul}{Local config file soul.cfg used}}{}
    \ProcessOptions
\fi
%% 
%%
%% End of file `soul-ori.sty'.
