diff options
author | Karl Berry <karl@freefriends.org> | 2007-07-16 15:54:19 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2007-07-16 15:54:19 +0000 |
commit | 095c21ac9a136a78a974cb1bdcb06215f815eb64 (patch) | |
tree | 87a2ffd1b3c67f1485059e6cfad05c92dfe606fd /Master/texmf-dist/tex/latex/microtype/microtype.sty | |
parent | 858c858014703d3a44c1e0bd5c69f14fe2702012 (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.sty | 1468 |
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 }{% |