Linux ns8.secondary29.go.th 2.6.32-754.28.1.el6.x86_64 #1 SMP Wed Mar 11 18:38:45 UTC 2020 x86_64
Apache/2.2.15 (CentOS)
: 122.154.134.11 | : 122.154.134.9
Cant Read [ /etc/named.conf ]
5.6.40
apache
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
usr /
share /
texmf /
tex /
latex /
microtype /
[ HOME SHELL ]
Name
Size
Permission
Action
letterspace.sty
8.26
KB
-rw-r--r--
microtype.cfg
17.68
KB
-rw-r--r--
microtype.sty
95.35
KB
-rw-r--r--
mt-bch.cfg
8.65
KB
-rw-r--r--
mt-cmr.cfg
18.47
KB
-rw-r--r--
mt-euf.cfg
2.84
KB
-rw-r--r--
mt-eur.cfg
3.49
KB
-rw-r--r--
mt-euroitc.cfg
2.05
KB
-rw-r--r--
mt-eus.cfg
4.65
KB
-rw-r--r--
mt-msa.cfg
5.67
KB
-rw-r--r--
mt-msb.cfg
5.35
KB
-rw-r--r--
mt-mvs.cfg
2.27
KB
-rw-r--r--
mt-pad.cfg
9.37
KB
-rw-r--r--
mt-pmn.cfg
13.66
KB
-rw-r--r--
mt-ppl.cfg
6.11
KB
-rw-r--r--
mt-ptm.cfg
12.1
KB
-rw-r--r--
mt-ugm.cfg
8.01
KB
-rw-r--r--
mt-zpeu.cfg
2.43
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : microtype.sty
%% %% 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--2007 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 files microtype.sty and letterspace.sty. %% %% ------------------------------------------------------------------------ %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage {microtype} [2007/01/21 v2.0 Micro-typography with pdfTeX (RS)] \newcommand*\DeclareMicrotypeSet[3][]{} \newcommand*\UseMicrotypeSet[2][]{} \newcommand*\DeclareMicrotypeSetDefault[2][]{} \newcommand*\SetProtrusion[3][]{} \newcommand*\SetExpansion[3][]{} \newcommand*\SetExtraSpacing[3][]{} \newcommand*\SetExtraKerning[3][]{} \newcommand*\SetTracking[3][]{} \newcommand*\DisableLigatures[1]{} \newcommand*\DeclareCharacterInheritance[3][]{} \newcommand*\DeclareMicrotypeAlias[2]{} \newcommand*\LoadMicrotypeFile[1]{} \newcommand*\DeclareMicrotypeBabelHook[2]{} \newcommand*\microtypesetup[1]{} \newcommand*\microtypecontext[1]{} \@ifpackageloaded{letterspace}{\let\MT@textls\relax}{% \newcommand*\lsstyle{} \newcommand\textls[2][]{} \def\textls#1#{\@firstofone} \newcommand*\lslig[1]{#1} } \def\DeclareMicrotypeSet#1#{\@gobbletwo} \@onlypreamble\DeclareMicrotypeSet \@onlypreamble\UseMicrotypeSet \@onlypreamble\DeclareMicrotypeSetDefault \@onlypreamble\DisableLigatures \@onlypreamble\DeclareMicrotypeBabelHook \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@info{\PackageInfo\MT@MT} \def\MT@info@nl#1{\MT@info{#1\@gobble}} \let\MT@vinfo\@gobble \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 to find out what went wrong.}} \def\MT@error{\PackageError\MT@MT} \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{6} \ifnum\pdftexversion < 140 \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 \fi \ifnum\MT@pdftex@no<2 \AtEndOfPackage{\let\@unprocessedoptions\relax} \let\CurrentOption\@empty \MT@warning@nl{% \ifcase\MT@pdftex@no You don't seem to be using pdftex.\MessageBreak \else 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\"% \@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 \newif\ifMT@spacing \newif\ifMT@kerning \newif\ifMT@tracking \newif\ifMT@babel \let\MT@pr@level\tw@ \let\MT@ex@level\tw@ \let\MT@pr@factor\@m \let\MT@ex@factor\@m \let\MT@sp@factor\@m \let\MT@kn@factor\@m \let\MT@pr@unit\@empty \let\MT@sp@unit\m@ne \def\MT@kn@unit{1em} \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@sp@min{-\@m} \let\MT@sp@max\@m \def\MT@kn@min{-\@m} \let\MT@kn@max\@m \def\MT@tr@min{-\@m} \let\MT@tr@max\@m \def\MT@factor@default{1000 } \def\MT@stretch@default{20 } \def\MT@shrink@default{20 } \def\MT@step@default{4 } \let\MT@letterspace\m@ne \def\MT@letterspace@default{100} \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 \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@abbr@sp{spacing} \def\MT@abbr@sp@c{interword spacing codes} \def\MT@abbr@sp@inh{interword spacing inheritance} \def\MT@abbr@kn{kerning} \def\MT@abbr@kn@c{kerning codes} \def\MT@abbr@kn@inh{kerning inheritance} \def\MT@abbr@tr{tracking} \def\MT@abbr@tr@c{tracking amount} \def\MT@rbba@protrusion{pr} \def\MT@rbba@expansion{ex} \def\MT@rbba@spacing{sp} \def\MT@rbba@kerning{kn} \def\MT@rbba@tracking{tr} \def\MT@features{pr,ex,sp,kn,tr} \def\MT@features@long{protrusion,expansion,spacing,kerning,tracking} \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@with@babel@and#1{\@ifpackagewith{babel}{#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@let@nc{ver@letterspace.sty}\@empty \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{% \MT@with@babel@and{spanish}{\MT@ifdefined@c@T\percentsign{\let\%\percentsign}}% \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 \MT@with@babel@and{spanish}{% \g@addto@macro\MT@setupfont@hook{% \MT@ifdefined@c@T\percentsign{\let\%\percentsign}}% } \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 \def\lsstyle{\pdfstringdefWarn\lsstyle}% \def\textls#1#{\pdfstringdefWarn\textls}% }% }{% \MT@with@package{tex4ht}{% \g@addto@macro\MT@setupfont@hook\MT@restore@p@h }% } \MT@with@package{listings}{% \g@addto@macro\MT@normal@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{% \catcode`\\\z@ \let\lst@ProcessLetter\@empty }% } \MT@with@package{soul}{% \soulregister\lsstyle 0% \soulregister\textls 1% } \MT@with@package{pinyin}{% \let\MT@py@macron\py@macron \@ifpackagelater{pinyin}{2006/10/17}{% 4.7.0 \def\py@macron#1#2{% \let\pickup@font\MT@orig@pickupfont \MT@py@macron{#1}{#2}% \let\pickup@font\MT@pickupfont}% }{% \def\py@macron#1{% \let\pickup@font\MT@orig@pickupfont \MT@py@macron{#1}% \let\pickup@font\MT@pickupfont}% }% } } \expandafter\ifx\the\font\nullfont\normalfont\fi \def\MT@setupfont{% \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@tracking \MT@check@font \ifMT@inlist@ \else \MT@vinfo{Setting up font `\MT@@font'\on@line}% \MT@protrusion \MT@expansion \MT@spacing \MT@kerning \MT@noligatures \MT@register@font \fi \MT@glet\MT@font\@empty } \def\MT@split@name#1/#2/#3/#4/#5/#6\@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@font@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@font@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 `\MT@@font' 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{% \MT@normal@catcodes \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@pdftex6{ \def\MT@spacing{\MT@maybe@do{sp}} \def\MT@set@sp@codes{% \MT@if@list@exists{% \MT@get@font@dimen@six \MT@get@opt \MT@reset@sp@codes \MT@get@inh@list \MT@set@inputenc{c}% \MT@load@list\MT@sp@c@name \MT@set@listname \MT@let@cn\@tempc{MT@sp@c@\MT@sp@c@name}% \expandafter\MT@sp@do\@tempc,\relax,% }\MT@reset@sp@codes } \def\MT@sp@do#1,{% \ifx\relax#1\@empty \else \MT@sp@split #1==\relax \expandafter\MT@sp@do \fi } \def\MT@sp@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@sp@split@val#2\relax \fi \fi } \def\MT@sp@split@val#1,#2,#3\relax{% \def\@tempb{#1}% \MT@ifempty\@tempb\relax{% \MT@get@space@unit\tw@ \MT@scale@to@em \knbscode\MT@font\MT@char=\@tempcntb }% \def\@tempb{#2}% \MT@ifempty\@tempb\relax{% \MT@get@space@unit\thr@@ \MT@scale@to@em \stbscode\MT@font\MT@char=\@tempcntb }% \def\@tempb{#3}% \MT@ifempty\@tempb\relax{% \MT@get@space@unit4% \MT@scale@to@em \shbscode\MT@font\MT@char=\@tempcntb }% \MT@ifdefined@c@T\MT@sp@inh@name{% \MT@ifdefined@n@T{MT@inh@\MT@sp@inh@name @\MT@char @}{% \expandafter\MT@map@tlist@c \csname MT@inh@\MT@sp@inh@name @\MT@char @\endcsname \MT@set@sp@heirs }% }% } \def\MT@set@sp@heirs#1{% \knbscode\MT@font#1=\knbscode\MT@font\MT@char \stbscode\MT@font#1=\stbscode\MT@font\MT@char \shbscode\MT@font#1=\shbscode\MT@font\MT@char } \def\MT@set@all@sp#1#2#3{% \MT@do@font{% \knbscode\MT@font\@tempcnta=#1\relax \stbscode\MT@font\@tempcnta=#2\relax \shbscode\MT@font\@tempcnta=#3\relax }% } \def\MT@reset@sp@codes@{\MT@set@all@sp\z@\z@\z@} \let\MT@reset@sp@codes\relax \def\MT@preset@sp{% \expandafter\expandafter\expandafter\MT@preset@sp@ \csname MT@sp@c@\MT@sp@c@name @preset\endcsname\@nil } \def\MT@preset@sp@#1,#2,#3\@nil{% \ifx\MT@sp@unit@\@empty \MT@warn@preset@towidth{sp}% \MT@preset@aux@factor{#1}\@tempa \MT@preset@aux@factor{#2}\@tempc \MT@preset@aux@factor{#3}\@tempb \else \MT@preset@aux@space{#1}\@tempa \def\@tempb{#2}% \MT@get@space@unit\thr@@ \MT@scale@to@em \edef\@tempc{\number\@tempcntb}% \def\@tempb{#3}% \MT@get@space@unit4% \MT@scale@to@em \edef\@tempb{\number\@tempcntb}% \fi \MT@set@all@sp\@tempa\@tempc\@tempb } }{ \let\MT@spacing\relax } \MT@requires@pdftex6{ \def\MT@kerning{\MT@maybe@do{kn}} \def\MT@set@kn@codes{% \MT@if@list@exists{% \MT@get@font@dimen@six \MT@get@opt \MT@reset@kn@codes \MT@get@inh@list \MT@set@inputenc{c}% \MT@load@list\MT@kn@c@name \MT@set@listname \MT@let@cn\@tempc{MT@kn@c@\MT@kn@c@name}% \expandafter\MT@kn@do\@tempc,\relax,% }\MT@reset@kn@codes } \def\MT@kn@do#1,{% \ifx\relax#1\@empty \else \MT@kn@split #1==\relax \expandafter\MT@kn@do \fi } \def\MT@kn@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@kn@split@val#2\relax \fi \fi } \def\MT@kn@split@val#1,#2\relax{% \def\@tempb{#1}% \MT@ifempty\@tempb\relax{% \MT@get@space@unit\tw@ \MT@scale@to@em \knbccode\MT@font\MT@char=\@tempcntb }% \def\@tempb{#2}% \MT@ifempty\@tempb\relax{% \MT@get@space@unit\tw@ \MT@scale@to@em \knaccode\MT@font\MT@char=\@tempcntb }% \MT@ifdefined@c@T\MT@kn@inh@name{% \MT@ifdefined@n@T{MT@inh@\MT@kn@inh@name @\MT@char @}{% \expandafter\MT@map@tlist@c \csname MT@inh@\MT@kn@inh@name @\MT@char @\endcsname \MT@set@kn@heirs }% }% } \def\MT@set@kn@heirs#1{% \knbccode\MT@font#1=\knbccode\MT@font\MT@char \knaccode\MT@font#1=\knaccode\MT@font\MT@char } \def\MT@set@all@kn#1#2{% \MT@do@font{% \knbccode\MT@font\@tempcnta=#1\relax \knaccode\MT@font\@tempcnta=#2\relax }% } \def\MT@reset@kn@codes@{\MT@set@all@kn\z@\z@} \let\MT@reset@kn@codes\relax \def\MT@preset@kn{% \expandafter\expandafter\expandafter\MT@preset@kn@ \csname MT@kn@c@\MT@kn@c@name @preset\endcsname\@nil } \def\MT@preset@kn@#1,#2\@nil{% \ifx\MT@kn@unit@\@empty \MT@warn@preset@towidth{kn}% \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@kn\@tempa\@tempb } }{ \let\MT@kerning\relax } \MT@requires@pdftex6{ \DeclareRobustCommand\lsstyle{% \MT@trackingtrue \def\MT@tr@setname{all}% \let\MT@tracking\MT@tracking@ \MT@let@nc{lslig }\MT@lslig \selectfont \MT@lskern=\dimexpr\MT@ifdefined@c@TF\MT@letterspace@ \MT@letterspace@\MT@letterspace sp * \fontdimen6\MT@lsfont/2000\relax \MT@ls@adjust } \def\MT@tracking@{% \ifMT@tracking\MT@maybe@do{tr}\fi } \let\MT@tracking\MT@tracking@ \def\MT@set@tr@codes{% \MT@ifdefined@c@TF\MT@letterspace@\relax{% \let\MT@letterspace@\MT@letterspace \MT@if@list@exists{% \MT@set@listname \MT@let@cn\MT@letterspace@{MT@tr@c@\MT@tr@c@name}% \MT@ifdefined@n@T{MT@tr@c@\MT@tr@c@name @unit}{% \MT@let@cn\MT@tr@unit@{MT@tr@c@\MT@tr@c@name @unit}% \ifdim\MT@tr@unit@=1em\else \MT@get@font@dimen@six \MT@let@cn\@tempb{MT@tr@c@\MT@tr@c@name}% \MT@get@unit\MT@tr@unit@ \let\MT@tr@factor@\@m \MT@scale@to@em \edef\MT@letterspace@{\number\@tempcntb}% \fi }% }\relax }% \ifnum\MT@letterspace@=\z@\else \xdef\MT@lsfont{% \expandafter\csname\expandafter\string\MT@font /\number\MT@letterspace@ ls\endcsname}% \expandafter\ifx\MT@lsfont\relax \MT@get@ls@basefont \global\expandafter\letterspacefont\MT@lsfont\font@name \MT@letterspace@ \fontdimen2\MT@lsfont=\dimexpr\numexpr 1000+\MT@letterspace@\relax sp * \fontdimen2\MT@lsfont/1000\relax \fi \MT@vinfo{Tracking font `\MT@@font' by \number\MT@letterspace@ \space\on@line}% \let\MT@font\MT@lsfont \aftergroup \MT@set@lsfont \fi } \def\MT@set@lsfont{\MT@exp@two@c\let\font@name\MT@lsfont} \DeclareRobustCommand\lslig{\@firstofone} \def\MT@lslig#1{% \MT@get@ls@basefont \kern\MT@lskern{\font@name #1}\kern\MT@lskern } \def\MT@get@ls@basefont{% \ifcase\pdfmatch{^select font (.*)[+-][0-9]*ls( at .*)?$} {\expandafter\meaning\font@name}\relax \else \global\expandafter\font\font@name \expandafter\strip@prefix\pdflastmatch1 \expandafter\strip@prefix\pdflastmatch2\relax \fi } }{ \let\MT@tracking\relax \DeclareRobustCommand\lsstyle{% \MT@warning{Letterspacing only works with pdftex version 1.40\MessageBreak or newer. You might want to use the `soul' package\MessageBreak instead}% \MT@glet\lsstyle\relax } } \DeclareRobustCommand\textls{% \hmode@bgroup \@ifstar{\let\MT@ls@adjust\MT@ls@adjust@\MT@textls}% {\let\MT@ls@adjust\relax \MT@textls}% } \newcommand\MT@textls[2][]{% \MT@ifempty{#1}% {\let\MT@letterspace@\@undefined}% {\KV@@sp@def\MT@letterspace@{#1}% \MT@ls@too@large\MT@letterspace@}% \lsstyle #2% \MT@ls@adjust \egroup } \def\MT@ls@too@large#1{% \ifnum#1>\MT@tr@max \MT@warning{Maximum for option `letterspace' is \number\MT@tr@max}% \let#1\MT@tr@max \else \ifnum#1<\MT@tr@min \MT@warning{Minimum for option `letterspace' is \number\MT@tr@min}% \let#1\MT@tr@min \fi \fi } \newdimen\MT@lskern \let\MT@ls@adjust\relax \def\MT@ls@adjust@{\kern-\MT@lskern} \MT@requires@pdftex5{ \def\MT@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}% }% \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@normal@catcodes{% \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@begin@catcodes{% \begingroup \MT@normal@catcodes \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 (no list)}% \else \MT@ifstreq\MT@feat{tr}\relax{% \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{% \expandafter\def\expandafter\MT@char\expandafter {\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{/\CHAR}/@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}% } \@ifpackageloaded{CJK}{ \@ifpackagelater{CJK}{2006/10/17} {\def\MT@orig@pickupfont{\CJK@ifundefined\CJK@plane}} % 4.7.0 {\def\MT@orig@pickupfont{\@ifundefined{CJK@plane}}} \g@addto@macro\MT@orig@pickupfont{% {\expandafter\ifx\font@name\relax\define@newfont\fi}% {\expandafter\ifx\csname\curr@fontshape/\f@size/\CJK@plane\endcsname\relax \define@newfont\else\xdef\font@name {\csname \curr@fontshape/\f@size/\CJK@plane\endcsname}\fi}} }{ \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@setupfont \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 \@nameuse{MT@abbr@#1} set `\MT@curr@set@name'}% \global\MT@let@nc{MT@#1list@size@\MT@curr@set@name}\@empty }% \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,}% }% \expandafter\g@addto@macro\expandafter\MT@font@sets \csname MT@#2list@#1@\MT@curr@set@name\endcsname }% } \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 } \let\MT@font@sets\@empty \def\MT@fix@font@set#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,}% }% \expandafter\g@addto@macro\expandafter\MT@font@sets \csname MT@#1list@font@\MT@curr@set@name\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@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\DeclareMicrotypeBabelHook#1#2{% \MT@map@clist@n{#1}{% \KV@@sp@def\@tempa{##1}% \MT@gdef@n{MT@babel@\@tempa}{#2}% }% } \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\SetTracking{% \MT@begin@catcodes \MT@SetTracking } \newcommand*\MT@SetTracking[3][]{% \let\MT@extra@context\@empty \MT@set@named@keys{MT@tr@c}{#1}% \def\MT@permutelist{tr@c}% \setkeys{MT@cfg}{#2}% \MT@permute \MT@gdef@n{MT@tr@c@\MT@tr@c@name}{#3}% \MT@end@catcodes } \def\SetExtraSpacing{% \MT@begin@catcodes \MT@SetExtraSpacing } \newcommand*\MT@SetExtraSpacing[3][]{% \let\MT@extra@context\@empty \MT@set@named@keys{MT@sp@c}{#1}% \def\MT@permutelist{sp@c}% \setkeys{MT@cfg}{#2}% \MT@permute \MT@gdef@n{MT@sp@c@\MT@sp@c@name}{#3}% \MT@end@catcodes } \def\SetExtraKerning{% \MT@begin@catcodes \MT@SetExtraKerning } \newcommand*\MT@SetExtraKerning[3][]{% \let\MT@extra@context\@empty \MT@set@named@keys{MT@kn@c}{#1}% \def\MT@permutelist{kn@c}% \setkeys{MT@cfg}{#2}% \MT@permute \MT@gdef@n{MT@kn@c@\MT@kn@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 \@nameuse{MT@abbr@#1} 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{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}% }% }% } \define@key{MT@tr@c}{unit}[1em]{% \global\MT@let@nc{MT@tr@c@\MT@curr@set@name @unit}\@empty \def\@tempa{#1}% \MT@ifdimen\@tempa{% \global\MT@let@nc{MT@tr@c@\MT@curr@set@name @unit}\@tempa }{% \MT@warning{`\@tempa' is not a dimension.\MessageBreak Ignoring it and setting values relative to\MessageBreak 1em}% \MT@gdef@n{MT@tr@c@\MT@curr@set@name @unit}{1em}% }% } \def\MT@define@key@unit#1{% \define@key{MT@#1@c}{unit}[space]{% \global\MT@let@nc{MT@#1@c@\MT@curr@set@name @unit}\@empty \def\@tempa{##1}% \MT@ifstreq\@tempa{character}\relax{% \global\MT@let@nc{MT@#1@c@\MT@curr@set@name @unit}\m@ne \MT@ifstreq\@tempa{space}\relax{% \MT@ifdimen\@tempa{% \global\MT@let@nc{MT@#1@c@\MT@curr@set@name @unit}\@tempa }{% \MT@warning{`\@tempa' is not a dimension.\MessageBreak Ignoring it and setting values relative to\MessageBreak width of space}% }% }% }% }% } \MT@define@key@unit{sp} \MT@define@key@unit{kn} \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@map@tlist@n{{encoding}{family}{series}{shape}}\MT@permute@reset \MT@glet\MT@tempsize\@undefined } \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#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@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@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@{spacing} \MT@define@option@{kerning} \MT@define@option@{tracking} \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}{babel}}\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}{letterspace}}\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{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}}% } \def\MT@check@active@set#1{% \MT@ifdefined@n@TF{MT@#1@setname}{% \MT@info@nl{Using \@nameuse{MT@abbr@#1} set `\@nameuse{MT@#1@setname}'}% }{% \global\MT@let@nn{MT@#1@setname}{MT@default@#1@set}% \MT@info@nl{Using default \@nameuse{MT@abbr@#1} set `\@nameuse{MT@#1@setname}'}% } } \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 recognised.\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 \MT@requires@pdftex6{ \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{% \@tempcnta=\@ne \MT@info{Enabling #1}% }% }{% \MT@ifstreq\MT@val{false}{% \@tempcnta=\z@ \MT@info{Disabling #1}% }{% \MT@warning{% Value `\MT@val' for key `#1' not recognised.\MessageBreak Use either `true' or `false'}% }% }% \ifnum\@tempcnta>\m@ne #2\relax \fi }% }% }% } \MT@define@optionX@{tracking}{\ifnum\@tempcnta=\z@ \MT@trackingfalse\else\MT@trackingtrue\fi} \MT@define@optionX@{spacing}{\pdfadjustinterwordglue\@tempcnta} \MT@define@optionX@{kerning}{\pdfprependkern\@tempcnta \pdfappendkern \@tempcnta} }{ \define@key{MTX}{tracking}[true]{\MT@warning{Ignoring tracking setup}} \define@key{MTX}{kerning}[true]{\MT@warning{Ignoring kerning setup}} \define@key{MTX}{spacing}[true]{\MT@warning{Ignoring spacing setup}} } \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\MT@temp\@empty \MT@map@clist@c\@classoptionslist{% \def\CurrentOption{##1}% \MT@ifdefined@n@T{KV@#1@\CurrentOption}{% \edef\MT@temp{\MT@temp,\CurrentOption,}% \@expandtwoargs\@removeelement\CurrentOption \@unusedoptionlist\@unusedoptionlist }% }% \edef\MT@temp{% \noexpand\setkeys{#1}{% \MT@temp\@ptionlist{\@currname.\@currext}% }% }% \MT@temp \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 \MT@trackingfalse \MT@spacingfalse \MT@kerningfalse \MT@babelfalse \let\MT@setupfont\relax \def\DeclareMicrotypeSet#1#{\@gobbletwo} \renewcommand*\UseMicrotypeSet[2][]{} \renewcommand*\SetProtrusion[3][]{} \renewcommand*\SetExpansion[3][]{} \renewcommand*\SetTracking[3][]{} \renewcommand*\SetExtraSpacing[3][]{} \renewcommand*\SetExtraKerning[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}% \MT@map@tlist@c\MT@font@sets\MT@fix@font@set \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@check@active@set{pr} \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@check@active@set{ex} \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 } \MT@requires@pdftex6{ \MT@addto@setup{% \ifMT@tracking \edef\MT@active@features{\MT@active@features,tr} \MT@info@nl{Tracking enabled} \MT@check@active@set{tr} \else \let\MT@tracking\relax \MT@info@nl{No tracking} \fi \ifMT@spacing \edef\MT@active@features{\MT@active@features,sp} \pdfadjustinterwordglue\@ne \MT@info@nl{Adjustment of interword spacing enabled} \MT@check@active@set{sp} \else \let\MT@spacing\relax \MT@info@nl{No adjustment of interword spacing} \fi \ifMT@kerning \edef\MT@active@features{\MT@active@features,kn} \pdfprependkern\@ne \pdfappendkern\@ne \MT@info@nl{Adjustment of character kerning enabled} \MT@check@active@set{kn} \else \let\MT@kerning\relax \MT@info@nl{No adjustment of character kerning} \fi \ifnum\MT@letterspace=\m@ne \let\MT@letterspace\MT@letterspace@default \else \MT@ls@too@large\MT@letterspace \fi } }{ \MT@addto@setup{% \ifMT@tracking \MT@warning@nl{Tracking only works with pdftex version 1.40\MessageBreak or newer. Switching it off}% \else \MT@info@nl{No tracking (pdftex too old)} \fi \MT@trackingfalse \let\MT@tracking\relax \ifMT@spacing \MT@warning@nl{Adjustment of interword spacing only works with\MessageBreak pdftex version 1.40 or newer. Switching it off}% \else \MT@info@nl{No adjustment of interword spacing (pdftex too old)} \fi \MT@spacingfalse \let\MT@spacing\relax \ifMT@kerning \MT@warning@nl{Character kerning only works with\MessageBreak pdftex version 1.40 or newer. Switching it off}% \else \MT@info@nl{No adjustment of character kerning (pdftex too old)} \fi \MT@kerningfalse \let\MT@kerning\relax } } \MT@requires@pdftex6{ \AtBeginDocument{% \ifMT@spacing \ifMT@babel \else \ifnum\sfcode`\. > 1500 \MT@ifstreq\MT@sp@context{nonfrench}\relax{% \MT@warning@nl{% \string\nonfrenchspacing\space is active. Adjustment of\MessageBreak interword spacing will disable it. You might want\MessageBreak to add `\@backslashchar\MT@MT context{spacing=nonfrench}'\MessageBreak to your preamble}% }% \fi \fi \fi } }\relax \MT@requires@pdftex5{ \MT@addto@setup{% \ifMT@noligatures \else \let\MT@noligatures\relax \fi } }\relax \MT@addto@setup{% \ifx\MT@active@features\@empty \else \edef\MT@active@features{\expandafter\@gobble\MT@active@features} \fi \MT@documenttrue } \def\MT@set@babel@context#1{% \MT@ifdefined@n@TF{MT@babel@#1}{% \MT@vinfo{*** Changing to language context `#1'\MessageBreak\on@line}% \expandafter\MT@exp@one@n\expandafter\microtypecontext \csname MT@babel@#1\endcsname }{% \microtypecontext{protrusion=,expansion=,spacing=,kerning=}% }% } \@ifpackageloaded{babel}{ \def\MT@shorthandoff#1#2{% \MT@info@nl{Switching off #1 babel's active characters}% \shorthandoff{#2}} }{ \def\MT@shorthandoff#1#2{% \MT@error{You must load the `babel' package before microtype} {Otherwise, I cannot switch off the active characters for #1 babel.}} } \MT@addto@setup{% \ifMT@babel \@ifpackageloaded{babel}{% \MT@info@nl{Redefining babel's language switching commands} \let\MT@orig@select@language\select@language \def\select@language#1{% \MT@orig@select@language{#1}% \MT@set@babel@context{#1}% } \let\MT@orig@foreign@language\foreign@language \def\foreign@language#1{% \MT@orig@foreign@language{#1}% \MT@set@babel@context{#1}% } \ifMT@kerning \MT@if@false \MT@with@babel@and{french} \MT@if@true \MT@with@babel@and{frenchb} \MT@if@true \MT@with@babel@and{francais}\MT@if@true \MT@with@babel@and{acadian} \MT@if@true \MT@with@babel@and{canadien}\MT@if@true \ifMT@if@\MT@shorthandoff{French}{;:!?}\fi \MT@with@babel@and{turkish}{\MT@shorthandoff{Turkish}{:!=}} \fi \MT@set@babel@context\languagename }{% \MT@warning@nl{You did not load the babel package.\MessageBreak The `babel' option won't have any effect} } \fi } \MT@addto@setup\fi \AtBeginDocument\selectfont \edef\MT@curr@file{\jobname.tex} \endinput %% %% End of file `microtype.sty'.
Close