%% %% 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 %% %% 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 \catcode35 6 % # \catcode123 1 % { \catcode125 2 % } \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 \catcode35 6 % # \catcode40 12 % ( \catcode41 12 % ) \catcode44 12 % , \catcode45 12 % - \catcode46 12 % . \catcode47 12 % / \catcode58 12 % : \catcode64 11 % @ \catcode123 1 % { \catcode125 2 % } \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\@undefined \xdef#1{#3}% \fi \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)] \begingroup \catcode123 1 % { \catcode125 2 % } \def\x{\endgroup \expandafter\edef\csname SOuL@AtEnd\endcsname{% \catcode35 \the\catcode35\relax \catcode64 \the\catcode64\relax \catcode123 \the\catcode123\relax \catcode125 \the\catcode125\relax }% }% \x \catcode35 6 % # \catcode64 11 % @ \catcode123 1 % { \catcode125 2 % } \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'.