summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/microtype/microtype.sty
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2007-07-16 15:54:19 +0000
committerKarl Berry <karl@freefriends.org>2007-07-16 15:54:19 +0000
commit095c21ac9a136a78a974cb1bdcb06215f815eb64 (patch)
tree87a2ffd1b3c67f1485059e6cfad05c92dfe606fd /Master/texmf-dist/tex/latex/microtype/microtype.sty
parent858c858014703d3a44c1e0bd5c69f14fe2702012 (diff)
microtype 2.2 (14jul07)
git-svn-id: svn://tug.org/texlive/trunk@4600 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/microtype/microtype.sty')
-rw-r--r--Master/texmf-dist/tex/latex/microtype/microtype.sty1468
1 files changed, 841 insertions, 627 deletions
diff --git a/Master/texmf-dist/tex/latex/microtype/microtype.sty b/Master/texmf-dist/tex/latex/microtype/microtype.sty
index eeaf31b5d61..bc9e702567f 100644
--- a/Master/texmf-dist/tex/latex/microtype/microtype.sty
+++ b/Master/texmf-dist/tex/latex/microtype/microtype.sty
@@ -7,6 +7,7 @@
%% microtype.dtx (with options: `package')
%%
%% ------------------------------------------------------------------------
+%%
%% The `microtype' package
%% An interface to the micro-typographic extensions of pdfTeX
%% Copyright (c) 2004--2007 R Schlicht <w.m.l@gmx.net>
@@ -19,41 +20,45 @@
%%
%% This work has the LPPL maintenance status `author-maintained'.
%%
-%% This work consists of the files microtype.dtx and microtype.ins and the
+%% This work consists of the files microtype.dtx and microtype.ins and the
%% derived files microtype.sty and letterspace.sty.
%%
%% ------------------------------------------------------------------------
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage
- {microtype}
- [2007/01/21 v2.0 Micro-typography with pdfTeX (RS)]
+ {microtype}
+ [2007/07/14 v2.2 Micro-typography with pdfTeX (RS)]
\newcommand*\DeclareMicrotypeSet[3][]{}
\newcommand*\UseMicrotypeSet[2][]{}
\newcommand*\DeclareMicrotypeSetDefault[2][]{}
\newcommand*\SetProtrusion[3][]{}
\newcommand*\SetExpansion[3][]{}
-\newcommand*\SetExtraSpacing[3][]{}
-\newcommand*\SetExtraKerning[3][]{}
\newcommand*\SetTracking[3][]{}
-\newcommand*\DisableLigatures[1]{}
+\newcommand*\SetExtraKerning[3][]{}
+\newcommand*\SetExtraSpacing[3][]{}
+\newcommand*\DisableLigatures[2][]{}
\newcommand*\DeclareCharacterInheritance[3][]{}
+\newcommand*\DeclareMicrotypeVariants[1]{}
\newcommand*\DeclareMicrotypeAlias[2]{}
\newcommand*\LoadMicrotypeFile[1]{}
\newcommand*\DeclareMicrotypeBabelHook[2]{}
\newcommand*\microtypesetup[1]{}
\newcommand*\microtypecontext[1]{}
+\newcommand*\textmicrotypecontext[2]{#2}
\@ifpackageloaded{letterspace}{\let\MT@textls\relax}{%
\newcommand*\lsstyle{}
\newcommand\textls[2][]{}
-\def\textls#1#{\@firstofone}
+\def\textls#1#{}
\newcommand*\lslig[1]{#1}
}
\def\DeclareMicrotypeSet#1#{\@gobbletwo}
+\def\DeclareMicrotypeVariants#1#{\@gobble}
\@onlypreamble\DeclareMicrotypeSet
\@onlypreamble\UseMicrotypeSet
\@onlypreamble\DeclareMicrotypeSetDefault
\@onlypreamble\DisableLigatures
+\@onlypreamble\DeclareMicrotypeVariants
\@onlypreamble\DeclareMicrotypeBabelHook
\def\MT@old@cmd#1#2{%
\newcommand*#1{\MT@warning{%
@@ -64,12 +69,13 @@
\MT@old@cmd\DeclareMicroTypeSet \DeclareMicrotypeSet
\MT@old@cmd\UseMicroTypeSet \UseMicrotypeSet
\MT@old@cmd\LoadMicroTypeFile \LoadMicrotypeFile
-\def\MT@MT{microtype}
+\def\MT@MT
+ {microtype}
+\def\MT@warning{\PackageWarning\MT@MT}
+\def\MT@warning@nl#1{\MT@warning{#1\@gobble}}
\def\MT@info{\PackageInfo\MT@MT}
\def\MT@info@nl#1{\MT@info{#1\@gobble}}
\let\MT@vinfo\@gobble
-\def\MT@warning{\PackageWarning\MT@MT}
-\def\MT@warning@nl#1{\MT@warning{#1\@gobble}}
\def\MT@warn@err#1{\MT@error{#1}{%
This error message appears because you loaded the `\MT@MT'\MessageBreak
package with the option `verbose=errors'. Consult the documentation\MessageBreak
@@ -83,42 +89,55 @@
\fi
\ifx\pdftexversion\@undefined \else
\ifx\pdftexversion\relax \else
- \def\MT@pdftex@no{6}
- \ifnum\pdftexversion < 140
- \def\MT@pdftex@no{5}
- \ifnum\pdftexversion < 130
- \def\MT@pdftex@no{4}
- \ifnum\pdftexversion < 120
- \def\MT@pdftex@no{3}
- \ifnum\pdftexversion = 14
- \ifnum \expandafter`\pdftexrevision < `h
- \def\MT@pdftex@no{2}
- \ifnum \expandafter`\pdftexrevision < `f
+ \def\MT@pdftex@no{7}
+ \ifnum\pdftexversion = 140
+ \ifnum\pdftexrevision < 4
+ \def\MT@pdftex@no{6}
+ \fi
+ \else
+ \ifnum\pdftexversion < 140
+ \def\MT@pdftex@no{5}
+ \ifnum\pdftexversion < 130
+ \def\MT@pdftex@no{4}
+ \ifnum\pdftexversion < 120
+ \def\MT@pdftex@no{3}
+ \ifnum\pdftexversion = 14
+ \ifnum \expandafter`\pdftexrevision < `h
+ \def\MT@pdftex@no{2}
+ \ifnum \expandafter`\pdftexrevision < `f
+ \def\MT@pdftex@no{1}
+ \fi
+ \fi
+ \else
+ \ifnum\pdftexversion < 14
\def\MT@pdftex@no{1}
\fi
\fi
- \else
- \ifnum\pdftexversion < 14
- \def\MT@pdftex@no{1}
- \fi
\fi
\fi
\fi
\fi
\fi
\fi
-\ifnum\MT@pdftex@no<2
- \AtEndOfPackage{\let\@unprocessedoptions\relax}
+\def\MT@clear@options{%
+ \AtEndOfPackage{\let\@unprocessedoptions\relax}%
\let\CurrentOption\@empty
- \MT@warning@nl{%
+}
+\ifnum\MT@pdftex@no <
+ 2
+ \MT@clear@options
+ \MT@warning@nl{You
\ifcase\MT@pdftex@no
- You don't seem to be using pdftex.\MessageBreak
+ don't seem to be using pdftex.\MessageBreak
+ `\MT@MT' only works with pdftex.\MessageBreak
+ Try running `pdflatex' instead of `latex'%
\else
- You are using a pdftex version older than 0.14f.\MessageBreak
- `\MT@MT' won't work with such antiquated versions.\MessageBreak
- Please install a newer version of pdftex.\MessageBreak
+ are using a pdftex version older than
+ 0.14f%
+ .\MessageBreak
+ `\MT@MT' does not work with this version.\MessageBreak
+ Please install a newer version of pdftex%
\fi
- All micro-typographic features will be disabled%
}
\endinput\fi
\def\MT@catcodes{%
@@ -185,24 +204,33 @@
\let\MT@letterspace\m@ne
\def\MT@letterspace@default{100}
\newif\ifMT@document
-\expandafter\let\expandafter\MT@requires@etex
+\def\MT@maybe@etex{%
\ifcase 0%
\ifx\eTeXversion\@undefined 1\else
\ifx\eTeXversion\relax 1\else
\ifcase\eTeXversion 1\fi
\fi
- \fi\space
- \@firstoftwo
+ \fi
+ \catcode`Q=14 \catcode`X=9
\else
- \@secondoftwo
+ \catcode`Q=9 \catcode`X=14
\fi
+ \MT@maybe@etex@
+}
+\def\MT@maybe@etex@#1{#1%
+ \catcode`Q=11 \catcode`X=11
+}
\def\MT@requires@pdftex#1{%
- \ifnum\MT@pdftex@no<#1
- \expandafter\@secondoftwo
- \else
- \expandafter\@firstoftwo
- \fi
+ \ifnum\MT@pdftex@no<#1 \expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi
}
+\ifx\directlua\@undefined\else
+ \MT@error
+ {`\MT@MT'
+ only works with luatex if you generate\MessageBreak
+ the package with the `lua' option%
+ }
+ {}
+\fi
\def\MT@glet{\global\let}
\def\MT@def@n#1{\expandafter\def\csname #1\endcsname}
\def\MT@gdef@n#1{\expandafter\gdef\csname #1\endcsname}
@@ -218,43 +246,38 @@
\expandafter\expandafter\expandafter
#1\expandafter\expandafter\expandafter
{\expandafter#2\expandafter}\expandafter{#3}}
-\MT@requires@etex{
- \def\MT@ifdefined@c@T#1{\ifdefined#1%
- \expandafter\@firstofone\else\expandafter\@gobble\fi
- }
- \def\MT@ifdefined@c@TF#1{\ifdefined#1%
- \expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
- }
- \def\MT@ifdefined@n@T#1{\ifcsname#1\endcsname
- \expandafter\@firstofone\else\expandafter\@gobble\fi
+\MT@maybe@etex{
+ \def\MT@ifdefined@c@T#1{%
+X \ifdefined#1\expandafter\@firstofone\else\expandafter\@gobble\fi
+Q \ifx#1\@undefined\expandafter\@gobble\else\expandafter\@firstofone\fi
}
- \def\MT@ifdefined@n@TF#1{\ifcsname#1\endcsname
- \expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+ \def\MT@ifdefined@c@TF#1{%
+X \ifdefined#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+Q \ifx#1\@undefined
+Q \expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi
}
-}{
- \def\MT@ifdefined@c@T#1{\ifx#1\@undefined
- \expandafter\@gobble\else\expandafter\@firstofone\fi
+ \def\MT@ifdefined@n@T#1{%
+X \ifcsname#1\endcsname\expandafter\@firstofone\else\expandafter\@gobble\fi
+Q \begingroup\MT@exp@two@c\endgroup\ifx\csname #1\endcsname\relax
+Q \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@TF#1{%
+X \ifcsname#1\endcsname\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+Q \begingroup\MT@exp@two@c\endgroup\ifx\csname #1\endcsname\relax
+Q \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
+}
+\MT@maybe@etex{
+ \def\MT@detokenize@n#1{%
+X \detokenize\expandafter{%
+ \string#1%
+X }%
}
- \def\MT@ifdefined@n@TF#1{\begingroup\MT@exp@two@c\endgroup
- \ifx\csname #1\endcsname\relax
- \expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi
+ \def\MT@detokenize@c#1{%
+X \detokenize\expandafter\expandafter\expandafter{\expandafter\string#1}%
+Q \MT@exp@two@c\zap@space\strip@prefix\meaning#1 \@empty
}
}
-\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
@@ -267,13 +290,13 @@
}
\endgroup
\MT@requires@pdftex6{
- \def\MT@ifint#1{%
- \ifcase\pdfmatch{^-*[0-9]+ *$}{#1}\relax
- \expandafter\@secondoftwo
- \else
- \expandafter\@firstoftwo
- \fi
- }
+ \def\MT@ifint#1{%
+ \ifcase\pdfmatch{^-*[0-9]+ *$}{#1}\relax
+ \expandafter\@secondoftwo
+ \else
+ \expandafter\@firstoftwo
+ \fi
+ }
}{
\def\MT@ifint#1{%
\if!\ifnum9<1#1!\else?\fi
@@ -284,14 +307,14 @@
}
}
\MT@requires@pdftex6{
- \def\MT@ifdimen#1{%
- \ifcase\pdfmatch{^([0-9]+([.,][0-9]+)?|[.,][0-9]+)%
- (em|ex|cm|mm|in|pc|pt|dd|cc|bp|sp|nd|nc|px)? *$}{#1}\relax
- \expandafter\@secondoftwo
- \else
- \expandafter\@firstoftwo
- \fi
- }
+ \def\MT@ifdimen#1{%
+ \ifcase\pdfmatch{^([0-9]+([.,][0-9]+)?|[.,][0-9]+)%
+ (em|ex|cm|mm|in|pc|pt|dd|cc|bp|sp|nd|nc|px)? *$}{#1}\relax
+ \expandafter\@secondoftwo
+ \else
+ \expandafter\@firstoftwo
+ \fi
+ }
}{
\def\MT@ifdimen#1{%
\setbox\z@=\hbox{%
@@ -312,18 +335,18 @@
\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{%
+ \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
+ \edef\MT@res@a{#1}%
+ \edef\MT@res@b{#2}%
+ \ifx\MT@res@a\MT@res@b
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
@@ -433,32 +456,23 @@
}
\def\MT@do@font{\MT@while@num\z@\@cclvi}
\newcount\MT@count
-\MT@requires@etex{
- \def\MT@increment#1{\edef#1{\number\numexpr #1 + 1\relax}}
-}{
+\MT@maybe@etex{
\def\MT@increment#1{%
- \MT@count=#1\relax
- \advance\MT@count \@ne
- \edef#1{\number\MT@count}%
+X \edef#1{\number\numexpr #1 + 1\relax}%
+Q \MT@count=#1\relax
+Q \advance\MT@count \@ne
+Q \edef#1{\number\MT@count}%
}
-}
-\MT@requires@etex{
\def\MT@scale#1#2#3{%
+Q \multiply #1 #2\relax
\ifnum #3 = \z@
- #1=\numexpr #1 * #2\relax
+X #1=\numexpr #1 * #2\relax
\else
- #1=\numexpr #1 * #2 / #3\relax
- \fi
- }
-}{
- \def\MT@scale#1#2#3{%
- \multiply #1 #2\relax
- \ifnum #3 = \z@ \else
- \divide #1 #3\relax
+X #1=\numexpr #1 * #2 / #3\relax
+Q \divide #1 #3\relax
\fi
}
}
-\let\MT@make@string\@onelevel@sanitize
\def\MT@abbr@pr{protrusion}
\def\MT@abbr@ex{expansion}
\def\MT@abbr@pr@c{protrusion codes}
@@ -491,20 +505,21 @@
\expandafter\@gobble
\fi
}
+\@ifl@aded{tex}{wordcount}{%
+ \MT@warning@nl{Detected the `wordcount' utility.\MessageBreak
+ Disabling `\MT@MT', since it wouldn't work}%
+ \MT@clear@options\endinput}\relax
\let\MT@setup@\@empty
\def\MT@addto@setup{\g@addto@macro\MT@setup@}
\AtBeginDocument{\MT@setup@ \MT@glet\MT@setup@\@empty}
-\def\MT@with@package#1{\@ifpackageloaded{#1}\@firstofone\@gobble}
-\def\MT@with@babel@and#1{\@ifpackagewith{babel}{#1}\@firstofone\@gobble}
-\def\MT@pdfcprot@error{%
- \MT@error{Detected the `pdfcprot' package!\MessageBreak
- `\MT@MT' and `pdfcprot' may not be used together}{%
-The `pdfcprot' package provides an interface to character protrusion.\MessageBreak
-So does the `\MT@MT' package. Using both packages at the same\MessageBreak
-time will almost certainly lead to undesired results. Have your choice!}%
- \let\MT@pdfcprot@error\relax
+\def\MT@with@package@T#1{\@ifpackageloaded{#1}\@firstofone\@gobble}
+\def\MT@with@babel@and@T#1{%
+ \MT@ifdefined@n@T{opt@babel.\@pkgextension}{%
+ \@expandtwoargs\MT@in@clist{#1}
+ {\csname opt@babel.\@pkgextension\endcsname,\@classoptionslist}%
+ \ifMT@inlist@\expandafter\@gobble\fi
+ }\@gobble
}
-\MT@with@package{pdfcprot}\MT@pdfcprot@error
\MT@let@nc{ver@letterspace.sty}\@empty
\MT@requires@pdftex5{
\def\MT@ledmac@setup{%
@@ -541,21 +556,32 @@ time will almost certainly lead to undesired results. Have your choice!}%
}
\def\MT@restore@p@h{\chardef\%`\% \chardef\#`\# }
\def\MT@setupfont@hook{%
- \MT@with@babel@and{spanish}{\MT@ifdefined@c@T\percentsign{\let\%\percentsign}}%
- \MT@with@package{csquotes}{%
- \@ifpackagelater{csquotes}{2005/05/11}\@disablequotes\relax}%
- \@ifpackageloaded{hyperref}\MT@restore@p@h{%
- \MT@with@package{tex4ht}\MT@restore@p@h}%
+ \MT@with@babel@and@T{spanish} {\MT@ifdefined@c@T\percentsign{\let\%\percentsign}}%
+ \MT@with@babel@and@T{galician}{\MT@ifdefined@c@T\percentsign{\let\%\percentsign}}%
+ \MT@with@package@T{csquotes}
+ {\@ifpackagelater{csquotes}{2005/05/11}\@disablequotes\relax}%
+ \@ifpackageloaded{hyperref}\MT@restore@p@h
+ {\MT@with@package@T{tex4ht}\MT@restore@p@h}%
}
\MT@addto@setup{%
- \MT@with@package{pdfcprot}\MT@pdfcprot@error
- \MT@with@package{ledmac}\MT@ledmac@setup
+ \MT@with@package@T{pdfcprot}{%
+ \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!}%
+ }
+ \MT@with@package@T{ledmac}\MT@ledmac@setup
\let\MT@setupfont@hook\@empty
- \MT@with@babel@and{spanish}{%
+ \MT@with@babel@and@T{spanish}{%
+ \g@addto@macro\MT@setupfont@hook{%
+ \MT@ifdefined@c@T\percentsign{\let\%\percentsign}}%
+ }
+ \MT@with@babel@and@T{galician}{%
\g@addto@macro\MT@setupfont@hook{%
\MT@ifdefined@c@T\percentsign{\let\%\percentsign}}%
}
- \MT@with@package{csquotes}{%
+ \MT@with@package@T{csquotes}{%
\@ifpackagelater{csquotes}{2005/05/11}{%
\g@addto@macro\MT@setupfont@hook\@disablequotes
}{%
@@ -564,19 +590,18 @@ time will almost certainly lead to undesired results. Have your choice!}%
numbers, try upgrading the `csquotes' package}%
}%
}
- \@ifpackageloaded{hyperref}{%
+ \@ifpackageloaded
+ {hyperref}{%
\g@addto@macro\MT@setupfont@hook\MT@restore@p@h
\pdfstringdefDisableCommands{%
\let\pickup@font\MT@orig@pickupfont
\def\lsstyle{\pdfstringdefWarn\lsstyle}%
\def\textls#1#{\pdfstringdefWarn\textls}%
}%
- }{%
- \MT@with@package{tex4ht}{%
- \g@addto@macro\MT@setupfont@hook\MT@restore@p@h
- }%
}
- \MT@with@package{listings}{%
+ {\MT@with@package@T{tex4ht}
+ {\g@addto@macro\MT@setupfont@hook\MT@restore@p@h}}%
+ \MT@with@package@T{listings}{%
\g@addto@macro\MT@normal@catcodes{%
\MT@while@num{"30}{"3A}{\catcode\@tempcnta 12\relax}%
\MT@while@num{"41}{"5B}{\catcode\@tempcnta 11\relax}%
@@ -587,21 +612,21 @@ time will almost certainly lead to undesired results. Have your choice!}%
\let\lst@ProcessLetter\@empty
}%
}
- \MT@with@package{soul}{%
+ \MT@with@package@T{soul}{%
\soulregister\lsstyle 0%
\soulregister\textls 1%
}
- \MT@with@package{pinyin}{%
- \let\MT@py@macron\py@macron
+ \MT@with@package@T{pinyin}{%
+ \let\MT@orig@py@macron\py@macron
\@ifpackagelater{pinyin}{2006/10/17}{% 4.7.0
\def\py@macron#1#2{%
\let\pickup@font\MT@orig@pickupfont
- \MT@py@macron{#1}{#2}%
+ \MT@orig@py@macron{#1}{#2}%
\let\pickup@font\MT@pickupfont}%
}{%
\def\py@macron#1{%
\let\pickup@font\MT@orig@pickupfont
- \MT@py@macron{#1}%
+ \MT@orig@py@macron{#1}%
\let\pickup@font\MT@pickupfont}%
}%
}
@@ -609,25 +634,66 @@ time will almost certainly lead to undesired results. Have your choice!}%
\expandafter\ifx\the\font\nullfont\normalfont\fi
\def\MT@setupfont{%
\MT@setupfont@hook
+}
+\MT@requires@pdftex7
+ {\g@addto@macro\MT@setupfont\MT@copy@font}\relax
+\g@addto@macro\MT@setupfont{%
\MT@exp@two@c\MT@split@name\string\MT@font/\@nil
\MT@exp@one@n\MT@find@file\MT@family
\ifx\MT@familyalias\@empty \else
\MT@exp@one@n\MT@find@file\MT@familyalias\fi
- \ifx\f@encoding\cf@encoding\else\@@enc@update\fi
- \MT@tracking
+}
+\MT@requires@pdftex6
+ {\g@addto@macro\MT@setupfont\MT@tracking}\relax
+\g@addto@macro\MT@setupfont{%
\MT@check@font
\ifMT@inlist@
\else
\MT@vinfo{Setting up font `\MT@@font'\on@line}%
- \MT@protrusion
- \MT@expansion
- \MT@spacing
- \MT@kerning
- \MT@noligatures
+ \MT@protrusion
+ \MT@expansion
+}
+\MT@requires@pdftex6
+ {\g@addto@macro\MT@setupfont{\MT@spacing\MT@kerning}}\relax
+\MT@requires@pdftex5
+ {\g@addto@macro\MT@setupfont\MT@noligatures}\relax
+\g@addto@macro\MT@setupfont{%
\MT@register@font
\fi
\MT@glet\MT@font\@empty
}
+\MT@requires@pdftex7{
+\let\MT@copy@font\relax
+\def\MT@copy@font@{%
+ \xdef\MT@font@copy{\csname\MT@@font/\MT@ex@context\endcsname}%
+ \expandafter\ifx\MT@font@copy\relax
+ \edef\MT@font@orig{\csname\expandafter\string\font@name @orig\endcsname}%
+ \expandafter\ifx\MT@font@orig\relax
+ \MT@exp@two@c\MT@glet\MT@font@orig\font@name
+ \else
+ \MT@exp@two@c\let\font@name\MT@font@orig
+ \fi
+ \global\MT@exp@two@c\pdfcopyfont\MT@font@copy\font@name
+ \MT@map@clist@c\MT@active@features{%
+ \expandafter\ifx\csname MT@\@nameuse{MT@abbr@##1}\endcsname\relax\else
+ \def\@tempa{##1}%
+ \expandafter\MT@map@tlist@c
+ \csname MT@##1@doc@contexts\endcsname
+ \MT@rem@from@list
+ \fi
+ }%
+ \fi
+ \MT@exp@two@c\let\MT@font\MT@font@copy
+ \let\font@name\MT@font@copy
+ \aftergroup\let\aftergroup\font@name\aftergroup\MT@font@copy
+}
+\def\MT@rem@from@list#1{%
+ \expandafter\ifx\csname MT@\@tempa @#1font@list\endcsname\relax\else
+ \expandafter\MT@exp@one@n\expandafter\MT@rem@from@clist\expandafter
+ \MT@font \csname MT@\@tempa @#1font@list\endcsname
+ \fi
+}
+}\relax
\def\MT@split@name#1/#2/#3/#4/#5/#6\@nil{%
\def\MT@encoding{#1}%
\def\MT@family {#2}%
@@ -642,6 +708,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
\def\MT@maybe@do#1{%
\expandafter\csname ifMT@\csname MT@abbr@#1\endcsname\endcsname
\MT@dotrue
+ \edef\@tempa{\csname MT@#1@setname\endcsname}%
\MT@map@clist@n{font,encoding,family,series,shape,size}{%
\MT@ifdefined@n@TF{MT@checklist@##1}%
{\csname MT@checklist@##1\endcsname}%
@@ -659,7 +726,6 @@ time will almost certainly lead to undesired results. Have your choice!}%
\fi
}
\def\MT@checklist@#1#2{%
- \edef\@tempa{\csname MT@#2@setname\endcsname}%
\MT@ifdefined@n@T
{MT@#2list@#1@\@tempa}{%
\expandafter\MT@exp@one@n\expandafter\MT@in@clist
@@ -673,25 +739,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
\fi
}%
}
-\def\MT@checklist@font#1{%
- \edef\@tempa{\csname MT@#1@setname\endcsname}%
- \MT@ifdefined@n@T
- {MT@#1list@font@\@tempa}{%
- \expandafter\expandafter\expandafter\MT@exp@one@n
- \expandafter\expandafter\expandafter\MT@in@clist
- \expandafter\expandafter\expandafter{%
- \expandafter\expandafter\expandafter\string
- \expandafter\MT@font\expandafter}%
- \csname MT@#1list@font@\@tempa\endcsname
- \ifMT@inlist@
- \expandafter\MT@clist@break
- \else
- \MT@dofalse
- \fi
- }%
-}
\def\MT@checklist@family#1{%
- \edef\@tempa{\csname MT@#1@setname\endcsname}%
\MT@ifdefined@n@T
{MT@#1list@family@\@tempa}{%
\MT@exp@two@n\MT@in@clist
@@ -714,11 +762,9 @@ time will almost certainly lead to undesired results. Have your choice!}%
}%
}
\def\MT@checklist@size#1{%
- \edef\@tempa{\csname MT@#1@setname\endcsname}%
\MT@ifdefined@n@T
{MT@#1list@size@\@tempa}{%
- \expandafter\MT@in@rlist
- \csname MT@#1list@size@\@tempa\endcsname
+ \expandafter\MT@in@rlist\csname MT@#1list@size@\@tempa\endcsname
\ifMT@inlist@
\MT@dotrue
\else
@@ -727,6 +773,19 @@ time will almost certainly lead to undesired results. Have your choice!}%
\fi
}%
}
+\def\MT@checklist@font#1{%
+ \MT@ifdefined@n@T
+ {MT@#1list@font@\@tempa}{%
+ \edef\@tempb{\MT@encoding/\MT@family/\MT@series/\MT@shape/\MT@size}%
+ \expandafter\MT@exp@one@n\expandafter\MT@in@clist\expandafter
+ \@tempb \csname MT@#1list@font@\@tempa\endcsname
+ \ifMT@inlist@
+ \expandafter\MT@clist@break
+ \else
+ \MT@dofalse
+ \fi
+ }%
+}
\def\MT@protrusion{\MT@maybe@do{pr}}
\def\MT@set@pr@codes{%
\MT@if@list@exists{%
@@ -742,13 +801,23 @@ time will almost certainly lead to undesired results. Have your choice!}%
}\MT@reset@pr@codes
}
\def\MT@set@all@pr#1#2{%
- \MT@do@font{%
- \lpcode\MT@font\@tempcnta=#1\relax
- \rpcode\MT@font\@tempcnta=#2\relax
- }%
+ \let\MT@temp\@empty
+ \MT@ifempty{#1}\relax{\g@addto@macro\MT@temp{\lpcode\MT@font\@tempcnta=#1\relax}}%
+ \MT@ifempty{#2}\relax{\g@addto@macro\MT@temp{\rpcode\MT@font\@tempcnta=#2\relax}}%
+ \MT@do@font\MT@temp
}
\def\MT@reset@pr@codes@{\MT@set@all@pr\z@\z@}
\let\MT@reset@pr@codes\relax
+\MT@requires@pdftex6{
+ \g@addto@macro\MT@set@pr@codes\MT@compensate@tr
+ \let\MT@compensate@tr\relax
+ \def\MT@compensate@tr@{%
+ \MT@do@font{\MT@compensate@tr@@\lpcode \MT@compensate@tr@@\rpcode}%
+ }
+ \def\MT@compensate@tr@@#1{%
+ #1\MT@font\@tempcnta=\numexpr#1\MT@font\@tempcnta + \MT@letterspace@/2\relax
+ }
+}\relax
\def\MT@get@font@dimen@six{%
\ifnum\fontdimen6\MT@font=\z@
\MT@warning@nl{%
@@ -796,56 +865,54 @@ time will almost certainly lead to undesired results. Have your choice!}%
}%
}%
}
-\MT@requires@pdftex3{
- \def\MT@scale@to@em{%
- \@tempcntb=\MT@count\relax
- \MT@scale\@tempcntb \@tempb \MT@dimen@six
- \ifnum\@tempcntb=\z@ \else
- \MT@scale@factor
- \fi
- }
- \MT@requires@etex{
+\MT@maybe@etex{
+ \MT@requires@pdftex3{
+ \def\MT@scale@to@em{%
+ \@tempcntb=\MT@count\relax
+ \MT@scale\@tempcntb \@tempb \MT@dimen@six
+ \ifnum\@tempcntb=\z@ \else
+ \MT@scale@factor
+ \fi
+ }
\def\MT@get@charwd{%
- \MT@count=\fontcharwd\MT@font\MT@char\relax
+X \MT@count=\fontcharwd\MT@font\MT@char\relax
+Q \setbox\z@=\hbox{\MT@font \char\MT@char}%
+Q \MT@count=\wd\z@
\ifnum\MT@count=\z@ \MT@info@missing@char \fi
}
+ \MT@requires@pdftex6{
+ \g@addto@macro\MT@get@charwd{%
+ \MT@ifdefined@c@T\MT@letterspace@
+ {\advance\MT@count -\dimexpr\MT@letterspace@ sp *\dimexpr 1em/1000\relax}%
+ }
+ }\relax
}{
- \def\MT@get@charwd{%
- \setbox\z@=\hbox{\MT@font \char\MT@char}%
- \MT@count=\wd\z@\relax
- \ifnum\MT@count=\z@ \MT@info@missing@char \fi
+ \def\MT@scale@to@em{%
+ \MT@count=\@tempb\relax
+ \ifnum\MT@count=\z@ \else
+ \MT@scale@factor
+ \fi
}
+ \def\MT@get@charwd{\MT@count=\MT@dimen@six}
}
-}{
- \def\MT@scale@to@em{%
- \MT@count=\@tempb\relax
- \ifnum\MT@count=\z@ \else
- \MT@scale@factor
- \fi
- }
- \def\MT@get@charwd{\MT@count=\MT@dimen@six}
}
\def\MT@get@font@dimen#1{%
\ifnum\fontdimen#1\MT@font=\z@
\MT@warning@nl{Font `\MT@@font' does not specify its\MessageBreak
- \@backslashchar fontdimen \number#1 (it's zero)!\MessageBreak
+ \@backslashchar fontdimen #1 (it's zero)!\MessageBreak
You should use a different `unit' for \MT@curr@list@name}%
\else
\MT@count=\fontdimen#1\MT@font
\fi
}
-\MT@requires@etex{
- \def\MT@info@missing@char{%
- \MT@info@nl{Character `\the\MT@toks' \iffontchar\MT@font\MT@char
- has a width of 0pt \else is missing \fi in font\MessageBreak
- `\MT@@font'. Ignoring protrusion settings\MessageBreak
- for this character}%
- }
-}{
+\MT@maybe@etex{
\def\MT@info@missing@char{%
- \MT@info@nl{%
- Character `\the\MT@toks' has a width of 0pt\MessageBreak
- (it's probably missing) in font `\MT@@font'.\MessageBreak
+ \MT@info@nl{Character `\the\MT@toks'
+X \iffontchar\MT@font\MT@char
+ has a width of 0pt
+X \else is missing\fi
+Q \MessageBreak (it's probably missing)
+ \MessageBreak in font `\MT@@font'.\MessageBreak
Ignoring protrusion settings for this character}%
}
}
@@ -946,18 +1013,30 @@ time will almost certainly lead to undesired results. Have your choice!}%
}
\def\MT@set@inputenc#1{%
\def\MT@cat{#1}%
- \MT@ifdefined@n@T{%
- MT@\MT@feat @#1@\csname MT@\MT@feat @#1@name\endcsname @inputenc}{%
- \MT@ifdefined@c@TF\inputencoding{%
- \MT@normal@catcodes
- \inputencoding{\@nameuse{%
- MT@\MT@feat @#1@\csname MT@\MT@feat @#1@name\endcsname @inputenc}}%
- }{%
+ \edef\@tempa{MT@\MT@feat @#1@\csname MT@\MT@feat @#1@name\endcsname @inputenc}%
+ \MT@ifdefined@n@T\@tempa\MT@set@inputenc@
+}
+\MT@addto@setup{%
+ \@ifpackageloaded{inputenc}{
+ \@ifpackagelater{inputenc}{2006/02/22}{
+ \def\MT@set@inputenc@{%
+ \MT@ifstreq\inputencodingname{\csname\@tempa\endcsname}\relax
+ \MT@load@inputenc
+ }
+ }{
+ \let\MT@set@inputenc@\MT@load@inputenc
+ }
+ }{
+ \def\MT@set@inputenc@{%
\MT@error{Key `inputenc' used in \MT@curr@list@name, but the `inputenc'
\MessageBreak package isn't loaded. Ignoring key}%
{You must load the `inputenc' package before you can use the `inputenc' key.}%
- }%
- }%
+ }
+ }
+}
+\def\MT@load@inputenc{%
+ \MT@normal@catcodes
+ \inputencoding{\@nameuse{\@tempa}}%
}
\def\MT@set@pr@heirs#1{%
\lpcode\MT@font#1=\lpcode\MT@font\MT@char
@@ -972,10 +1051,10 @@ time will almost certainly lead to undesired results. Have your choice!}%
\MT@warn@preset@towidth{pr}%
\let\MT@preset@aux\MT@preset@aux@factor
\else
- \let\MT@preset@aux\MT@preset@aux@space
+ \def\MT@preset@aux{\MT@preset@aux@space2}%
\fi
- \MT@preset@aux{#1}\@tempa
- \MT@preset@aux{#2}\@tempb
+ \MT@ifempty{#1}{\let\@tempa\@empty}{\MT@preset@aux{#1}\@tempa}%
+ \MT@ifempty{#2}{\let\@tempb\@empty}{\MT@preset@aux{#2}\@tempb}%
\MT@set@all@pr\@tempa\@tempb
}
\def\MT@preset@aux@factor#1#2{%
@@ -983,11 +1062,11 @@ time will almost certainly lead to undesired results. Have your choice!}%
\MT@scale@factor
\edef#2{\number\@tempcntb}%
}
-\def\MT@preset@aux@space#1#2{%
- \def\@tempb{#1}%
- \MT@get@space@unit\tw@
+\def\MT@preset@aux@space#1#2#3{%
+ \def\@tempb{#2}%
+ \MT@get@space@unit#1%
\MT@scale@to@em
- \edef#2{\number\@tempcntb}%
+ \edef#3{\number\@tempcntb}%
}
\def\MT@warn@preset@towidth#1{%
\MT@warning@nl{%
@@ -1006,7 +1085,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
\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
+ \MT@expandfont
}\relax
}
\newif\ifMT@nonselected
@@ -1022,10 +1101,13 @@ time will almost certainly lead to undesired results. Have your choice!}%
\let\MT@ex@factor@\MT@ex@factor
}%
\MT@reset@ef@codes
- \pdffontexpand\MT@font \MT@stretch@ \MT@shrink@ \MT@step@ \MT@auto@\relax
+ \MT@expandfont
\MT@nonselectedfalse
}
\let\MT@set@ex@codes\MT@set@ex@codes@n
+\def\MT@expandfont{%
+ \pdffontexpand\MT@font \MT@stretch@ \MT@shrink@ \MT@step@ \MT@auto@\relax
+}
\def\MT@set@all@ex#1{%
\MT@do@font{\efcode\MT@font\@tempcnta=#1\relax}%
}
@@ -1146,13 +1228,13 @@ time will almost certainly lead to undesired results. Have your choice!}%
\def\MT@sp@split@val#1,#2,#3\relax{%
\def\@tempb{#1}%
\MT@ifempty\@tempb\relax{%
- \MT@get@space@unit\tw@
+ \MT@get@space@unit2%
\MT@scale@to@em
\knbscode\MT@font\MT@char=\@tempcntb
}%
\def\@tempb{#2}%
\MT@ifempty\@tempb\relax{%
- \MT@get@space@unit\thr@@
+ \MT@get@space@unit3%
\MT@scale@to@em
\stbscode\MT@font\MT@char=\@tempcntb
}%
@@ -1176,11 +1258,11 @@ time will almost certainly lead to undesired results. Have your choice!}%
\shbscode\MT@font#1=\shbscode\MT@font\MT@char
}
\def\MT@set@all@sp#1#2#3{%
- \MT@do@font{%
- \knbscode\MT@font\@tempcnta=#1\relax
- \stbscode\MT@font\@tempcnta=#2\relax
- \shbscode\MT@font\@tempcnta=#3\relax
- }%
+ \let\MT@temp\@empty
+ \MT@ifempty{#1}\relax{\g@addto@macro\MT@temp{\knbscode\MT@font\@tempcnta=#1\relax}}%
+ \MT@ifempty{#2}\relax{\g@addto@macro\MT@temp{\stbscode\MT@font\@tempcnta=#2\relax}}%
+ \MT@ifempty{#3}\relax{\g@addto@macro\MT@temp{\shbscode\MT@font\@tempcnta=#3\relax}}%
+ \MT@do@font\MT@temp
}
\def\MT@reset@sp@codes@{\MT@set@all@sp\z@\z@\z@}
\let\MT@reset@sp@codes\relax
@@ -1191,25 +1273,17 @@ time will almost certainly lead to undesired results. Have your choice!}%
\def\MT@preset@sp@#1,#2,#3\@nil{%
\ifx\MT@sp@unit@\@empty
\MT@warn@preset@towidth{sp}%
- \MT@preset@aux@factor{#1}\@tempa
- \MT@preset@aux@factor{#2}\@tempc
- \MT@preset@aux@factor{#3}\@tempb
+ \MT@ifempty{#1}{\let\@tempa\@empty}{\MT@preset@aux@factor{#1}\@tempa}%
+ \MT@ifempty{#2}{\let\@tempc\@empty}{\MT@preset@aux@factor{#2}\@tempc}%
+ \MT@ifempty{#3}{\let\@tempb\@empty}{\MT@preset@aux@factor{#3}\@tempb}%
\else
- \MT@preset@aux@space{#1}\@tempa
- \def\@tempb{#2}%
- \MT@get@space@unit\thr@@
- \MT@scale@to@em
- \edef\@tempc{\number\@tempcntb}%
- \def\@tempb{#3}%
- \MT@get@space@unit4%
- \MT@scale@to@em
- \edef\@tempb{\number\@tempcntb}%
+ \MT@ifempty{#1}{\let\@tempa\@empty}{\MT@preset@aux@space2{#1}\@tempa}%
+ \MT@ifempty{#2}{\let\@tempc\@empty}{\MT@preset@aux@space3{#2}\@tempc}%
+ \MT@ifempty{#3}{\let\@tempb\@empty}{\MT@preset@aux@space4{#3}\@tempb}%
\fi
\MT@set@all@sp\@tempa\@tempc\@tempb
}
-}{
- \let\MT@spacing\relax
-}
+}\relax
\MT@requires@pdftex6{
\def\MT@kerning{\MT@maybe@do{kn}}
\def\MT@set@kn@codes{%
@@ -1244,13 +1318,13 @@ time will almost certainly lead to undesired results. Have your choice!}%
\def\MT@kn@split@val#1,#2\relax{%
\def\@tempb{#1}%
\MT@ifempty\@tempb\relax{%
- \MT@get@space@unit\tw@
+ \MT@get@space@unit2%
\MT@scale@to@em
\knbccode\MT@font\MT@char=\@tempcntb
}%
\def\@tempb{#2}%
\MT@ifempty\@tempb\relax{%
- \MT@get@space@unit\tw@
+ \MT@get@space@unit2%
\MT@scale@to@em
\knaccode\MT@font\MT@char=\@tempcntb
}%
@@ -1267,10 +1341,10 @@ time will almost certainly lead to undesired results. Have your choice!}%
\knaccode\MT@font#1=\knaccode\MT@font\MT@char
}
\def\MT@set@all@kn#1#2{%
- \MT@do@font{%
- \knbccode\MT@font\@tempcnta=#1\relax
- \knaccode\MT@font\@tempcnta=#2\relax
- }%
+ \let\MT@temp\@empty
+ \MT@ifempty{#1}\relax{\g@addto@macro\MT@temp{\knbccode\MT@font\@tempcnta=#1\relax}}%
+ \MT@ifempty{#2}\relax{\g@addto@macro\MT@temp{\knaccode\MT@font\@tempcnta=#2\relax}}%
+ \MT@do@font\MT@temp
}
\def\MT@reset@kn@codes@{\MT@set@all@kn\z@\z@}
\let\MT@reset@kn@codes\relax
@@ -1283,84 +1357,202 @@ time will almost certainly lead to undesired results. Have your choice!}%
\MT@warn@preset@towidth{kn}%
\let\MT@preset@aux\MT@preset@aux@factor
\else
- \let\MT@preset@aux\MT@preset@aux@space
+ \def\MT@preset@aux{\MT@preset@aux@space2}%
\fi
- \MT@preset@aux{#1}\@tempa
- \MT@preset@aux{#2}\@tempb
+ \MT@ifempty{#1}{\let\@tempa\@empty}{\MT@preset@aux{#1}\@tempa}%
+ \MT@ifempty{#2}{\let\@tempb\@empty}{\MT@preset@aux{#2}\@tempb}%
\MT@set@all@kn\@tempa\@tempb
}
-}{
- \let\MT@kerning\relax
-}
+}\relax
\MT@requires@pdftex6{
- \DeclareRobustCommand\lsstyle{%
- \MT@trackingtrue
- \def\MT@tr@setname{all}%
- \let\MT@tracking\MT@tracking@
- \MT@let@nc{lslig }\MT@lslig
- \selectfont
- \MT@lskern=\dimexpr\MT@ifdefined@c@TF\MT@letterspace@
- \MT@letterspace@\MT@letterspace sp
- * \fontdimen6\MT@lsfont/2000\relax
- \MT@ls@adjust
- }
- \def\MT@tracking@{%
- \ifMT@tracking\MT@maybe@do{tr}\fi
- }
- \let\MT@tracking\MT@tracking@
- \def\MT@set@tr@codes{%
- \MT@ifdefined@c@TF\MT@letterspace@\relax{%
- \let\MT@letterspace@\MT@letterspace
- \MT@if@list@exists{%
- \MT@set@listname
- \MT@let@cn\MT@letterspace@{MT@tr@c@\MT@tr@c@name}%
- \MT@ifdefined@n@T{MT@tr@c@\MT@tr@c@name @unit}{%
- \MT@let@cn\MT@tr@unit@{MT@tr@c@\MT@tr@c@name @unit}%
- \ifdim\MT@tr@unit@=1em\else
- \MT@get@font@dimen@six
- \MT@let@cn\@tempb{MT@tr@c@\MT@tr@c@name}%
- \MT@get@unit\MT@tr@unit@
- \let\MT@tr@factor@\@m
- \MT@scale@to@em
- \edef\MT@letterspace@{\number\@tempcntb}%
- \fi
- }%
- }\relax
+\let\MT@tr@font@list\@empty
+\def\MT@tracking@{%
+ \MT@exp@one@n\MT@in@clist\MT@font\MT@tr@font@list
+ \ifMT@inlist@\else
+ \MT@maybe@do{tr}%
+ \ifMT@do\else
+ \xdef\MT@tr@font@list{\MT@tr@font@list\MT@font,}%
+ \fi
+ \fi
+}
+\let\MT@tracking\MT@tracking@
+\def\MT@set@tr@codes{%
+ \MT@vinfo{Tracking font `\MT@@font'\on@line}%
+ \MT@get@font@dimen@six
+ \MT@if@list@exists{%
+ \MT@set@listname
+ \MT@ifdefined@n@T{MT@tr@c@\MT@tr@c@name}{%
+ \MT@let@cn\MT@letterspace{MT@tr@c@\MT@tr@c@name}%
+ \MT@ifdefined@n@T{MT@tr@c@\MT@tr@c@name @unit}{%
+ \MT@let@cn\MT@tr@unit@{MT@tr@c@\MT@tr@c@name @unit}%
+ \ifdim\MT@tr@unit@=1em
+ \let\MT@tr@unit@\@undefined
+ \else
+ \MT@let@cn\@tempb{MT@tr@c@\MT@tr@c@name}%
+ \MT@get@unit\MT@tr@unit@
+ \let\MT@tr@factor@\@m
+ \MT@scale@to@em
+ \edef\MT@letterspace{\number\@tempcntb}%
+ \fi
+ }%
}%
- \ifnum\MT@letterspace@=\z@\else
- \xdef\MT@lsfont{%
- \expandafter\csname\expandafter\string\MT@font
- /\number\MT@letterspace@ ls\endcsname}%
- \expandafter\ifx\MT@lsfont\relax
- \MT@get@ls@basefont
- \global\expandafter\letterspacefont\MT@lsfont\font@name \MT@letterspace@
- \fontdimen2\MT@lsfont=\dimexpr\numexpr 1000+\MT@letterspace@\relax sp
- * \fontdimen2\MT@lsfont/1000\relax
- \fi
- \MT@vinfo{Tracking font `\MT@@font' by \number\MT@letterspace@
- \space\on@line}%
- \let\MT@font\MT@lsfont
- \aftergroup
- \MT@set@lsfont
+ \MT@ifdefined@n@T{MT@tr@c@\MT@tr@c@name @noligatures}%
+ {\MT@let@cn\MT@tr@ligatures{MT@tr@c@\MT@tr@c@name @noligatures}}%
+ \MT@ifdefined@n@T{MT@tr@c@\MT@tr@c@name @spacing}%
+ {\MT@let@cn\MT@tr@ispace{MT@tr@c@\MT@tr@c@name @spacing}}%
+ \MT@ifdefined@n@T{MT@tr@c@\MT@tr@c@name @outerspacing}%
+ {\MT@let@cn\MT@tr@ospace{MT@tr@c@\MT@tr@c@name @outerspacing}}%
+ }\relax
+ \let\MT@compensate@tr\MT@compensate@tr@
+ \MT@ifdefined@c@TF\MT@letterspace@\relax{\let\MT@letterspace@\MT@letterspace}%
+ \ifnum\MT@letterspace@=\z@\else
+ \MT@vinfo{... Tracking by \number\MT@letterspace@}%
+ \MT@warn@tracking@DVI
+ \xdef\MT@lsfont{\csname\expandafter\string\font@name
+ /\number\MT@letterspace@ ls\endcsname}%
+ \expandafter\ifx\MT@lsfont\relax
+ \MT@get@ls@basefont
+ \global\expandafter\letterspacefont\MT@lsfont\font@name\MT@letterspace@
+ \MT@ifdefined@c@TF\MT@tr@ispace
+ {\let\@tempa\MT@tr@ispace}
+ {\edef\@tempa{\MT@letterspace@*,,}}%
+ \MT@ifdefined@c@TF\MT@tr@ospace
+ {\edef\@tempa{\@tempa,\MT@tr@ospace}}
+ {\edef\@tempa{\@tempa,,,}}%
+ \expandafter\MT@tr@adjust@space\@tempa,%
+ \MT@ifdefined@c@T\MT@tr@ligatures\MT@tr@noligatures
+ \fi
+ \aftergroup\MT@set@lsfont
+ \let\MT@font\MT@lsfont
+ \ifx\MT@ls@adjust\relax
+ \global\MT@outer@space=\csname MT@outer@space\MT@@font\endcsname
+ \MT@tr@outer@l
+ \aftergroup\aftergroup\aftergroup\MT@tr@outer@r
+ \fi
+ \fi
+}
+\def\MT@set@lsfont{\MT@exp@two@c\let\font@name\MT@lsfont}
+\DeclareRobustCommand\lsstyle{%
+ \def\MT@feat{tr}%
+ \let\MT@tracking\MT@set@tr@codes
+ \selectfont
+ \MT@lskern=\dimexpr\MT@ifdefined@c@TF\MT@letterspace@
+ \MT@letterspace@\MT@letterspace sp
+ * \fontdimen6\MT@lsfont/2000\relax
+ \MT@ls@adjust
+}
+\DeclareRobustCommand\lslig[1]{%
+ \kern\MT@lskern
+ {\MT@get@ls@basefont\font@name #1}%
+ \kern\MT@lskern
+}
+\def\MT@get@ls@basefont{%
+ \escapechar\m@ne
+ \edef\MT@ls@basefont{\csname\expandafter\string\font@name @base\endcsname}%
+ \expandafter\ifx\MT@ls@basefont\relax
+ \MT@exp@two@c\MT@glet\MT@ls@basefont\font@name
+ \else
+ \MT@exp@two@c\let\font@name\MT@ls@basefont
+ \fi
+}
+\MT@requires@pdftex7{
+ \def\MT@tr@noligatures{%
+ \ifx\MT@tr@ligatures\@empty
+ \MT@noligatures@\MT@lsfont\@undefined
+ \else
+ \MT@noligatures@\MT@lsfont\MT@tr@ligatures
\fi
}
- \def\MT@set@lsfont{\MT@exp@two@c\let\font@name\MT@lsfont}
- \DeclareRobustCommand\lslig{\@firstofone}
- \def\MT@lslig#1{%
- \MT@get@ls@basefont
- \kern\MT@lskern{\font@name #1}\kern\MT@lskern
+}{
+ \def\MT@tr@noligatures{%
+ \MT@warning@nl{%
+ Disabling selected ligatures is only possible since\MessageBreak
+ pdftex 1.40.4. Disabling all ligatures instead}%
+ \global\let\MT@tr@noligatures\relax
}
- \def\MT@get@ls@basefont{%
- \ifcase\pdfmatch{^select font (.*)[+-][0-9]*ls( at .*)?$}
- {\expandafter\meaning\font@name}\relax
- \else
- \global\expandafter\font\font@name
- \expandafter\strip@prefix\pdflastmatch1
- \expandafter\strip@prefix\pdflastmatch2\relax
+}
+\newskip\MT@outer@space
+\def\MT@tr@adjust@space#1,#2,#3,#4,#5,#6,{%
+ \let\MT@temp\@empty
+ \MT@adjust@space@{#1}{#4}{2}\@empty
+ \MT@adjust@space@{#2}{#5}{3}\@plus
+ \MT@adjust@space@{#3}{#6}{4}\@minus
+ \global\MT@let@nc{MT@outer@space\expandafter\string\MT@lsfont}\MT@temp
+}
+\def\MT@adjust@space@#1#2#3#4{%
+ \MT@ifempty{#2}{%
+ \MT@ifempty{#1}{%
+ \edef\MT@temp{\MT@temp#4\the\fontdimen#3\MT@lsfont}%
+ }{%
+ \MT@tr@get@space{#1}{#3}{1000}%
+ \edef\MT@temp{\MT@temp#4\the\@tempdima}%
+ \fontdimen#3\MT@lsfont=\@tempdima
+ }%
+ }{%
+ \MT@tr@get@space{#2}{#3}{2000}%
+ \edef\MT@temp{\MT@temp#4\the\@tempdima}%
+ \MT@ifempty{#1}\relax{%
+ \MT@tr@get@space{#1}{#3}{1000}%
+ \fontdimen#3\MT@lsfont=\@tempdima
+ }%
+ }%
+}
+\def\MT@tr@get@space#1#2#3{%
+ \MT@test@ast#1*\@nil{%
+ \MT@ifdefined@c@TF\MT@tr@unit@
+ {\edef\@tempb{#1}\MT@scale@to@em}
+ {\@tempcntb=#1\relax}%
+ \@tempdima=\dimexpr \dimexpr\@tempcntb sp*\MT@dimen@six/1000\relax
+ -\fontdimen#2\MT@lsfont\relax
+ \ifnum#2=\tw@
+ \advance\@tempdima -\dimexpr\MT@letterspace@ sp*\MT@dimen@six/#3\relax
\fi
- }
+ \@tempdima=\dimexpr \fontdimen#2\MT@lsfont+\@tempdima\relax
+ }{%
+ \MT@ifempty\@tempa{\let\@tempa\MT@letterspace@}\relax
+ \@tempdima=\dimexpr \numexpr1000+\@tempa sp *\fontdimen#2\MT@lsfont/1000\relax
+ }%
+}
+\def\MT@tr@outer@l{%
+ \ifdim\lastskip>5sp
+ \unskip \hskip\MT@outer@space
+ \fi
+}
+\def\MT@tr@outer@r{%
+ \futurelet\MT@tr@outer@next\MT@tr@outer@r@
+}
+\def\MT@tr@outer@r@{%
+ \def\MT@temp*##1{\hskip\MT@outer@space}%
+ \ifcat\egroup\noexpand\MT@tr@outer@next
+ \unkern\egroup
+ \def\MT@temp*{\afterassignment\MT@tr@outer@r\let\x=}%
+ \else
+ \ifx\maybe@ic\MT@tr@outer@next
+ \def\MT@temp*{\afterassignment\MT@tr@outer@icr\let\x=}%
+ \else
+ \ifx\check@icr\MT@tr@outer@next
+ \def\MT@temp*{\aftergroup\MT@tr@outer@r\check@icr\let\x=}%
+ \else
+ \ifx\@sptoken\MT@tr@outer@next
+ \def\MT@temp* {\hskip\MT@outer@space}%
+ \else
+ \ifx~\MT@tr@outer@next
+ \def\MT@temp*~{\nobreak\hskip\MT@outer@space}%
+ \else
+ \ifx\ \MT@tr@outer@next \else
+ \ifx\space\MT@tr@outer@next \else
+ \ifx\@xobeysp\MT@tr@outer@next \else
+ \def\MT@temp*{}%
+ \let\MT@tr@outer@next\relax
+ \fi\fi\fi\fi\fi\fi\fi\fi
+ \MT@temp*%
+}
+\def\MT@tr@outer@icr{\afterassignment\MT@tr@outer@icr@\MT@tr@outer@r}
+\def\MT@tr@outer@icr@{%
+ \let\@let@token= \MT@tr@outer@next
+ \maybe@ic@
+}
}{
- \let\MT@tracking\relax
\DeclareRobustCommand\lsstyle{%
\MT@warning{Letterspacing only works with pdftex version 1.40\MessageBreak
or newer. You might want to use the `soul' package\MessageBreak
@@ -1370,16 +1562,16 @@ time will almost certainly lead to undesired results. Have your choice!}%
}
\DeclareRobustCommand\textls{%
\hmode@bgroup
- \@ifstar{\let\MT@ls@adjust\MT@ls@adjust@\MT@textls}%
- {\let\MT@ls@adjust\relax \MT@textls}%
+ \@ifstar{\let\MT@ls@adjust\MT@ls@adjust@\MT@textls}%
+ {\let\MT@ls@adjust\relax \MT@textls}%
}
\newcommand\MT@textls[2][]{%
- \MT@ifempty{#1}%
- {\let\MT@letterspace@\@undefined}%
- {\KV@@sp@def\MT@letterspace@{#1}%
- \MT@ls@too@large\MT@letterspace@}%
- \lsstyle #2%
- \MT@ls@adjust
+ \MT@ifempty{#1}%
+ {\let\MT@letterspace@\@undefined}%
+ {\KV@@sp@def\MT@letterspace@{#1}%
+ \MT@ls@too@large\MT@letterspace@}%
+ \lsstyle #2%
+ \MT@ls@adjust
\egroup
}
\def\MT@ls@too@large#1{%
@@ -1406,13 +1598,30 @@ time will almost certainly lead to undesired results. Have your choice!}%
{nl}%
}%
\ifMT@do
- \pdfnoligatures\MT@font
- \MT@vinfo{... Disabling ligatures}%
+ \MT@noligatures@\MT@font\MT@nl@ligatures
\fi
}
-}{
- \let\MT@noligatures\relax
-}
+ \def\MT@noligatures@#1#2{%
+ \MT@ifdefined@c@TF#2{%
+ \MT@ifdefined@c@TF\tagcode{%
+ \MT@map@clist@c#2{%
+ \def\@tempa{##1}\MT@get@slot
+ \ifnum\MT@char > \m@ne
+ \tagcode#1\MT@char=\m@ne\fi
+ }%
+ \MT@vinfo{... Disabling ligatures for characters: #2}%
+ }{%
+ \pdfnoligatures#1%
+ \MT@warning{Cannot disable selected ligatures (pdftex doesn't\MessageBreak
+ know \@backslashchar tagcode). Disabling all ligatures of\MessageBreak
+ the font instead}%
+ }%
+ }{%
+ \pdfnoligatures#1%
+ \MT@vinfo{... Disabling ligatures}%
+ }%
+ }
+}\relax
\def\MT@load@list#1{%
\edef\@tempa{#1}%
\MT@let@cn\@tempb{MT@\MT@feat @c@\@tempa @load}%
@@ -1448,9 +1657,11 @@ time will almost certainly lead to undesired results. Have your choice!}%
\MT@vinfo{... Loading configuration file \MT@curr@file}%
\MT@xadd\MT@file@list{#1,}%
}{%
- \expandafter\MT@get@basefamily#1\relax\relax\relax
+ \MT@get@basefamily#1\@empty\@empty\@empty\@nil
\MT@exp@one@n\MT@in@clist\@tempa\MT@file@list
- \ifMT@inlist@\else
+ \ifMT@inlist@
+ \MT@xadd\MT@file@list{#1,}%
+ \else
\InputIfFileExists{mt-\@tempa.cfg}{%
\edef\MT@curr@file{mt-\@tempa.cfg}%
\MT@vinfo{... Loading configuration file \MT@curr@file}%
@@ -1475,9 +1686,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
\catcode`\}\tw@
\catcode`\#6%
\catcode`\%14%
- \MT@map@tlist@n
- {\!\"\$\&\'\(\)\*\+\,\-\.\/\:\;\<\=\>\?\[\]\_\`\|\~}%
- \@makeother
+ \MT@map@tlist@n{\!\"\$\&\'\(\)\*\+\,\-\.\/\:\;\<\=\>\?\[\]\_\`\|\~}\@makeother
}
\def\MT@begin@catcodes{%
\begingroup
@@ -1485,15 +1694,20 @@ time will almost certainly lead to undesired results. Have your choice!}%
\let\KV@@sp@def\def
}
\let\MT@end@catcodes\endgroup
-\def\MT@get@basefamily#1#2#3#4\relax{%
- \ifx#2\relax \def\@tempa{#1}\else
- \ifx#3\relax \def\@tempa{#1#2}\else
- \def\@tempa{#1#2#3}%
- \ifx\relax#4\relax \else
- \MT@ifstreq{#4}{\string x}\relax{%
- \MT@ifstreq{#4}{\string j}\relax{%
- \MT@ifstreq{#4}{\string w}\relax{%
- \def\@tempa{#1#2#3#4}}}}\fi\fi\fi
+\def\MT@get@basefamily#1#2#3#4\@nil{%
+ \ifx\@empty#4%
+ \def\@tempa{#1#2#3}%
+ \else
+ \let\@tempa\@empty
+ \edef\@tempb{#1#2#3#4}%
+ \expandafter\MT@get@basefamily@\@tempb\@nil
+ \fi
+}
+\def\MT@get@basefamily@#1#2\@nil{%
+ \edef\@tempa{\@tempa#1}%
+ \ifx\\#2\\\expandafter\@gobble\else\expandafter\@firstofone\fi
+ {\MT@in@tlist{#2}\MT@variants
+ \ifMT@inlist@\else\MT@get@basefamily@#2\@nil\fi}%
}
\def\MT@get@listname#1{%
\let\MT@listname\@undefined
@@ -1618,7 +1832,6 @@ time will almost certainly lead to undesired results. Have your choice!}%
\escapechar\m@ne
}
\newif\ifMT@norest
-\def\MT@testrest#1#2{\MT@ifstreq{#1}{#2}\relax\MT@norestfalse}
\def\MT@is@letter#1#2\relax{%
\ifcat a\noexpand#1\relax
\edef\MT@char@{\number`#1}%
@@ -1678,15 +1891,15 @@ time will almost certainly lead to undesired results. Have your choice!}%
\def\MT@undefined@char#1{undefined in input encoding ``#1''}
\def\MT@is@symbol{%
\expandafter\def\expandafter\MT@char\expandafter
- {\csname\MT@encoding\MT@detokenize@c\@tempa\endcsname}%
+ {\csname\MT@encoding\MT@detokenize@c\@tempa\endcsname}%
\expandafter\MT@exp@two@c\expandafter\MT@is@char\expandafter
\meaning\expandafter\MT@char\MT@charstring\relax\relax\relax
\ifnum\MT@char@ < \z@
- \expandafter\MT@is@letter\MT@char\relax\relax
+ \expandafter\expandafter\expandafter\MT@is@letter\MT@char\relax\relax
\fi
}
\begingroup
- \catcode`\/=0
+ \catcode`\/=\z@
/MT@map@tlist@n{/\CHAR}/@makeother
/lowercase{%
/def/x{%
@@ -1695,10 +1908,10 @@ time will almost certainly lead to undesired results. Have your choice!}%
/ifx/relax##1/relax
/if##3\/relax
/edef/MT@char@{/number"##2}%
- /MT@testrest/MT@charstring{##3##4}%
+ /MT@ifstreq/MT@charstring{##3##4}/relax/MT@norestfalse
/else
/edef/MT@char@{/number"##2##3}%
- /MT@testrest/MT@charstring{##4}%
+ /MT@ifstreq/MT@charstring{##4}/relax/MT@norestfalse
/fi
/fi
}%
@@ -1707,12 +1920,10 @@ 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\MT@char{\expandafter\csname\expandafter
+ \expandafter\def\expandafter\MT@char\expandafter{\csname\expandafter
\string\csname\MT@encoding\endcsname
- \MT@detokenize@n{#1}-%
- \MT@detokenize@n{#2}%
- \endcsname}%
- \expandafter\MT@is@letter\MT@char\relax\relax
+ \MT@detokenize@n{#1}-\MT@detokenize@n{#2}\endcsname}%
+ \expandafter\expandafter\expandafter\MT@is@letter\MT@char\relax\relax
\fi
}
\def\MT@set@listname{%
@@ -1753,9 +1964,8 @@ time will almost certainly lead to undesired results. Have your choice!}%
\let\MT@font@list\@empty
\let\MT@font\@empty
\MT@addto@setup{%
- \g@addto@macro\do@subst@correction{%
- \xdef\MT@font{\csname \curr@fontshape/\f@size\endcsname}%
- }
+ \g@addto@macro\do@subst@correction
+ {\xdef\MT@font{\csname \curr@fontshape/\f@size\endcsname}}
\@ifpackageloaded{CJK}{
\@ifpackagelater{CJK}{2006/10/17}
{\def\MT@orig@pickupfont{\CJK@ifundefined\CJK@plane}} % 4.7.0
@@ -1776,7 +1986,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
}
\fi
\g@addto@macro\pickup@font{\begingroup}
- \MT@with@package{trace}{\g@addto@macro\pickup@font{\conditionally@traceoff}}
+ \MT@with@package@T{trace}{\g@addto@macro\pickup@font{\conditionally@traceoff}}
\g@addto@macro\pickup@font{%
\escapechar\m@ne
\ifx\MT@font\@empty
@@ -1830,11 +2040,11 @@ time will almost certainly lead to undesired results. Have your choice!}%
\def\@tempa{##1}%
\expandafter\MT@map@tlist@c
\csname MT@##1@doc@contexts\endcsname
- \MT@rem@from@lists
+ \MT@maybe@rem@from@list
\fi
}%
}
-\def\MT@rem@from@lists#1{%
+\def\MT@maybe@rem@from@list#1{%
\MT@ifstreq{\@tempa/#1}{\@tempa/\csname MT@\@tempa @context\endcsname}\relax{%
\expandafter\MT@exp@one@n\expandafter\MT@rem@from@clist\expandafter
\MT@font \csname MT@\@tempa @#1font@list\endcsname
@@ -1850,6 +2060,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
\MT@reset@context
}%
}
+\def\textmicrotypecontext#1#2{{\microtypecontext{#1}#2}}
\def\MT@reset@context@{%
\MT@vinfo{<<< Resetting contexts\on@line
}%
@@ -1863,13 +2074,12 @@ time will almost certainly lead to undesired results. Have your choice!}%
\MT@glet\MT@register@subst@font\MT@register@subst@font@cx
\MT@glet\MT@setup@contexts\relax
}
-\def\MT@define@context#1{%
+\MT@map@clist@c\MT@features@long{%
\define@key{MTC}{#1}[]{%
- \KV@@sp@def\@tempb{#1}%
- \edef\@tempb{\@nameuse{MT@rbba@\@tempb}}%
+ \edef\@tempb{\@nameuse{MT@rbba@#1}}%
\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}}%
+ \MT@ifempty{##1}{\def\MT@val{@}}{\def\MT@val{##1}}%
\expandafter\ifx\csname MT@\@tempb @context\endcsname\MT@val
\else
\MT@vinfo{>>> Changing #1 context to `\MT@val'\MessageBreak\on@line
@@ -1886,7 +2096,6 @@ time will almost certainly lead to undesired results. Have your choice!}%
\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}{{@}}%
@@ -1894,19 +2103,10 @@ time will almost certainly lead to undesired results. Have your choice!}%
\let\MT@extra@context\@empty
\def\DeclareMicrotypeSet{%
\@ifstar
- {\@ifnextchar[\MT@DeclareSetAndUseIt
- {\MT@DeclareSetAndUseIt[]}}%
- {\@ifnextchar[\MT@DeclareSet
- {\MT@DeclareSet[]}}%
-}
-\def\MT@DeclareSet[#1]{%
- \MT@DeclareSet@{#1}%
+ \MT@DeclareSetAndUseIt
+ \MT@DeclareSet
}
-\def\MT@DeclareSetAndUseIt[#1]#2#3{%
- \MT@DeclareSet@{#1}{#2}{#3}%
- \UseMicrotypeSet[#1]{#2}%
-}
-\def\MT@DeclareSet@#1#2#3{%
+\newcommand\MT@DeclareSet[3][]{%
\KV@@sp@def\@tempa{#1}%
\MT@ifempty\@tempa{%
\MT@map@clist@c\MT@features{{\MT@declare@sets{##1}{#2}{#3}}}%
@@ -1922,6 +2122,10 @@ time will almost certainly lead to undesired results. Have your choice!}%
}}%
}%
}
+\newcommand\MT@DeclareSetAndUseIt[3][]{%
+ \MT@DeclareSet[#1]{#2}{#3}%
+ \UseMicrotypeSet[#1]{#2}%
+}
\let\MT@curr@set@name\@empty
\def\MT@declare@sets#1#2#3{%
\KV@@sp@def\MT@curr@set@name{#2}%
@@ -1932,14 +2136,6 @@ time will almost certainly lead to undesired results. Have your choice!}%
\global\MT@let@nc{MT@#1@set@@\MT@curr@set@name}\@empty
\setkeys{MT@#1@set}{#3}%
}
-\def\MT@define@set@keys#1{%
- \MT@define@set@key@{encoding}{#1}%
- \MT@define@set@key@{family}{#1}%
- \MT@define@set@key@{series}{#1}%
- \MT@define@set@key@{shape}{#1}%
- \MT@define@set@key@size{#1}%
- \MT@define@set@key@font{#1}%
-}
\def\MT@define@set@key@#1#2{%
\define@key{MT@#2@set}{#1}[]{%
\global\MT@let@nc{MT@#2list@#1@\MT@curr@set@name}\@empty
@@ -1955,19 +2151,19 @@ time will almost certainly lead to undesired results. Have your choice!}%
}%
}
\def\MT@get@highlevel#1{%
- \expandafter\MT@test@ast\MT@val*\@nil{%
+ \expandafter\MT@test@ast\MT@val*\@nil\relax{%
\MT@ifempty\@tempa{\def\@tempa{#1}}\relax
\edef\MT@val{\expandafter\noexpand\csname \@tempa default\endcsname}%
}%
}
\def\MT@test@ast#1*#2\@nil{%
\def\@tempa{#1}%
- \MT@ifempty{#2}\@gobble\@firstofone
+ \MT@ifempty{#2}%
}
\let\MT@font@sets\@empty
\def\MT@fix@font@set#1{%
\xdef#1{#1}%
- \global\MT@make@string#1%
+ \global\@onelevel@sanitize#1%
}
\def\MT@define@set@key@size#1{%
\define@key{MT@#1@set}{size}[]{%
@@ -2059,24 +2255,28 @@ time will almost certainly lead to undesired results. Have your choice!}%
}
\def\MT@get@font#1/#2/#3/#4/#5/#6\@nil{%
\MT@ifempty{#1#2#3#4#5}\relax{%
- \let\@tempb\@empty
- \def\MT@temp{#1/#2/#3/#4/#5}%
- \MT@get@axis{encoding}{#1}%
- \MT@get@axis{family}{#2}%
- \MT@get@axis{series}{#3}%
- \MT@get@axis{shape}{#4}%
- \MT@ifempty{#5}{%
- \MT@warn@axis@empty{size}{\string\normalsize}%
- \def\MT@val{*}%
- }{%
- \def\MT@val{#5}%
- }%
- \MT@get@size
+ \MT@get@font@{#1}{#2}{#3}{#4}{#5}{0}%
\ifx\MT@val\relax\def\MT@val{0}\fi
\expandafter\g@addto@macro\expandafter\@tempb\expandafter{\MT@val}%
\let\MT@val\@tempb
}%
}
+\def\MT@get@font@#1#2#3#4#5#6{%
+ \let\@tempb\@empty
+ \def\MT@temp{#1/#2/#3/#4/#5}%
+ \MT@get@axis{encoding}{#1}%
+ \MT@get@axis{family} {#2}%
+ \MT@get@axis{series} {#3}%
+ \MT@get@axis{shape} {#4}%
+ \ifnum#6>\z@\edef\@tempb{\@tempb*}\fi
+ \MT@ifempty{#5}{%
+ \MT@warn@axis@empty{size}{\string\normalsize}%
+ \def\MT@val{*}%
+ }{%
+ \def\MT@val{#5}%
+ }%
+ \MT@get@size
+}
\def\MT@get@axis#1#2{%
\def\MT@val{#2}%
\MT@get@highlevel{#1}%
@@ -2090,14 +2290,20 @@ time will almost certainly lead to undesired results. Have your choice!}%
\MT@warning{#1 axis is empty in font specification\MessageBreak
`\MT@temp'. Using `#2' instead}%
}
-\MT@map@clist@c\MT@features{\MT@define@set@keys{#1}}
-\MT@define@set@keys{nl}
+\MT@exp@one@n\MT@map@clist@n{\MT@features,nl}{%
+ \MT@define@set@key@{encoding}{#1}%
+ \MT@define@set@key@{family}{#1}%
+ \MT@define@set@key@{series}{#1}%
+ \MT@define@set@key@{shape}{#1}%
+ \MT@define@set@key@size{#1}%
+ \MT@define@set@key@font{#1}%
+}
\renewcommand*\UseMicrotypeSet[2][]{%
\KV@@sp@def\@tempa{#1}%
\MT@ifempty\@tempa{%
\MT@map@clist@c\MT@features{{\MT@use@set{##1}{#2}}}%
}{%
- \MT@map@clist@c\@tempa{%
+ \MT@map@clist@c\@tempa{{%
\KV@@sp@def\@tempa{##1}%
\MT@ifempty\@tempa\relax{%
\MT@is@feature{activation of set `#2'}{%
@@ -2105,7 +2311,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
{\csname MT@rbba@\@tempa\endcsname}{#2}%
}%
}%
- }%
+ }}%
}%
}
\def\MT@use@set#1#2{%
@@ -2122,21 +2328,6 @@ time will almost certainly lead to undesired results. Have your choice!}%
Using set `\@nameuse{MT@#1@setname}' instead}%
}%
}
-\MT@requires@pdftex5{
- \renewcommand*\DisableLigatures[1]{%
- \edef\MT@active@features{\MT@active@features,nl}%
- \MT@noligaturestrue
- \MT@declare@sets{nl}{no ligatures}{#1}%
- \gdef\MT@nl@setname{no ligatures}%
- }
-}{
- \renewcommand*\DisableLigatures[1]{%
- \MT@warning{Disabling ligatures of a font is only possible\MessageBreak
- with pdftex version 1.30 or newer.\MessageBreak
- Ignoring \string\DisableLigatures}%
- \MT@glet\DisableLigatures\@gobble
- }
-}
\renewcommand*\DeclareMicrotypeSetDefault[2][]{%
\KV@@sp@def\@tempa{#1}%
\MT@ifempty\@tempa{%
@@ -2164,10 +2355,23 @@ time will almost certainly lead to undesired results. Have your choice!}%
\MT@xdef@n{MT@default@#1@set}{all}%
}%
}
+\let\MT@variants\@empty
+\def\DeclareMicrotypeVariants{%
+ \@ifstar
+ \MT@DeclareVariants
+ {\let\MT@variants\@empty\MT@DeclareVariants}%
+}
+\def\MT@DeclareVariants#1{%
+ \MT@map@clist@n{#1}{%
+ \KV@@sp@def\@tempa{##1}%
+ \@onelevel@sanitize\@tempa
+ \xdef\MT@variants{\MT@variants{\@tempa}}%
+ }%
+}
\renewcommand*\DeclareMicrotypeAlias[2]{%
\KV@@sp@def\@tempa{#1}%
\KV@@sp@def\@tempb{#2}%
- \MT@make@string\@tempb
+ \@onelevel@sanitize\@tempb
\MT@ifdefined@n@T{MT@\@tempa @alias}{%
\MT@warning{Alias font family `\@tempb' will override
alias `\@nameuse{MT@\@tempa @alias}'\MessageBreak
@@ -2179,7 +2383,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
}
\def\LoadMicrotypeFile#1{%
\KV@@sp@def\@tempa{#1}%
- \MT@make@string\@tempa
+ \@onelevel@sanitize\@tempa
\MT@exp@one@n\MT@in@clist\@tempa\MT@file@list
\ifMT@inlist@
\MT@vinfo{... Configuration file mt-\@tempa.cfg already loaded}%
@@ -2196,6 +2400,26 @@ time will almost certainly lead to undesired results. Have your choice!}%
\MT@end@catcodes
\fi
}
+\MT@requires@pdftex5{
+ \def\DisableLigatures{%
+ \MT@begin@catcodes
+ \MT@DisableLigatures
+ }
+ \newcommand*\MT@DisableLigatures[2][]{%
+ \MT@ifempty{#1}\relax{\gdef\MT@nl@ligatures{#1}}%
+ \xdef\MT@active@features{\MT@active@features,nl}%
+ \global\MT@noligaturestrue
+ \MT@declare@sets{nl}{no ligatures}{#2}%
+ \gdef\MT@nl@setname{no ligatures}%
+ \MT@end@catcodes
+ }
+}{
+ \renewcommand*\DisableLigatures[2][]{%
+ \MT@warning{Disabling ligatures of a font is only possible\MessageBreak
+ with pdftex version 1.30 or newer.\MessageBreak
+ Ignoring \string\DisableLigatures}%
+ }
+}
\def\DeclareMicrotypeBabelHook#1#2{%
\MT@map@clist@n{#1}{%
\KV@@sp@def\@tempa{##1}%
@@ -2246,7 +2470,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
\def\MT@permutelist{tr@c}%
\setkeys{MT@cfg}{#2}%
\MT@permute
- \MT@gdef@n{MT@tr@c@\MT@tr@c@name}{#3}%
+ \MT@ifempty{#3}\relax{\MT@gdef@n{MT@tr@c@\MT@tr@c@name}{#3}}%
\MT@end@catcodes
}
\def\SetExtraSpacing{%
@@ -2321,22 +2545,8 @@ time will almost certainly lead to undesired results. Have your choice!}%
}%
}
\def\MT@get@font@and@size#1/#2/#3/#4/#5/#6\@nil{%
- \MT@ifempty{#1#2#3#4#5}\relax{%
- \let\@tempb\@empty
- \def\MT@temp{#1/#2/#3/#4/#5}%
- \MT@get@axis{encoding}{#1}%
- \MT@get@axis{family}{#2}%
- \MT@get@axis{series}{#3}%
- \MT@get@axis{shape}{#4}%
- \edef\@tempb{\@tempb*}%
- \MT@ifempty{#5}{%
- \MT@warn@axis@empty{size}{\string\normalsize}%
- \def\MT@val{*}%
- }{%
- \def\MT@val{#5}%
- }%
- \MT@get@size
- }%
+ \MT@ifempty{#1#2#3#4#5}\relax
+ {\MT@get@font@{#1}{#2}{#3}{#4}{#5}{1}}%
}
\MT@define@code@key{encoding}{cfg}
\MT@define@code@key{family}{cfg}
@@ -2344,7 +2554,11 @@ time will almost certainly lead to undesired results. Have your choice!}%
\MT@define@code@key{shape}{cfg}
\MT@define@code@key@size{cfg}
\MT@define@code@key@font{cfg}
-\def\MT@define@opt@keys#1{%
+\def\MT@define@opt@key#1#2{%
+ \define@key{MT@#1@c}{#2}[]{\MT@ifempty{##1}\relax{%
+ \MT@xdef@n{MT@#1@c@\MT@curr@set@name @#2}{##1}}}%
+}
+\MT@map@clist@c\MT@features{%
\define@key{MT@#1@c}{name}[]{%
\MT@ifempty{##1}{%
\MT@edef@n{MT@#1@c@name}{\MT@curr@file/\the\inputlineno}%
@@ -2362,57 +2576,66 @@ time will almost certainly lead to undesired results. Have your choice!}%
\MT@define@opt@key{#1}{inputenc}%
\define@key{MT@#1@c}{context}[]{\MT@ifempty{##1}\relax{\def\MT@extra@context{##1}}}%
}
-\def\MT@define@opt@key#1#2{%
- \define@key{MT@#1@c}{#2}[]{\MT@ifempty{##1}\relax{%
- \MT@xdef@n{MT@#1@c@\MT@curr@set@name @#2}{##1}}}%
+\MT@requires@pdftex7{
+ \define@key{MT@ex@c}{context}[]{\MT@ifempty{#1}\relax{%
+ \MT@glet\MT@copy@font\MT@copy@font@
+ \def\MT@extra@context{#1}}%
+ }
+ \MT@addto@setup{%
+ \define@key{MT@ex@c}{context}[]{%
+ \ifx\MT@copy@font\MT@copy@font@
+ \MT@ifempty{#1}\relax{\def\MT@extra@context{#1}}%
+ \else
+ \MT@error{\MT@MT\space isn't set up for expansion contexts.\MessageBreak
+ Ignoring `context' key\on@line}%
+ {Either move the settings inside the preamble,\MessageBreak
+ or load the package with the `copyfonts' option.}%
+ \fi
+ }
+ }
+}{
+ \define@key{MT@ex@c}{context}[]{%
+ \MT@error{Expansion contexts only work with pdftex 1.40.4\MessageBreak
+ or later. Ignoring `context' key\on@line}%
+ {Upgrade pdftex.}%
+ }
+}
+\def\MT@warn@nodim#1{%
+ \MT@warning{`\@tempa' is not a dimension.\MessageBreak
+ Ignoring it and setting values relative to\MessageBreak #1}%
}
-\MT@map@clist@c\MT@features{\MT@define@opt@keys{#1}}
\define@key{MT@pr@c}{unit}[character]{%
\global\MT@let@nc{MT@pr@c@\MT@curr@set@name @unit}\@empty
\def\@tempa{#1}%
\MT@ifstreq\@tempa{character}\relax{%
- \MT@ifdimen\@tempa{%
- \global\MT@let@nc{MT@pr@c@\MT@curr@set@name @unit}\@tempa
- }{%
- \MT@warning{`\@tempa' is not a dimension.\MessageBreak
- Ignoring it and setting values relative to\MessageBreak
- character widths}%
- }%
+ \MT@ifdimen\@tempa
+ {\global\MT@let@nc{MT@pr@c@\MT@curr@set@name @unit}\@tempa}%
+ {\MT@warn@nodim{character widths}}%
}%
}
\define@key{MT@tr@c}{unit}[1em]{%
\global\MT@let@nc{MT@tr@c@\MT@curr@set@name @unit}\@empty
\def\@tempa{#1}%
- \MT@ifdimen\@tempa{%
- \global\MT@let@nc{MT@tr@c@\MT@curr@set@name @unit}\@tempa
- }{%
- \MT@warning{`\@tempa' is not a dimension.\MessageBreak
- Ignoring it and setting values relative to\MessageBreak
- 1em}%
- \MT@gdef@n{MT@tr@c@\MT@curr@set@name @unit}{1em}%
- }%
+ \MT@ifdimen\@tempa
+ {\global\MT@let@nc{MT@tr@c@\MT@curr@set@name @unit}\@tempa}%
+ {\MT@warn@nodim{1em}%
+ \MT@gdef@n{MT@tr@c@\MT@curr@set@name @unit}{1em}}%
}
-\def\MT@define@key@unit#1{%
+\MT@map@clist@n{sp,kn}{%
\define@key{MT@#1@c}{unit}[space]{%
\global\MT@let@nc{MT@#1@c@\MT@curr@set@name @unit}\@empty
\def\@tempa{##1}%
\MT@ifstreq\@tempa{character}\relax{%
\global\MT@let@nc{MT@#1@c@\MT@curr@set@name @unit}\m@ne
\MT@ifstreq\@tempa{space}\relax{%
- \MT@ifdimen\@tempa{%
- \global\MT@let@nc{MT@#1@c@\MT@curr@set@name @unit}\@tempa
- }{%
- \MT@warning{`\@tempa' is not a dimension.\MessageBreak
- Ignoring it and setting values relative to\MessageBreak
- width of space}%
- }%
+ \MT@ifdimen\@tempa
+ {\global\MT@let@nc{MT@#1@c@\MT@curr@set@name @unit}\@tempa}%
+ {\MT@warn@nodim{width of space}}%
}%
}%
}%
}
-\MT@define@key@unit{sp}
-\MT@define@key@unit{kn}
-\def\MT@define@ex@opt@key#1{%
+\MT@map@clist@n{stretch,shrink,step}{%
\define@key{MT@ex@c}{#1}[]{%
\MT@ifempty{##1}\relax{%
\MT@ifint{##1}{%
@@ -2425,9 +2648,6 @@ time will almost certainly lead to undesired results. Have your choice!}%
}%
}%
}
-\MT@define@ex@opt@key{stretch}
-\MT@define@ex@opt@key{shrink}
-\MT@define@ex@opt@key{step}
\define@key{MT@ex@c}{auto}[true]{%
\def\@tempa{#1}%
\csname if\@tempa\endcsname
@@ -2442,6 +2662,12 @@ time will almost certainly lead to undesired results. Have your choice!}%
}\relax
\fi
}
+\MT@define@opt@key{tr}{spacing}
+\MT@define@opt@key{tr}{outerspacing}
+\define@key{MT@tr@c}{outer spacing}[]{\setkeys{MT@tr@c}{outerspacing={#1}}}
+\define@key{MT@tr@c}{noligatures}[]%
+ {\MT@xdef@n{MT@tr@c@\MT@curr@set@name @noligatures}{#1}}
+\define@key{MT@tr@c}{no ligatures}[]{\setkeys{MT@tr@c}{noligatures={#1}}}
\renewcommand*\DeclareCharacterInheritance[1][]{%
\let\MT@extra@context\@empty
\let\MT@extra@inputenc\@undefined
@@ -2585,9 +2811,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
\else
\MT@ifdefined@c@TF\MT@tempsize{%
\MT@ifdefined@n@T{MT@\MT@permutelist @\@tempa\MT@extra@context @sizes}{%
- \MT@map@tlist@c
- \MT@tempsize
- \MT@check@rlist
+ \MT@map@tlist@c\MT@tempsize\MT@check@rlist
}%
\expandafter\MT@xaddb
\csname MT@\MT@permutelist @\@tempa\MT@extra@context @sizes\endcsname
@@ -2667,7 +2891,24 @@ time will almost certainly lead to undesired results. Have your choice!}%
\newif\ifMT@opt@expansion
\newif\ifMT@opt@auto
\newif\ifMT@opt@DVI
-\def\MT@define@option#1{%
+\def\MT@optwarn@admissible#1#2{%
+ \MT@warning@nl{`#1' is not an admissible value for option\MessageBreak
+ `#2'. Assuming `false'}%
+}
+\def\MT@optwarn@nan#1#2{%
+ \MT@warning@nl{Value `#1' for option `#2' is not a\MessageBreak number.
+ Using default value of \number\@nameuse{MT@#2@default}}%
+}
+\def\MT@opt@def@set#1{%
+ \MT@ifdefined@n@TF{MT@\@tempb @set@@\MT@val}{%
+ \MT@xdef@n{MT@\@tempb @setname}{\MT@val}%
+ }{%
+ \MT@xdef@n{MT@\@tempb @setname}{\@nameuse{MT@default@\@tempb @set}}%
+ \MT@warning@nl{The #1 set `\MT@val' is undeclared.\MessageBreak
+ Using set `\@nameuse{MT@\@tempb @setname}' instead}%
+ }%
+}
+\MT@map@clist@n{protrusion,expansion}{%
\define@key{MT}{#1}[true]{%
\csname MT@opt@#1true\endcsname
\MT@map@clist@n{##1}{%
@@ -2686,15 +2927,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
\MT@ifstreq\MT@val{nocompatibility}{%
\MT@let@nc{MT@\@tempb @level}\tw@
}{%
- \MT@ifdefined@n@TF{MT@\@tempb @set@@\MT@val}{%
- \MT@xdef@n{MT@\@tempb @setname}{\MT@val}%
- }{%
- \MT@xdef@n{MT@\@tempb @setname}%
- {\@nameuse{MT@default@\@tempb @set}}%
- \MT@warning@nl{%
- The #1 set `\MT@val' is undeclared.\MessageBreak
- Using set `\@nameuse{MT@\@tempb @setname}' instead}%
- }%
+ \MT@opt@def@set{#1}%
}%
}%
}%
@@ -2703,61 +2936,44 @@ time will almost certainly lead to undesired results. Have your choice!}%
}%
}%
}
-\MT@define@option{protrusion}
-\MT@define@option{expansion}
\define@key{MT}{activate}[true]{%
- \setkeys{MT}{protrusion={#1}}%
- \setkeys{MT}{expansion={#1}}%
+ \setkeys{MT}{protrusion={#1}}%
+ \setkeys{MT}{expansion={#1}}%
}
-\def\MT@define@option@#1{%
+\MT@map@clist@n{spacing,kerning,tracking}{%
\define@key{MT}{#1}[true]{%
- \csname MT@opt@#1true\endcsname
\MT@map@clist@n{##1}{%
\KV@@sp@def\MT@val{####1}%
\MT@ifempty\MT@val\relax{%
\csname MT@#1true\endcsname
- \edef\@tempb{\csname MT@rbba@#1\endcsname}%
\MT@ifstreq\MT@val{true}\relax
{%
\MT@ifstreq\MT@val{false}{%
\csname MT@#1false\endcsname
}{%
- \MT@ifdefined@n@TF{MT@\@tempb @set@@\MT@val}{%
- \MT@xdef@n{MT@\@tempb @setname}{\MT@val}%
- }{%
- \MT@xdef@n{MT@\@tempb @setname}%
- {\@nameuse{MT@default@\@tempb @set}}%
- \MT@warning@nl{%
- The #1 set `\MT@val' is undeclared.\MessageBreak
- Using set `\@nameuse{MT@\@tempb @setname}' instead}%
- }%
+ \edef\@tempb{\csname MT@rbba@#1\endcsname}%
+ \MT@opt@def@set{#1}%
}%
}%
}%
}%
}%
}
-\MT@define@option@{spacing}
-\MT@define@option@{kerning}
-\MT@define@option@{tracking}
\def\MT@def@bool@opt#1#2{%
- \define@key{MT}{#1}[]{%
- \MT@ifempty{##1}%
- {\def\@tempa{true}}%
- {\def\@tempa{##1}}%
+ \define@key{MT}{#1}[true]{%
+ \def\@tempa{##1}%
\MT@ifstreq\@tempa{true}\relax{%
\MT@ifstreq\@tempa{false}\relax{%
- \MT@warning@nl{%
- `##1' is not an admissible value for option\MessageBreak
- `#1'. Assuming `false'}%
+ \MT@optwarn@admissible{##1}{#1}%
\def\@tempa{false}%
}%
}%
#2%
}%
}
-\def\MT@def@simple@bool@opt#1{\MT@def@bool@opt{#1}{\csname MT@#1\@tempa\endcsname}}
-\MT@map@tlist@n{{draft}{auto}{selected}{babel}}\MT@def@simple@bool@opt
+\MT@map@clist@n{draft,selected,babel}{%
+ \MT@def@bool@opt{#1}{\csname MT@#1\@tempa\endcsname}}
+\MT@def@bool@opt{auto}{\csname MT@auto\@tempa\endcsname \MT@opt@autotrue}
\MT@def@bool@opt{DVIoutput}{%
\csname if\@tempa\endcsname
\ifnum\pdfoutput>\z@ \MT@opt@DVItrue \fi
@@ -2776,6 +2992,23 @@ time will almost certainly lead to undesired results. Have your choice!}%
}%
\fi
}
+\MT@requires@pdftex7{
+ \MT@def@bool@opt{copyfonts}{%
+ \csname if\@tempa\endcsname
+ \MT@glet\MT@copy@font\MT@copy@font@
+ \else
+ \MT@glet\MT@copy@font\relax
+ \fi
+ }
+}{
+ \MT@def@bool@opt{copyfonts}{%
+ \csname if\@tempa\endcsname
+ \MT@error{The pdftex version you are using is too old\MessageBreak
+ to use the `copyfonts' option}
+ {Please upgrade pdftex.}%
+ \fi
+ }
+}
\MT@def@bool@opt{final}{%
\csname if\@tempa\endcsname
\MT@draftfalse
@@ -2783,61 +3016,44 @@ time will almost certainly lead to undesired results. Have your choice!}%
\MT@drafttrue
\fi
}
-\define@key{MT}{verbose}[]{%
+\define@key{MT}{verbose}[true]{%
\let\MT@vinfo\MT@info@nl
- \MT@ifempty{#1}%
- {\def\@tempa{true}}%
- {\def\@tempa{#1}}%
+ \def\@tempa{#1}%
\MT@ifstreq\@tempa{true}\relax{%
\MT@ifstreq\@tempa{errors}{%
\let\MT@warning\MT@warn@err
\let\MT@warning@nl\MT@warn@err
}{%
\let\MT@vinfo\@gobble
- \MT@ifstreq\@tempa{false}\relax{%
- \MT@warning@nl{%
- `#1' is not an admissible value for option\MessageBreak
- `verbose'. Assuming `false'}%
- }%
+ \MT@ifstreq\@tempa{false}\relax
+ {\MT@optwarn@admissible{#1}{verbose}}%
}%
}%
}
-\def\MT@def@num@opt#1{%
- \define@key{MT}{#1}[]{%
- \MT@ifempty{##1}%
- {\MT@let@cn\@tempa{MT@#1@default}}%
- {\def\@tempa{##1 }}%
- \MT@ifint\@tempa{%
- \MT@edef@n{MT@#1}{\@tempa}%
- }{\MT@warning@nl{%
- Value `##1' for option `#1' is not a number.\MessageBreak
- Using default value of \number\@nameuse{MT@#1@default}}%
- }%
+\MT@map@clist@n{%
+ stretch,shrink,step,%
+ letterspace}{%
+ \define@key{MT}{#1}[\csname MT@#1@default\endcsname]{%
+ \def\@tempa{##1 }%
+ \MT@ifint\@tempa
+ {\MT@edef@n{MT@#1}{\@tempa}}%
+ {\MT@optwarn@nan{##1}{#1}}%
}%
}
-\MT@map@tlist@n{{stretch}{shrink}{step}{letterspace}}\MT@def@num@opt
-\define@key{MT}{factor}[]{%
- \MT@ifempty{#1}%
- {\let\@tempa\MT@factor@default}%
- {\def\@tempa{#1 }}%
- \MT@ifint\@tempa{%
- \edef\MT@pr@factor{\@tempa}%
- }{\MT@warning@nl{%
- Value `#1' for option `factor' is not a number.\MessageBreak
- Using default value of \number\MT@factor@default}%
- }%
+\define@key{MT}{factor}[\MT@factor@default]{%
+ \def\@tempa{#1 }%
+ \MT@ifint\@tempa
+ {\edef\MT@pr@factor{\@tempa}}
+ {\MT@optwarn@nan{#1}{factor}}%
}
-\define@key{MT}{unit}[]{%
- \MT@ifempty{#1}%
- {\def\@tempa{character}}%
- {\KV@@sp@def\@tempa{#1}}%
+\define@key{MT}{unit}[character]{%
+ \def\@tempa{#1}%
\MT@ifstreq\@tempa{character}\relax{%
- \MT@ifdimen\@tempa{%
- \let\MT@pr@unit\@tempa
- }{%
- \MT@warning@nl{`\@tempa' is not a dimension. Ignoring it and\MessageBreak
- setting values relative to character widths}%
- }%
+ \MT@ifdimen\@tempa
+ {\let\MT@pr@unit\@tempa}%
+ {\MT@warning@nl{`\@tempa' is not a dimension.\MessageBreak
+ Ignoring it and setting values relative to\MessageBreak
+ character widths}}%
}%
}
\MT@protrusiontrue
@@ -2851,7 +3067,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
\def\MT@get@config#1config=#2,#3\@nil{%
\MT@ifempty{#2}%
{\def\MT@config@file{\MT@MT.cfg}}%
- {\KV@@sp@def\MT@config@file{#2.cfg}}%
+ {\def\MT@config@file{#2.cfg}}%
}
\expandafter\expandafter\expandafter\MT@get@config
\csname opt@\@currname.\@currext\endcsname,config=,\@nil
@@ -2878,7 +3094,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
}{%
\global\MT@let@nn{MT@#1@setname}{MT@default@#1@set}%
\MT@info@nl{Using default \@nameuse{MT@abbr@#1} set `\@nameuse{MT@#1@setname}'}%
- }
+ }%
}
\MT@ifdefined@c@T\MicroType@Hook{\MT@warning{%
Command \string\MicroType@Hook\space is deprecated.\MessageBreak
@@ -2888,14 +3104,13 @@ time will almost certainly lead to undesired results. Have your choice!}%
\MT@addto@setup{\def\microtypesetup{\setkeys{MTX}}}
\def\MT@define@optionX#1#2{%
\define@key{MTX}{#1}[true]{%
- \KV@@sp@def\@tempb{#1}%
+ \edef\@tempb{\csname MT@rbba@#1\endcsname}%
\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{%
+ \MT@checksetup{#1}{%
\expandafter\@tempcnta=\csname MT@\@tempb @level\endcsname
\MT@info{Enabling #1
(level \number\csname MT@\@tempb @level\endcsname)}%
@@ -2906,20 +3121,19 @@ time will almost certainly lead to undesired results. Have your choice!}%
\MT@info{Disabling #1}%
}{%
\MT@ifstreq\MT@val{compatibility}{%
- \MT@checksetup\@tempb{%
+ \MT@checksetup{#1}{%
\@tempcnta=\@ne
\MT@let@nc{MT@\@tempb @level}\@ne
\MT@info{Setting #1 to level 1}%
}%
}{%
\MT@ifstreq\MT@val{nocompatibility}{%
- \MT@checksetup\@tempb{%
+ \MT@checksetup{#1}{%
\@tempcnta=\tw@
\MT@let@nc{MT@\@tempb @level}\tw@
\MT@info{Setting #1 to level 2}%
}%
- }{%
- \MT@warning{%
+ }{\MT@warning{%
Value `\MT@val' for key `#1' not recognised.\MessageBreak
Use any of `true', `false', `compatibility' or\MessageBreak
`nocompatibility'}%
@@ -2935,12 +3149,11 @@ time will almost certainly lead to undesired results. Have your choice!}%
}%
}
\def\MT@checksetup#1{%
- \expandafter\csname ifMT@\csname MT@abbr@#1\endcsname\endcsname
+ \expandafter\csname ifMT@#1\endcsname
\expandafter\@firstofone
\else
- \MT@warning{%
- You cannot enable \@nameuse{MT@abbr@#1} if it was disabled\MessageBreak
- in the package options,}%
+ \MT@warning{You cannot enable #1 if it was disabled\MessageBreak
+ in the package options,}%
\expandafter\@gobble
\fi
}
@@ -2949,14 +3162,12 @@ time will almost certainly lead to undesired results. Have your choice!}%
\MT@requires@pdftex6{
\def\MT@define@optionX@#1#2{%
\define@key{MTX}{#1}[true]{%
- \KV@@sp@def\@tempb{#1}%
\MT@map@clist@n{##1}{%
\KV@@sp@def\MT@val{####1}%
- \edef\@tempb{\csname MT@rbba@\@tempb\endcsname}%
\MT@ifempty\MT@val\relax{%
\@tempcnta=\m@ne
\MT@ifstreq\MT@val{true}{%
- \MT@checksetup\@tempb{%
+ \MT@checksetup{#1}{%
\@tempcnta=\@ne
\MT@info{Enabling #1}%
}%
@@ -2964,10 +3175,8 @@ time will almost certainly lead to undesired results. Have your choice!}%
\MT@ifstreq\MT@val{false}{%
\@tempcnta=\z@
\MT@info{Disabling #1}%
- }{%
- \MT@warning{%
- Value `\MT@val' for key `#1' not recognised.\MessageBreak
- Use either `true' or `false'}%
+ }{\MT@warning{Value `\MT@val' for key `#1' not recognised.
+ \MessageBreak Use either `true' or `false'}%
}%
}%
\ifnum\@tempcnta>\m@ne
@@ -2977,8 +3186,8 @@ time will almost certainly lead to undesired results. Have your choice!}%
}%
}%
}
- \MT@define@optionX@{tracking}{\ifnum\@tempcnta=\z@
- \MT@trackingfalse\else\MT@trackingtrue\fi}
+ \MT@define@optionX@{tracking}{\ifnum\@tempcnta=\z@ \let\MT@tracking\relax\else
+ \let\MT@tracking\MT@tracking@\fi}
\MT@define@optionX@{spacing}{\pdfadjustinterwordglue\@tempcnta}
\MT@define@optionX@{kerning}{\pdfprependkern\@tempcnta
\pdfappendkern \@tempcnta}
@@ -2994,7 +3203,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
\let\MT@saved@setupfont\MT@setupfont
\define@key{MTX}{disable}[]{%
\MT@info{Inactivate `\MT@MT' package}%
- \let\MT@setupfont\@gobble
+ \let\MT@setupfont\relax
}
\define@key{MTX}{enable}[]{%
\MT@info{Reactivate `\MT@MT' package}%
@@ -3017,8 +3226,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
}%
}%
\MT@temp
- \AtEndOfPackage{\let\@unprocessedoptions\relax}%
- \let\CurrentOption\@empty
+ \MT@clear@options
}
\MT@ProcessOptionsWithKV{MT}
\MT@addto@setup{%
@@ -3026,25 +3234,11 @@ time will almost certainly lead to undesired results. Have your choice!}%
\MT@warning@nl{`draft' option active.\MessageBreak
Disabling all micro-typographic extensions.\MessageBreak
This might lead to different line and page breaks}
- \MT@protrusionfalse
- \MT@expansionfalse
- \MT@trackingfalse
- \MT@spacingfalse
- \MT@kerningfalse
- \MT@babelfalse
\let\MT@setupfont\relax
- \def\DeclareMicrotypeSet#1#{\@gobbletwo}
- \renewcommand*\UseMicrotypeSet[2][]{}
- \renewcommand*\SetProtrusion[3][]{}
- \renewcommand*\SetExpansion[3][]{}
- \renewcommand*\SetTracking[3][]{}
- \renewcommand*\SetExtraSpacing[3][]{}
- \renewcommand*\SetExtraKerning[3][]{}
- \renewcommand*\DeclareCharacterInheritance[3][]{}
- \renewcommand*\DeclareMicrotypeAlias[2]{}
\renewcommand*\LoadMicrotypeFile[1]{}
\renewcommand*\microtypesetup[1]{}
\renewcommand*\microtypecontext[1]{}
+ \renewcommand*\lsstyle{}
\else
\ifnum\pdfoutput<\@ne
\ifMT@opt@expansion \else
@@ -3126,9 +3320,9 @@ time will almost certainly lead to undesired results. Have your choice!}%
\def\MT@auto{1000 }
}
\else
- \ifnum\MT@pdftex@no < 4
+ \MT@requires@pdftex4\relax{
\def\MT@auto{1000 }
- \fi
+ }
\fi
\ifMT@selected
\let\MT@set@ex@codes\MT@set@ex@codes@s
@@ -3147,10 +3341,24 @@ time will almost certainly lead to undesired results. Have your choice!}%
\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
+ \MT@info@nl{\ifMT@auto A\else Non-a\fi utomatic 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}
+ step: \number\MT@step, \ifMT@selected\else non-\fi selected%
+ \ifx\MT@copy@font\MT@copy@font@ .\MessageBreak
+ Set up for expansion contexts (using font copies)\fi}
+ \def\MT@check@step#1{%
+ \@tempcnta=\csname MT@#1\endcsname
+ \divide\@tempcnta \MT@step
+ \multiply\@tempcnta \MT@step
+ \ifnum\@tempcnta=\csname MT@#1\endcsname\else
+ \MT@warning@nl{The #1 amount is not a multiple of step.\MessageBreak
+ The effective maximum #1 is \the\@tempcnta\space
+ (step \number\MT@step)}
+ \fi
+ }
+ \MT@check@step{stretch}
+ \MT@check@step{shrink}
\MT@check@active@set{ex}
\CheckCommand*\showhyphens[1]{\setbox0\vbox{%
\color@begingroup\everypar{}\parfillskip\z@skip
@@ -3166,11 +3374,11 @@ time will almost certainly lead to undesired results. Have your choice!}%
\fi
}
\MT@requires@pdftex6{
-\MT@addto@setup{%
+ \MT@addto@setup{%
\ifMT@tracking
- \edef\MT@active@features{\MT@active@features,tr}
- \MT@info@nl{Tracking enabled}
- \MT@check@active@set{tr}
+ \edef\MT@active@features{\MT@active@features,tr}
+ \MT@info@nl{Tracking enabled}
+ \MT@check@active@set{tr}
\else
\let\MT@tracking\relax
\MT@info@nl{No tracking}
@@ -3194,6 +3402,18 @@ time will almost certainly lead to undesired results. Have your choice!}%
\let\MT@kerning\relax
\MT@info@nl{No adjustment of character kerning}
\fi
+ \ifnum\pdfoutput<\@ne
+ \def\MT@warn@tracking@DVI{%
+ \MT@warning@nl{%
+ You are using tracking/letterspacing in DVI mode.\MessageBreak
+ This will probably not work, unless the post-\MessageBreak
+ processing program (dvips, dvipdfm(x), ...) is able\MessageBreak
+ to create the virtual fonts on the fly}%
+ \MT@glet\MT@warn@tracking@DVI\relax
+ }
+ \else
+ \let\MT@warn@tracking@DVI\relax
+ \fi
\ifnum\MT@letterspace=\m@ne
\let\MT@letterspace\MT@letterspace@default
\else
@@ -3208,24 +3428,18 @@ time will almost certainly lead to undesired results. Have your choice!}%
\else
\MT@info@nl{No tracking (pdftex too old)}
\fi
- \MT@trackingfalse
- \let\MT@tracking\relax
\ifMT@spacing
\MT@warning@nl{Adjustment of interword spacing only works with\MessageBreak
pdftex version 1.40 or newer. Switching it off}%
\else
\MT@info@nl{No adjustment of interword spacing (pdftex too old)}
\fi
- \MT@spacingfalse
- \let\MT@spacing\relax
\ifMT@kerning
\MT@warning@nl{Character kerning only works with\MessageBreak
pdftex version 1.40 or newer. Switching it off}%
\else
\MT@info@nl{No adjustment of character kerning (pdftex too old)}
\fi
- \MT@kerningfalse
- \let\MT@kerning\relax
}
}
\MT@requires@pdftex6{
@@ -3273,8 +3487,8 @@ time will almost certainly lead to undesired results. Have your choice!}%
\shorthandoff{#2}}
}{
\def\MT@shorthandoff#1#2{%
- \MT@error{You must load the `babel' package before microtype}
- {Otherwise, I cannot switch off the active characters
+ \MT@error{You must load the `babel' package before \MT@MT}
+ {Otherwise, `\MT@MT' cannot switch off the active characters
for #1 babel.}}
}
\MT@addto@setup{%
@@ -3293,13 +3507,13 @@ time will almost certainly lead to undesired results. Have your choice!}%
}
\ifMT@kerning
\MT@if@false
- \MT@with@babel@and{french} \MT@if@true
- \MT@with@babel@and{frenchb} \MT@if@true
- \MT@with@babel@and{francais}\MT@if@true
- \MT@with@babel@and{acadian} \MT@if@true
- \MT@with@babel@and{canadien}\MT@if@true
+ \MT@with@babel@and@T{french} \MT@if@true
+ \MT@with@babel@and@T{frenchb} \MT@if@true
+ \MT@with@babel@and@T{francais}\MT@if@true
+ \MT@with@babel@and@T{acadian} \MT@if@true
+ \MT@with@babel@and@T{canadien}\MT@if@true
\ifMT@if@\MT@shorthandoff{French}{;:!?}\fi
- \MT@with@babel@and{turkish}{\MT@shorthandoff{Turkish}{:!=}}
+ \MT@with@babel@and@T{turkish}{\MT@shorthandoff{Turkish}{:!=}}
\fi
\MT@set@babel@context\languagename
}{%