summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/microtype/microtype.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/microtype/microtype.sty')
-rw-r--r--Master/texmf-dist/tex/latex/microtype/microtype.sty2123
1 files changed, 1084 insertions, 1039 deletions
diff --git a/Master/texmf-dist/tex/latex/microtype/microtype.sty b/Master/texmf-dist/tex/latex/microtype/microtype.sty
index 79c72384491..0780299e6e0 100644
--- a/Master/texmf-dist/tex/latex/microtype/microtype.sty
+++ b/Master/texmf-dist/tex/latex/microtype/microtype.sty
@@ -9,9 +9,9 @@
%% -----------------------------------------------------------------------
%% The `microtype' package
%% An interface to the micro-typographic extensions of pdfTeX
-%% Copyright (c) 2004, 2005 R Schlicht <w.m.l@gmx.net>
+%% Copyright (c) 2004--2006 R Schlicht <w.m.l@gmx.net>
%%
-%% This work may be distributed and/or modified under the conditions of
+%% 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
@@ -25,8 +25,9 @@
%% -----------------------------------------------------------------------
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{microtype}
- [2005/10/28 v1.9 Micro-typography with pdfTeX (RS)]
+\ProvidesPackage{microtype}[2006/05/05
+ v1.9d
+ Micro-typography with pdfTeX (RS)]
\newcommand*\DeclareMicrotypeSet[3][]{}
\newcommand*\UseMicrotypeSet[2][]{}
\newcommand*\DeclareMicrotypeSetDefault[2][]{}
@@ -38,39 +39,29 @@
\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{}
+\def\DeclareMicrotypeSet#1#{\@gobbletwo}
\@onlypreamble{\DeclareMicrotypeSet}
\@onlypreamble{\UseMicrotypeSet}
+\@onlypreamble{\DeclareMicrotypeSetDefault}
\@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}}
+ \newcommand*#1{\MT@warning{%
+ \string#1 is deprecated. Please use\MessageBreak
+ \string#2 instead}%
+ \let #1#2#2}}
+\MT@old@cmd\DeclareMicroTypeSet\DeclareMicrotypeSet
+\MT@old@cmd\UseMicroTypeSet\UseMicrotypeSet
+\MT@old@cmd\DeclareMicroTypeAlias\DeclareMicrotypeAlias
+\MT@old@cmd\LoadMicroTypeFile\LoadMicrotypeFile
+\def\MT@MT{microtype}
+\def\MT@error{\PackageError{\MT@MT}}
+\def\MT@warning{\PackageWarning{\MT@MT}}
\def\MT@warning@nl#1{\MT@warning{#1\@gobble}}
\def\MT@warn@err#1{\MT@error{#1}{%
- This error message appears because you loaded the `microtype'\MessageBreak
+ This error message appears because you loaded the `\MT@MT'\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}}
+ in \MT@MT.(pdf,dvi) to find out what went wrong.}}
+\def\MT@info{\PackageInfo{\MT@MT}}
\def\MT@info@nl#1{\MT@info{#1\@gobble}}
\let\MT@vinfo\@gobble
\let\MT@pdftex@no\z@
@@ -103,20 +94,18 @@
\fi
\fi
\ifnum\MT@pdftex@no<\tw@
- \AtEndOfPackage{\let\@unprocessedoptions\relax}%
+ \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
+ `\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}
- \expandafter
- \endinput
-\fi
+\endinput\fi
\def\MT@catcodes{%
\catcode`\^7 %
\@makeother\-%
@@ -127,7 +116,7 @@
\@makeother\`%
\@makeother\'%
\@makeother\"%
- \@makeother\|%
+ \@makeother\!%
}
\def\MT@restore@catcodes#1{%
\ifx\relax#1\else
@@ -135,20 +124,18 @@
\expandafter\MT@restore@catcodes
\fi
}
-\edef\MT@restore@catcodes{%
- \MT@restore@catcodes\^\-\=\*\,\/\`\'\"\|\relax
-}
+\edef\MT@restore@catcodes{\MT@restore@catcodes\^\-\=\*\,\/\`\'\"\!\relax}
\MT@catcodes
\AtEndOfPackage{\MT@restore@catcodes}
\RequirePackage{keyval}[1997/11/10]
-\newtoks\mt@toks
+\newtoks\MT@toks
\newif\ifMT@protrusion
\newif\ifMT@expansion
\newif\ifMT@auto
\newif\ifMT@selected
\newif\ifMT@noligatures
-\newif\ifMT@DVIoutput
\newif\ifMT@draft
+\newif\ifMT@document
\let\MT@pr@level\tw@
\let\MT@pr@factor\@m
\let\MT@pr@unit\@empty
@@ -165,94 +152,24 @@
\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
+\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@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
+\def\MT@requires@pdftex#1{%
+ \ifnum\MT@pdftex@no<#1\relax
+ \expandafter\@secondoftwo
+ \else
+ \expandafter\@firstoftwo
\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}
@@ -261,43 +178,79 @@ time will almost certainly lead to undesired results. Have your choice!}%
\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
+\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\@firstoftwo
+ \expandafter\@gobble
\fi
}
- \def\MT@ifdefined@n#1{%
- \begingroup\MT@exp@two@c\endgroup
- \ifx\csname #1\endcsname\relax
+ \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\@firstoftwo
+ \expandafter\@gobble
\fi
}
-}\else\MT@hop@fi{%
- \def\MT@ifdefined@c#1{%
- \ifdefined#1%
+ \def\MT@ifdefined@n@TF#1{%
+ \ifcsname#1\endcsname
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
}
- \def\MT@ifdefined@n#1{%
- \ifcsname#1\endcsname
+}{
+ \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
}
-}\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
@@ -309,51 +262,69 @@ time will almost certainly lead to undesired results. Have your choice!}%
\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
+\MT@requires@pdftex6{
+ \def\MT@ifint#1{%
+ \ifcase\pdfmatch{^[0-9]+ *$}{#1}\relax
+ \expandafter\@secondoftwo
\else
- \aftergroup\@firstoftwo
- \fi}%
-}
-\def\MT@ifgt#1#2{%
- \ifdim #1\p@ > #2\p@
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi
+ \expandafter\@firstoftwo
+ \fi
+ }
+}{
+ \def\MT@ifint#1{%
+ \if!\ifnum9<1#1!\else?\fi
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ }
}
-\def\MT@iflt#1#2{%
- \ifdim #1\p@ < #2\p@
- \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)? *$}{#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@ifeq#1#2{%
- \ifdim #1\p@ = #2\p@
+\def\MT@ifdim#1#2#3{%
+ \ifdim #1\p@ #2 #3\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
+\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
@@ -372,27 +343,21 @@ time will almost certainly lead to undesired results. Have your choice!}%
\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,%
+ \MT@map@clist@#1,\@nil,\@nnil
\fi
}
-\def\MT@map@clist@c#1{\expandafter\MT@map@clist@n\expandafter{#1}}
+\def\MT@map@clist@c#1{\MT@exp@one@n\MT@map@clist@n#1}
\def\MT@map@clist@#1,{%
\ifx\@nil#1%
- \MT@clist@break
- \else
- \MT@clist@function{#1}%
- \expandafter\MT@map@clist@
+ \expandafter\MT@clist@break
\fi
+ \MT@clist@function{#1}%
+ \MT@map@clist@
}
-\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
-}
+\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}%
@@ -403,24 +368,25 @@ time will almost certainly lead to undesired results. Have your choice!}%
\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
+ \def\x##1,#1,##2##3\@nnil{%
+ \ifx##2\@empty
+ \MT@inlist@false
+ \else
\MT@inlist@true
\fi
}%
- \expandafter\x#2,#1,\@nnil
+ \expandafter\x\expandafter,#2,#1,\@empty\@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
+\def\MT@rem@from@clist#1#2{%
+ \def\x##1,#1,##2##3\@nnil{%
+ \ifx##2\@empty\else
+ \ifx\\##1\\\global\let#2\@gobble
+ \else\xdef#2{\@gobble##1}\fi
+ \def\x####1,#1,####2####3\@nnil{\xdef#2{#2####1}}%
+ \x,##2##3,#1,\@nnil
\fi
}%
- \expandafter\x#2,#1,\@nnil
+ \expandafter\x\expandafter,#2,#1,\@empty\@nnil
}
\def\MT@in@tlist#1#2{%
\MT@inlist@false
@@ -438,17 +404,15 @@ time will almost certainly lead to undesired results. Have your choice!}%
\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{\expandafter\MT@in@rlist@@#1}
\def\MT@in@rlist@@#1#2#3{%
- \MT@ifeq{#2}\m@ne{%
- \MT@ifeq{#1}\MT@size
+ \MT@ifdim{#2}=\m@ne{%
+ \MT@ifdim{#1}=\MT@size
\MT@inlist@true
\relax
}{%
- \MT@iflt\MT@size{#1}\relax{%
- \MT@iflt\MT@size{#2}%
+ \MT@ifdim\MT@size<{#1}\relax{%
+ \MT@ifdim\MT@size<{#2}%
\MT@inlist@true
\relax
}%
@@ -460,31 +424,27 @@ time will almost certainly lead to undesired results. Have your choice!}%
}
\def\MT@loop#1\MT@repeat{%
\def\MT@iterate{#1\relax\expandafter\MT@iterate\fi}%
- \MT@iterate
- \let\MT@iterate\relax
+ \MT@iterate \let\MT@iterate\relax
}
\let\MT@repeat\fi
-\def\MT@while@num#1#2{\MT@loop #2\ifnum#1\MT@repeat}
+\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
-\ifcase\MT@etex@no
+\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}%
}
-\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
+}
+\MT@requires@etex{
\def\MT@scale#1#2#3{%
\ifnum #3 = \z@
#1=\numexpr #1 * #2\relax
@@ -492,8 +452,14 @@ time will almost certainly lead to undesired results. Have your choice!}%
#1=\numexpr #1 * #2 / #3\relax
\fi
}
-\fi
-\def\MT@remove@spaces#1{\expandafter\KV@@sp@def\expandafter#1\expandafter{#1}}
+}{
+ \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}
@@ -504,6 +470,118 @@ time will almost certainly lead to undesired results. Have your choice!}%
\def\MT@abbr@nl{noligatures}
\def\MT@rbba@protrusion{pr}
\def\MT@rbba@expansion{ex}
+\def\MT@features{pr,ex%
+}
+\def\MT@features@long{protrusion,expansion%
+}
+\def\MT@is@feature#1{%
+ \MT@exp@one@n\MT@in@clist\@tempa\MT@features@long
+ \ifMT@inlist@
+ \expandafter\@firstofone
+ \else
+ \MT@error{`\@tempa' is not an available micro-typographic\MessageBreak
+ feature. Ignoring #1}{Available features are: `\MT@features@long'.}%
+ \expandafter\@gobble
+ \fi
+}
+\let\MT@setup@\@empty
+\def\MT@addto@setup#1{%
+ \begingroup
+ \MT@toks\expandafter{\MT@setup@#1}%
+ \xdef\MT@setup@{\the\MT@toks}%
+ \endgroup
+}
+\AtBeginDocument{\MT@setup@}
+\def\MT@with@package#1{\@ifpackageloaded{#1}\@firstofone\@gobble}
+\def\MT@pdfcprot@error{%
+ \MT@error{Detected the `pdfcprot' package!\MessageBreak
+ `\MT@MT' and `pdfcprot' may not be used together}{%
+The `pdfcprot' package provides an interface to character protrusion.\MessageBreak
+So does the `\MT@MT' package. Using both packages at the same\MessageBreak
+time will almost certainly lead to undesired results. Have your choice!}%
+ \let\MT@pdfcprot@error\relax
+}
+\MT@with@package{pdfcprot}\MT@pdfcprot@error
+\def\MT@ledmac@setup{%
+ \ifMT@protrusion
+ \MT@requires@pdftex5{%
+ \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}%
+ }%
+ }{%
+ \MT@warning@nl{%
+ The pdftex version you are using does not allow\MessageBreak
+ character protrusion in paragraphs with line\MessageBreak
+ numbering by the `ledmac' package.\MessageBreak
+ Upgrade pdftex to version 1.30 or later}%
+ }%
+ \fi
+}
+\def\MT@restore@p@h{\chardef\%`\% \chardef\#`\# }
+\def\MT@setupfont@hook{%
+ \@ifpackagewith{babel}{spanish}{%
+ \MT@ifdefined@c@T\percentsign{\let\%\percentsign}%
+ }\relax
+ \MT@with@package{csquotes}{%
+ \@ifpackagelater{csquotes}{2005/05/11}\@disablequotes\relax
+ }%
+ \@ifpackageloaded{hyperref}\MT@restore@p@h{%
+ \MT@with@package{tex4ht}\MT@restore@p@h
+ }%
+}
+\MT@addto@setup{%
+ \MT@with@package{pdfcprot}\MT@pdfcprot@error
+ \MT@with@package{ledmac}\MT@ledmac@setup
+ \let\MT@setupfont@hook\@empty
+ \@ifpackagewith{babel}{spanish}{%
+ \g@addto@macro\MT@setupfont@hook{%
+ \MT@ifdefined@c@T\percentsign{\let\%\percentsign}}%
+ }\relax
+ \MT@with@package{csquotes}{%
+ \@ifpackagelater{csquotes}{2005/05/11}{%
+ \g@addto@macro\MT@setupfont@hook\@disablequotes
+ }{%
+ \MT@warning@nl{%
+ Should you receive warnings about unknown slot\MessageBreak
+ numbers, try upgrading the `csquotes' package}%
+ }%
+ }%
+ \@ifpackageloaded{hyperref}{%
+ \g@addto@macro\MT@setupfont@hook\MT@restore@p@h
+ \pdfstringdefDisableCommands{%
+ \let\pickup@font\MT@orig@pickupfont
+ }%
+ }{%
+ \MT@with@package{tex4ht}{%
+ \g@addto@macro\MT@setupfont@hook\MT@restore@p@h
+ }%
+ }%
+ \MT@with@package{listings}{%
+ \g@addto@macro\MT@begin@catcodes{%
+ \MT@while@num{"30}{"3A}{\catcode\@tempcnta 12\relax}%
+ \MT@while@num{"41}{"5B}{\catcode\@tempcnta 11\relax}%
+ \MT@while@num{"61}{"7B}{\catcode\@tempcnta 11\relax}%
+ }%
+ \g@addto@macro\MT@setupfont@hook{%
+ \let\lst@ProcessLetter\@empty
+ }%
+ }%
+}
+\expandafter\ifx\the\font\nullfont\normalfont\fi
\def\MT@setupfont{%
\ifx\MT@vinfo\MT@info@nl
\MT@info{Setting up font `\MT@exp@string\MT@font'}\fi
@@ -523,7 +601,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
\def\MT@series{#3}%
\def\MT@shape{#4}%
\def\MT@size{#5}%
- \MT@ifdefined@n{MT@\MT@family @alias}%
+ \MT@ifdefined@n@TF{MT@\MT@family @alias}%
{\MT@let@cn\MT@familyalias{MT@\MT@family @alias}}%
{\let\MT@familyalias\@empty}%
}
@@ -532,7 +610,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
\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}%
+ \MT@ifdefined@n@TF{MT@checklist@##1}%
{\csname MT@checklist@##1\endcsname}%
{\MT@checklist@{##1}}%
{#1}%
@@ -549,36 +627,40 @@ time will almost certainly lead to undesired results. Have your choice!}%
}
\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
+ \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{MT@#1list@font@\@tempa}{%
- \MT@exp@two@n\MT@in@clist
- \MT@font{\csname MT@#1list@font@\@tempa\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{MT@#1list@family@\@tempa}{%
+ \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@
@@ -596,12 +678,12 @@ time will almost certainly lead to undesired results. Have your choice!}%
\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}{%
+ \MT@ifdefined@n@T
+ {MT@#1list@size@\@tempa}{%
\expandafter\MT@in@rlist
\csname MT@#1list@size@\@tempa\endcsname
\ifMT@inlist@
@@ -610,28 +692,25 @@ time will almost certainly lead to undesired results. Have your choice!}%
\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@reset@pr@codes
\MT@get@inh@list
- \MT@load@list{\MT@pr@c@name}%
- \edef\MT@curr@list@name{protrusion list `\MT@pr@c@name'}%
+ \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,%
- }\relax
+ }\MT@reset@pr@codes
}
\def\MT@set@all@pr#1#2{%
- \@tempcnta=\z@
- \MT@while@num{\@tempcnta < \@cclvi}{%
+ \MT@do@font{%
\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@}
@@ -675,15 +754,15 @@ time will almost certainly lead to undesired results. Have your choice!}%
\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 @}{%
+ \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
- }\relax
- }\relax
+ }%
+ }%
}
-\ifnum\MT@pdftex@no > \tw@
+\MT@requires@pdftex3{
\def\MT@scale@to@em{%
\@tempcntb=\MT@count\relax
\MT@scale\@tempcntb \@tempb \MT@dimen@six
@@ -691,19 +770,19 @@ time will almost certainly lead to undesired results. Have your choice!}%
\MT@scale@factor
\fi
}
- \ifcase\MT@etex@no
+ \MT@requires@etex{
\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
+ \MT@count=\fontcharwd\MT@font\MT@char\relax
+ \ifnum\MT@count=\z@ \MT@info@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
+ \setbox\z@=\hbox{\MT@font \char\MT@char}%
+ \MT@count=\wd\z@\relax
+ \ifnum\MT@count=\z@ \MT@info@missing@char \fi
}
- \fi
-\else
+ }
+}{
\def\MT@scale@to@em{%
\MT@count=\@tempb\relax
\ifnum\MT@count=\z@ \else
@@ -711,40 +790,46 @@ time will almost certainly lead to undesired results. Have your choice!}%
\fi
}
\def\MT@get@charwd{\MT@count=\MT@dimen@six}
-\fi
+}
\def\MT@get@font@dimen#1{%
- \MT@count=\number\fontdimen#1\MT@font
+ \ifnum\fontdimen#1\MT@font=\z@
+ \MT@warning@nl{Font \font@name does not specify its\MessageBreak
+ \@backslashchar fontdimen \number#1 (it's zero).\MessageBreak
+ You should use a different `unit' for \MT@curr@list@name}%
+ \else
+ \MT@count=\fontdimen#1\MT@font
+ \fi
}
-\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}%
+\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@exp@string\MT@font'. Ignoring protrusion settings\MessageBreak
+ for this character}%
}
-}\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}%
+}{
+ \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@exp@string\MT@font'.\MessageBreak
+ Ignoring protrusion settings for this character}%
}
-}\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
+ \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
- \@tempcnta=\csname MT@\MT@feat @min\endcsname
- \MT@warn@code@too@large
+ \expandafter\MT@warn@code@too@large\csname MT@\MT@feat @min\endcsname
\fi
\fi
}
-\def\MT@warn@code@too@large{%
+\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
@@ -752,12 +837,12 @@ time will almost certainly lead to undesired results. Have your choice!}%
\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
+ `\the\MT@toks' in \MT@curr@list@name.\MessageBreak
Setting it to the maximum of \number\@tempcnta}%
- \@tempcntb=\@tempcnta
+ \@tempcntb=#1\relax
}
\def\MT@get@opt{%
- \MT@ifdefined@n{MT@\MT@feat @c@\csname MT@\MT@feat @c@name\endcsname @factor}{%
+ \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
@@ -765,7 +850,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
}{%
\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@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
@@ -791,9 +876,11 @@ time will almost certainly lead to undesired results. Have your choice!}%
\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}{%
+ \MT@ifdefined@n@T{MT@\MT@feat @c@\csname MT@\MT@feat @c@name\endcsname @preset}{%
+ \MT@set@listname
\csname MT@preset@\MT@feat\endcsname
- }\relax
+ \MT@let@nc{MT@reset@\MT@feat @codes}\relax
+ }%
}
\def\MT@get@unit#1{%
\expandafter\MT@get@unit@#1 e!\@nil
@@ -809,7 +896,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
\else
\MT@vinfo{... : Setting \@nameuse{MT@abbr@\MT@feat} factors relative
to \the\@tempdima}%
- \MT@count=\number\@tempdima\relax
+ \MT@count=\@tempdima\relax
\fi
}
\def\MT@get@unit@#1e#2#3\@nil{%
@@ -833,10 +920,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
}
\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}%
+ \MT@warn@preset@towidth{pr}%
\let\MT@preset@aux\MT@preset@aux@factor
\else
\let\MT@preset@aux\MT@preset@aux@space
@@ -856,14 +940,20 @@ time will almost certainly lead to undesired results. Have your choice!}%
\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@load@list{\MT@ex@c@name}%
- \edef\MT@curr@list@name{expansion list `\MT@ex@c@name'}%
+ \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
@@ -887,22 +977,18 @@ time will almost certainly lead to undesired results. Have your choice!}%
}
\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
- }%
+ \MT@do@font{\efcode\MT@font\@tempcnta=#1\relax}%
}
\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
+\MT@requires@pdftex4{
\def\MT@reset@ef@codes{%
\ifnum\MT@ex@factor@=\@m \else
\MT@reset@ef@codes@
\fi
}
-\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
@@ -926,55 +1012,46 @@ time will almost certainly lead to undesired results. Have your choice!}%
\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 @}{%
+ \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
- }\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
+ \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@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@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@}%
+ \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@\csname MT@ex@c@name\endcsname @preset}{%
+ \MT@set@listname
+ \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}%
}{%
- \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
+ \MT@let@nn{MT@#1@}{MT@#1}%
}%
}
\def\MT@set@ex@heirs#1{%
@@ -985,14 +1062,12 @@ time will almost certainly lead to undesired results. Have your choice!}%
\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{%
+\MT@requires@pdftex5{
\def\MT@noligatures{%
- \csname ifMT@\MT@abbr@nl\endcsname
+ \ifMT@noligatures
\MT@dotrue
\MT@map@clist@n{font,encoding,family,series,shape,size}{%
- \MT@ifdefined@n{MT@checklist@##1}%
+ \MT@ifdefined@n@TF{MT@checklist@##1}%
{\csname MT@checklist@##1\endcsname}%
{\MT@checklist@{##1}}%
{nl}%
@@ -1005,7 +1080,9 @@ time will almost certainly lead to undesired results. Have your choice!}%
\MT@vinfo{... Disabling ligatures}%
\fi
}
-}\fi
+}{
+ \let\MT@noligatures\relax
+}
\def\MT@load@list#1{%
\edef\@tempa{#1}%
\MT@let@cn\@tempb{MT@\MT@feat @c@\@tempa load}%
@@ -1013,12 +1090,12 @@ time will almost certainly lead to undesired results. Have your choice!}%
\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@ifdefined@n@TF{MT@\MT@feat @c@\@tempb}{%
\MT@vinfo{... : First loading \@nameuse{MT@abbr@\MT@feat} list `\@tempb'}%
\begingroup
- \MT@load@list{\@tempb}%
+ \MT@load@list\@tempb
\endgroup
- \edef\MT@curr@list@name{\@nameuse{MT@abbr@\MT@feat} list `\@tempb'}%
+ \edef\MT@curr@list@name{\@nameuse{MT@abbr@\MT@feat} list\MessageBreak`\@tempb'}%
\MT@let@cn\@tempc{MT@\MT@feat @c@\@tempb}%
\expandafter\csname MT@\MT@feat @do\expandafter\endcsname\@tempc,\relax,%
}{%
@@ -1033,24 +1110,26 @@ time will almost certainly lead to undesired results. Have your choice!}%
\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
- }%
+ \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
}
@@ -1069,7 +1148,6 @@ time will almost certainly lead to undesired results. Have your choice!}%
\MT@map@tlist@n
{\!\"\$\&\'\(\)\*\+\,\-\.\/\:\;\<\=\>\?\[\]\_\`\|\~}%
\@makeother
- \def\MT@remove@spaces##1{}%
\let\KV@@sp@def\def
}
\let\MT@end@catcodes\endgroup
@@ -1105,7 +1183,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
/\ifnum#3=\@ne \MT@shape\fi
/\ifnum#4=\@ne *\fi
\MT@context}%
- \MT@ifdefined@n{MT@\@tempb @\@tempa}{%
+ \MT@ifdefined@n@TF{MT@\@tempb @\@tempa}{%
\MT@next@listname@#4%
}{%
\ifnum#1=\@ne
@@ -1116,9 +1194,9 @@ time will almost certainly lead to undesired results. Have your choice!}%
/\ifnum#3=\@ne \MT@shape\fi
/\ifnum#4=\@ne *\fi
\MT@context}%
- \MT@ifdefined@n{MT@\@tempb @\@tempa}{%
+ \MT@ifdefined@n@T{MT@\@tempb @\@tempa}{%
\MT@next@listname@#4%
- }\relax
+ }%
\fi
\fi
}%
@@ -1134,9 +1212,10 @@ time will almost certainly lead to undesired results. Have your choice!}%
\fi
}
\def\MT@if@list@exists{%
- \expandafter\let\expandafter\MT@context\csname MT@\MT@feat @context\endcsname
+ \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\MT@listname{%
+ \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@ex@c@name')}%
@@ -1161,12 +1240,12 @@ time will almost certainly lead to undesired results. Have your choice!}%
\def\MT@get@inh@list{%
\let\MT@context\@empty
\MT@get@listname{\MT@feat @inh}%
- \MT@ifdefined@c\MT@listname{%
+ \MT@ifdefined@c@TF\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}%
+ \edef\MT@curr@list@name{inheritance list\MessageBreak`\MT@inh@name'}%
\expandafter\MT@inh@do\@tempc,\relax,%
\global\MT@let@nc{MT@\MT@feat @inh@\csname MT@\MT@feat @inh@name\endcsname}\@empty
\fi
@@ -1176,49 +1255,45 @@ time will almost certainly lead to undesired results. Have your choice!}%
}
\def\MT@get@slot{%
\escapechar`\\
- \let\Mt@char\m@ne
+ \let\MT@char@\m@ne
\MT@noresttrue
- \mt@toks=\expandafter\expandafter\expandafter{\expandafter\string\@tempa}%
- \edef\MT@char{\expandafter\meaning\@tempa}%
+ \MT@toks=\expandafter{\@tempa}%
\expandafter\MT@is@letter\@tempa\relax\relax
- \ifnum\Mt@char < \z@
+ \ifnum\MT@char@ < \z@
\MT@exp@two@c\MT@is@active\string\@tempa\@nil
- \MT@ifdefined@n{\MT@encoding\MT@detokenize\@tempa}%
+ \MT@ifdefined@n@TF{\MT@encoding\MT@detokenize@c\@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
+ {\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
+ \let\MT@char\MT@char@
\ifnum\MT@char < \z@
\MT@warn@unknown
\else
\ifMT@norest \else
- \MT@warn@unknown@i
+ \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@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}%
+ \edef\MT@char@{\number`#1}%
\ifx\\#2\\%
\else
\MT@norestfalse
\fi
\else
- \ifcat 1\noexpand#1\relax
- \edef\Mt@char{\number`#1}%
+ \ifcat !\noexpand#1\relax
+ \edef\MT@char@{\number`#1}%
\ifx\\#2\\%
- \ifnum\Mt@char>127 \Mt@warn@ascii \fi
+ \ifnum\MT@char@>127 \MT@warn@ascii \fi
\else
\MT@norestfalse
\expandafter\MT@is@number#1#2\relax\relax
@@ -1231,50 +1306,45 @@ time will almost certainly lead to undesired results. Have your choice!}%
\ifx\relax#2\relax \else
\MT@noresttrue
\if#1"\relax
- \def\x{\uppercase{\edef\Mt@char{\number#1#2#3}}}\x
+ \def\x{\uppercase{\edef\MT@char@{\number#1#2#3}}}\x
\else
\if#1'\relax
- \def\Mt@char{\number#1#2#3}%
+ \def\MT@char@{\number#1#2#3}%
\else
- \MT@ifnumber{#1#2#3}{%
- \def\Mt@char{\number#1#2#3}%
+ \MT@ifint{#1#2#3}{%
+ \def\MT@char@{\number#1#2#3}%
}\MT@norestfalse
\fi
\fi
- \ifnum\Mt@char > \@cclv
+ \ifnum\MT@char@ > \@cclv
\MT@warn@number@too@large{\noexpand#1\noexpand#2\noexpand#3}%
- \let\Mt@char\m@ne
+ \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
+ \ifnum\catcode`#1 = \active
+ \begingroup
+ \set@display@protect
+ \let\IeC\@firstofone
+ \let\@inpenc@undefined@\MT@undefined@char
+ \def\UTFviii@defined##1{\ifx ##1\relax
+ \MT@undefined@char{utf8}\else\expandafter##1\fi}%
+ \edef\x{%
+ \def\noexpand\@tempa{\@tempa}%
+ \MT@toks={\the\MT@toks\space(= \@tempa)}%
+ }%
+ \expandafter\endgroup\x
\fi
}
+\def\MT@undefined@char#1{undefined in input encoding ``#1''}
\def\MT@is@symbol{%
- \edef\@tempa{\expandafter
- \csname\expandafter
- \MT@encoding\expandafter
- \string\@tempa
- \endcsname}%
+ \edef\MT@char{\csname\MT@encoding\MT@detokenize@c\@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
+ \meaning\expandafter\MT@char\MT@charstring\relax\relax\relax
+ \ifnum\MT@char@ < \z@
+ \expandafter\MT@is@letter\MT@char\relax\relax
\fi
}
\begingroup
@@ -1286,10 +1356,10 @@ time will almost certainly lead to undesired results. Have your choice!}%
/def/MT@is@char##1\CHAR"##2##3##4/relax{%
/ifx/relax##1/relax
/if##3\/relax
- /edef/Mt@char{/number"##2}%
+ /edef/MT@char@{/number"##2}%
/MT@testrest/MT@charstring{##3##4}%
/else
- /edef/Mt@char{/number"##2##3}%
+ /edef/MT@char@{/number"##2##3}%
/MT@testrest/MT@charstring{##4}%
/fi
/fi
@@ -1299,24 +1369,21 @@ time will almost certainly lead to undesired results. Have your choice!}%
/expandafter/endgroup/x
\def\MT@is@composite#1#2\relax{%
\ifx\\#2\\\else
- \edef\@tempa{\expandafter
+ \edef\MT@char{\expandafter
\csname\expandafter
\string\csname\MT@encoding\endcsname
- \string#1-%
- \string#2%
+ \MT@detokenize@n{#1}-%
+ \MT@detokenize@n{#2}%
\endcsname}%
- \expandafter\MT@is@letter\@tempa\relax\relax
+ \expandafter\MT@is@letter\MT@char\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)
+\def\MT@set@listname{%
+ \edef\MT@curr@list@name{\@nameuse{MT@abbr@\MT@feat} list\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}%
@@ -1326,79 +1393,148 @@ time will almost certainly lead to undesired results. Have your choice!}%
Number #1 in encoding `\MT@encoding' too large!\MessageBreak
Ignoring it in \MT@curr@list@name}%
}
-\def\MT@warn@unknown@i{%
+\def\MT@warn@rest{%
\MT@warning@nl{%
- Unknown slot number of character `\the\mt@toks' in\MessageBreak
- font encoding `\MT@encoding'. Make sure it's a single\MessageBreak
+ Unknown slot number of character\MessageBreak`\the\MT@toks'\MessageBreak
+ in 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}%
+ Unknown slot number of character\MessageBreak`\the\MT@toks'\MessageBreak
+ in font encoding `\MT@encoding' in \MT@curr@list@name}%
}
+\let\MT@font@list\@empty
\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)%
+\MT@addto@setup{%
+ \g@addto@macro\do@subst@correction{%
+ \xdef\MT@font{\csname \curr@fontshape/\f@size\endcsname}%
}
-\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,}%
+ \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
+ \MT@register@subst@font
+ \fi
\fi
- \fi
+ \MT@check@font
+ \ifMT@inlist@ \else
+ \MT@setupfont
+ \MT@register@font
+ \fi
+ \endgroup
+ \global\let\MT@font\@empty
+ }
+ \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{%
+ \@tempswatrue
+ \MT@map@clist@c\MT@active@features{%
\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
+ \csname MT@##1@\csname MT@##1@context\endcsname font@list\endcsname
+ \ifMT@inlist@
+ \MT@let@nc{MT@\@nameuse{MT@abbr@##1}}\relax
+ \else
+ \@tempswafalse
\fi
- \endgroup
- \global\let\MT@font\@empty
+ }%
+ \if@tempswa \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{#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 <w.m.l@gmx.net>.
- }%
- \fi
+ \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
+ \setkeys{MTC}{#1}%
+ \selectfont
+ \aftergroup\MT@reset@context
+ }%
+}
+\def\MT@reset@context{%
+ \MT@vinfo{Resetting contexts on line \the\inputlineno
+ }%
+ \selectfont
+}
+\def\MT@setup@contexts{%
+ \MT@map@clist@c\MT@active@features
+ {\global\MT@let@nc{MT@##1@@font@list}\MT@font@list}%
+ \global\let\MT@check@font\MT@check@font@cx
+ \global\let\MT@register@font\MT@register@font@cx
+ \global\let\MT@register@subst@font\MT@register@subst@font@cx
+ \global\let\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'}%
+ \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
@@ -1416,23 +1552,25 @@ In either case, please send a report to <w.m.l@gmx.net>.
\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\MT@features{{\MT@declare@sets{##1}{#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}}}%
- }%
+ \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{MT@#1@set@@\MT@curr@set@name}{%
+ \MT@ifdefined@n@T{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}%
}
@@ -1445,34 +1583,26 @@ In either case, please send a report to <w.m.l@gmx.net>.
\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,}%
+ \MT@exp@two@n\g@addto@macro
+ {\csname MT@#2list@#1@\MT@curr@set@name\expandafter\endcsname}%
+ {\MT@val,}%
}%
+ \edef\x{%
+ \expandafter\noexpand\expandafter\MT@fix@font@spec
+ \expandafter\noexpand\csname MT@#2list@#1@\MT@curr@set@name\endcsname
+ }%
+ \MT@exp@one@n\MT@addto@setup\x
}%
}
\def\MT@get@highlevel#1{%
\expandafter\MT@test@ast\MT@val*\@nil{%
\MT@ifempty\@tempa{\def\@tempa{#1}}\relax
- \edef\MT@val{\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
+ \edef\MT@val{\expandafter\noexpand\csname \@tempa default\endcsname}%
}%
}
\def\MT@test@ast#1*#2\@nil{%
@@ -1481,17 +1611,9 @@ In either case, please send a report to <w.m.l@gmx.net>.
\@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@fix@font@spec#1{%
+ \xdef#1{#1}%
+ \global\MT@make@string#1%
}
\def\MT@define@set@key@size#1{%
\define@key{MT@#1@set}{size}[]{%
@@ -1500,8 +1622,8 @@ In either case, please send a report to <w.m.l@gmx.net>.
\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}}%
+ \csname MT@#1list@size@\MT@curr@set@name\endcsname
+ {{{\MT@lower}{\MT@upper}\relax}}%
\fi
}%
}%
@@ -1531,7 +1653,7 @@ In either case, please send a report to <w.m.l@gmx.net>.
\def\MT@val{#2}%
\MT@get@size
\ifx\MT@val\relax \else
- \MT@ifgt\MT@lower\MT@val{%
+ \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}%
@@ -1540,7 +1662,7 @@ In either case, please send a report to <w.m.l@gmx.net>.
}{%
\edef\MT@upper{\MT@val}%
}%
- \MT@ifeq\MT@lower\MT@upper{%
+ \MT@ifdim\MT@lower=\MT@upper{%
\def\MT@upper{-1}%
}\relax
\fi
@@ -1571,13 +1693,19 @@ In either case, please send a report to <w.m.l@gmx.net>.
}
\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
- \expandafter\MT@xadd
- \csname MT@#1list@font@\MT@curr@set@name\endcsname
- {\csname\MT@val\endcsname,}%
+ \MT@exp@two@n\g@addto@macro
+ {\csname MT@#1list@font@\MT@curr@set@name\expandafter\endcsname}%
+ {\MT@val,}%
}%
+ \edef\x{%
+ \expandafter\noexpand\expandafter\MT@fix@font@spec
+ \expandafter\noexpand\csname MT@#1list@font@\MT@curr@set@name\endcsname
+ }%
+ \MT@exp@one@n\MT@addto@setup\x
}%
}
\def\MT@get@font#1/#2/#3/#4/#5/#6\@nil{%
@@ -1589,51 +1717,55 @@ In either case, please send a report to <w.m.l@gmx.net>.
\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}%
+ \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
- \edef\MT@val{\expandafter\@gobble\@tempb/\MT@val}%
+ \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@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@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@define@set@keys{pr}
-\MT@define@set@keys{ex}
+\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@use@set{pr}{#2}%
- \MT@use@set{ex}{#2}%
+ \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@exp@one@n\MT@use@set{\csname MT@rbba@\@tempa\endcsname}{#2}}}%
+ \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{MT@#1@set@@\@tempa}{%
+ \MT@ifdefined@n@TF{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{%
+ \MT@ifdefined@n@TF{MT@#1@setname}\relax{%
\global\MT@edef@n{MT@#1@setname}{\@nameuse{MT@default@#1@set}}%
}%
\MT@warning{%
@@ -1644,20 +1776,22 @@ In either case, please send a report to <w.m.l@gmx.net>.
\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\MT@features{{\MT@set@default@set{##1}{#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}}}%
- }%
+ \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{MT@#1@set@@\@tempa}{%
+ \MT@ifdefined@n@TF{MT@#1@set@@\@tempa}{%
\global\MT@edef@n{MT@default@#1@set}{\@tempa}%
}{%
\MT@warning{%
@@ -1670,14 +1804,14 @@ In either case, please send a report to <w.m.l@gmx.net>.
\KV@@sp@def\@tempa{#1}%
\KV@@sp@def\@tempb{#2}%
\MT@make@string\@tempb
- \MT@ifdefined@n{MT@\@tempa @alias}{%
+ \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'}}\relax
+ for font family `\@tempa'}}%
\global\MT@edef@n{MT@\@tempa @alias}{\@tempb}%
- \MT@ifdefined@c\MT@family{%
+ \MT@ifdefined@c@T\MT@family{%
\global\let\MT@familyalias\@tempb
- }\relax
+ }%
}
\def\LoadMicrotypeFile#1{%
\KV@@sp@def\@tempa{#1}%
@@ -1689,7 +1823,8 @@ In either case, please send a report to <w.m.l@gmx.net>.
\MT@xadd\MT@file@list{\@tempa,}%
\MT@begin@catcodes
\InputIfFileExists{mt-\@tempa.cfg}{%
- \MT@vinfo{... Loading configuration file 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}%
@@ -1697,32 +1832,30 @@ In either case, please send a report to <w.m.l@gmx.net>.
\MT@end@catcodes
\fi
}
-\ifnum\MT@pdftex@no > 4
+\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}%
}
-\else
+}{
\renewcommand*\DisableLigatures[1]{%
\MT@warning{Disabling ligatures of a font is only possible\MessageBreak
- with pdftex version 1.30 or later.\MessageBreak
+ with pdftex version 1.30 or newer.\MessageBreak
Ignoring \string\DisableLigatures}%
- \let\DisableLigatures\@gobble
+ \global\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
+ \MT@map@clist@n{load,factor,unit,preset}{\MT@let@nc{MT@extra@##1}\@undefined}%
\setkeys{MT@pr@c}{#1}%
\MT@get@codes@name{pr}%
- \MT@set@pr@opt
+ \MT@map@clist@n{factor,unit,preset}{\MT@set@opt{pr}{##1}}%
\def\MT@permutelist{pr@c}%
- \setkeys{MT@pr@c}{#2}%
+ \setkeys{MT@cfg}{#2}%
\MT@permute
\MT@begin@catcodes
\MT@set@pr@list
@@ -1733,19 +1866,23 @@ In either case, please send a report to <w.m.l@gmx.net>.
}
\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
+ \MT@map@clist@n{load,factor,preset,stretch,shrink,step,auto}%
+ {\MT@let@nc{MT@extra@##1}\@undefined}%
\setkeys{MT@ex@c}{#1}%
\MT@get@codes@name{ex}%
- \MT@set@ex@opt
+ \MT@map@clist@n{preset,stretch,shrink,step,auto}{\MT@set@opt{ex}{##1}}%
+ \MT@ifdefined@c@T\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
+ }%
\def\MT@permutelist{ex@c}%
- \setkeys{MT@ex@c}{#2}%
+ \setkeys{MT@cfg}{#2}%
\MT@permute
\MT@begin@catcodes
\MT@set@ex@list
@@ -1755,51 +1892,22 @@ In either case, please send a report to <w.m.l@gmx.net>.
\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@ifdefined@n@TF{MT@#1@c@name}{%
+ \MT@ifdefined@n@T{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@edef@n{MT@#1@c@name}{\MT@curr@file/\the\inputlineno}%
}%
\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}%
+ \MT@ifdefined@c@T\MT@extra@load{%
+ \global\MT@let@nc{MT@#1@c@\MT@curr@set@name load}\MT@extra@load
+ }%
}
-\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}{%
+\def\MT@set@opt#1#2{%
+ \MT@ifdefined@n@T{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}[]{%
@@ -1807,7 +1915,7 @@ In either case, please send a report to <w.m.l@gmx.net>.
\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}%
+ \MT@edef@n{MT@temp#1\the\@tempcnta}{\MT@val}%
\advance\@tempcnta \@ne
}%
}%
@@ -1818,9 +1926,8 @@ In either case, please send a report to <w.m.l@gmx.net>.
\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}}}%
+ \expandafter\MT@xadd\csname MT@tempsize\endcsname
+ {{{\MT@lower}{\MT@upper}{\MT@curr@set@name}}}%
\fi
}%
}%
@@ -1830,11 +1937,11 @@ In either case, please send a report to <w.m.l@gmx.net>.
\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}%
+ \global\MT@edef@n{MT@\MT@permutelist @\@tempb\MT@extra@context}%
{\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}}}%
+ \csname MT@\MT@permutelist @\@tempb\MT@extra@context @sizes\endcsname
+ {{{\MT@val}{\m@ne}{\MT@curr@set@name}}}%
}%
}%
}
@@ -1846,10 +1953,9 @@ In either case, please send a report to <w.m.l@gmx.net>.
\MT@get@axis{family}{#2}%
\MT@get@axis{series}{#3}%
\MT@get@axis{shape}{#4}%
- \edef\@tempb{\expandafter\@gobble\@tempb/*}%
+ \edef\@tempb{\@tempb*}%
\MT@ifempty{#5}{%
- \MT@warning{size axis is empty in font specification\MessageBreak
- `\MT@temp'. Using \string\normalsize\space instead}%
+ \MT@warn@axis@empty{size}{\string\normalsize}%
\def\MT@val{*}%
}{%
\def\MT@val{#5}%
@@ -1857,41 +1963,25 @@ In either case, please send a report to <w.m.l@gmx.net>.
\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@declare@codes#1{%
\define@key{MT@#1@c}{name}[]{%
- \MT@ifempty{##1}\relax{%
- \MT@def@n{MT@#1@c@name}{##1}%
- }%
- }%
+ \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}%
- }%
- }%
+ \MT@ifempty{##1}\relax{\def\MT@extra@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}%
+ \MT@ifempty{##1}\relax{\def\MT@extra@factor{##1 }}}%
\define@key{MT@#1@c}{preset}[]{%
- \MT@ifempty{##1}\relax{%
- \def\MT@extra@preset{##1}%
- }%
- }%
+ \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@ifempty{##1}\relax{\def\MT@extra@context{##1}}}%
}
-\MT@declare@codes{pr}
-\MT@declare@codes{ex}
+\MT@map@clist@c\MT@features{\MT@declare@codes{#1}}
\define@key{MT@pr@c}{unit}[character]{%
\let\MT@extra@unit\@empty
\KV@@sp@def\@tempa{#1}%
@@ -1914,7 +2004,7 @@ In either case, please send a report to <w.m.l@gmx.net>.
\def\MT@define@ex@c@key#1{%
\define@key{MT@ex@c}{#1}[]{%
\MT@ifempty{##1}\relax{%
- \MT@ifnumber{##1}{%
+ \MT@ifint{##1}{%
\MT@def@n{MT@extra@#1}{##1 }%
}{%
\MT@warning{%
@@ -1930,62 +2020,53 @@ In either case, please send a report to <w.m.l@gmx.net>.
\define@key{MT@ex@c}{auto}[true]{%
\KV@@sp@def\@tempa{#1}%
\csname if\@tempa\endcsname
- \ifnum\MT@pdftex@no > \thr@@
+ \MT@requires@pdftex4{%
\def\MT@extra@auto{autoexpand}%
- \else
+ }{%
\MT@warning{pdfTeX too old for automatic font expansion}%
- \fi
+ }
\else
- \ifnum\MT@pdftex@no > \thr@@
+ \MT@requires@pdftex4{%
\let\MT@extra@auto\@empty
- \fi
+ }\relax
\fi
}
\renewcommand*\DeclareCharacterInheritance[1][]{%
+ \let\MT@extra@context\@empty
\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\MT@features{{\MT@declare@char@inh{##1}{#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@map@clist@c\@tempa{{%
+ \KV@@sp@def\@tempa{##1}%
+ \MT@ifempty\@tempa\relax{%
+ \MT@is@feature{inheritance declaration for `#1'}{%
+ \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}%
+ \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}%
\global\MT@def@n{MT@#1@inh@\csname MT@#1@inh@name\endcsname}{#3}%
\def\MT@permutelist{#1@inh}%
- \setkeys{MT@#1@inh}{#2}%
+ \setkeys{MT@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}%
- }%
+\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{%
@@ -1994,16 +2075,11 @@ In either case, please send a report to <w.m.l@gmx.net>.
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}
+\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
@@ -2039,35 +2115,40 @@ In either case, please send a report to <w.m.l@gmx.net>.
\let\MT@cnt@family\@ne
\MT@permute@@
\MT@increment\MT@cnt@encoding
- \MT@ifdefined@n{MT@tempencoding\romannumeral\MT@cnt@encoding}%
+ \MT@ifdefined@n@T{MT@tempencoding\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@ifdefined@n@T{MT@tempfamily\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@ifdefined@n@T{MT@tempseries\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@ifdefined@n@T{MT@tempshape\MT@cnt@shape}%
\MT@permute@@@@
- \relax
}
\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}%
@@ -2075,7 +2156,7 @@ In either case, please send a report to <w.m.l@gmx.net>.
/\MT@tempfamily
/\MT@tempseries
/\MT@tempshape
- /\MT@ifdefined@c\MT@tempsize *\@empty}%
+ /\MT@ifdefined@c@T\MT@tempsize *}%
\def\@tempb{////}%
\ifx\@tempa\@tempb \else
\ifx\MT@tempencoding\@empty
@@ -2085,21 +2166,22 @@ In either case, please send a report to <w.m.l@gmx.net>.
`\@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@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
- }\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@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'}%
- }\relax
+ `\@nameuse{MT@\MT@permutelist @\@tempa\MT@extra@context}'
+ for font `\@tempa'}%
+ }%
}%
\global\MT@edef@n{MT@\MT@permutelist @\@tempa\MT@extra@context}%
{\csname MT@\MT@permutelist @name\endcsname}%
@@ -2108,8 +2190,8 @@ In either case, please send a report to <w.m.l@gmx.net>.
}
\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@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{%
@@ -2122,16 +2204,14 @@ In either case, please send a report to <w.m.l@gmx.net>.
\def\MT@permute@reset@#1{%
\@tempcnta=\@ne
\MT@loop
- \MT@let@nc{MT@temp#1\romannumeral\@tempcnta}\@undefined
+ \MT@let@nc{MT@temp#1\the\@tempcnta}\@undefined
\advance\@tempcnta\@ne
- \MT@ifdefined@n{MT@temp#1\romannumeral\@tempcnta}%
+ \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{\expandafter\MT@check@rlist@ #1}
\def\MT@check@rlist@#1#2#3{%
\def\@tempb{#1}%
\def\@tempc{#2}%
@@ -2140,29 +2220,27 @@ In either case, please send a report to <w.m.l@gmx.net>.
\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{\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@ifdim{#2}=\m@ne{%
+ \MT@ifdim\@tempc=\m@ne{%
+ \MT@ifdim\@tempb={#1}\@tempswatrue\relax
}{%
- \MT@ifgt\@tempb{#1}\relax{%
- \MT@ifgt\@tempc{#1}{%
+ \MT@ifdim\@tempb>{#1}\relax{%
+ \MT@ifdim\@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
+ \MT@ifdim\@tempc=\m@ne{%
+ \MT@ifdim\@tempb<{#2}{%
+ \MT@ifdim\@tempb<{#1}\relax\@tempswatrue
}\relax
}{%
- \MT@iflt\@tempb{#2}{%
- \MT@ifgt\@tempc{#1}{%
+ \MT@ifdim\@tempb<{#2}{%
+ \MT@ifdim\@tempc>{#1}{%
\@tempswatrue
\edef\@tempb{#1 to #2 (with range: \@tempb\space to \@tempc)}%
}\relax
@@ -2176,119 +2254,9 @@ In either case, please send a report to <w.m.l@gmx.net>.
\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
+\newif\ifMT@opt@DVI
\def\MT@define@option#1{%
\define@key{MT}{#1}[true]{%
\csname MT@opt@#1true\endcsname
@@ -2308,7 +2276,7 @@ In either case, please send a report to <w.m.l@gmx.net>.
\MT@ifstreq\MT@val{nocompatibility}{%
\MT@let@nc{MT@\@tempb @level}\tw@
}{%
- \MT@ifdefined@n{MT@\@tempb @set@@\MT@val}{%
+ \MT@ifdefined@n@TF{MT@\@tempb @set@@\MT@val}{%
\global\MT@edef@n{MT@\@tempb @setname}{\MT@val}%
}{%
\global\MT@edef@n{MT@\@tempb @setname}%
@@ -2331,7 +2299,7 @@ In either case, please send a report to <w.m.l@gmx.net>.
\setkeys{MT}{protrusion={#1}}%
\setkeys{MT}{expansion={#1}}%
}
-\def\MT@def@bool@opt#1{%
+\def\MT@def@bool@opt#1#2{%
\define@key{MT}{#1}[]{%
\MT@ifempty{##1}%
{\def\@tempa{true}}%
@@ -2344,26 +2312,36 @@ In either case, please send a report to <w.m.l@gmx.net>.
\def\@tempa{false}%
}%
}%
- \csname MT@#1\@tempa\endcsname
+ #2%
}%
}
-\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
+\def\MT@def@simple@bool@opt#1{\MT@def@bool@opt{#1}{\csname MT@#1\@tempa\endcsname}}
+\MT@map@tlist@n{{draft}{auto}{selected}%
+}\MT@def@simple@bool@opt
+\MT@def@bool@opt{DVIoutput}{%
+ \csname if\@tempa\endcsname
+ \ifnum\pdfoutput>\z@ \MT@opt@DVItrue \fi
+ \pdfoutput\z@
+ \else
+ \ifnum\pdfoutput<\@ne \MT@opt@DVItrue \fi
+ \pdfoutput\@ne
+ \fi
+}
+\MT@def@bool@opt{defersetup}{%
+ \csname if\@tempa\endcsname \else
+ \AtEndOfPackage{%
+ \MT@setup@
+ \let\MT@setup@\@empty
+ \let\MT@addto@setup\@firstofone
}%
- }%
+ \fi
+}
+\MT@def@bool@opt{final}{%
+ \csname if\@tempa\endcsname
+ \MT@draftfalse
+ \else
+ \MT@drafttrue
+ \fi
}
\define@key{MT}{verbose}[]{%
\let\MT@vinfo\MT@info@nl
@@ -2389,7 +2367,7 @@ In either case, please send a report to <w.m.l@gmx.net>.
\MT@ifempty{##1}%
{\MT@let@cn\@tempa{MT@#1@default}}%
{\def\@tempa{##1 }}%
- \MT@ifnumber\@tempa{%
+ \MT@ifint\@tempa{%
\MT@edef@n{MT@#1}{\@tempa}%
}{\MT@warning@nl{%
Value `##1' for option `#1' is not a number.\MessageBreak
@@ -2403,8 +2381,8 @@ In either case, please send a report to <w.m.l@gmx.net>.
\MT@ifempty{#1}%
{\let\@tempa\MT@factor@default}%
{\def\@tempa{#1 }}%
- \MT@ifnumber\@tempa{%
- \MT@edef@n{MT@pr@factor}{\@tempa}%
+ \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}%
@@ -2430,16 +2408,16 @@ In either case, please send a report to <w.m.l@gmx.net>.
}%
}
\MT@protrusiontrue
-\ifnum\pdfoutput=\z@ \else
- \ifnum\MT@pdftex@no > \thr@@
+\ifnum\pdfoutput<\@ne \else
+ \MT@requires@pdftex4{
\MT@expansiontrue
\MT@autotrue
- \fi
+ }\relax
\fi
\define@key{MT}{config}[]{\relax}
\def\MT@get@config#1config=#2,#3\@nil{%
\MT@ifempty{#2}%
- {\def\MT@config@file{microtype.cfg}}%
+ {\def\MT@config@file{\MT@MT.cfg}}%
{\KV@@sp@def\MT@config@file{#2.cfg}}%
}
\expandafter\expandafter\expandafter\MT@get@config
@@ -2447,39 +2425,111 @@ In either case, please send a report to <w.m.l@gmx.net>.
\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}%
+ \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{%
+}{\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@map@clist@c\MT@features{%
+ \MT@ifdefined@n@TF{MT@default@#1@set}\relax
+ {\global\MT@def@n{MT@default@#1@set}{all}}%
}
-\MT@ifdefined@c\MicroType@Hook{%
- \MT@warning@nl{%
+\MT@ifdefined@c@T\MicroType@Hook{%
+ \MT@warning{%
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
+ Use \string\Microtype@Hook\space instead}\MicroType@Hook}
+\MT@ifdefined@c@T\Microtype@Hook\Microtype@Hook
+\def\microtypesetup{\setkeys{MT}}
+\MT@addto@setup{\def\microtypesetup{\setkeys{MTX}}}
+\def\MT@define@optionX#1#2{%
+ \define@key{MTX}{#1}[true]{%
+ \KV@@sp@def\@tempb{#1}%
+ \MT@map@clist@n{##1}{%
+ \KV@@sp@def\MT@val{####1}%
+ \edef\@tempb{\csname MT@rbba@\@tempb\endcsname}%
+ \MT@ifempty\MT@val\relax{%
+ \@tempcnta=\m@ne
+ \MT@ifstreq\MT@val{true}{%
+ \MT@checksetup\@tempb{%
+ \expandafter\@tempcnta=\csname MT@\@tempb @level\endcsname
+ \MT@info{Enabling #1
+ (level \number\csname MT@\@tempb @level\endcsname)}%
+ }%
+ }{%
+ \MT@ifstreq\MT@val{false}{%
+ \@tempcnta=\z@
+ \MT@info{Disabling #1}%
+ }{%
+ \MT@ifstreq\MT@val{compatibility}{%
+ \MT@checksetup\@tempb{%
+ \@tempcnta=\@ne
+ \MT@let@nc{MT@\@tempb @level}\@ne
+ \MT@info{Setting #1 to level 1}%
+ }%
+ }{%
+ \MT@ifstreq\MT@val{nocompatibility}{%
+ \MT@checksetup\@tempb{%
+ \@tempcnta=\tw@
+ \MT@let@nc{MT@\@tempb @level}\tw@
+ \MT@info{Setting #1 to level 2}%
+ }%
+ }{%
+ \MT@warning{%
+ Value `\MT@val' for key `#1' not recognized.\MessageBreak
+ Use any of `true', `false', `compatibility' or\MessageBreak
+ `nocompatibility'}%
+ }%
+ }%
+ }%
+ }%
+ \ifnum\@tempcnta>\m@ne
+ #2\@tempcnta\relax
+ \fi
+ }%
+ }%
+ }%
+}
+\def\MT@checksetup#1{%
+ \expandafter\csname ifMT@\csname MT@abbr@#1\endcsname\endcsname
+ \expandafter\@firstofone
+ \else
+ \MT@warning{%
+ You cannot enable \@nameuse{MT@abbr@#1} if it was disabled\MessageBreak
+ in the package options,}%
+ \expandafter\@gobble
+ \fi
+}
+\MT@define@optionX{protrusion}\pdfprotrudechars
+\MT@define@optionX{expansion}\pdfadjustspacing
+\define@key{MTX}{activate}[]{%
+ \setkeys{MTX}{protrusion={#1}}%
+ \setkeys{MTX}{expansion={#1}}%
+}
+\def\MT@gobblethree#1#2#3{}
+\let\MT@saved@setupfont\MT@setupfont
+\define@key{MTX}{disable}[]{%
+ \MT@info{Inactivate `\MT@MT' package}%
+ \let\MT@setupfont\MT@gobblethree
+}
+\define@key{MTX}{enable}[]{%
+ \MT@info{Reactivate `\MT@MT' package}%
+ \let\MT@setupfont\MT@saved@setupfont
+}
\def\MT@ProcessOptionsWithKV#1{%
\let\@tempc\relax
\let\KVo@tempa\@empty
\MT@map@clist@c\@classoptionslist{%
\def\CurrentOption{##1}%
- \MT@ifdefined@n{KV@#1@\CurrentOption}{%
+ \MT@ifdefined@n@T{KV@#1@\CurrentOption}{%
\edef\KVo@tempa{\KVo@tempa,\CurrentOption,}%
\@expandtwoargs\@removeelement\CurrentOption
\@unusedoptionlist\@unusedoptionlist
- }\relax
+ }%
}%
\edef\KVo@tempa{%
\noexpand\setkeys{#1}{%
@@ -2491,19 +2541,7 @@ In either case, please send a report to <w.m.l@gmx.net>.
\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
+\MT@addto@setup{%
\ifMT@draft
\MT@warning@nl{`draft' option active.\MessageBreak
Disabling all micro-typographic extensions.\MessageBreak
@@ -2511,12 +2549,7 @@ In either case, please send a report to <w.m.l@gmx.net>.
\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{}
+ \def\DeclareMicrotypeSet#1#{\@gobbletwo}
\renewcommand*\UseMicrotypeSet[2][]{}
\renewcommand*\SetProtrusion[3][]{}
\renewcommand*\SetExpansion[3][]{}
@@ -2525,134 +2558,146 @@ In either case, please send a report to <w.m.l@gmx.net>.
\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
+ \ifnum\pdfoutput<\@ne
+ \ifMT@opt@expansion \else
+ \MT@expansionfalse
\fi
\fi
- \ifnum\MT@step=\m@ne
- \ifnum\MT@stretch>\MT@shrink
- \ifnum\MT@shrink=\z@
- \@tempcnta=\MT@stretch
+ \MT@info@nl{Generating \ifnum\pdfoutput<\@ne DVI \else PDF \fi output%
+ \ifMT@opt@DVI\space (changed by \MT@MT)\fi}%
+ \ifMT@protrusion
+ \edef\MT@active@features{\MT@active@features,pr}
+ \pdfprotrudechars\MT@pr@level
+ \MT@info@nl{Character protrusion enabled (level \number\MT@pr@level)%
+ \ifnum\MT@pr@factor=\MT@factor@default \else,\MessageBreak
+ factor: \number\MT@pr@factor\fi
+ \ifx\MT@pr@unit\@empty \else,\MessageBreak unit: \MT@pr@unit\fi}
+ \MT@ifdefined@c@TF\MT@pr@setname{%
+ \MT@info@nl{Using protrusion set `\MT@pr@setname'}%
+ }{%
+ \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
- \@tempcnta=\MT@shrink
+ \let\MT@shrink\MT@shrink@default
\fi
- \else
- \ifnum\MT@stretch=\z@
- \@tempcnta=\MT@shrink
+ \fi
+ \ifnum\MT@step=\m@ne
+ \ifnum\MT@stretch>\MT@shrink
+ \ifnum\MT@shrink=\z@
+ \@tempcnta=\MT@stretch
+ \else
+ \@tempcnta=\MT@shrink
+ \fi
\else
- \@tempcnta=\MT@stretch
+ \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
- \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@
+ \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
+ }{%
\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}
+ 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
- \else
- \def\MT@auto{autoexpand}
+ \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
- \ifMT@opt@auto
+ \let\MT@set@ex@codes\MT@set@ex@codes@n
+ \fi
+ \ifnum\MT@stretch=\z@
+ \ifnum\MT@shrink=\z@
\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}
+ Both the stretch and shrink limit are set to zero.\MessageBreak
+ Disabling font expansion}
+ \MT@expansionfalse
\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
+ \ifMT@expansion
+ \edef\MT@active@features{\MT@active@features,ex}%
+ \pdfadjustspacing\MT@ex@level
+ \MT@info@nl{\ifMT@auto\else Non-\fi Automatic font expansion enabled
+ (level \number\MT@ex@level),\MessageBreak
+ stretch: \number\MT@stretch, shrink: \number\MT@shrink,
+ step: \number\MT@step, \ifMT@selected\else non-\fi selected}
+ \MT@ifdefined@c@TF\MT@ex@setname{%
+ \MT@info@nl{Using expansion set `\MT@ex@setname'}%
+ }{%
+ \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@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
+ \let\MT@expansion\relax
+ \MT@info@nl{No font expansion}
\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
+}
+\MT@addto@setup{%
+ \ifx\MT@active@features\@empty \else
+ \edef\MT@active@features{\expandafter\@gobble\MT@active@features}
+ \fi
+ \MT@documenttrue
+}
+\AtBeginDocument\selectfont
+\edef\MT@curr@file{\jobname.tex}
\endinput
%%
%% End of file `microtype.sty'.