%% %% 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, 2005 R Schlicht %% %% This work may be distributed and/or modified under the conditions of %% the LaTeX Project Public License, either version 1.3 of this license or %% (at your option) any later version. The latest version of this license %% is in: http://www.latex-project.org/lppl.txt, and version 1.3 or later %% is part of all distributions of LaTeX version 2003/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} [2005/10/28 v1.9 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{% \@ifstar {\@ifnextchar[\MT@DeclareSet{\MT@DeclareSet[]}}% {\@ifnextchar[\MT@DeclareSet{\MT@DeclareSet[]}}% } \def\MT@DeclareSet[#1]#2#3{} \@onlypreamble{\DeclareMicrotypeSet} \@onlypreamble{\UseMicrotypeSet} \@onlypreamble{\DisableLigatures} \def\MT@old@cmd#1#2{% \MT@warning{\string#1 is deprecated. Please use\MessageBreak \string#2 instead}% \let#1#2#2} \newcommand*\DeclareMicroTypeSet{% \MT@old@cmd\DeclareMicroTypeSet \DeclareMicrotypeSet} \newcommand*\UseMicroTypeSet{% \MT@old@cmd\UseMicroTypeSet \UseMicrotypeSet} \newcommand*\DeclareMicroTypeAlias{% \MT@old@cmd\DeclareMicroTypeAlias \DeclareMicrotypeAlias} \newcommand*\LoadMicroTypeFile{% \MT@old@cmd\LoadMicroTypeFile \LoadMicrotypeFile} \def\MT@error{\PackageError{microtype}} \def\MT@warning{\PackageWarning{microtype}} \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 `microtype'\MessageBreak package with the option `verbose=errors'. Consult the documentation\MessageBreak in microtype.(pdf,dvi) to find out what went wrong.}} \def\MT@info{\PackageInfo{microtype}} \def\MT@info@nl#1{\MT@info{#1\@gobble}} \let\MT@vinfo\@gobble \let\MT@pdftex@no\z@ \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 \let\MT@pdftex@no\thr@@ \ifnum\pdftexversion = 14 \ifnum \expandafter`\pdftexrevision < `h \let\MT@pdftex@no\tw@ \ifnum \expandafter`\pdftexrevision < `f \let\MT@pdftex@no\@ne \fi \fi \else \ifnum\pdftexversion < 14 \let\MT@pdftex@no\@ne \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 microtype won't work with such antiquated versions.\MessageBreak Please install a newer version of pdftex.\MessageBreak \fi All micro-typographic features will be disabled} \expandafter \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@protrusion \newif\ifMT@expansion \newif\ifMT@auto \newif\ifMT@selected \newif\ifMT@noligatures \newif\ifMT@DVIoutput \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 } \def\MT@pdfcprot@error{% \MT@error{Detected the `pdfcprot' package!\MessageBreak `microtype' and `pdfcprot' may not be used together}{% The `pdfcprot' package provides an interface to character protrusion.\MessageBreak So does the `microtype' package. Using both packages at the same\MessageBreak time will almost certainly lead to undesired results. Have your choice!}% \let\MT@pdfcprot@error\relax } \@ifpackageloaded{pdfcprot}\MT@pdfcprot@error\relax \def\MT@ledmac@setup{% \ifMT@protrusion \ifnum\MT@pdftex@no > 4 \MT@ifdefined@c\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}% }% \else \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 \fi } \def\MT@setupfont@hook{% \@ifpackagewith{babel}{spanish}{% \MT@ifdefined@c\percentsign {\let\%\percentsign}\relax }\relax \@ifpackageloaded{csquotes}{% \@ifpackagelater{csquotes}{2005/05/11}\@disablequotes\relax }\relax \@ifpackageloaded{hyperref}{% \chardef\%`\% \chardef\#`\# }\relax } \AtBeginDocument{% \@ifpackageloaded{pdfcprot}\MT@pdfcprot@error\relax \@ifpackageloaded{ledmac}\MT@ledmac@setup\relax \let\MT@setupfont@hook\@empty \@ifpackagewith{babel}{spanish}{% \g@addto@macro\MT@setupfont@hook{% \MT@ifdefined@c\percentsign {\let\%\percentsign}\relax}% }\relax \@ifpackageloaded{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}% }% }\relax \@ifpackageloaded{hyperref}{% \g@addto@macro\MT@setupfont@hook{% \chardef\%`\% \chardef\#`\# }% \pdfstringdefDisableCommands{% \let\pickup@font\MT@orig@pickupfont }% }\relax } \expandafter\ifx\the\font\nullfont\normalfont\fi \let\MT@etex@no\z@ \ifx\eTeXversion\@undefined \else \ifx\eTeXversion\relax \else \ifnum\eTeXversion>\z@ \let\MT@etex@no\@ne \fi \fi \fi \def\MT@def@n#1{\expandafter\def\csname #1\endcsname} \def\MT@edef@n#1{\expandafter\edef\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@exp@string{\expandafter\string} \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}} \def\MT@hop@fi#1\fi{\fi#1} \def\MT@hop@else@fi#1\else#2\fi{\fi#1} \ifcase\MT@etex@no \MT@hop@else@fi{% \def\MT@ifdefined@c#1{% \ifx#1\@undefined \expandafter\@secondoftwo \else \expandafter\@firstoftwo \fi } \def\MT@ifdefined@n#1{% \begingroup\MT@exp@two@c\endgroup \ifx\csname #1\endcsname\relax \expandafter\@secondoftwo \else \expandafter\@firstoftwo \fi } }\else\MT@hop@fi{% \def\MT@ifdefined@c#1{% \ifdefined#1% \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi } \def\MT@ifdefined@n#1{% \ifcsname#1\endcsname \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi } }\fi \begingroup \catcode`\%=12 \catcode`\&=14 \gdef\MT@ifempty#1{& \if %#1%& \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi } \endgroup \def\MT@ifnumber#1{% \if!\ifnum9<1#1!\else?\fi \expandafter\@firstoftwo \else \expandafter\@secondoftwo \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@ifgt#1#2{% \ifdim #1\p@ > #2\p@ \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi } \def\MT@iflt#1#2{% \ifdim #1\p@ < #2\p@ \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi } \def\MT@ifeq#1#2{% \ifdim #1\p@ = #2\p@ \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}% \expandafter\MT@map@clist@ \expandafter#1,\@nil,\@nnil,% \fi } \def\MT@map@clist@c#1{\expandafter\MT@map@clist@n\expandafter{#1}} \def\MT@map@clist@#1,{% \ifx\@nil#1% \MT@clist@break \else \MT@clist@function{#1}% \expandafter\MT@map@clist@ \fi } \def\MT@clist@break#1\@nnil,{\fi} \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{% \MT@inlist@false \def\x##1#1,##2\@nnil{% \ifx\\##2\\\else \MT@inlist@true \fi }% \expandafter\x#2,#1,\@nnil } \def\MT@rem@from@list#1#2{% \def\x##1#1,##2\@nnil{% \ifx\\##2\\\else \def\x####1,#1,####2\@nnil{% \gdef#2{##1####1}% }% \x##2,#1,\@nnil \fi }% \expandafter\x#2,#1,\@nnil } \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@ifeq{#2}\m@ne{% \MT@ifeq{#1}\MT@size \MT@inlist@true \relax }{% \MT@iflt\MT@size{#1}\relax{% \MT@iflt\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{\MT@loop #2\ifnum#1\MT@repeat} \newcount\MT@count \ifcase\MT@etex@no \def\MT@increment#1{% \MT@count=#1\relax \advance\MT@count \@ne \edef#1{\number\MT@count}% } \else \def\MT@increment#1{% \edef#1{\number\numexpr #1 + 1\relax}% } \fi \ifcase\MT@etex@no \def\MT@scale#1#2#3{% \multiply #1 #2\relax \ifnum #3 = \z@ \else \divide #1 #3\relax \fi } \else \def\MT@scale#1#2#3{% \ifnum #3 = \z@ #1=\numexpr #1 * #2\relax \else #1=\numexpr #1 * #2 / #3\relax \fi } \fi \def\MT@remove@spaces#1{\expandafter\KV@@sp@def\expandafter#1\expandafter{#1}} \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@setupfont{% \ifx\MT@vinfo\MT@info@nl \MT@info{Setting up font `\MT@exp@string\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{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{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{MT@#2list@#1@\@tempa}{% \expandafter\expandafter\expandafter \MT@in@clist\expandafter\expandafter\expandafter {\csname MT@#1\expandafter\endcsname\expandafter}% \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{MT@#1list@font@\@tempa}{% \MT@exp@two@n\MT@in@clist \MT@font{\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{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{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@reset@pr@codes \MT@if@list@exists{% \MT@get@dimen@six \MT@get@opt \MT@get@inh@list \MT@load@list{\MT@pr@c@name}% \edef\MT@curr@list@name{protrusion list `\MT@pr@c@name'}% \MT@let@cn\@tempc{MT@pr@c@\MT@pr@c@name}% \expandafter\MT@pr@do\@tempc,\relax,% }\relax } \def\MT@set@all@pr#1#2{% \@tempcnta=\z@ \MT@while@num{\@tempcnta < \@cclvi}{% \lpcode\MT@font\@tempcnta=#1\relax \rpcode\MT@font\@tempcnta=#2\relax \advance\@tempcnta \@ne }% } \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@exp@string\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\MT@pr@inh@name{% \MT@ifdefined@n{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 }\relax }\relax } \ifnum\MT@pdftex@no > \tw@ \def\MT@scale@to@em{% \@tempcntb=\MT@count\relax \MT@scale\@tempcntb \@tempb \MT@dimen@six \ifnum\@tempcntb=\z@ \else \MT@scale@factor \fi } \ifcase\MT@etex@no \def\MT@get@charwd{% \setbox\z@=\hbox{\MT@font \char\MT@char}% \MT@count=\wd\z@\relax \ifnum\MT@count=\z@ \MT@warn@missing@char \fi } \else \def\MT@get@charwd{% \MT@count=\number\fontcharwd\MT@font\MT@char\relax \ifnum\MT@count=\z@ \MT@warn@missing@char \fi } \fi \else \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} \fi \def\MT@get@font@dimen#1{% \MT@count=\number\fontdimen#1\MT@font } \ifcase\MT@etex@no \MT@hop@else@fi{% \def\MT@warn@missing@char{% \MT@warning@nl{% Character `\the\mt@toks' has a width of 0pt\MessageBreak (it's probably missing) in font `\MT@exp@string\MT@font'.\MessageBreak It cannot be protruded}% } }\else\MT@hop@fi{% \def\MT@warn@missing@char{% \MT@warning@nl{Character `\the\mt@toks' \iffontchar\MT@font\MT@char has a width of 0pt \else is missing \fi in font\MessageBreak `\MT@exp@string\MT@font'. It cannot be protruded}% } }\fi \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 \@tempcnta=\csname MT@\MT@feat @max\endcsname \MT@warn@code@too@large \else \ifnum\@tempcntb<\csname MT@\MT@feat @min\endcsname\relax \@tempcnta=\csname MT@\MT@feat @min\endcsname \MT@warn@code@too@large \fi \fi } \def\MT@warn@code@too@large{% \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=\@tempcnta } \def\MT@get@opt{% \MT@ifdefined@n{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{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{MT@\MT@feat @c@\csname MT@\MT@feat @c@name\endcsname @preset}{% \csname MT@preset@\MT@feat\endcsname }\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=\number\@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@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@warning@nl{% Cannot preset characters relative to their widths\MessageBreak for protrusion list `\MT@pr@c@name'. Presetting them\MessageBreak relative to 1em instead}% \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@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@load@list{\MT@ex@c@name}% \edef\MT@curr@list@name{expansion list `\MT@ex@c@name'}% \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{% \@tempcnta=\z@ \MT@while@num{\@tempcnta < \@cclvi}{% \efcode\MT@font\@tempcnta=#1\relax \advance\@tempcnta \@ne }% } \def\MT@reset@ef@codes@{\MT@set@all@ex\MT@ex@factor@} \ifnum\MT@pdftex@no < 4 \let\MT@reset@ef@codes\MT@reset@ef@codes@ \else \def\MT@reset@ef@codes{% \ifnum\MT@ex@factor@=\@m \else \MT@reset@ef@codes@ \fi } \fi \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\MT@ex@inh@name{% \MT@ifdefined@n{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 }\relax }\relax \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@ifdefined@n{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@ifdefined@n{MT@ex@c@\MT@ex@c@name @stretch}{% \MT@let@cn\MT@stretch@{MT@ex@c@\MT@ex@c@name @stretch}% \MT@vinfo{... : Setting stretch limit to \number\MT@stretch@}% }{% \let\MT@stretch@\MT@stretch }% \MT@ifdefined@n{MT@ex@c@\MT@ex@c@name @shrink}{% \MT@let@cn\MT@shrink@{MT@ex@c@\MT@ex@c@name @shrink}% \MT@vinfo{... : Setting shrink limit to \number\MT@shrink@}% }{% \let\MT@shrink@\MT@shrink }% \MT@ifdefined@n{MT@ex@c@\MT@ex@c@name @step}{% \MT@let@cn\MT@step@{MT@ex@c@\MT@ex@c@name @step}% \MT@vinfo{... : Setting expansion step to \number\MT@step@}% }{% \let\MT@step@\MT@step }% \MT@ifdefined@n{MT@ex@c@\MT@ex@c@name @auto}{% \MT@let@cn\MT@auto@{MT@ex@c@\MT@ex@c@name @auto}% \def\@tempa{autoexpand}% \MT@vinfo{... : \ifx\@tempa\MT@auto@ En\else Dis\fi abling automatic expansion}% }{% \let\MT@auto@\MT@auto }% } \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 } \ifnum\MT@pdftex@no < 5 \MT@hop@else@fi{% \let\MT@noligatures\relax }\else\MT@hop@fi{% \def\MT@noligatures{% \csname ifMT@\MT@abbr@nl\endcsname \MT@dotrue \MT@map@clist@n{font,encoding,family,series,shape,size}{% \MT@ifdefined@n{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 } }\fi \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{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 `\@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}{% \MT@vinfo{... Loading configuration file mt-#1.cfg}% \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}{% \MT@vinfo{... Loading configuration file mt-\@tempa.cfg}% \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 \def\MT@remove@spaces##1{}% \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{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{MT@\@tempb @\@tempa}{% \MT@next@listname@#4% }\relax \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{% \expandafter\let\expandafter\MT@context\csname MT@\MT@feat @context\endcsname \MT@get@listname{\MT@feat @c}% \MT@ifdefined@c\MT@listname{% \MT@edef@n{MT@\MT@feat @c@name}{\MT@listname}% \ifMT@nonselected \MT@vinfo{... Applying non-selected expansion (list `\MT@ex@c@name')}% \else \MT@vinfo{... Loading \@nameuse{MT@abbr@\MT@feat} list `\@nameuse{MT@\MT@feat @c@name}'}% \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@exp@string\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\MT@listname{% \MT@edef@n{MT@\MT@feat @inh@name}{\MT@listname}% \MT@let@cn\@tempc{MT@\MT@feat @inh@\csname MT@\MT@feat @inh@name\endcsname}% \ifx\@tempc\@empty \else \MT@let@cn\MT@inh@name{MT@\MT@feat @inh@name}% \def\MT@curr@list@name{inheritance list}% \expandafter\MT@inh@do\@tempc,\relax,% \global\MT@let@nc{MT@\MT@feat @inh@\csname MT@\MT@feat @inh@name\endcsname}\@empty \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\expandafter\expandafter{\expandafter\string\@tempa}% \edef\MT@char{\expandafter\meaning\@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{\MT@encoding\MT@detokenize\@tempa}% \MT@is@symbol {% \expandafter\MT@is@composite\@tempa\relax\relax }% \ifnum\Mt@char < \z@ \MT@exp@two@c\MT@is@char\MT@char\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@unknown@i \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 1\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@ifnumber{#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{% \ifx\\#2\\% \ifnum\catcode`#1 = \active \begingroup \set@display@protect \def\IeC##1{##1}% \def\@inpenc@undefined@##1{undefined^^J% (microtype)\@spaces\@spaces\@spaces\@spaces in input encoding ``##1''}% \edef\x{% \def\noexpand\@tempa{\@tempa}% \mt@toks={\the\mt@toks\space (= \@tempa)}% }% \expandafter\endgroup\x \fi \fi } \def\MT@is@symbol{% \edef\@tempa{\expandafter \csname\expandafter \MT@encoding\expandafter \string\@tempa \endcsname}% \expandafter\MT@exp@two@c\expandafter\MT@is@char\expandafter \meaning\expandafter\@tempa\MT@charstring\relax\relax\relax \ifnum\Mt@char < \z@ \expandafter\MT@is@letter\@tempa\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\@tempa{\expandafter \csname\expandafter \string\csname\MT@encoding\endcsname \string#1-% \string#2% \endcsname}% \expandafter\MT@is@letter\@tempa\relax\relax \fi } \ifcase\MT@etex@no \def\MT@detokenize#1{\MT@exp@two@c\zap@space\strip@prefix\meaning#1 \@empty} \else \def\MT@detokenize#1{\detokenize \expandafter\expandafter\expandafter{\expandafter\string#1}} \fi \let\MT@curr@list@name\@empty \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@unknown@i{% \MT@warning@nl{% Unknown slot number of character `\the\mt@toks' in\MessageBreak font encoding `\MT@encoding'. Make sure it's a single\MessageBreak character (or a number) in \MT@curr@list@name}% } \def\MT@warn@unknown{% \MT@warning@nl{% Unknown slot number of character `\the\mt@toks' in\MessageBreak font encoding `\MT@encoding' in \MT@curr@list@name}% } \let\MT@font\@empty \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 \escapechar\m@ne \ifx\MT@font\@empty \let\MT@font\font@name \else \ifx\MT@font\font@name \else \expandafter\MT@xadd \csname MT@\MT@curr@contexts font@list\endcsname{\font@name,}% \fi \fi \expandafter\MT@exp@one@n\expandafter\MT@in@clist\expandafter\MT@font \csname MT@\MT@curr@contexts font@list\endcsname \ifMT@inlist@ \else \MT@setupfont \expandafter\MT@xadd\csname MT@\MT@curr@contexts font@list\endcsname{\MT@font,}% \MT@map@tlist@c\MT@doc@contexts\MT@rem@from@lists \fi \endgroup \global\let\MT@font\@empty } \def\MT@rem@from@lists#1{% \MT@ifstreq{#1}\MT@curr@contexts\relax{% \expandafter\MT@exp@one@n\expandafter\MT@rem@from@list \expandafter\MT@font\csname MT@#1font@list\endcsname }% } \let\MT@pickupfont\pickup@font \let\MT@add@accent\add@accent \def\add@accent#1#2{% \let\pickup@font\MT@orig@pickupfont \MT@add@accent{#1}{#2}% \let\pickup@font\MT@pickupfont } \AtBeginDocument{% \ifx\MT@pickupfont\pickup@font \else \MT@error{% Another package has overwritten the definition\MessageBreak of \string\pickup@font. I might not be able to\MessageBreak apply any micro-typography. Please find the\MessageBreak culprit, and load it before the microtype package }{% The microtype package attaches the micro-typographic setup to\MessageBreak \string\pickup@font. If the other package has simply overwritten this\MessageBreak command, nothing will work. If, on the other hand, it has changed\MessageBreak the command in a cautious way, everything may be fine.\MessageBreak In either case, please send a report to . }% \fi } \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@declare@sets{pr}{#2}{#3}% \MT@declare@sets{ex}{#2}{#3}% }{% \MT@map@clist@c\@tempa{% {\KV@@sp@def\@tempa{##1}% \MT@ifempty\@tempa\relax{% \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{MT@#1@set@@\MT@curr@set@name}{% \MT@warning{Redefining set `\MT@curr@set@name'}% }\relax \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{% \csname MT@#2list@#1@\MT@curr@set@name\endcsname \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@make@string\MT@val \expandafter\MT@xadd \csname MT@#2list@#1@\MT@curr@set@name\endcsname{\MT@val,}% }% }% } \def\MT@get@highlevel#1{% \expandafter\MT@test@ast\MT@val*\@nil{% \MT@ifempty\@tempa{\def\@tempa{#1}}\relax \edef\MT@val{\csname \@tempa default\endcsname}% \ifx\@nodocument\relax \else \expandafter\ifx \csname MT@check@\MT@curr@set@name @\@tempa\endcsname\@empty \else \global\MT@edef@n{MT@\MT@curr@set@name @\@tempa @default}{\MT@val}% \edef\x{{\MT@curr@set@name}{\@tempa}}% \MT@exp@one@n\AtBeginDocument{% \expandafter\MT@check@default\x }% \global\MT@let@nc{MT@check@\MT@curr@set@name @\@tempa}\@empty \fi \fi }% } \def\MT@test@ast#1*#2\@nil{% \def\@tempa{#1}% \MT@ifempty{#2}% \@gobble \@firstofone } \def\MT@check@default#1#2{% \MT@let@cn\@tempa{MT@#1@#2@default}% \edef\@tempb{\csname #2default\endcsname}% \ifx\@tempa\@tempb \else \MT@warning@nl{% \expandafter\noexpand\csname #2default\endcsname has changed (`\@tempa' <> `\@tempb')!\MessageBreak This might affect the `#1' font set.\MessageBreak Please make all relevant font changes *before*\MessageBreak loading the `microtype' package}% \fi } \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@ifgt\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@ifeq\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}[]{% \MT@map@clist@n{##1}{% \KV@@sp@def\MT@val{####1}% \expandafter\MT@get@font\MT@val/////\@nil \expandafter\MT@xadd \csname MT@#1list@font@\MT@curr@set@name\endcsname {\csname\MT@val\endcsname,}% }% }% } \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@warning{size axis is empty in font specification\MessageBreak `\MT@temp'. Using \string\normalsize\space instead}% \def\MT@val{*}% }{% \def\MT@val{#5}% }% \MT@get@size \ifx\MT@val\relax\def\MT@val{0}\fi \edef\MT@val{\expandafter\@gobble\@tempb/\MT@val}% }% } \def\MT@get@axis#1#2{% \def\MT@val{#2}% \MT@get@highlevel{#1}% \MT@ifempty\MT@val{% \MT@warning{#1 axis is empty in font specification\MessageBreak `\MT@temp'. Using `\csname #1default\endcsname' instead}% \edef\@tempb{\@tempb/\csname #1default\endcsname}% }{% \edef\@tempb{\@tempb/\MT@val}% }% } \MT@define@set@keys{pr} \MT@define@set@keys{ex} \MT@define@set@keys{nl} \renewcommand*\UseMicrotypeSet[2][]{% \KV@@sp@def\@tempa{#1}% \MT@ifempty\@tempa{% \MT@use@set{pr}{#2}% \MT@use@set{ex}{#2}% }{% \MT@map@clist@c\@tempa{% {\KV@@sp@def\@tempa{##1}% \MT@ifempty\@tempa\relax{% \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{MT@#1@set@@\@tempa}{% \global\MT@edef@n{MT@#1@setname}{\@tempa}% \MT@info{Using \@nameuse{MT@abbr@#1} set `\@tempa'}% }{% \MT@ifdefined@n{MT@#1@setname}\relax{% \global\MT@edef@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}% }% } \renewcommand*\DeclareMicrotypeSetDefault[2][]{% \KV@@sp@def\@tempa{#1}% \MT@ifempty\@tempa{% \MT@set@default@set{pr}{#2}% \MT@set@default@set{ex}{#2}% }{% \MT@map@clist@c\@tempa{% {\KV@@sp@def\@tempa{##1}% \MT@ifempty\@tempa\relax{% \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{MT@#1@set@@\@tempa}{% \global\MT@edef@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}% \global\MT@edef@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{MT@\@tempa @alias}{% \MT@warning{Alias font family `\@tempb' will override alias `\@nameuse{MT@\@tempa @alias}'\MessageBreak for font family `\@tempa'}}\relax \global\MT@edef@n{MT@\@tempa @alias}{\@tempb}% \MT@ifdefined@c\MT@family{% \global\let\MT@familyalias\@tempb }\relax } \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}{% \MT@vinfo{... Loading configuration file mt-\@tempa.cfg}% }{% \MT@warning{... Configuration file mt-\@tempa.cfg\MessageBreak does not exist}% }% \MT@end@catcodes \fi } \ifnum\MT@pdftex@no > 4 \renewcommand*\DisableLigatures[1]{% \MT@noligaturestrue \MT@declare@sets{nl}{no ligatures}{#1}% \gdef\MT@nl@setname{no ligatures}% } \else \renewcommand*\DisableLigatures[1]{% \MT@warning{Disabling ligatures of a font is only possible\MessageBreak with pdftex version 1.30 or later.\MessageBreak Ignoring \string\DisableLigatures}% \let\DisableLigatures\@gobble } \fi \renewcommand*\SetProtrusion[2][]{% \let\MT@pr@c@name\@undefined \let\MT@load\@undefined \let\MT@extra@factor\@undefined \let\MT@extra@unit\@undefined \let\MT@extra@preset\@undefined \let\MT@extra@context\@empty \setkeys{MT@pr@c}{#1}% \MT@get@codes@name{pr}% \MT@set@pr@opt \def\MT@permutelist{pr@c}% \setkeys{MT@pr@c}{#2}% \MT@permute \MT@begin@catcodes \MT@set@pr@list } \def\MT@set@pr@list#1{% \global\MT@def@n{MT@pr@c@\MT@pr@c@name}{#1}% \MT@end@catcodes } \renewcommand*\SetExpansion[2][]{% \let\MT@ex@c@name\@undefined \let\MT@load\@undefined \let\MT@extra@factor\@undefined \let\MT@extra@stretch\@undefined \let\MT@extra@shrink\@undefined \let\MT@extra@step\@undefined \let\MT@extra@auto\@undefined \let\MT@extra@preset\@undefined \let\MT@extra@context\@empty \setkeys{MT@ex@c}{#1}% \MT@get@codes@name{ex}% \MT@set@ex@opt \def\MT@permutelist{ex@c}% \setkeys{MT@ex@c}{#2}% \MT@permute \MT@begin@catcodes \MT@set@ex@list } \def\MT@set@ex@list#1{% \global\MT@def@n{MT@ex@c@\MT@ex@c@name}{#1}% \MT@end@catcodes } \def\MT@get@codes@name#1{% \MT@ifdefined@n{MT@#1@c@name}{% \MT@ifdefined@n{MT@#1@c@\csname MT@#1@c@name\endcsname}{% \MT@warning{Redefining list `\@nameuse{MT@#1@c@name}'}% }\relax }{% \@tempcnta=\@ne \MT@while@num{\@tempcnta > \z@}{% \MT@ifdefined@n{MT@#1@c@#1-\romannumeral\@tempcnta}{% \advance \@tempcnta \@ne }{% \MT@edef@n{MT@#1@c@name}{#1-\romannumeral\@tempcnta}% \@tempcnta=\z@ }% }% }% \MT@let@cn\MT@curr@set@name{MT@#1@c@name}% \MT@ifdefined@c\MT@load{% \global\MT@let@nc{MT@#1@c@\MT@curr@set@name load}\MT@load }\relax } \def\MT@set@pr@opt{% \MT@set@opt@{pr}{factor}% \MT@set@opt@{pr}{unit}% \MT@set@opt@{pr}{preset}% } \def\MT@set@ex@opt{% \MT@ifdefined@c\MT@extra@factor{% \ifnum\MT@extra@factor>\@m \MT@warning@nl{Expansion factor \number\MT@extra@factor\space too large in list\MessageBreak `\MT@ex@c@name'. Setting it to the maximum of 1000}% \let\MT@extra@factor\@m \fi \global\MT@let@nc{MT@ex@c@\MT@ex@c@name @factor}\MT@extra@factor }\relax \MT@set@opt@{ex}{stretch}% \MT@set@opt@{ex}{shrink}% \MT@set@opt@{ex}{step}% \MT@set@opt@{ex}{auto}% \MT@set@opt@{ex}{preset}% } \def\MT@set@opt@#1#2{% \MT@ifdefined@n{MT@extra@#2}{% \global\MT@let@nn{MT@#1@c@\csname MT@#1@c@name\endcsname @#2}{MT@extra@#2}% }\relax } \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\romannumeral\@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}{\csname MT@#1@name\endcsname}}}% \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 \global\MT@edef@n{MT@\MT@permutelist @\@tempb}% {\csname MT@\MT@permutelist @name\endcsname}% \expandafter\MT@xaddb \csname MT@\MT@permutelist @\@tempb @sizes\endcsname {{{\MT@val}{\m@ne}{\csname MT@#1@name\endcsname}}}% }% }% } \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{\expandafter\@gobble\@tempb/*}% \MT@ifempty{#5}{% \MT@warning{size axis is empty in font specification\MessageBreak `\MT@temp'. Using \string\normalsize\space instead}% \def\MT@val{*}% }{% \def\MT@val{#5}% }% \MT@get@size }% } \def\MT@declare@codes#1{% \define@key{MT@#1@c}{name}[]{% \MT@ifempty{##1}\relax{% \MT@def@n{MT@#1@c@name}{##1}% }% }% \define@key{MT@#1@c}{load}[]{% \MT@ifempty{##1}\relax{% \def\MT@load{##1}% }% }% \define@key{MT@#1@c}{factor}[]{% \MT@ifempty{##1}\relax{% \def\MT@extra@factor{##1 }% }% }% \MT@define@code@key{encoding}{#1@c}% \MT@define@code@key{family}{#1@c}% \MT@define@code@key{series}{#1@c}% \MT@define@code@key{shape}{#1@c}% \MT@define@code@key@size{#1@c}% \MT@define@code@key@font{#1@c}% \define@key{MT@#1@c}{preset}[]{% \MT@ifempty{##1}\relax{% \def\MT@extra@preset{##1}% }% }% \define@key{MT@#1@c}{context}[]{% \MT@ifempty{##1}\relax{% \def\MT@extra@context{##1}% }% }% } \MT@declare@codes{pr} \MT@declare@codes{ex} \define@key{MT@pr@c}{unit}[character]{% \let\MT@extra@unit\@empty \KV@@sp@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{% \let\MT@extra@unit\@tempa }{% \MT@warning{`\@tempa' is not a dimension.\MessageBreak Ignoring it and setting values relative to\MessageBreak character widths}% }% }% } \def\MT@define@ex@c@key#1{% \define@key{MT@ex@c}{#1}[]{% \MT@ifempty{##1}\relax{% \MT@ifnumber{##1}{% \MT@def@n{MT@extra@#1}{##1 }% }{% \MT@warning{% Value `##1' for option `#1' is not a number.\MessageBreak Ignoring it}% }% }% }% } \MT@define@ex@c@key{stretch} \MT@define@ex@c@key{shrink} \MT@define@ex@c@key{step} \define@key{MT@ex@c}{auto}[true]{% \KV@@sp@def\@tempa{#1}% \csname if\@tempa\endcsname \ifnum\MT@pdftex@no > \thr@@ \def\MT@extra@auto{autoexpand}% \else \MT@warning{pdfTeX too old for automatic font expansion}% \fi \else \ifnum\MT@pdftex@no > \thr@@ \let\MT@extra@auto\@empty \fi \fi } \renewcommand*\DeclareCharacterInheritance[1][]{% \KV@@sp@def\@tempa{#1}% \MT@begin@catcodes \MT@set@inh@list } \def\MT@set@inh@list#1#2{% \MT@ifempty\@tempa{% \MT@declare@char@inh{pr}{#1}{#2}% \MT@declare@char@inh{ex}{#1}{#2}% }{% \MT@map@clist@c\@tempa{% {\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 } \def\MT@declare@char@inh#1#2#3{% \MT@let@nc{MT@#1@inh@name}\@undefined \MT@get@inh@name{#1}% \global\MT@def@n{MT@#1@inh@\csname MT@#1@inh@name\endcsname}{#3}% \def\MT@permutelist{#1@inh}% \setkeys{MT@#1@inh}{#2}% \MT@permute } \def\MT@get@inh@name#1{% \@tempcnta=\@ne \MT@while@num{\@tempcnta > \z@}{% \MT@ifdefined@n{MT@#1@inh@#1-inh-\romannumeral\@tempcnta}{% \advance \@tempcnta \@ne }{% \MT@edef@n{MT@#1@inh@name}{#1-inh-\romannumeral\@tempcnta}% \@tempcnta=\z@ }% }% } \def\MT@define@inh@key@encoding#1{% \define@key{MT@#1}{encoding}[]{% \def\MT@val{##1}% \expandafter\MT@encoding@check\MT@val,\@nil \MT@get@highlevel{encoding}% \MT@edef@n{MT@tempencoding\romannumeral1}{\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}% }% } \def\MT@define@inh@keys#1{% \MT@define@inh@key@encoding{#1@inh}% \MT@define@code@key{family}{#1@inh}% \MT@define@code@key{series}{#1@inh}% \MT@define@code@key{shape}{#1@inh}% \MT@define@code@key@size{#1@inh}% \MT@define@code@key@font{#1@inh}% } \MT@define@inh@keys{pr} \MT@define@inh@keys{ex} \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@inh@name @\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{MT@tempencoding\romannumeral\MT@cnt@encoding}% \MT@permute@ \relax } \def\MT@permute@@{% \let\MT@cnt@series\@ne \MT@permute@@@ \MT@increment\MT@cnt@family \MT@ifdefined@n{MT@tempfamily\romannumeral\MT@cnt@family}% \MT@permute@@ \relax } \def\MT@permute@@@{% \let\MT@cnt@shape\@ne \MT@permute@@@@ \MT@increment\MT@cnt@series \MT@ifdefined@n{MT@tempseries\romannumeral\MT@cnt@series}% \MT@permute@@@ \relax } \def\MT@permute@@@@{% \MT@permute@@@@@ \MT@increment\MT@cnt@shape \MT@ifdefined@n{MT@tempshape\romannumeral\MT@cnt@shape}% \MT@permute@@@@ \relax } \def\MT@permute@@@@@{% \MT@permute@define{encoding}% \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\MT@tempsize *\@empty}% \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\MT@tempsize{% \MT@ifdefined@n{MT@\MT@permutelist @\@tempa\MT@extra@context @sizes}{% \MT@map@tlist@c \MT@tempsize \MT@check@rlist }\relax \expandafter\MT@xaddb \csname MT@\MT@permutelist @\@tempa\MT@extra@context @sizes\endcsname \MT@tempsize }{% \MT@ifdefined@n{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'}% }\relax }% \global\MT@edef@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{MT@temp#1\romannumeral\@tempcnta}% {\MT@edef@n{MT@temp#1}{\csname MT@temp#1\romannumeral\@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}% \let\MT@tempsize\@undefined } \def\MT@permute@reset@#1{% \@tempcnta=\@ne \MT@loop \MT@let@nc{MT@temp#1\romannumeral\@tempcnta}\@undefined \advance\@tempcnta\@ne \MT@ifdefined@n{MT@temp#1\romannumeral\@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}% \@tempswafalse \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@ifeq{#2}\m@ne{% \MT@ifeq\@tempc\m@ne{% \MT@ifeq\@tempb{#1}\@tempswatrue\relax }{% \MT@ifgt\@tempb{#1}\relax{% \MT@ifgt\@tempc{#1}{% \@tempswatrue \edef\@tempb{#1 (with range: \@tempb\space to \@tempc)}% }\relax }% }% }{% \MT@ifeq\@tempc\m@ne{% \MT@iflt\@tempb{#2}{% \MT@iflt\@tempb{#1}\relax\@tempswatrue }\relax }{% \MT@iflt\@tempb{#2}{% \MT@ifgt\@tempc{#1}{% \@tempswatrue \edef\@tempb{#1 to #2 (with range: \@tempb\space to \@tempc)}% }\relax }\relax }% }% \if@tempswa \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 } \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}[]{% \setkeys{MTX}{protrusion={#1}}% \setkeys{MTX}{expansion={#1}}% } \def\microtypecontext#1{% \setkeys{MTC}{#1}% \edef\MT@curr@contexts{\MT@pr@context|% \MT@ex@context|% \MT@sp@context|% \MT@kn@context}% \MT@exp@one@n\MT@in@tlist\MT@curr@contexts\MT@doc@contexts \ifMT@inlist@ \else \MT@xadd\MT@doc@contexts{{\MT@curr@contexts}}% \fi \selectfont \aftergroup\MT@reset@context } \def\MT@reset@context{% \MT@vinfo{Resetting contexts on line \the\inputlineno}% \selectfont } \def\MT@define@context#1{% \define@key{MTC}{#1}[]{% \KV@@sp@def\@tempb{#1}% \edef\@tempb{\@nameuse{MT@rbba@\@tempb}}% \KV@@sp@def\MT@val{##1}% \MT@vinfo{--- Changing #1 context to `\MT@val'}% \MT@edef@n{MT@\@tempb @context}{\MT@val}% \MT@ifempty\MT@val\relax{% \global\MT@let@nn{MT@reset@\@tempb @codes}{MT@reset@\@tempb @codes@}% }% }% } \MT@define@context{protrusion} \MT@define@context{expansion} \let\MT@pr@context\@empty \let\MT@ex@context\@empty \def\MT@curr@contexts{|||} \def\MT@doc@contexts{{|||}} \let\MT@extra@context\@empty \def\MT@gobblethree#1#2#3{} \let\MT@saved@setupfont\MT@setupfont \define@key{MTX}{disable}[]{% \MT@info{Inactivate microtype package}% \let\MT@setupfont\MT@gobblethree } \define@key{MTX}{enable}[]{% \MT@info{Reactivate microtype package}% \let\MT@setupfont\MT@saved@setupfont } \newif\ifMT@opt@expansion \newif\ifMT@opt@auto \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{MT@\@tempb @set@@\MT@val}{% \global\MT@edef@n{MT@\@tempb @setname}{\MT@val}% }{% \global\MT@edef@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}[]{% \setkeys{MT}{protrusion={#1}}% \setkeys{MT}{expansion={#1}}% } \def\MT@def@bool@opt#1{% \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}% }% }% \csname MT@#1\@tempa\endcsname }% } \MT@map@tlist@n{{draft}{DVIoutput}{auto}{selected}% }\MT@def@bool@opt \define@key{MT}{final}[]{% \MT@draftfalse \MT@ifempty{#1}% {\def\@tempa{true}}% {\def\@tempa{#1}}% \MT@ifstreq\@tempa{true}\relax{% \MT@ifstreq\@tempa{false}% \MT@drafttrue {% \MT@warning@nl{% `#1' is not an admissible value for option\MessageBreak `final'. Assuming `true'}% \MT@draftfalse }% }% } \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@ifnumber\@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@ifnumber\@tempa{% \MT@edef@n{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=\z@ \else \ifnum\MT@pdftex@no > \thr@@ \MT@expansiontrue \MT@autotrue \fi \fi \define@key{MT}{config}[]{\relax} \def\MT@get@config#1config=#2,#3\@nil{% \MT@ifempty{#2}% {\def\MT@config@file{microtype.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 \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@ifdefined@c\MT@default@pr@set\relax{\gdef\MT@default@pr@set{all}} \MT@ifdefined@c\MT@default@ex@set\relax{\gdef\MT@default@ex@set{all}} \renewcommand*\DeclareMicrotypeSetDefault[2][]{% \MT@warning{% The command \string\DeclareMicrotypeSetDefault\space may only\MessageBreak be used inside the main configuration file.\MessageBreak Ignoring it}% } \MT@ifdefined@c\MicroType@Hook{% \MT@warning@nl{% Command \string\MicroType@Hook\space is deprecated.\MessageBreak Use \string\Microtype@Hook\space instead}\MicroType@Hook}\relax \MT@ifdefined@c\Microtype@Hook\Microtype@Hook\relax \def\MT@ProcessOptionsWithKV#1{% \let\@tempc\relax \let\KVo@tempa\@empty \MT@map@clist@c\@classoptionslist{% \def\CurrentOption{##1}% \MT@ifdefined@n{KV@#1@\CurrentOption}{% \edef\KVo@tempa{\KVo@tempa,\CurrentOption,}% \@expandtwoargs\@removeelement\CurrentOption \@unusedoptionlist\@unusedoptionlist }\relax }% \edef\KVo@tempa{% \noexpand\setkeys{#1}{% \KVo@tempa\@ptionlist{\@currname.\@currext}% }% }% \KVo@tempa \AtEndOfPackage{\let\@unprocessedoptions\relax}% \let\CurrentOption\@empty } \MT@ProcessOptionsWithKV{MT} \ifMT@DVIoutput \ifnum\pdfoutput=\z@ \MT@info@nl{Generating DVI output} \else \pdfoutput\z@ \MT@info@nl{Changing output mode to DVI} \ifMT@opt@expansion \else \MT@expansionfalse \fi \fi \else \MT@info@nl{Generating \ifnum\pdfoutput=\z@ DVI \else PDF \fi output} \fi \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{% \@ifstar {\@ifnextchar[\MT@DeclareSet{\MT@DeclareSet[]}}% {\@ifnextchar[\MT@DeclareSet{\MT@DeclareSet[]}}% } \def\MT@DeclareSet[#1]#2#3{} \renewcommand*\UseMicrotypeSet[2][]{} \renewcommand*\SetProtrusion[3][]{} \renewcommand*\SetExpansion[3][]{} \renewcommand*\DeclareCharacterInheritance[3][]{} \renewcommand*\DeclareMicrotypeAlias[2]{} \renewcommand*\LoadMicrotypeFile[1]{} \renewcommand*\microtypesetup[1]{} \renewcommand*\microtypecontext[1]{} \expandafter \endinput \fi \ifMT@protrusion \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\MT@pr@setname{% \MT@info@nl{Using protrusion set `\MT@pr@setname'}% }{% \global\let\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 \ifnum\MT@pdftex@no > \thr@@ \ifnum\pdfoutput=\z@ \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 \else \ifMT@opt@auto \MT@warning@nl{% The pdftex you are using is too old for automatic\MessageBreak font expansion. I will switch it off and hope that\MessageBreak expanded fonts are available on your system.\MessageBreak Install pdftex version 1.20 or newer} \fi \MT@autofalse \def\MT@auto{1000 } \fi \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 \pdfadjustspacing\MT@ex@level \MT@info@nl{\ifMT@auto Automatic f\else F\fi ont 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\MT@ex@setname{% \MT@info@nl{Using expansion set `\MT@ex@setname'}% }{% \global\let\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 \endinput %% %% End of file `microtype.sty'.