summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/oberdiek/soulutf8.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2007-09-16 00:07:34 +0000
committerKarl Berry <karl@freefriends.org>2007-09-16 00:07:34 +0000
commitd85f248e3b38ea0ecda38c5340e3cadd08d65346 (patch)
tree52e17f32b395006895b3917bc7729c7ac1514ae3 /Master/texmf-dist/tex/generic/oberdiek/soulutf8.sty
parent2389552f283181e0d8c610037712ade989112da3 (diff)
oberdiek update (14sep07)
git-svn-id: svn://tug.org/texlive/trunk@4947 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/oberdiek/soulutf8.sty')
-rw-r--r--Master/texmf-dist/tex/generic/oberdiek/soulutf8.sty646
1 files changed, 646 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/oberdiek/soulutf8.sty b/Master/texmf-dist/tex/generic/oberdiek/soulutf8.sty
new file mode 100644
index 00000000000..8f0941c541d
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/oberdiek/soulutf8.sty
@@ -0,0 +1,646 @@
+%%
+%% This is file `soulutf8.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% soulutf8.dtx (with options: `package')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2007 by Heiko Oberdiek <oberdiek@uni-freiburg.de>
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 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.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% This Current Maintainer of this work is Heiko Oberdiek.
+%%
+%% This work consists of the main source file soulutf8.dtx
+%% and the derived files
+%% soulutf8.sty, soulutf8.pdf, soulutf8.ins, soulutf8.drv,
+%% soulutf8-test1.tex, soulutf8-test2.tex, soulutf8-test3.tex,
+%% soulutf8-test4.tex, soulutf8-test5.tex.
+%%
+\begingroup
+ \catcode44 12 % ,
+ \catcode45 12 % -
+ \catcode46 12 % .
+ \catcode58 12 % :
+ \catcode64 11 % @
+ \expandafter\let\expandafter\x\csname ver@soulutf8.sty\endcsname
+ \ifcase 0%
+ \ifx\x\relax % plain
+ \else
+ \ifx\x\empty % LaTeX
+ \else
+ 1%
+ \fi
+ \fi
+ \else
+ \expandafter\ifx\csname PackageInfo\endcsname\relax
+ \def\x#1#2{%
+ \immediate\write-1{Package #1 Info: #2.}%
+ }%
+ \else
+ \def\x#1#2{\PackageInfo{#1}{#2, stopped}}%
+ \fi
+ \x{soulutf8}{The package is already loaded}%
+ \endgroup
+ \expandafter\endinput
+ \fi
+\endgroup
+\begingroup
+ \catcode40 12 % (
+ \catcode41 12 % )
+ \catcode44 12 % ,
+ \catcode45 12 % -
+ \catcode46 12 % .
+ \catcode47 12 % /
+ \catcode58 12 % :
+ \catcode64 11 % @
+ \expandafter\ifx\csname ProvidesPackage\endcsname\relax
+ \def\x#1#2#3[#4]{\endgroup
+ \immediate\write-1{Package: #3 #4}%
+ \xdef#1{#4}%
+ }%
+ \else
+ \def\x#1#2[#3]{\endgroup
+ #2[{#3}]%
+ \ifx#1\relax
+ \xdef#1{#3}%
+ \fi
+ }%
+ \fi
+\expandafter\x\csname ver@soulutf8.sty\endcsname
+\ProvidesPackage{soulutf8}%
+ [2007/09/09 v1.0 Adding support for UTF-8 to soul (HO)]
+\expandafter\edef\csname SOuL@AtEnd\endcsname{%
+ \catcode64 \the\catcode64\relax
+}
+\catcode64 11 % @
+\def\TMP@EnsureCode#1#2{%
+ \edef\SOuL@AtEnd{%
+ \SOuL@AtEnd
+ \catcode#1 \the\catcode#1\relax
+ }%
+ \catcode#1 #2\relax
+}
+\TMP@EnsureCode{10}{12}% ^^J
+\TMP@EnsureCode{33}{12}% !
+\TMP@EnsureCode{34}{12}% "
+\TMP@EnsureCode{36}{3}% $
+\TMP@EnsureCode{39}{12}% '
+\TMP@EnsureCode{40}{12}% (
+\TMP@EnsureCode{41}{12}% )
+\TMP@EnsureCode{42}{12}% *
+\TMP@EnsureCode{43}{12}% +
+\TMP@EnsureCode{44}{12}% ,
+\TMP@EnsureCode{45}{12}% -
+\TMP@EnsureCode{46}{12}% .
+\TMP@EnsureCode{47}{12}% /
+\TMP@EnsureCode{58}{12}% :
+\TMP@EnsureCode{60}{12}% <
+\TMP@EnsureCode{61}{12}% =
+\TMP@EnsureCode{62}{12}% >
+\TMP@EnsureCode{94}{7}% ^
+\TMP@EnsureCode{96}{12}% `
+\TMP@EnsureCode{126}\active % ~
+\TMP@EnsureCode{128}{12}% ^^80
+\TMP@EnsureCode{147}{12}% ^^93
+\TMP@EnsureCode{148}{12}% ^^94
+\TMP@EnsureCode{160}{12}% ^^a0
+\TMP@EnsureCode{194}{12}% ^^c2
+\TMP@EnsureCode{226}{12}% ^^e2
+\ifx\documentclass\@undefined
+ \expandafter\ifx\csname SOUL@\endcsname\relax
+ \let\SOuL@orgDeclareRobustCommand\DeclareRobustCommand
+ \let\SOuL@orgnewcommand \newcommand
+ \let\SOuL@orgDeclareOption \DeclareOption
+ \let\SOuL@orgPackageError \PackageError
+ \def\SOuL@restorelatexcmds{%
+ \let\DeclareRobustCommand\SOuL@orgDeclareRobustCommand
+ \let\newcommand \SOuL@orgnewcommand
+ \let\DeclareOption \SOuL@orgDeclareOption
+ \let\PackageError \SOuL@orgPackageError
+ }%
+ \input soul.sty\relax
+ \SOuL@restorelatexcmds
+ \fi
+ \input infwarerr.sty\relax
+ \let\SOuL@orgSOUL@error\SOUL@error
+ \def\SOUL@error{%
+ \begingroup
+ \let\PackageError\@PackageError
+ \SOuL@orgSOUL@error
+ \endgroup
+ }%
+ \input etexcmds.sty\relax
+ \expandafter\ifx\csname @onelevel@sanitize\endcsname\relax
+ \def\@onelevel@sanitize#1{%
+ \edef#1{%
+ \expandafter\strip@prefix\meaning#1%
+ }%
+ }%
+ \def\strip@prefix#1>{}%
+ \fi
+\else
+ \DeclareOption*{\PassOptionsToPackage{\CurrentOption}{soul}}%
+ \ProcessOptions\relax
+ \RequirePackage{soul}[2003/11/17]%
+ \RequirePackage{infwarerr}[2007/09/09]%
+ \RequirePackage{etexcmds}[2007/09/09]%
+\fi
+\ifetex@unexpanded
+ \catcode33=14 % '!': comment
+ \catcode43=9 % '+': ignore
+\else
+ \catcode33=9 % '!': ignore
+ \catcode43=14 % '+': comment
+\fi
+\def\SOuL@redefine#1{%
+ \begingroup
+ \def\SOuL@cmd{#1}%
+ \afterassignment\SOuL@cmdcheck
+ \def\SOuL@temp
+}
+\def\SOuL@cmdcheck{%
+ \expandafter\ifx\SOuL@cmd\SOuL@temp
+ \else
+ \edef\SOuL@temp*{\expandafter\string\SOuL@cmd}%
+ \@PackageWarningNoLine{soulutf8}{%
+ Command \SOuL@temp* has changed.\MessageBreak
+ Supported versions of package `soul': 2003/11/17.\MessageBreak
+ Depending on the unknown changes the redefinition\MessageBreak
+ of \SOuL@temp* may not behave correctly%
+ }%
+ \fi
+ \expandafter\endgroup
+ \expandafter\def\SOuL@cmd
+}
+\SOuL@redefine\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@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
+ \SOuL@analyzeutfviii
+ \ifcase\SOuL@octets
+ \SOuL@analyzeutfviiix
+ \fi
+ \ifcase\SOuL@octets
+ \def\SOUL@n*{\SOUL@dotoken}%
+ \or % 1
+ \or % 2
+ \def\SOUL@n*{\SOuL@addtwooctets}%
+ \or % 3
+ \def\SOUL@n*{\SOuL@addthreeoctets}%
+ \or % 4
+ \def\SOUL@n*{\SOuL@addfouroctets}%
+ \fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \fi\fi\fi\fi
+ \SOUL@n*%
+}
+\def\SOuL@defsanitizedstring#1#2{%
+ \expandafter\def\csname SOuL@string#1\endcsname{#2}%
+ \expandafter\@onelevel@sanitize\csname SOuL@string#1\endcsname
+}
+\SOuL@defsanitizedstring{UTFviii}{UTFviii@}
+\SOuL@defsanitizedstring{octets}{@octets}
+\SOuL@defsanitizedstring{two}{two}
+\SOuL@defsanitizedstring{three}{three}
+\SOuL@defsanitizedstring{four}{four}
+\SOuL@defsanitizedstring{macrocolon}{macro:}
+\SOuL@defsanitizedstring{csnameu}{csname u8-}
+\SOuL@defsanitizedstring{undeferr}{utf@viii@undeferr}
+\def\SOuL@stringendash{^^e2^^80^^93}
+\def\SOuL@stringemdash{^^e2^^80^^94}
+\def\SOuL@stringnobreakspace{^^c2^^a0}
+\edef\SOuL@charhash{\string #}
+\edef\SOuL@chartwo{\string 2}
+\edef\SOuL@charthree{\string 3}
+\def\SOuL@empty{}
+\begingroup
+ \edef\x{\endgroup
+ \def\noexpand\SOuL@analyzeutfviii{%
+ \noexpand\expandafter\noexpand\SOuL@checkutfviii
+ \noexpand\meaning\noexpand\SOUL@@
+ \SOuL@stringUTFviii\SOuL@stringoctets
+ \noexpand\@nil
+ }%
+ \def\noexpand\SOuL@checkutfviii
+ ##1\SOuL@stringUTFviii##2\SOuL@stringoctets##3\noexpand\@nil
+ }%
+\x{%
+ \def\SOuL@temp{#2}%
+ \chardef\SOuL@octets=%
+ \ifx\SOuL@temp\SOuL@stringtwo
+ \tw@
+ \else\ifx\SOuL@temp\SOuL@stringthree
+ \thr@@
+ \else\ifx\SOuL@temp\SOuL@stringfour
+ 4 %
+ \else
+ \z@
+ \fi\fi\fi
+}
+\begingroup
+ \edef\x{\endgroup
+ \def\noexpand\SOuL@analyzeutfviiix{%
+ \noexpand\expandafter\noexpand\SOuL@checkutfviiix
+ \noexpand\meaning\noexpand\SOUL@@
+ \SOuL@stringmacrocolon\SOuL@charhash1{}{}{}{}%
+ \SOuL@stringcsnameu\SOuL@stringundeferr
+ \noexpand\@nil
+ }%
+ \def\noexpand\SOuL@checkutfviiix
+ ##1\SOuL@stringmacrocolon\SOuL@charhash1##2##3##4##5##6%
+ \SOuL@stringcsnameu##7\SOuL@stringundeferr##8\noexpand\@nil
+ }%
+\x{%
+ \def\SOuL@temp{#7}%
+ \ifx\SOuL@temp\SOuL@empty
+ \chardef\SOuL@octets=\z@
+ \else
+ \def\SOuL@temp{#5}%
+ \ifx\SOuL@temp\SOuL@charthree
+ \chardef\SOuL@octets=4 %
+ \else
+ \def\SOuL@temp{#3}%
+ \ifx\SOuL@temp\SOuL@chartwo
+ \chardef\SOuL@octets=\thr@@
+ \else
+ \chardef\SOuL@octets=\tw@
+ \fi
+ \fi
+ \fi
+}
+\def\SOuL@addtwooctets#1#2{%
+ \def\SOuL@temp{#1#2}%
+ \@onelevel@sanitize\SOuL@temp
+ \ifx\SOuL@temp\SOuL@stringnobreakspace
+ \SOUL@doword
+ \SOUL@eventuallyexhyphen\null
+ \SOUL@everyspace{\nobreak}%
+ \let\SOuL@next\SOUL@scan
+ \else
+ \def\SOuL@next{%
+! \SOUL@addtoken{{\noexpand#1\noexpand#2}}%
++ \SOUL@addtoken{{\etex@unexpanded{#1#2}}}%
+ }%
+ \fi
+ \SOuL@next
+}
+\def\SOuL@addthreeoctets#1#2#3{%
+ \def\SOuL@temp{#1#2#3}%
+ \@onelevel@sanitize\SOuL@temp
+ \ifx\SOuL@temp\SOuL@stringendash
+ \SOUL@doword
+ \SOUL@eventuallyexhyphen{-}%
+ \SOUL@exhyphen{--}%
+ \let\SOuL@next\SOUL@scan
+ \else
+ \ifx\SOuL@temp\SOuL@stringemdash
+ \SOUL@doword
+ \SOUL@eventuallyexhyphen{-}%
+ \SOUL@exhyphen{---}%
+ \let\SOuL@next\SOUL@scan
+ \else
+ \def\SOuL@next{%
+! \SOUL@addtoken{{\noexpand#1\noexpand#2\noexpand#3}}%
++ \SOUL@addtoken{{\etex@unexpanded{#1#2#3}}}%
+ }%
+ \fi
+ \fi
+ \SOuL@next
+}
+\def\SOuL@addfouroctets#1#2#3#4{%
+! \SOUL@addtoken{{\noexpand#1\noexpand#2\noexpand#3\noexpand#4}}%
++ \SOUL@addtoken{{\etex@unexpanded{#1#2#3#4}}}%
+}
+\SOuL@redefine\SOUL@splittoken#1#2\SOUL@stop{%
+ \global\SOUL@token={#1}%
+ \global\SOUL@word={#2}%
+}#1{%
+ \global\SOUL@token={#1}%
+ \SOuL@remainingtoken\relax
+}
+\def\SOuL@remainingtoken#1\SOUL@stop{%
+ \global\SOUL@word=\expandafter{\@gobble#1}%
+}
+\SOuL@redefine\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@
+}{%
+ \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@
+}
+\SOuL@redefine\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@
+}{%
+ \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@
+}
+\SOuL@redefine\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@
+}{%
+ \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@
+}
+\SOuL@redefine\SOUL@addgroup#1#2{%
+ {%
+ \let\protect\noexpand
+ \edef\x{%
+ \global\SOUL@word={%
+ \the\SOUL@word
+ {{\noexpand#1#2}}%
+ }%
+ }%
+ \x
+ }%
+ \SOUL@scan
+}#1#2{%
+ \begingroup
+ \let\protect\noexpand
+ \edef\x{\endgroup
+ \SOUL@word={%
+ \the\SOUL@word
+! {\noexpand#1{#2}}%
++ {\etex@unexpanded{#1{#2}}}%
+ }%
+ }%
+ \x
+ \SOUL@scan
+}
+\SOuL@redefine\SOUL@addmath$#1${%
+ {%
+ \let\protect\noexpand
+ \edef\x{%
+ \global\SOUL@word={%
+ \the\SOUL@word
+ {{\hbox{$#1$}}}%
+ }%
+ }%
+ \x
+ }%
+ \SOUL@scan
+}$#1${%
+ \begingroup
+ \let\protect\noexpand
+ \edef\x{\endgroup
+ \SOUL@word={%
+ \the\SOUL@word
+! {\hbox{$#1$}}%
++ {\etex@unexpanded{\hbox{$#1$}}}%
+ }%
+ }%
+ \x
+ \SOUL@scan
+}
+\SOuL@redefine\SOUL@addprotect#1#2{%
+ {%
+ \let\protect\noexpand
+ \edef\x{%
+ \global\SOUL@word={%
+ \the\SOUL@word
+ {{\hbox{#2}}}%
+ }%
+ }%
+ \x
+ }%
+ \SOUL@scan
+}#1#2{%
+ \begingroup
+ \let\protect\noexpand
+ \edef\x{\endgroup
+ \SOUL@word={%
+ \the\SOUL@word
+! {\hbox{#2}}%
++ {\etex@unexpanded{\hbox{#2}}}%
+ }%
+ }%
+ \x
+ \SOUL@scan
+}
++ \SOuL@redefine\SOUL@addtoken#1{%
++ \edef\x{%
++ \SOUL@word={%
++ \the\SOUL@word
++ \noexpand#1%
++ }%
++ }%
++ \x
++ \SOUL@scan
++ }#1{%
++ \edef\x{%
++ \SOUL@word={%
++ \the\SOUL@word
++ \etex@unexpanded{#1}%
++ }%
++ }%
++ \x
++ \SOUL@scan
++ }%
+\SOuL@AtEnd
+\endinput
+%%
+%% End of file `soulutf8.sty'.