summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/microtype/letterspace.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/microtype/letterspace.sty')
-rw-r--r--Master/texmf-dist/tex/latex/microtype/letterspace.sty225
1 files changed, 126 insertions, 99 deletions
diff --git a/Master/texmf-dist/tex/latex/microtype/letterspace.sty b/Master/texmf-dist/tex/latex/microtype/letterspace.sty
index be4de33cbc0..84b34e4202f 100644
--- a/Master/texmf-dist/tex/latex/microtype/letterspace.sty
+++ b/Master/texmf-dist/tex/latex/microtype/letterspace.sty
@@ -7,6 +7,7 @@
%% microtype.dtx (with options: `letterspace')
%%
%% ------------------------------------------------------------------------
+%%
%% The `microtype' package
%% An interface to the micro-typographic extensions of pdfTeX
%% Copyright (c) 2004--2007 R Schlicht <w.m.l@gmx.net>
@@ -19,7 +20,7 @@
%%
%% 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.
%%
%% ------------------------------------------------------------------------
@@ -30,13 +31,14 @@
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage
- {letterspace}
- [2007/01/21 v1.0 Robust letterspacing (RS)]
+ {letterspace}[2007/07/14 v1.2 Robust letterspacing (RS)]
\newcommand*\lsstyle{}
\newcommand\textls[2][]{}
-\def\textls#1#{\@firstofone}
+\def\textls#1#{}
\newcommand*\lslig[1]{#1}
-\def\MT@warning{\PackageWarning{letterspace}}
+\def\MT@MT
+ {letterspace}
+\def\MT@warning{\PackageWarning\MT@MT}
\def\MT@warning@nl#1{\MT@warning{#1\@gobble}}
\def\MT@pdftex@no{0}
\ifx\normalpdftexversion\@undefined \else
@@ -46,22 +48,30 @@
\fi
\ifx\pdftexversion\@undefined \else
\ifx\pdftexversion\relax \else
- \def\MT@pdftex@no{6}
- \ifnum\pdftexversion < 140
- \def\MT@pdftex@no{5}
+ \def\MT@pdftex@no{7}
+ \ifnum\pdftexversion < 140
+ \def\MT@pdftex@no{5}
\fi
\fi
\fi
-\ifnum\MT@pdftex@no<6
- \AtEndOfPackage{\let\@unprocessedoptions\relax}
+\def\MT@clear@options{%
+ \AtEndOfPackage{\let\@unprocessedoptions\relax}%
\let\CurrentOption\@empty
- \MT@warning@nl{%
+}
+\ifnum\MT@pdftex@no <
+ 6
+ \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 1.40.\MessageBreak
- Sorry, but robust letterspacing doesn't work with\MessageBreak
- this version. Please upgrade%
+ are using a pdftex version older than
+ 1.40%
+ .\MessageBreak
+ `\MT@MT' does not work with this version.\MessageBreak
+ Please install a newer version of pdftex%
\fi
}
\endinput\fi
@@ -70,17 +80,25 @@
\let\MT@tr@max\@m
\let\MT@letterspace\m@ne
\def\MT@letterspace@default{100}
+\ifx\directlua\@undefined\else
+ \MT@warning@nl
+ {`\MT@MT'
+ doesn't currently work with luatex.\MessageBreak Bye bye%
+ }
+ \MT@clear@options\expandafter\endinput
+\fi
\def\MT@glet{\global\let}
\def\MT@edef@n#1{\expandafter\edef\csname #1\endcsname}
-\def\MT@let@nc#1{\expandafter\let\csname #1\endcsname}
\def\MT@exp@one@n#1#2{\expandafter#1\expandafter{#2}}
\def\MT@exp@two@c#1{\expandafter\expandafter\expandafter#1\expandafter}
- \def\MT@ifdefined@c@TF#1{\ifdefined#1%
- \expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+\catcode`\X=9
+ \def\MT@ifdefined@c@TF#1{%
+X \ifdefined#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
}
- \def\MT@ifdefined@n@T#1{\ifcsname#1\endcsname
- \expandafter\@firstofone\else\expandafter\@gobble\fi
+ \def\MT@ifdefined@n@T#1{%
+X \ifcsname#1\endcsname\expandafter\@firstofone\else\expandafter\@gobble\fi
}
+\catcode`\X=11
\begingroup
\catcode`\%=12
\catcode`\&=14
@@ -92,13 +110,13 @@
\fi
}
\endgroup
- \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@map@clist@n#1#2{%
\ifx\@empty#1\else
\def\MT@clist@function##1{#2}%
@@ -118,77 +136,72 @@
\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@package@T#1{\@ifpackageloaded{#1}\@firstofone\@gobble}
\MT@addto@setup{%
- \@ifpackageloaded{hyperref}{%
+ \MT@with@package@T
+ {hyperref}{%
\pdfstringdefDisableCommands{%
\def\lsstyle{\pdfstringdefWarn\lsstyle}%
\def\textls#1#{\pdfstringdefWarn\textls}%
}%
- }{%
}
- \MT@with@package{soul}{%
+ \MT@with@package@T{soul}{%
\soulregister\lsstyle 0%
\soulregister\textls 1%
}
}
- \DeclareRobustCommand\lsstyle{%
- \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@{%
- \MT@set@tr@codes
- }
- \let\MT@tracking\relax
- \def\MT@set@tr@codes{%
- \MT@ifdefined@c@TF\MT@letterspace@\relax{%
- \let\MT@letterspace@\MT@letterspace
- }%
- \ifnum\MT@letterspace@=\z@\else
- \xdef\MT@lsfont{%
- \csname\curr@fontshape\f@size
- /\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@set@lsfont
- \fi
- }
- \def\MT@set@lsfont{\MT@exp@two@c\let\font@name\MT@lsfont}
- \DeclareRobustCommand\lslig{\@firstofone}
- \def\MT@lslig#1{%
- \MT@get@ls@basefont
- \kern\MT@lskern{\font@name #1}\kern\MT@lskern
- }
- \def\MT@get@ls@basefont{%
- \ifcase\pdfmatch{^select font (.*)[+-][0-9]*ls( at .*)?$}
- {\expandafter\meaning\font@name}\relax
- \else
- \global\expandafter\font\font@name
- \expandafter\strip@prefix\pdflastmatch1
- \expandafter\strip@prefix\pdflastmatch2\relax
+\let\MT@tracking\relax
+\def\MT@set@tr@codes{%
+ \MT@ifdefined@c@TF\MT@letterspace@\relax{\let\MT@letterspace@\MT@letterspace}%
+ \ifnum\MT@letterspace@=\z@\else
+ \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@
+ \fontdimen2\MT@lsfont=\dimexpr\numexpr 1000+\MT@letterspace@\relax sp
+ * \fontdimen2\MT@lsfont/1000\relax
+ \tagcode\MT@lsfont`f=\m@ne
\fi
- }
+ \aftergroup\MT@set@lsfont
+ \fi
+}
+\def\MT@set@lsfont{\MT@exp@two@c\let\font@name\MT@lsfont}
+\DeclareRobustCommand\lsstyle{%
+ \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
+}
\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{%
@@ -223,24 +236,27 @@
Command \string\pickup@font\space is not defined as expected.%
}
\fi
+ \g@addto@macro\pickup@font{\begingroup}
+ \MT@with@package@T{trace}{\g@addto@macro\pickup@font{\conditionally@traceoff}}
\g@addto@macro\pickup@font{%
- \MT@tracking
+ \escapechar\m@ne
+ \MT@tracking
+ \endgroup
}
}
-\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}}%
- }%
+\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}}%
+}
+\MT@map@clist@n{%
+ 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@def@num@opt{letterspace}
\def\MT@ProcessOptionsWithKV#1{%
\let\@tempc\relax
\let\MT@temp\@empty
@@ -258,11 +274,22 @@
}%
}%
\MT@temp
- \AtEndOfPackage{\let\@unprocessedoptions\relax}%
- \let\CurrentOption\@empty
+ \MT@clear@options
}
\MT@ProcessOptionsWithKV{MT}
-\MT@addto@setup{%
+ \MT@addto@setup{%
+ \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