%%
%% 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 <w.m.l@gmx.net>
%% 
%% 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'.
