%% %% This is file `microtype.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% microtype.dtx (with options: `package') %% %% ------------------------------------------------------------------------ %% The `microtype' package %% An interface to the micro-typographic extensions of pdfTeX %% Copyright (c) 2004--2006 R Schlicht %% %% This work may be distributed and/or modified under the conditions of the %% LaTeX Project Public License, either version 1.3c 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.3c or later is part %% of all distributions of LaTeX version 2005/12/01 or later. %% %% This work has the LPPL maintenance status `author-maintained'. %% %% This work consists of the files microtype.dtx and microtype.ins and the %% derived file microtype.sty. %% %% ------------------------------------------------------------------------ %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{microtype}[2006/09/09 v1.9f Micro-typography with pdfTeX (RS)] \newcommand*\DeclareMicrotypeSet[3][]{} \newcommand*\UseMicrotypeSet[2][]{} \newcommand*\DeclareMicrotypeSetDefault[2][]{} \newcommand*\DeclareMicrotypeAlias[2]{} \newcommand*\SetProtrusion[3][]{} \newcommand*\SetExpansion[3][]{} \newcommand*\DisableLigatures[1]{} \newcommand*\DeclareCharacterInheritance[3][]{} \newcommand*\LoadMicrotypeFile[1]{} \newcommand*\microtypesetup[1]{} \newcommand*\microtypecontext[1]{} \def\DeclareMicrotypeSet#1#{\@gobbletwo} \@onlypreamble\DeclareMicrotypeSet \@onlypreamble\UseMicrotypeSet \@onlypreamble\DeclareMicrotypeSetDefault \@onlypreamble\DisableLigatures \def\MT@old@cmd#1#2{% \newcommand*#1{\MT@warning{% \string#1 is deprecated. Please use\MessageBreak \string#2 instead}% \let #1#2#2}} \MT@old@cmd\DeclareMicroTypeAlias\DeclareMicrotypeAlias \MT@old@cmd\DeclareMicroTypeSet \DeclareMicrotypeSet \MT@old@cmd\UseMicroTypeSet \UseMicrotypeSet \MT@old@cmd\LoadMicroTypeFile \LoadMicrotypeFile \def\MT@MT{microtype} \def\MT@error{\PackageError\MT@MT} \def\MT@warning{\PackageWarning\MT@MT} \def\MT@warning@nl#1{\MT@warning{#1\@gobble}} \def\MT@warn@err#1{\MT@error{#1}{% This error message appears because you loaded the `\MT@MT'\MessageBreak package with the option `verbose=errors'. Consult the documentation\MessageBreak in \MT@MT.(pdf,dvi) to find out what went wrong.}} \def\MT@info{\PackageInfo\MT@MT} \def\MT@info@nl#1{\MT@info{#1\@gobble}} \let\MT@vinfo\@gobble \def\MT@pdftex@no{0} \ifx\normalpdftexversion\@undefined \else \let\pdftexversion \normalpdftexversion \let\pdftexrevision\normalpdftexrevision \let\pdfoutput \normalpdfoutput \fi \ifx\pdftexversion\@undefined \else \ifx\pdftexversion\relax \else \def\MT@pdftex@no{5} \ifnum\pdftexversion < 130 \def\MT@pdftex@no{4} \ifnum\pdftexversion < 120 \def\MT@pdftex@no{3} \ifnum\pdftexversion = 14 \ifnum \expandafter`\pdftexrevision < `h \def\MT@pdftex@no{2} \ifnum \expandafter`\pdftexrevision < `f \def\MT@pdftex@no{1} \fi \fi \else \ifnum\pdftexversion < 14 \def\MT@pdftex@no{1} \fi \fi \fi \fi \fi \fi \ifnum\MT@pdftex@no<\tw@ \AtEndOfPackage{\let\@unprocessedoptions\relax} \let\CurrentOption\@empty \MT@warning@nl{% \ifcase\MT@pdftex@no You don't seem to be using pdftex.\MessageBreak \or You are using a pdftex version older than 0.14f.\MessageBreak `\MT@MT' won't work with such antiquated versions.\MessageBreak Please install a newer version of pdftex.\MessageBreak \fi All micro-typographic features will be disabled} \endinput\fi \def\MT@catcodes{% \catcode`\^7 % \@makeother\-% \@makeother\=% \@makeother\*% \@makeother\,% \@makeother\/% \@makeother\`% \@makeother\'% \@makeother\"% \@makeother\!% } \def\MT@restore@catcodes#1{% \ifx\relax#1\else \noexpand\catcode`\noexpand#1\the\catcode`#1\relax \expandafter\MT@restore@catcodes \fi } \edef\MT@restore@catcodes{\MT@restore@catcodes\^\-\=\*\,\/\`\'\"\!\relax} \MT@catcodes \AtEndOfPackage{\MT@restore@catcodes} \RequirePackage{keyval}[1997/11/10] \newtoks\MT@toks \newif\ifMT@if@ \newif\ifMT@protrusion \newif\ifMT@expansion \newif\ifMT@auto \newif\ifMT@selected \newif\ifMT@noligatures \newif\ifMT@draft \let\MT@pr@level\tw@ \let\MT@pr@factor\@m \let\MT@pr@unit\@empty \let\MT@ex@level\tw@ \let\MT@ex@factor\@m \let\MT@stretch\m@ne \let\MT@shrink \m@ne \let\MT@step \m@ne \def\MT@pr@min{-\@m} \let\MT@pr@max\@m \let\MT@ex@min\z@ \let\MT@ex@max\@m \def\MT@factor@default{1000 } \def\MT@stretch@default{20 } \def\MT@shrink@default{20 } \def\MT@step@default{4 } \newif\ifMT@document \expandafter\let\expandafter\MT@requires@etex \ifcase 0% \ifx\eTeXversion\@undefined 1\else \ifx\eTeXversion\relax 1\else \ifcase\eTeXversion 1\fi \fi \fi\space \@firstoftwo \else \@secondoftwo \fi \def\MT@requires@pdftex#1{% \ifnum\MT@pdftex@no<#1\relax \expandafter\@secondoftwo \else \expandafter\@firstoftwo \fi } \def\MT@glet{\global\let} \def\MT@def@n#1{\expandafter\def\csname #1\endcsname} \def\MT@gdef@n#1{\expandafter\gdef\csname #1\endcsname} \def\MT@edef@n#1{\expandafter\edef\csname #1\endcsname} \def\MT@xdef@n#1{\expandafter\xdef\csname #1\endcsname} \def\MT@let@nc#1{\expandafter\let\csname #1\endcsname} \def\MT@let@cn#1#2{\expandafter\let\expandafter#1\csname #2\endcsname} \def\MT@let@nn#1{\expandafter\MT@let@cn\csname #1\endcsname} \def\MT@@font{\expandafter\string\MT@font} \def\MT@exp@one@n#1#2{\expandafter#1\expandafter{#2}} \def\MT@exp@two@c#1{\expandafter\expandafter\expandafter#1\expandafter} \def\MT@exp@two@n#1#2#3{% \expandafter\expandafter\expandafter #1\expandafter\expandafter\expandafter {\expandafter#2\expandafter}\expandafter{#3}} \MT@requires@etex{ \def\MT@ifdefined@c@T#1{\ifdefined#1% \expandafter\@firstofone\else\expandafter\@gobble\fi } \def\MT@ifdefined@c@TF#1{\ifdefined#1% \expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi } \def\MT@ifdefined@n@T#1{\ifcsname#1\endcsname \expandafter\@firstofone\else\expandafter\@gobble\fi } \def\MT@ifdefined@n@TF#1{\ifcsname#1\endcsname \expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi } }{ \def\MT@ifdefined@c@T#1{\ifx#1\@undefined \expandafter\@gobble\else\expandafter\@firstofone\fi } \def\MT@ifdefined@c@TF#1{\ifx#1\@undefined \expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi } \def\MT@ifdefined@n@T#1{\begingroup\MT@exp@two@c\endgroup \ifx\csname #1\endcsname\relax \expandafter\@gobble\else\expandafter\@firstofone\fi } \def\MT@ifdefined@n@TF#1{\begingroup\MT@exp@two@c\endgroup \ifx\csname #1\endcsname\relax \expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi } } \MT@requires@etex{ \def\MT@detokenize@n#1{\detokenize\expandafter{\string#1}} \def\MT@detokenize@c#1{\detokenize \expandafter\expandafter\expandafter{\expandafter\string#1}} }{ \def\MT@detokenize@n#1{\string#1} \def\MT@detokenize@c#1{\MT@exp@two@c\zap@space\strip@prefix\meaning#1 \@empty} } \begingroup \catcode`\%=12 \catcode`\&=14 \gdef\MT@ifempty#1{& \if %#1%& \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi } \endgroup \MT@requires@pdftex6{ \def\MT@ifint#1{% \ifcase\pdfmatch{^[0-9]+ *$}{#1}\relax \expandafter\@secondoftwo \else \expandafter\@firstoftwo \fi } }{ \def\MT@ifint#1{% \if!\ifnum9<1#1!\else?\fi \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi } } \MT@requires@pdftex6{ \def\MT@ifdimen#1{% \ifcase\pdfmatch{^([0-9]+([.,][0-9]+)?|[.,][0-9]+)% (em|ex|cm|mm|in|pc|pt|dd|cc|bp|sp|nd|nc|px)? *$}{#1}\relax \expandafter\@secondoftwo \else \expandafter\@firstoftwo \fi } }{ \def\MT@ifdimen#1{% \setbox\z@=\hbox{% \MT@count=1#1\relax \ifnum\MT@count=\@ne \aftergroup\@secondoftwo \else \aftergroup\@firstoftwo \fi }% } } \def\MT@ifdim#1#2#3{% \ifdim #1\p@ #2 #3\p@ \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi } \MT@requires@pdftex5{ \def\MT@ifstreq#1#2{% \ifcase\pdfstrcmp{#1}{#2}\relax \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi } }{ \def\MT@ifstreq#1#2{% \edef\x{#1}% \edef\y{#2}% \ifx\x\y \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi } } \def\MT@xadd#1#2{% \ifx#1\relax \xdef#1{#2}% \else \xdef#1{#1#2}% \fi } \def\MT@xaddb#1#2{% \ifx#1\relax \xdef#1{#2}% \else \xdef#1{#2#1}% \fi } \def\MT@map@clist@n#1#2{% \ifx\@empty#1\else \def\MT@clist@function##1{#2}% \MT@map@clist@#1,\@nil,\@nnil \fi } \def\MT@map@clist@c#1{\MT@exp@one@n\MT@map@clist@n#1} \def\MT@map@clist@#1,{% \ifx\@nil#1% \expandafter\MT@clist@break \fi \MT@clist@function{#1}% \MT@map@clist@ } \let\MT@clist@function\@gobble \def\MT@clist@break#1\@nnil{} \def\MT@map@tlist@n#1#2{\MT@map@tlist@#2#1\@nnil} \def\MT@map@tlist@c#1#2{\expandafter\MT@map@tlist@\expandafter#2#1\@nnil} \def\MT@map@tlist@#1#2{% \ifx\@nnil#2\else #1{#2}% \expandafter\MT@map@tlist@ \expandafter#1% \fi } \def\MT@tlist@break#1\@nnil{\fi} \newif\ifMT@inlist@ \def\MT@in@clist#1#2{% \def\x##1,#1,##2##3\@nnil{% \ifx##2\@empty \MT@inlist@false \else \MT@inlist@true \fi }% \expandafter\x\expandafter,#2,#1,\@empty\@nnil } \def\MT@rem@from@clist#1#2{% \def\x##1,#1,##2\x{##1,##2\y}% \def\y##1,\y##2\y{\ifx,##1\@empty\else##1\fi}% \xdef#2{\MT@exp@two@c\y\x\expandafter,#2,\y,#1,\x}% } \def\MT@in@tlist#1#2{% \MT@inlist@false \def\x{#1}% \MT@map@tlist@c#2\MT@in@tlist@ } \def\MT@in@tlist@#1{% \edef\y{#1}% \ifx\x\y \MT@inlist@true \expandafter\MT@tlist@break \fi } \def\MT@in@rlist#1{% \MT@inlist@false \MT@map@tlist@c#1\MT@in@rlist@ } \def\MT@in@rlist@#1{\expandafter\MT@in@rlist@@#1} \def\MT@in@rlist@@#1#2#3{% \MT@ifdim{#2}=\m@ne{% \MT@ifdim{#1}=\MT@size \MT@inlist@true \relax }{% \MT@ifdim\MT@size<{#1}\relax{% \MT@ifdim\MT@size<{#2}% \MT@inlist@true \relax }% }% \ifMT@inlist@ \def\MT@size@name{#3}% \expandafter\MT@tlist@break \fi } \def\MT@loop#1\MT@repeat{% \def\MT@iterate{#1\relax\expandafter\MT@iterate\fi}% \MT@iterate \let\MT@iterate\relax } \let\MT@repeat\fi \def\MT@while@num#1#2#3{% \@tempcnta#1\relax \MT@loop #3% \advance\@tempcnta \@ne \ifnum\@tempcnta < #2\MT@repeat } \def\MT@do@font{\MT@while@num\z@\@cclvi} \newcount\MT@count \MT@requires@etex{ \def\MT@increment#1{\edef#1{\number\numexpr #1 + 1\relax}} }{ \def\MT@increment#1{% \MT@count=#1\relax \advance\MT@count \@ne \edef#1{\number\MT@count}% } } \MT@requires@etex{ \def\MT@scale#1#2#3{% \ifnum #3 = \z@ #1=\numexpr #1 * #2\relax \else #1=\numexpr #1 * #2 / #3\relax \fi } }{ \def\MT@scale#1#2#3{% \multiply #1 #2\relax \ifnum #3 = \z@ \else \divide #1 #3\relax \fi } } \let\MT@make@string\@onelevel@sanitize \def\MT@abbr@pr{protrusion} \def\MT@abbr@ex{expansion} \def\MT@abbr@pr@c{protrusion codes} \def\MT@abbr@ex@c{expansion codes} \def\MT@abbr@pr@inh{protrusion inheritance} \def\MT@abbr@ex@inh{expansion inheritance} \def\MT@abbr@nl{noligatures} \def\MT@rbba@protrusion{pr} \def\MT@rbba@expansion{ex} \def\MT@features{pr,ex% } \def\MT@features@long{protrusion,expansion% } \def\MT@is@feature#1{% \MT@exp@one@n\MT@in@clist\@tempa\MT@features@long \ifMT@inlist@ \expandafter\@firstofone \else \MT@error{`\@tempa' is not an available micro-typographic\MessageBreak feature. Ignoring #1}{Available features are: `\MT@features@long'.}% \expandafter\@gobble \fi } \let\MT@setup@\@empty \def\MT@addto@setup{\g@addto@macro\MT@setup@} \AtBeginDocument{\MT@setup@ \MT@glet\MT@setup@\@empty} \def\MT@with@package#1{\@ifpackageloaded{#1}\@firstofone\@gobble} \def\MT@pdfcprot@error{% \MT@error{Detected the `pdfcprot' package!\MessageBreak `\MT@MT' and `pdfcprot' may not be used together}{% The `pdfcprot' package provides an interface to character protrusion.\MessageBreak So does the `\MT@MT' package. Using both packages at the same\MessageBreak time will almost certainly lead to undesired results. Have your choice!}% \let\MT@pdfcprot@error\relax } \MT@with@package{pdfcprot}\MT@pdfcprot@error \MT@requires@pdftex5{ \def\MT@ledmac@setup{% \ifMT@protrusion \MT@ifdefined@c@TF\l@dunhbox@line{% \MT@info@nl{Patching ledmac to enable character protrusion}% \newdimen\MT@led@kern \let\MT@led@unhbox@line\l@dunhbox@line \renewcommand*{\l@dunhbox@line}[1]{% \ifhbox##1% \MT@led@kern=\rightmarginkern##1% \kern\leftmarginkern##1% \MT@led@unhbox@line##1% \kern\MT@led@kern \fi }% }{% \MT@warning@nl{% Character protrusion in paragraphs with line\MessageBreak numbering will only work if you update ledmac}% }% \fi } }{ \def\MT@ledmac@setup{% \ifMT@protrusion \MT@warning@nl{% The pdftex version you are using does not allow\MessageBreak character protrusion in paragraphs with line\MessageBreak numbering by the `ledmac' package.\MessageBreak Upgrade pdftex to version 1.30 or later}% \fi } } \def\MT@restore@p@h{\chardef\%`\% \chardef\#`\# } \def\MT@setupfont@hook{% \@ifpackagewith{babel}{spanish}{% \MT@ifdefined@c@T\percentsign{\let\%\percentsign}% }\relax \MT@with@package{csquotes}{% \@ifpackagelater{csquotes}{2005/05/11}\@disablequotes\relax }% \@ifpackageloaded{hyperref}\MT@restore@p@h{% \MT@with@package{tex4ht}\MT@restore@p@h }% } \MT@addto@setup{% \MT@with@package{pdfcprot}\MT@pdfcprot@error \MT@with@package{ledmac}\MT@ledmac@setup \let\MT@setupfont@hook\@empty \@ifpackagewith{babel}{spanish}{% \g@addto@macro\MT@setupfont@hook{% \MT@ifdefined@c@T\percentsign{\let\%\percentsign}}% }\relax \MT@with@package{csquotes}{% \@ifpackagelater{csquotes}{2005/05/11}{% \g@addto@macro\MT@setupfont@hook\@disablequotes }{% \MT@warning@nl{% Should you receive warnings about unknown slot\MessageBreak numbers, try upgrading the `csquotes' package}% }% }% \@ifpackageloaded{hyperref}{% \g@addto@macro\MT@setupfont@hook\MT@restore@p@h \pdfstringdefDisableCommands{% \let\pickup@font\MT@orig@pickupfont }% }{% \MT@with@package{tex4ht}{% \g@addto@macro\MT@setupfont@hook\MT@restore@p@h }% }% \MT@with@package{listings}{% \g@addto@macro\MT@begin@catcodes{% \MT@while@num{"30}{"3A}{\catcode\@tempcnta 12\relax}% \MT@while@num{"41}{"5B}{\catcode\@tempcnta 11\relax}% \MT@while@num{"61}{"7B}{\catcode\@tempcnta 11\relax}% }% \g@addto@macro\MT@setupfont@hook{% \let\lst@ProcessLetter\@empty }% }% } \expandafter\ifx\the\font\nullfont\normalfont\fi \def\MT@setupfont{% \ifx\MT@vinfo\MT@info@nl \MT@info{Setting up font `\MT@@font'}\fi \MT@setupfont@hook \MT@exp@two@c\MT@split@name\string\MT@font\@nil \MT@exp@one@n\MT@find@file\MT@family \ifx\MT@familyalias\@empty \else \MT@exp@one@n\MT@find@file\MT@familyalias\fi \ifx\f@encoding\cf@encoding\else\@@enc@update\fi \MT@protrusion \MT@expansion \MT@noligatures } \def\MT@split@name#1/#2/#3/#4/#5\@nil{% \def\MT@encoding{#1}% \def\MT@family{#2}% \def\MT@series{#3}% \def\MT@shape{#4}% \def\MT@size{#5}% \MT@ifdefined@n@TF{MT@\MT@family @alias}% {\MT@let@cn\MT@familyalias{MT@\MT@family @alias}}% {\let\MT@familyalias\@empty}% } \newif\ifMT@do \def\MT@maybe@do#1{% \expandafter\csname ifMT@\csname MT@abbr@#1\endcsname\endcsname \MT@dotrue \MT@map@clist@n{font,encoding,family,series,shape,size}{% \MT@ifdefined@n@TF{MT@checklist@##1}% {\csname MT@checklist@##1\endcsname}% {\MT@checklist@{##1}}% {#1}% }% \else \MT@dofalse \fi \ifMT@do \def\MT@feat{#1}% \csname MT@set@#1@codes\endcsname \else \MT@vinfo{... No \@nameuse{MT@abbr@#1}}% \fi } \def\MT@checklist@#1#2{% \edef\@tempa{\csname MT@#2@setname\endcsname}% \MT@ifdefined@n@T {MT@#2list@#1@\@tempa}{% \expandafter\MT@exp@one@n\expandafter\MT@in@clist \csname MT@#1\expandafter\endcsname \csname MT@#2list@#1@\@tempa\endcsname \ifMT@inlist@ \MT@dotrue \else \MT@dofalse \expandafter\MT@clist@break \fi }% } \def\MT@checklist@font#1{% \edef\@tempa{\csname MT@#1@setname\endcsname}% \MT@ifdefined@n@T {MT@#1list@font@\@tempa}{% \expandafter\expandafter\expandafter\MT@exp@one@n \expandafter\expandafter\expandafter\MT@in@clist \expandafter\expandafter\expandafter{% \expandafter\expandafter\expandafter\string \expandafter\MT@font\expandafter}% \csname MT@#1list@font@\@tempa\endcsname \ifMT@inlist@ \expandafter\MT@clist@break \else \MT@dofalse \fi }% } \def\MT@checklist@family#1{% \edef\@tempa{\csname MT@#1@setname\endcsname}% \MT@ifdefined@n@T {MT@#1list@family@\@tempa}{% \MT@exp@two@n\MT@in@clist \MT@family{\csname MT@#1list@family@\@tempa\endcsname}% \ifMT@inlist@ \MT@dotrue \else \MT@dofalse \ifx\MT@familyalias\@empty \else \MT@exp@two@n\MT@in@clist \MT@familyalias{\csname MT@#1list@family@\@tempa\endcsname}% \ifMT@inlist@ \MT@dotrue \fi \fi \fi \ifMT@do \else \expandafter\MT@clist@break \fi }% } \def\MT@checklist@size#1{% \edef\@tempa{\csname MT@#1@setname\endcsname}% \MT@ifdefined@n@T {MT@#1list@size@\@tempa}{% \expandafter\MT@in@rlist \csname MT@#1list@size@\@tempa\endcsname \ifMT@inlist@ \MT@dotrue \else \MT@dofalse \expandafter\MT@clist@break \fi }% } \def\MT@protrusion{\MT@maybe@do{pr}} \def\MT@set@pr@codes{% \MT@if@list@exists{% \MT@get@dimen@six \MT@get@opt \MT@reset@pr@codes \MT@get@inh@list \MT@set@inputenc{c}% \MT@load@list\MT@pr@c@name \MT@set@listname \MT@let@cn\@tempc{MT@pr@c@\MT@pr@c@name}% \expandafter\MT@pr@do\@tempc,\relax,% }\MT@reset@pr@codes } \def\MT@set@all@pr#1#2{% \MT@do@font{% \lpcode\MT@font\@tempcnta=#1\relax \rpcode\MT@font\@tempcnta=#2\relax }% } \def\MT@reset@pr@codes@{\MT@set@all@pr\z@\z@} \let\MT@reset@pr@codes\relax \def\MT@get@dimen@six{% \ifnum\fontdimen6\MT@font=\z@ \MT@warning@nl{% Font `\MT@@font' does not specify its\MessageBreak \@backslashchar fontdimen 6 (width of an `em')! Therefore,\MessageBreak \@nameuse{MT@abbr@\MT@feat} will not work with this font}% \expandafter\MT@gobble@settings \else \edef\MT@dimen@six{\number\fontdimen6\MT@font}% \fi } \def\MT@gobble@settings#1\@tempc,\relax,{} \def\MT@pr@do#1,{% \ifx\relax#1\@empty\else \MT@pr@split #1==\relax \expandafter\MT@pr@do \fi } \def\MT@pr@split#1=#2=#3\relax{% \def\@tempa{#1}% \ifx\@tempa\@empty \else \MT@get@slot \ifnum\MT@char > \m@ne \MT@get@char@unit \MT@pr@split@val#2\relax \fi \fi } \def\MT@pr@split@val#1,#2\relax{% \def\@tempb{#1}% \MT@ifempty\@tempb\relax{% \MT@scale@to@em \lpcode\MT@font\MT@char=\@tempcntb }% \def\@tempb{#2}% \MT@ifempty\@tempb\relax{% \MT@scale@to@em \rpcode\MT@font\MT@char=\@tempcntb }% \MT@ifdefined@c@T\MT@pr@inh@name{% \MT@ifdefined@n@T{MT@inh@\MT@pr@inh@name @\MT@char @}{% \expandafter\MT@map@tlist@c \csname MT@inh@\MT@pr@inh@name @\MT@char @\endcsname \MT@set@pr@heirs }% }% } \MT@requires@pdftex3{ \def\MT@scale@to@em{% \@tempcntb=\MT@count\relax \MT@scale\@tempcntb \@tempb \MT@dimen@six \ifnum\@tempcntb=\z@ \else \MT@scale@factor \fi } \MT@requires@etex{ \def\MT@get@charwd{% \MT@count=\fontcharwd\MT@font\MT@char\relax \ifnum\MT@count=\z@ \MT@info@missing@char \fi } }{ \def\MT@get@charwd{% \setbox\z@=\hbox{\MT@font \char\MT@char}% \MT@count=\wd\z@\relax \ifnum\MT@count=\z@ \MT@info@missing@char \fi } } }{ \def\MT@scale@to@em{% \MT@count=\@tempb\relax \ifnum\MT@count=\z@ \else \MT@scale@factor \fi } \def\MT@get@charwd{\MT@count=\MT@dimen@six} } \def\MT@get@font@dimen#1{% \ifnum\fontdimen#1\MT@font=\z@ \MT@warning@nl{Font \font@name does not specify its\MessageBreak \@backslashchar fontdimen \number#1 (it's zero).\MessageBreak You should use a different `unit' for \MT@curr@list@name}% \else \MT@count=\fontdimen#1\MT@font \fi } \MT@requires@etex{ \def\MT@info@missing@char{% \MT@info@nl{Character `\the\MT@toks' \iffontchar\MT@font\MT@char has a width of 0pt \else is missing \fi in font\MessageBreak `\MT@@font'. Ignoring protrusion settings\MessageBreak for this character}% } }{ \def\MT@info@missing@char{% \MT@info@nl{% Character `\the\MT@toks' has a width of 0pt\MessageBreak (it's probably missing) in font `\MT@@font'.\MessageBreak Ignoring protrusion settings for this character}% } } \def\MT@scale@factor{% \ifnum\csname MT@\MT@feat @factor@\endcsname=\@m \else \expandafter\MT@scale\expandafter \@tempcntb \csname MT@\MT@feat @factor@\endcsname \@m \fi \ifnum\@tempcntb>\csname MT@\MT@feat @max\endcsname\relax \expandafter\MT@warn@code@too@large\csname MT@\MT@feat @max\endcsname \else \ifnum\@tempcntb<\csname MT@\MT@feat @min\endcsname\relax \expandafter\MT@warn@code@too@large\csname MT@\MT@feat @min\endcsname \fi \fi } \def\MT@warn@code@too@large#1{% \@tempcnta=#1\relax \ifnum\csname MT@\MT@feat @factor@\endcsname=\@m \else \expandafter\MT@scale\expandafter\@tempcnta\expandafter\@m \csname MT@\MT@feat @factor@\endcsname \fi \MT@scale\@tempcnta \MT@dimen@six \MT@count \MT@warning@nl{The \@nameuse{MT@abbr@\MT@feat} code \@tempb\space is too large for character\MessageBreak `\the\MT@toks' in \MT@curr@list@name.\MessageBreak Setting it to the maximum of \number\@tempcnta}% \@tempcntb=#1\relax } \def\MT@get@opt{% \MT@set@listname \MT@ifdefined@n@TF{MT@\MT@feat @c@\csname MT@\MT@feat @c@name\endcsname @factor}{% \MT@let@nn{MT@\MT@feat @factor@} {MT@\MT@feat @c@\csname MT@\MT@feat @c@name\endcsname @factor}% \MT@vinfo{... : Multiplying \@nameuse{MT@abbr@\MT@feat} codes by \number\csname MT@\MT@feat @factor@\endcsname/1000}% }{% \MT@let@nn{MT@\MT@feat @factor@}{MT@\MT@feat @factor}% }% \MT@ifdefined@n@TF{MT@\MT@feat @c@\csname MT@\MT@feat @c@name\endcsname @unit}{% \MT@let@nn{MT@\MT@feat @unit@}% {MT@\MT@feat @c@\csname MT@\MT@feat @c@name\endcsname @unit}% \expandafter\ifx\csname MT@\MT@feat @unit@\endcsname\@empty \MT@vinfo{... : Setting \@nameuse{MT@abbr@\MT@feat} codes relative to character widths}% \else \expandafter\ifx\csname MT@\MT@feat @unit@\endcsname\m@ne \MT@vinfo{... : Setting \@nameuse{MT@abbr@\MT@feat} codes relative to width of space}% \fi \fi }{% \MT@let@nn{MT@\MT@feat @unit@}{MT@\MT@feat @unit}% }% \let\MT@get@char@unit\relax \let\MT@get@space@unit\@gobble \expandafter\ifx\csname MT@\MT@feat @unit@\endcsname\@empty \let\MT@get@char@unit\MT@get@charwd \else \expandafter\ifx\csname MT@\MT@feat @unit@\endcsname\m@ne \let\MT@get@space@unit\MT@get@font@dimen \else \expandafter\MT@get@unit\csname MT@\MT@feat @unit@\endcsname \fi \fi \MT@ifdefined@n@T{MT@\MT@feat @c@\csname MT@\MT@feat @c@name\endcsname @preset}{% \csname MT@preset@\MT@feat\endcsname \MT@let@nc{MT@reset@\MT@feat @codes}\relax }% } \def\MT@get@unit#1{% \expandafter\MT@get@unit@#1 e!\@nil \ifx\x\@empty\else\let#1\x\fi \@defaultunits\@tempdima#1 pt\relax\@nnil \ifdim\@tempdima=\z@ \MT@warning@nl{% Cannot set \@nameuse{MT@abbr@\MT@feat} factors relative to zero\MessageBreak width. Setting factors of list `\@nameuse{MT@\MT@feat @c@name}'\MessageBreak relative to character widths instead}% \let#1\@empty \let\MT@get@char@unit\MT@get@charwd \else \MT@vinfo{... : Setting \@nameuse{MT@abbr@\MT@feat} factors relative to \the\@tempdima}% \MT@count=\@tempdima\relax \fi } \def\MT@get@unit@#1e#2#3\@nil{% \ifx\\#3\\\let\x\@empty \else \if m#2% \edef\x{#1\fontdimen6\MT@font}% \else \if x#2% \edef\x{#1\fontdimen5\MT@font}% \fi \fi \fi } \def\MT@set@inputenc#1{% \def\MT@cat{#1}% \MT@ifdefined@n@T{% MT@\MT@feat @#1@\csname MT@\MT@feat @#1@name\endcsname @inputenc}{% \MT@ifdefined@c@TF\inputencoding{% \inputencoding{\@nameuse{% MT@\MT@feat @#1@\csname MT@\MT@feat @#1@name\endcsname @inputenc}}% }{% \MT@error{Key `inputenc' used in \MT@curr@list@name, but the `inputenc' \MessageBreak package isn't loaded. Ignoring key}% {You must load the `inputenc' package before you can use the `inputenc' key.}% }% }% } \def\MT@set@pr@heirs#1{% \lpcode\MT@font#1=\lpcode\MT@font\MT@char \rpcode\MT@font#1=\rpcode\MT@font\MT@char } \def\MT@preset@pr{% \expandafter\expandafter\expandafter\MT@preset@pr@ \csname MT@pr@c@\MT@pr@c@name @preset\endcsname\@nil } \def\MT@preset@pr@#1,#2\@nil{% \ifx\MT@pr@unit@\@empty \MT@warn@preset@towidth{pr}% \let\MT@preset@aux\MT@preset@aux@factor \else \let\MT@preset@aux\MT@preset@aux@space \fi \MT@preset@aux{#1}\@tempa \MT@preset@aux{#2}\@tempb \MT@set@all@pr\@tempa\@tempb } \def\MT@preset@aux@factor#1#2{% \@tempcntb=#1\relax \MT@scale@factor \edef#2{\number\@tempcntb}% } \def\MT@preset@aux@space#1#2{% \def\@tempb{#1}% \MT@get@space@unit\tw@ \MT@scale@to@em \edef#2{\number\@tempcntb}% } \def\MT@warn@preset@towidth#1{% \MT@warning@nl{% Cannot preset characters relative to their widths\MessageBreak for \@nameuse{MT@abbr@#1} list `\@nameuse{MT@#1@c@name}'. Presetting them% \MessageBreak relative to 1em instead}% } \def\MT@expansion{\MT@maybe@do{ex}} \def\MT@set@ex@codes@s{% \MT@if@list@exists{% \MT@get@ex@opt \MT@reset@ef@codes \MT@get@inh@list \MT@set@inputenc{c}% \MT@load@list\MT@ex@c@name \MT@set@listname \MT@let@cn\@tempc{MT@ex@c@\MT@ex@c@name}% \expandafter\MT@ex@do\@tempc,\relax,% \pdffontexpand\MT@font \MT@stretch@ \MT@shrink@ \MT@step@ \MT@auto@\relax }\relax } \newif\ifMT@nonselected \def\MT@set@ex@codes@n{% \MT@nonselectedtrue \MT@if@list@exists \MT@get@ex@opt {% \let\MT@stretch@\MT@stretch \let\MT@shrink@\MT@shrink \let\MT@step@\MT@step \let\MT@auto@\MT@auto \let\MT@ex@factor@\MT@ex@factor }% \MT@reset@ef@codes \pdffontexpand\MT@font \MT@stretch@ \MT@shrink@ \MT@step@ \MT@auto@\relax \MT@nonselectedfalse } \let\MT@set@ex@codes\MT@set@ex@codes@n \def\MT@set@all@ex#1{% \MT@do@font{\efcode\MT@font\@tempcnta=#1\relax}% } \def\MT@reset@ef@codes@{\MT@set@all@ex\MT@ex@factor@} \MT@requires@pdftex4{ \def\MT@reset@ef@codes{% \ifnum\MT@ex@factor@=\@m \else \MT@reset@ef@codes@ \fi } }{ \let\MT@reset@ef@codes\MT@reset@ef@codes@ } \def\MT@ex@do#1,{% \ifx\relax#1\@empty \else \MT@ex@split #1==\relax \expandafter\MT@ex@do \fi } \def\MT@ex@split#1=#2=#3\relax{% \def\@tempa{#1}% \ifx\@tempa\@empty \else \MT@get@slot \ifnum\MT@char > \m@ne \@tempcntb=#2\relax \ifnum\MT@ex@factor@=\@m \else \MT@scale\@tempcntb \MT@ex@factor@ \@m \fi \ifnum\@tempcntb > \MT@ex@max \MT@warn@ex@too@large\MT@ex@max \else \ifnum\@tempcntb < \MT@ex@min \MT@warn@ex@too@large\MT@ex@min \fi \fi \efcode\MT@font\MT@char=\@tempcntb \MT@ifdefined@c@T\MT@ex@inh@name{% \MT@ifdefined@n@T{MT@inh@\MT@ex@inh@name @\MT@char @}{% \expandafter\MT@map@tlist@c \csname MT@inh@\MT@ex@inh@name @\MT@char @\endcsname \MT@set@ex@heirs }% }% \fi \fi } \def\MT@warn@ex@too@large#1{% \MT@warning@nl{Expansion factor \number\@tempcntb\space too large for character\MessageBreak `\the\MT@toks' in \MT@curr@list@name.\MessageBreak Setting it to the maximum of \number#1}% \@tempcntb=#1\relax } \def\MT@get@ex@opt{% \MT@set@listname \MT@ifdefined@n@TF{MT@ex@c@\MT@ex@c@name @factor}{% \MT@let@cn\MT@ex@factor@{MT@ex@c@\MT@ex@c@name @factor}% \MT@vinfo{... : Multiplying expansion factors by \number\MT@ex@factor@/1000}% }{% \let\MT@ex@factor@\MT@ex@factor }% \MT@get@ex@opt@{stretch}{Setting stretch limit to \number\MT@stretch@}% \MT@get@ex@opt@{shrink} {Setting shrink limit to \number\MT@shrink@}% \MT@get@ex@opt@{step} {Setting expansion step to \number\MT@step@}% \def\@tempa{autoexpand}% \MT@get@ex@opt@{auto}{\ifx\@tempa\MT@auto@ En\else Dis\fi abling automatic expansion}% \MT@ifdefined@n@T{MT@ex@c@\MT@ex@c@name @preset}{% \MT@preset@ex \let\MT@reset@ef@codes\relax }% } \def\MT@get@ex@opt@#1#2{% \MT@ifdefined@n@TF{MT@ex@c@\MT@ex@c@name @#1}{% \MT@let@nn{MT@#1@}{MT@ex@c@\MT@ex@c@name @#1}% \MT@vinfo{... : #2}% }{% \MT@let@nn{MT@#1@}{MT@#1}% }% } \def\MT@set@ex@heirs#1{% \efcode\MT@font#1=\efcode\MT@font\MT@char } \def\MT@preset@ex{% \@tempcntb=\csname MT@ex@c@\MT@ex@c@name @preset\endcsname\relax \MT@scale@factor \MT@set@all@ex\@tempcntb } \MT@requires@pdftex5{ \def\MT@noligatures{% \ifMT@noligatures \MT@dotrue \MT@map@clist@n{font,encoding,family,series,shape,size}{% \MT@ifdefined@n@TF{MT@checklist@##1}% {\csname MT@checklist@##1\endcsname}% {\MT@checklist@{##1}}% {nl}% }% \else \MT@dofalse \fi \ifMT@do \pdfnoligatures\MT@font \MT@vinfo{... Disabling ligatures}% \fi } }{ \let\MT@noligatures\relax } \def\MT@load@list#1{% \edef\@tempa{#1}% \MT@let@cn\@tempb{MT@\MT@feat @c@\@tempa @load}% \MT@ifstreq\@tempa\@tempb{% \MT@warning{\@nameuse{MT@abbr@\MT@feat} list `\@tempa' cannot load itself}% }{% \ifx\@tempb\relax \else \MT@ifdefined@n@TF{MT@\MT@feat @c@\@tempb}{% \MT@vinfo{... : First loading \@nameuse{MT@abbr@\MT@feat} list `\@tempb'}% \begingroup \MT@load@list\@tempb \endgroup \edef\MT@curr@list@name{\@nameuse{MT@abbr@\MT@feat} list \noexpand\MessageBreak`\@tempb'}% \MT@let@cn\@tempc{MT@\MT@feat @c@\@tempb}% \expandafter\csname MT@\MT@feat @do\expandafter\endcsname\@tempc,\relax,% }{% \MT@warning{\@nameuse{MT@abbr@\MT@feat} list `\@tempb' undefined. Cannot load\MessageBreak it from list `\@tempa'}% }% \fi }% } \let\MT@file@list\@empty \def\MT@find@file#1{% \MT@in@clist{#1}\MT@file@list \ifMT@inlist@\else \MT@begin@catcodes \let\MT@begin@catcodes\relax \let\MT@end@catcodes\relax \InputIfFileExists{mt-#1.cfg}{% \edef\MT@curr@file{mt-#1.cfg}% \MT@vinfo{... Loading configuration file \MT@curr@file}% \MT@xadd\MT@file@list{#1,}% }{% \expandafter\MT@get@basefamily#1\relax\relax\relax \MT@exp@one@n\MT@in@clist\@tempa\MT@file@list \ifMT@inlist@\else \InputIfFileExists{mt-\@tempa.cfg}{% \edef\MT@curr@file{mt-\@tempa.cfg}% \MT@vinfo{... Loading configuration file \MT@curr@file}% \MT@xadd\MT@file@list{\@tempa,#1,}% }{% \MT@vinfo{... No configuration file mt-#1.cfg}% \MT@xadd\MT@file@list{#1,}% }% \fi }% \endgroup \fi } \def\MT@begin@catcodes{% \begingroup \makeatletter \catcode`\^7% \catcode`\ 9% \catcode`\^^I9% \catcode`\^^M9% \catcode`\\\z@ \catcode`\{\@ne \catcode`\}\tw@ \catcode`\#6% \catcode`\%14% \MT@map@tlist@n {\!\"\$\&\'\(\)\*\+\,\-\.\/\:\;\<\=\>\?\[\]\_\`\|\~}% \@makeother \let\KV@@sp@def\def } \let\MT@end@catcodes\endgroup \def\MT@get@basefamily#1#2#3#4\relax{% \ifx#2\relax \def\@tempa{#1}\else \ifx#3\relax \def\@tempa{#1#2}\else \def\@tempa{#1#2#3}% \ifx\relax#4\relax \else \MT@ifstreq{#4}{\string x}\relax{% \MT@ifstreq{#4}{\string j}\relax{% \MT@ifstreq{#4}{\string w}\relax{% \def\@tempa{#1#2#3#4}}}}\fi\fi\fi } \def\MT@get@listname#1{% \let\MT@listname\@undefined \def\@tempb{#1}% \MT@map@tlist@c\MT@try@order\MT@get@listname@ } \def\MT@get@listname@#1{% \expandafter\MT@next@listname#1% \ifx\MT@listname\@undefined \else \expandafter\MT@tlist@break \fi } \def\MT@try@order{% {1111}{1110}{1101}{1100}{1011}{1010}{1001}{1000}% {0111}{0110}{0101}{0100}{0011}{0010}{0001}{0000}% } \def\MT@next@listname#1#2#3#4{% \edef\@tempa{\MT@encoding /\ifnum#1=\@ne \MT@family\fi /\ifnum#2=\@ne \MT@series\fi /\ifnum#3=\@ne \MT@shape\fi /\ifnum#4=\@ne *\fi \MT@context}% \MT@ifdefined@n@TF{MT@\@tempb @\@tempa}{% \MT@next@listname@#4% }{% \ifnum#1=\@ne \ifx\MT@familyalias\@empty \else \edef\@tempa{\MT@encoding /\MT@familyalias /\ifnum#2=\@ne \MT@series\fi /\ifnum#3=\@ne \MT@shape\fi /\ifnum#4=\@ne *\fi \MT@context}% \MT@ifdefined@n@T{MT@\@tempb @\@tempa}{% \MT@next@listname@#4% }% \fi \fi }% } \def\MT@next@listname@#1{% \ifnum#1=\@ne \expandafter\MT@in@rlist\csname MT@\@tempb @\@tempa @sizes\endcsname \ifMT@inlist@ \let\MT@listname\MT@size@name \fi \else \MT@let@cn\MT@listname{MT@\@tempb @\@tempa}% \fi } \def\MT@if@list@exists{% \MT@let@cn\MT@context{MT@\MT@feat @context}% \MT@ifstreq{@}\MT@context{\let\MT@context\@empty}\relax \MT@get@listname{\MT@feat @c}% \MT@ifdefined@c@TF\MT@listname{% \MT@edef@n{MT@\MT@feat @c@name}{\MT@listname}% \ifMT@nonselected \MT@vinfo{... Applying non-selected expansion (list `\MT@listname')}% \else \MT@vinfo{... Loading \@nameuse{MT@abbr@\MT@feat} list `\MT@listname'}% \fi \@firstoftwo }{% \MT@let@nc{MT@\MT@feat @c@name}\@empty \ifMT@nonselected \MT@vinfo{... Applying non-selected expansion}% \else \MT@warning{I cannot find a \@nameuse{MT@abbr@\MT@feat} list for font\MessageBreak`\MT@@font'% \ifx\MT@context\@empty\else\space(context: `\MT@context')\fi. Switching off\MessageBreak\@nameuse{MT@abbr@\MT@feat} for this font}% \fi \@secondoftwo }% } \def\MT@get@inh@list{% \let\MT@context\@empty \MT@get@listname{\MT@feat @inh}% \MT@ifdefined@c@TF\MT@listname{% \MT@edef@n{MT@\MT@feat @inh@name}{\MT@listname}% \MT@let@cn\@tempc{MT@\MT@feat @inh@\MT@listname}% \ifx\@tempc\@empty \else \begingroup \edef\MT@curr@list@name{inheritance list\noexpand\MessageBreak`\MT@listname'}% \MT@set@inputenc{inh}% \expandafter\MT@inh@do\@tempc,\relax,% \global\MT@let@nc{MT@\MT@feat @inh@\MT@listname}\@empty \endgroup \fi }{% \MT@let@nc{MT@\MT@feat @inh@name}\@undefined }% } \def\MT@get@slot{% \escapechar`\\ \let\MT@char@\m@ne \MT@noresttrue \MT@toks=\expandafter{\@tempa}% \expandafter\MT@is@letter\@tempa\relax\relax \ifnum\MT@char@ < \z@ \MT@exp@two@c\MT@is@active\string\@tempa\@nil \MT@ifdefined@n@TF{\MT@encoding\MT@detokenize@c\@tempa}% \MT@is@symbol {\expandafter\MT@is@composite\@tempa\relax\relax}% \ifnum\MT@char@ < \z@ \expandafter\MT@exp@two@c\expandafter\MT@is@char\expandafter \meaning\expandafter\@tempa\MT@charstring\relax\relax\relax \fi \fi \let\MT@char\MT@char@ \ifnum\MT@char < \z@ \MT@warn@unknown \else \ifMT@norest \else \MT@warn@rest \let\MT@char\m@ne \fi \fi \escapechar\m@ne } \newif\ifMT@norest \def\MT@testrest#1#2{\MT@ifstreq{#1}{#2}\relax\MT@norestfalse} \def\MT@is@letter#1#2\relax{% \ifcat a\noexpand#1\relax \edef\MT@char@{\number`#1}% \ifx\\#2\\% \else \MT@norestfalse \fi \else \ifcat !\noexpand#1\relax \edef\MT@char@{\number`#1}% \ifx\\#2\\% \ifnum\MT@char@>127 \MT@warn@ascii \fi \else \MT@norestfalse \expandafter\MT@is@number#1#2\relax\relax \fi \fi \fi } \def\MT@is@number#1#2#3\relax{% \ifx\relax#3\relax \else \ifx\relax#2\relax \else \MT@noresttrue \if#1"\relax \def\x{\uppercase{\edef\MT@char@{\number#1#2#3}}}\x \else \if#1'\relax \def\MT@char@{\number#1#2#3}% \else \MT@ifint{#1#2#3}{% \def\MT@char@{\number#1#2#3}% }\MT@norestfalse \fi \fi \ifnum\MT@char@ > \@cclv \MT@warn@number@too@large{\noexpand#1\noexpand#2\noexpand#3}% \let\MT@char@\m@ne \fi \fi \fi } \def\MT@is@active#1#2\@nil{% \ifnum\catcode`#1 = \active \begingroup \set@display@protect \let\IeC\@firstofone \let\@inpenc@undefined@\MT@undefined@char \def\UTFviii@defined##1{\ifx ##1\relax \MT@undefined@char{utf8}\else\expandafter##1\fi}% \edef\x{% \def\noexpand\@tempa{\@tempa}% \MT@toks={\the\MT@toks\space(= \@tempa)}% }% \expandafter\endgroup\x \fi } \def\MT@undefined@char#1{undefined in input encoding ``#1''} \def\MT@is@symbol{% \edef\MT@char{\csname\MT@encoding\MT@detokenize@c\@tempa\endcsname}% \expandafter\MT@exp@two@c\expandafter\MT@is@char\expandafter \meaning\expandafter\MT@char\MT@charstring\relax\relax\relax \ifnum\MT@char@ < \z@ \expandafter\MT@is@letter\MT@char\relax\relax \fi } \begingroup \catcode`\/=0 /MT@map@tlist@n{/\/C/H/A/R}/@makeother /lowercase{% /def/x{% /def/MT@charstring{\CHAR"}% /def/MT@is@char##1\CHAR"##2##3##4/relax{% /ifx/relax##1/relax /if##3\/relax /edef/MT@char@{/number"##2}% /MT@testrest/MT@charstring{##3##4}% /else /edef/MT@char@{/number"##2##3}% /MT@testrest/MT@charstring{##4}% /fi /fi }% }% } /expandafter/endgroup/x \def\MT@is@composite#1#2\relax{% \ifx\\#2\\\else \edef\MT@char{\expandafter \csname\expandafter \string\csname\MT@encoding\endcsname \MT@detokenize@n{#1}-% \MT@detokenize@n{#2}% \endcsname}% \expandafter\MT@is@letter\MT@char\relax\relax \fi } \def\MT@set@listname{% \edef\MT@curr@list@name{\@nameuse{MT@abbr@\MT@feat} list\noexpand\MessageBreak `\@nameuse{MT@\MT@feat @c@name}'}% } \def\MT@warn@ascii{% \MT@warning@nl{Character `\the\MT@toks' (= \MT@char@) is outside of ASCII range.\MessageBreak You must load the `inputenc' package before using\MessageBreak 8-bit characters in \MT@curr@list@name}% } \def\MT@warn@number@too@large#1{% \MT@warning@nl{% Number #1 in encoding `\MT@encoding' too large!\MessageBreak Ignoring it in \MT@curr@list@name}% } \def\MT@warn@rest{% \MT@warning@nl{% Unknown slot number of character\MessageBreak`\the\MT@toks'% \MT@warn@maybe@inputenc\MessageBreak in font encoding `\MT@encoding'.\MessageBreak Make sure it's a single character\MessageBreak (or a number) in \MT@curr@list@name}% } \def\MT@warn@unknown{% \MT@warning@nl{% Unknown slot number of character\MessageBreak`\the\MT@toks'% \MT@warn@maybe@inputenc\MessageBreak in font encoding `\MT@encoding' in \MT@curr@list@name}% } \def\MT@warn@maybe@inputenc{% \MT@ifdefined@n@T {MT@\MT@feat @\MT@cat @\csname MT@\MT@feat @\MT@cat @name\endcsname @inputenc}% { (input encoding `\@nameuse {MT@\MT@feat @\MT@cat @\csname MT@\MT@feat @\MT@cat @name\endcsname @inputenc}')}% } \let\MT@font@list\@empty \let\MT@font\@empty \MT@addto@setup{% \g@addto@macro\do@subst@correction{% \xdef\MT@font{\csname \curr@fontshape/\f@size\endcsname}% } \def\MT@orig@pickupfont{\expandafter\ifx\font@name\relax\define@newfont\fi} \ifx\pickup@font\MT@orig@pickupfont \else \MT@warning@nl{% Command \string\pickup@font\space is not defined as expected.\MessageBreak Double-check whether micro-typography is indeed\MessageBreak applied to the document.\MessageBreak (Hint: Turn on `verbose' mode)% } \fi \g@addto@macro\pickup@font{\begingroup} \MT@with@package{trace}{\g@addto@macro\pickup@font{\conditionally@traceoff}} \g@addto@macro\pickup@font{% \escapechar\m@ne \ifx\MT@font\@empty \let\MT@font\font@name \else \ifx\MT@font\font@name \else \MT@register@subst@font \fi \fi \MT@check@font \ifMT@inlist@ \else \MT@setupfont \MT@register@font \fi \MT@glet\MT@font\@empty \endgroup } \let\MT@pickupfont\pickup@font \let\MT@orig@add@accent\add@accent \def\add@accent#1#2{% \let\pickup@font\MT@orig@pickupfont \MT@orig@add@accent{#1}{#2}% \let\pickup@font\MT@pickupfont } } \def\MT@check@font{\MT@exp@one@n\MT@in@clist\MT@font\MT@font@list} \def\MT@register@subst@font{\xdef\MT@font@list{\MT@font@list\font@name,}} \def\MT@register@font{\xdef\MT@font@list{\MT@font@list\MT@font,}} \let\MT@active@features\@empty \def\MT@check@font@cx{% \MT@if@true \MT@map@clist@c\MT@active@features{% \expandafter\MT@exp@one@n\expandafter\MT@in@clist\expandafter\MT@font \csname MT@##1@\csname MT@##1@context\endcsname font@list\endcsname \ifMT@inlist@ \MT@let@nc{MT@\@nameuse{MT@abbr@##1}}\relax \else \MT@if@false \fi }% \ifMT@if@ \MT@inlist@true \else \MT@inlist@false \fi } \def\MT@register@subst@font@cx{% \MT@map@clist@c\MT@active@features{% \expandafter\MT@xadd \csname MT@##1@\csname MT@##1@context\endcsname font@list\endcsname {\font@name,}% }% } \def\MT@register@font@cx{% \MT@map@clist@c\MT@active@features{% \expandafter\ifx\csname MT@\@nameuse{MT@abbr@##1}\endcsname\relax\else \expandafter\MT@xadd \csname MT@##1@\csname MT@##1@context\endcsname font@list\endcsname {\MT@font,}% \def\@tempa{##1}% \expandafter\MT@map@tlist@c \csname MT@##1@doc@contexts\endcsname \MT@rem@from@lists \fi }% } \def\MT@rem@from@lists#1{% \MT@ifstreq{\@tempa/#1}{\@tempa/\csname MT@\@tempa @context\endcsname}\relax{% \expandafter\MT@exp@one@n\expandafter\MT@rem@from@clist \expandafter\MT@font\csname MT@\@tempa @#1font@list\endcsname }% } \def\microtypecontext#1{\MT@addto@setup{\microtypecontext{#1}}} \MT@addto@setup{% \def\microtypecontext#1{% \MT@setup@contexts \let\MT@reset@context\relax \setkeys{MTC}{#1}% \selectfont \MT@reset@context }% } \def\MT@reset@context@{% \MT@vinfo{<<< Resetting contexts\on@line }% \selectfont } \def\MT@setup@contexts{% \MT@map@clist@c\MT@active@features {\global\MT@let@nc{MT@##1@@font@list}\MT@font@list}% \MT@glet\MT@check@font\MT@check@font@cx \MT@glet\MT@register@font\MT@register@font@cx \MT@glet\MT@register@subst@font\MT@register@subst@font@cx \MT@glet\MT@setup@contexts\relax } \def\MT@define@context#1{% \define@key{MTC}{#1}[]{% \KV@@sp@def\@tempb{#1}% \edef\@tempb{\@nameuse{MT@rbba@\@tempb}}% \MT@exp@one@n\MT@in@clist\@tempb\MT@active@features \ifMT@inlist@ \MT@ifempty{##1}{\def\MT@val{@}}{\KV@@sp@def\MT@val{##1}}% \expandafter\ifx\csname MT@\@tempb @context\endcsname\MT@val \else \MT@vinfo{>>> Changing #1 context to `\MT@val'\MessageBreak\on@line }% \def\MT@reset@context{\aftergroup\MT@reset@context@}% \global\MT@let@nn{MT@reset@\@tempb @codes}{MT@reset@\@tempb @codes@}% \expandafter\MT@exp@one@n\expandafter\MT@in@tlist \expandafter\MT@val\csname MT@\@tempb @doc@contexts\endcsname \ifMT@inlist@ \else \expandafter\MT@xadd\csname MT@\@tempb @doc@contexts\endcsname{{\MT@val}}% \fi \MT@edef@n{MT@\@tempb @context}{\MT@val}% \fi \fi }% } \MT@map@clist@c\MT@features@long{\MT@define@context{#1}} \MT@exp@one@n\MT@map@clist@n{\MT@features,nl}{% \MT@def@n{MT@#1@context}{@}% \MT@def@n{MT@#1@doc@contexts}{{@}}% } \let\MT@extra@context\@empty \def\DeclareMicrotypeSet{% \@ifstar {\@ifnextchar[\MT@DeclareSetAndUseIt {\MT@DeclareSetAndUseIt[]}}% {\@ifnextchar[\MT@DeclareSet {\MT@DeclareSet[]}}% } \def\MT@DeclareSet[#1]{% \MT@DeclareSet@{#1}% } \def\MT@DeclareSetAndUseIt[#1]#2#3{% \MT@DeclareSet@{#1}{#2}{#3}% \UseMicrotypeSet[#1]{#2}% } \def\MT@DeclareSet@#1#2#3{% \KV@@sp@def\@tempa{#1}% \MT@ifempty\@tempa{% \MT@map@clist@c\MT@features{{\MT@declare@sets{##1}{#2}{#3}}}% }{% \MT@map@clist@c\@tempa{{% \KV@@sp@def\@tempa{##1}% \MT@ifempty\@tempa\relax{% \MT@is@feature{set declaration `#2'}{% \MT@exp@one@n\MT@declare@sets {\csname MT@rbba@\@tempa\endcsname}{#2}{#3}% }% }% }}% }% } \let\MT@curr@set@name\@empty \def\MT@declare@sets#1#2#3{% \KV@@sp@def\MT@curr@set@name{#2}% \MT@ifdefined@n@T{MT@#1@set@@\MT@curr@set@name}{% \MT@warning{Redefining set `\MT@curr@set@name'}% }% \global\MT@let@nc{MT@#1@set@@\MT@curr@set@name}\@empty \setkeys{MT@#1@set}{#3}% } \def\MT@define@set@keys#1{% \MT@define@set@key@{encoding}{#1}% \MT@define@set@key@{family}{#1}% \MT@define@set@key@{series}{#1}% \MT@define@set@key@{shape}{#1}% \MT@define@set@key@size{#1}% \MT@define@set@key@font{#1}% } \def\MT@define@set@key@#1#2{% \define@key{MT@#2@set}{#1}[]{% \global\MT@let@nc{MT@#2list@#1@\MT@curr@set@name}\@empty \MT@map@clist@n{##1}{% \KV@@sp@def\MT@val{####1}% \MT@get@highlevel{#1}% \MT@exp@two@n\g@addto@macro {\csname MT@#2list@#1@\MT@curr@set@name\expandafter\endcsname}% {\MT@val,}% }% \edef\x{% \expandafter\noexpand\expandafter\MT@fix@font@spec \expandafter\noexpand\csname MT@#2list@#1@\MT@curr@set@name\endcsname }% \MT@exp@one@n\MT@addto@setup\x }% } \def\MT@get@highlevel#1{% \expandafter\MT@test@ast\MT@val*\@nil{% \MT@ifempty\@tempa{\def\@tempa{#1}}\relax \edef\MT@val{\expandafter\noexpand\csname \@tempa default\endcsname}% }% } \def\MT@test@ast#1*#2\@nil{% \def\@tempa{#1}% \MT@ifempty{#2}\@gobble\@firstofone } \def\MT@fix@font@spec#1{% \xdef#1{#1}% \global\MT@make@string#1% } \def\MT@define@set@key@size#1{% \define@key{MT@#1@set}{size}[]{% \MT@map@clist@n{##1}{% \KV@@sp@def\MT@val{####1}% \expandafter\MT@get@range\MT@val--\@nil \ifx\MT@val\relax \else \expandafter\MT@xadd \csname MT@#1list@size@\MT@curr@set@name\endcsname {{{\MT@lower}{\MT@upper}\relax}}% \fi }% }% } \def\MT@get@range#1-#2-#3\@nil{% \MT@ifempty{#1}{% \MT@ifempty{#2}{% \let\MT@val\relax }{% \def\MT@lower{0}% \def\MT@val{#2}% \MT@get@size \edef\MT@upper{\MT@val}% }% }{% \def\MT@val{#1}% \MT@get@size \ifx\MT@val\relax \else \edef\MT@lower{\MT@val}% \MT@ifempty{#2}{% \MT@ifempty{#3}% {\def\MT@upper{-1}}% {\def\MT@upper{2048}}% }{% \def\MT@val{#2}% \MT@get@size \ifx\MT@val\relax \else \MT@ifdim\MT@lower>\MT@val{% \MT@warning{% Invalid size range (\MT@lower\space > \MT@val) in font set `\MT@curr@set@name'.\MessageBreak Swapping sizes}% \edef\MT@upper{\MT@lower}% \edef\MT@lower{\MT@val}% }{% \edef\MT@upper{\MT@val}% }% \MT@ifdim\MT@lower=\MT@upper {\def\MT@upper{-1}}% \relax \fi }% \fi }% } \def\MT@get@size{% \if*\MT@val\relax \def\@tempa{\normalsize}% \else \MT@let@cn\@tempa{\MT@val}% \fi \ifx\@tempa\relax \else \begingroup \def\set@fontsize##1##2##3##4\@nil{\gdef\MT@val{##2}}% \@tempa\@nil \endgroup \fi \MT@ifdimen\MT@val{% \@defaultunits\@tempdima\MT@val pt\relax\@nnil \edef\MT@val{\strip@pt\@tempdima}% }{% \MT@warning{Could not parse font size `\MT@val'\MessageBreak in font set `\MT@curr@set@name'}% \let\MT@val\relax }% } \def\MT@define@set@key@font#1{% \define@key{MT@#1@set}{font}[]{% \global\MT@let@nc{MT@#1list@font@\MT@curr@set@name}\@empty \MT@map@clist@n{##1}{% \KV@@sp@def\MT@val{####1}% \expandafter\MT@get@font\MT@val/////\@nil \MT@exp@two@n\g@addto@macro {\csname MT@#1list@font@\MT@curr@set@name\expandafter\endcsname}% {\MT@val,}% }% \edef\x{% \expandafter\noexpand\expandafter\MT@fix@font@spec \expandafter\noexpand\csname MT@#1list@font@\MT@curr@set@name\endcsname }% \MT@exp@one@n\MT@addto@setup\x }% } \def\MT@get@font#1/#2/#3/#4/#5/#6\@nil{% \MT@ifempty{#1#2#3#4#5}\relax{% \let\@tempb\@empty \def\MT@temp{#1/#2/#3/#4/#5}% \MT@get@axis{encoding}{#1}% \MT@get@axis{family}{#2}% \MT@get@axis{series}{#3}% \MT@get@axis{shape}{#4}% \MT@ifempty{#5}{% \MT@warn@axis@empty{size}{\string\normalsize}% \def\MT@val{*}% }{% \def\MT@val{#5}% }% \MT@get@size \ifx\MT@val\relax\def\MT@val{0}\fi \expandafter\g@addto@macro\expandafter\@tempb\expandafter{\MT@val}% \let\MT@val\@tempb }% } \def\MT@get@axis#1#2{% \def\MT@val{#2}% \MT@get@highlevel{#1}% \MT@ifempty\MT@val{% \MT@warn@axis@empty{#1}{\csname #1default\endcsname}% \expandafter\def\expandafter\MT@val\expandafter{\csname #1default\endcsname}% }\relax \expandafter\g@addto@macro\expandafter\@tempb\expandafter{\MT@val/}% } \def\MT@warn@axis@empty#1#2{% \MT@warning{#1 axis is empty in font specification\MessageBreak `\MT@temp'. Using `#2' instead}% } \MT@map@clist@c\MT@features{\MT@define@set@keys{#1}} \MT@define@set@keys{nl} \renewcommand*\UseMicrotypeSet[2][]{% \KV@@sp@def\@tempa{#1}% \MT@ifempty\@tempa{% \MT@map@clist@c\MT@features{{\MT@use@set{##1}{#2}}}% }{% \MT@map@clist@c\@tempa{% \KV@@sp@def\@tempa{##1}% \MT@ifempty\@tempa\relax{% \MT@is@feature{activation of set `#2'}{% \MT@exp@one@n\MT@use@set {\csname MT@rbba@\@tempa\endcsname}{#2}% }% }% }% }% } \def\MT@use@set#1#2{% \KV@@sp@def\@tempa{#2}% \MT@ifdefined@n@TF{MT@#1@set@@\@tempa}{% \MT@xdef@n{MT@#1@setname}{\@tempa}% \MT@info{Using \@nameuse{MT@abbr@#1} set `\@tempa'}% }{% \MT@ifdefined@n@TF{MT@#1@setname}\relax{% \MT@xdef@n{MT@#1@setname}{\@nameuse{MT@default@#1@set}}% }% \MT@warning{% The \@nameuse{MT@abbr@#1} set `\@tempa' is undeclared.\MessageBreak Using set `\@nameuse{MT@#1@setname}' instead}% }% } \MT@requires@pdftex5{ \renewcommand*\DisableLigatures[1]{% \edef\MT@active@features{\MT@active@features,nl}% \MT@noligaturestrue \MT@declare@sets{nl}{no ligatures}{#1}% \gdef\MT@nl@setname{no ligatures}% } }{ \renewcommand*\DisableLigatures[1]{% \MT@warning{Disabling ligatures of a font is only possible\MessageBreak with pdftex version 1.30 or newer.\MessageBreak Ignoring \string\DisableLigatures}% \MT@glet\DisableLigatures\@gobble } } \renewcommand*\DeclareMicrotypeSetDefault[2][]{% \KV@@sp@def\@tempa{#1}% \MT@ifempty\@tempa{% \MT@map@clist@c\MT@features{{\MT@set@default@set{##1}{#2}}}% }{% \MT@map@clist@c\@tempa{{% \KV@@sp@def\@tempa{##1}% \MT@ifempty\@tempa\relax{% \MT@is@feature{declaration of default set `#2'}{% \MT@exp@one@n\MT@set@default@set {\csname MT@rbba@\@tempa\endcsname}{#2}% }% }% }}% }% } \def\MT@set@default@set#1#2{% \KV@@sp@def\@tempa{#2}% \MT@ifdefined@n@TF{MT@#1@set@@\@tempa}{% \MT@xdef@n{MT@default@#1@set}{\@tempa}% }{% \MT@warning{% The \@nameuse{MT@abbr@#1} set `\@tempa' is not declared.\MessageBreak Cannot make it the default set. Using set\MessageBreak `all' instead}% \MT@xdef@n{MT@default@#1@set}{all}% }% } \renewcommand*\DeclareMicrotypeAlias[2]{% \KV@@sp@def\@tempa{#1}% \KV@@sp@def\@tempb{#2}% \MT@make@string\@tempb \MT@ifdefined@n@T{MT@\@tempa @alias}{% \MT@warning{Alias font family `\@tempb' will override alias `\@nameuse{MT@\@tempa @alias}'\MessageBreak for font family `\@tempa'}}% \MT@xdef@n{MT@\@tempa @alias}{\@tempb}% \MT@ifdefined@c@T\MT@family{% \MT@glet\MT@familyalias\@tempb }% } \def\LoadMicrotypeFile#1{% \KV@@sp@def\@tempa{#1}% \MT@make@string\@tempa \MT@exp@one@n\MT@in@clist\@tempa\MT@file@list \ifMT@inlist@ \MT@vinfo{... Configuration file mt-\@tempa.cfg already loaded}% \else \MT@xadd\MT@file@list{\@tempa,}% \MT@begin@catcodes \InputIfFileExists{mt-\@tempa.cfg}{% \edef\MT@curr@file{mt-\@tempa.cfg}% \MT@vinfo{... Loading configuration file \MT@curr@file}% }{% \MT@warning{... Configuration file mt-\@tempa.cfg\MessageBreak does not exist}% }% \MT@end@catcodes \fi } \def\SetProtrusion{% \MT@begin@catcodes \MT@SetProtrusion } \newcommand*\MT@SetProtrusion[3][]{% \let\MT@extra@context\@empty \MT@set@named@keys{MT@pr@c}{#1}% \def\MT@permutelist{pr@c}% \setkeys{MT@cfg}{#2}% \MT@permute \MT@gdef@n{MT@pr@c@\MT@pr@c@name}{#3}% \MT@end@catcodes } \def\SetExpansion{% \MT@begin@catcodes \MT@SetExpansion } \newcommand*\MT@SetExpansion[3][]{% \let\MT@extra@context\@empty \MT@set@named@keys{MT@ex@c}{#1}% \MT@ifdefined@n@T{MT@ex@c@\MT@ex@c@name @factor}{% \ifnum\csname MT@ex@c@\MT@ex@c@name @factor\endcsname>\@m \MT@warning@nl{Expansion factor \number\@nameuse{MT@ex@c@\MT@ex@c@name @factor} too large in list\MessageBreak `\MT@ex@c@name'. Setting it to the maximum of 1000}% \global\MT@let@nc{MT@ex@c@\MT@ex@c@name @factor}\@m \fi }% \def\MT@permutelist{ex@c}% \setkeys{MT@cfg}{#2}% \MT@permute \MT@gdef@n{MT@ex@c@\MT@ex@c@name}{#3}% \MT@end@catcodes } \def\MT@set@named@keys#1#2{% \def\x##1name=##2,##3\@nil{% \setkeys{#1}{name=##2}% \def\MT@options{##1##3}% \MT@rem@from@clist{name=}\MT@options }% \x#2,name=,\@nil \@expandtwoargs\setkeys{#1}\MT@options } \def\MT@define@code@key#1#2{% \define@key{MT@#2}{#1}[]{% \@tempcnta=\@ne \MT@map@clist@n{##1}{% \KV@@sp@def\MT@val{####1}% \MT@get@highlevel{#1}% \MT@edef@n{MT@temp#1\the\@tempcnta}{\MT@val}% \advance\@tempcnta \@ne }% }% } \def\MT@define@code@key@size#1{% \define@key{MT@#1}{size}[]{% \MT@map@clist@n{##1}{% \KV@@sp@def\MT@val{####1}% \expandafter\MT@get@range\MT@val--\@nil \ifx\MT@val\relax \else \expandafter\MT@xadd\csname MT@tempsize\endcsname {{{\MT@lower}{\MT@upper}{\MT@curr@set@name}}}% \fi }% }% } \def\MT@define@code@key@font#1{% \define@key{MT@#1}{font}[]{% \MT@map@clist@n{##1}{% \KV@@sp@def\MT@val{####1}% \expandafter\MT@get@font@and@size\MT@val/////\@nil \MT@xdef@n{MT@\MT@permutelist @\@tempb\MT@extra@context}% {\csname MT@\MT@permutelist @name\endcsname}% \expandafter\MT@xaddb \csname MT@\MT@permutelist @\@tempb\MT@extra@context @sizes\endcsname {{{\MT@val}{\m@ne}{\MT@curr@set@name}}}% }% }% } \def\MT@get@font@and@size#1/#2/#3/#4/#5/#6\@nil{% \MT@ifempty{#1#2#3#4#5}\relax{% \let\@tempb\@empty \def\MT@temp{#1/#2/#3/#4/#5}% \MT@get@axis{encoding}{#1}% \MT@get@axis{family}{#2}% \MT@get@axis{series}{#3}% \MT@get@axis{shape}{#4}% \edef\@tempb{\@tempb*}% \MT@ifempty{#5}{% \MT@warn@axis@empty{size}{\string\normalsize}% \def\MT@val{*}% }{% \def\MT@val{#5}% }% \MT@get@size }% } \MT@define@code@key{encoding}{cfg} \MT@define@code@key{family}{cfg} \MT@define@code@key{series}{cfg} \MT@define@code@key{shape}{cfg} \MT@define@code@key@size{cfg} \MT@define@code@key@font{cfg} \def\MT@define@opt@keys#1{% \define@key{MT@#1@c}{name}[]{% \MT@ifempty{##1}{% \MT@edef@n{MT@#1@c@name}{\MT@curr@file/\the\inputlineno}% }{% \MT@edef@n{MT@#1@c@name}{##1}% \MT@ifdefined@n@T{MT@#1@c@\csname MT@#1@c@name\endcsname}{% \MT@warning{Redefining list `\@nameuse{MT@#1@c@name}'}% }% }% \MT@let@cn\MT@curr@set@name{MT@#1@c@name}% }% \MT@define@opt@key{#1}{load}% \MT@define@opt@key{#1}{factor}% \MT@define@opt@key{#1}{preset}% \MT@define@opt@key{#1}{inputenc}% \define@key{MT@#1@c}{context}[]{\MT@ifempty{##1}\relax{\def\MT@extra@context{##1}}}% } \def\MT@define@opt@key#1#2{% \define@key{MT@#1@c}{#2}[]{\MT@ifempty{##1}\relax{% \MT@xdef@n{MT@#1@c@\MT@curr@set@name @#2}{##1}}}% } \MT@map@clist@c\MT@features{\MT@define@opt@keys{#1}} \define@key{MT@pr@c}{unit}[character]{% \global\MT@let@nc{MT@pr@c@\MT@curr@set@name @unit}\@empty \def\@tempa{#1}% \MT@ifstreq\@tempa{relative}{% \MT@warning{Value `relative' for key `unit' is deprecated.\MessageBreak Use `unit=character' instead. For now, I'll do it\MessageBreak for you}% \def\@tempa{character}% }\relax \MT@ifstreq\@tempa{character}\relax{% \MT@ifdimen\@tempa{% \global\MT@let@nc{MT@pr@c@\MT@curr@set@name @unit}\@tempa }{% \MT@warning{`\@tempa' is not a dimension.\MessageBreak Ignoring it and setting values relative to\MessageBreak character widths}% }% }% } \def\MT@define@ex@opt@key#1{% \define@key{MT@ex@c}{#1}[]{% \MT@ifempty{##1}\relax{% \MT@ifint{##1}{% \MT@gdef@n{MT@ex@c@\MT@curr@set@name @#1}{##1 }% }{% \MT@warning{% Value `##1' for option `#1' is not a number.\MessageBreak Ignoring it}% }% }% }% } \MT@define@ex@opt@key{stretch} \MT@define@ex@opt@key{shrink} \MT@define@ex@opt@key{step} \define@key{MT@ex@c}{auto}[true]{% \def\@tempa{#1}% \csname if\@tempa\endcsname \MT@requires@pdftex4{% \MT@gdef@n{MT@ex@c@\MT@curr@set@name @auto}{autoexpand}% }{% \MT@warning{pdftex too old for automatic font expansion}% } \else \MT@requires@pdftex4{% \global\MT@let@nc{MT@ex@c@\MT@curr@set@name @auto}\@empty }\relax \fi } \renewcommand*\DeclareCharacterInheritance[1][]{% \let\MT@extra@context\@empty \let\MT@extra@inputenc\@undefined \let\MT@inh@feat\@empty \setkeys{MT@inh@}{#1}% \MT@begin@catcodes \MT@set@inh@list } \def\MT@set@inh@list#1#2{% \MT@ifempty\MT@inh@feat{% \MT@map@clist@c\MT@features{{\MT@declare@char@inh{##1}{#1}{#2}}}% }{% \MT@map@clist@c\MT@inh@feat{{% \KV@@sp@def\@tempa{##1}% \MT@ifempty\@tempa\relax{% \MT@exp@one@n\MT@declare@char@inh {\csname MT@rbba@\@tempa\endcsname}{#1}{#2}% }% }}% }% \MT@end@catcodes } \MT@map@clist@c\MT@features@long{% \define@key{MT@inh@}{#1}[]{\edef\MT@inh@feat{\MT@inh@feat#1,}}} \define@key{MT@inh@}{inputenc}{\def\MT@extra@inputenc{#1}} \def\MT@declare@char@inh#1#2#3{% \MT@edef@n{MT@#1@inh@name}% {\MT@curr@file/\the\inputlineno (\@nameuse{MT@abbr@#1})}% \MT@let@cn\MT@curr@set@name{MT@#1@inh@name}% \MT@ifdefined@c@T\MT@extra@inputenc{% \MT@xdef@n{MT@#1@inh@\MT@curr@set@name @inputenc}{\MT@extra@inputenc}}% \MT@gdef@n{MT@#1@inh@\csname MT@#1@inh@name\endcsname}{#3}% \def\MT@permutelist{#1@inh}% \setkeys{MT@inh}{#2}% \MT@permute } \define@key{MT@inh}{encoding}[]{% \def\MT@val{#1}% \expandafter\MT@encoding@check\MT@val,\@nil \MT@get@highlevel{encoding}% \MT@edef@n{MT@tempencoding1}{\MT@val}% } \def\MT@encoding@check#1,#2\@nil{% \MT@ifempty{#2}\relax{% \edef\MT@val{#1}% \MT@warning{You may only specify one encoding for character\MessageBreak inheritance lists. Ignoring encoding(s) #2}% }% } \MT@define@code@key{family}{inh} \MT@define@code@key{series}{inh} \MT@define@code@key{shape}{inh} \MT@define@code@key@size{inh} \MT@define@code@key@font{inh} \def\MT@inh@do#1,{% \ifx\relax#1\@empty \else \MT@inh@split #1==\relax \expandafter\MT@inh@do \fi } \def\MT@inh@split#1=#2=#3\relax{% \def\@tempa{#1}% \ifx\@tempa\@empty \else \MT@get@slot \ifnum\MT@char > \m@ne \let\MT@val\MT@char \MT@map@clist@n{#2}{% \def\@tempa{##1}% \ifx\@tempa\@empty \else \MT@get@slot \ifnum\MT@char > \m@ne \expandafter\MT@xadd \csname MT@inh@\MT@listname @\MT@val @\endcsname {{\MT@char}}% \fi \fi }% \fi \fi } \def\MT@permute{% \let\MT@cnt@encoding\@ne \MT@permute@ \MT@permute@reset } \def\MT@permute@{% \let\MT@cnt@family\@ne \MT@permute@@ \MT@increment\MT@cnt@encoding \MT@ifdefined@n@T{MT@tempencoding\MT@cnt@encoding}% \MT@permute@ } \def\MT@permute@@{% \let\MT@cnt@series\@ne \MT@permute@@@ \MT@increment\MT@cnt@family \MT@ifdefined@n@T{MT@tempfamily\MT@cnt@family}% \MT@permute@@ } \def\MT@permute@@@{% \let\MT@cnt@shape\@ne \MT@permute@@@@ \MT@increment\MT@cnt@series \MT@ifdefined@n@T{MT@tempseries\MT@cnt@series}% \MT@permute@@@ } \def\MT@permute@@@@{% \MT@permute@@@@@ \MT@increment\MT@cnt@shape \MT@ifdefined@n@T{MT@tempshape\MT@cnt@shape}% \MT@permute@@@@ } \def\MT@permute@@@@@{% \MT@permute@define{encoding}% \ifMT@document \ifx\MT@tempencoding\@empty \else \MT@ifdefined@n@TF{T@\MT@tempencoding}\relax {\expandafter\expandafter\expandafter\@gobble}% \fi \fi \MT@permute@@@@@@ } \def\MT@permute@@@@@@{% \MT@permute@define{family}% \MT@permute@define{series}% \MT@permute@define{shape}% \edef\@tempa{\MT@tempencoding /\MT@tempfamily /\MT@tempseries /\MT@tempshape /\MT@ifdefined@c@T\MT@tempsize *}% \def\@tempb{////}% \ifx\@tempa\@tempb \else \ifx\MT@tempencoding\@empty \MT@warning{% You have to specify an encoding for\MessageBreak \@nameuse{MT@abbr@\MT@permutelist} list `\@nameuse{MT@\MT@permutelist @name}'.\MessageBreak Ignoring it}% \else \MT@ifdefined@c@TF\MT@tempsize{% \MT@ifdefined@n@T{MT@\MT@permutelist @\@tempa\MT@extra@context @sizes}{% \MT@map@tlist@c \MT@tempsize \MT@check@rlist }% \expandafter\MT@xaddb \csname MT@\MT@permutelist @\@tempa\MT@extra@context @sizes\endcsname \MT@tempsize }{% \MT@ifdefined@n@T{MT@\MT@permutelist @\@tempa\MT@extra@context}{% \MT@warning{\@nameuse{MT@abbr@\MT@permutelist} list `\@nameuse{MT@\MT@permutelist @name}' will override list\MessageBreak `\@nameuse{MT@\MT@permutelist @\@tempa\MT@extra@context}' for font `\@tempa'}% }% }% \MT@xdef@n{MT@\MT@permutelist @\@tempa\MT@extra@context}% {\csname MT@\MT@permutelist @name\endcsname}% \fi \fi } \def\MT@permute@define#1{% \expandafter\@tempcnta=\csname MT@cnt@#1\endcsname\relax \MT@ifdefined@n@TF{MT@temp#1\the\@tempcnta}% {\MT@edef@n{MT@temp#1}{\csname MT@temp#1\the\@tempcnta\endcsname}}% {\MT@let@nc{MT@temp#1}\@empty}% } \def\MT@permute@reset{% \MT@permute@reset@{encoding}% \MT@permute@reset@{family}% \MT@permute@reset@{series}% \MT@permute@reset@{shape}% \MT@glet\MT@tempsize\@undefined } \def\MT@permute@reset@#1{% \@tempcnta=\@ne \MT@loop \MT@let@nc{MT@temp#1\the\@tempcnta}\@undefined \advance\@tempcnta\@ne \MT@ifdefined@n@TF{MT@temp#1\the\@tempcnta}% \iftrue \iffalse \MT@repeat } \def\MT@check@rlist#1{\expandafter\MT@check@rlist@ #1} \def\MT@check@rlist@#1#2#3{% \def\@tempb{#1}% \def\@tempc{#2}% \MT@if@false \expandafter\MT@map@tlist@c \csname MT@\MT@permutelist @\@tempa\MT@extra@context @sizes\endcsname \MT@check@range } \def\MT@check@range#1{\expandafter\MT@check@range@ #1} \def\MT@check@range@#1#2#3{% \MT@ifdim{#2}=\m@ne{% \MT@ifdim\@tempc=\m@ne{% \MT@ifdim\@tempb={#1}\MT@if@true\relax }{% \MT@ifdim\@tempb>{#1}\relax{% \MT@ifdim\@tempc>{#1}{% \MT@if@true \edef\@tempb{#1 (with range: \@tempb\space to \@tempc)}% }\relax }% }% }{% \MT@ifdim\@tempc=\m@ne{% \MT@ifdim\@tempb<{#2}{% \MT@ifdim\@tempb<{#1}\relax\MT@if@true }\relax }{% \MT@ifdim\@tempb<{#2}{% \MT@ifdim\@tempc>{#1}{% \MT@if@true \edef\@tempb{#1 to #2 (with range: \@tempb\space to \@tempc)}% }\relax }\relax }% }% \ifMT@if@ \MT@warning{\@nameuse{MT@abbr@\MT@permutelist} list `\@nameuse{MT@\MT@permutelist @name}' will override\MessageBreak list `#3' for font \@tempa,\MessageBreak size \@tempb}% \expandafter\MT@tlist@break \fi } \newif\ifMT@opt@expansion \newif\ifMT@opt@auto \newif\ifMT@opt@DVI \def\MT@define@option#1{% \define@key{MT}{#1}[true]{% \csname MT@opt@#1true\endcsname \MT@map@clist@n{##1}{% \KV@@sp@def\MT@val{####1}% \MT@ifempty\MT@val\relax{% \csname MT@#1true\endcsname \edef\@tempb{\csname MT@rbba@#1\endcsname}% \MT@ifstreq\MT@val{true}\relax {% \MT@ifstreq\MT@val{false}{% \csname MT@#1false\endcsname }{% \MT@ifstreq\MT@val{compatibility}{% \MT@let@nc{MT@\@tempb @level}\@ne }{% \MT@ifstreq\MT@val{nocompatibility}{% \MT@let@nc{MT@\@tempb @level}\tw@ }{% \MT@ifdefined@n@TF{MT@\@tempb @set@@\MT@val}{% \MT@xdef@n{MT@\@tempb @setname}{\MT@val}% }{% \MT@xdef@n{MT@\@tempb @setname}% {\@nameuse{MT@default@\@tempb @set}}% \MT@warning@nl{% The #1 set `\MT@val' is undeclared.\MessageBreak Using set `\@nameuse{MT@\@tempb @setname}' instead}% }% }% }% }% }% }% }% }% } \MT@define@option{protrusion} \MT@define@option{expansion} \define@key{MT}{activate}[true]{% \setkeys{MT}{protrusion={#1}}% \setkeys{MT}{expansion={#1}}% } \def\MT@def@bool@opt#1#2{% \define@key{MT}{#1}[]{% \MT@ifempty{##1}% {\def\@tempa{true}}% {\def\@tempa{##1}}% \MT@ifstreq\@tempa{true}\relax{% \MT@ifstreq\@tempa{false}\relax{% \MT@warning@nl{% `##1' is not an admissible value for option\MessageBreak `#1'. Assuming `false'}% \def\@tempa{false}% }% }% #2% }% } \def\MT@def@simple@bool@opt#1{\MT@def@bool@opt{#1}{\csname MT@#1\@tempa\endcsname}} \MT@map@tlist@n{{draft}{auto}{selected}% }\MT@def@simple@bool@opt \MT@def@bool@opt{DVIoutput}{% \csname if\@tempa\endcsname \ifnum\pdfoutput>\z@ \MT@opt@DVItrue \fi \pdfoutput\z@ \else \ifnum\pdfoutput<\@ne \MT@opt@DVItrue \fi \pdfoutput\@ne \fi } \MT@def@bool@opt{defersetup}{% \csname if\@tempa\endcsname \else \AtEndOfPackage{% \MT@setup@ \let\MT@setup@\@empty \let\MT@addto@setup\@firstofone }% \fi } \MT@def@bool@opt{final}{% \csname if\@tempa\endcsname \MT@draftfalse \else \MT@drafttrue \fi } \define@key{MT}{verbose}[]{% \let\MT@vinfo\MT@info@nl \MT@ifempty{#1}% {\def\@tempa{true}}% {\def\@tempa{#1}}% \MT@ifstreq\@tempa{true}\relax{% \MT@ifstreq\@tempa{errors}{% \let\MT@warning\MT@warn@err \let\MT@warning@nl\MT@warn@err }{% \let\MT@vinfo\@gobble \MT@ifstreq\@tempa{false}\relax{% \MT@warning@nl{% `#1' is not an admissible value for option\MessageBreak `verbose'. Assuming `false'}% }% }% }% } \def\MT@def@num@opt#1{% \define@key{MT}{#1}[]{% \MT@ifempty{##1}% {\MT@let@cn\@tempa{MT@#1@default}}% {\def\@tempa{##1 }}% \MT@ifint\@tempa{% \MT@edef@n{MT@#1}{\@tempa}% }{\MT@warning@nl{% Value `##1' for option `#1' is not a number.\MessageBreak Using default value of \number\@nameuse{MT@#1@default}}% }% }% } \MT@map@tlist@n{{stretch}{shrink}{step}% }\MT@def@num@opt \define@key{MT}{factor}[]{% \MT@ifempty{#1}% {\let\@tempa\MT@factor@default}% {\def\@tempa{#1 }}% \MT@ifint\@tempa{% \edef\MT@pr@factor{\@tempa}% }{\MT@warning@nl{% Value `#1' for option `factor' is not a number.\MessageBreak Using default value of \number\MT@factor@default}% }% } \define@key{MT}{unit}[]{% \MT@ifempty{#1}% {\def\@tempa{character}}% {\KV@@sp@def\@tempa{#1}}% \MT@ifstreq\@tempa{relative}{% \MT@warning{Value `relative' for option `unit' is deprecated.\MessageBreak Use `unit=character' instead. For now, I'll do it\MessageBreak for you}% \def\@tempa{character}% }\relax \MT@ifstreq\@tempa{character}\relax{% \MT@ifdimen\@tempa{% \let\MT@pr@unit\@tempa }{% \MT@warning@nl{`\@tempa' is not a dimension. Ignoring it and\MessageBreak setting values relative to character widths}% }% }% } \MT@protrusiontrue \ifnum\pdfoutput<\@ne \else \MT@requires@pdftex4{ \MT@expansiontrue \MT@autotrue }\relax \fi \define@key{MT}{config}[]{\relax} \def\MT@get@config#1config=#2,#3\@nil{% \MT@ifempty{#2}% {\def\MT@config@file{\MT@MT.cfg}}% {\KV@@sp@def\MT@config@file{#2.cfg}}% } \expandafter\expandafter\expandafter\MT@get@config \csname opt@\@currname.\@currext\endcsname,config=,\@nil \IfFileExists{\MT@config@file}{% \MT@info@nl{Loading configuration file \MT@config@file}% \MT@begin@catcodes \let\MT@begin@catcodes\relax \let\MT@end@catcodes\relax \let\MT@curr@file\MT@config@file \input{\MT@config@file}% \endgroup }{\MT@warning@nl{% Could not find configuration file `\MT@config@file'!\MessageBreak This will almost certainly cause undesired results.\MessageBreak Please fix your installation}% } \MT@map@clist@c\MT@features{% \MT@ifdefined@n@TF{MT@default@#1@set}\relax {\MT@gdef@n{MT@default@#1@set}{all}}% } \MT@ifdefined@c@T\MicroType@Hook{\MT@warning{% Command \string\MicroType@Hook\space is deprecated.\MessageBreak Use \string\Microtype@Hook\space instead}\MicroType@Hook} \MT@ifdefined@c@T\Microtype@Hook\Microtype@Hook \def\microtypesetup{\setkeys{MT}} \MT@addto@setup{\def\microtypesetup{\setkeys{MTX}}} \def\MT@define@optionX#1#2{% \define@key{MTX}{#1}[true]{% \KV@@sp@def\@tempb{#1}% \MT@map@clist@n{##1}{% \KV@@sp@def\MT@val{####1}% \edef\@tempb{\csname MT@rbba@\@tempb\endcsname}% \MT@ifempty\MT@val\relax{% \@tempcnta=\m@ne \MT@ifstreq\MT@val{true}{% \MT@checksetup\@tempb{% \expandafter\@tempcnta=\csname MT@\@tempb @level\endcsname \MT@info{Enabling #1 (level \number\csname MT@\@tempb @level\endcsname)}% }% }{% \MT@ifstreq\MT@val{false}{% \@tempcnta=\z@ \MT@info{Disabling #1}% }{% \MT@ifstreq\MT@val{compatibility}{% \MT@checksetup\@tempb{% \@tempcnta=\@ne \MT@let@nc{MT@\@tempb @level}\@ne \MT@info{Setting #1 to level 1}% }% }{% \MT@ifstreq\MT@val{nocompatibility}{% \MT@checksetup\@tempb{% \@tempcnta=\tw@ \MT@let@nc{MT@\@tempb @level}\tw@ \MT@info{Setting #1 to level 2}% }% }{% \MT@warning{% Value `\MT@val' for key `#1' not recognized.\MessageBreak Use any of `true', `false', `compatibility' or\MessageBreak `nocompatibility'}% }% }% }% }% \ifnum\@tempcnta>\m@ne #2\@tempcnta\relax \fi }% }% }% } \def\MT@checksetup#1{% \expandafter\csname ifMT@\csname MT@abbr@#1\endcsname\endcsname \expandafter\@firstofone \else \MT@warning{% You cannot enable \@nameuse{MT@abbr@#1} if it was disabled\MessageBreak in the package options,}% \expandafter\@gobble \fi } \MT@define@optionX{protrusion}\pdfprotrudechars \MT@define@optionX{expansion}\pdfadjustspacing \define@key{MTX}{activate}[true]{% \setkeys{MTX}{protrusion={#1}}% \setkeys{MTX}{expansion={#1}}% } \let\MT@saved@setupfont\MT@setupfont \define@key{MTX}{disable}[]{% \MT@info{Inactivate `\MT@MT' package}% \let\MT@setupfont\@gobble } \define@key{MTX}{enable}[]{% \MT@info{Reactivate `\MT@MT' package}% \let\MT@setupfont\MT@saved@setupfont } \def\MT@ProcessOptionsWithKV#1{% \let\@tempc\relax \let\KVo@tempa\@empty \MT@map@clist@c\@classoptionslist{% \def\CurrentOption{##1}% \MT@ifdefined@n@T{KV@#1@\CurrentOption}{% \edef\KVo@tempa{\KVo@tempa,\CurrentOption,}% \@expandtwoargs\@removeelement\CurrentOption \@unusedoptionlist\@unusedoptionlist }% }% \edef\KVo@tempa{% \noexpand\setkeys{#1}{% \KVo@tempa\@ptionlist{\@currname.\@currext}% }% }% \KVo@tempa \AtEndOfPackage{\let\@unprocessedoptions\relax}% \let\CurrentOption\@empty } \MT@ProcessOptionsWithKV{MT} \MT@addto@setup{% \ifMT@draft \MT@warning@nl{`draft' option active.\MessageBreak Disabling all micro-typographic extensions.\MessageBreak This might lead to different line and page breaks} \MT@protrusionfalse \MT@expansionfalse \let\MT@setupfont\relax \def\DeclareMicrotypeSet#1#{\@gobbletwo} \renewcommand*\UseMicrotypeSet[2][]{} \renewcommand*\SetProtrusion[3][]{} \renewcommand*\SetExpansion[3][]{} \renewcommand*\DeclareCharacterInheritance[3][]{} \renewcommand*\DeclareMicrotypeAlias[2]{} \renewcommand*\LoadMicrotypeFile[1]{} \renewcommand*\microtypesetup[1]{} \renewcommand*\microtypecontext[1]{} \else \ifnum\pdfoutput<\@ne \ifMT@opt@expansion \else \MT@expansionfalse \fi \fi \MT@info@nl{Generating \ifnum\pdfoutput<\@ne DVI \else PDF \fi output% \ifMT@opt@DVI\space (changed by \MT@MT)\fi}% \ifMT@protrusion \edef\MT@active@features{\MT@active@features,pr} \pdfprotrudechars\MT@pr@level \MT@info@nl{Character protrusion enabled (level \number\MT@pr@level)% \ifnum\MT@pr@factor=\MT@factor@default \else,\MessageBreak factor: \number\MT@pr@factor\fi \ifx\MT@pr@unit\@empty \else,\MessageBreak unit: \MT@pr@unit\fi} \MT@ifdefined@c@TF\MT@pr@setname{% \MT@info@nl{Using protrusion set `\MT@pr@setname'}% }{% \MT@glet\MT@pr@setname\MT@default@pr@set \MT@info@nl{Using default protrusion set `\MT@pr@setname'}% } \else \let\MT@protrusion\relax \MT@info@nl{No character protrusion} \fi \ifMT@expansion \ifnum\MT@stretch=\m@ne \let\MT@stretch\MT@stretch@default \fi \ifnum\MT@shrink=\m@ne \ifnum\MT@stretch>\z@ \let\MT@shrink\MT@stretch \else \let\MT@shrink\MT@shrink@default \fi \fi \ifnum\MT@step=\m@ne \ifnum\MT@stretch>\MT@shrink \ifnum\MT@shrink=\z@ \@tempcnta=\MT@stretch \else \@tempcnta=\MT@shrink \fi \else \ifnum\MT@stretch=\z@ \@tempcnta=\MT@shrink \else \@tempcnta=\MT@stretch \fi \fi \divide\@tempcnta 5\relax \else \@tempcnta=\MT@step \ifnum\@tempcnta=\z@ \MT@warning@nl{The expansion step cannot be set to zero.\MessageBreak Setting it to one} \fi \fi \ifnum\@tempcnta=\z@ \@tempcnta=\@ne \fi \edef\MT@step{\number\@tempcnta\space} \let\MT@auto\@empty \ifMT@auto \MT@requires@pdftex4{% \ifnum\pdfoutput<\@ne \ifMT@opt@auto \MT@warning@nl{% Automatic font expansion only works for PDF output.\MessageBreak However, you are creating a DVI file. I will switch\MessageBreak automatic font expansion off and hope that expanded\MessageBreak fonts are available} \fi \MT@autofalse \else \def\MT@auto{autoexpand} \fi }{% \MT@warning@nl{% The pdftex version you are using is too old for\MessageBreak automatic font expansion. I will switch it off and\MessageBreak hope that expanded fonts are available.\MessageBreak Otherwise, install pdftex version 1.20 or newer} \MT@autofalse \def\MT@auto{1000 } } \else \ifnum\MT@pdftex@no < 4 \def\MT@auto{1000 } \fi \fi \ifMT@selected \let\MT@set@ex@codes\MT@set@ex@codes@s \else \let\MT@set@ex@codes\MT@set@ex@codes@n \fi \ifnum\MT@stretch=\z@ \ifnum\MT@shrink=\z@ \MT@warning@nl{% Both the stretch and shrink limit are set to zero.\MessageBreak Disabling font expansion} \MT@expansionfalse \fi \fi \fi \ifMT@expansion \edef\MT@active@features{\MT@active@features,ex}% \pdfadjustspacing\MT@ex@level \MT@info@nl{\ifMT@auto\else Non-\fi Automatic font expansion enabled (level \number\MT@ex@level),\MessageBreak stretch: \number\MT@stretch, shrink: \number\MT@shrink, step: \number\MT@step, \ifMT@selected\else non-\fi selected} \MT@ifdefined@c@TF\MT@ex@setname{% \MT@info@nl{Using expansion set `\MT@ex@setname'}% }{% \MT@glet\MT@ex@setname\MT@default@ex@set \MT@info@nl{Using default expansion set `\MT@ex@setname'}% } \CheckCommand*\showhyphens[1]{\setbox0\vbox{% \color@begingroup\everypar{}\parfillskip\z@skip \hsize\maxdimen\normalfont\pretolerance\m@ne\tolerance\m@ne \hbadness\z@\showboxdepth\z@\ #1\color@endgroup}} \gdef\showhyphens#1{\setbox0\vbox{% \color@begingroup\pdfadjustspacing\z@\everypar{}\parfillskip\z@skip \hsize\maxdimen\normalfont\pretolerance\m@ne\tolerance\m@ne \hbadness\z@\showboxdepth\z@\ #1\color@endgroup}} \else \let\MT@expansion\relax \MT@info@nl{No font expansion} \fi \fi } \MT@addto@setup{% \ifx\MT@active@features\@empty \else \edef\MT@active@features{\expandafter\@gobble\MT@active@features} \fi \MT@documenttrue } \AtBeginDocument\selectfont \edef\MT@curr@file{\jobname.tex} \endinput %% %% End of file `microtype.sty'.