diff options
author | Karl Berry <karl@freefriends.org> | 2013-03-13 22:34:12 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-03-13 22:34:12 +0000 |
commit | 19c2f897fb64b29dc07b01d9338b6e83c0c62927 (patch) | |
tree | f3b3594d7deadb0f618934e4eddece740431d1ad /Master | |
parent | 822d98439954f0fef863481b85be865206566fb5 (diff) |
microtype (13mar13)
git-svn-id: svn://tug.org/texlive/trunk@29369 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
32 files changed, 7007 insertions, 2941 deletions
diff --git a/Master/texmf-dist/doc/latex/microtype/README b/Master/texmf-dist/doc/latex/microtype/README index 82072ff2acd..62c2e189b5f 100644 --- a/Master/texmf-dist/doc/latex/microtype/README +++ b/Master/texmf-dist/doc/latex/microtype/README @@ -1,33 +1,34 @@ The `microtype' package - An interface to the micro-typographic extensions of pdfTeX + Subliminal refinements towards typographical perfection =================================== - v2.4 2010/01/10 + v2.5 2013/03/13 * Overview ---------- -The `microtype' package provides a LaTeX interface to the micro-typographic -extensions of pdfTeX: most prominently, character protrusion and font -expansion, furthermore the adjustment of interword spacing and additional -kerning, as well as hyphenatable letterspacing (tracking) and the possibility -to disable all or selected ligatures. -It allows to apply these features to customisable sets of fonts, and to -configure all micro-typographic aspects of the fonts in a straightforward and -flexible way. Settings for various fonts are provided. - -Note that font expansion and character protrusion will only work with pdfTeX, -at least version 0.14f. Automatic font expansion requires version 1.20 or -newer. Disabling ligatures requires pdfTeX 1.30, letterspacing and the -adjustment of interword spacing and of kerning requires version 1.40. The -package will by default enable protrusion and expansion if they can safely be -assumed to work. These two features are also available with luaTeX. The -`microtype' package does not work with XeTeX. - -The alternative package `letterspace', which also works with plain TeX, -provides the user commands for letter-spacing only, omitting support for all +The `microtype' package provides a LaTeX interface to the micro-typographic +extensions that were introduced by pdfTeX and have since also propagated to +XeTeX and LuaTeX: most prominently, character protrusion and font expansion, +furthermore the adjustment of interword spacing and additional kerning, as +well as hyphenatable letterspacing (tracking) and the possibility to disable +all or selected ligatures. +These features may be applied to customisable sets of fonts, and all micro- +typographic aspects of the fonts can be configured in a straight-forward +and flexible way. Settings for various fonts are provided. + +Note that character protrusion requires pdfTeX (version 0.14f or later), +LuaTeX, or XeTeX (at least version 0.9997). Font expansion works with pdfTeX +(version 1.20 for automatic expansion) or LuaTeX. The package will by default +enable protrusion and expansion if they can safely be assumed to work. +Disabling ligatures requires pdfTeX (at least version 1.30) or LuaTeX, while +the adjustment of interword spacing and of kerning only works with pdfTeX +(at least 1.40). Letterspacing is available with pdfTeX (1.40) or LuaTeX (0.62). + +The alternative package `letterspace', which also works with plain TeX, +provides the user commands for letterspacing only, omitting support for all other extensions. The documentation can be found in microtype.pdf. @@ -50,21 +51,22 @@ The documentation can be found in microtype.pdf. * License --------- -This work may be distributed and/or modified under the conditions of the +This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c of this license or (at your -option) any later version. The latest version of this license is in: -http://www.latex-project.org/lppl.txt, and version 1.3c or later is part of +option) any later version. The latest version of this license is in: +http://www.latex-project.org/lppl.txt, and version 1.3c or later is part of all distributions of LaTeX version 2005/12/01 or later. This work has the LPPL maintenance status `author-maintained'. -This work consists of the files `microtype.dtx' and `microtype.ins' and the -derived files `microtype.sty', `microtype.lua' and `letterspace.sty'. +This work consists of the files `microtype.dtx' and `microtype.ins' and the +derived files `microtype.sty', `microtype-pdftex.def', `microtype-xetex.def', +`microtype-luatex.def', `microtype.lua' and `letterspace.sty'. -Modified versions of the configuration files (*.cfg) may be distributed -provided that (1) the original copyright statement is not removed, and +Modified versions of the configuration files (*.cfg) may be distributed +provided that (1) the original copyright statement is not removed, and (2) the identification string is changed. ---------------------------------------------------- - Copyright (c) 2004--2010 R Schlicht <w.m.l@gmx.net> + Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> ---------------------------------------------------- diff --git a/Master/texmf-dist/doc/latex/microtype/microtype.pdf b/Master/texmf-dist/doc/latex/microtype/microtype.pdf Binary files differindex 8f04a022f57..4ee0841c39a 100644 --- a/Master/texmf-dist/doc/latex/microtype/microtype.pdf +++ b/Master/texmf-dist/doc/latex/microtype/microtype.pdf diff --git a/Master/texmf-dist/doc/latex/microtype/test-microtype.tex b/Master/texmf-dist/doc/latex/microtype/test-microtype.tex index 95519249f32..57d13966c87 100644 --- a/Master/texmf-dist/doc/latex/microtype/test-microtype.tex +++ b/Master/texmf-dist/doc/latex/microtype/test-microtype.tex @@ -9,8 +9,8 @@ %% ------------------------------------------------------------------------ %% %% The `microtype' package -%% An interface to the micro-typographic extensions of pdfTeX -%% Copyright (c) 2004--2010 R Schlicht <w.m.l@gmx.net> +%% Subliminal refinements towards typographical perfection +%% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> %% %% This work may be distributed and/or modified under the conditions of the %% LaTeX Project Public License, either version 1.3c of this license or (at @@ -21,7 +21,8 @@ %% This work has the LPPL maintenance status `author-maintained'. %% %% This work consists of the files microtype.dtx and microtype.ins and the -%% derived files microtype.sty, microtype.lua and letterspace.sty. +%% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +%% microtype-luatex.def, microtype.lua and letterspace.sty. %% %% ------------------------------------------------------------------------ %% This file might be useful to test protrusion settings for a font. diff --git a/Master/texmf-dist/source/latex/microtype/microtype.dtx b/Master/texmf-dist/source/latex/microtype/microtype.dtx index 9b9a551c4c9..f7504f44871 100644 --- a/Master/texmf-dist/source/latex/microtype/microtype.dtx +++ b/Master/texmf-dist/source/latex/microtype/microtype.dtx @@ -2,13 +2,13 @@ % ^^A messages to WinEdt: % !Mode:: "TeX:DTX:UK" % !smartQuote:: "English" -% !DTXversion:: "2.4" +% !DTXversion:: "2.5" % ------------------------------------------------------------------------ -% $Id: microtype.dtx,v 1.60 2010-01-10 02:00:23+01 schlicht Exp schlicht $ +% $Id: microtype.dtx,v 1.69 2013-03-13 05:46:35+01 schlicht Exp schlicht $ % ------------------------------------------------------------------------ % The `microtype' package -% An interface to the micro-typographic extensions of pdfTeX -% Copyright (c) 2004--2010 R Schlicht <w.m.l@gmx.net> +% Subliminal refinements towards typographical perfection +% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> % % This work may be distributed and/or modified under the conditions of the % LaTeX Project Public License, either version 1.3c of this license or (at @@ -19,7 +19,8 @@ % This work has the LPPL maintenance status `author-maintained'. % % This work consists of the files microtype.dtx and microtype.ins and the -% derived files microtype.sty, microtype.lua and letterspace.sty. +% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +% microtype-luatex.def, microtype.lua and letterspace.sty. % % Modified versions of the configuration files (*.cfg) may be distributed % provided that: (1) the original copyright statement is not removed, and @@ -31,21 +32,28 @@ \ProvidesFile{\jobname.dtx} %</driver> %<package|letterspace>\ProvidesPackage -%<config>\ProvidesFile +%<config|pdftex-def|luatex-def|xetex-def>\ProvidesFile %<package> {microtype} %<letterspace> {letterspace} %<m-t> {microtype.cfg} -%<*package|letterspace|m-t> - [2010/01/10 v2.4 -%<package> Micro-typography with pdfTeX +%<pdftex-def> {microtype-pdftex.def} +%<luatex-def> {microtype-luatex.def} +%<xetex-def> {microtype-xetex.def} +%<*package|letterspace|m-t|pdftex-def|luatex-def|xetex-def> + [2013/03/13 v2.5 +%<package> Micro-typographical refinements %<letterspace> Robust letterspacing %<m-t> microtype main configuration file +%<pdftex-def|luatex-def|xetex-def> Definitions specific to +%<pdftex-def> pdftex +%<luatex-def> luatex +%<xetex-def> xetex (RS)] -%</package|letterspace|m-t> +%</package|letterspace|m-t|pdftex-def|luatex-def|xetex-def> %<*config> %<bch> {mt-bch.cfg}[2007/03/03 v1.5 microtype config. file: Bitstream Charter (RS)] %<blg> {mt-blg.cfg}[2007/07/14 v1.0 microtype config. file: Bitstream Letter Gothic (RS)] -%<cmr> {mt-cmr.cfg}[2009/11/09 v2.0 microtype config. file: Computer Modern Roman (RS)] +%<cmr> {mt-cmr.cfg}[2011/04/09 v2.1 microtype config. file: Computer Modern Roman (RS)] %<pad> {mt-pad.cfg}[2005/11/07 v1.5 microtype config. file: Adobe Garamond (RS)] %<pmn> {mt-pmn.cfg}[2009/11/14 v1.3 microtype config. file: Adobe Minion (HH/KK)] %<ppl> {mt-ppl.cfg}[2005/11/16 v1.6 microtype config. file: Palatino (RS)] @@ -72,7 +80,7 @@ % \def\rmdefault{bch} % not scaled % \def\ttdefault{blg} \usepackage{ifpdf,ifluatex} -\usepackage[latin1]{\ifluatex luainputenc,\fi inputenc} +\usepackage[latin1]{\ifluatex lua\fi inputenc} \usepackage[T1]{fontenc} \usepackage{textcomp} \GetFileInfo{\jobname.dtx} @@ -102,12 +110,12 @@ \IfFileExists{t1mwr.fd} {\newcommand\textfrak[1]{{\fontfamily{mwr}\selectfont ##1}} \ifpdf - \SetTracking[no ligatures={f}]{encoding=T1,family=mwr}{100} + \SetTracking[no ligatures={f,s,c}]{encoding=T1,family=mwr}{100} \fi} {\IfFileExists{yfonts.sty} {\usepackage{yfonts} \ifpdf - \SetTracking[no ligatures={f}]{encoding=LY,family=yfrak}{100} + \SetTracking[no ligatures={f,s,c}]{encoding=LY,family=yfrak}{100} \fi} {\let\textfrak\@gobble}} \tolerance=700 @@ -153,7 +161,7 @@ \usepackage{amssymb} % \varnothing \let\OrigTeX\TeX \def\TeX{\textoractual{\OrigTeX}{TeX}} - \setlength\textheight{47\baselineskip} + \setlength\textheight{49\baselineskip} \else \def\bfdefault{b} \def\Module#1{{\color{theblue}\textoractual{$\langle$}{<}\textit{#1}\textoractual{$\rangle$}{>}}} @@ -166,10 +174,10 @@ {\catcode`\`=\active % indiscernible from ' in Bitstream Letter Gothic \g@addto@macro\macro@code{\let`\textasciigrave}} \linespread{1.07}\normalfont - \setlength\textheight{46\baselineskip} + \setlength\textheight{48\baselineskip} \fi \addtolength\textheight{\topskip} -\setlength\topmargin{12pt} +\setlength\topmargin{5pt} % sections \def\@seccntformat#1{\llap{\csname the#1\endcsname\hskip\marginparsep}} \def\paragraph{\@startsection{paragraph}{4}% @@ -182,8 +190,9 @@ {\LARGE \@title\par}\vskip 1.5em {\large \parbox{.33\textwidth}{\centering\@author}% \parbox{.33\textwidth}{\centering\@date}}% - \vskip1.5em\rule{.66\textwidth}{.4pt}% + \vskip2.5em\rule{\textwidth}{.4pt}% \end{center}\par\vskip1.5em} +\def\abstractname{} % headers \headheight=15pt \def\ps@MTheadings{% @@ -199,7 +208,7 @@ \pagestyle{MTheadings} % toc \let\l@section@\l@section -\def\l@section{\vskip -.75ex\l@section@} +\def\l@section{\vskip -1ex\l@section@} \def\l@subsection{\vskip.35ex \penalty\@secpenalty \@dottedtocline{2}{1.5em}{2.7em}} \def\l@subsubsection#1#2{% \leftskip 4.2em @@ -280,20 +289,22 @@ \itemindent \labelsep \lstset{belowskip=0pt}}} {\endlist} -% boxes (for some reason, mathdesign changes these values) +% boxes (for some reason, mathdesign changes these values) % still? \setlength\fboxrule{0.4pt} \setlength\fboxsep{3pt} \setlength\arrayrulewidth{0.4pt} % tables \setlength\tabcolsep{2pt} \long\def\@makecaption#1#2{% - \sbox\@tempboxa{\footnotesize\itshape#1: #2}% - \ifdim \wd\@tempboxa >\hsize - \footnotesize\itshape#1: #2\par - \else - \hb@xt@\hsize{\box\@tempboxa\hfil}% - \fi - \vskip 4pt} + \setbox\mt@box\vbox{\llap{\vbox{% \fboxsep = 4pt + \vskip\dimexpr\floatsep-4pt+\fboxrule\relax + \hsize\dimexpr\marginparwidth-\marginparsep-4pt-\fboxrule\relax + \rightskip\dimexpr\marginparsep+4pt+\fboxrule\relax plus 2.5em + \footnotesize {\itshape#1:}\\[-\dimexpr\aboverulesep+\cmidrulewidth+3.5\fboxrule] + \textcolor{theframe}{\vrule width \hsize height\fboxrule}\\[.3\baselineskip]#2}}} + \mt@unvdimen\dimexpr\ht\mt@box+\dp\mt@box\relax + \unvbox\mt@box + \vskip-\mt@unvdimen} % index and change log \IndexPrologue{\section{Index}% Links (in blue) refer to the page where the corresponding entry is described @@ -304,15 +315,27 @@ %\raggedcolumns \setcounter{IndexColumns}{2} \def\IndexMin{12\baselineskip} -\g@addto@macro\IndexParms{\footnotesize} +\g@addto@macro\IndexParms{% + \footnotesize + \def\indexspace#1{% + \end{multicols} + \vspace*{-2\baselineskip}% + \begin{multicols}{2} + \llap{\mdseries\color{thegrey}\footnotesize + \hbox to 1em{\hss#1\hss}\hskip\marginparsep}% + \vspace*{-\baselineskip}% + \IndexParms %\rightskip 15pt + \let\item\@idxitem + \raggedcolumns}} \def\GlossaryParms{\IndexParms \def\@idxitem ##1##2\efill{% \end{multicols} - \begin{multicols}{2} - [\subsubsection*{\if##1v\relax Version ##2 - (\csname MTversiondate##2\endcsname)\else ##2\fi}][5\baselineskip] - \ifpdf \phantomsection \pdfbookmark[2]{\if##1v\relax ##2 - (\csname MTversiondate##2\endcsname)\else ##2\fi}{subsection##2}\fi + \begin{multicols}{2}[\subsubsection*{\if##1v\relax + \llap{\mdseries\color{thegrey}\footnotesize + \csname MTversiondate##2\endcsname\hskip\marginparsep}% + Version ##2\else ##2\fi}][5\baselineskip] + \ifpdf \phantomsection \pdfbookmark[2]{\if##1v\relax ##2 + (\csname MTversiondate##2\endcsname)\else ##2\fi}{subsection##2}\fi \GlossaryParms \rightskip 15pt plus 5pt \let\item\@idxitem \ignorespaces \makeatletter \scan@allowedfalse}% @@ -363,7 +386,13 @@ \if#1?\def\@tempb{\normalsize[\Variable{#2}]}% % ? = optional \else\def\@tempb{\normalsize\{\Variable{#1#2}\}}\fi} \let\SpecialEnvValue\SpecialMacroValue -\def\Variable#1{$\langle${\rmfamily\itshape\small#1}$\rangle$} +\DeclareRobustCommand\langlechar{<} % for makeindex +\DeclareRobustCommand\ranglechar{>} +\def\Variable#1{% + \textoractual{$\langle$}{\langlechar}% + {\rmfamily\itshape\small#1}% + \textoractual{$\rangle$}{\ranglechar}} +\let\m@a\meta \def\meta#1{\textoractual{\m@a{#1}}{\langlechar#1\ranglechar}} \def\MaybeDefault#1{\textrm{*}\,#1} \def\OptionSep{{\rmfamily, }} \def\MacroSep{\,} \def\EnvironmentSep{\,} \def\PrintValues[#1]{{\MacroFont\expandafter\@gobble\@tempa\hfill #1}\\*[.25\baselineskip]} @@ -373,7 +402,7 @@ \actualchar{\protect\bfseries Options:}% \levelchar{\protect\ttfamily#1}\encapchar usage}\@esphack} \def\SpecialUsageIndex#1{\@bsphack{\index{\quotechar!User Commands - \actualchar{\protect\indexspace\protect\bfseries User Commands:}% + \actualchar{\protect\bfseries User Commands:}% \levelchar\expandafter\@gobble\string#1\actualchar\string\verb \quotechar*\verbatimchar\string#1\verbatimchar\encapchar usage}% \let\special@index\index\SpecialIndex@{#1}{\encapchar usage}}\@esphack} @@ -389,6 +418,14 @@ \DeclareRobustCommand\pkg[1]{{\PackageFont#1}\@bsphack\CatIndex{#1}{package}\@esphack} \DeclareRobustCommand\opt[1]{{\ttfamily#1}\@bsphack\CatIndex{#1}{option}\@esphack} \DeclareRobustCommand\file[1]{{\ttfamily#1}} +\def\RequiresSep{ \textbar\ } +\def\requires#1{\let\@tempa\@empty + \@for\@tempb:=#1\do{% + \g@addto@macro\@tempa\RequiresSep + \expandafter\g@addto@macro\expandafter\@tempa\expandafter{\@tempb}}% + \hfill{\setlength\fboxsep{2pt}% + \fcolorbox{theframe}{white}{\mdseries\itshape\small\strut\color{thegrey}% + \,\expandafter\@gobble\@tempa\,}}} % ... and whistles {\catcode`\"\active \gdef\verbatim#1 @@ -442,29 +479,30 @@ \ifx\pdfcolorstack\@undefined % no longer required with pdftex 1.40 \usepackage{pdfcolmk} \fi\fi - \usepackage[bookmarks,bookmarksopen,pdfdisplaydoctitle,colorlinks, - linkcolor=theblue,citecolor=theblue,urlcolor=thered, - hyperindex=false,hyperfootnotes=false, + \usepackage[bookmarks,bookmarksopen,pdfdisplaydoctitle, + colorlinks,linkcolor=theblue,citecolor=theblue,urlcolor=thered, + hyperindex=false,hyperfootnotes=false] + {hyperref} + \usepackage{hyperxmp} + \usepackage{attachfile} + %\usepackage{pdfpages} + \hypersetup{ pdftitle={The microtype package}, pdfauthor={R Schlicht <w.m.l@gmx.net>}, - pdfsubject={An interface to the micro-typographic extensions of pdfTeX}, - pdfkeywords={TeX, LaTeX, pdfTeX, luaTeX, typography, micro-typography, + pdfsubject={Subliminal refinements towards typographical perfection}, + pdfkeywords={TeX, LaTeX, pdfTeX, LuaTeX, XeTeX, typography, micro-typography, character protrusion, margin kerning, optical alignment, font expansion, font scaling, hz, kerning, spacing, glue, letterspacing, tracking, ligatures} - ]{hyperref} + pdfcopyright={\textcopyright\ 2004--2013 R Schlicht\012% + This work may be distributed and/or modified under the conditions + of the LaTeX Project Public License, either version 1.3c of this + license or (at your option) any later version.\&\#xA;% + This work has the LPPL maintenance status `author-maintained'.}, + pdflicenseurl={http://www.latex-project.org/lppl/} + } \pdfcatalog{/Lang(en-GB)} \ifnum\pdftexversion < 130 \else \IfFileExists{hypdestopt.sty}{\usepackage{hypdestopt}}\relax\fi - \IfFileExists{hyperxmp.sty}{ - \usepackage{hyperxmp} - \hypersetup{% - pdfcopyright={\textcopyright\ 2004--2010 R Schlicht\012% - This work may be distributed and/or modified under the conditions - of the LaTeX Project Public License, either version 1.3c of this - license or (at your option) any later version.\&\#xA;% - This work has the LPPL maintenance status `author-maintained'.}, - pdflicenseurl={http://www.latex-project.org/lppl/}} - }\relax \def\usage#1{\textbf{\hyperpage{#1}}}% for indexing of \DescribeMacro ... \def\changes@#1#2#3{% ... the changes ... \protected@edef\@tempa{\noexpand\glossary{#1\levelchar @@ -487,7 +525,7 @@ % \encapchar codeline}% % \@esphack} \def\ctanurl#1{Available from \acronym{CTAN} at - \href{http://www.ctan.org/tex-archive/#1}{\nolinkurl{/#1}}} + \href{http://mirror.ctan.org/#1}{\nolinkurl{/#1}}} \DeclareRobustCommand\mailto[1]{\href{mailto:#1}{\nolinkurl{#1}}} \def\mailtoRS{\href % some PDF viewers don't like spaces: {mailto:<w.m.l@gmx.net>\%20Robert\%20Schlicht?subject=[microtype\%20\fileversion]} @@ -593,8 +631,10 @@ \fi \hyphenation{An-dre-as Ber-nard Ha-rald Mi-cha-el Pe-ter Ste-phan Wolf-ram Har-ders Hop-pe Jac-kow-ski Ku-char-czyk Mei-er Mu-the-si-us Zed-ler + Die-te-rich Sveinung % ? - with-out} + with-out + Pa-la-ti-no} \def\fallbacktext#1{{\centering\itshape[#1]\par}} % abbreviations \DeclareRobustCommand\thanh{H\`an Th\^e% @@ -602,7 +642,7 @@ \else \llap{\raisebox{0.45ex}{\'{}\kern\dimexpr.05em-2\fontdimen1\font\relax}} \fi Th\`anh} \def\pdftex{\texorpdfstring{pdf\kern.05em\TeX}{pdfTeX}} -\def\luatex{\texorpdfstring{lua\kern-.05em\TeX}{luaTeX}} +\def\luatex{\texorpdfstring{Lua\kern-.05em\TeX}{LuaTeX}} \def\etex{\mbox{e-\TeX}} \def\nonetex{\mbox{\rlap{\kern.05em/}e-\TeX}} % aka. \TeX \def\@reflect#1{\ifdim\fontdimen1\font=0pt \reflectbox{#1}% @@ -614,8 +654,9 @@ \def\microtype{{\PackageFont microtype}} \def\letterspace{\pkg{letterspace}} \def\fontdim{\cmd\fontdimen\,} -\def\eg{e.\,g.} -\def\ie{i.\,e.} +\def\eg{e.g.} +\def\ie{i.e.} +\def\EM#1{#1\kern.1emem} \DeclareRobustCommand\smaller{\setbox\z@\hbox{\@tempcnta=\f@size \edef\x{\@tempcnta=\the\@tempcnta}\expandafter}\x \advance\@tempcnta-7 \ifcase\@tempcnta\tiny\or\scriptsize\or @@ -654,7 +695,7 @@ % \GetFileInfo{microtype.dtx} % \title{\ifx\printlogo\undefined\else\printlogo\fi % \textls{The \microtype\ package}\\[.3\baselineskip]\large -% An interface to the micro-typographic extensions of \pdftex} +% Subliminal refinements towards typographical perfection} % \author{R Schlicht\\\mailtoRS} % \date{\fileversion\\\filedate} % @@ -663,34 +704,31 @@ %\begin{abstract} %\noindent % The \microtype\ package provides a \LaTeX\ interface to the micro-typographic -% extensions of \pdftex: most prominently, character protrusion and font +% extensions that were introduced by \pdftex\ and have since also propagated to +% \xetex\ and \luatex: most prominently, character protrusion and font % expansion, furthermore the adjustment of interword spacing and additional % kerning, as well as hyphenatable letterspacing (tracking) and the possibility % to disable all or selected ligatures. -% It allows to apply these features to customisable sets of fonts, and to -% configure all micro-typographic aspects of the fonts in a straight-forward -% and flexible way. Settings for various fonts are provided.\footnote{ -% Currently, this package provides protrusion settings for Computer Modern -% Roman, Palatino, Times, <URW> Garamond, Adobe Garamond and Minion, -% Bitstream Charter and Letter Gothic, the <AMS> symbols and Euler fonts, for -% various Euro symbol fonts, as well as some generic settings for unknown -% fonts (cf.~table~\ref{tab:fonts} on page~\pageref{tab:fonts}). -% Contributions are very welcome.} -% -% Note that font expansion and character protrusion will only work with -% \pdftex, at least version 0.14f. Automatic font expansion requires version -% 1.20 or newer. Disabling ligatures requires \pdftex\ 1.30, letterspacing and -% the adjustment of interword spacing and of kerning requires version 1.40. The -% package will by default enable protrusion and expansion if they can safely be -% assumed to work. These two features are also available with \luatex. The -% \microtype\ package does not work with \xetex. +% These features may be applied to customisable sets of fonts, and all +% micro-typographic aspects of the fonts can be configured in a straight-forward +% and flexible way. Settings for various fonts are provided. +% +% Note that character protrusion requires \pdftex\ (version~0.14f or later), +% \luatex, or \xetex\ (at least version~0.9997). +% Font expansion works with \pdftex\ (version~1.20 for automatic expansion) +% or \luatex. +% The package will by default enable protrusion and expansion if they can safely +% be assumed to work. +% Disabling ligatures requires \pdftex\ ($\geq$~1.30) or \luatex, while the +% adjustment of interword spacing and of kerning only works with \pdftex\ ($\geq$~1.40). +% Letterspacing is available with \pdftex\ ($\geq$~1.40) or \luatex\ ($\geq$~0.62). % % The alternative package \letterspace, which also works with plain \TeX, % provides the user commands for letterspacing only, omitting support for all % other extensions (see section~\ref{sec:lettersp}). % %\bigskip\noindent -% This package is copyright \textcopyright\ 2004\kern.09em--2010 R Schlicht. +% This package is copyright \textcopyright\ 2004\kern.09em--2013 R Schlicht. % It may be distributed and/or modified under the conditions of the % \IfFileExists{lppl.tex}{\hyperref[LPPL:LPPL]}{\href{http://www.latex-project.org/lppl/}} % {\LaTeX\ Project Public License}, @@ -706,14 +744,33 @@ % % %\newpage -%\section{Micro-typography with \pdftex}\label{sec:micro-type} -% -% \pdftex, the \TeX\ extension written by \thanh, introduces a number of -% micro-typographic features that make it the tool of choice not only for the -% creation of electronic documents but also of works of outstanding -% time-honoured typography: most prominently, \textit{character protrusion} -% (also known as margin kerning) and \textit{font expansion}. Quoting \thanh's -% thesis: +%\section{Micro-typography with \TeX}\label{sec:micro-type} +% +% Micro-typography is the art of enhancing the appearance and readability of a +% document while exhibiting a minimum degree of visual obtrusion. It is +% concerned with what happens between or at the margins of characters, +% words or lines. +% Whereas the macro-typographical aspects of a document (\ie, its layout) are +% clearly visible even to the untrained eye, micro-typographical refinements +% should ideally not even be recognisable. That is, you may think that a +% document looks beautiful, but you might not be able to tell exactly +% why: good micro-typographic practice tries to reduce all potential irritations +% that might disturb a reader. +% +% Some essential micro-typographical aspects are already taken care of by +% \TeX\ out of the box -- and in an outstanding manner -- namely, hyphenation +% and justification, as well as kerning and ligatures. +% Other aspects are in the user's scope of responsibilities, \eg, to specify +% the right amounts of spacing around punctuation characters, numbers, or +% quotation marks. +% On top of this, a number of long-standing micro-typographic techniques have +% been introduced to the \TeX\ world relatively recently with \pdftex, and +% have since also propagated to \luatex\ and \xetex. +% These features make them the tool of choice not only for the creation of +% electronic documents but also of works of outstanding time-honoured typography: +% most prominently, \textit{character protrusion} (also known as margin kerning) +% and \textit{font expansion}. Quoting \thanh, the author of \pdftex, who +% writes in his thesis: % %\changes{v1.9b}{2006/01/13}{add samples of micro-typographic features} %\microtypesample{\small @@ -737,42 +794,16 @@ % be taken into consideration while a paragraph is being broken into lines, % in order to choose better breakpoints.' [\cite[p.~323]{ThanhThesis}]} % -% Both these features have been lacking a simple \LaTeX\ user interface for -% quite some time. Then, the \cite{pdfcprot} package was released, which -% allowed \LaTeX\ users to employ character protrusion without having to mess -% much with the internals. -% -% Font expansion, however, was still most difficult to utilise, since it -% required that the font metrics are available for all levels of expansion. -% Therefore, anybody who wanted to make use of this feature had to create -% multiple instances of the fonts in advance. Shell scripts to partly relieve -% the user from this burden were available~-- however, it remained a cumbersome -% task. Furthermore, all fonts were still being physically created, thus -% wasting compilation time and disk space. -% -% In the summer of 2004, \thanh\ implemented a feature that has proven as a -% major facilitation for \TeX\ and \LaTeX\ users: font expansion can now take -% place automatically. That is, \pdftex\ no longer needs the expanded font -% metrics but will calculate them at run-time and completely in memory. -% -%\bigskip\noindent -% After this great leap in usability had been taken, the development did not -% stop. On the contrary, \pdftex\ was extended with even more features: version -% 1.30 introduced the possibility to \emph{disable all ligatures}, version 1.40 -% a robust \emph{letterspacing} command, the possibility to specify -% \emph{additional character kerning}, and the \emph{adjustment of interword -% spacing}. -% -% Robust and hyphenatable \emph{letterspacing (tracking)} has always been -% extremely difficult to achieve in \TeX. Although the \cite{soul} package -% undertook great efforts in making this possible, it could still fail in -% certain circumstances; even to adjust the tracking of a font throughout the -% document remained impossible. Employing \pdftex's new extension, this no -% longer poses a problem. The \microtype\ package provides the possibility -% to change the tracking of customisable sets of fonts, \eg, all small -% capitals. It also introduces two new commands \cs{textls} and \cs{lsstyle} -% for ad-hoc letterspacing, which can be used like the normal text commands. -% Note that letterspacing only works in <PDF> mode. +% Another micro-typographic technique, which has always been extremely +% difficult to achieve in \TeX, is robust and hyphenatable \emph{letterspacing +% (tracking)}.\footnote{^^A +% The \cite{soul} package undertook great efforts, but could still fail in +% certain circumstances; even to systematically adjust the tracking of a +% font throughout the document remained impossible.} +% Whereas letterspacing can easily be, and often is, abused when applying +% it to lowercase letters, readability may be increased by slightly +% letterspacing (small) capitals or by decreasing the tracking of very large +% uppercase type. % % Setting \emph{additional kerning} for characters of a font is especially % useful for languages whose typographical tradition requires certain @@ -781,29 +812,22 @@ % semi-colon, and a bigger space before the colon and the guillemets. Until % now, this could only be achieved by making these characters active (for % example by the \pkg{babel} package), which may not always be a robust -% solution. In contrast to the standard kerning that is built into the fonts -% (which will of course apply as usual), this additional kerning is based on -% single characters, not on character pairs. +% solution. In contrast to the standard kerning built into the fonts +% (which will of course apply as usual), this additional kerning relates to +% single characters, not to character pairs. % % \emph{Adjustment of interword spacing} is based upon the idea that in order % to achieve a uniform greyness of the text, the space between words should % also depend on the surrounding characters. For example, if a word ends with % an `r', the following space should be a tiny bit smaller than that following, % say, an `m'. You can think of this concept as an extension to \TeX's `space -% factors'. However, while space factors will influence all three parameters of -% interword space (or glue) by the same amount~-- the kerning, the maximum -% amount that the space may be stretched and the maximum amount that it may be -% shrunk~-- \pdftex\ provides the possibility to modify these parameters -% independently from one another. Furthermore, the values may be set -% differently for each font. And, probably most importantly, the parameters may -% not only be increased but also decreased. This feature may enhance the -% appearance of paragraphs even more. +% factors'. This feature may enhance the appearance of paragraphs even more. % Emphasis in the last sentence is on the word `may': this extension is still % highly experimental -- in particular, only ending characters will currently -% have an influence on the interword space. Also, the settings that are shipped -% with \microtype\ are but a first approximation, and I would welcome -% corrections and improvements very much. I suggest reading the reasoning -% behind the settings in section~\ref{sub:conf-spacing}. +% influence the interword space. Also, the settings shipped with \microtype\ +% are but a first approximation, and I~would highly welcome corrections and +% improvements. I suggest reading the reasoning behind the settings in +% section~\ref{sub:conf-spacing}. % % The possibility, finally, to \emph{disable all ligatures} of a font may be % useful for typewriter fonts. @@ -812,8 +836,11 @@ %\bigskip\noindent % The \microtype\ package provides an interface to all these micro-typographic % extensions. All micro-typographic aspects may be customised to your taste and -% needs in a straight-forward manner. The next chapters will present a survey -% of all options and customisation possibilities. +% needs in a straight-forward and systematic manner. The next chapters present +% a survey of all options and customisation possibilities. Should the +% micro-typographic extension discussed in a section work only with certain +% \TeX\ engines, this requirement is marked inside a grey text box on the +% right. % % %\section{Getting started} @@ -823,9 +850,9 @@ %\usepackage{microtype} %\end{verbatim} % This will be sufficient in most cases, and if you are not interested in -% fine-tuning the micro-typographic appearance of your document (which would -% seem unlikely, since using this package is proof of your interest in -% typographic issues), you may actually skip the rest of this document. +% fine-tuning the micro-typographic appearance of your document (however +% unlikely this would seem, since using this package is proof of your interest +% in typographic issues), you may actually skip the rest of this document. %^^A % If this, on the other hand, does not satisfy you -- be it for theoretical or % practical reasons -- this manual will guide you on the path to the desired @@ -842,7 +869,7 @@ % (section~\ref{sec:font-sets}). % \item Fine-tune the micro-typographic settings of the fonts or sets of fonts % (section~\ref{sec:fine-tuning}). -% \item If you're of the kind who always wants to march on, you'll certainly +% \item If you're of the kind who always wants to march on, you will certainly % be interested in the possibility of context-sensitive setup % (section~\ref{sec:context}). % \item You are even countenanced to leave the path of typographic virtue and @@ -856,11 +883,11 @@ %\section{Options}\label{sec:options} % % Like many other \LaTeX\ packages, the \microtype\ package accepts options in -% the well known |key=value| syntax. In the following, you'll find a +% the well known |key=value| syntax. In the following, you will find a % description of all \key{keys} and their possible |values| % (`|true|' may be omitted; multiple values, where allowed, must be enclosed in % braces; the default value is shown on the right, preceded by an asterisk -% if it is contingent on the \pdftex\ version and/or the output mode). +% if it is contingent on the \TeX\ engine, version and/or the output mode). % % %\subsection{Enabling the micro-typographic features}\label{sub:options-microtype} @@ -870,12 +897,12 @@ %\DescribeOption{expansion} % These are the main options to control the level of micro-typographic % refinement which the fonts in your document should gain. By default, the -% package is moderately greedy: character protrusion will be enabled, font -% expansion will only be disabled in circumstances where \pdftex\ cannot expand -% the fonts automatically, that is, if it is either too old (versions before -% 1.20) or if the output mode is <DVI> (see section~\ref{sub:options-misc}). +% package is moderately greedy: character protrusion will always be enabled, +% font expansion will only be disabled when the fonts cannot be expanded +% automatically, that is, with \pdftex\ versions older than 1.20, in <DVI> +% output mode (see section~\ref{sub:options-misc}), or with \xetex. % In other words, \microtype\ will try to apply as much micro-typography as -% can safely be expected to work under the respective conditions (and it is +% can safely be expected to work under the respective conditions (hence, it is % usually not necessary to load the package with different options for <PDF> % resp. <DVI> mode). % @@ -896,7 +923,7 @@ %\usepackage{microtype} %\end{verbatim} %\smallskip -% When \pdftex\ employs font expansion and character protrusion, line breaks +% With activated font expansion and/or character protrusion, line breaks % (and consequently, page breaks) may turn out differently. If this is not % desired -- because you are re-typesetting a book whose pagination must not % change -- you may pass the value |compatibility| to the \opt{protrusion} @@ -910,12 +937,21 @@ % %\medskip %\Describe{Option}{tracking}{true,!false,:font set name} -%\DescribeOption{kerning} +% This option will systematically change the tracking of the fonts specified in +% the active font set (by default, all small capitals). +% It is not available with \xetex\ (you may use the `|LetterSpace|' +% option of the \pkg{fontspec} package instead). +% With \luatex, you need to load the fonts with the \pkg{fontspec} option +% `|Renderer=Basic|`. See the \cite{fontspec} manual for details. +% +%\medskip +%\Describe{Option}{kerning}{true,!false,:font set name} %\DescribeOption{spacing} -% There is no compatibility level for the new extensions of tracking, -% additional kerning, and interword spacing. Therefore, they can only be -% switched on or off, or they may be activated by passing a set name to the -% option. By default, neither feature is enabled. +% These features do not unconditionally improve the quality of the typeset text: +% the `spacing' feature is still considered experimental, while the `kerning' +% feature only makes sense in special cases. +% Therefore, neither feature is enabled by default. They are not available +% with \xetex\ or \luatex. % %\begin{table}\small %\changes{v2.3a}{2008/02/25}{add table of available and enabled features} @@ -950,9 +986,16 @@ % & & <PDF> & ! & ! & ! & _ & _ & _\\ % & $\geq$ 1.40 & <DVI> & ! & ? & _ & ? & ? & _\\ % & & <PDF> & ! & ! & ! & ? & ? & ?\,\textsuperscript{\itshape a}\\ -% \luatex ^^A we will have to re-model kerning, spacing and tracking with \luatex: -% & $\geq$ 0.25 & <DVI> & ! & ? & _ & _ & _ & _\\ +%\cmidrule(r){1-3} +% \luatex ^^A we will have to re-model kerning, spacing and tracking with \luatex +% & $\geq$ 0.30 & <DVI> & ! & ? & _ & _ & _ & _\\ % & & <PDF> & ! & ! & ! & _ & _ & _\\ +% & $\geq$ 0.62 & <DVI> & ! & ? & _ & _ & _ & _\\ +% & & <PDF> & ! & ! & ! & _ & _ & ?\\ +%\cmidrule(r){1-3} +% \let\textoractual\@firstoftwo ^^A why? +% \xetex +% & $\geq$ 0.9997 & <PDF> & ! & _ & _ & _ & _ & _\\ %\bottomrule %\end{tabular}^^A %\vskip4pt\footnotesize @@ -970,7 +1013,7 @@ %\medskip\noindent % In table~\ref{tab:available-features}, you find an overview of which % micro-typographic features are available and enabled by default for the -% relevant \pdftex\ versions and output modes. +% relevant \TeX\ versions and output modes. % %\medskip\noindent % Whether ligatures should be disabled cannot be controlled via a package option @@ -978,7 +1021,9 @@ % section~\ref{sec:disable-ligatures}. % % -%\subsection{Character protrusion}\label{sub:options-protrusion} +%\subsection[Character protrusion] +% {Character protrusion \requires{\pdftex~0.14f,\luatex~0.30,\xetex~0.9997}} +% \label{sub:options-protrusion} % %\Describe{Option}{factor}{:integer}[1000] % Using this option, you can globally increase or decrease the amount by which @@ -998,13 +1043,16 @@ % \cs{SetProtrusion}. Use with care. % % -%\subsection{Font expansion}\label{sub:options-expansion} +%\subsection[Font expansion] +% {Font expansion \requires{\pdftex~0.14f,\luatex~0.30}} +% \label{sub:options-expansion} % %\Describe{Option}{auto}{*true,false} -% As noted in chapter~\ref{sec:micro-type}, the expanded versions of the fonts -% may be calculated automatically. This option is true by default provided that -% \pdftex's version is found to be 1.20 or higher and the output mode is <PDF>; -% otherwise, it will be disabled. +% Beginning with version \pdftex\ 1.20 (and with \luatex), the expanded +% instances of the fonts may be calculated automatically and at run-time instead +% of the user having to prepare the instances in advance. This option is true +% by default provided that you are using a \TeX\ engine with this capability +% and the output mode is <PDF>; otherwise, it will be disabled. % If \opt{auto} is set to false, the fonts for all expansion steps must exist % (with files called \meta{font~name}\texttt{\textpm}\meta{expansion value}, % \eg, \file{cmr12+10}, as described in the \cite{pdftexman}). @@ -1016,9 +1064,12 @@ %\changes{v1.9}{2005/08/27}{add remark about Type\,1 fonts required for % automatic font expansion} % Automatic font expansion does not work with bitmap fonts. Therefore, if you -% are using the Computer Modern Roman fonts in <T1> encoding\footnote{ +% are using the Computer Modern Roman fonts in <T1> encoding, +%\iffalse +% \footnote{ % En passant, it may be noted that Type\,1 format and <T1> encoding are in -% no other way related than that both start with a `T' and end with a `1'.}, +% no other way related than that both start with a `T' and end with a `1'.} +%\fi % you should either install the \pkg{cm-super} fonts or use the Latin Modern % fonts (package \pkg{lmodern}). % @@ -1036,9 +1087,9 @@ %\Describe{Option}{step}{:integer}[\MaybeDefault{1}] % Fonts are not expanded by arbitrary amounts but only by certain discrete % steps within the expansion limits. With recent versions of \pdftex\ (1.40 or -% newer), this option is by default set to 1, in order to allow \pdftex\ to try -% the maximum number of font instances, and hence to guarantee the best -% possible output.\footnote{ +% newer) or \luatex, this option is by default set to 1, in order to allow +% trying the maximum number of font instances, and hence to guarantee +% the best possible output.\footnote{ % The downside with this default is that \pdftex\ may run out of memory with % huge documents; in this case, read about the error messages in the `Hints % and caveats' section~(\ref{sec:caveats}), or try with a larger \opt{step}.} @@ -1052,31 +1103,34 @@ % When applying font expansion, it is possible to restrict the expansion of some % characters that are more sensitive to deformation than others (\eg, the `O', % in contrast to the `I'). This is called \emph{selected expansion}, and its -% usage allows to increase the stretch and shrink limits (to, say, 30 instead +% usage allows increasing the stretch and shrink limits (to, say, 30 instead % of 20); however, the gain is limited since at the same time the average % stretch variance will be decreased. Therefore, this option is by default % set to |false|, so that all characters will be expanded by the same amount. % See section~\ref{sub:expansion} for a more detailed discussion. % % -%\subsection{Tracking/letterspacing}\label{sub:option-tracking} +%\subsection[Tracking] +% {Tracking \requires{\pdftex~1.40,\luatex~0.62}} +% \label{sub:option-tracking} % %\Describe{Option}{letterspace}{:integer}[100] % This option changes the default amount for tracking (see section~\ref{sub:tracking}) % resp. letterspacing (see section~\ref{sec:lettersp}). The amount is specified -% in thousandths of 1\,em; admissible values are in the range of \textminus1000 +% in thousandths of \EM{1}; admissible values are in the range of \textminus1000 % to +1000. % % %\subsection{Miscellaneous options}\label{sub:options-misc} % %\Describe{Option}{DVIoutput}{true,*false} -% \pdftex\ is not only able to generate <PDF> output but can also spit out <DVI> -% files.\footnote{ +% \pdftex\ and \luatex\ are not only able to generate <PDF> output but can also +% spit out <DVI> files.\footnote{ % Recent \TeX\ systems are using \pdftex\ as the default engine even for % <DVI> output.} % The latter can be ordered with the option \opt{DVIoutput}, which will set % \cmd\pdfoutput\ to zero. +% For \xetex, this option is not applicable. % %\changes{v1.5}{2004/12/15}{add note about \opt{DVIoutput} option} % Note that this will confuse packages that depend on the value of @@ -1102,7 +1156,7 @@ % micro-typographic extensions will be disabled}, which may lead to different % line, and hence page, breaks. The \opt{draft} and \opt{final} options may % also be inherited from the class options; of course, you can override them in -% the package options. E.\,g., if you are using the class option |draft| to +% the package options. E.g., if you are using the class option |draft| to % show any overfull boxes, you should load \microtype\ with the |final| % option. % @@ -1159,12 +1213,11 @@ %\fi % % -%\ifcmr\else\pagebreak\markright{}\fi ^^A layout %\subsection{Changing options later}\label{sub:options-cmd} % %\Describe{Macro}{\microtypesetup}{key\,|=|\,value list} % Inside the preamble, this command accepts all package options described above -% (except for |config|). +% (except for \key{config}). % In the document body, this command may be used to change the general settings % of the micro-typographic extensions. It then accepts all options from % section~\ref{sub:options-microtype}: \key{expansion}, \key{protrusion} and @@ -1181,8 +1234,8 @@ % %\section{Selecting fonts for micro-typography}\label{sec:font-sets} % -% By default, character protrusion will be applied to all text fonts that are -% being used in the document, and a basic set of fonts will be subject to font +% By default, character protrusion will be applied to all text fonts used in +% the document, and a basic set of fonts will be subject to font % expansion. You may want to customise which fonts should get the benefit of % micro-typographic treatment. This can be achieved by declaring and activating % `font sets'; these font sets are specified via font attributes that have to @@ -1203,7 +1256,7 @@ % `|basictext|' in the main configuration file as follows: %\begin{verbatim} %\DeclareMicrotypeSet{basictext} -% { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5}, +% { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,EU1,EU2}, % family = {rm*,sf*}, % series = {md*}, % size = {normalsize,footnotesize,small,large} @@ -1213,12 +1266,11 @@ %\begin{verbatim}[deletekeywords={[1]{protrusion}}] %\UseMicrotypeSet[protrusion]{basictext} %\end{verbatim} -% in the document's preamble, only fonts in the text encodings <OT1>, <T1>, -% <T2A>, <LY1>, <OT4>, <QX> or <T5>, roman or sans serif families, normal (or -% `medium') series, and in sizes called by \cmd\normalsize, -% \cmd\footnotesize, \cmd\small\ or \cmd\large, will be protruded. Math -% fonts, on the other hand, will not, since they are in another encoding. -% Neither will fonts in bold face, or huge fonts. Etc. +% in the document's preamble, only fonts in the text encodings, roman or sans +% serif families, normal (or `medium') series, and in sizes called by +% \cmd\normalsize, \cmd\footnotesize, \cmd\small\ or \cmd\large, will be +% protruded. Math fonts, on the other hand, will not, since they are in another +% encoding. Neither will fonts in bold face, or huge fonts. Etc. % % If an attribute list is empty or missing -- like the `shape' attribute % in the above example -- it does not constitute a restriction. In other @@ -1227,7 +1279,7 @@ % Therefore, the predefined set `|alltext|', which is declared as: %\begin{verbatim} %\DeclareMicrotypeSet{alltext} -% { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1} } +% { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1,EU1,EU2} } %\end{verbatim} % is far less restrictive. The only condition here is that the encoding must % match. @@ -1264,7 +1316,7 @@ % font = {T1/tt*/m/n/*, % T1/tt*/m/it/*} } %\end{verbatim} -% As you can tell from the example, the asterisk notation is also allowed for +% As you can tell from the example, the asterisk notation is also permitted for % the |font| key. A single asterisk is equivalent to `|*/*/*/*/*|', \ie, the % normal font. Size selection commands are possible, too, however, ranges are % not allowed. @@ -1287,6 +1339,7 @@ %\leavevmode\kern-\dimexpr\fboxsep+\fboxrule\relax %\fcolorbox{theframe}{white}{^^A %\begin{minipage}{\textwidth} +%\def\arraystretch{1.2} %\begin{tabular}{@{}L{65pt}L{80pt}*3{L{41pt}}L{67pt}@{}} % \footnotesize Set name % & \multicolumn{5}{l}{\footnotesize Font attributes}\\ @@ -1349,7 +1402,7 @@ %\bottomrule %\end{tabular} %\vskip4pt\footnotesize -% `Text encodings' = <OT1>, <T1>, <T2A>, <LY1>, <OT4>, <QX>, <T5> +% `Text encodings' = <OT1>, <T1>, <T2A>, <LY1>, <OT4>, <QX>, <T5>, <EU1>, <EU2> %\hfill % `/\bslash\,\dots|*|/' = `/\bslash\,\dots|default|/' %\vskip3pt @@ -1394,23 +1447,29 @@ % % The set of fonts to which the settings should apply is declared using the % same syntax of \meta{font axis}\,|=|\,\meta{value list} pairs as for the -% command \cs{DeclareMicrotypeSet} (see section~\ref{sec:font-sets}). The only -% difference is that asterisked values will be translated immediately instead -% of at the end of the preamble. -%^^A -%\ifcmr\else\enlargethispage{3\baselineskip}\fi ^^A layout -%\changes{v1.7}{2005/03/23}{remove table of match order}^^A +% command \cs{DeclareMicrotypeSet} (see section~\ref{sec:font-sets}). Values +% with an asterisk will be translated immediately instead of at the end +% of the preamble. % To find the matching settings for a given font the package will try all -% combinations of font encoding, family, series, shape and size, with -% decreasing significance in this order. For instance, if both settings for the -% current family (say, |T1/cmr///|) and settings for italic fonts in the normal -% weight (|T1//m/it/|) exist, those for the |cmr| family would -% apply.\footnote{ -% For the interested, table~\ref{tab:match-order} on -% page~\pageref{tab:match-order} presents the exact order.} +% combinations of font encoding, family, series, shape and size, +% with decreasing significance in this order. For instance, if both settings for +% the current family (say, |T1/cmr///|) and settings for italic fonts in the +% normal weight (|T1//m/it/|) exist, those for the |cmr| family would +% apply. +%\changes{v1.7}{2005/03/23}{remove table of match order}^^A +%^^A \footnote{ +%^^A For the interested, table~\ref{tab:match-order} on +%^^A page~\pageref{tab:match-order} presents the exact order.} % The encoding must always match. +%\iffalse +%^^A TODO: When using native TrueType\slash OpenType fonts (with \xetex\ or \luatex, and +%^^A the \pkg{fontspec} package), you may additionally restrict the settings to +%^^A certain |features|. +%\fi % -%\subsection{Character protrusion}\label{sub:protrusion} +%\subsection[Character protrusion] +% {Character protrusion \requires{\pdftex~0.14f,\luatex~0.30,\xetex~0.9997}} +% \label{sub:protrusion} % %\Describe{Macro}{\SetProtrusion}{?options,set of fonts,protrusion settings} % Using this command, you can set the protrusion factors for each character of a @@ -1430,14 +1489,18 @@ %\paragraph{The protrusion settings} % consist of \meta{character}\,|=|\,\meta{protrusion factors} pairs. % -% The characters may be specified either as a single character (`|A|'), -% as a text symbol command (`\cmd\textquoteleft'), or as a slot number: three -% digits for decimal notation, prefixed with~|"| for hexadecimal, with~|'| for -% octal (\eg, the `fl' ligature in <T1> encoding:~|029|, |"1D|, |'35|). +% The characters may be specified either as a single character (|A|), +% as a text symbol command (\cmd\textquoteleft), or as a slot number (resp. +% Unicode number for \luatex\ or \xetex): three or more digits for decimal +% notation, prefixed with~|"| for hexadecimal, with~|'| for octal (\eg, the +% `fl' ligature in <T1> encoding:~|029|, |"1D|, |'35|). % \mbox{8-bit} (and even <UTF-8>) characters may be entered directly or in % \LaTeX's traditional \mbox{7-bit} notation: both |\"A| and \expandafter|\"A| % are valid, provided the character is actually declared in both the input and -% the font encoding. Note that you also have the possibility to declare lists +% the font encoding. +% With \luatex\ or \xetex, you may additionally specify a (font-specific) +% glyph name, prefixed with `|/|' (\eg, the `fl' ligature as |/f_l|). +% Note that you also have the possibility to declare lists % of characters that should inherit settings (see section~\ref{sub:inherit}). % % The protrusion factors designate the amount that a character should be @@ -1446,7 +1509,7 @@ % widths, so that a value of 1000 means that the character should be shifted % fully into the margin, while, for example, with a value of 50 it would be % protruded by 5\% of its width. Negative values are admitted, as well as -% numbers larger than 1000 (but effectively not more than 1\,em of the font). +% numbers larger than 1000 (but effectively not more than \EM{1} of the font). % You can omit either number if the character should not be protruded on that % side, but must not drop the separating comma. % @@ -1463,7 +1526,8 @@ % or series can then load these settings, and extend or overwrite them % (since the value that comes last will take precedence). Font settings % will be loaded recursively. -% The following options will affect all loaded lists: +% The following options will affect all loaded lists, in other words, +% any options from the loaded lists will be ignored: %\changes{v1.8}{2005/06/23}{add example for \texttt{factor} option} % \item[\key{factor}] This option can be used to influence all protrusion % factors of the list, overriding any global \opt{factor} setting (see @@ -1502,11 +1566,13 @@ % specify any encoding that can be loaded via the \pkg{inputenc} package, % \eg, |ansinew|, |koi8-r|, |utf8|. % \item[\key{context}] The scope of the list may be limited to a certain -% context. For an example application, see section~\ref{sec:context}. +% context. For further details, see section~\ref{sec:context}. %\end{options} % % -%\subsection{Font expansion}\label{sub:expansion} +%\subsection[Font expansion] +% {Font expansion \requires{\pdftex~0.14f,\luatex~0.30}} +% \label{sub:expansion} % %\Describe{Macro}{\SetExpansion}{?options,set of fonts,expansion settings} % By default, all characters of a font are allowed to be stretched or shrunk by @@ -1517,7 +1583,6 @@ % section~\ref{sub:options-expansion}). Otherwise, the expansion settings will % be ignored~-- unlike the options in the optional first argument, which will % still be evaluated. -% % If the package was loaded with the \opt{selected} option, and settings for a % font don't exist, font expansion will not be applied to this font at all. % Should the extraordinary situation arise that you want to employ selected @@ -1525,7 +1590,6 @@ % should be expanded or shrunk by the same amount, you would have to declare an % empty list for these fonts. % -%\ifcmr\else\enlargethispage\baselineskip\fi ^^A layout %\paragraph{The expansion settings} % consist of \meta{character}\,|=|\,\meta{expansion factor} pairs. % You may specify one number for each character, which determines the amount @@ -1602,7 +1666,10 @@ %\end{options} % % -%\subsection{Tracking}\label{sub:tracking} +%\subsection[Tracking] +% {Tracking \requires{\pdftex~1.40,\luatex~0.62}} +% \label{sub:tracking} +% %\Describe{Macro}{\SetTracking}{?options,set of fonts,tracking amount} % An important typographic technique -- which was missing in \TeX\ for a long % time -- is the adjustment of tracking, \ie, the uniform addition or @@ -1614,32 +1681,32 @@ % With full-featured fonts like Computer Modern, this is usually not % necessary, though, since they come in optical sizes, and the tracking of % the small-capitals font is already adjusted.} -% The \cs{SetTracking} command allows to specify the tracking amount for +% The \cs{SetTracking} command allows specifying the tracking amount for % different fonts or font sets. It will also be evaluated by the \cs{textls} % command, which may be used for letterspacing shorter pieces of text (see % section~\ref{sec:lettersp}). % %\paragraph{The tracking amount} -% is specified in thousandths of 1\,em (or the given unit); negative values are +% is specified in thousandths of \EM{1} (or the given unit); negative values are % allowed, too. % %\paragraph{Options:} %\begin{options} % \item[\key{name}, \key{unit}, \key{context}] % These options serve the same functions as in the previous configuration -% commands. The unit may be any dimension, default is 1\,em. +% commands. The unit may be any dimension, default is \EM{1}. % \item[\key{spacing}] % When the inter-\emph{letter} spacing is altered, the inter-\emph{word} % spacing probably also needs to be adjusted. This option expects three % numbers for interword space, stretch and shrink respectively, which are -% given in thousandths of 1\,em (or of the current \texttt{unit}). If a +% given in thousandths of \EM{1} (or of the current \texttt{unit}). If a % value is followed by an asterisk, it denotes thousandths of the % respective font dimension which will be added to it. For instance, with %\begin{verbatim} %\SetTracking[ spacing = {25*,166, } ]{ encoding = *, shape = sc }{ 25 } %\end{verbatim} % the interword space will be increased by 2.5\%, the stretch amount will -% be set to 0.166\,em, while the shrink amount will be left untouched. If +% be set to \EM{0.166}, while the shrink amount will be left untouched. If % you don't specify the \texttt{spacing} option, the interword space will % be scaled by the current letterspace amount (as in the above example), % while stretch and shrink will not be changed. @@ -1652,7 +1719,7 @@ % If, on the other hand, no interword space precedes of follows, you may % still want to slightly set off the first and last letter from adjoining % letters. This option expects the kerning amounts for left and right hand -% side, separated by a comma, in thousandths of 1\,em (or the current +% side, separated by a comma, in thousandths of \EM{1} (or the current % \texttt{unit}). If a value is followed by an asterisk, it denotes % thousandths of the current letterspacing amount. A single asterisk means % `|500*|'; this is also the default, \ie, the sum of the outer kerns is @@ -1716,17 +1783,17 @@ %\noindent % While the word `Stop' is not letterspaced, the space between the letters in % the other two words is expanded by the \showarrow[tracking]{tracking~amount}{red} -% of 160/1000\,em\,=\allowbreak\,0.16\,em. +% of \EM{160/1000}\,=\allowbreak\,\EM{0.16}. % The \showarrow[ispace]{inner~space}{green} within the letterspaced text is % increased by 60\%, while its \showarrow[istretch]{stretch}{green} amount is % decreased by 10\% and the \showarrow[ishrink]{shrink}{green} amount is left % untouched. -% The \showarrow[ospace]{outer~space}{green} (of 0.45\,em) immediately before the -% piece of text may \showarrow[ostretch]{stretch}{green} by 0.25\,em and -% \showarrow[oshrink]{shrink}{green} by 0.15\,em. +% The \showarrow[ospace]{outer~space}{green} (of \EM{0.45}) immediately before the +% piece of text may \showarrow[ostretch]{stretch}{green} by \EM{0.25} and +% \showarrow[oshrink]{shrink}{green} by \EM{0.15}. % Note that there is no outer space after the text, since the exclamation mark % immediately follows; instead, the default \showarrow[okern]{outer~kern}{red} -% of half the letterspace amount (0.08\,em) is added. +% of half the letterspace amount (\EM{0.08}) is added. % Furthermore, one \showarrow{ligature}{grey} wasn't broken up, because we % neglected to specify the `|s|' in the |no ligatures| key. % @@ -1734,8 +1801,8 @@ % As another, more realistic %\fi % example, suppose you want to space out all small -% capitals by 50/1000\,em, fonts smaller than \cmd\small\ by 0.02\,em, and to -% decrease the tracking of large type by 0.02\,em. You can achieve this with +% capitals by \EM{50/1000}, fonts smaller than \cmd\small\ by \EM{0.02}, and to +% decrease the tracking of large type by \EM{0.02}. You can achieve this with % the following settings: %^^A there's a \nobreakspace ahead! %\begin{verbatim} @@ -1751,18 +1818,18 @@ % %\medskip\noindent % Letterspaced fonts for which settings don't exist will be spaced out by the -% default of 0.1\,em (adjustable with the package option \opt{letterspace}, see +% default of \EM{0.1} (adjustable with the package option \opt{letterspace}, see % section~\ref{sub:options-misc}). Suppose your editor wants you to shorten -% your 1000 pages chef-d'\oe uvre by a handful of pages, you could load +% your 1000-pages chef-d'\oe uvre by a handful of pages, you could load % \microtype\ with (fingers crossed): %\begin{verbatim} %\usepackage[tracking=alltext,letterspace=-40]{microtype} %\end{verbatim} % -%\emptypdfpageresources ^^A layers of letterspacing illustration -% % -%\subsection{Additional kerning}\label{sub:kerning} +%\subsection[Additional kerning] +% {Additional kerning \requires{\pdftex~1.40}} +% \label{sub:kerning} % %\Describe{Macro}{\SetExtraKerning}{?options,set of fonts,kerning settings} % With this command, you can fine tune the extra kerning. In contrast to @@ -1773,6 +1840,8 @@ % kerning will be inserted, regardless of which character precedes resp. % follows it. % +%\emptypdfpageresources ^^A layers of letterspacing illustration +% % I should not neglect to mention a limitation of this additional kerning: % words \emph{immediately following} such a kern (not separated by a space) % will not be hyphenated, unless you insert the breakpoints manually, \eg, for @@ -1791,14 +1860,13 @@ % These options serve the same function as in the previous configuration % commands. % \item[\key{unit}] Admissible values are: |space|, |character| and a -% \meta{dimension}. By default, the values denote thousandths of 1\,em. +% \meta{dimension}. By default, the values denote thousandths of \EM{1}. % \item[\key{context}] When it comes to kerning settings, this option is -% especially useful, since it allows to apply settings depending on the +% especially useful, since it allows applying settings depending on the % current language. % \par % For example, you can find the following settings, intended to be used % for documents written in French, in the main configuration file: -%\ifcmr\else\pagebreak\fi ^^A layout %\begin{verbatim}[deletekeywords={[1]{unit}}] %\SetExtraKerning % [ name = french-default, @@ -1838,7 +1906,9 @@ %\end{options} % % -%\subsection{Interword spacing}\label{sub:spacing} +%\subsection[Interword spacing] +% {Interword spacing \requires{\pdftex~1.40}} +% \label{sub:spacing} % %\Describe{Macro}{\SetExtraSpacing}{?options,set of fonts,spacing settings} % This command allows you to fine tune the interword spacing (also known as @@ -1852,9 +1922,16 @@ % % On top of these glue dimensions, \TeX\ has the concept of `space factors'. % They may be used to increase the space after certain characters, most -% prominently the punctuation characters. If \pdftex's additional spacing -% adjustment is in effect, space factors are ignored, since it may be -% considered an extension to space factors with much finer control. +% prominently the punctuation characters. \pdftex's additional spacing +% adjustment may be considered as an extension to space factors with much +% finer control: while space factors will influence all three parameters of +% interword space (or glue) by the same amount~-- the kerning, the maximum +% amount that the space may be stretched and the maximum amount that it may be +% shrunk~-- you may modify these parameters independently from one another. +% Furthermore, the values may be set differently for each font. And, probably +% most importantly, the parameters may not only be increased but also decreased. +% Note that when interword spacing adjustment is in effect, space factors are +% ignored. % %\paragraph{The spacing settings} % are declared as pairs of \meta{character}\,|=|\,\meta{spacing factors}, where @@ -1904,17 +1981,17 @@ % up the respective base character. With the optional argument, which may % contain a comma-separated list of features, you can confine the scope of the % list. Additionally, it accepts the |inputenc| key to set the input encoding -% for this list. The font set can be declared in the usual way, with the only -% exception that exactly one encoding must be specified. The inheritance lists -% are declared as pairs of \meta{base character}\,|=|\,\meta{list of inheriting -% characters}. Unless you are using a different encoding or a very peculiarly -% shaped font, there should be no need to change the default character -% inheritance settings. +% for this list. The font set can be declared in the usual way. The inheritance +% lists are declared as pairs of \meta{base character}\,|=|\,\meta{list of +% inheriting characters}. Unless you are using a different encoding or a very +% peculiarly shaped font, there should be no need to change the default +% character inheritance settings. The situation is different with \luatex\ and +% \xetex, however: the default inheritance settings only contain those glyhps +% that can safely be assumed to exist in any font; but since OpenType fonts may +% contain many more glyphs for different scripts (languages), it is quite +% probable that font-specific settings are necessary, which should be specified +% in the font's configuration file (see next section). % -%\bigskip\noindent -% In the main configuration file \file{microtype.cfg} and the other -% font-specific configuration files, you can find examples of all these -% commands. % % %\subsection{Configuration files}\label{sub:config-file} @@ -1927,7 +2004,8 @@ % % If you embark on creating new settings for a font family, you should % put them into a separate file, whose name must be: `|mt-|\meta{font -% family}|.cfg|' (\eg, `\file{mt-cmr.cfg}'), and may contain all commands +% family}|.cfg|' (\eg, `\file{mt-cmr.cfg}'; any spaces in the font name should +% be removed, \eg, `\file{mt-MinionPro.cfg}'), and may contain all commands % described in the current section~\ref{sec:fine-tuning}. These files will be % loaded automatically if you are actually using the respective fonts. % This package ships with configuration files for a number of font families. @@ -1970,7 +2048,7 @@ % Adobe Garamond (|pad|, |padx|, |padj|) % & <OT1>, <T1>, <LY1>, <TS1> % & n, it, (sl)\fnref{fn:it-sl}, sc \\ -% <URW> Garamond (|ugm|)\footnote{Alias: \pkg{mathdesign}/<URW> Garamond (|mdugm|)} +% <URW> Garamond (|ugm|)\footnote{Aliases: \pkg{mathdesign}/<URW> Garamond (|mdugm|), \pkg{garamondx} (|zgmx|, |zgmj|)} % & <OT1>, <T1>, <TS1> % & n, it\\ % Bitstream Letter Gothic (|blg|)\footnote{Alias: \pkg{ulgothic} (|ulg|)} @@ -1988,7 +2066,21 @@ % \pkg{qfonts}/QuasiTimes, \TeX\ Gyre Termes (|qtm|)} % & <OT1>, <OT4>, <T1>, <LY1>, <QX>, (<TS1>)\fnref{fn:incmpl} % & n, it, (sl)\fnref{fn:it-sl}, sc \\ -% Computer Modern math (|cmsy|, |cmm|) +% Latin Modern Roman +% & <EU1>, <EU2> [Latin, Greek] +% & n, it, (sl)\fnref{fn:it-sl}\\ +% Charis SIL +% & <EU1>, <EU2> [Latin, Cyrillic, Greek] +% & n, it, sc\\ +%\iffalse ^^A provided with the EB Garamond package +% EB Garamond +% & <EU1>, <EU2> [Latin, Cyrillic, Greek] +% & n, it, sc, si\\ +%\fi +% Palatino Linotype\footnote{Alias: \TeX\ Gyre Pagella, Palatino LT Std, Palatino} +% & <EU1>, <EU2> [Latin] +% & n, it, sc\\ +% Computer Modern math (|cmsy|, |cmm|)\footnote{Aliases: Latin Modern (|lmsy|, |lmm|)} % & <OML>/<OMS> % & n/it \\ % <AMS> symbols (|msa|, |msb|) @@ -2011,9 +2103,9 @@ %\DescribeMacro{\DeclareMicrotypeVariants*} % On its search for a configuration file, the package will also try to remove % from the font name a suffix of one or more letters that denotes a `variant' -% of the base font (cf. Karl Berry's \cite{fontname}). This allows it to put -% settings for, \eg, the fonts |padx| (expert set), |padj| (oldstyle numerals) -% and |pad| (plain) into one and the same file \file{mt-pad.cfg}. +% of the base font (cf. Karl Berry's \cite{fontname}). It is thus possible to +% put settings for, \eg, the fonts |padx| (expert set), |padj| (oldstyle +% numerals) and |pad| (plain) into one and the same file \file{mt-pad.cfg}. % This command expects a comma-separated list of variant suffixes. The starred % version appends the suffix(es) to the existing list. The default declaration % in \file{microtype.cfg} is: @@ -2021,6 +2113,7 @@ %\DeclareMicrotypeVariants{x,j,w,a,d,0,1} %\end{verbatim} % +%\pagebreak ^^A layout %\medskip %\Describe{Macro}{\DeclareMicrotypeAlias}{font name,alias font} % This command may be used for fonts that are very similar, or actually the @@ -2035,6 +2128,7 @@ % not find settings for it, also try the font |cmr|. In fact, you will find % this very line, along with some others, in the default configuration file. % +%\enlargethispage\baselineskip ^^A layout %\medskip %\Describe{Macro}{\LoadMicrotypeFile}{font name} % In rare cases, it might be necessary to load a font configuration file @@ -2049,10 +2143,13 @@ % %\section{Context-sensitive setup}\label{sec:context} % -% The \microtype\ package also allows to apply different micro-typographic +% The \microtype\ package also allows applying different micro-typographic % settings to the fonts depending on the context in which they occur. This % opens up the space for infinite possibilities of tweaking the document's -% appearance. +% appearance.\footnote{ +% With \luatex, you have to load the fonts with the \pkg{fontspec} option +% `|Renderer=Basic|'.} +% ^^A Otherwise, OpenType feature will be ignored (+smcp being one of them) % %\medskip %\Describe{Macro}{\microtypecontext}{context assignments} @@ -2084,7 +2181,6 @@ % { 1 = { ,650}, 2 = { ,400}, 3 = { ,400}, 4 = { ,400}, 5 = { ,400}, % 6 = { ,400}, 7 = { ,500}, 8 = { ,400}, 9 = { ,400}, 0 = { ,400} } %\end{verbatim} -%\ifcmr\else\enlargethispage{2\baselineskip}\fi ^^A layout % and have the context changed in the footnote marker command. This command % differs among the various classes; for the base classes, \eg, \pkg{article}, % it would be: @@ -2145,7 +2241,9 @@ % will be reset. % % -%\section{Letterspacing revisited}\label{sec:lettersp} +%\section[Letterspacing revisited] +% {Letterspacing revisited \requires{\pdftex~1.40,\luatex~0.62}} +% \label{sec:lettersp} % %\Describe{Macro}{\textls}{?amount,general text} %\DescribeMacro{\textls*} @@ -2154,9 +2252,9 @@ % will apply to sets of fonts, you may also want to letterspace shorter pieces % of text, regardless of the font in which they are typeset.\footnote{ % Letterspacing should be used cautiously; in particular, letterspacing -% lower-case text is held in abhorrence by honourable typographers. Unless +% lowercase text is held in abhorrence by honourable typographers. Unless % you know what you are doing, you should probably only letterspace -% small-capitals or all-capitals. Another just cause may be emphasis in texts +% capitals or small capitals. Another just cause may be emphasis in texts % typeset in Fraktur fonts.} % For such ad-hoc letterspacing, \microtype\ introduces two commands that can % be used (independently of whether the |tracking| option is enabled) in the @@ -2165,7 +2263,7 @@ % switch on letterspacing for all subsequent fonts until the end of the current % group. The starred version of \cs{textls} does not add any extra kerning % before or after the text, which may be useful, \eg, for section titles. By -% default, each character will be spaced out by 100/1000\,em\,=\,0.1\,em; this +% default, each character will be spaced out by \EM{100/1000}\,=\,\EM{0.1}; this % amount may be altered in the optional argument to \cs{textls}, using the % \cs{SetTracking} command, or globally with the \opt{letterspace} package % option, with decreasing significance in this order. @@ -2188,7 +2286,11 @@ % `|{\kern0pt}|' or \pkg{babel}'s \verb="|= shortcut; or disable them and % protect those ligatures that need to be protected by enclosing them in the % \cs{lslig} command. So, the following two solutions have the same result -% (namely, `\textfrak{\lsstyle Aus:s{\kern0pt}ichts:los{\kern0pt}igkeit}'). +% (namely, `\textfrak{\lsstyle +% \def\!#1{\textcolor{thered}{\lslig{#1}}}^^A +% \def\?#1{\textcolor{thegreen}{#1}}^^A +% Au\!{s:}\?{si}\!{ch}t\!{s:}lo\?{si}gkeit}', +% ligatures shown in red, inhibited ligatures in green). % %\begin{verbatim}[morekeywords={[0]{\kern}}] %\SetTracking[noligatures={f}]{encoding = LY, family = yfrak}{100} @@ -2218,7 +2320,9 @@ % (which does not support package options) simply \cmd\input\ \file{letterspace.sty}. % % -%\section{Disabling ligatures}\label{sec:disable-ligatures} +%\section[Disabling ligatures] +% {Disabling ligatures \requires{\pdftex~1.30,\luatex~0.30}} +% \label{sec:disable-ligatures} % %\Describe{Macro}{\DisableLigatures}{?characters,set of fonts} % While completely disabling all ligatures of a font (which will also switch @@ -2238,9 +2342,11 @@ %\DisableLigatures[?,!]{encoding = T1} % "\ifx\tagcode\undefined\else ^^A % \normalfont\color{thegrey}inhibit ?` and !`, but not fi, --, >>, etc.\fi" %\end{verbatim} -% The character that begins the ligature(s) is what matters. This command may -% only be used in the preamble, and only once. It requires \pdftex\ 1.30 or -% newer. +% Only the character that begins the ligature(s) should be specified. This +% command may only be used in the preamble, and only once.\footnote{ +% With \luatex, you have to load the fonts with the \pkg{fontspec} option +% `|Renderer=Basic|'.} +% ^^A Otherwise, it won't work at all % % %\section{Hints and caveats}\label{sec:caveats} @@ -2248,7 +2354,7 @@ %\paragraph{Use settings that match your font.} % Although the default settings should give reasonable results for most fonts, % the particular font you happen to be using may have different character -% shapes that necessitate more or less protrusion or expansion. In particular, +% shapes that necessitate more or less protrusion. In particular, % italic letter shapes may differ wildly in different fonts, hence I have % decided against providing default protrusion settings for them. % The file \file{test-microtype.tex} might be of some help when adjusting the @@ -2288,7 +2394,7 @@ %\end{verbatim} % %\changes{v1.9}{2005/07/10}{add hint about \texttt{verbatim} environment} -%\todo{introduce option to patch \texttt{verbatim}} ^^A for Karl +%\todo{option to patch \texttt{verbatim}} ^^A for Karl %\paragraph{You might want to disable protrusion in \texttt{verbatim} environments.} % As you know by now, \microtype\ will by default activate character protrusion % for all fonts contained in the font set `|alltext|'. This also includes the @@ -2301,7 +2407,7 @@ % is, if you don't want to disable protrusion for the typewriter font % altogether, by choosing a different font set). While the \cs{microtypesetup} % command has of course been designed for cases like this, you might find it -% tiring to repeat it every time if you are using the |verbatim| environment +% tiresome to repeat it every time if you are using the |verbatim| environment % frequently. The following line, added to the document's preamble, would serve % the same purpose: %\changes{v2.3e}{2009/07/21}{suggest to patch \cmd\@verbatim\ instead of \cmd\verbatim} @@ -2333,11 +2439,13 @@ % an English text, your readers would probably be rather confused by additional % spaces before the punctuation characters. % -%\changes{v2.3c}{2008/10/27}{add hint about spacing being experimental} +%\changes{v2.3c}{2008/10/27}{add hint about \opt{spacing} being experimental} %\paragraph{Adjustment of interword spacing is still experimental.} % The implementation of this feature in \pdftex\ is not complete, and may not % yield the positive effects on the typographical quality you might expect -- -% in certain situations, there may even be undesired side effects. Therefore, +% in certain situations, there may even be undesired side effects, +%\changes{v2.5}{2011/11/27}{add hint about \opt{spacing} and \pkg{ragged2e}} ^^A (beta:09) +% in particular, when used together with the \pkg{ragged2e} package. Therefore, % the \opt{spacing} option should not be chosen blindly; it is also recommended % to experiment with the settings in order to understand the workings of this % feature. @@ -2350,7 +2458,8 @@ %\begin{itemize} % \item If you want to use 8-bit characters in the configuration, you have to % load the \pkg{inputenc} package first. Unicode input is also supported -% (when loading \pkg{inputenc} with the |utf8| or the |utf8x| option). +% (when loading \pkg{inputenc} with the |utf8| or the |utf8x| option, +% or out of the box with \xetex\ and \luatex). % When using multiple input encodings in a document, 8-bit characters in % the settings will only work reliably if you specify the |inputenc| key. %\changes{v2.3a}{2008/02/25}{add hint about \pkg{babel} having to be loaded first} @@ -2361,6 +2470,19 @@ % Chinese\slash Japanese\slash Korean fonts. Therefore, the only % micro-typographic extension that can be made to work with the % \pkg{CJK} package is font expansion. +%\changes{v2.5}{2012/09/11}{add hint about \luatex\ compatibility} +% \item Before this package was fully compatible with \luatex, the following +% method of enabling expansion and protrusion with the \pkg{fontspec} +% package was most often recommended on the web and in groups and forums: +%\begin{verbatim}[deletekeywords={[1]{expansion,protrusion}}] +%\newfontfeature{Microtype}{protrusion=default;expansion=default} +%\defaultfontfeatures{Microtype} +%\end{verbatim} +% This code should \emph{not} be used with this package, as it will +% basically override all of the settings made by \microtype\ -- despite +% the naming, the above lines have nothing to do with this +% package.\footnote{^^A +% They make use of features provided by \pkg{luaotfload} (via \pkg{fontspec}).} %\end{itemize} % %\changes{v1.8}{2005/06/23}{add hint about error messages} @@ -2374,8 +2496,8 @@ %! Font csnameendcsname=cmr10+20 at 10.0pt not loadable: Metric (TFM) file not found. %\end{verbatim} % This error message will occur if you are trying to employ font expansion -% while creating <DVI> output. Remember, that \emph{automatic} font expansion -% only works when running \pdftex\ in <PDF> mode. Although expansion is also +% while creating <DVI> output. Remember that \emph{automatic} font expansion +% only works when running \pdftex\ or \luatex\ in <PDF> mode. Although expansion is also % possible in <DVI> mode, it requires that all instances of the expanded fonts % exist on your \TeX\ system. % @@ -2419,7 +2541,6 @@ % older \pdftex\ versions, this is only possible if you manually create % expanded instances of the fonts. % -%\ifcmr\else\pagebreak\fi ^^A layout %\changes{v2.0}{2006/11/05}{add hint about how to increase \texttt{font\textunderscore max} % and \texttt{font\textunderscore mem\textunderscore size}} % \item @@ -2455,6 +2576,16 @@ % \emph{and} expansion is applied to a font. It is harmless and can be ignored. %\end{itemize} % +%\changes{v2.5}{2012/07/17}{add hint about \texttt{dtx} source code} +% \paragraph{The source code of this document is freely available.} +% If you wonder how this document was created, just have a look at the source +% code in \file{microtype.dtx}, which is either already included in your \TeX\ +% distribution, or else can be downloaded from +% \href{http://mirror.ctan.org/macros/latex/contrib/microtype/} +% {\acronym{CTAN}}. +% For the source code of the logo on the title page and of the letterspacing +% sample from section~\ref{sub:tracking}, see appendix~\ref{sec:title-logo} and +% \ref{sec:letterspace-ill}. % % %\section{Contributions} @@ -2475,7 +2606,8 @@ % %\section{Acknowledgments} % -% This package would be pointless if \contributor\thanh{} <thanh\at pdftex.org> +% This package would be pointless if +% \contributor\thanh{} <thanh\at pdftex.org> % hadn't created the \pdftex\ programme in the first place, which introduced % the micro-typographic extensions and made them available to the \TeX\ world. % Furthermore, I thank him for helping me to improve this package, and not @@ -2483,30 +2615,41 @@ % elsewhere. I also thank him and the rest of the \pdftex\ team for refuting % the idea that \TeX\ is dead, and for fixing the bugs I find. % -% \contributor Harald Harders <h.harders\at tu-bs.de> has contributed protrusion -% settings for Adobe Minion. I~would also like to thank him for a number of bug -% reports and suggestions he had to make. -% \contributor Andreas B\"uhmann <andreas.buehmann\at web.de> has suggested the -% possibility to specify ranges of font sizes, and resourcefully assisted in -% implementing this. He also came up with some good ideas for the management of -% complex configurations. -% \contributor Ulrich Dirr <ud\at art-satz.de> has made numerous suggestion, -% especially concerning the new extensions of interword spacing adjustment -% and additional character kerning. -% My thanks also go to \contributor Maciej Eder <maciej_eder\at poczta.onet.pl> +% \contributor Harald Harders <h.harders\at tu-bs.de> +% has contributed protrusion settings for Adobe Minion. I~would also like to +% thank him for a number of bug reports and suggestions he had to make. +% \contributor Andreas B\"uhmann <andreas.buehmann\at web.de> +% has suggested the possibility to specify ranges of font sizes, and +% resourcefully assisted in implementing this. He also came up with some good +% ideas for the management of complex configurations. +% \contributor Ulrich Dirr <ud\at art-satz.de> +% has made numerous suggestion, especially concerning the new extensions of +% interword spacing adjustment and additional character kerning. +% \contributor Georg Duffner <g.duffner\at gmail.com> has patiently tested +% \microtype\ under \xetex\ and \luatex\ with his beautiful OpenType font +% <EB>~Garamond\footnote{\ctanurl{fonts/ebgaramond}, including configuration +% files for \microtype.}. +% My thanks also go to +% \contributor Maciej Eder <maciej_eder\at poczta.onet.pl> % for contributing settings for the <QX> encoding, as well as to -% \contributor Karl Karlsson <karl-karlsson\at yandex.ru> for providing -% settings for the Cyrillic <T2A> encoding. -% I am indebted to \contributor \'Elie Roux <elie.roux\at telecom-bretagne.eu>, +% \contributor Karl Karlsson <karl-karlsson\at yandex.ru> +% for providing settings for the Cyrillic <T2A> encoding, and to +% \contributor Hendrik Vogt <hendrik.vogt\at tu-dresden.de>, +% who made substantial improvements to the Computer Modern Roman italic settings. +% \contributor Loren B. Davis <davislo\at eecs.oregonstate.edu> +% has provided protrusion settings for OpenType versions of Palatino Linotype. +% I am also indebted to +% \contributor \'Elie Roux <elie.roux\at telecom-bretagne.eu>, % who contributed the |lua| module. % -% I thank \contributor Philipp Lehman <plehman\at gmx.net> for adding to his -% \pkg{csquotes} package the possibility to restore the original meanings of -% all activated characters, thus allowing for these characters to be used in the -% configuration files. -% \contributor Peter Wilson <herries.press\at earthlink.net> kindly provided a -% hook in his \pkg{ledmac}/\pkg{ledpar} packages, so that critical editions can -% finally also benefit from character protrusion. +% I thank +% \contributor Philipp Lehman <plehman\at gmx.net> +% for adding to his \pkg{csquotes} package the possibility to restore the +% original meanings of all activated characters, thus allowing for these +% characters to be used in the configuration files. +% \contributor Peter Wilson <herries.press\at earthlink.net> +% kindly provided a hook in his \pkg{ledmac}/\pkg{ledpar} packages, so that +% critical editions can finally also benefit from character protrusion. % % Additionally, the following people have reported bugs, made suggestions or % helped otherwise (in chronological order): @@ -2543,9 +2686,53 @@ % \contributor Colin Rourke <gt\at msp.warwick.ac.uk>, % \contributor Maverick Woo <maverick\at cs.cmu.edu>, % \contributor Silas~S. Brown <ssb22\at cam.ac.uk>, -% \contributor Christian Stark <cstark\at gmx.de> +% \contributor Christian Stark <cstark\at gmx.de>, +% \contributor Marcin Borkowski <mbork\at atos.wmid.amu.edu.pl>, +% \contributor George Gratzer <gratzer\at me.com>, +% \contributor Josep Maria Font <jmfont\at ub.edu>, +% \contributor Juan Acevedo <juan.acevedo.juan\at gmail.com>, +% \contributor Heiko Oberdiek <heiko.oberdiek\at googlemail.com>, +% \contributor Till~A. Heilmann <till.heilmann\at unibas.ch>, +% \contributor Rolf Dieterich <rolf.dieterich\at gmx.de>, +% \contributor Seamus Bradley <@\at @>, +% \contributor Meho~R <meho.2005\at gmail.com>, +% \contributor Steffen Hoffmann <speraviro-delenda\at expires-2011-11-30.arcornews.de>, +% \contributor Scott Pakin <scott\at pakin.org>, +% \contributor Loren~B. Davis <davislo\at eecs.oregonstate.edu>, +% \contributor Ma\"ieul Rouquette <maieul\at maieul.net>, +% \contributor Jonas Hogstrom <hjb981\at gmail.com>, +% \contributor Gabriel Kerneis <gabriel\at kerneis.info> % and -% \contributor Marcin Borkowski <mbork\at atos.wmid.amu.edu.pl>. +% \contributor RazorXsr <@\at @>. +% +% +%\iffalse +%\section{History of micro-typography} ^^A some time ... +% Both these features have been lacking a simple \LaTeX\ user interface for +% quite some time. Then, the \cite{pdfcprot} package was released, which +% allowed \LaTeX\ users to employ character protrusion without having to mess +% much with the internals. +% +% Font expansion, however, was still most difficult to utilise, since it +% required that the font metrics are available for all levels of expansion. +% Therefore, anybody who wanted to make use of this feature had to create +% multiple instances of the fonts in advance. Shell scripts to partly relieve +% the user from this burden were available~-- however, it remained a cumbersome +% task. Furthermore, all fonts were still being physically created, thus +% wasting compilation time and disk space. +% +% In the summer of 2004, \thanh\ implemented a feature that has proven as a +% major facilitation for \TeX\ and \LaTeX\ users: font expansion can now take +% place automatically. That is, \pdftex\ no longer needs the expanded font +% metrics but will calculate them at run-time and completely in memory. +% +% After this great leap in usability had been taken, the development did not +% stop. On the contrary, \pdftex\ was extended with even more features: version +% 1.30 introduced the possibility to \emph{disable all ligatures}, version 1.40 +% a robust \emph{letterspacing} command, the possibility to specify +% \emph{additional character kerning}, and the \emph{adjustment of interword +% spacing}. +%\fi % % %\begin{thebibliography}{} @@ -2590,7 +2777,7 @@ % \bibitem[\pdftex\ manual]{pdftexman} % \thanh, Sebastian Rahtz, Hans Hagen, Hartmut Henkel, Pawe\l\ Jackowski, Martin Schr\"oder, % \emph{The \pdftex\ user manual}, -% \newblock 25 January 2007. +% \newblock 23 November 2010. % \newblock (\ctanurl{systems/pdftex/}; % latest version at \url{http://sarovar.org/projects/pdftex/}) % ^^A or even \url{http://foundry.supelec.fr/scm/?group_id=23} @@ -2618,6 +2805,11 @@ % \newblock See also Heiko Oberdiek's extension of this package, % \pkg{soulutf8}, which adds Unicode support. % \newblock (\ctanurl{macros/latex/contrib/oberdiek/}) +% +% \bibitem[\pkg{fontspec}]{fontspec} +% Will Robertson, Khaled Hosny, \emph{The \pkg{fontspec} package}, +% \newblock 6 May 2012. +% \newblock (\ctanurl{macros/latex/contrib/fontspec/}) %\end{thebibliography} % % @@ -2653,7 +2845,18 @@ %\begin{History} % %\Version{\expandafter\@gobble\fileversion}{\filedate} -% \item |lua| functions moved to a dedicated file +% \item Support for the \pkg{fontspec} and \pkg{xunicode} packages, viz. +% for OpenType fonts with \luatex\ and \xetex +% \item Support for protrusion with \xetex\ $\geq$ 0.9997 +% \item Support for tracking/letterspacing with \luatex\ $\geq$ 0.62 +% \item Allow context-sensitive setup with \luatex +% \item Warning if protrusion settings are generic +% \item Protrusion settings for Latin Modern Roman (OpenType) +% \item Protrusion settings for Charis SIL (OpenType) +% \item Protrusion settings for Palatino Linotype (OpenType) +% +%\Version{2.4}{2010/01/10} +% ^^A \item |lua| functions moved to a dedicated file % \item Protrusion settings for <T2A> encoded Minion % %\Version{2.3e}{2009/11/09} @@ -2691,7 +2894,7 @@ % \item Possibility to expand a font with different parameters (\pdftex\ $\geq$ 1.40.4) % ^^A ; new option `\opt{copyfonts}' % \refsection{\ref{sub:expansion}} -% \item New optional argument for \cs{DisableLigatures} to disable selected ligatures only +% \item New optional argument for \cs{DisableLigatures} to disable selected ligatures % \refsection{\ref{sec:disable-ligatures}} % \item New command \cs{DeclareMicrotypeVariants} to specify variant suffixes % \refsection{\ref{sub:config-file}} @@ -2752,7 +2955,7 @@ % \item Protrusion settings for <T5> encoded Charter % %\Version{1.9}{2005/10/28} -% \item New command \cs{DisableLigatures} to disable ligatures of fonts +% \item New command \cs{DisableLigatures} to disable ligatures % (\pdftex\ $\geq$ 1.30) % \refsection{\ref{sec:disable-ligatures}} % \item New command \cs{microtypecontext} to change the configuration context; @@ -2783,17 +2986,15 @@ % \item The `|allmath|' font set also includes <U> encoding %^^A \item 8-bit characters in the configuration finally work as advertised, %^^A even if made active by the \pkg{csquotes} package -% \item When using the \pkg{ledmac} package, character protrusion will work -% for the first time ever (\pdftex\ $\geq$ 1.30) +% \item Support for protrusion with the \pkg{ledmac} package (\pdftex\ $\geq$ 1.30) % %\Version{1.7}{2005/03/23} % \item Possibility to specify ranges of font sizes in the set declarations -% and protrusion and expansion settings % \refsection{\ref{sec:font-sets}, \ref{sec:fine-tuning}} %^^A \item Always take font size into account when trying to find protrusion resp. %^^A expansion settings for a given font %^^A \refsection{\ref{sec:fine-tuning}} -% \item New command \cs{LoadMicrotypeFile} to load a font configuration file manually +% \item New command \cs{LoadMicrotypeFile} to load a configuration file manually % \refsection{\ref{sub:config-file}} % \item Hook \cs{Microtype@Hook} for font package authors % \refsection{\ref{sub:hook}} @@ -2894,6 +3095,9 @@ % \appendix % \AppendixSettings % \typeout{:?1000} ^^A tell WinEdt not to bother about overfull boxes +%\changes{v2.5}{2013/02/23}{include \file{microtype-logo.dtx} and \file{microtype-lssample.dtx}} +% \InputIfFileExists{microtype-logo.dtx}\relax\relax +% \InputIfFileExists{microtype-lssample.dtx}\relax\relax % \PrintChanges % \PrintIndex % \typeout{:?1111} @@ -2935,9 +3139,9 @@ % \endinput,\escapechar,\everypar,\expandafter,\fi,\futurelet,\gdef,\global, % \hbadness,\hbox,\hsize,\hskip,\if,\ifcase,\ifcat,\ifdim,\iffalse,\ifhbox, % \ifhmode,\ifmmode,\ifnum,\iftrue,\ifx,\immediate,\input,\inputlineno,\jobname, -% \kern,\lastskip,\let,\lowercase,\meaning,\multiply,\newlinechar,\noexpand, -% \number,\or,\parfillskip,\pretolerance,\relax,\setbox,\showboxdepth,\string, -% \the,\tolerance,\unkern,\unskip,\uppercase,\vbox,\wd,\write,\xdef} +% \kern,\lastskip,\let,\lowercase,\maxdimen,\meaning,\multiply,\newlinechar, +% \noexpand,\number,\or,\parfillskip,\pretolerance,\relax,\setbox,\showboxdepth, +% \string,\the,\tolerance,\unkern,\unskip,\uppercase,\vbox,\wd,\write,\xdef} %^^A\DoNotIndex{\font,\fontdimen,\nullfont,\sfcode,\spacefactor,\spaceskip, %^^A \xspaceskip} ^^A tex %\DoNotIndex{\currentgrouptype,\detokenize,\dimexpr,\eTeXversion,\ifcsname, @@ -2947,8 +3151,11 @@ % \pdftexrevision,\pdftexversion} %^^A\DoNotIndex{\(ef,lp,rp,kn(ac,bc),(kn,sh,st)bs)code,\(left,right)marginkern, %^^A \tagcode,\letterspacefont,\pdfcopyfont,\pdffontexpand,\pdfnoligatures, -%^^A \pdfprotrudechars,\pdfadjust(interwordglue,spacing),\pdf(app,prep)endkern, +%^^A \pdfprotrudechars,\pdfadjust(interwordglue,spacing),\pdf(ap,pre)pendkern, %^^A \pdftracingfonts} ^^A pdftex +%\DoNotIndex{\XeTeXversion,\XeTeXrevision} ^^A xetex +%^^A\DoNotIndex{\XeTeXcharglyph,\XeTeXcountglyphs,\XeTeXfonttype,\XeTeXglyph, +%^^A \XeTeXglyphindex,\XeTeXglyphname,\XeTeXprotrudechars} %\DoNotIndex{\directlua,\luatexversion} ^^A luatex %\DoNotIndex{\eplain,\usepkg@pkg} ^^A eplain %\DoNotIndex{\@backslashchar,\@cclv,\@cclvi,\@classoptionslist,\@currext, @@ -2961,17 +3168,16 @@ % \@unprocessedoptions,\@unusedoptionlist,\@xobeysp,\check@icr,\color@begingroup, % \color@endgroup,\g@addto@macro,\hmode@bgroup,\m@ne,\maybe@ic,\maybe@ic@, % \nfss@text,\not@math@alphabet,\on@line,\p@,\set@display@protect,\strip@prefix, -% \strip@pt,\tw@,\z@,\z@skip,\active,\documentclass,\leavevmode,\makeatletter, -% \maxdimen,\newcommand,\newcount,\newdimen,\newif,\newskip,\newtoks,\nobreak, -% \nonfrenchspacing,\normalsize,\renewcommand,\space, +% \strip@pt,\tw@,\z@,\z@skip,\zap@space,\active,\documentclass,\leavevmode, +% \makeatletter,\mbox,\newcommand,\newcount,\newdimen,\newif,\newskip, +% \newtoks,\nobreak,\nonfrenchspacing,\normalsize,\renewcommand,\space, % \AtBeginDocument,\AtEndOfPackage,\CheckCommand,\CurrentOption, % \DeclareRobustCommand,\IfFileExists,\InputIfFileExists,\MessageBreak, % \PackageError,\PackageInfo,\PackageWarning,\RequirePackage, % \@@enc@update,\cf@encoding,\f@encoding} %^^A\DoNotIndex{\add@accent,\curr@fontshape,\define@newfont,\do@subst@correction, -%^^A \f@size,\font@name,\normalfont,\pickup@font,\selectfont,\set@fontsize, -%^^A \showhyphens} ^^A latex -%\DoNotIndex{\XeTeXversion} ^^A xetex +%^^A \f@size,\font@name,\glb@currsize,\normalfont,\pickup@font,\selectfont, +%^^A \set@fontsize,\showhyphens} ^^A latex %\DoNotIndex{\normalpdfoutput,\normalpdftexversion,\normalpdftexrevision} ^^A tex live %\DoNotIndex{\foreign@language,\languagename,\select@language,\shorthandoff} ^^A babel %\DoNotIndex{\percentsign} ^^A babel/spanish,galician,mexican @@ -3008,13 +3214,16 @@ % \begin{description} % \item[|driver|] The documentation driver, only visible in the \file{dtx} file. % \item[|package|] The code for the \microtype\ package (\file{microtype.sty}). +% \item[|pdftex-def|] Definitions specific to \pdftex\ (\file{microtype-pdftex.def}). +% \item[|xetex-def|] Definitions specific to \xetex\ (\file{microtype-xetex.def}). +% \item[|luatex-def|] Definitions specific to \luatex\ (\file{microtype-luatex.def}). +% \item[|letterspace|] The code for the \letterspace\ package (\file{letterspace.sty}). % \begin{description} -% \item[|letterspace|] The code for the \letterspace\ package (\file{letterspace.sty}). -% \item[|lua|] Code for \luatex\ (\microtype\ only). % \item[|plain|] Code for \pkg{eplain}, \pkg{miniltx} (\letterspace\ only). -% \item[|debug|] Code for additional output in the log file. -% \\Used for -- surprise! -- debugging purposes. % \end{description} +% \item[|debug|] Code for additional output in the log file. +% \\Used for -- surprise! -- debugging purposes. +% \item[|luafile|] Lua functions (\file{microtype.lua}). % \item[|config|] Surrounds all configuration modules. % \begin{description} % \item[|cfg-t|] Surrounds (Latin) text configurations. @@ -3153,6 +3362,10 @@ \@onlypreamble\DeclareMicrotypeVariants \@onlypreamble\DeclareMicrotypeBabelHook % \end{macrocode} +% Don't load \letterspace. +% \begin{macrocode} +\expandafter\let\csname ver@letterspace.sty\endcsname\@empty +% \end{macrocode} %\begin{macro}{\MT@old@cmd} % The old command names had one more hunch. %\changes{v1.8}{2005/04/28}{renamed commands from \cs{..MicroType..} to \cs{..Microtype..}} @@ -3360,6 +3573,88 @@ %</plain> % \end{macrocode} %\end{macro} +%\begin{macro}{\MT@maybe@etex} +%\changes{v2.2}{2007/05/01}{use catcode trickery} +%\changes{v2.3a}{2007/12/29}{removed} +% For definitions that depend on \etex\ features. +% \begin{macrocode} +\ifcase 0% + \ifx\eTeXversion\@undefined 1\else + \ifx\eTeXversion\relax 1\else + \ifcase\eTeXversion 1\fi + \fi + \fi +\else + \catcode`\^^Q=9 \catcode`\^^X=14 +\fi +%<debug>\MT@dinfo@nl{0}{this is +%<debug>^^Q not +%<debug> etex} +% \end{macrocode} +%\end{macro} +%\changes{v2.5}{2010/05/05}{new files: \file{microtype-pdftex.def}, \file{microtype-xetex.def}, \file{microtype-luatex.def}, +% containing engine-specific definitions} +% We check whether we are running \pdftex, \xetex, or \luatex, and +% load the appropriate definition file. +%\begin{macro}{\MT@clear@options} +% If we are using neither of these engines, we disable everything and exit. +% \begin{macrocode} +\def\MT@clear@options{% +%<plain> \MT@requires@latex1{% + \AtEndOfPackage{\let\@unprocessedoptions\relax\MT@restore@catcodes}% + \let\CurrentOption\@empty +%<package> \let\MT@endinput\endinput +%<plain> }\relax +} +% \end{macrocode} +%\end{macro} +% +%\changes{v1.9}{2005/08/29}{compatibility with \texlive\ hack +% (reported by \contributor Herbert Vo\ss{} <Herbert.Voss\at gmx.net>)} +% ^^A MID: <deprh8$c69$00$1@news.t-online.com> +% A hack circumventing the \texlive\ 2004 hack which undefines the \pdftex\ +% primitives in the format in order to hide the fact that \pdftex\ is being run +% from the user. This has been \emph{fixed} in \texlive\ 2005. +% \begin{macrocode} +\ifx\normalpdftexversion\@undefined \else + \let\pdftexversion \normalpdftexversion + \let\pdftexrevision\normalpdftexrevision + \let\pdfoutput \normalpdfoutput +\fi +% \end{macrocode} +%\begin{macro}{\MT@engine} +%\begin{macro}{\MT@engine@tooold} +% Old packages might have let \cmd\pdftexversion\ to \cmd\relax. +% \begin{macrocode} +\let\MT@engine\relax +%<letterspace>\def\MT@engine@tooold{0} +\ifx\pdftexversion\@undefined \else + \ifx\pdftexversion\relax \else + \def\MT@engine{pdf} +%<letterspace> \let\MT@pdf@or@lua\@firstoftwo +%<letterspace> \ifnum\pdftexversion > 139 \def\MT@engine@tooold{1}\fi + \ifx\directlua\@undefined \else + \ifx\directlua\relax \else + \def\MT@engine{lua} +%<letterspace> \let\MT@pdf@or@lua\@secondoftwo +%<letterspace> \ifnum\luatexversion < 62 \def\MT@engine@tooold{0}\fi + \fi + \fi + \fi +\fi +%<*package> +\ifx\MT@engine\relax + \ifx\XeTeXversion\@undefined \else + \ifx\XeTeXversion\relax \else + \def\MT@engine{xe} + \fi + \fi +\fi +%</package> +%</package|letterspace> +% \end{macrocode} +%\end{macro} +%\end{macro} %\begin{macro}{\MT@pdftex@no} %\changes{v1.6a}{2005/02/02}{new macro} % \pdftex's features for which we provide an interface here haven't always been @@ -3372,7 +3667,7 @@ % \item not running \pdftex % \item \pdftex\ ($\less$~0.14f) % \item + micro-typographic extensions (0.14f,g) -% \item + protrusion relative to 1\,em ($\geq$~0.14h) +% \item + protrusion relative to \EM{1} ($\geq$~0.14h) % \item + automatic font expansion; % protrusion no longer has to be set up first; % scale factor fixed to 1000; @@ -3400,126 +3695,124 @@ % (reported by \contributor Harald Harders <h.harders\at tu-bs.de>)} % ^^A private mail, 2004/09/13 % \begin{macrocode} -\def\MT@pdftex@no{0} -% \end{macrocode} -%\changes{v1.9}{2005/08/29}{compatibility with \texlive\ hack -% (reported by \contributor Herbert Vo\ss{} <Herbert.Voss\at gmx.net>)} -% ^^A MID: <deprh8$c69$00$1@news.t-online.com> -% A hack circumventing the \texlive\ 2004 hack which undefines the \pdftex\ -% primitives in the format in order to hide the fact that \pdftex\ is being run -% from the user. This has been \emph{fixed} in \texlive\ 2005. -% \begin{macrocode} -\ifx\normalpdftexversion\@undefined \else - \let\pdftexversion \normalpdftexversion - \let\pdftexrevision\normalpdftexrevision - \let\pdfoutput \normalpdfoutput -\fi -% \end{macrocode} -% Old packages might have let \cmd\pdftexversion\ to \cmd\relax. -% \begin{macrocode} -\ifx\pdftexversion\@undefined \else - \ifx\pdftexversion\relax \else +%<*pdftex-def> %<debug>\MT@dinfo@nl{0}{this is pdftex \the\pdftexversion(\pdftexrevision)} - \def\MT@pdftex@no{7} -%<*package> - \ifnum\pdftexversion = 140 - \ifnum\pdftexrevision < 4 - \def\MT@pdftex@no{6} - \fi - \else -%</package> - \ifnum\pdftexversion < 140 - \def\MT@pdftex@no{5} -%<*package> - \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 +\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 \fi -%</package> \fi \fi \fi %<debug>\MT@dinfo@nl{0}{pdftex no.: \MT@pdftex@no} +%</pdftex-def> % \end{macrocode} %\end{macro} -%\begin{macro}{\MT@clear@options} -% If we are not using \pdftex\ or in case it is too old, we disable everything -% and exit. +%\changes{v2.5}{2010/05/05}{protrusion with \xetex} +%\begin{macro}{\MT@xetex@no} +% \xetex\ supports character protrusion since version 0.9997. % \begin{macrocode} -\def\MT@clear@options{% -%<plain> \MT@requires@latex1{% - \AtEndOfPackage{\let\@unprocessedoptions\relax}% - \let\CurrentOption\@empty -%<plain> }\relax -} +%<*xetex-def> +%<debug>\MT@dinfo@nl{0}{this is xetex (\the\XeTeXversion\XeTeXrevision)} +\ifdim 0\XeTeXrevision pt < 0.9997pt + \def\MT@xetex@no{1} +\else + \def\MT@xetex@no{2} +\fi +%<debug>\MT@dinfo@nl{0}{xetex no.: \MT@xetex@no} +%</xetex-def> % \end{macrocode} %\end{macro} +%\changes{v2.3c}{2008/09/09}{\luatex\ supported by default} +%\begin{macro}{\MT@luatex@no} +% Cases for \luatex\ +% (\cmd\luatexversion\ ought to have been enabled by the format): +%\begin{enum} +% \item N/A +% \item \luatex\ ($\less$~0.36) +% \item + \cmd\directlua\ without state number ($\geq$~0.36) +% \item + \cmd\letterspacefont\ ($\geq$~0.62). +%\end{enum} % \begin{macrocode} -\ifnum\MT@pdftex@no < -%<package> 2 -%<letterspace> 6 +%<*luatex-def> +%<debug>\MT@dinfo@nl0{this is luatex (\the\luatexversion)} +% \end{macrocode} +%\begin{macro}{\MT@lua} +% Communicate with |lua|. +%\changes{v2.2}{2007/05/10}{(basic) support for \luatex} +% Beginning with \luatex\ 0.36, \cmd\directlua\ no longer requires a state +% number. +%\changes{v2.3d}{2009/03/25}{update for \luatex\ 0.36} +% \begin{macrocode} +\def\MT@lua{\directlua} +\def\MT@luatex@no{3} +\ifnum\luatexversion<62 + \def\MT@luatex@no{2} + \ifnum\luatexversion<36 + \def\MT@lua{\directlua0} + \def\MT@luatex@no{1} + \fi +\fi +% \end{macrocode} +%\end{macro} +% \begin{macrocode} +%<debug>\MT@dinfo@nl{0}{luatex no.: \MT@luatex@no} +%</luatex-def> +% \end{macrocode} +%\end{macro} +% \begin{macrocode} +%<*pdftex-def|xetex-def|letterspace> +\ifnum +%<pdftex-def|xetex-def> \csname MT@\MT@engine tex@no\endcsname < 2 +%<letterspace> \MT@engine@tooold=\z@ \MT@warning@nl{You - \ifcase\MT@pdftex@no - don't seem to be using pdftex.\MessageBreak - `\MT@MT' only works with pdftex.\MessageBreak - Try running `pdflatex' instead of - `\ifx\XeTeXversion\@undefined\else xe\fi latex'% +%<*letterspace> + \ifx\MT@engine\relax + don't seem to be using pdftex or luatex.\MessageBreak + Try running `pdftex' or `luatex' instead of\MessageBreak + `\ifx\XeTeXversion\@undefined\else xe\fi tex'% \else - are using a pdftex version older than -%<package> 0.14f% -%<letterspace> 1.40% +%</letterspace> + are using a \MT@engine tex version older than +%<pdftex-def> 0.14f% +%<xetex-def> 0.9997% +%<letterspace> \MT@pdf@or@lua{1.40}{0.62}% .\MessageBreak `\MT@MT' does not work with this version.\MessageBreak - Please install a newer version of pdftex% - \fi - } - \MT@clear@options\MT@restore@catcodes + Please install a newer version of \MT@engine tex% +%<letterspace> \fi + .\MessageBreak I will quit now} + \MT@clear@options \endinput\fi -% \end{macrocode} -%\changes{v2.3c}{2008/09/09}{\luatex\ supported by default} -% Since \luatex\ is included in \texlive\ 2008, we now support it by default, -% even though it's still experimental. Letterspacing doesn't work at all yet, -% since \luatex\ doesn't know the \cmd\letterspacefont\ command. -% \begin{macrocode} -%<*!lua|letterspace> -\ifx\directlua\@undefined \else - \ifx\directlua\relax \else -%<!letterspace> \MT@error -%<letterspace> \MT@warning@nl - {`\MT@MT' -%<!letterspace> only works with luatex if you generate% -%<letterspace> doesn't currently work with luatex.% - \MessageBreak -%<!letterspace> the package with the `lua' option% -%<letterspace> Bye bye% - } -%<!letterspace> {} -%<letterspace> \MT@clear@options\MT@restore@catcodes -%<letterspace> \expandafter\expandafter\expandafter\endinput - \fi -\fi -%</!lua|letterspace> +%</pdftex-def|xetex-def|letterspace> % \end{macrocode} % Still there? Then we can begin: % We need the \pkg{keyval} package, including the `new' \cmd\KV@@sp@def\ % implementation. %\changes{v2.1}{2007/01/15}{fix: \letterspace\ package forgot to load \pkg{keyval}} % \begin{macrocode} +%<*package|letterspace> \RequirePackage{keyval}[1997/11/10] %<*package> % \end{macrocode} @@ -3597,7 +3890,7 @@ %\begin{macro}{\MT@sp@unit} %\begin{macro}{\MT@kn@unit} % Default unit for protrusion settings is character width, for spacing -% |space|, for kerning (and tracking) 1\,em. +% |space|, for kerning (and tracking) \EM{1}. % \begin{macrocode} \let\MT@pr@unit\@empty \let\MT@sp@unit\m@ne @@ -3661,19 +3954,16 @@ %\end{macro} %\begin{macro}{\MT@stretch@default} %\begin{macro}{\MT@shrink@default} -%\begin{macro}{\MT@step@default} % Default values for expansion. % \begin{macrocode} \def\MT@stretch@default{20 } \def\MT@shrink@default{20 } -\def\MT@step@default{4 } % \end{macrocode} %\end{macro} %\end{macro} -%\end{macro} %\begin{macro}{\MT@letterspace} %\begin{macro}{\MT@letterspace@default} -% Default value for letterspacing (in thousandths of 1\,em). +% Default value for letterspacing (in thousandths of \EM{1}). % \begin{macrocode} %</package> \let\MT@letterspace\m@ne @@ -3686,82 +3976,44 @@ % Our private test whether we're still in the preamble. % \begin{macrocode} \newif\ifMT@document +%</package> +%</package|letterspace> % \end{macrocode} %\end{macro} % %\subsubsection{Auxiliary macros} % -%\begin{macro}{\MT@maybe@etex} -%\changes{v2.2}{2007/05/01}{use catcode trickery} -%\changes{v2.3a}{2007/12/29}{removed} -% For definitions that depend on \etex\ features. -% \begin{macrocode} -\ifcase 0% - \ifx\eTeXversion\@undefined 1\else - \ifx\eTeXversion\relax 1\else - \ifcase\eTeXversion 1\fi - \fi - \fi -\else - \catcode`\^^Q=9 \catcode`\^^X=14 -\fi -%<debug>\MT@dinfo@nl{0}{this is -%<debug>^^Q not -%<debug> etex} -% \end{macrocode} -%\end{macro} %\begin{macro}{\MT@requires@pdftex} -% For definitions that depend on a particular \pdftex\ version. -% \begin{macrocode} -\def\MT@requires@pdftex#1{% - \ifnum\MT@pdftex@no<#1 \expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi -} -%<debug>\MT@requires@pdftex6{\pdftracingfonts=1 }\relax -% \end{macrocode} -%\end{macro} %\begin{macro}{\MT@requires@luatex} -%\changes{v2.2}{2007/05/10}{(basic) support for \luatex} -% For definitions that depend on \luatex. +% For definitions that depend on a particular \pdftex\ resp. \luatex\ version. % \begin{macrocode} -%<*lua> -\let\MT@requires@luatex\@secondoftwo -\ifx\directlua\@undefined \else - \ifx\directlua\relax \else - \let\MT@requires@luatex\@firstoftwo - \fi -\fi -%<debug>\MT@dinfo@nl0{this is \MT@requires@luatex{}{not }luatex} +%<*pdftex-def|luatex-def> +\def +%<pdftex-def> \MT@requires@pdftex% +%<luatex-def> \MT@requires@luatex% + #1{\ifnum +%<pdftex-def> \MT@pdftex@no +%<luatex-def> \MT@luatex@no + <#1 \expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi} +%<debug+pdftex-def>\MT@requires@pdftex6{ +%<debug>\pdftracingfonts=1 +%<debug+pdftex-def>}\relax +%</pdftex-def|luatex-def> % \end{macrocode} %\end{macro} -%\begin{macro}{\MT@lua} -% Communicate with |lua|. -% Beginning with \luatex\ 0.36, \cmd\directlua\ no longer requires a state -% number. -%\changes{v2.3d}{2009/03/25}{update for \luatex\ 0.36} -% \cmd\luatexversion\ ought to have been enabled by the format. -% \begin{macrocode} -\MT@requires@luatex{ -\ifnum\luatexversion<36 - \def\MT@lua{\directlua0} -\else - \def\MT@lua{\directlua} -\fi -% \end{macrocode} %\end{macro} % Some functions are loaded from a dedicated |lua| file. This avoids character % escaping problems and incompatibilities between versions of \luatex. % If available, we'll use the \pkg{luatextra} package to load the module. % \begin{macrocode} +%<*luatex-def> \MT@lua{ if (luatextra and luatextra.use_module) then luatextra.use_module("microtype") else dofile(kpse.find_file("microtype.lua")) end} -}\relax -%</lua> -%</package> -%</package|letterspace> +%</luatex-def> % \end{macrocode} % Here it begins. The module was contributed by \'Elie Roux. %\changes{v2.4}{2009/11/12}{new file \file{microtype.lua} containing the \texttt{lua} functions @@ -3776,11 +4028,11 @@ microtype = {} microtype.module = { name = "microtype", - version = 2.4, - date = "2010/01/10", + version = 2.5, + date = "2013/03/13", description = "microtype module.", - author = "R Schlicht", - copyright = "R Schlicht", + author = "Elie Roux & R Schlicht", + copyright = "Elie Roux & R Schlicht", license = "LPPL", } @@ -3982,35 +4234,33 @@ end % or \luatex\ (which also allows negative numbers, as required by the % \opt{letterspace} option). % \begin{macrocode} -\MT@requires@pdftex6{ -%<*lua> - \MT@requires@luatex{ - \def\MT@ifint#1{\csname\MT@lua{microtype.ifint([[#1]])}\endcsname} - }{ -%</lua> %</package> - \def\MT@ifint#1{% - \ifcase\pdfmatch{^-*[0-9]+ *$}{#1}\relax - \expandafter\@secondoftwo - \else - \expandafter\@firstoftwo - \fi - } -%<*package> -%<lua> } +%</package|letterspace> +%<pdftex-def>\MT@requires@pdftex6{ +%<letterspace>\MT@pdf@or@lua{ +%<*pdftex-def|letterspace> +\def\MT@ifint#1{% + \ifcase\pdfmatch{^-*[0-9]+ *$}{#1}\relax + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi +} }{ - \def\MT@ifint#1{% - \if!\ifnum9<1#1!\else?\fi - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - } +%</pdftex-def|letterspace> +%<*pdftex-def|xetex-def|letterspace> +\def\MT@ifint#1{% + \if!\ifnum9<1#1!\else?\fi + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi } -%</package> -%</package|letterspace> +%</pdftex-def|xetex-def|letterspace> +%<pdftex-def|letterspace>} +%<luatex-def>\def\MT@ifint#1{\csname\MT@lua{microtype.if_int([[#1]])}\endcsname} %<*luafile> -function microtype.ifint(s) +function microtype.if_int(s) if string.find(s,"^-*[0-9]+ *$") then tex.write("@firstoftwo") else @@ -4032,37 +4282,34 @@ end %\changes{v2.2}{2007/05/10}{employ \luatex\ features if available} %\todo{fix \texttt{lua} expression} % \begin{macrocode} -%<*package> +%<*pdftex-def> \MT@requires@pdftex6{ -%<*lua> - \MT@requires@luatex{ - \def\MT@ifdimen#1{\csname\MT@lua{microtype.ifdimen([[#1]])}\endcsname} - }{ -%</lua> - \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 - } -%<lua> } +\def\MT@ifdimen#1{% + \ifcase\pdfmatch{^([0-9]+([.,][0-9]+)?|[.,][0-9]+)% + (em|ex|cm|mm|in|pc|pt|dd|cc|bp|sp|nd|nc|px)? *$}{#1}\relax + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi +} }{ - \def\MT@ifdimen#1{% - \setbox\z@=\hbox{% - \MT@count=1#1\relax - \ifnum\MT@count=\@ne - \aftergroup\@secondoftwo - \else - \aftergroup\@firstoftwo - \fi - }% - } +%</pdftex-def> +%<*pdftex-def|xetex-def> +\def\MT@ifdimen#1{% + \setbox\z@=\hbox{% + \MT@count=1#1\relax + \ifnum\MT@count=\@ne + \aftergroup\@secondoftwo + \else + \aftergroup\@firstoftwo + \fi + }% } -%</package> +%</pdftex-def|xetex-def> +%<pdftex-def>} +%<luatex-def>\def\MT@ifdimen#1{\csname\MT@lua{microtype.if_dimen([[#1]])}\endcsname} %<*luafile> -function microtype.ifdimen(s) +function microtype.if_dimen(s) if (string.find(s, "^-*[0-9]+(%a*) *$") or string.find(s, "^-*[0-9]*[.,][0-9]+(%a*) *$")) then tex.write("@firstoftwo") @@ -4085,6 +4332,7 @@ end \expandafter\@secondoftwo \fi } +%</package> % \end{macrocode} %\end{macro} %\begin{macro}{\MT@ifstreq} @@ -4095,34 +4343,32 @@ end % ^^A MID: <esmd6k$954$1@news1.rz.uni-duesseldorf.de> %\changes{v2.2}{2007/05/10}{employ \luatex\ features if available} % \begin{macrocode} +%<*pdftex-def> \MT@requires@pdftex5{ -%<*lua> - \MT@requires@luatex{ - \def\MT@ifstreq#1#2{\csname\MT@lua{microtype.ifstreq([[#1]],[[#2]])}\endcsname} - }{ -%</lua> - \def\MT@ifstreq#1#2{% - \ifcase\pdfstrcmp{#1}{#2}\relax - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - } -%<lua> } +\def\MT@ifstreq#1#2{% + \ifcase\pdfstrcmp{#1}{#2}\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} }{ - \def\MT@ifstreq#1#2{% - \edef\MT@res@a{#1}% - \edef\MT@res@b{#2}% - \ifx\MT@res@a\MT@res@b - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - } +%</pdftex-def> +%<*pdftex-def|xetex-def> +\def\MT@ifstreq#1#2{% + \edef\MT@res@a{#1}% + \edef\MT@res@b{#2}% + \ifx\MT@res@a\MT@res@b + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi } -%</package> +%</pdftex-def|xetex-def> +%<pdftex-def>} +%<luatex-def>\def\MT@ifstreq#1#2{\csname\MT@lua{microtype.if_str_eq([[#1]],[[#2]])}\endcsname} %<*luafile> -function microtype.ifstreq(s1, s2) +function microtype.if_str_eq(s1, s2) if s1 == s2 then tex.write("@firstoftwo") else @@ -4130,10 +4376,6 @@ function microtype.ifstreq(s1, s2) end end -% \end{macrocode} -% And here we end the |lua| file. -% \begin{macrocode} -end %</luafile> % \end{macrocode} %\end{macro} @@ -4348,9 +4590,32 @@ end % \end{macrocode} %\end{macro} %\begin{macro}{\MT@do@font} -% Execute \meta{\#1} 256 times. +% Execute \meta{\#1} 256 times, +% \begin{macrocode} +%</package|letterspace> +%<*pdftex-def|luatex-def|letterspace> +\def\MT@do@font{\MT@while@num\z@ +%<pdftex-def|letterspace> \@cclvi +% \end{macrocode} +% resp. 1114111 times for \luatex\ (this is going to be slow, but \luatex\ is +% slow anyway -- still, there ought to be a better way!) +%\changes{v2.5}{2010/08/14}{adapt for \luatex} +% \begin{macrocode} +%<luatex-def> \MT@max@slot +} +%</pdftex-def|luatex-def|letterspace> +% \end{macrocode} +% resp. for the whole font. +%\changes{v2.5}{2010/05/18}{adapt for \xetex} % \begin{macrocode} -\def\MT@do@font{\MT@while@num\z@\@cclvi} +%<*xetex-def> +\def\MT@do@font#1{% + \@tempcnta=\z@ + \MT@loop #1% + \advance\@tempcnta \@ne + \ifnum\@tempcnta < \XeTeXcountglyphs\MT@font \MT@repeat +} +%</xetex-def> %<*package> % \end{macrocode} %\end{macro} @@ -4513,7 +4778,7 @@ end \@ifl@aded{tex}{wordcount}{% \MT@warning@nl{Detected the `wordcount' utility.\MessageBreak Disabling `\MT@MT', since it wouldn't work}% - \MT@clear@options\MT@restore@catcodes\endinput}\relax + \MT@clear@options\endinput}\relax % \end{macrocode} %\begin{macro}{\MT@setup@} %\changes{v1.9a}{2005/11/21}{defer setup until the end of the preamble} @@ -4527,6 +4792,7 @@ end % preamble, and fonts don't have to be set up before \microtype. % \begin{macrocode} %</package> +%<*package|letterspace> %<plain>\MT@requires@latex1{ \let\MT@setup@\@empty % \end{macrocode} @@ -4546,6 +4812,7 @@ end % We almost never do anything if a package is not loaded. % \begin{macrocode} \def\MT@with@package@T#1{\@ifpackageloaded{#1}\@firstofone\@gobble} +%</package|letterspace> %<*package> % \end{macrocode} %\end{macro} @@ -4562,13 +4829,7 @@ end } % \end{macrocode} %\end{macro} -% Don't load \letterspace. -% \begin{macrocode} -\MT@let@nc{ver@letterspace.sty}\@empty -% \end{macrocode} %\begin{macro}{\MT@ledmac@setup} -%\begin{macro}{\MT@led@unhbox@line} -%\begin{macro}{\MT@led@kern} % The \pkg{ledmac} package first saves each paragraph in a box, from which it % then splits off the lines one by one. This will destroy character protrusion. % (There aren't any problems with the \pkg{lineno} package, since it takes a @@ -4589,11 +4850,22 @@ end % Peter Wilson was so kind to provide the \cmd\l@dunhbox@line\ hook in % \pkg{ledmac} to allow for protrusion. \cmd\leftmarginkern\ and % \cmd\rightmarginkern\ are new primitives of \pdftex\ 1.21b (aka. 1.30.0). +%\changes{v2.5}{2012/07/02}{fix to work with \xetex\ +% (reported by \contributor Ma\"ieul Rouquette <maieul\at maieul.net>)} +% ^^A private mail, 2012/06/30 +% They are also part of recent \xetex. % \begin{macrocode} -\MT@requires@pdftex5{ +%</package> +%<pdftex-def>\MT@requires@pdftex5{ +%<*pdftex-def|luatex-def|xetex-def> \def\MT@ledmac@setup{% \ifMT@protrusion \MT@ifdefined@c@TF\l@dunhbox@line{% +% \end{macrocode} +%\begin{macro}{\MT@led@unhbox@line} +%\begin{macro}{\MT@led@kern} +% Hook. +% \begin{macrocode} \MT@info@nl{Patching ledmac to enable character protrusion}% \newdimen\MT@led@kern \let\MT@led@unhbox@line\l@dunhbox@line @@ -4605,6 +4877,10 @@ end \kern\MT@led@kern \fi }% +% \end{macrocode} +%\end{macro} +%\end{macro} +% \begin{macrocode} }{% \MT@warning@nl{% Character protrusion in paragraphs with line\MessageBreak @@ -4612,6 +4888,8 @@ end }% \fi } +%</pdftex-def|luatex-def|xetex-def> +%<*pdftex-def> }{ \def\MT@ledmac@setup{% \ifMT@protrusion @@ -4623,16 +4901,28 @@ end \fi } } +%</pdftex-def> % \end{macrocode} %\end{macro} -%\end{macro} -%\end{macro} %\begin{macro}{\MT@restore@p@h} % Restore meaning of \cmd\% and \cmd\#. % \begin{macrocode} +%<*package|letterspace> +%<*package> \def\MT@restore@p@h{\chardef\%`\% \chardef\#`\# } % \end{macrocode} %\end{macro} +% Two new conditionals for use with \xetex\ or \luatex. +%\begin{macro}{\ifMT@xunicode} +%\begin{macro}{\ifMT@fontspec} +% \begin{macrocode} +\newif\ifMT@xunicode +\newif\ifMT@fontspec +\MT@with@package@T{xunicode}\MT@xunicodetrue +\MT@with@package@T{fontspec}\MT@fontspectrue +% \end{macrocode} +%\end{macro} +%\end{macro} %\begin{macro}{\MT@setupfont@hook} % This hook will be executed every time a font is set up (inside a group). % @@ -4663,11 +4953,19 @@ end %\changes{v1.8}{2005/03/24}{remove superfluous \pkg{statex} hook} % --- No longer needed, either. %\fi +%\changes{v2.5}{2012/08/22}{select font with \pkg{fontspec} (found by \contributor Georg Duffner <g.duffner\at gmail.com>)} +% ^^A private mail, 2012/08/17 +% When a font is defined via \cmd\fontspec, the font is not actually loaded, +% hence \xetex\ resp. \luatex\ would see a wrong font (in \cs{MT@get@slot}). +% Therefore, we load the current font. +% \begin{macrocode} + \ifMT@fontspec\MT@font\fi +% \end{macrocode} %\changes{v1.8}{2005/03/30}{restore percent character if Spanish \pkg{babel} is loaded} %\changes{v2.2}{2007/02/02}{restore percent character if Galician \pkg{babel} is loaded} %\changes{v2.3a}{2008/01/29}{restore percent character if Mexican \pkg{babel} is loaded} -% Spanish (and Galician and Mexican) \pkg{babel} modify \cmd\%, storing the -% original meaning in \cmd\percentsign. +% Spanish (as well as Galician and Mexican) \pkg{babel} modify \cmd\%, storing +% the original meaning in \cmd\percentsign. % \begin{macrocode} \MT@if@false \MT@with@babel@and@T{spanish} \MT@if@true @@ -4686,14 +4984,20 @@ end % \pkg{hyperref} redefines \cmd\% and \cmd\# inside a \cmd\url. We restore % the original meanings (which we can only hope are correct). %\changes{v1.8}{2005/05/20}{restore \cmd\% and \cmd\# when \pkg{hyperref} is loaded} -% Same for \pkg{tex4ht}. +% Same for \pkg{tex4ht} %\changes{v1.9d}{2006/02/27}{restore \cmd\% and \cmd\# when \pkg{tex4ht} is loaded % (reported by \contributor Peter Dyballa <Peter_Dyballa\at Web.DE>)} % ^^A private mail, 2006/02/26 +% and \pkg{mathastext}. +%\changes{v2.5}{2011/07/29}{restore \cmd\% and \cmd\# when \pkg{mathastext} is loaded +% (found by \contributor Seamus Bradley <@\at @>)} +% ^^A http://tex.stackexchange.com/questions/24248 +% ^^A (beta:07) % \begin{macrocode} \MT@if@false - \MT@with@package@T{hyperref}\MT@if@true - \MT@with@package@T{tex4ht} \MT@if@true + \MT@with@package@T{hyperref} \MT@if@true + \MT@with@package@T{tex4ht} \MT@if@true + \MT@with@package@T{mathastext}\MT@if@true \ifMT@if@\MT@restore@p@h\fi } % \end{macrocode} @@ -4715,10 +5019,15 @@ 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 + \MT@with@package@T{xunicode}\MT@xunicodetrue + \MT@with@package@T{fontspec}\MT@fontspectrue % \end{macrocode} % We can clean up \cs{MT@setupfont@hook} now. % \begin{macrocode} \let\MT@setupfont@hook\@empty + \ifMT@fontspec + \g@addto@macro\MT@setupfont@hook{\MT@font}% + \fi \MT@if@false \MT@with@babel@and@T{spanish} \MT@if@true \MT@with@babel@and@T{galician}\MT@if@true @@ -4763,6 +5072,7 @@ time will almost certainly lead to undesired results. Have your choice!}% %<plain> }\relax %<*package> \MT@with@package@T{tex4ht}\MT@if@true + \MT@with@package@T{mathastext}\MT@if@true \ifMT@if@\g@addto@macro\MT@setupfont@hook\MT@restore@p@h\fi % \end{macrocode} %\changes{v1.9b}{2005/12/19}{compatibility with \pkg{listings}: sanitise more catcodes @@ -4785,6 +5095,14 @@ time will almost certainly lead to undesired results. Have your choice!}% \g@addto@macro\MT@setupfont@hook{% \catcode`\\\z@ % \end{macrocode} +% Inside a listing, \cmd\space\ is redefined. +%\changes{v2.5}{2011/05/03}{restore \cmd\space\ inside \pkg{listings} +% (reported by \contributor Rolf Dieterich <rolf.dieterich\at gmx.de>)} +% ^^A private mail, 2011/04/30 +% ^^A (beta:07) +% \begin{macrocode} + \def\space{ }% +% \end{macrocode} %\changes{v1.9b}{2005/12/23}{compatibility with the \texttt{extendedchar} option of % the \pkg{listings} package} % When loaded with the |extendedchar| option, \pkg{listings} will also redefine @@ -4847,12 +5165,12 @@ time will almost certainly lead to undesired results. Have your choice!}% }% %</package> } -%<*package> +%</package|letterspace> % \end{macrocode} %\changes{v1.6}{2005/01/19}{load a font if none is selected} % We need a font (the \pkg{minimal} class doesn't load one). % \begin{macrocode} -\expandafter\ifx\the\font\nullfont\normalfont\fi +%<package>\expandafter\ifx\the\font\nullfont\normalfont\fi % \end{macrocode} % %\subsection{Font setup}\label{ssec:font-setup} @@ -4863,14 +5181,16 @@ time will almost certainly lead to undesired results. Have your choice!}% % But first, we might have to disable stuff when used together with adventurous % packages. % \begin{macrocode} +%<*pdftex-def|xetex-def|luatex-def> \def\MT@setupfont{\MT@setupfont@hook} % \end{macrocode} % This will use a copy of the font (allowing for expansion parameter variation % and the use of more than one set of protrusion factors for a font within one % paragraph). % \begin{macrocode} -\MT@requires@pdftex7 - {\g@addto@macro\MT@setupfont\MT@copy@font}\relax +%<pdftex-def>\MT@requires@pdftex7{ +%<pdftex-def|luatex-def>\g@addto@macro\MT@setupfont\MT@copy@font +%<pdftex-def>}\relax % \end{macrocode} % The font properties must be extracted from \cs{MT@font}, since the current % value of \cmd\f@encoding\ and friends may be wrong! @@ -4900,8 +5220,9 @@ time will almost certainly lead to undesired results. Have your choice!}% % Tracking has to come first, since it means actually loading a different font. %\changes{v2.2}{2007/04/15}{only add features that are available with the respective \pdftex} % \begin{macrocode} -\MT@requires@pdftex6 - {\g@addto@macro\MT@setupfont\MT@tracking}\relax +%<pdftex-def>\MT@requires@pdftex6 +%<luatex-def>\MT@requires@luatex3 +%<pdftex-def|luatex-def> {\g@addto@macro\MT@setupfont\MT@tracking}\relax \g@addto@macro\MT@setupfont{% \MT@check@font \ifMT@inlist@ @@ -4917,18 +5238,22 @@ time will almost certainly lead to undesired results. Have your choice!}% % with 1.20, the order doesn't matter. % \begin{macrocode} \MT@protrusion - \MT@expansion +%<pdftex-def|luatex-def> \MT@expansion } % \end{macrocode} % Interword spacing and kerning (\pdftex\ 1.40). % \begin{macrocode} -\MT@requires@pdftex6 - {\g@addto@macro\MT@setupfont{\MT@spacing\MT@kerning}}\relax +%<*pdftex-def> +\MT@requires@pdftex6{ +\g@addto@macro\MT@setupfont{\MT@spacing\MT@kerning} +}\relax +%</pdftex-def> % \end{macrocode} % Disable ligatures (\pdftex\ 1.30). % \begin{macrocode} -\MT@requires@pdftex5 - {\g@addto@macro\MT@setupfont\MT@noligatures}\relax +%<pdftex-def>\MT@requires@pdftex5{ +%<pdftex-def|luatex-def>\g@addto@macro\MT@setupfont\MT@noligatures +%<pdftex-def>}\relax \g@addto@macro\MT@setupfont{% % \end{macrocode} % Debugging. @@ -4940,19 +5265,21 @@ time will almost certainly lead to undesired results. Have your choice!}% \MT@register@font \fi } +%</pdftex-def|xetex-def|luatex-def> % \end{macrocode} %\end{macro} %\begin{macro}{\MT@copy@font} %\changes{v2.2}{2007/07/03}{optionally work on copies of fonts} %\begin{macro}{\MT@copy@font@} -% The new (1.40.4) \cmd\pdfcopyfont\ command allows to expand a font with +% The new (1.40.4) \cmd\pdfcopyfont\ command allows expanding a font with % different parameters, or to use more than one set of protrusion factors for a % given font within one paragraph. It will be used when we find a context for % \cs{SetProtrusion} or \cs{SetExpansion} in the preamble, or when the package % has been loaded with the \opt{copyfonts} option. % \begin{macrocode} +%<*pdftex-def|luatex-def> \let\MT@copy@font\relax -\MT@requires@pdftex7{ +%<pdftex-def>\MT@requires@pdftex7{ \def\MT@copy@font@{% % \end{macrocode} %\begin{macro}{\MT@font@copy} @@ -4965,7 +5292,7 @@ time will almost certainly lead to undesired results. Have your choice!}% % \end{macrocode} %\end{macro} %\begin{macro}{\MT@font@orig} -% \pdftex\ doesn't allow to copy a font that has already been copied and +% \pdftex\ doesn't allow copying a font that has already been copied and % expanded\slash letterspaced. Hence, we have to get the original. % \begin{macrocode} \expandafter\ifx\MT@font@copy\relax @@ -5009,7 +5336,8 @@ time will almost certainly lead to undesired results. Have your choice!}% \MT@font \csname MT@\@tempa @#1font@list\endcsname \fi } -}\relax +%<pdftex-def>}\relax +%</pdftex-def|luatex-def> % \end{macrocode} %\end{macro} %\ifpdf\phantomsection\fi\label{exp-hack} @@ -5019,7 +5347,7 @@ time will almost certainly lead to undesired results. Have your choice!}% % you do not want to create a clone of the font setup (this would require % duplicating the \file{tfm}/\file{vf} files under a new name, and writing new % \file{fd} files and \file{map} entries), you can load a minimally larger font -% for the paragraph in question. E.\,g., for a document typeset in 10\,pt: +% for the paragraph in question. E.g., for a document typeset in 10\,pt: %\begin{verbatim}[gobble=2,morekeywords={[0]{\expandpar}}] % \SetExpansion % [ stretch = 30, @@ -5050,10 +5378,16 @@ time will almost certainly lead to undesired results. Have your choice!}% %\begin{macro}{\MT@size} % Split up the font name (\meta{\#6} may be a protrusion\slash expansion % context and/or a letterspacing amount). ^^A really? +% With \pkg{fontspec} we also need to remove its internal instance counter. % \begin{macrocode} +%<*package> \def\MT@split@name#1/#2/#3/#4/#5/#6\@nil{% \def\MT@encoding{#1}% - \def\MT@family {#2}% + \ifMT@fontspec + \edef\MT@family{\MT@scrubfeature#2()\relax}% + \else + \def\MT@family{#2}% + \fi \def\MT@series {#3}% \def\MT@shape {#4}% \def\MT@size {#5}% @@ -5075,6 +5409,21 @@ time will almost certainly lead to undesired results. Have your choice!}% %\end{macro} %\end{macro} %\end{macro} +%\begin{macro}{\MT@scrubfeature} +%\begin{macro}{\MT@scrubfeatures} +% Remove one resp. all feature counters (\pkg{fontspec}). +%\changes{v2.5}{2010/02/27}{compatibility with \pkg{fontspec}: remove its internal counter} +% \begin{macrocode} +\def\MT@scrubfeature#1(#2)#3\relax{#1} +\def\MT@scrubfeatures#1(#2)#3\relax{% + #1% + \ifx\relax#3\relax\else + \MT@scrubfeatures#3\relax + \fi +} +% \end{macrocode} +%\end{macro} +%\end{macro} %\begin{macro}{\ifMT@do} %\begin{macro}{\MT@feat} %\begin{macro}{\MT@maybe@do} @@ -5244,9 +5593,23 @@ time will almost certainly lead to undesired results. Have your choice!}% % %\subsubsection{Protrusion} % +%\begin{macro}{\ifMT@nofamily} +% Info for settings that are not family-specific. +% (Warnings seem to be too irritating.) ^^A at least one thing I found out in the ridiculously long `beta' phase +% The switch is set in \cs{MT@next@listname}. +%\changes{v2.5}{2011/05/28}{info if settings are not family-specific +% (suggested by \contributor\thanh{} <thanh\at river-valley.org>)} +% ^^A private mail, 2010/09/07 +% ^^A (beta:07) +% \begin{macrocode} +\newif\ifMT@nofamily +%</package> +% \end{macrocode} +%\end{macro} %\begin{macro}{\MT@protrusion} % Set up for protrusion? % \begin{macrocode} +%<*pdftex-def|xetex-def|luatex-def> \def\MT@protrusion{\MT@maybe@do{pr}} % \end{macrocode} %\end{macro} @@ -5258,10 +5621,25 @@ time will almost certainly lead to undesired results. Have your choice!}% %\changes{v1.6}{2004/12/18}{introduce \texttt{factor} option} % \begin{macrocode} \def\MT@set@pr@codes{% + \MT@nofamilyfalse % \end{macrocode} % Check whether and if, which list should be applied to the current font. +% If family-specific settings don't exist, we write it to the log +%\changes{v2.5}{2013/02/05}{make info about generic settings encoding-specific +% (reported by \contributor Sebastian Schubert <schubert.seb\at googlemail.com>)} +% ^^A private mail, 2013/01/24 +% (for each encoding). % \begin{macrocode} \MT@if@list@exists{% + \ifMT@nofamily + \MT@ifdefined@n@TF{\MT@encoding-\MT@family-settings}\relax{% + \MT@info@nl{Loading generic settings for font family\MessageBreak + `\MT@family' (encoding: \MT@encoding).\MessageBreak + For optimal results, create family-specific settings.\MessageBreak + See the microtype manual for details}% + \MT@glet@nc{\MT@encoding-\MT@family-settings}\@empty + }% + \fi \MT@get@font@dimen@six{% \MT@get@opt \MT@reset@pr@codes @@ -5316,12 +5694,17 @@ time will almost certainly lead to undesired results. Have your choice!}% %\begin{macro}{\MT@set@all@pr} %\changes{v2.2}{2007/06/16}{(et al.) allow empty values} % Set all protrusion codes of the font. +%\changes{v2.5}{2011/08/19}{fix: remove space +% (found by \contributor Meho~R <meho.2005\at gmail.com>)} +% ^^A MID: <b3c1627e-192f-4004-ab46-4ea86925e298@dc3g2000vbb.googlegroups.com> +% ^^A http://tex.stackexchange.com/questions/25036/microtype-package-v-2-5-beta-06-and-footnote-protrusion +% ^^A (beta:08) % \begin{macrocode} \def\MT@set@all@pr#1#2{% %<debug>\MT@dinfo@nl{3}{-- lp/rp: setting all to #1/#2}% \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@ifempty{#1}\relax{\g@addto@macro\MT@temp{\lpcode\MT@font\@tempcnta=#1}}% + \MT@ifempty{#2}\relax{\g@addto@macro\MT@temp{\rpcode\MT@font\@tempcnta=#2}}% \MT@do@font\MT@temp } % \end{macrocode} @@ -5344,11 +5727,14 @@ time will almost certainly lead to undesired results. Have your choice!}% % the margin kerns. This will be activated in \cs{MT@set@tr@codes}. % \begin{macrocode} \def\MT@the@pr@code{\@tempcntb} -\MT@requires@pdftex6{ - \def\MT@the@pr@code@tr{% +%<*pdftex-def|luatex-def> +%<pdftex-def>\MT@requires@pdftex6 +%<luatex-def>\MT@requires@luatex3 + {\def\MT@the@pr@code@tr{% \numexpr\@tempcntb+\MT@letterspace@/2\relax } }\relax +%</pdftex-def|luatex-def> % \end{macrocode} %\end{macro} %\end{macro} @@ -5375,7 +5761,8 @@ time will almost certainly lead to undesired results. Have your choice!}% \def\@tempa{#1}% \ifx\@tempa\@empty \else \MT@get@slot - \ifnum\MT@char > \m@ne +%<pdftex-def|luatex-def> \ifnum\MT@char > \m@ne +%<xetex-def> \ifx\MT@char\@empty \else \MT@get@char@unit \csname MT@\MT@feat @split@val\endcsname#2\relax \fi @@ -5390,13 +5777,13 @@ time will almost certainly lead to undesired results. Have your choice!}% \MT@ifempty\@tempb\relax{% \MT@scale@to@em \lpcode\MT@font\MT@char=\MT@the@pr@code -%<debug>\MT@dinfo@nl{4}{;;; lp (\MT@char): \number\lpcode\MT@font\MT@char: [#1]}% +%<debug>\MT@dinfo@nl{4}{;;; lp (\MT@char): \number\lpcode\MT@font\MT@char\space: [#1]}% }% \def\@tempb{#2}% \MT@ifempty\@tempb\relax{% \MT@scale@to@em \rpcode\MT@font\MT@char=\MT@the@pr@code -%<debug>\MT@dinfo@nl{4}{;;; rp (\MT@char): \number\rpcode\MT@font\MT@char: [#2]}% +%<debug>\MT@dinfo@nl{4}{;;; rp (\MT@char): \number\rpcode\MT@font\MT@char\space: [#2]}% }% % \end{macrocode} % Now we can set the values for the inheriting characters. Their slot numbers @@ -5423,25 +5810,25 @@ time will almost certainly lead to undesired results. Have your choice!}% % Unlike \file{protcode.tex} and \pkg{pdfcprot}, we do not calculate with % \cs{lpcode} resp. \cs{rpcode}, since this would disallow protrusion factors % larger than the character width (since \cs{[lr]pcode}'s limit is 1000). Now, -% the maximum protrusion is 1\,em of the font. +% the maximum protrusion is \EM{1} of the font. % % The unit is in \cs{MT@count}, the desired factor in \cmd\@tempb, and the % result will be returned in \cmd\@tempcntb. % \begin{macrocode} -\MT@requires@pdftex3{ - \def\MT@scale@to@em{% - \@tempcntb=\MT@count\relax +%<pdftex-def>\MT@requires@pdftex3{ +\def\MT@scale@to@em{% + \@tempcntb=\MT@count\relax % \end{macrocode} % For really huge fonts (100\,pt or so), an arithmetic overflow could occur % with vanilla \TeX. Using \etex, this can't happen, since the intermediate % value is 64\,bit, which could only be reached with a character width larger % than \cs{maxdimen}. % \begin{macrocode} - \MT@scale\@tempcntb \@tempb \MT@dimen@six - \ifnum\@tempcntb=\z@ \else - \MT@scale@factor - \fi - } + \MT@scale\@tempcntb \@tempb \MT@dimen@six + \ifnum\@tempcntb=\z@ \else + \MT@scale@factor + \fi +} % \end{macrocode} %\end{macro} %\begin{macro}{\MT@get@charwd} @@ -5450,46 +5837,65 @@ time will almost certainly lead to undesired results. Have your choice!}% %\changes{v1.6}{2005/01/19}{use \etex's \cmd\fontcharwd, if available} %\changes{v1.8}{2005/05/25}{warning for missing (resp. zero-width) characters} % \begin{macrocode} - \def\MT@get@charwd{% -^^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 - } +\def\MT@get@charwd{% +%<*pdftex-def> +^^X \MT@count=\fontcharwd\MT@font\MT@char\relax +^^Q \setbox\z@=\hbox{\MT@font \char\MT@char}% +^^Q \MT@count=\wd\z@ +%</pdftex-def> +%<luatex-def> \MT@count=\fontcharwd\MT@font\MT@char\relax +% \end{macrocode} +% \cs{MT@char} contains a slot number (legacy fonts), a Unicode number, +% or a glyph name (if \cs{MT@char@} is negative). +% \begin{macrocode} +%<*xetex-def> + \ifnum\MT@char@<\z@ + \setbox\z@=\hbox{\MT@font \XeTeXglyph-\MT@char@}% + \MT@count=\wd\z@ + \else + \MT@count=\fontcharwd\MT@font\MT@char@\relax + \fi +%</xetex-def> + \ifnum\MT@count=\z@ \MT@info@missing@char \fi +} % \end{macrocode} %\changes{v2.2}{2007/04/05}{subtract letterspacing amount from width} % For letterspaced fonts, we have to subtract the letterspacing amount from the % characters' widths. The protrusion amounts will be adjusted in % \cs{MT@set@pr@codes}. -% The letterspaced font is already loaded so that 1\,em = \fontdim6. +% The letterspaced font is already loaded so that \EM{1} = \fontdim6. % \begin{macrocode} - \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 +%<*pdftex-def> +\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 }{ % \end{macrocode} %\end{macro} % No adjustment with versions 0.14f and 0.14g. % \begin{macrocode} - \def\MT@scale@to@em{% - \MT@count=\@tempb\relax - \ifnum\MT@count=\z@ \else - \MT@scale@factor - \fi - } +\def\MT@scale@to@em{% + \MT@count=\@tempb\relax + \ifnum\MT@count=\z@ \else + \MT@scale@factor + \fi +} % \end{macrocode} % We need this in \cs{MT@warn@code@too@large} (neutralised). % \begin{macrocode} - \def\MT@get@charwd{\MT@count=\MT@dimen@six} +\def\MT@get@charwd{\MT@count=\MT@dimen@six} } +%</pdftex-def> +%</pdftex-def|xetex-def|luatex-def> % \end{macrocode} %\begin{macro}{\MT@get@font@dimen} % For the |space| unit. %\changes{v1.9d}{2006/02/13}{warning for zero fontdimen} % \begin{macrocode} +%<*package> \def\MT@get@font@dimen#1{% \ifnum\fontdimen#1\MT@font=\z@ \MT@warning@nl{Font `\MT@@font' does not specify its\MessageBreak @@ -5507,10 +5913,14 @@ time will almost certainly lead to undesired results. Have your choice!}% % the `fl' ligature is missing in Palatino <SC>)} % ^^A MID: <1h64d0x.16xsx9n1151dieN%mh@michael-hoppe.de> % Info about missing characters, or characters with zero width. +%\changes{v2.5}{2010/11/11}{fix error message for \xetex\ +% (reported by \contributor Juan Acevedo <juan.acevedo.juan\at gmail.com>)} +% ^^A <http://permalink.gmane.org/gmane.comp.tex.xetex/17202> +% ^^A (beta:05) % \begin{macrocode} \def\MT@info@missing@char{% \MT@info@nl{Character `\the\MT@toks' -^^X \iffontchar\MT@font\MT@char +^^X \iffontchar\MT@font\MT@char@ has a width of 0pt ^^X \else is missing\fi ^^Q \MessageBreak (it's probably missing) @@ -5737,17 +6147,19 @@ time will almost certainly lead to undesired results. Have your choice!}% %<debug>\MT@dinfo@nl{1}{loading input encoding: \@nameuse{\@tempa}}% \inputencoding{\@nameuse{\@tempa}}% } +%</package> % \end{macrocode} %\end{macro} %\begin{macro}{\MT@set@pr@heirs} % Set the inheriting characters. % \begin{macrocode} +%<*pdftex-def|xetex-def|luatex-def> \def\MT@set@pr@heirs#1{% - \lpcode\MT@font#1=\lpcode\MT@font\MT@char - \rpcode\MT@font#1=\rpcode\MT@font\MT@char + \lpcode\MT@font #1 =\lpcode\MT@font\MT@char\relax + \rpcode\MT@font #1 =\rpcode\MT@font\MT@char\relax %<debug>\MT@dinfo@nl{2}{-- heir of \MT@char: #1}% -%<debug>\MT@dinfo@nl{4}{;;; lp/rp (#1): \number\lpcode\MT@font\MT@char/% -%<debug> \number\rpcode\MT@font\MT@char}% +%<debug>\MT@dinfo@nl{4}{;;; lp/rp (#1): \number\lpcode\MT@font\MT@char\space/% +%<debug> \number\rpcode\MT@font\MT@char\space}% } % \end{macrocode} %\end{macro} @@ -5802,6 +6214,7 @@ time will almost certainly lead to undesired results. Have your choice!}% for \@nameuse{MT@abbr@#1} list `\@nameuse{MT@#1@c@name}'. Presetting them% \MessageBreak relative to 1em instead}% } +%</pdftex-def|xetex-def|luatex-def> % \end{macrocode} %\end{macro} % @@ -5810,6 +6223,7 @@ time will almost certainly lead to undesired results. Have your choice!}% %\begin{macro}{\MT@expansion} % Set up for expansion? % \begin{macrocode} +%<*pdftex-def|luatex-def> \def\MT@expansion{\MT@maybe@do{ex}} % \end{macrocode} %\end{macro} @@ -5844,7 +6258,9 @@ time will almost certainly lead to undesired results. Have your choice!}% % We need this boolean in \cs{MT@if@list@exists} so that no warning for missing % lists will be issued. % \begin{macrocode} -\newif\ifMT@nonselected +%</pdftex-def|luatex-def> +%<package>\newif\ifMT@nonselected +%<*pdftex-def|luatex-def> % \end{macrocode} %\end{macro} % \begin{macrocode} @@ -5899,6 +6315,7 @@ time will almost certainly lead to undesired results. Have your choice!}% % However, this is only necessary for versions prior to~1.20. %\changes{v1.6a}{2005/01/30}{only reset \cmd\efcode s for older \pdftex\ versions} % \begin{macrocode} +%<*pdftex-def> \MT@requires@pdftex4{ \def\MT@reset@ef@codes{% \ifnum\MT@ex@factor@=\@m \else @@ -5906,8 +6323,13 @@ time will almost certainly lead to undesired results. Have your choice!}% \fi } }{ +%</pdftex-def> +% \end{macrocode} +% ^^A this is SO wrong! +%\todo{do it right for \luatex} +% \begin{macrocode} \let\MT@reset@ef@codes\MT@reset@ef@codes@ -} +%<pdftex-def>} % \end{macrocode} %\end{macro} %\begin{macro}{\MT@ex@split@val} @@ -6013,14 +6435,16 @@ time will almost certainly lead to undesired results. Have your choice!}% \MT@scale@factor \MT@set@all@ex\@tempcntb } +%</pdftex-def|luatex-def> % \end{macrocode} %\end{macro} % %\subsubsection{Interword spacing (glue)} % %\begin{macro}{\MT@spacing} -% Adjustment of interword spacing? +% Adjustment of interword spacing? Only works with \pdftex. % \begin{macrocode} +%<*pdftex-def> \MT@requires@pdftex6{ \def\MT@spacing{\MT@maybe@do{sp}} % \end{macrocode} @@ -6234,15 +6658,21 @@ time will almost certainly lead to undesired results. Have your choice!}% \MT@set@all@kn\@tempa\@tempb } }\relax +%</pdftex-def> % \end{macrocode} %\end{macro} %\end{macro} % %\subsubsection{\lsstyle Tracking} % -% This only works with \pdftex\ 1.40. +% This only works with \pdftex\ 1.40 +%\changes{v2.5}{2010/09/17}{letterspacing with \luatex\ 0.62} ^^A (beta:03) +% or \luatex\ 0.62. % \begin{macrocode} -\MT@requires@pdftex6{ +%<*pdftex-def|luatex-def> +%<pdftex-def>\MT@requires@pdftex6 +%<luatex-def>\MT@requires@luatex3 +{ % \end{macrocode} %\begin{macro}{\MT@tracking} %\changes{v2.2}{2007/02/23}{remember fonts that shouldn't be letterspaced} @@ -6262,9 +6692,9 @@ time will almost certainly lead to undesired results. Have your choice!}% \fi \fi } -%</package> -\let\MT@tracking -%<package> \MT@tracking@ +%</pdftex-def|luatex-def> +%<pdftex-def|luatex-def|letterspace>\let\MT@tracking +%<pdftex-def|luatex-def> \MT@tracking@ %<letterspace> \relax % \end{macrocode} %\end{macro} @@ -6275,14 +6705,15 @@ time will almost certainly lead to undesired results. Have your choice!}% % settings from \cs{SetTracking}, or the global \opt{letterspace} option, in % this order. % \begin{macrocode} +%<*pdftex-def|luatex-def|letterspace> \def\MT@set@tr@codes{% -%<*package> +%<*pdftex-def|luatex-def> \MT@vinfo{Tracking font `\MT@@font'\on@line}% \MT@get@font@dimen@six{% \MT@if@list@exists \MT@get@tr@opt \relax -%</package> +%</pdftex-def|luatex-def> \MT@ifdefined@c@TF\MT@letterspace@\relax{\let\MT@letterspace@\MT@letterspace}% \ifnum\MT@letterspace@=\z@ % \end{macrocode} @@ -6291,7 +6722,7 @@ time will almost certainly lead to undesired results. Have your choice!}% % \begin{macrocode} \MT@set@tr@zero \else -%<package> \MT@vinfo{... Tracking by \number\MT@letterspace@}% +%<pdftex-def|luatex-def> \MT@vinfo{... Tracking by \number\MT@letterspace@}% % \end{macrocode} % Letterspacing only works in <PDF> mode. % \begin{macrocode} @@ -6322,7 +6753,7 @@ time will almost certainly lead to undesired results. Have your choice!}% %\changes{v2.2}{2007/06/16}{possibility to customise interword spacing} % Scale interword spacing (not configurable in \letterspace). % \begin{macrocode} -%<*package> +%<*pdftex-def|luatex-def> \MT@ifdefined@c@TF\MT@tr@ispace {\let\@tempa\MT@tr@ispace}% {\edef\@tempa{\MT@letterspace@*,,}}% @@ -6330,7 +6761,7 @@ time will almost certainly lead to undesired results. Have your choice!}% {\edef\@tempa{\@tempa,\MT@tr@ospace}}% {\edef\@tempa{\@tempa,,,}}% \expandafter\MT@tr@set@space\@tempa,% -%</package> +%</pdftex-def|luatex-def> %<*letterspace> % spacing = {<letterspace amount>*,,} \fontdimen2\MT@lsfont=\dimexpr\numexpr 1000+\MT@letterspace@\relax sp @@ -6342,7 +6773,7 @@ time will almost certainly lead to undesired results. Have your choice!}% % ^^A MID: <46aa1cbb$0$31620$9b4e6d93@newsspool3.arcor-online.net> % Adjust outer kerning (\microtype\ only). % \begin{macrocode} -%<*package> +%<*pdftex-def|luatex-def> \MT@ifdefined@c@TF\MT@tr@okern{\let\@tempa\MT@tr@okern}{\def\@tempa{*,*}}% \expandafter\MT@tr@set@okern\@tempa,% % \end{macrocode} @@ -6351,7 +6782,7 @@ time will almost certainly lead to undesired results. Have your choice!}% % Disable ligatures (not configurable in \letterspace). % \begin{macrocode} \MT@ifdefined@c@T\MT@tr@ligatures\MT@tr@noligatures -%</package> +%</pdftex-def|luatex-def> %<*letterspace> % no ligatures = {f} \tagcode\MT@lsfont`f=\m@ne @@ -6369,13 +6800,13 @@ time will almost certainly lead to undesired results. Have your choice!}% %<debug>\MT@dinfo@nl{2}{... compensating for tracking (\number\MT@letterspace@)}% \MT@do@font{\lpcode\MT@lsfont\@tempcnta=\numexpr\MT@letterspace@/2\relax \rpcode\MT@lsfont\@tempcnta=\numexpr\MT@letterspace@/2\relax}% -%<package> \let\MT@the@pr@code\MT@the@pr@code@tr +%<pdftex-def|luatex-def> \let\MT@the@pr@code\MT@the@pr@code@tr \fi % \end{macrocode} % Finally, let the letterspaced font propagate. % \begin{macrocode} \aftergroup\MT@set@lsfont -%<package> \let\MT@font\MT@lsfont +%<pdftex-def|luatex-def> \let\MT@font\MT@lsfont % \end{macrocode} %\begin{macro}{\MT@set@curr@ls} %\begin{macro}{\MT@curr@ls} @@ -6392,11 +6823,11 @@ time will almost certainly lead to undesired results. Have your choice!}% % We get the current outer spacing and adjust it, then, after the end of the % current outer group, set the current outer spacing, again, and adjust. % \begin{macrocode} -%<*package> +%<*pdftex-def|luatex-def> \MT@outer@space=\csname MT@outer@space\expandafter\string\font@name\endcsname\relax \xdef\MT@set@curr@os{\MT@outer@space=\the\MT@outer@space\relax}% \MT@tr@outer@l -%</package> +%</pdftex-def|luatex-def> % \end{macrocode} %\end{macro} % If \cs{MT@ls@adjust} is empty, it's the starred version of \cs{textls}. @@ -6414,16 +6845,16 @@ time will almost certainly lead to undesired results. Have your choice!}% % Otherwise, get the current outer kerning and adjust it, for left and right % side (\microtype\ only). % \begin{macrocode} -%<*package> +%<*pdftex-def|luatex-def> \else \MT@outer@kern=\expandafter\expandafter\expandafter\@firstoftwo \csname MT@outer@kern\expandafter\string\font@name\endcsname\relax \ifdim\MT@outer@kern=\z@\else \MT@ls@outer@k \fi \MT@outer@kern=\expandafter\expandafter\expandafter\@secondoftwo \csname MT@outer@kern\expandafter\string\font@name\endcsname\relax -%</package> +%</pdftex-def|luatex-def> \fi -%<*package> +%<*pdftex-def|luatex-def> % \end{macrocode} %\begin{macro}{\MT@set@curr@ok} % Carry the outer kerning amount to outside the next group, then set outer @@ -6434,9 +6865,9 @@ time will almost certainly lead to undesired results. Have your choice!}% % \end{macrocode} %\end{macro} % \begin{macrocode} -%</package> +%</pdftex-def|luatex-def> \fi -%<package> }% +%<pdftex-def|luatex-def> }% } % \end{macrocode} %\end{macro} @@ -6455,6 +6886,7 @@ time will almost certainly lead to undesired results. Have your choice!}% % a \pkg{tikz} node, where we don't want to do anything, lest we disturb % \pkg{tikz}. % \begin{macrocode} +%</pdftex-def|luatex-def|letterspace> %<*package> \MT@addto@setup{% \@ifpackageloaded{tikz} @@ -6462,6 +6894,8 @@ time will almost certainly lead to undesired results. Have your choice!}% \ifnum\tikz@expandcount>\z@ \else \MT@set@curr@os\MT@set@curr@ok\expandafter\MT@tr@outer@r\fi}} {\def\MT@ls@aftergroup{\MT@set@curr@os\MT@set@curr@ok\MT@tr@outer@r}}} +%</package> +%<*pdftex-def|luatex-def> % \end{macrocode} %\end{macro} %\begin{macro}{\MT@get@tr@opt} @@ -6519,13 +6953,14 @@ time will almost certainly lead to undesired results. Have your choice!}% \MT@ifdefined@n@T{MT@tr@c@\MT@tr@c@name @#1}% {\MT@let@nn{MT@tr@#2}{MT@tr@c@\MT@tr@c@name @#1}}% } -%</package> +%</pdftex-def|luatex-def> % \end{macrocode} %\end{macro} %\begin{macro}{\MT@set@lsfont} % Redefine \cmd\font@name, which will be called a second later (in % \cmd\selectfont). % \begin{macrocode} +%<*pdftex-def|luatex-def|letterspace> %<plain>\MT@requires@latex2{ \def\MT@set@lsfont{\MT@exp@two@c\let\font@name\MT@lsfont} % \end{macrocode} @@ -6541,10 +6976,14 @@ time will almost certainly lead to undesired results. Have your choice!}% % setup. % Only \cs{textls} can be used in math mode (\cs{lsstyle} may be used inside % another text switch, of course). +%\changes{v2.5}{2012/11/14}{fix: ensure to set up math fonts (reported by \contributor RazorXsr <@\at @>)} +% ^^A http://tex.stackexchange.com/questions/82686/settracking-in-the-math-environment +% Still, we have to ensure that math fonts are set up again. % \begin{macrocode} \DeclareRobustCommand\lsstyle{% \not@math@alphabet\lsstyle\textls -%<package> \def\MT@feat{tr}% + \let\glb@currsize\@empty +%<pdftex-def|luatex-def> \def\MT@feat{tr}% \let\MT@tracking\MT@set@tr@codes \selectfont } @@ -6636,8 +7075,9 @@ time will almost certainly lead to undesired results. Have your choice!}% %\begin{macro}{\MT@tr@noligatures} % \pdftex\ 1.40.0--1.40.3 disabled all ligatures in letterspaced fonts. % \begin{macrocode} -%<*package> -\MT@requires@pdftex7{ +%</pdftex-def|luatex-def|letterspace> +%<*pdftex-def|luatex-def> +%<pdftex-def>\MT@requires@pdftex7{ \def\MT@tr@noligatures{% \ifx\MT@tr@ligatures\@empty \MT@noligatures@\MT@lsfont\@undefined @@ -6645,6 +7085,7 @@ time will almost certainly lead to undesired results. Have your choice!}% \MT@noligatures@\MT@lsfont\MT@tr@ligatures \fi } +%<*pdftex-def> }{ \def\MT@tr@noligatures{% \MT@warning@nl{% @@ -6653,6 +7094,7 @@ time will almost certainly lead to undesired results. Have your choice!}% \MT@glet\MT@tr@noligatures\relax } } +%</pdftex-def> % \end{macrocode} %\end{macro} %\begin{macro}{\MT@outer@space} @@ -6665,6 +7107,8 @@ time will almost certainly lead to undesired results. Have your choice!}% % Adjust interword spacing (\fontdim2--4) for inner and outer space. % For inner spacing, the font dimensions will be adjusted, the settings for % outer spacing will be remembered in a macro. +%\todo{don't add stretch components if ragged2e is active?} ^^A reported by \contributor Leo ? <sdl.web\at gmail.com>, MID: <wqlfwxsuo6h.fsf@pip.srcf.ucam.org> +%^^A or in fact, shouldn't we test whether \spaceskip<>0pt ? % \begin{macrocode} \def\MT@tr@set@space#1,#2,#3,#4,#5,#6,{% %<debug>\MT@dinfo@nl2{... orig. space: \the\fontdimen2\MT@lsfont, @@ -6682,8 +7126,8 @@ time will almost certainly lead to undesired results. Have your choice!}% % \end{macrocode} %\end{macro} %\begin{macro}{\MT@tr@set@space@} -% If outer spacing settings don't exist, they will be inherited from the inner -% spacing settings. +% If settings for outer spacing \meta{\#2} don't exist, they will be inherited +% from the inner spacing settings \meta{\#1}. % \begin{macrocode} \def\MT@tr@set@space@#1#2#3#4{% \MT@ifempty{#2}{% @@ -6778,7 +7222,6 @@ time will almost certainly lead to undesired results. Have your choice!}% %\end{macro} %\begin{macro}{\MT@tr@outer@next} %\begin{macro}{\MT@tr@outer@r} -%\begin{macro}{\MT@tr@outer@r@} % The following is borrowed from \pkg{soul}. I've added the cases for italic % correction, since tracking may also be triggered by text commands (\eg, % \cmd\textsc). @@ -6786,6 +7229,25 @@ time will almost certainly lead to undesired results. Have your choice!}% \def\MT@tr@outer@r{% \futurelet\MT@tr@outer@next\MT@tr@outer@r@ } +% \end{macrocode} +%\end{macro} +%\end{macro} +%\begin{macro}{\MT@if@outer@next} +% We avoid using \cs{ifx} tests, in case \cs{MT@tr@outer@next} is \cmd\let\ to +% \cs{fi} etc. +%\changes{v2.5}{2012/02/20}{fix: conflict with \pkg{amsmath} +% (reported by \contributor Scott Pakin <scott\at pakin.org>)} +% ^^A private mail, 2012/02/09 +% ^^A (beta:09) +% \begin{macrocode} +\def\MT@if@outer@next#1{% + \ifx\MT@tr@outer@next#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\MT@tr@outer@r@} +%\todo{fix problem with \pkg{xspace}} ^^A http://tex.stackexchange.com/questions/59655 +% \begin{macrocode} \def\MT@tr@outer@r@{% \def\MT@temp*{}% % \end{macrocode} @@ -6810,12 +7272,12 @@ time will almost certainly lead to undesired results. Have your choice!}% \def\MT@temp*##1{\ifhmode\hskip\MT@outer@space %<debug>\MT@dinfo2{]]] adjusting post space (1): \the\MT@outer@space}% \fi}% - \ifcat\egroup\noexpand\MT@tr@outer@next + \expandafter\ifcat\expandafter\noexpand\csname MT@tr@outer@next\endcsname\egroup % \end{macrocode} %\changes{v2.3c}{2008/09/18}{additional test for horizontal mode % (reported by \contributor Sveinung Heggen <sveinung.heggen\at orkla.no>)} % ^^A private mail, 2008/09/18 -%\todo{fix problem with tikz} +%\todo{fix problem with tikz} ^^A fixed in tikz? (2012/02/20) %^^A \path[->] (N0) edge node {\textls{abc}} (N1); %^^A reported by \contributor Christian Stark <cstark\at gmx.de> %^^A ^^A 2009/07/28, MID: <7d81lgF2ad3ckU1@mid.dfncis.de> @@ -6835,46 +7297,45 @@ time will almost certainly lead to undesired results. Have your choice!}% % (found by \contributor Lars R\"onnb\"ack <lars.ronnback\at affecto.com>)} % ^^A <http://code.google.com/p/tufte-latex/issues/detail?id=25> % \begin{macrocode} - \ifx\maybe@ic\MT@tr@outer@next + \MT@if@outer@next\maybe@ic{% \MT@set@curr@ok \MT@set@curr@os \def\MT@temp*{\afterassignment\MT@tr@outer@icr\let\MT@temp=}% - \else + }{% % \end{macrocode} % If the next token is \cmd\check@icr\ (from an inner text command), we insert % ourselves just before it. This will then call \cmd\maybe@ic\ again the next % round (which however will always insert an italic correction, since it % doesn't read beyond our group). % \begin{macrocode} - \ifx\check@icr\MT@tr@outer@next + \MT@if@outer@next\check@icr{% \def\MT@temp*{\aftergroup\MT@tr@outer@r\check@icr\let\MT@temp=}% - \else - \ifx\@sptoken\MT@tr@outer@next + }{% + \MT@if@outer@next\@sptoken{% \def\MT@temp* {\ifhmode\hskip\MT@outer@space -%<debug>\MT@dinfo2{]]] adjusting post spaces (2): \the\MT@outer@space}% +%<debug>\MT@dinfo2{]]] adjusting post space (2): \the\MT@outer@space}% \fi}% - \else - \ifx~\MT@tr@outer@next + }{% + \MT@if@outer@next~{% \def\MT@temp*~{\nobreak\hskip\MT@outer@space -%<debug>\MT@dinfo2{]]] adjusting post spaces (3): \the\MT@outer@space}% +%<debug>\MT@dinfo2{]]] adjusting post space (3): \the\MT@outer@space}% }% - \else - \ifx\ \MT@tr@outer@next \else - \ifx\space\MT@tr@outer@next \else - \ifx\@xobeysp\MT@tr@outer@next \else + }{% + \MT@if@outer@next\ \relax{% + \MT@if@outer@next\space\relax{% + \MT@if@outer@next\@xobeysp\relax{% % \end{macrocode} % If there's no outer spacing, there may be outer kerning. % \begin{macrocode} \def\MT@temp*{\ifdim\MT@outer@kern=\z@\else\MT@ls@outer@k %<debug>\MT@dinfo2{--- adjusting post kern: \the\MT@outer@kern}% \fi}% - \let\MT@tr@outer@next\relax - \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \MT@let@nc{MT@tr@outer@next}\relax + }}}}}}}\fi + \fi\fi \MT@temp*% } % \end{macrocode} %\end{macro} -%\end{macro} -%\end{macro} %\begin{macro}{\MT@tr@outer@icr} %\begin{macro}{\MT@tr@outer@icr@} % Helper macros for the italic correction mess. @@ -6887,28 +7348,29 @@ time will almost certainly lead to undesired results. Have your choice!}% % \end{macrocode} %\end{macro} %\end{macro} -% For older \pdftex\ versions, throw an error. +% For older \pdftex\ versions and \luatex, throw an error. % \begin{macrocode} }{ \DeclareRobustCommand\lsstyle{% - \MT@error{Letterspacing only works with pdftex version 1.40\MessageBreak - or newer}{Upgrade pdftex, or use the `soul' package instead.}% + \MT@error{Letterspacing only works with \MT@engine tex version +%<pdftex-def> 1.40% +%<luatex-def> 0.62% + \MessageBreak or newer} + {Upgrade \MT@engine tex, or try the `soul' package instead.}% \MT@glet\lsstyle\relax } } % \end{macrocode} -% And for \luatex, too. +% And for \xetex, too. % \begin{macrocode} -%<*lua> -\MT@requires@luatex{ - \DeclareRobustCommand\lsstyle{% - \MT@error{Letterspacing currently doesn't work with luatex} - {Run pdftex, or use the `soul' package instead.}% - \MT@glet\lsstyle\relax - } -}\relax -%</lua> -%</package> +%</pdftex-def|luatex-def> +%<*xetex-def> +\DeclareRobustCommand\lsstyle{% + \MT@error{Letterspacing currently doesn't work with xetex} + {Run pdftex or luatex, or use the `soul' package instead.}% + \MT@glet\lsstyle\relax +} +%</xetex-def> % \end{macrocode} %\begin{macro}{\textls} %\changes{v2.0}{2005/09/21}{(beta:1) new command: letterspacing} @@ -6920,6 +7382,7 @@ time will almost certainly lead to undesired results. Have your choice!}% % The starred version removes kerning on the sides. % The optional argument changes the letterspacing factor. % \begin{macrocode} +%<*package|letterspace> \DeclareRobustCommand\textls{% \@ifstar{\let\MT@ls@adjust@\MT@ls@adjust@empty\MT@textls}% {\let\MT@ls@adjust@\MT@ls@adjust@relax\MT@textls}% @@ -6953,6 +7416,10 @@ time will almost certainly lead to undesired results. Have your choice!}% %\begin{macro}{\MT@ls@set@ls} % Set current letterspacing amount and outer kerning. This has to be done inside % the same group as the letterspacing command. +%\changes{v2.5}{2010/12/02}{allow formulas in optional argument to \cs{textls} +% (fix by \contributor Heiko Oberdiek <heiko.oberdiek\at googlemail.com>)} +% ^^A private mail, 2010/12/02 +% ^^A (beta:05) % \begin{macrocode} \def\MT@ls@adjust@empty{\let\MT@ls@adjust\@empty} \def\MT@ls@adjust@relax{\let\MT@ls@adjust\relax} @@ -6960,6 +7427,7 @@ time will almost certainly lead to undesired results. Have your choice!}% \MT@ifempty{#1}% {\let\MT@letterspace@\@undefined}% {\KV@@sp@def\MT@letterspace@{#1}% + \edef\MT@letterspace@{\number\MT@letterspace@}% \MT@ls@too@large\MT@letterspace@}% \MT@ls@adjust@ } @@ -6991,7 +7459,8 @@ time will almost certainly lead to undesired results. Have your choice!}% % and for adjusted outer kerning. % \begin{macrocode} \newdimen\MT@outer@kern -%<*package> +%</package|letterspace> +%<*pdftex-def|luatex-def> \def\MT@tr@set@okern#1,#2,{% \let\MT@temp\@empty \MT@ifempty{#1}{\MT@tr@set@okern@{*}}{\MT@tr@set@okern@{#1}}% @@ -7020,14 +7489,14 @@ time will almost certainly lead to undesired results. Have your choice!}% * \fontdimen6\MT@lsfont/2000\relax \edef\MT@temp{\MT@temp{\the\@tempdima}}% } -%</package> +%</pdftex-def|luatex-def> % \end{macrocode} %\end{macro} %\begin{macro}{\MT@ls@outer@k} % Adjust outer kerning. % \begin{macrocode} -\def\MT@ls@outer@k{\ifhmode\kern\MT@outer@kern\relax\fi} -%<*package> +%<pdftex-def|luatex-def|letterspace>\def\MT@ls@outer@k{\ifhmode\kern\MT@outer@kern\relax\fi} +%<*pdftex-def|luatex-def> % \end{macrocode} %\end{macro} % @@ -7037,7 +7506,7 @@ time will almost certainly lead to undesired results. Have your choice!}% % The possibility to disable ligatures is a new features of \pdftex\ 1.30. %\changes{v2.3}{2007/10/23}{fix: set evaluation didn't work (bug introduced in 2.2)} % \begin{macrocode} -\MT@requires@pdftex5{ +%<pdftex-def>\MT@requires@pdftex5{ \def\MT@noligatures{% \MT@dotrue \let\@tempa\MT@nl@setname @@ -7082,7 +7551,8 @@ time will almost certainly lead to undesired results. Have your choice!}% \MT@vinfo{... Disabling ligatures}% }% } -}\relax +%<pdftex-def>}\relax +%</pdftex-def|luatex-def> % \end{macrocode} %\end{macro} %\end{macro} @@ -7094,6 +7564,7 @@ time will almost certainly lead to undesired results. Have your choice!}% %\changes{v1.3}{2004/10/27}{check whether list exists} %\todo{load more than one list} % \begin{macrocode} +%<*package> \def\MT@load@list#1{% \edef\@tempa{#1}% \MT@let@cn\@tempb{MT@\MT@feat @c@\@tempa @load}% @@ -7306,13 +7777,14 @@ time will almost certainly lead to undesired results. Have your choice!}% % (suggested by \contributor Andreas B\"uhmann <andreas.buehmann\at web.de>)} % ^^A private mail, 2005/03/10 % -%\begin{table}\footnotesize +%\begin{table}\small %\caption{Order for matching font attributes}\label{tab:match-order} %\catcode`\!=13 \let!\match %\setlength\fboxsep{4pt} %\leavevmode\kern-\dimexpr\fboxsep+\fboxrule\relax %\fcolorbox{theframe}{white}{^^A %\begin{minipage}{\textwidth} +%\def\arraystretch{1.2} %\begin{tabular}{@{}L{38pt}*{16}{p{19.5pt}<{\centering}@{}}} % & 1.& 2.& 3.& 4.& 5.& 6.& 7.& 8.& 9.&10.&11.&12.&13.&14.&15.&16.\\ %\cmidrule(r){2-2} \cmidrule(r){3-3} \cmidrule(r){4-4} \cmidrule(r){5-5} @@ -7345,11 +7817,12 @@ time will almost certainly lead to undesired results. Have your choice!}% % match. % \begin{macrocode} \def\MT@next@listname#1#2#3#4{% + \ifnum#1=\z@\MT@nofamilytrue\fi \edef\@tempa{\MT@encoding - /\ifnum#1=\@ne \MT@family\fi - /\ifnum#2=\@ne \MT@series\fi - /\ifnum#3=\@ne \MT@shape\fi - /\ifnum#4=\@ne *\fi +/\ifnum#1=\@ne \MT@family \fi +/\ifnum#2=\@ne \MT@series \fi +/\ifnum#3=\@ne \MT@shape \fi +/\ifnum#4=\@ne *\fi \MT@context}% %<debug>\MT@dinfo@nl{1}{trying \@tempa}% \MT@ifdefined@n@TF{MT@\@tempb @\@tempa}{% @@ -7557,9 +8030,47 @@ time will almost certainly lead to undesired results. Have your choice!}% %\end{itemize} % \begin{macrocode} \let\MT@char\MT@char@ - \ifnum\MT@char < \z@ - \MT@warn@unknown - \else + \MT@get@slot@ + \escapechar\m@ne +} +%</package> +% \end{macrocode} +%\end{macro} +%\begin{macro}{\MT@get@slot@} +%\changes{v2.5}{2010/05/18}{adapt for \xetex} +% \begin{macrocode} +%<*pdftex-def|luatex-def|xetex-def> +\def\MT@get@slot@{% +% \end{macrocode} +% If it's a legacy (\ie, <TFM>) font, proceed as usual. +% \begin{macrocode} +%<xetex-def> \ifnum\XeTeXfonttype\MT@font=\z@ + \ifnum\MT@char > \m@ne +% \end{macrocode} +% In \luatex, it may also be a glyph name, prefixed with `|/|'. +%\changes{v2.5}{2012/08/14}{adapt for \luatex\ (requested by \contributor Georg Duffner <g.duffner\at gmail.com>)} +% ^^A private mail, 2012/07/17 +% ^^A (beta:10) +% \begin{macrocode} +%<*luatex-def> + \ifnum\MT@char=47\relax + \ifMT@norest \else + \@tempcnta=\directlua{ + local glyph = microtype.name_to_slot([[\expandafter\@gobble\@tempa]]) + if glyph then tex.write(glyph) + else tex.write(-1) + end + }\relax + \ifnum\@tempcnta<\z@ + \MT@warn@unknown + \let\MT@char\m@ne + \else + \edef\MT@char{\the\@tempcnta}% +%<debug>\MT@dinfo@nl{3}{> `\the\MT@toks' is a glyph name (\the\@tempcnta)}% + \fi + \fi + \else +%</luatex-def> % \end{macrocode} % If the user has specified something like `|fi|', or wanted to define a number % but forgot to use three digits, we'll have something left of the string. In @@ -7567,17 +8078,79 @@ time will almost certainly lead to undesired results. Have your choice!}% % \begin{macrocode} \ifMT@norest \else \MT@warn@rest - \let\MT@char\m@ne +%<pdftex-def|luatex-def> \let\MT@char\m@ne +%<xetex-def> \let\MT@char\@empty + \fi +%<luatex-def> \fi + \else + \MT@warn@unknown + \fi +%<*xetex-def> + \else +% \end{macrocode} +% There are more possibilities for \xetex: +% It may also be a glyph name (prefixed with~`|/|'). We indicate this to +% \cs{MT@get@charwd} by reversing the sign of \cs{MT@char@}. +% \begin{macrocode} + \ifnum\MT@char=47\relax + \ifMT@norest \edef\MT@char{U47}% + \else + \@tempcnta=\XeTeXglyphindex"\expandafter\@gobble\@tempa"\relax + \ifnum\@tempcnta=\z@ + \MT@warn@unknown + \let\MT@char\@empty + \else + \edef\MT@char{\@tempa\space}% + \edef\MT@char@{-\the\@tempcnta}% +%<debug>\MT@dinfo@nl{3}{> `\the\MT@toks' is a glyph name (\the\@tempcnta)}% + \fi + \fi + \else + \ifnum\MT@char > \m@ne + \ifMT@norest +% \end{macrocode} +% Or, it's a Unicode number, which we mustn't translate into a glyph number, +% since the latter is font-specific. +% \begin{macrocode} + \@tempcnta=\XeTeXcharglyph\MT@char\relax + \ifnum\@tempcnta=\z@ + \MT@info@missing@char + \let\MT@char\@empty + \else +%<debug>\MT@dinfo@nl{3}{> (glyph number: \the\@tempcnta, +%<debug> glyph name: \XeTeXglyphname\MT@font\@tempcnta)}% + \edef\MT@char{U\MT@char}% + \fi + \else + \MT@warn@rest + \let\MT@char\@empty + \fi + \else + \MT@warn@unknown + \let\MT@char\@empty + \fi \fi \fi - \escapechar\m@ne +%</xetex-def> } +%</pdftex-def|luatex-def|xetex-def> % \end{macrocode} -%\end{macro} -%\begin{macro}{\ifMT@norest} -% Test whether all of the string has been used up. +% This is the lua function to translate glyph name into Unicode number, stolen +% from \pkg{luaotfload} (file \file{otfl-font-dum.lua}). % \begin{macrocode} -\newif\ifMT@norest +%<*luafile> +function microtype.name_to_slot(name) + if fonts then + local tfmdata = fonts.ids[font.current()] + if tfmdata and tfmdata.shared then + local otfdata = tfmdata.shared.otfdata + local unicode = otfdata.luatex.unicodes[name] + return unicode and (type(unicode) == "number" and unicode or unicode[1]) + end + end +end + +%</luafile> % \end{macrocode} %\end{macro} %\begin{macro}{\MT@is@letter} @@ -7585,6 +8158,28 @@ time will almost certainly lead to undesired results. Have your choice!}% %\changes{v1.8}{2005/04/04}{warning for non-<ASCII> characters} %\changes{v1.9}{2005/10/22}{using \cmd\catcode\ should be more efficient than % inspecting the \cmd\meaning} +%\begin{macro}{\MT@max@char} +%\begin{macro}{\MT@max@slot} +% Warning if resulting character or slot number is too large. +% \begin{macrocode} +%<*pdftex-def|luatex-def|xetex-def> +\def\MT@max@char +%<pdftex-def> {127 } +%<luatex-def|xetex-def> {1114111 } +\def\MT@max@slot +%<pdftex-def> {255 } +%<luatex-def|xetex-def> {1114111 } +%</pdftex-def|luatex-def|xetex-def> +% \end{macrocode} +%\end{macro} +%\end{macro} +%\begin{macro}{\ifMT@norest} +% Test whether all of the string has been used up. +% \begin{macrocode} +%<*package> +\newif\ifMT@norest +% \end{macrocode} +%\end{macro} % \begin{macrocode} \def\MT@is@letter#1#2\relax{% \ifcat a\noexpand#1\relax @@ -7599,7 +8194,7 @@ time will almost certainly lead to undesired results. Have your choice!}% \edef\MT@char@{\number`#1}% %<debug>\MT@dinfo@nl{3}{> `\the\MT@toks' is a character (\MT@char@)}% \ifx\\#2\\% - \ifnum\MT@char@ > 127 \MT@warn@ascii \fi + \ifnum\MT@char@ > \MT@max@char \MT@warn@ascii \fi \else \MT@norestfalse \expandafter\MT@is@number#1#2\relax\relax @@ -7636,7 +8231,7 @@ time will almost certainly lead to undesired results. Have your choice!}% }\MT@norestfalse \fi \fi - \ifnum\MT@char@ > \@cclv + \ifnum\MT@char@ > \MT@max@slot \MT@warn@number@too@large{\noexpand#1\noexpand#2\noexpand#3}% \let\MT@char@\m@ne \fi @@ -7778,20 +8373,48 @@ time will almost certainly lead to undesired results. Have your choice!}% % \end{macrocode} %\SpecialEscapechar{\/} % \begin{macrocode} - /MT@map@tlist@n{/\CHAR}/@makeother + /MT@map@tlist@n{/\CHARLEX}/@makeother /lowercase{% /def/x{/endgroup /def/MT@charstring{\CHAR"}% /def/MT@is@char##1\CHAR"##2##3##4/relax{% + /ifx/relax##4/relax + /ifMT@xunicode + /expandafter/MT@is@charx/MT@strip@prefix##1>/relax\CHAR "% + /relax/relax/relax/relax/relax + /fi + /else + /ifx/relax##1/relax + /if##3\/relax + /edef/MT@char@{/number"##2}% + /MT@ifstreq/MT@charstring{##3##4}/relax/MT@norestfalse + /else + /edef/MT@char@{/number"##2##3}% + /MT@ifstreq/MT@charstring{##4}/relax/MT@norestfalse + /fi +%<debug> /MT@dinfo@nl{3}{> `/the/MT@toks' is a \char (/MT@char@)}% + /fi + /fi + }% +% \end{macrocode} +%\end{macro} +%\end{macro} +%\begin{macro}{\MT@charxstring} +%\begin{macro}{\MT@strip@prefix} +%\begin{macro}{\MT@is@charx} +% For \pkg{xunicode}, which doesn't \cmd\countdef, but rather \cmd\def s the chars. +%\changes{v2.5}{2010/02/27}{compatibility with \pkg{xunicode}} +%\SpecialEscapechar{\/} +% \begin{macrocode} + /def/MT@charxstring{\CHAR "}% + /def/MT@strip@prefix##1>##2/relax{##2}% + /def/MT@is@charx##1\CHAR "##2##3##4##5##6/relax{% /ifx/relax##1/relax - /if##3\/relax - /edef/MT@char@{/number"##2}% - /MT@ifstreq/MT@charstring{##3##4}/relax/MT@norestfalse - /else - /edef/MT@char@{/number"##2##3}% - /MT@ifstreq/MT@charstring{##4}/relax/MT@norestfalse + /ifx/relax##6/relax/else + /edef/MT@char@{/number"##2##3##4##5}% + /MT@ifstreq{\RELAX >\CHAR "}{##6}/relax/MT@norestfalse +%<debug> /MT@dinfo@nl{3}{> `/the/MT@toks' is a xunicode \char (/MT@char@)}% /fi -%<debug> /MT@dinfo@nl{3}{> `/the/MT@toks' is a \char (/MT@char@)}% /fi }% }% @@ -7800,6 +8423,7 @@ time will almost certainly lead to undesired results. Have your choice!}% % \end{macrocode} %\end{macro} %\end{macro} +%\end{macro} %\begin{macro}{\MT@is@composite} % Here, we are dealing with accented characters, specified as two tokens. %\changes{v1.7}{2005/03/10}{new macro: construct command for composite character; @@ -7821,6 +8445,16 @@ time will almost certainly lead to undesired results. Have your choice!}% \string\csname\MT@encoding\endcsname \MT@detokenize@n{#1}-\MT@detokenize@n{#2}\endcsname}% \expandafter\expandafter\expandafter\MT@is@letter\MT@char\relax\relax +% \end{macrocode} +% Again, \pkg{xunicode}. +% \begin{macrocode} + \ifnum\MT@char@ < \z@ + \ifMT@xunicode + \edef\MT@char{\MT@exp@two@c\MT@strip@prefix\meaning\MT@char>\relax}% + \expandafter\MT@exp@two@c\expandafter\MT@is@charx\expandafter + \MT@char\MT@charxstring\relax\relax\relax\relax\relax + \fi + \fi \fi } % \end{macrocode} @@ -7981,6 +8615,7 @@ time will almost certainly lead to undesired results. Have your choice!}% % It doesn't work for plain, of course, which doesn't have \cmd\pickup@font. % \begin{macrocode} %</package> +%<*package|letterspace> %<plain>\MT@requires@latex2{ \MT@addto@setup{% % \end{macrocode} @@ -8143,18 +8778,26 @@ time will almost certainly lead to undesired results. Have your choice!}% \def\MT@check@font{\MT@exp@one@n\MT@in@clist\MT@font\MT@font@list} % \end{macrocode} %\end{macro} -%\begin{macro}{\MT@register@subst@font} -% Register the substituted font. -% \begin{macrocode} -\def\MT@register@subst@font{\xdef\MT@font@list{\MT@font@list\font@name,}} -% \end{macrocode} -%\end{macro} %\begin{macro}{\MT@register@font} % Register the current font. % \begin{macrocode} \def\MT@register@font{\xdef\MT@font@list{\MT@font@list\MT@font,}} % \end{macrocode} %\end{macro} +%\begin{macro}{\MT@register@subst@font} +% Register the substituted font +%\changes{v2.5}{2010/08/23}{only register if it isn't registered already +% (reported by \contributor George Gratzer <gratzer\at me.com> +% and \contributor Josep Maria Font <jmfont\at ub.edu>)} +% ^^A 1. <http://permalink.gmane.org/gmane.comp.tex.macosx/38293> +% ^^A 2. <http://permalink.gmane.org/gmane.comp.tex.macosx/38303> +% ^^A (beta:02) +% (only if it isn't registered already). +% \begin{macrocode} +\def\MT@register@subst@font{\MT@exp@one@n\MT@in@clist\font@name\MT@font@list + \ifMT@inlist@\else\xdef\MT@font@list{\MT@font@list\font@name,}\fi} +% \end{macrocode} +%\end{macro} % %\subsubsection{Context-sensitive setup} % @@ -8191,12 +8834,17 @@ time will almost certainly lead to undesired results. Have your choice!}% %\begin{macro}{\MT@register@subst@font@cx} % Add the substituted font to each feature list. %\todo{remove from other lists?} +%\changes{v2.5}{2010/08/23}{only register if it isn't registered already} ^^A (beta:02) % \begin{macrocode} \def\MT@register@subst@font@cx{% \MT@map@clist@c\MT@active@features{% - \MT@exp@cs\MT@xadd - {MT@##1@\csname MT@##1@context\endcsname font@list}% - {\font@name,}% + \expandafter\MT@exp@one@n\expandafter\MT@in@clist\expandafter\font@name + \csname MT@##1@\csname MT@##1@context\endcsname font@list\endcsname + \ifMT@inlist@ \else + \MT@exp@cs\MT@xadd + {MT@##1@\csname MT@##1@context\endcsname font@list}% + {\font@name,}% + \fi }% } % \end{macrocode} @@ -8246,6 +8894,12 @@ time will almost certainly lead to undesired results. Have your choice!}% \DeclareRobustCommand\microtypecontext[1]{% \MT@setup@contexts \let\MT@reset@context\relax +% \end{macrocode} +% We need to ensure that math fonts are set up anew. +%\changes{v2.5}{2012/11/13}{fix: ensure to set up math fonts (reported by \contributor RazorXsr <@\at @>)} +% ^^A http://tex.stackexchange.com/questions/82556/pdftex-font-expansion-error-setexpansion-in-microtype-package +% \begin{macrocode} + \let\glb@currsize\@empty \setkeys{MTC}{#1}% \selectfont \MT@reset@context @@ -8502,11 +9156,15 @@ time will almost certainly lead to undesired results. Have your choice!}% %\end{macro} %\begin{macro}{\MT@font@sets} %\begin{macro}{\MT@fix@font@set} -% Fully expand the font specification and fix catcodes for all font sets. +% Fully expand the font specification and fix catcodes for all font sets. Also +% remove \pkg{fontspec}'s counters. % \begin{macrocode} \let\MT@font@sets\@empty \def\MT@fix@font@set#1{% \xdef#1{#1}% + \ifMT@fontspec + \xdef#1{\expandafter\MT@scrubfeatures#1()\relax}% + \fi \global\@onelevel@sanitize#1% } % \end{macrocode} @@ -8864,10 +9522,11 @@ time will almost certainly lead to undesired results. Have your choice!}% % settings for the aliased font will be loaded. %\changes{v1.5}{2004/12/03}{remove spaces around arguments} %\changes{v1.8}{2005/05/09}{warning when overriding an alias font} +%\changes{v2.5}{2010/05/17}{remove spaces in font name} % \begin{macrocode} \renewcommand*\DeclareMicrotypeAlias[2]{% - \KV@@sp@def\@tempa{#1}% - \KV@@sp@def\@tempb{#2}% + \edef\@tempa{\zap@space#1 \@empty}% + \edef\@tempb{\zap@space#2 \@empty}% \@onelevel@sanitize\@tempb \MT@ifdefined@n@T{MT@\@tempa @alias}{% \MT@warning{Alias font family `\@tempb' will override @@ -8892,10 +9551,11 @@ time will almost certainly lead to undesired results. Have your choice!}% %\changes{v1.7}{2005/03/22}{new command (suggested by % \contributor Andreas B\"uhmann <andreas.buehmann\at web.de>)} % ^^A private mail, 2005/03/21 +%\changes{v2.5}{2010/05/13}{remove all spaces in font name} % May be used to load a configuration file manually. % \begin{macrocode} \def\LoadMicrotypeFile#1{% - \KV@@sp@def\@tempa{#1}% + \edef\@tempa{\zap@space#1 \@empty}% \@onelevel@sanitize\@tempa \MT@exp@one@n\MT@in@clist\@tempa\MT@file@list \ifMT@inlist@ @@ -8913,6 +9573,8 @@ time will almost certainly lead to undesired results. Have your choice!}% \MT@end@catcodes \fi } +%</package> +%</package|letterspace> % \end{macrocode} %\end{macro} % @@ -8930,7 +9592,8 @@ time will almost certainly lead to undesired results. Have your choice!}% % % The optional argument may be used to disable selected ligatures only. % \begin{macrocode} -\MT@requires@pdftex5{ +%<*pdftex-def|luatex-def> +%<pdftex-def>\MT@requires@pdftex5{ \def\DisableLigatures{% \MT@begin@catcodes \MT@DisableLigatures @@ -8943,19 +9606,25 @@ time will almost certainly lead to undesired results. Have your choice!}% \gdef\MT@nl@setname{no ligatures}% \MT@end@catcodes } -}{ +%<pdftex-def>}{ +%</pdftex-def|luatex-def> % \end{macrocode} %\end{macro} %\end{macro} %\end{macro} % If \pdftex\ is too old, we throw an error. % \begin{macrocode} +%<*pdftex-def|xetex-def> \renewcommand*\DisableLigatures[2][]{% \MT@error{Disabling ligatures of a font is only possible\MessageBreak with pdftex version 1.30 or newer.\MessageBreak - Ignoring \string\DisableLigatures}{Upgrade pdftex.}% -} + Ignoring \string\DisableLigatures}{% +%<pdftex-def> Upgrade +%<xetex-def> Use + pdftex.}% } +%<pdftex-def>} +%</pdftex-def|xetex-def> % \end{macrocode} %\end{macro} % @@ -8967,12 +9636,14 @@ time will almost certainly lead to undesired results. Have your choice!}% % be overwritten. %\changes{v2.0}{2005/10/04}{(beta:1) new command: interaction with \pkg{babel}} % \begin{macrocode} +%<*package> \def\DeclareMicrotypeBabelHook#1#2{% \MT@map@clist@n{#1}{% \KV@@sp@def\@tempa{##1}% \MT@gdef@n{MT@babel@\@tempa}{#2}% }% } +%</package> % \end{macrocode} %\end{macro} % @@ -8994,6 +9665,7 @@ time will almost certainly lead to undesired results. Have your choice!}% % A new macro called |\MT@pr@c@|\meta{name} will be defined to be \meta{\#3} % (\ie, the list of characters, not expanded). % \begin{macrocode} +%<*pdftex-def|xetex-def|luatex-def> \def\SetProtrusion{% \MT@begin@catcodes \MT@SetProtrusion @@ -9029,6 +9701,7 @@ time will almost certainly lead to undesired results. Have your choice!}% \MT@gdef@n{MT@pr@c@\MT@pr@c@name}{#3}% \MT@end@catcodes } +%</pdftex-def|xetex-def|luatex-def> % \end{macrocode} %\end{macro} %\end{macro} @@ -9041,6 +9714,7 @@ time will almost certainly lead to undesired results. Have your choice!}% % \cs{SetExpansion} only differs in that it allows some extra options % (|stretch|, |shrink|, |step|, |auto|). % \begin{macrocode} +%<*pdftex-def|luatex-def> \def\SetExpansion{% \MT@begin@catcodes \MT@SetExpansion @@ -9070,6 +9744,7 @@ time will almost certainly lead to undesired results. Have your choice!}% \MT@gdef@n{MT@ex@c@\MT@ex@c@name}{#3}% \MT@end@catcodes } +%</pdftex-def|luatex-def> % \end{macrocode} %\end{macro} %\end{macro} @@ -9085,6 +9760,7 @@ time will almost certainly lead to undesired results. Have your choice!}% % (suggested by \contributor Steven~E. Harris <seh\at panix.com>)} % ^^A private mail, 2007/06/15 % \begin{macrocode} +%<*pdftex-def|luatex-def> \def\SetTracking{% \MT@begin@catcodes \MT@SetTracking @@ -9110,11 +9786,13 @@ time will almost certainly lead to undesired results. Have your choice!}% tracking set `\MT@curr@set@name'}}}% \MT@end@catcodes } +%</pdftex-def|luatex-def> % \end{macrocode} %\end{macro} %\begin{macro}{\SetExtraSpacing} %\changes{v2.0}{2005/09/28}{(beta:1) new command: adjustment of interword spacing} % \begin{macrocode} +%<*pdftex-def> \def\SetExtraSpacing{% \MT@begin@catcodes \MT@SetExtraSpacing @@ -9165,6 +9843,7 @@ time will almost certainly lead to undesired results. Have your choice!}% \MT@gdef@n{MT@kn@c@\MT@kn@c@name}{#3}% \MT@end@catcodes } +%</pdftex-def> % \end{macrocode} %\end{macro} %\end{macro} @@ -9177,6 +9856,7 @@ time will almost certainly lead to undesired results. Have your choice!}% % We first set the name (if specified), then remove it from the list, and set % the remaining keys. % \begin{macrocode} +%<*package> \def\MT@set@named@keys#1#2{% \def\x##1name=##2,##3\@nil{% \setkeys{#1}{name=##2}% @@ -9210,6 +9890,29 @@ time will almost certainly lead to undesired results. Have your choice!}% } % \end{macrocode} %\end{macro} +%\begin{macro}{\MT@define@code@key@family} +%\changes{v2.5}{2011/02/07}{compatibility with \pkg{fontspec}: remove its internal counter +% (reported by \contributor Till~A. Heilmann <till.heilmann\at unibas.ch>)} +% ^^A <http://permalink.gmane.org/gmane.comp.tex.lualatex.devel/668> +% ^^A (beta:06) +% Remove \pkg{fontspec}'s internal feature counter. +% \begin{macrocode} +\def\MT@define@code@key@family#1{% + \define@key{MT@#1}{family}[]{% + \@tempcnta=\@ne + \MT@map@clist@n{##1}{% + \KV@@sp@def\MT@val{####1}% + \MT@get@highlevel{family}% + \ifMT@fontspec + \edef\x{\edef\noexpand\MT@val{\noexpand\MT@scrubfeature\MT@val()\relax}}\x + \fi + \MT@edef@n{MT@tempfamily\the\@tempcnta}{\MT@val}% + \advance\@tempcnta \@ne + }% + }% +} +% \end{macrocode} +%\end{macro} %\begin{macro}{\MT@define@code@key@size} %\changes{v1.9c}{2006/01/25}{fix: embrace \cs{MT@tempsize} in \cmd\csname\ % (bug introduced in v1.9b)} @@ -9232,6 +9935,10 @@ time will almost certainly lead to undesired results. Have your choice!}% %\end{macro} %\begin{macro}{\MT@define@code@key@font} %\changes{v1.9c}{2006/01/25}{fix: context was ignored} +%\changes{v2.5}{2011/09/04}{scrub \pkg{fontspec} feature count +% (found by \contributor Meho~R <meho.2005\at gmail.com>)} +% ^^A MID: <e16242e2-49cf-47bf-9ab4-66f81ced4c7a@glegroupsg2000goo.googlegroups.com> +% ^^A (beta:08) % \begin{macrocode} \def\MT@define@code@key@font#1{% \define@key{MT@#1}{font}[]{% @@ -9239,6 +9946,9 @@ time will almost certainly lead to undesired results. Have your choice!}% \KV@@sp@def\MT@val{####1}% \MT@ifstreq\MT@val*{\def\MT@val{*/*/*/*/*}}\relax \expandafter\MT@get@font@and@size\MT@val/////\@nil + \ifMT@fontspec + \edef\@tempb{\expandafter\MT@scrubfeatures\@tempb()\relax}% + \fi \MT@xdef@n{MT@\MT@permutelist @\@tempb\MT@extra@context}% {\csname MT@\MT@permutelist @name\endcsname}% %<debug>\MT@dinfo@nl{1}{initialising: use list for font \@tempb=\MT@val @@ -9262,7 +9972,7 @@ time will almost certainly lead to undesired results. Have your choice!}% %\end{macro} % \begin{macrocode} \MT@define@code@key{encoding}{cfg} -\MT@define@code@key{family} {cfg} +\MT@define@code@key@family {cfg} \MT@define@code@key{series} {cfg} \MT@define@code@key{shape} {cfg} \MT@define@code@key@size {cfg} @@ -9276,20 +9986,35 @@ time will almost certainly lead to undesired results. Have your choice!}% } % \end{macrocode} %\end{macro} +%\begin{macro}{\MT@listname@count} % The options in the optional first argument. % \begin{macrocode} +\newcount\MT@listname@count \MT@map@clist@c\MT@features{% % \end{macrocode} +%\end{macro} %\changes{v1.9a}{2005/11/21}{`\meta{file name}\texttt{/}\meta{line number}' as default list name} % Use file name and line number as the list name if the user didn't bother -% to invent one. +% to invent one -- also check whether the name already exists (in case more +% than one unnamed list is loaded in the same line, for example +% \cmd\AtBeginDocument). +%\changes{v2.5}{2011/02/26}{fix: check whether `\meta{file}\texttt{/}\meta{line}' list name already exists +% (reported by \contributor Till~A. Heilmann <till.heilmann\at unibas.ch>)} +% ^^A private mail, 2011/02/25 +% ^^A (beta:07) %\changes{v1.3}{2004/10/27}{fix: specifying \texttt{load} option does no % longer require to give a \texttt{name}, too} %\changes{v2.2}{2007/01/28}{simplify key declarations} % \begin{macrocode} \define@key{MT@#1@c}{name}[]{% \MT@ifempty{##1}{% - \MT@edef@n{MT@#1@c@name}{\MT@curr@file/\the\inputlineno}% + \MT@ifdefined@n@TF{MT@#1@c@\MT@curr@file/\the\inputlineno}{% + \global\advance\MT@listname@count\@ne + \MT@edef@n{MT@#1@c@name}{\MT@curr@file/\the\inputlineno + (\number\MT@listname@count)}% + }{% + \MT@edef@n{MT@#1@c@name}{\MT@curr@file/\the\inputlineno}% + }% }{% \MT@edef@n{MT@#1@c@name}{##1}% \MT@ifdefined@n@T{MT@#1@c@\csname MT@#1@c@name\endcsname}{% @@ -9311,36 +10036,30 @@ time will almost certainly lead to undesired results. Have your choice!}% % Automatically enable font copying if we find a protrusion or expansion context. % After the preamble, check whether font copying is enabled. % For older \pdftex\ versions, disallow. -% Also disable for \luatex. +%\changes{v2.5}{2010/02/27}{allow contexts for \luatex} +% It also works with \luatex\ 0.30 or newer. % \begin{macrocode} -\MT@requires@pdftex7{ -%<*lua> - \MT@requires@luatex{ - \define@key{MT@ex@c}{context}[]{% - \MT@error{Expansion contexts currently don't work with luatex.\MessageBreak - Ignoring `context' key\on@line}% - {Use pdftex instead.}% - } - }{ -%</lua> +%</package> +%<*pdftex-def|luatex-def> +%<pdftex-def>\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}[]{% - \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 - }% - } + \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 + }% + } % \end{macrocode} % Protrusion contexts \emph{may} also work without copying the font, so we % don't issue an error but only a warning. The problem is that \pdftex\ only @@ -9349,36 +10068,50 @@ time will almost certainly lead to undesired results. Have your choice!}% % the whole paragraph). When different fonts are loaded -- like in the example % with the footnote markers -- we don't need to copy the fonts. % \begin{macrocode} + \define@key{MT@pr@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@pr@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@pr@c}{context}[]{% - \MT@ifempty{#1}\relax{\def\MT@extra@context{#1}}% - \ifx\MT@copy@font\MT@copy@font@\else - \MT@warning@nl{If protrusion contexts don't work as expected, - \MessageBreak load the package with the `copyfonts' option}% - \fi - }% - } -%<lua> } + \MT@ifempty{#1}\relax{\def\MT@extra@context{#1}}% + \ifx\MT@copy@font\MT@copy@font@\else + \MT@warning@nl{If protrusion contexts don't work as expected, + \MessageBreak load the package with the `copyfonts' option}% + \fi + }% + } +%</pdftex-def|luatex-def> +%<*pdftex-def> }{ \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.}% } -} +%</pdftex-def> +%<*pdftex-def|xetex-def> + \define@key{MT@pr@c}{context}[]{% + \MT@error{Protrusion contexts only work with pdftex +%<pdftex-def> 1.40.4\MessageBreak or later. +%<xetex-def> \MessageBreak or luatex. + Ignoring `context' key\on@line}% +%<pdftex-def> {Upgrade pdftex.}% +%<xetex-def> {Use pdftex or luatex.}% + } +%</pdftex-def|xetex-def> +%<pdftex-def>} % \end{macrocode} %\begin{macro}{\MT@warn@nodim} % \begin{macrocode} +%<*package> \def\MT@warn@nodim#1{% \MT@warning{`\@tempa' is not a dimension.\MessageBreak Ignoring it and setting values relative to\MessageBreak #1}% } +%</package> % \end{macrocode} %\end{macro} %\changes{v1.8}{2005/04/14}{\cs{SetProtrusion}: new key: \texttt{unit}} @@ -9389,6 +10122,7 @@ time will almost certainly lead to undesired results. Have your choice!}% % Protrusion codes may be relative to character width, or to any dimension. %\todo{new key for unit: \texttt{dimen} (for \texttt{kerning}, especially)} % \begin{macrocode} +%<*pdftex-def|xetex-def|luatex-def> \define@key{MT@pr@c}{unit}[character]{% \MT@glet@nc{MT@pr@c@\MT@curr@set@name @unit}\@empty \def\@tempa{#1}% @@ -9402,9 +10136,11 @@ time will almost certainly lead to undesired results. Have your choice!}% {\MT@warn@nodim{character widths}}% }% } +%</pdftex-def|xetex-def|luatex-def> % \end{macrocode} % Tracking may only be relative to a dimension. % \begin{macrocode} +%<*pdftex-def|luatex-def> \define@key{MT@tr@c}{unit}[1em]{% \MT@glet@nc{MT@tr@c@\MT@curr@set@name @unit}\@empty \def\@tempa{#1}% @@ -9413,9 +10149,11 @@ time will almost certainly lead to undesired results. Have your choice!}% {\MT@warn@nodim{1em}% \MT@gdef@n{MT@tr@c@\MT@curr@set@name @unit}{1em}}% } +%</pdftex-def|luatex-def> % \end{macrocode} % Spacing and kerning codes may additionally be relative to space dimensions. % \begin{macrocode} +%<*pdftex-def> \MT@map@clist@n{sp,kn}{% \define@key{MT@#1@c}{unit}[space]{% \MT@glet@nc{MT@#1@c@\MT@curr@set@name @unit}\@empty @@ -9430,9 +10168,11 @@ time will almost certainly lead to undesired results. Have your choice!}% }% }% } +%</pdftex-def> % \end{macrocode} % The first argument to \cs{SetExpansion} accepts some more options. % \begin{macrocode} +%<*pdftex-def|luatex-def> \MT@map@clist@n{stretch,shrink,step}{% \define@key{MT@ex@c}{#1}[]{% \MT@ifempty{##1}\relax{% @@ -9457,22 +10197,26 @@ time will almost certainly lead to undesired results. Have your choice!}% %\changes{v1.7}{2005/03/07}{fix: remove space after \texttt{autoexpand}} %\changes{v1.7}{2005/03/07}{disallow automatic expansion if \pdftex\ too old} % \begin{macrocode} - \MT@requires@pdftex4{% +%<pdftex-def> \MT@requires@pdftex4{% \MT@gdef@n{MT@ex@c@\MT@curr@set@name @auto}{autoexpand}% +%<*pdftex-def> }{% \MT@warning{pdftex too old for automatic font expansion}% } +%</pdftex-def> \else - \MT@requires@pdftex4{% +%<pdftex-def> \MT@requires@pdftex4{% \MT@glet@nc{MT@ex@c@\MT@curr@set@name @auto}\@empty - }\relax +%<pdftex-def> }\relax \fi } +%</pdftex-def|luatex-def> % \end{macrocode} % Tracking: Interword spacing and outer kerning. % The variant with space in case \cs{SetTracking} is called inside an argument % (\eg, to \cmd\IfFileExists). % \begin{macrocode} +%<*pdftex-def|luatex-def> \MT@define@opt@key{tr}{spacing} \MT@define@opt@key{tr}{outerspacing} \MT@define@opt@key{tr}{outerkerning} @@ -9484,14 +10228,17 @@ time will almost certainly lead to undesired results. Have your choice!}% \define@key{MT@tr@c}{outer spacing}[]{\setkeys{MT@tr@c}{outerspacing={#1}}} \define@key{MT@tr@c}{outer kerning}[]{\setkeys{MT@tr@c}{outerkerning={#1}}} \define@key{MT@tr@c}{no ligatures}[]{\setkeys{MT@tr@c}{noligatures={#1}}} +%</pdftex-def|luatex-def> % \end{macrocode} % %\subsubsection{Character inheritance} % %\begin{macro}{\DeclareCharacterInheritance} %\changes{v1.1}{2004/09/15}{new command: possibility to specify character inheritance} +%^^A\changes{v1.2}{2004/09/29}{check whether only one encoding specified} %\changes{v1.9d}{2006/02/09}{fix: empty context} %\changes{v1.9e}{2006/07/26}{new key `\texttt{inputenc}' to set the input encoding} +%\changes{v2.5}{2010/05/18}{allow more than one encoding} % This macro may be used in the configuration files to declare characters that % should inherit protrusion resp. expansion values from other characters. Thus, % there is no need to define all accented characters (\eg, |\`a|, |\'a|, @@ -9504,6 +10251,7 @@ time will almost certainly lead to undesired results. Have your choice!}% %\begin{macro}{\MT@extra@inputenc} % and to specify an input encoding. % \begin{macrocode} +%<*package> \renewcommand*\DeclareCharacterInheritance[1][]{% \let\MT@extra@context\@empty \let\MT@extra@inputenc\@undefined @@ -9562,35 +10310,15 @@ time will almost certainly lead to undesired results. Have your choice!}% %\end{macro} % Parse the second argument. \cs{DeclareCharacterInheritance} may also be set % up for various combinations. -% \begin{macrocode} -\define@key{MT@inh}{encoding}[]{% - \def\MT@val{#1}% - \expandafter\MT@encoding@check\MT@val,\@nil - \MT@get@highlevel{encoding}% - \MT@edef@n{MT@tempencoding1}{\MT@val}% -} -% \end{macrocode} -%\begin{macro}{\MT@encoding@check} -%\changes{v1.2}{2004/09/29}{check whether only one encoding specified} -% But we only allow \emph{one} encoding. -% \begin{macrocode} -\def\MT@encoding@check#1,#2\@nil{% - \MT@ifempty{#2}\relax{% - \edef\MT@val{#1}% - \MT@warning{You may only specify one encoding for character\MessageBreak - inheritance lists. Ignoring encoding(s) #2}% - }% -} -% \end{macrocode} -%\end{macro} -% For the rest, we can reuse the key setup from the configuration lists +% We can reuse the key setup from the configuration lists % (|\Set...|). % \begin{macrocode} -\MT@define@code@key{family}{inh} -\MT@define@code@key{series}{inh} -\MT@define@code@key{shape} {inh} -\MT@define@code@key@size {inh} -\MT@define@code@key@font {inh} +\MT@define@code@key{encoding}{inh} +\MT@define@code@key@family {inh} +\MT@define@code@key{series} {inh} +\MT@define@code@key{shape} {inh} +\MT@define@code@key@size {inh} +\MT@define@code@key@font {inh} % \end{macrocode} %\begin{macro}{\MT@inh@do} % Now parse the third argument, the inheritance lists. We define the commands @@ -9611,17 +10339,21 @@ time will almost certainly lead to undesired results. Have your choice!}% % Only gather the inheriting characters here. Their codes will actually be set % in |\MT@set@|\meta{feature}|@codes|. % \begin{macrocode} +%</package> +%<*pdftex-def|xetex-def|luatex-def> \def\MT@inh@split#1=#2=#3\relax{% \def\@tempa{#1}% \ifx\@tempa\@empty \else \MT@get@slot - \ifnum\MT@char > \m@ne +%<pdftex-def|luatex-def> \ifnum\MT@char > \m@ne +%<xetex-def> \ifx\MT@char\@empty\else \let\MT@val\MT@char \MT@map@clist@n{#2}{% \def\@tempa{##1}% \ifx\@tempa\@empty \else \MT@get@slot - \ifnum\MT@char > \m@ne +%<pdftex-def|luatex-def> \ifnum\MT@char > \m@ne +%<xetex-def> \ifx\MT@char\@empty\else \MT@exp@cs\MT@xadd{MT@inh@\MT@listname @\MT@val @}{{\MT@char}}% \fi \fi @@ -9631,6 +10363,8 @@ time will almost certainly lead to undesired results. Have your choice!}% \fi \fi } +%</pdftex-def|xetex-def|luatex-def> +%<*package> % \end{macrocode} %\end{macro} % @@ -9649,7 +10383,7 @@ time will almost certainly lead to undesired results. Have your choice!}% % \meta{family}|/|\allowbreak % \meta{series}|/|\allowbreak % \meta{shape}|/|\allowbreak -% \meta{|\textbar*|} +% \meta{\textbar*} % to be the expansion of |\MT@|\meta{list type}|@name|, \ie, the name of the % currently defined list. Size ranges are held in a separate macro called % |\MT@|\meta{list type}|@/|\allowbreak\meta{font axes}|@sizes|, which in turn @@ -9913,12 +10647,14 @@ time will almost certainly lead to undesired results. Have your choice!}% %\begin{macro}{\MT@optwarn@nan} % \begin{macrocode} %</package> +%<*package|letterspace> %<plain>\MT@requires@latex1{ \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}}% } %<plain>}\relax +%</package|letterspace> %<*package> % \end{macrocode} %\end{macro} @@ -10040,16 +10776,23 @@ time will almost certainly lead to undesired results. Have your choice!}% % \end{macrocode} % The \opt{DVIoutput} option will change \cmd\pdfoutput\ immediately to minimise % the risk of confusing other packages. +%\changes{v2.5}{2010/09/17}{disable `\opt{DVIoutput}' option for \xetex} ^^A (beta:03) % \begin{macrocode} +%</package> +%<*pdftex-def|luatex-def|xetex-def> \MT@def@bool@opt{DVIoutput}{% \csname if\@tempa\endcsname +%<*pdftex-def|luatex-def> \ifnum\pdfoutput>\z@ \MT@opt@DVItrue \fi \pdfoutput\z@ \else \ifnum\pdfoutput<\@ne \MT@opt@DVItrue \fi \pdfoutput\@ne +%</pdftex-def|luatex-def> +%<xetex-def> \MT@warning@nl{Ignoring `DVIoutput' option}% \fi } +%</pdftex-def|luatex-def|xetex-def> % \end{macrocode} %\changes{v1.9a}{2005/11/21}{new option: \opt{defersetup}, by default true} % Setting the \opt{defersetup} option to false will restore the old behaviour, @@ -10061,6 +10804,7 @@ time will almost certainly lead to undesired results. Have your choice!}% % is being constructed inside the preamble and this box contains a font that is % not loaded before the box is being used. % \begin{macrocode} +%<*package> \MT@def@bool@opt{defersetup}{% \csname if\@tempa\endcsname \else \AtEndOfPackage{% @@ -10070,44 +10814,43 @@ time will almost certainly lead to undesired results. Have your choice!}% }% \fi } +%</package> % \end{macrocode} % \opt{copyfonts} will copy all fonts before setting them up. This allows % protrusion and expansion with different parameters. %\changes{v2.2}{2007/07/03}{new option: \opt{copyfonts}} % This options is also \emph{undocumented} in the hope that we can always find % out automatically whether it's required. +% It also works with \luatex\ 0.30 or newer. % \begin{macrocode} -\MT@requires@pdftex7{ -%<*lua> - \MT@requires@luatex{ - \MT@def@bool@opt{copyfonts}{% - \csname if\@tempa\endcsname - \MT@error{The `copyfonts' option doesn't work with luatex} - {Use pdftex instead.}% - \fi - } - }{ -%</lua> - \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 - } -%<lua> } -}{ +%<*pdftex-def|luatex-def> +%<pdftex-def>\MT@requires@pdftex7{ \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}{Upgrade pdftex.}% + \MT@glet\MT@copy@font\MT@copy@font@ + \else + \MT@glet\MT@copy@font\relax \fi } -} +%<pdftex-def>}{ +%</pdftex-def|luatex-def> +%<*pdftex-def|xetex-def> + \MT@def@bool@opt{copyfonts}{% + \csname if\@tempa\endcsname + \MT@error +%<pdftex-def> {The pdftex version you are using is too old\MessageBreak +%<pdftex-def> to use the `copyfonts' option}{Upgrade pdftex.}% +%<xetex-def> {The `copyfonts' option does not work with xetex} +%<xetex-def> {Use pdftex or luatex instead.}% + \fi + } +%<pdftex-def>} +%</pdftex-def|xetex-def> % \end{macrocode} % \opt{final} is the opposite to \opt{draft}. %\changes{v1.4a}{2004/11/16}{new option: \opt{final}} % \begin{macrocode} +%<*package> \MT@def@bool@opt{final}{% \csname if\@tempa\endcsname \MT@draftfalse @@ -10162,6 +10905,7 @@ time will almost certainly lead to undesired results. Have your choice!}% % \opt{letterspace}. % \begin{macrocode} %</package> +%<*package|letterspace> %<plain>\MT@requires@latex1{ \MT@map@clist@n{% %<package> stretch,shrink,step,% @@ -10179,6 +10923,7 @@ time will almost certainly lead to undesired results. Have your choice!}% }% } %<plain>}\relax +%</package|letterspace> %<*package> % \end{macrocode} % \opt{factor} will define the protrusion factor only. @@ -10206,6 +10951,26 @@ time will almost certainly lead to undesired results. Have your choice!}% } % \end{macrocode} % +%\subsubsection{Loading the definition file} +% +%\begin{macro}{\MT@endinput} +% Abort if no capable engine found. +% \begin{macrocode} +\let\MT@endinput\relax +% \end{macrocode} +%\end{macro} +% \begin{macrocode} +\ifx\MT@engine\relax + \MT@warning@nl{You don't seem to be using either pdftex, luatex, or xetex.\MessageBreak + `\MT@MT' only works with these engines.\MessageBreak + I will quit now.} + \MT@clear@options +\else + \input{microtype-\MT@engine tex.def} +\fi +\MT@endinput +% \end{macrocode} +% % \subsubsection{Reading the configuration file} % % The package should just work if called without any options. Therefore, @@ -10216,17 +10981,20 @@ time will almost certainly lead to undesired results. Have your choice!}% % running \pdftex.) % \begin{macrocode} \MT@protrusiontrue +%</package> +%<*pdftex-def|luatex-def> \ifnum\pdfoutput<\@ne \else % \end{macrocode} % Also, we only enable expansion by default if \pdftex\ can expand the fonts % automatically. %\changes{v1.6}{2004/12/23}{defaults: turn off expansion for old \pdftex\ versions} % \begin{macrocode} - \MT@requires@pdftex4{ +%<pdftex-def> \MT@requires@pdftex4{ \MT@expansiontrue \MT@autotrue - }\relax +%<pdftex-def> }\relax \fi +%</pdftex-def|luatex-def> % \end{macrocode} % The main configuration file will be loaded before processing the package % options. @@ -10237,6 +11005,7 @@ time will almost certainly lead to undesired results. Have your choice!}% % However, the \opt{config} option must of course be evaluated beforehand. % We also have to define a no-op for the regular option processing later. % \begin{macrocode} +%<*package> \define@key{MT}{config}[]{\relax} \def\MT@get@config#1config=#2,#3\@nil{% \MT@ifempty{#2}% @@ -10352,6 +11121,8 @@ time will almost certainly lead to undesired results. Have your choice!}% % \begin{macrocode} \def\microtypesetup{\setkeys{MT}} \MT@addto@setup{\def\microtypesetup#1{\setkeys{MTX}{#1}\selectfont}} +%</package> +%<*pdftex-def|luatex-def|xetex-def> \def\MT@define@optionX#1#2{% \define@key{MTX}{#1}[true]{% \edef\@tempb{\csname MT@rbba@#1\endcsname}% @@ -10420,15 +11191,31 @@ time will almost certainly lead to undesired results. Have your choice!}% % \end{macrocode} %\end{macro} % \begin{macrocode} -\MT@define@optionX{protrusion}\pdfprotrudechars -\MT@define@optionX{expansion}\pdfadjustspacing +\MT@define@optionX{protrusion}\MT@protrudechars +%</pdftex-def|luatex-def|xetex-def> +%<*pdftex-def|luatex-def> +\MT@define@optionX{expansion}\MT@adjustspacing +% \end{macrocode} +%\begin{macro}{\MT@protrudechars} +%\begin{macro}{\MT@adjustspacing} +% \begin{macrocode} +\let\MT@protrudechars\pdfprotrudechars +\let\MT@adjustspacing\pdfadjustspacing +%</pdftex-def|luatex-def> +%<*xetex-def> +\let\MT@protrudechars\XeTeXprotrudechars +\define@key{MTX}{expansion}[true]{\MT@warning{Ignoring expansion setup}} +%</xetex-def> % \end{macrocode} +%\end{macro} +%\end{macro} %\begin{macro}{\MT@define@optionX@} % The same for |tracking|, |spacing| and |kerning|, which do not have a % |compatibility| level. % \begin{macrocode} -\MT@requires@pdftex6{ -%<lua> \MT@requires@luatex\@firstofone{ +%<*pdftex-def|luatex-def> +%<pdftex-def>\MT@requires@pdftex6{ +%<luatex-def>\MT@requires@luatex3{ \def\MT@define@optionX@#1#2{% \define@key{MTX}{#1}[true]{% \MT@map@clist@n{##1}{% @@ -10465,25 +11252,28 @@ time will almost certainly lead to undesired results. Have your choice!}% \MT@define@optionX@{spacing}{\pdfadjustinterwordglue\@tempcnta} \MT@define@optionX@{kerning}{\pdfprependkern\@tempcnta \pdfappendkern \@tempcnta} - \@gobble -%<lua> } -}\@firstofone +}{ +%</pdftex-def|luatex-def> +%<*pdftex-def|luatex-def|xetex-def> % \end{macrocode} -% Disable for older \pdftex\ versions and for \luatex. +% Disable for older \pdftex\ versions and for \xetex\ and \luatex. % \begin{macrocode} -{\define@key{MTX}{tracking}[true]{\MT@warning{Ignoring tracking setup}} - \define@key{MTX}{kerning}[true]{\MT@warning{Ignoring kerning setup}} - \define@key{MTX}{spacing}[true]{\MT@warning{Ignoring spacing setup}} -} +\define@key{MTX}{tracking}[true]{\MT@warning{Ignoring tracking setup}} +%<luatex-def>} +\define@key{MTX}{kerning}[true]{\MT@warning{Ignoring kerning setup}} +\define@key{MTX}{spacing}[true]{\MT@warning{Ignoring spacing setup}} +%<pdftex-def>} \define@key{MTX}{activate}[true]{% \setkeys{MTX}{protrusion={#1}}% - \setkeys{MTX}{expansion={#1}}% +%<pdftex-def|luatex-def> \setkeys{MTX}{expansion={#1}}% } +%</pdftex-def|luatex-def|xetex-def> % \end{macrocode} %\begin{macro}{\MT@saved@setupfont} % Disable everything -- may be used as a work-around in case setting up fonts % doesn't work in certain environments. \emph{(Undocumented.)} % \begin{macrocode} +%<*package> \let\MT@saved@setupfont\MT@setupfont % \end{macrocode} %\end{macro} @@ -10504,6 +11294,7 @@ time will almost certainly lead to undesired results. Have your choice!}% %\begin{macro}{\MT@ProcessOptionsWithKV} % Parse options. % \begin{macrocode} +%<*package|letterspace> %<plain>\MT@requires@latex1{ \def\MT@ProcessOptionsWithKV#1{% \let\@tempc\relax @@ -10541,6 +11332,7 @@ time will almost certainly lead to undesired results. Have your choice!}% % \begin{macrocode} \MT@ProcessOptionsWithKV{MT} %<plain>}\relax +%</package|letterspace> %<*package> % \end{macrocode} % Now we can take the appropriate actions. We also tell the log file which @@ -10562,17 +11354,23 @@ time will almost certainly lead to undesired results. Have your choice!}% \renewcommand*\microtypecontext[1]{}% \renewcommand*\lsstyle{}% \else + \MT@setup@PDF + \MT@setup@copies % \end{macrocode} -% For <DVI> output, the user must have explicitly passed the \opt{expansion} -% option to the package. -%\changes{v1.5}{2004/12/02}{defaults: turn off expansion for <DVI> output} +% Fix the font sets. % \begin{macrocode} - \ifnum\pdfoutput<\@ne - \ifMT@opt@expansion \else - \MT@expansionfalse - \fi - \fi + \MT@map@tlist@c\MT@font@sets\MT@fix@font@set + \MT@setup@protrusion + \MT@setup@expansion + \MT@setup@tracking + \MT@setup@warntracking + \MT@setup@spacing + \MT@setup@kerning + \MT@setup@noligatures +} +%</package> % \end{macrocode} +%\begin{macro}{\MT@setup@PDF} % \pdftex\ can create <DVI> output, too. However, both the <DVI> viewer and % |dvips| need to find actual fonts. Therefore, expansion will only work if the % fonts for different degrees of expansion are readily available. @@ -10585,22 +11383,34 @@ time will almost certainly lead to undesired results. Have your choice!}% % for each package (that's not our job), we only say that it was \microtype\ % that changed it. This must be sufficient! % \begin{macrocode} +%<*pdftex-def|luatex-def> +\def\MT@setup@PDF{% \MT@info@nl{Generating \ifnum\pdfoutput<\@ne DVI \else PDF \fi output% \ifMT@opt@DVI\space (changed by \MT@MT)\fi}% +} % \end{macrocode} +%\end{macro} +%\begin{macro}{\MT@setup@copies} % Working on font copies? % \begin{macrocode} +\def\MT@setup@copies{% \ifx\MT@copy@font\relax\else \MT@info@nl{Using font copies for contexts}\fi +} +%</pdftex-def|luatex-def> +%<*xetex-def> +\let\MT@setup@PDF\relax +\let\MT@setup@copies\relax +%</xetex-def> % \end{macrocode} -% Fix the font sets. -% \begin{macrocode} - \MT@map@tlist@c\MT@font@sets\MT@fix@font@set -% \end{macrocode} +%\end{macro} +%\begin{macro}{\MT@setup@protrusion} % Protrusion. % \begin{macrocode} +%<*pdftex-def|xetex-def|luatex-def> +\def\MT@setup@protrusion{% \ifMT@protrusion \edef\MT@active@features{\MT@active@features,pr}% - \pdfprotrudechars\MT@pr@level + \MT@protrudechars\MT@pr@level \MT@info@nl{Character protrusion enabled (level \number\MT@pr@level)% \ifnum\MT@pr@factor=\MT@factor@default \else,\MessageBreak factor: \number\MT@pr@factor\fi @@ -10610,9 +11420,22 @@ time will almost certainly lead to undesired results. Have your choice!}% \let\MT@protrusion\relax \MT@info@nl{No character protrusion}% \fi +} +%</pdftex-def|xetex-def|luatex-def> % \end{macrocode} -% Expansion. +%\end{macro} +%\begin{macro}{\MT@setup@expansion} +% For <DVI> output, the user must have explicitly passed the \opt{expansion} +% option to the package. +%\changes{v1.5}{2004/12/02}{defaults: turn off expansion for <DVI> output} % \begin{macrocode} +%<*pdftex-def|luatex-def> +\def\MT@setup@expansion{% + \ifnum\pdfoutput<\@ne + \ifMT@opt@expansion \else + \MT@expansionfalse + \fi + \fi \ifMT@expansion % \end{macrocode} % Set up the values for font expansion: if \opt{stretch} has not been specified, we @@ -10639,31 +11462,35 @@ time will almost certainly lead to undesired results. Have your choice!}% % rounded off, minimum value 1. %\changes{v1.9}{2005/07/08}{warning if user requested zero \opt{step}} % \begin{macrocode} - \MT@requires@pdftex6{\def\MT@step{1 }}{% - \ifnum\MT@step=\m@ne - \ifnum\MT@stretch>\MT@shrink - \ifnum\MT@shrink=\z@ - \@tempcnta=\MT@stretch - \else - \@tempcnta=\MT@shrink - \fi + \ifnum\MT@step=\m@ne +%<pdftex-def> \MT@requires@pdftex6{% + \def\MT@step{1 }% +%<*pdftex-def> + }{% + \ifnum\MT@stretch>\MT@shrink + \ifnum\MT@shrink=\z@ + \@tempcnta=\MT@stretch \else - \ifnum\MT@stretch=\z@ - \@tempcnta=\MT@shrink - \else - \@tempcnta=\MT@stretch - \fi + \@tempcnta=\MT@shrink \fi - \divide\@tempcnta 5\relax \else - \@tempcnta=\MT@step - \ifnum\@tempcnta=\z@ - \MT@warning@nl{The expansion step cannot be set to zero.\MessageBreak - Setting it to one} + \ifnum\MT@stretch=\z@ + \@tempcnta=\MT@shrink + \else + \@tempcnta=\MT@stretch \fi \fi + \divide\@tempcnta 5\relax \ifnum\@tempcnta=\z@ \@tempcnta=\@ne \fi - \edef\MT@step{\number\@tempcnta\space}}% + \edef\MT@step{\number\@tempcnta\space}% + }% +%</pdftex-def> + \fi + \ifnum\MT@step=\z@ + \MT@warning@nl{The expansion step cannot be set to zero.\MessageBreak + Setting it to one}% + \def\MT@step{1 }% + \fi % \end{macrocode} %\begin{macro}{\MT@auto} % Automatic expansion of the font? This new feature of \pdftex\ 1.20 makes the @@ -10673,7 +11500,7 @@ time will almost certainly lead to undesired results. Have your choice!}% % \begin{macrocode} \let\MT@auto\@empty \ifMT@auto - \MT@requires@pdftex4{% +%<pdftex-def> \MT@requires@pdftex4{% % \end{macrocode} %\end{macro} % We turn off automatic expansion if output mode is <DVI>. @@ -10698,6 +11525,7 @@ time will almost certainly lead to undesired results. Have your choice!}% % version is too old for \texttt{autoexpand}} %\changes{v1.6}{2004/12/23}{disable automatic expansion for old \pdftex\ versions} % \begin{macrocode} +%<*pdftex-def> }{% \MT@error{% The pdftex version you are using is too old for\MessageBreak @@ -10708,13 +11536,16 @@ time will almost certainly lead to undesired results. Have your choice!}% \MT@autofalse \def\MT@auto{1000 }% }% +%</pdftex-def> \else % \end{macrocode} % No automatic expansion. % \begin{macrocode} +%<*pdftex-def> \MT@requires@pdftex4\relax{% \def\MT@auto{1000 }% }% +%</pdftex-def> \fi % \end{macrocode} % Choose the appropriate macro for selected expansion. @@ -10739,7 +11570,7 @@ time will almost certainly lead to undesired results. Have your choice!}% \fi \ifMT@expansion \edef\MT@active@features{\MT@active@features,ex}% - \pdfadjustspacing\MT@ex@level + \MT@adjustspacing\MT@ex@level \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, @@ -10749,13 +11580,13 @@ time will almost certainly lead to undesired results. Have your choice!}% %\begin{macro}{\MT@check@step} % Check whether \opt{stretch} and \opt{shrink} are multiples of \opt{step}. % \begin{macrocode} - \def\MT@check@step#1{% - \@tempcnta=\csname MT@#1\endcsname + \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 + \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 }% @@ -10770,15 +11601,15 @@ time will almost certainly lead to undesired results. Have your choice!}% \CheckCommand*\showhyphens[1]{\setbox0\vbox{% \color@begingroup\everypar{}\parfillskip\z@skip \hsize\maxdimen\normalfont\pretolerance\m@ne\tolerance\m@ne - \hbadness\z@\showboxdepth\z@\ #1\color@endgroup}}% + \hbadness\z@\showboxdepth\z@\ ##1\color@endgroup}}% % \end{macrocode} %\begin{macro}{\showhyphens} % I wonder why it's defined globally (in \file{ltfssbas.dtx})? % \begin{macrocode} - \gdef\showhyphens#1{\setbox0\vbox{% + \gdef\showhyphens##1{\setbox0\vbox{% \color@begingroup\pdfadjustspacing\z@\everypar{}\parfillskip\z@skip \hsize\maxdimen\normalfont\pretolerance\m@ne\tolerance\m@ne - \hbadness\z@\showboxdepth\z@\ #1\color@endgroup}}% + \hbadness\z@\showboxdepth\z@\ ##1\color@endgroup}}% % \end{macrocode} %\end{macro} % \begin{macrocode} @@ -10787,142 +11618,220 @@ time will almost certainly lead to undesired results. Have your choice!}% \MT@info@nl{No font expansion}% \fi } -\MT@requires@pdftex6{ -% \end{macrocode} -%\begin{macro}{\MT@warn@lua} -% Switch off the features that don't work with \luatex. -% \begin{macrocode} -%<*lua> - \def\MT@warn@lua#1{% - \MT@error{The `#1' feature doesn't currently work\MessageBreak with luatex} - {Use pdftex instead.}% - \csname MT@#1false\endcsname - \MT@let@nc{MT@#1}\relax - } -%</lua> +%</pdftex-def|luatex-def> +%<*xetex-def> +\def\MT@setup@expansion{% + \ifMT@expansion + \ifMT@opt@expansion + \MT@error{Font expansion does not work with xetex} + {Use pdftex or luatex instead.}% + \fi + \fi +} +%</xetex-def> % \end{macrocode} %\end{macro} -% \begin{macrocode} -%</package> - \MT@addto@setup{% -%<*package> -% \end{macrocode} +%\begin{macro}{\MT@setup@tracking} % Tracking, spacing and kerning. % \begin{macrocode} +%<*pdftex-def|luatex-def> +%<pdftex-def>\MT@requires@pdftex6{% +%<luatex-def>\MT@requires@luatex3{% + \def\MT@setup@tracking{% \ifMT@tracking -%<lua> \MT@requires@luatex{\MT@warn@lua{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}% % \end{macrocode} % Enable protrusion for compensation at the line edges. %\changes{v2.3}{2007/07/27}{enable protrusion when tracking is enabled} % \begin{macrocode} - \ifMT@protrusion\else\pdfprotrudechars\@ne\fi -%<lua> }% + \ifMT@protrusion\else\MT@protrudechars\@ne\fi \else \let\MT@tracking\relax - \MT@info@nl{No tracking}% + \MT@info@nl{No adjustment of tracking}% \fi + } +%</pdftex-def|luatex-def> +%<*pdftex-def> +% \end{macrocode} +%\end{macro} +%\begin{macro}{\MT@setup@spacing} +% \begin{macrocode} + \def\MT@setup@spacing{% \ifMT@spacing -%<lua> \MT@requires@luatex{\MT@warn@lua{spacing}}{% - \edef\MT@active@features{\MT@active@features,sp}% - \pdfadjustinterwordglue\@ne - \MT@info@nl{Adjustment of interword spacing enabled}% - \MT@check@active@set{sp}% -%<lua> }% + \edef\MT@active@features{\MT@active@features,sp}% + \pdfadjustinterwordglue\@ne + \MT@info@nl{Adjustment of interword spacing enabled}% +% \end{macrocode} +%\changes{v2.5}{2011/11/29}{warning with \pkg{ragged2e} +% (reported by \contributor Steffen Hoffmann <speraviro-delenda\at expires-2011-11-30.arcornews.de>)} +% ^^A MID: <dctt-20353621.20111126$90.sph@virsperans.my-fqdn.de> +% ^^A (beta:09) +% The \pkg{ragged2e} package sets interword spaces to a fixed value without glue. +% \microtype's modifications can therefore have undesired effects. Therefore, +% we issue a warning. +% \begin{macrocode} + \MT@with@package@T{ragged2e}{% + \MT@warning@nl{You are using the `ragged2e' package.\MessageBreak + Adjustment of interword spacing may lead to\MessageBreak + undesired results when used with `ragged2e'.\MessageBreak + In this case, disable the `spacing' option}% + }% + \MT@check@active@set{sp}% \else \let\MT@spacing\relax \MT@info@nl{No adjustment of interword spacing}% \fi - \ifMT@kerning -%<lua> \MT@requires@luatex{\MT@warn@lua{kerning}}{% - \edef\MT@active@features{\MT@active@features,kn}% - \pdfprependkern\@ne - \pdfappendkern\@ne - \MT@info@nl{Adjustment of character kerning enabled}% - \MT@check@active@set{kn}% -%<lua> }% - \else - \let\MT@kerning\relax - \MT@info@nl{No adjustment of character kerning}% - \fi -%</package> + } % \end{macrocode} -%\begin{macro}{\MT@warn@tracking@DVI} -%\changes{v2.2}{2007/02/11}{warning when letterspacing in DVI mode} -% We issue a warning, when letterspacing in <DVI> mode, since it will probably -% not work. We also switch on protrusion if it isn't already, to compensate for -% the letterspacing kerns. +%\end{macro} +%\begin{macro}{\MT@setup@spacing@check} +% Warning if \cmd\nonfrenchspacing\ is active, since space factors will be +% ignored with \cmd\pdfadjustinterwordglue\,|>|\,0. Why 1500? Because some +% packages redefine \cmd\frenchspacing.\footnote{ +% Cf. the \texttt{c.t.t.} thread `\cmd\frenchspacing\ with <AMS> packages +% and babel', started by Philipp Lehman on 16~August 2005, +% <MID>:~\nolinkurl{ddtbaj$rob$1@online.de}} % \begin{macrocode} - \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\MessageBreak - able to create the virtual fonts on the fly}% - \MT@glet\MT@warn@tracking@DVI\relax - }% - \else - \def\MT@warn@tracking@DVI{% - \ifnum\pdfprotrudechars<\@ne \global\pdfprotrudechars\@ne \fi - \MT@glet\MT@warn@tracking@DVI\relax - }% + \def\MT@setup@spacing@check{% + \ifMT@spacing + \ifMT@babel \else + \ifnum\sfcode`\. > 1500 + \MT@ifstreq\MT@sp@context{nonfrench}\relax{% + \MT@warning@nl{% + \string\nonfrenchspacing\space is active. Adjustment of\MessageBreak + interword spacing will disable it. You might want\MessageBreak + to add `\@backslashchar\MT@MT context{spacing=nonfrench}'\MessageBreak + to your preamble}% + }% + \fi + \fi \fi + } % \end{macrocode} %\end{macro} +%\begin{macro}{\MT@setup@kerning} % \begin{macrocode} - \ifnum\MT@letterspace=\m@ne - \let\MT@letterspace\MT@letterspace@default + \def\MT@setup@kerning{% + \ifMT@kerning + \edef\MT@active@features{\MT@active@features,kn}% + \pdfprependkern\@ne + \pdfappendkern\@ne + \MT@info@nl{Adjustment of character kerning enabled}% + \MT@check@active@set{kn}% \else - \MT@ls@too@large\MT@letterspace + \let\MT@kerning\relax + \MT@info@nl{No adjustment of character kerning}% \fi - }% + } +%</pdftex-def> % \end{macrocode} +%\end{macro} +%\begin{macro}{\MT@error@doesnt@work} % If \pdftex\ is too old, we disable tracking, spacing and kerning, %\changes{v2.3a}{2008/02/16}{error messages if \pdftex\ is too old for extensions} % and throw an error message. +% We also switch the features off for \luatex\ and \xetex. % \begin{macrocode} -%<*package> -}{ - \MT@addto@setup{% +%<pdftex-def|luatex-def>}{ +%<*luatex-def> + \def\MT@setup@tracking{% \ifMT@tracking - \MT@error{Tracking only works with pdftex version 1.40\MessageBreak - or newer. Switching it off}{Upgrade pdftex.}% - \else - \MT@info@nl{No tracking (pdftex too old)}% - \fi - \ifMT@spacing - \MT@error{Adjustment of interword spacing only works with\MessageBreak - pdftex version 1.40 or newer. Switching it off}{Upgrade pdftex.}% + \MT@error{The tracking feature only works with luatex 0.62\MessageBreak + or newer. Switching it off}{Upgrade luatex.}% + \MT@trackingfalse + \MT@let@nc{MT@tracking}\relax \else - \MT@info@nl{No adjustment of interword spacing (pdftex too old)}% + \MT@info@nl{No adjustment of tracking (luatex too old)}% \fi - \ifMT@kerning - \MT@error{Character kerning only works with\MessageBreak - pdftex version 1.40 or newer. Switching it off}{Upgrade pdftex.}% + } +} +%</luatex-def> +%<*pdftex-def|xetex-def|luatex-def> + \def\MT@error@doesnt@work#1{% + \csname ifMT@#1\endcsname + \MT@error{The #1 feature only works with pdftex 1.40\MessageBreak + or newer. Switching it off} +%<pdftex-def> {Upgrade pdftex.}% +%<luatex-def|xetex-def> {Use pdftex instead.}% + \csname MT@#1false\endcsname + \MT@let@nc{MT@#1}\relax \else - \MT@info@nl{No adjustment of character kerning (pdftex too old)}% + \MT@info@nl{No adjustment of #1% +%<pdftex-def> \space(pdftex too old)% + }% \fi } +%<pdftex-def|xetex-def> \def\MT@setup@tracking{\MT@error@doesnt@work{tracking}} + \def\MT@setup@kerning {\MT@error@doesnt@work{kerning}} + \def\MT@setup@spacing {\MT@error@doesnt@work{spacing}} +%<pdftex-def>} +%</pdftex-def|xetex-def|luatex-def> +% \end{macrocode} +%\end{macro} +%\begin{macro}{\MT@setup@warntracking} +% \begin{macrocode} +%<letterspace>\MT@addto@setup +%<pdftex-def|luatex-def>\def\MT@setup@warntracking +% \end{macrocode} +%\begin{macro}{\MT@warn@tracking@DVI} +%\changes{v2.2}{2007/02/11}{warning when letterspacing in DVI mode} +% We issue a warning, when letterspacing in <DVI> mode, since it will probably +% not work. We also switch on protrusion if it isn't already, to compensate for +% the letterspacing kerns. +% \begin{macrocode} +%<*pdftex-def|luatex-def|letterspace> +{% + \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\MessageBreak + able to create the virtual fonts on the fly}% + \MT@glet\MT@warn@tracking@DVI\relax + }% + \else + \def\MT@warn@tracking@DVI{% + \ifnum\pdfprotrudechars<\@ne \global\pdfprotrudechars\@ne \fi + \MT@glet\MT@warn@tracking@DVI\relax + }% + \fi +% \end{macrocode} +%\end{macro} +% \begin{macrocode} + \ifnum\MT@letterspace=\m@ne + \let\MT@letterspace\MT@letterspace@default + \else + \MT@ls@too@large\MT@letterspace + \fi } +%</pdftex-def|luatex-def|letterspace> +%<xetex-def>\let\MT@setup@warntracking\relax % \end{macrocode} +%\end{macro} +%\begin{macro}{\MT@setup@noligatures} % \cs{DisableLigatures} is only admissible in the preamble, therefore we can % now disable the corresponding macro, if it was never called. %\changes{v2.0}{2006/12/14}{maybe disable \cs{MT@noligatures} after the preamble} % \begin{macrocode} -\MT@requires@pdftex5{ - \MT@addto@setup{% +%<*pdftex-def|luatex-def> +\def\MT@setup@noligatures{% +%<pdftex-def> \MT@requires@pdftex5{% \ifMT@noligatures \else \let\MT@noligatures\relax \fi - } -}\relax +%<pdftex-def> }\relax +} +%</pdftex-def|luatex-def> +%<xetex-def>\let\MT@setup@noligatures\relax % \end{macrocode} +%\end{macro} % Remove the leading comma in \cs{MT@active@features}, and set the % document switch to true. % \begin{macrocode} +%<*package> \MT@addto@setup{% \ifx\MT@active@features\@empty \else \edef\MT@active@features{\expandafter\@gobble\MT@active@features}% @@ -11034,48 +11943,26 @@ time will almost certainly lead to undesired results. Have your choice!}% % ^^A private mail, 2009/02/03 % \begin{macrocode} %</package> +%<*package|letterspace> %<plain>\MT@requires@latex1{ \AtBeginDocument{\MT@setup@ \MT@glet\MT@setup@\@empty} %<plain>}\relax +%</package|letterspace> % \end{macrocode} -% Warning if \cmd\nonfrenchspacing\ is active, since space factors will be -% ignored with \cmd\pdfadjustinterwordglue\,|>|\,0. Why 1500? Because some -% packages redefine \cmd\frenchspacing.\footnote{ -% Cf. the \texttt{c.t.t.} thread `\cmd\frenchspacing\ with <AMS> packages -% and babel', started by Philipp Lehman on 16~August 2005, -% <MID>:~\nolinkurl{ddtbaj$rob$1@online.de}} -% This has to be checked after the setup has taken place. There still will be a -% false warning if \pkg{babel} is loaded after \microtype\ (without the -% \opt{babel} option). +% Must come at the very, very end. % \begin{macrocode} -%<*package> -\MT@requires@pdftex6{ - \AtBeginDocument{% - \ifMT@spacing - \ifMT@babel \else - \ifnum\sfcode`\. > 1500 - \MT@ifstreq\MT@sp@context{nonfrench}\relax{% - \MT@warning@nl{% - \string\nonfrenchspacing\space is active. Adjustment of\MessageBreak - interword spacing will disable it. You might want\MessageBreak - to add `\@backslashchar\MT@MT context{spacing=nonfrench}'\MessageBreak - to your preamble}% - }% - \fi - \fi - \fi - } -}\relax -%</package> +%<package>\MT@ifdefined@c@T\MT@setup@spacing@check +%<package> {\AtBeginDocument{\MT@setup@spacing@check}} % \end{macrocode} % Restore catcodes. % \begin{macrocode} -\MT@restore@catcodes +%<package|letterspace>\MT@restore@catcodes % \end{macrocode} -% That was that. +% And here we end the |lua| file. % \begin{macrocode} -%</package|letterspace> +%<luafile>end % \end{macrocode} +% That was that. % % ^^A ------------------------------------------------------------------------- %\NoIndexing ^^A from now on, don't bother indexing @@ -11108,25 +11995,26 @@ time will almost certainly lead to undesired results. Have your choice!}% %\changes{v1.9}{2005/08/17}{add <T5> encoding to text sets} %\changes{v1.9d}{2006/04/20}{add <QX> encoding to text sets} %\changes{v2.3e}{2009/10/28}{add <T2A> encoding} +%\changes{v2.5}{2010/05/13}{add <EU1> and <EU2> encodings} % \begin{macrocode} \DeclareMicrotypeSet{allmath} - { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1,OML,OMS,U} } + { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,EU1,EU2,TS1,OML,OMS,U} } \DeclareMicrotypeSet{alltext} - { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1} } + { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1,EU1,EU2} } % \end{macrocode} %\changes{v1.9d}{2006/02/22}{\texttt{md*} instead of \texttt{m} series in basic sets} % \begin{macrocode} \DeclareMicrotypeSet{basicmath} - { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,OML,OMS}, + { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,EU1,EU2,OML,OMS}, family = {rm*,sf*}, series = {md*}, size = {normalsize,footnotesize,small,large} } \DeclareMicrotypeSet{basictext} - { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5}, + { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,EU1,EU2}, family = {rm*,sf*}, series = {md*}, size = {normalsize,footnotesize,small,large} @@ -11137,7 +12025,7 @@ time will almost certainly lead to undesired results. Have your choice!}% %\changes{v2.3e}{2009/06/01}{\texttt{sc*} instead of \texttt{sc} in \texttt{smallcaps} set} % \begin{macrocode} \DeclareMicrotypeSet{smallcaps} - { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1}, + { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1,EU1,EU2}, shape = {sc*} } @@ -11145,12 +12033,12 @@ time will almost certainly lead to undesired results. Have your choice!}% %\changes{v2.0}{2006/12/21}{add \texttt{footnotesize} and \texttt{scriptsize} sets} % \begin{macrocode} \DeclareMicrotypeSet{footnotesize} - { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1}, + { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1,EU1,EU2}, size = {-small} } \DeclareMicrotypeSet{scriptsize} - { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1}, + { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1,EU1,EU2}, size = {-footnotesize} } @@ -11189,18 +12077,36 @@ time will almost certainly lead to undesired results. Have your choice!}% % |g|~(small text), |h|~(shadow), |l|~(outline), |n|~(informal), % |p|~(ornaments), |r|~(roman), |s|~(sans serif), |t|~(typewriter). % I've omitted them since they seem hardly be used and/or they are actually -% more than a variant, \ie, they shouldn't share a file. +% more than just a variant, \ie, they shouldn't share a file. % %\bigskip\noindent -% Fonts that are `the same': The Latin Modern fonts, the virtual fonts from the +% Fonts that are `the same': +% The \pkg{fontspec} package will use |lmr| by default, whose EU1/2 encoding +% is declared in \file{mt-LatinModernRoman.cfg}. +%\changes{v2.5}{2012/08/23}{declare \texttt{lmr} as alias of \texttt{Latin Modern Roman} +% (OpenType version)} +% \begin{macrocode} +\ifMT@fontspec +\DeclareMicrotypeAlias{lmr} {Latin Modern Roman} +\else +\DeclareMicrotypeAlias{lmr} {cmr} % lmodern +\fi +% \end{macrocode} +% The Latin Modern fonts, the virtual fonts from the % \pkg{ae} and \pkg{zefonts}, and the \pkg{eco} and \pkg{hfoldsty} packages % (oldstyle numerals) all inherit the (basic) settings from Computer Modern % Roman. Some of them are in part overwritten later. %\changes{v1.2}{2004/10/03}{declare \texttt{cmor} as an alias of \texttt{cmr}} %\changes{v1.3}{2004/10/22}{declare \texttt{aer}, \texttt{zer} and \texttt{hfor} % as aliases of \texttt{cmr}} -% \begin{macrocode} -\DeclareMicrotypeAlias{lmr} {cmr} % lmodern +% We mustn't forget the Latin Modern math fonts. +%\changes{v2.5}{2012/07/17}{declare \texttt{lmsy} and \texttt{lmm} as aliases +% of \texttt{cmsy} resp. \texttt{cmm} +% (reported by \contributor Jonas Hogstrom <hjb981\at gmail.com>)} +% ^^A http://tex.stackexchange.com/questions/63558/how-to-get-microtype-to-work-with-mathematical-minus-sign-and-package-lmodern +% \begin{macrocode} +\DeclareMicrotypeAlias{lmsy}{cmsy} +\DeclareMicrotypeAlias{lmm} {cmm} \DeclareMicrotypeAlias{aer} {cmr} % ae \DeclareMicrotypeAlias{zer} {cmr} % zefonts \DeclareMicrotypeAlias{cmor}{cmr} % eco @@ -11225,6 +12131,16 @@ time will almost certainly lead to undesired results. Have your choice!}% \DeclareMicrotypeAlias{txr} {ptm} % txfonts \DeclareMicrotypeAlias{qtm} {ptm} % TeX Gyre Termes (formerly: qfonts/QuasiTimes) % \end{macrocode} +% The OpenType versions: +% +%\changes{v2.5}{2012/03/29}{declare TeX Gyre Pagella, Asana Math, Palatino <LT> Std, and Palatino +% as aliases of \texttt{Palatino Linotype} (OpenType version)} +% \begin{macrocode} +\DeclareMicrotypeAlias{TeX Gyre Pagella}{Palatino Linotype} +\DeclareMicrotypeAlias{Palatino LT Std} {Palatino Linotype} +\DeclareMicrotypeAlias{Palatino} {Palatino Linotype} +\DeclareMicrotypeAlias{Asana Math} {Palatino Linotype} +% \end{macrocode} %\todo{check Times variants} % More Times variants, to be checked: |pns|, |mns| (TimesNewRomanPS); |mnt| % (Times\-NewRomanMT, TimesNRSevenMT), |mtm| (TimesSmallTextMT); |pte| @@ -11252,6 +12168,16 @@ time will almost certainly lead to undesired results. Have your choice!}% \DeclareMicrotypeAlias{mdbch}{bch} % mathdesign/Charter \DeclareMicrotypeAlias{mdugm}{ugm} % mathdesign/URW Garamond % \end{macrocode} +% The \pkg{garamondx} package, an extension of <URW> Garamond, providing +% small caps and oldstyle figures. +%\changes{v2.5}{2013/02/20}{declare \texttt{zgmx} etc. (\pkg{garamondx}) +% as aliases of <URW> Garamond} +% \begin{macrocode} +\DeclareMicrotypeAlias{zgmx}{ugm} % garamondx +\DeclareMicrotypeAlias{zgmj}{ugm} % " +\DeclareMicrotypeAlias{zgmI}{ugm} % " +\DeclareMicrotypeAlias{zgmq}{ugm} % " +% \end{macrocode} % <URW> Letter Gothic is similar enough to Bitstream Letter Gothic to share the % configuration. % \begin{macrocode} @@ -11564,6 +12490,51 @@ time will almost certainly lead to undesired results. Have your choice!}% y = {\`y,\'y,\~y,\h y,\d y} } +% \end{macrocode} +%\subsubsection{<EU1>, <EU2>} +%\changes{v2.5}{2010/11/05}{add rudimentary list for <EU1> and <EU2>} ^^A (beta:03) +% The <EU1> and <EU2> encodings are not well-defined as they don't +% contain a fixed number of glyphs, all of which must be present. +% OpenType fonts may contain thousands of glyphs, but we only define those +% that should be present in every font (basically <T1>). This inheritance list +% should be overridden by font-specific ones. +% \begin{macrocode} +\DeclareCharacterInheritance + { encoding = {EU1,EU2} } + { A = {\`A,\'A,\^A,\~A,\"A,\r A,\k A,\u A}, + a = {\`a,\'a,\^a,\~a,\"a,\r a,\k a,\u a}, + C = {\'C,\c C,\v C}, + c = {\'c,\c c,\v c}, + D = {\v D,\DH}, + d = {\v d,\dj}, + E = {\`E,\'E,\^E,\"E,\k E,\v E}, + e = {\`e,\'e,\^e,\"e,\k e,\v e}, +% f = {/f_f}, % sometimes /f_f, sometimes /ff + G = {\u G}, + g = {\u g}, + I = {\`I,\'I,\^I,\"I,\.I}, + i = {\`i,\'i,\^i,\"i,\i}, +% j = {\j}, + L = {\L,\'L,\v L}, + l = {\l,\'l,\v l}, + N = {\'N,\~N,\v N}, + n = {\'n,\~n,\v n}, + O = {\O,\`O,\'O,\^O,\~O,\"O,\H O}, + o = {\o,\`o,\'o,\^o,\~o,\"o,\H o}, + R = {\'R,\v R}, + r = {\'r,\v r}, + S = {\'S,\c S,\v S}, % \SS + s = {\'s,\c s,\v s}, + T = {\c T,\v T}, + t = {\c t,\v t}, + U = {\`U,\'U,\^U,\"U,\H U,\r U}, + u = {\`u,\'u,\^u,\"u,\H u,\r u}, + Y = {\'Y,\"Y}, + y = {\'y,\"y}, + Z = {\'Z,\.Z,\v Z}, + z = {\'z,\.z,\v z} + } + %</m-t> % \end{macrocode} % @@ -11578,21 +12549,16 @@ time will almost certainly lead to undesired results. Have your choice!}% %</zpeu> %<*mvs> -\DeclareCharacterInheritance - { encoding = OT1, - family = mvs } - { 164 = {099,100,101} } % \EURhv,\EURcr,\EURtm - % \end{macrocode} % Since 2006/05/11 (that is, one week after I've added these settings, after the -% package had been dormant for six years), \pkg{marvosym}'s encoding is +% package had been dormant for six years!), \pkg{marvosym}'s encoding is % (correctly) <U> instead of <OT1>. %\changes{v1.9e}{2006/07/05}{adapt to \pkg{marvosym}'s changed encoding} % \begin{macrocode} \DeclareCharacterInheritance - { encoding = U, + { encoding = {OT1,U}, family = mvs } - { 164 = {099,100,101} } + { 164 = {099,100,101} } % \EURhv,\EURcr,\EURtm %</mvs> % \end{macrocode} @@ -11601,6 +12567,7 @@ time will almost certainly lead to undesired results. Have your choice!}% %\GeneralChanges{Tracking} % %\changes{v2.2}{2007/02/23}{add ligatures that are to be disabled} +%\changes{v2.5}{2011/09/07}{add <EU2> encoding to default list} ^^A (beta:09) % By default, we only disable the `f*' ligatures, for those fonts that have % any. Thus, ligatures and especially kerning for all other characters will be % retained. @@ -11612,7 +12579,7 @@ time will almost certainly lead to undesired results. Have your choice!}% \SetTracking [ name = default, no ligatures = {f} ] - { encoding = {OT1,T1,T2A,LY1,OT4,QX} } + { encoding = {OT1,T1,T2A,LY1,OT4,QX,EU2} } { } % \end{macrocode} @@ -12109,6 +13076,9 @@ time will almost certainly lead to undesired results. Have your choice!}% % <T1> and <LY1> encodings contain some more characters. The default list % will be loaded first. %\changes{v1.9a}{2005/11/07}{fix: remove `\texttt{\_}' from <OT1> encoding} +% For \xetex\ (<EU1>) and \luatex\ (<EU2>) we simply use the <T1> list as +% default (for now). +%\changes{v2.5}{2010/11/05}{add default lists for <EU1> and <EU2>} ^^A (beta:03) % \begin{macrocode} \SetProtrusion %<m-t> [ name = T1-default, @@ -12129,7 +13099,7 @@ time will almost certainly lead to undesired results. Have your choice!}% %<ppl> load = ppl-default ] %<ptm> load = ptm-default ] %<ugm> load = ugm-default ] -%<m-t> { encoding = {T1,LY1} } +%<m-t> { encoding = {T1,LY1,EU1,EU2} } %<bch|cmr|pad|pmn|ppl> { encoding = {T1,LY1}, %<blg|ptm|ugm> { encoding = {T1}, %<bch> family = bch } @@ -12437,12 +13407,22 @@ time will almost certainly lead to undesired results. Have your choice!}% % %\subsubsection{Italics} % -% To find default settings for italic is difficult, since the character shapes -% and their behaviour at the beginning or end of line may be wildly different -% for different fonts. Therefore, we leave the letters away, and only set up the -% punctuation characters. %\changes{v1.4b}{2004/11/22}{slanted like italics} %\changes{v1.6}{2004/12/26}{add italic uppercase Greek letters} +% +% To find default settings for italic is difficult, since the character shapes +% and their behaviour at the beginning or end of line may be wildly different +% for different fonts. In the generic settings we therefore omit the letters, +% and only set up the punctuation characters. +% +% The italic glyphs of Computer Modern Roman feature a lot of side bearing, +% therefore almost all of them have to protrude.\footnote{Settings +% contributed by \contributor Hendrik Vogt <hendrik.vogt\at tu-dresden.de>.} +%\changes{v2.5}{2011/04/09}{improvements to Computer Modern Roman italics +% (contributed by \contributor Hendrik Vogt <hendrik.vogt\at tu-dresden.de>)} +% ^^A private mail, 2011/02/24 +% ^^A (beta:07) +% % \begin{macrocode} \SetProtrusion %<m-t> [ name = OT1-it ] @@ -12467,119 +13447,173 @@ time will almost certainly lead to undesired results. Have your choice!}% %<blg|ugm> shape = it } %<cmr|pmn> { } { -%<cmr|ptm> A = {100,50}, +%<cmr> A = {100,100}, +%<ptm> A = {100,50}, %<pad|pmn> A = {50, }, %<ugm> A = { ,150}, %<ppl> A = {50,50}, %<ptm> \AE = {100, }, %<pad|ppl> \AE = {50, }, -%<cmr|pad|ppl|ptm> B = {50, }, +%<cmr> B = {83,-40}, +%<pad|ppl|ptm> B = {50, }, %<pmn> B = {20,-50}, %<bch|ppl|ptm|ugm> C = {50, }, -%<cmr|pad> C = {100, }, +%<cmr> C = {165,-75}, +%<pad> C = {100, }, %<pmn> C = {50,-50}, -%<cmr|pad|ppl|ptm> D = {50,50}, +%<cmr> D = {75, -28}, +%<pad|ppl|ptm> D = {50,50}, %<pmn> D = {20, }, -%<cmr|pad|ppl|ptm> E = {50, }, +%<cmr> E = {80,-55}, +%<pad|ppl|ptm> E = {50, }, %<pmn> E = {20,-50}, -%<cmr|pad|ptm> F = {100, }, +%<cmr> F = {85,-80}, +%<pad|ptm> F = {100, }, %<pmn> F = {10, }, %<ppl> F = {50, }, %<bch|ppl|ptm|ugm> G = {50, }, -%<cmr|pad> G = {100, }, +%<cmr> G = {153,-15}, +%<pad> G = {100, }, %<pmn> G = {50,-50}, -%<cmr|pad|ppl|ptm> H = {50, }, -%<cmr|pad|ptm> I = {50, }, +%<cmr> H = {73,-60}, +%<pad|ppl|ptm> H = {50, }, +%<cmr> I = {140,-120}, +%<pad|ptm> I = {50, }, %<pmn> I = {20,-50}, -%<cmr|ptm> J = {100, }, +%<cmr> J = {135,-80}, %<pad> J = {50, }, %<pmn> J = {20, }, -%<cmr|pad|ppl|ptm> K = {50, }, +%<ptm> J = {100, }, +%<cmr> K = {70,-30}, +%<pad|ppl|ptm> K = {50, }, %<pmn> K = {20, }, -%<cmr|pad|ppl|ptm> L = {50, }, +%<cmr> L = {87, 40}, +%<pad|ppl|ptm> L = {50, }, %<pmn> L = {20,50}, %<ugm> L = { ,100}, -%<cmr|ptm> M = {50, }, +%<cmr> M = {67,-45}, %<pmn> M = { ,-30}, -%<cmr|ptm> N = {50, }, +%<ptm> M = {50, }, +%<cmr> N = {75,-55}, %<pmn> N = { ,-30}, +%<ptm> N = {50, }, %<bch|pmn|ppl|ptm> O = {50, }, -%<cmr|pad> O = {100, }, +%<cmr> O = {150,-30}, +%<pad> O = {100, }, %<ugm> O = {70,50}, %<ppl|ptm> \OE = {50, }, %<pad> \OE = {100, }, -%<cmr|pad|ppl|ptm> P = {50, }, +%<cmr> P = {82,-50}, +%<pad|ppl|ptm> P = {50, }, %<pmn> P = {20,-50}, %<bch|pmn|ppl|ptm> Q = {50, }, -%<cmr|pad> Q = {100, }, +%<cmr> Q = {150,-30}, +%<pad> Q = {100, }, %<ugm> Q = {70,50}, -%<cmr|pad|ppl|ptm> R = {50, }, +%<cmr> R = {75, 15}, +%<pad|ppl|ptm> R = {50, }, %<pmn> R = {20, }, -%<bch|cmr|pad|ppl|ptm> S = {50, }, +%<bch|pad|ppl|ptm> S = {50, }, +%<cmr> S = {90,-65}, %<pmn> S = {20,-30}, -%<bch|cmr|pad|ppl|ptm> $ = {50, }, +%<bch|pad|ppl|ptm> $ = {50, }, +%<cmr> $ = {100,-20}, %<pmn> $ = {20,-30}, %<bch|pmn|ugm> T = {70, }, -%<cmr|pad|ppl|ptm> T = {100, }, -%<cmr|pad|ppl|ptm> U = {50, }, +%<cmr> T = {220,-85}, +%<pad|ppl|ptm> T = {100, }, +%<cmr> U = {230,-55}, +%<pad|ppl|ptm> U = {50, }, %<pmn> U = {50,-50}, -%<cmr|pad|pmn|ugm> V = {100, }, +%<cmr> V = {260,-60}, +%<pad|pmn|ugm> V = {100, }, %<ppl|ptm> V = {100,50}, -%<cmr|pad|pmn|ugm> W = {100, }, +%<cmr> W = {185,-55}, +%<pad|pmn|ugm> W = {100, }, %<ppl> W = {50, }, %<ptm> W = {100,50}, -%<cmr|ppl|ptm> X = {50, }, -%<cmr|ptm> Y = {100, }, +%<cmr> X = {70,-30}, +%<ppl|ptm> X = {50, }, +%<cmr> Y = {250,-60}, %<pmn> Y = {50, }, %<ppl> Y = {100,50}, +%<ptm> Y = {100, }, +%<cmr> Z = {90,-60}, %<pmn> Z = { ,-50}, +%<cmr> a = {150,-10}, +%<cmr> b = {170, }, +%<cmr> c = {173,-10}, +%<cmr> d = {150,-55}, %<pmn> d = { ,-50}, +%<cmr> e = {180, }, +%<cmr> f = { ,-250}, %<pad|pmn> f = { ,-100}, +%<cmr> g = {150,-10}, +%<cmr> h = {100, }, +%<cmr> i = {210, }, %<pmn> i = { ,-30}, +%<cmr> j = { ,-40}, %<pmn> j = { ,-30}, +%<cmr> k = {110,-50}, +%<cmr> l = {240,-110}, %<pmn> l = { ,-100}, +%<cmr> m = {80, }, +%<cmr> n = {115, }, %<bch> o = {50,50}, +%<cmr> o = {155, }, %<bch> p = { ,50}, %<pmn> p = {-50, }, %<bch> q = {50, }, +%<cmr> q = {170,-40}, +%<cmr> r = {155,-40}, %<pmn> r = { ,50}, +%<cmr> s = {130, }, %<bch> t = { ,50}, +%<cmr> t = {230,-10}, +%<cmr> u = {120, }, +%<cmr> v = {140,-25}, %<pmn|ugm> v = {50, }, %<bch> w = { ,50}, +%<cmr> w = {98,-20}, %<pmn|ugm> w = {50, }, +%<cmr> x = {65,-40}, %<bch> y = { ,50}, -%<cmr> 0 = {100, }, +%<cmr> y = {130,-20}, +%<cmr> z = {110,-80}, +%<cmr> 0 = {170,-85}, %<bch|ptm> 1 = {150,100}, -%<cmr> 1 = {200,50}, +%<cmr> 1 = {230,110}, %<pad> 1 = {150, }, %<pmn> 1 = {50, }, %<ppl> 1 = {100, }, %<ugm> 1 = {150,150}, -%<cmr> 2 = {100,-100}, +%<cmr> 2 = {130,-70}, %<pad|ppl|ptm> 2 = {50, }, %<pmn> 2 = {-50, }, %<bch> 3 = {50, }, -%<cmr> 3 = {100,-100}, +%<cmr> 3 = {140,-70}, %<pmn> 3 = {-100, }, %<ptm> 3 = {100,50}, %<bch> 4 = {100, }, -%<cmr|pad> 4 = {150, }, +%<cmr> 4 = {130,80}, +%<pad> 4 = {150, }, %<ppl|ptm> 4 = {50, }, -%<cmr> 5 = {100, }, +%<cmr> 5 = {160, }, %<ptm> 5 = {50, }, %<bch> 6 = {50, }, -%<cmr> 6 = {100, }, +%<cmr> 6 = {175,-30}, %<bch|pad|ptm> 7 = {100, }, -%<cmr> 7 = {200,-150}, +%<cmr> 7 = {250,-150}, %<pmn> 7 = {20, }, %<ppl> 7 = {50, }, -%<cmr> 8 = {50,-50}, -%<cmr> 9 = {100,-100}, +%<cmr> 8 = {130,-40}, +%<cmr> 9 = {155,-80}, %<m-t|cmr|pad|pmn|ppl> . = { ,500}, %<blg> . = {400,600}, %<bch|ptm|ugm> . = { ,700}, %<blg> {,}= {300,500}, -%<m-t|cmr|pad|pmn|ppl> {,}= { ,500}, +%<m-t|pad|pmn|ppl> {,}= { ,500}, +%<cmr> {,}= { ,450}, %<bch|ugm> {,}= { ,600}, %<ptm> {,}= { ,700}, %<m-t|cmr|pad|ppl> : = { ,300}, @@ -12597,29 +13631,33 @@ time will almost certainly lead to undesired results. Have your choice!}% %<pmn> " = {400,200}, %<m-t|pad|pmn|ppl|ptm> & = {50,50}, %<bch> & = { ,80}, -%<cmr> & = {100,50}, +%<cmr> & = {130,30}, %<ugm> & = {50,100}, -%<m-t|cmr|pad|pmn> \% = {100, }, +%<m-t|pad|pmn> \% = {100, }, +%<cmr> \% = {180,50}, %<bch> \% = {50,50}, %<ppl|ptm> \% = {100,100}, %<ugm> \% = {100,50}, %<m-t|pmn|ppl> * = {200,200}, %<bch> * = {300,200}, -%<cmr> * = {400,100}, +%<cmr> * = {380,20}, %<pad> * = {500,100}, %<ptm|ugm> * = {400,200}, -%<m-t|cmr|pmn|ppl> + = {150,200}, +%<m-t|pmn|ppl> + = {150,200}, +%<cmr> + = {180,200}, %<bch|ugm> + = {250,250}, %<pad|ptm> + = {250,200}, %<m-t|pad|pmn|ppl> @ = {50,50}, %<bch> @ = {80,50}, -%<cmr> @ = {200,50}, +%<cmr> @ = {180,10}, %<ptm> @ = {150,150}, %<m-t|bch|ugm> ~ = {150,150}, %<cmr|pad|pmn|ppl|ptm> ~ = {200,150}, %<ugm> {=}= {200,200}, -%<!blg> ( = {200, }, ) = { ,200}, -%<m-t|cmr|pad|ppl|ptm|ugm> / = {100,200}, +%<m-t|bch|pad|pmn|ppl|ptm|ugm> ( = {200, }, ) = { ,200}, +%<cmr> ( = {300, }, ) = { ,70}, +%<m-t|pad|ppl|ptm|ugm> / = {100,200}, +%<cmr> / = {100,100}, %<bch> / = { ,150}, %<pmn> / = {100,150}, %<m-t> - = {300,300}, @@ -12632,16 +13670,17 @@ time will almost certainly lead to undesired results. Have your choice!}% %<blg> _ = {0,300}, %<m-t|pmn> \textendash = {200,200}, \textemdash = {150,150}, %<bch> \textendash = {200,300}, \textemdash = {150,200}, -%<cmr> \textendash = {500,300}, \textemdash = {400,200}, +%<cmr> \textendash = {500,300}, \textemdash = {400,170}, %<pad|ppl|ptm|ugm> \textendash = {300,300}, \textemdash = {200,200}, %<m-t|bch|pmn|ugm> \textquoteleft = {400,200}, \textquoteright = {400,200}, %<blg> \textquoteleft = {400,400}, \textquoteright = {400,400}, -%<cmr|pad> \textquoteleft = {800,200}, \textquoteright = {800,200}, +%<cmr> \textquoteleft = {800,200}, \textquoteright = {800,-20}, +%<pad> \textquoteleft = {800,200}, \textquoteright = {800,200}, %<ppl> \textquoteleft = {700,400}, \textquoteright = {700,400}, %<ptm> \textquoteleft = {800,500}, \textquoteright = {800,500}, %<m-t|bch|pmn> \textquotedblleft = {400,200}, \textquotedblright = {400,200} %<blg> \textquotedblright = {300,300} -%<cmr> \textquotedblleft = {700,100}, \textquotedblright = {500,300} +%<cmr> \textquotedblleft = {540,100}, \textquotedblright = {500,100} %<pad> \textquotedblleft = {700,200}, \textquotedblright = {700,200} %<ppl> \textquotedblleft = {500,300}, \textquotedblright = {500,300} %<ptm> \textquotedblleft = {700,400}, \textquotedblright = {700,400} @@ -14908,7 +15947,7 @@ time will almost certainly lead to undesired results. Have your choice!}% % \subsection{Additional kerning} %\GeneralChanges{Kerning} % -% Default unit is 1\,em. +% Default unit is \EM{1}. % % \begin{macrocode} %%% ----------------------------------------------------------------------- @@ -14991,6 +16030,15 @@ time will almost certainly lead to undesired results. Have your choice!}% %</config> % \end{macrocode} %^^A\changes{v2.0}{2006/12/28}{remove \texttt{letterspacing} settings} +% +%^^A \includepdf[pages=-, +%^^A addtotoc={1,section,1,OpenType configuration files,section.\thesection}] +%^^A {microtype-utf.pdf} +%\section{OpenType font configuration files} +% The configuration files for OpenType fonts are not included in the +% documentation. Please refer to the respective |mt-|\meta{font}|.cfg| +% files in the |microtype| \TeX\ input directory. +% %\GeneralChanges* % %\section{Auxiliary file for micro fine tuning} @@ -15128,7 +16176,7 @@ normal, and shrunk by 5\%: % Grave accent \` Left brace \{ Vertical bar \| % Right brace \} Tilde \~} % -% \CheckSum{9578} +% \CheckSum{10217} % % \Finale % diff --git a/Master/texmf-dist/source/latex/microtype/microtype.ins b/Master/texmf-dist/source/latex/microtype/microtype.ins index b35d8733494..34fe8baa33f 100644 --- a/Master/texmf-dist/source/latex/microtype/microtype.ins +++ b/Master/texmf-dist/source/latex/microtype/microtype.ins @@ -1,5 +1,5 @@ % !Mode:: "TeX:STY:UK" -% $Id: microtype.ins,v 1.20 2010-01-10 02:00:43+01 schlicht Exp schlicht $ +% $Id: microtype.ins,v 1.22 2013-03-13 05:07:23+01 schlicht Exp schlicht $ % ------------------------------------------------------------------------ \input docstrip \keepsilent @@ -10,8 +10,8 @@ ------------------------------------------------------------------------ The `microtype' package - An interface to the micro-typographic extensions of pdfTeX - Copyright (c) 2004--2010 R Schlicht <w.m.l@gmx.net> + Subliminal refinements towards typographical perfection + Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c of this license or (at @@ -22,7 +22,8 @@ of all distributions of LaTeX version 2005/12/01 or later. This work has the LPPL maintenance status `author-maintained'. This work consists of the files microtype.dtx and microtype.ins and the -derived files microtype.sty, microtype.lua and letterspace.sty. +derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +microtype-luatex.def, microtype.lua and letterspace.sty. % Modified versions of the configuration files (*.cfg) may be distributed % provided that: (1) the original copyright statement is not removed, and @@ -45,6 +46,9 @@ derived files microtype.sty, microtype.lua and letterspace.sty. commands. Do not use this package together with the `microtype' package. Please refer to section 7 of the `microtype' documentation. \endpreamble +\declarepreamble\defpreamble + This file contains enginge-specific definitions. +\endpreamble \declarepreamble\luapreamble This file contains auxiliary lua functions. It was contributed by Elie Roux <elie.roux{at}telecom-bretagne.eu>. @@ -97,7 +101,11 @@ derived files microtype.sty, microtype.lua and letterspace.sty. \usedir{tex/latex/microtype} \let\MetaPrefix\DoubleperCent \generate{ - \makefile{microtype.sty}{package,lua} + \makefile{microtype.sty}{package} + \usepreamble\defpreamble + \makefile{microtype-pdftex.def}{pdftex-def} + \makefile{microtype-luatex.def}{luatex-def} + \makefile{microtype-xetex.def} {xetex-def} \usepreamble\lsppreamble \makefile{letterspace.sty}{letterspace,plain} \usepreamble\cfgpreamble diff --git a/Master/texmf-dist/tex/latex/microtype/letterspace.sty b/Master/texmf-dist/tex/latex/microtype/letterspace.sty index 0f49716a828..3fc1de4ec15 100644 --- a/Master/texmf-dist/tex/latex/microtype/letterspace.sty +++ b/Master/texmf-dist/tex/latex/microtype/letterspace.sty @@ -9,8 +9,8 @@ %% ------------------------------------------------------------------------ %% %% The `microtype' package -%% An interface to the micro-typographic extensions of pdfTeX -%% Copyright (c) 2004--2010 R Schlicht <w.m.l@gmx.net> +%% Subliminal refinements towards typographical perfection +%% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> %% %% This work may be distributed and/or modified under the conditions of the %% LaTeX Project Public License, either version 1.3c of this license or (at @@ -21,7 +21,8 @@ %% This work has the LPPL maintenance status `author-maintained'. %% %% This work consists of the files microtype.dtx and microtype.ins and the -%% derived files microtype.sty, microtype.lua and letterspace.sty. +%% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +%% microtype-luatex.def, microtype.lua and letterspace.sty. %% %% ------------------------------------------------------------------------ %% This is a stand-alone version that only provides the letterspacing @@ -32,7 +33,7 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesPackage {letterspace} - [2010/01/10 v2.4 + [2013/03/13 v2.5 Robust letterspacing (RS)] \def\MT@MT @@ -86,56 +87,59 @@ \def\MT@requires@latex#1{% \ifnum\MT@plain<#1 \expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi } -\def\MT@pdftex@no{0} +\ifcase 0% + \ifx\eTeXversion\@undefined 1\else + \ifx\eTeXversion\relax 1\else + \ifcase\eTeXversion 1\fi + \fi + \fi +\else + \catcode`\^^Q=9 \catcode`\^^X=14 +\fi +\def\MT@clear@options{% + \MT@requires@latex1{% + \AtEndOfPackage{\let\@unprocessedoptions\relax\MT@restore@catcodes}% + \let\CurrentOption\@empty + }\relax +} \ifx\normalpdftexversion\@undefined \else \let\pdftexversion \normalpdftexversion \let\pdftexrevision\normalpdftexrevision \let\pdfoutput \normalpdfoutput \fi +\let\MT@engine\relax +\def\MT@engine@tooold{0} \ifx\pdftexversion\@undefined \else \ifx\pdftexversion\relax \else - \def\MT@pdftex@no{7} - \ifnum\pdftexversion < 140 - \def\MT@pdftex@no{5} + \def\MT@engine{pdf} + \let\MT@pdf@or@lua\@firstoftwo + \ifnum\pdftexversion > 139 \def\MT@engine@tooold{1}\fi + \ifx\directlua\@undefined \else + \ifx\directlua\relax \else + \def\MT@engine{lua} + \let\MT@pdf@or@lua\@secondoftwo + \ifnum\luatexversion < 62 \def\MT@engine@tooold{0}\fi + \fi \fi \fi \fi -\def\MT@clear@options{% - \MT@requires@latex1{% - \AtEndOfPackage{\let\@unprocessedoptions\relax}% - \let\CurrentOption\@empty - }\relax -} -\ifnum\MT@pdftex@no < - 6 +\ifnum + \MT@engine@tooold=\z@ \MT@warning@nl{You - \ifcase\MT@pdftex@no - don't seem to be using pdftex.\MessageBreak - `\MT@MT' only works with pdftex.\MessageBreak - Try running `pdflatex' instead of - `\ifx\XeTeXversion\@undefined\else xe\fi latex'% + \ifx\MT@engine\relax + don't seem to be using pdftex or luatex.\MessageBreak + Try running `pdftex' or `luatex' instead of\MessageBreak + `\ifx\XeTeXversion\@undefined\else xe\fi tex'% \else - are using a pdftex version older than - 1.40% + are using a \MT@engine tex version older than + \MT@pdf@or@lua{1.40}{0.62}% .\MessageBreak `\MT@MT' does not work with this version.\MessageBreak - Please install a newer version of pdftex% + Please install a newer version of \MT@engine tex% \fi - } - \MT@clear@options\MT@restore@catcodes + .\MessageBreak I will quit now} + \MT@clear@options \endinput\fi -\ifx\directlua\@undefined \else - \ifx\directlua\relax \else - \MT@warning@nl - {`\MT@MT' - doesn't currently work with luatex.% - \MessageBreak - Bye bye% - } - \MT@clear@options\MT@restore@catcodes - \expandafter\expandafter\expandafter\endinput - \fi -\fi \RequirePackage{keyval}[1997/11/10] \def\MT@tr@min{-\@m} \let\MT@tr@max\@m @@ -163,13 +167,23 @@ \fi } \endgroup - \def\MT@ifint#1{% - \ifcase\pdfmatch{^-*[0-9]+ *$}{#1}\relax - \expandafter\@secondoftwo - \else - \expandafter\@firstoftwo - \fi - } +\MT@pdf@or@lua{ +\def\MT@ifint#1{% + \ifcase\pdfmatch{^-*[0-9]+ *$}{#1}\relax + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi +} +}{ +\def\MT@ifint#1{% + \if!\ifnum9<1#1!\else?\fi + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +} \def\MT@map@clist@n#1#2{% \ifx\@empty#1\else \def\MT@clist@function##1{#2}% @@ -197,7 +211,9 @@ \advance\@tempcnta \@ne \ifnum\@tempcnta < #2\MT@repeat } -\def\MT@do@font{\MT@while@num\z@\@cclvi} +\def\MT@do@font{\MT@while@num\z@ + \@cclvi +} \MT@requires@latex1{ \let\MT@setup@\@empty \def\MT@addto@setup{\g@addto@macro\MT@setup@} @@ -260,6 +276,7 @@ \def\MT@set@lsfont{\MT@exp@two@c\let\font@name\MT@lsfont} \DeclareRobustCommand\lsstyle{% \not@math@alphabet\lsstyle\textls + \let\glb@currsize\@empty \let\MT@tracking\MT@set@tr@codes \selectfont } @@ -321,6 +338,7 @@ \MT@ifempty{#1}% {\let\MT@letterspace@\@undefined}% {\KV@@sp@def\MT@letterspace@{#1}% + \edef\MT@letterspace@{\number\MT@letterspace@}% \MT@ls@too@large\MT@letterspace@}% \MT@ls@adjust@ } @@ -421,28 +439,29 @@ \def\MT@getkey#1=#2\@nil{#1} \MT@ProcessOptionsWithKV{MT} }\relax - \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\MessageBreak - able to create the virtual fonts on the fly}% - \MT@glet\MT@warn@tracking@DVI\relax - }% - \else - \def\MT@warn@tracking@DVI{% - \ifnum\pdfprotrudechars<\@ne \global\pdfprotrudechars\@ne \fi - \MT@glet\MT@warn@tracking@DVI\relax - }% - \fi - \ifnum\MT@letterspace=\m@ne - \let\MT@letterspace\MT@letterspace@default - \else - \MT@ls@too@large\MT@letterspace - \fi - }% +\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\MessageBreak + able to create the virtual fonts on the fly}% + \MT@glet\MT@warn@tracking@DVI\relax + }% + \else + \def\MT@warn@tracking@DVI{% + \ifnum\pdfprotrudechars<\@ne \global\pdfprotrudechars\@ne \fi + \MT@glet\MT@warn@tracking@DVI\relax + }% + \fi + \ifnum\MT@letterspace=\m@ne + \let\MT@letterspace\MT@letterspace@default + \else + \MT@ls@too@large\MT@letterspace + \fi +} \MT@requires@latex1{ \AtBeginDocument{\MT@setup@ \MT@glet\MT@setup@\@empty} }\relax diff --git a/Master/texmf-dist/tex/latex/microtype/microtype-luatex.def b/Master/texmf-dist/tex/latex/microtype/microtype-luatex.def new file mode 100644 index 00000000000..c560e4fe160 --- /dev/null +++ b/Master/texmf-dist/tex/latex/microtype/microtype-luatex.def @@ -0,0 +1,1162 @@ +%% +%% This is file `microtype-luatex.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% microtype.dtx (with options: `luatex-def') +%% +%% ------------------------------------------------------------------------ +%% +%% The `microtype' package +%% Subliminal refinements towards typographical perfection +%% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> +%% +%% This work may be distributed and/or modified under the conditions of the +%% LaTeX Project Public License, either version 1.3c of this license or (at +%% your option) any later version. The latest version of this license is in: +%% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part +%% of all distributions of LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `author-maintained'. +%% +%% This work consists of the files microtype.dtx and microtype.ins and the +%% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +%% microtype-luatex.def, microtype.lua and letterspace.sty. +%% +%% ------------------------------------------------------------------------ +%% This file contains enginge-specific definitions. +%% ------------------------------------------------------------------------ +%% +\ProvidesFile + {microtype-luatex.def} + [2013/03/13 v2.5 + Definitions specific to + luatex + (RS)] +\def\MT@lua{\directlua} +\def\MT@luatex@no{3} +\ifnum\luatexversion<62 + \def\MT@luatex@no{2} + \ifnum\luatexversion<36 + \def\MT@lua{\directlua0} + \def\MT@luatex@no{1} + \fi +\fi +\def + \MT@requires@luatex% + #1{\ifnum + \MT@luatex@no + <#1 \expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi} +\MT@lua{ + if (luatextra and luatextra.use_module) then + luatextra.use_module("microtype") + else + dofile(kpse.find_file("microtype.lua")) + end} +\def\MT@ifint#1{\csname\MT@lua{microtype.if_int([[#1]])}\endcsname} +\def\MT@ifdimen#1{\csname\MT@lua{microtype.if_dimen([[#1]])}\endcsname} +\def\MT@ifstreq#1#2{\csname\MT@lua{microtype.if_str_eq([[#1]],[[#2]])}\endcsname} +\def\MT@do@font{\MT@while@num\z@ + \MT@max@slot +} + \def\MT@ledmac@setup{% + \ifMT@protrusion + \MT@ifdefined@c@TF\l@dunhbox@line{% + \MT@info@nl{Patching ledmac to enable character protrusion}% + \newdimen\MT@led@kern + \let\MT@led@unhbox@line\l@dunhbox@line + \renewcommand*{\l@dunhbox@line}[1]{% + \ifhbox##1% + \MT@led@kern=\rightmarginkern##1% + \kern\leftmarginkern##1% + \MT@led@unhbox@line##1% + \kern\MT@led@kern + \fi + }% + }{% + \MT@warning@nl{% + Character protrusion in paragraphs with line\MessageBreak + numbering will only work if you update ledmac}% + }% + \fi + } +\def\MT@setupfont{\MT@setupfont@hook} +\g@addto@macro\MT@setupfont\MT@copy@font +\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 +} +\MT@requires@luatex3 + {\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 +} +\g@addto@macro\MT@setupfont\MT@noligatures +\g@addto@macro\MT@setupfont{% + \MT@register@font + \fi +} +\let\MT@copy@font\relax +\def\MT@copy@font@{% + \xdef\MT@font@copy{\csname\MT@@font/\MT@pr@context/\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{% + \MT@exp@cs\ifx{MT@\@nameuse{MT@abbr@##1}}\relax\else + \def\@tempa{##1}% + \MT@exp@cs\MT@map@tlist@c{MT@##1@doc@contexts}\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{% + \MT@exp@cs\ifx{MT@\@tempa @#1font@list}\relax\else + \expandafter\MT@exp@one@n\expandafter\MT@rem@from@clist\expandafter + \MT@font \csname MT@\@tempa @#1font@list\endcsname + \fi +} +\def\MT@protrusion{\MT@maybe@do{pr}} +\def\MT@set@pr@codes{% + \MT@nofamilyfalse + \MT@if@list@exists{% + \ifMT@nofamily + \MT@ifdefined@n@TF{\MT@encoding-\MT@family-settings}\relax{% + \MT@info@nl{Loading generic settings for font family\MessageBreak + `\MT@family' (encoding: \MT@encoding).\MessageBreak + For optimal results, create family-specific settings.\MessageBreak + See the microtype manual for details}% + \MT@glet@nc{\MT@encoding-\MT@family-settings}\@empty + }% + \fi + \MT@get@font@dimen@six{% + \MT@get@opt + \MT@reset@pr@codes + \MT@get@inh@list + \MT@set@inputenc{c}% + \MT@load@list\MT@pr@c@name + \MT@set@listname + \MT@let@cn\@tempc{MT@pr@c@\MT@pr@c@name}% + \expandafter\MT@set@codes\@tempc,\relax,}% + }\MT@reset@pr@codes +} +\def\MT@get@font@dimen@six{% + \ifnum\fontdimen6\MT@font=\z@ + \MT@warning@nl{% + Font `\MT@@font' does not specify its\MessageBreak + \@backslashchar fontdimen 6 (width of an `em')! Therefore,\MessageBreak + \@nameuse{MT@abbr@\MT@feat} will not work with this font}% + \expandafter\@gobble + \else + \edef\MT@dimen@six{\number\fontdimen6\MT@font}% + \expandafter\@firstofone + \fi +} +\def\MT@set@all@pr#1#2{% + \let\MT@temp\@empty + \MT@ifempty{#1}\relax{\g@addto@macro\MT@temp{\lpcode\MT@font\@tempcnta=#1}}% + \MT@ifempty{#2}\relax{\g@addto@macro\MT@temp{\rpcode\MT@font\@tempcnta=#2}}% + \MT@do@font\MT@temp +} +\def\MT@reset@pr@codes@{\MT@set@all@pr\z@\z@} +\let\MT@reset@pr@codes\relax +\def\MT@the@pr@code{\@tempcntb} +\MT@requires@luatex3 + {\def\MT@the@pr@code@tr{% + \numexpr\@tempcntb+\MT@letterspace@/2\relax + } +}\relax +\def\MT@set@codes#1,{% + \ifx\relax#1\@empty\else + \MT@split@codes #1==\relax + \expandafter\MT@set@codes + \fi +} +\def\MT@split@codes#1=#2=#3\relax{% + \def\@tempa{#1}% + \ifx\@tempa\@empty \else + \MT@get@slot + \ifnum\MT@char > \m@ne + \MT@get@char@unit + \csname MT@\MT@feat @split@val\endcsname#2\relax + \fi + \fi +} +\def\MT@pr@split@val#1,#2\relax{% + \def\@tempb{#1}% + \MT@ifempty\@tempb\relax{% + \MT@scale@to@em + \lpcode\MT@font\MT@char=\MT@the@pr@code + }% + \def\@tempb{#2}% + \MT@ifempty\@tempb\relax{% + \MT@scale@to@em + \rpcode\MT@font\MT@char=\MT@the@pr@code + }% + \MT@ifdefined@c@T\MT@pr@inh@name{% + \MT@ifdefined@n@T{MT@inh@\MT@pr@inh@name @\MT@char @}{% + \MT@exp@cs\MT@map@tlist@c + {MT@inh@\MT@pr@inh@name @\MT@char @}% + \MT@set@pr@heirs + }% + }% +} +\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 + \ifnum\MT@count=\z@ \MT@info@missing@char \fi +} +\def\MT@set@pr@heirs#1{% + \lpcode\MT@font #1 =\lpcode\MT@font\MT@char\relax + \rpcode\MT@font #1 =\rpcode\MT@font\MT@char\relax +} +\def\MT@preset@pr{% + \expandafter\expandafter\expandafter\MT@preset@pr@ + \csname MT@pr@c@\MT@pr@c@name @preset\endcsname\@nil +} +\def\MT@preset@pr@#1,#2\@nil{% + \ifx\MT@pr@unit@\@empty + \MT@warn@preset@towidth{pr}% + \let\MT@preset@aux\MT@preset@aux@factor + \else + \def\MT@preset@aux{\MT@preset@aux@space2}% + \fi + \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{% + \@tempcntb=#1\relax + \MT@scale@factor + \edef#2{\number\@tempcntb}% +} +\def\MT@preset@aux@space#1#2#3{% + \def\@tempb{#2}% + \MT@get@space@unit#1% + \MT@scale@to@em + \edef#3{\number\@tempcntb}% +} +\def\MT@warn@preset@towidth#1{% + \MT@warning@nl{% + Cannot preset characters relative to their widths\MessageBreak + for \@nameuse{MT@abbr@#1} list `\@nameuse{MT@#1@c@name}'. Presetting them% + \MessageBreak relative to 1em instead}% +} +\def\MT@expansion{\MT@maybe@do{ex}} +\def\MT@set@ex@codes@s{% + \MT@if@list@exists{% + \MT@get@ex@opt + \let\MT@get@char@unit\relax + \MT@reset@ef@codes + \MT@get@inh@list + \MT@set@inputenc{c}% + \MT@load@list\MT@ex@c@name + \MT@set@listname + \MT@let@cn\@tempc{MT@ex@c@\MT@ex@c@name}% + \expandafter\MT@set@codes\@tempc,\relax,% + \MT@expandfont + }\relax +} +\def\MT@set@ex@codes@n{% + \MT@nonselectedtrue + \MT@if@list@exists + \MT@get@ex@opt + {% + \let\MT@stretch@ \MT@stretch + \let\MT@shrink@ \MT@shrink + \let\MT@step@ \MT@step + \let\MT@auto@ \MT@auto + \let\MT@ex@factor@\MT@ex@factor + }% + \MT@reset@ef@codes + \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}% +} +\def\MT@reset@ef@codes@{\MT@set@all@ex\MT@ex@factor@} + \let\MT@reset@ef@codes\MT@reset@ef@codes@ +\def\MT@ex@split@val#1\relax{% + \@tempcntb=#1\relax + \ifnum\MT@ex@factor@=\@m \else + \MT@scale\@tempcntb \MT@ex@factor@ \@m + \fi + \ifnum\@tempcntb > \MT@ex@max + \MT@warn@ex@too@large\MT@ex@max + \else + \ifnum\@tempcntb < \MT@ex@min + \MT@warn@ex@too@large\MT@ex@min + \fi + \fi + \efcode\MT@font\MT@char=\@tempcntb + \MT@ifdefined@c@T\MT@ex@inh@name{% + \MT@ifdefined@n@T{MT@inh@\MT@ex@inh@name @\MT@char @}{% + \MT@exp@cs\MT@map@tlist@c{MT@inh@\MT@ex@inh@name @\MT@char @}\MT@set@ex@heirs + }% + }% +} +\def\MT@warn@ex@too@large#1{% + \MT@warning@nl{Expansion factor \number\@tempcntb\space too large for + character\MessageBreak `\the\MT@toks' in \MT@curr@list@name.\MessageBreak + Setting it to the maximum of \number#1}% + \@tempcntb=#1\relax +} +\def\MT@get@ex@opt{% + \MT@set@listname + \MT@ifdefined@n@TF{MT@ex@c@\MT@ex@c@name @factor}{% + \MT@let@cn\MT@ex@factor@{MT@ex@c@\MT@ex@c@name @factor}% + \MT@vinfo{... : Multiplying expansion factors by \number\MT@ex@factor@/1000}% + }{% + \let\MT@ex@factor@\MT@ex@factor + }% + \MT@get@ex@opt@{stretch}{Setting stretch limit to \number\MT@stretch@}% + \MT@get@ex@opt@{shrink} {Setting shrink limit to \number\MT@shrink@}% + \MT@get@ex@opt@{step} {Setting expansion step to \number\MT@step@}% + \def\@tempa{autoexpand}% + \MT@get@ex@opt@{auto}{\ifx\@tempa\MT@auto@ En\else Dis\fi abling automatic expansion}% + \MT@ifdefined@n@T{MT@ex@c@\MT@ex@c@name @preset}{% + \MT@preset@ex + \let\MT@reset@ef@codes\relax + }% +} +\def\MT@get@ex@opt@#1#2{% + \MT@ifdefined@n@TF{MT@ex@c@\MT@ex@c@name @#1}{% + \MT@let@nn{MT@#1@}{MT@ex@c@\MT@ex@c@name @#1}% + \MT@vinfo{... : #2}% + }{% + \MT@let@nn{MT@#1@}{MT@#1}% + }% +} +\def\MT@set@ex@heirs#1{% + \efcode\MT@font#1=\efcode\MT@font\MT@char +} +\def\MT@preset@ex{% + \@tempcntb=\csname MT@ex@c@\MT@ex@c@name @preset\endcsname\relax + \MT@scale@factor + \MT@set@all@ex\@tempcntb +} +\MT@requires@luatex3 +{ +\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@get@tr@opt + \relax + \MT@ifdefined@c@TF\MT@letterspace@\relax{\let\MT@letterspace@\MT@letterspace}% + \ifnum\MT@letterspace@=\z@ + \MT@set@tr@zero + \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@set@space\@tempa,% + \MT@ifdefined@c@TF\MT@tr@okern{\let\@tempa\MT@tr@okern}{\def\@tempa{*,*}}% + \expandafter\MT@tr@set@okern\@tempa,% + \MT@ifdefined@c@T\MT@tr@ligatures\MT@tr@noligatures + \MT@do@font{\lpcode\MT@lsfont\@tempcnta=\numexpr\MT@letterspace@/2\relax + \rpcode\MT@lsfont\@tempcnta=\numexpr\MT@letterspace@/2\relax}% + \let\MT@the@pr@code\MT@the@pr@code@tr + \fi + \aftergroup\MT@set@lsfont + \let\MT@font\MT@lsfont + \xdef\MT@set@curr@ls{\def\noexpand\MT@curr@ls{\MT@letterspace@}}% + \aftergroup\MT@set@curr@ls + \MT@outer@space=\csname MT@outer@space\expandafter\string\font@name\endcsname\relax + \xdef\MT@set@curr@os{\MT@outer@space=\the\MT@outer@space\relax}% + \MT@tr@outer@l + \ifx\MT@ls@adjust\@empty + \MT@outer@kern=-\dimexpr\MT@letterspace@ sp * \fontdimen6\font@name/2000\relax + \MT@ls@outer@k + \else + \MT@outer@kern=\expandafter\expandafter\expandafter\@firstoftwo + \csname MT@outer@kern\expandafter\string\font@name\endcsname\relax + \ifdim\MT@outer@kern=\z@\else \MT@ls@outer@k \fi + \MT@outer@kern=\expandafter\expandafter\expandafter\@secondoftwo + \csname MT@outer@kern\expandafter\string\font@name\endcsname\relax + \fi + \xdef\MT@set@curr@ok{\MT@outer@kern=\the\MT@outer@kern\relax}% + \aftergroup\aftergroup\aftergroup\MT@ls@aftergroup + \fi + }% +} +\def\MT@get@tr@opt{% + \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 + }% + }% + \MT@get@tr@opt@{spacing} {ispace}% + \MT@get@tr@opt@{outerspacing}{ospace}% + \MT@get@tr@opt@{outerkerning}{okern}% + \MT@get@tr@opt@{noligatures} {ligatures}% +} +\def\MT@get@tr@opt@#1#2{% + \MT@ifdefined@n@T{MT@tr@c@\MT@tr@c@name @#1}% + {\MT@let@nn{MT@tr@#2}{MT@tr@c@\MT@tr@c@name @#1}}% +} +\def\MT@set@lsfont{\MT@exp@two@c\let\font@name\MT@lsfont} +\DeclareRobustCommand\lsstyle{% + \not@math@alphabet\lsstyle\textls + \let\glb@currsize\@empty + \def\MT@feat{tr}% + \let\MT@tracking\MT@set@tr@codes + \selectfont +} +\DeclareRobustCommand\lslig[1]{% + {\MT@ifdefined@c@TF\MT@curr@ls{% + \escapechar\m@ne + \MT@get@ls@basefont + \MT@outer@kern=\dimexpr\MT@curr@ls sp * \fontdimen6\font@name/2000\relax + \kern\MT@outer@kern + \font@name #1% + \kern\MT@outer@kern% + }{#1}}% +} +\def\MT@get@ls@basefont{% + \xdef\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 +} +\def\MT@set@lsbasefont{\MT@exp@two@c\let\font@name\MT@ls@basefont} +\def\MT@set@tr@zero{% + \xdef\MT@ls@basefont{\csname\expandafter\string\font@name @base\endcsname}% + \expandafter\ifx\MT@ls@basefont\relax \else + \aftergroup\MT@set@lsbasefont + \fi +} + \def\MT@tr@noligatures{% + \ifx\MT@tr@ligatures\@empty + \MT@noligatures@\MT@lsfont\@undefined + \else + \MT@noligatures@\MT@lsfont\MT@tr@ligatures + \fi + } +\newskip\MT@outer@space +\def\MT@tr@set@space#1,#2,#3,#4,#5,#6,{% + \let\MT@temp\@empty + \MT@tr@set@space@{#1}{#4}{2}\@empty + \MT@tr@set@space@{#2}{#5}{3}\@plus + \MT@tr@set@space@{#3}{#6}{4}\@minus + \MT@glet@nc{MT@outer@space\expandafter\string\font@name}\MT@temp +} +\def\MT@tr@set@space@#1#2#3#4{% + \MT@ifempty{#2}{% + \MT@ifempty{#1}{% + \edef\MT@temp{\MT@temp#4\the\fontdimen#3\MT@lsfont}% + }{% + \MT@tr@set@space@@{#1}{#3}{1000}% + \edef\MT@temp{\MT@temp#4\the\@tempdima}% + \fontdimen#3\MT@lsfont=\@tempdima + }% + }{% + \MT@tr@set@space@@{#2}{#3}{2000}% + \edef\MT@temp{\MT@temp#4\the\@tempdima}% + \MT@ifempty{#1}\relax{% + \MT@tr@set@space@@{#1}{#3}{1000}% + \fontdimen#3\MT@lsfont=\@tempdima + }% + }% +} +\def\MT@tr@set@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{% + \ifhmode + \ifdim\lastskip>5sp + \edef\x{\the\lastskip minus 0pt}% + \setbox\z@\hbox{\MT@outer@space=\x}% + \ifdim\wd\z@>\z@ + \unskip \hskip\MT@outer@space\relax + \let\MT@ls@outer@k\relax + \else + \ifdim\lastskip=% + \ifnum\spacefactor<2000 + \spaceskip + \else + \ifdim\xspaceskip=\z@ + \dimexpr\spaceskip+\fontdimen7\font@name\relax + \else + \xspaceskip + \fi + \fi + \unskip \hskip\MT@outer@space\relax + \let\MT@ls@outer@k\relax + \fi + \fi + \fi + \fi +} +\def\MT@tr@outer@r{% + \futurelet\MT@tr@outer@next\MT@tr@outer@r@ +} +\def\MT@if@outer@next#1{% + \ifx\MT@tr@outer@next#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi +} +\def\MT@tr@outer@r@{% + \def\MT@temp*{}% + \ifmmode \else + \ifnum\currentgrouptype=10 \else + \def\MT@temp*##1{\ifhmode\hskip\MT@outer@space + \fi}% + \expandafter\ifcat\expandafter\noexpand\csname MT@tr@outer@next\endcsname\egroup + \ifhmode\unkern\fi\egroup + \MT@set@curr@ok \MT@set@curr@os + \def\MT@temp*{\afterassignment\MT@tr@outer@r\let\MT@temp=}% + \else + \MT@if@outer@next\maybe@ic{% + \MT@set@curr@ok \MT@set@curr@os + \def\MT@temp*{\afterassignment\MT@tr@outer@icr\let\MT@temp=}% + }{% + \MT@if@outer@next\check@icr{% + \def\MT@temp*{\aftergroup\MT@tr@outer@r\check@icr\let\MT@temp=}% + }{% + \MT@if@outer@next\@sptoken{% + \def\MT@temp* {\ifhmode\hskip\MT@outer@space + \fi}% + }{% + \MT@if@outer@next~{% + \def\MT@temp*~{\nobreak\hskip\MT@outer@space + }% + }{% + \MT@if@outer@next\ \relax{% + \MT@if@outer@next\space\relax{% + \MT@if@outer@next\@xobeysp\relax{% + \def\MT@temp*{\ifdim\MT@outer@kern=\z@\else\MT@ls@outer@k + \fi}% + \MT@let@nc{MT@tr@outer@next}\relax + }}}}}}}\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@ +} +}{ + \DeclareRobustCommand\lsstyle{% + \MT@error{Letterspacing only works with \MT@engine tex version + 0.62% + \MessageBreak or newer} + {Upgrade \MT@engine tex, or try the `soul' package instead.}% + \MT@glet\lsstyle\relax + } +} +\def\MT@tr@set@okern#1,#2,{% + \let\MT@temp\@empty + \MT@ifempty{#1}{\MT@tr@set@okern@{*}}{\MT@tr@set@okern@{#1}}% + \MT@ifempty{#2}{\MT@tr@set@okern@{*}}{\MT@tr@set@okern@{#2}}% + \MT@glet@nc{MT@outer@kern\expandafter\string\font@name}\MT@temp +} +\def\MT@tr@set@okern@#1{% + \MT@test@ast#1*\@nil{% + \MT@ifdefined@c@TF\MT@tr@unit@ + {\edef\@tempb{#1}\MT@scale@to@em} + {\@tempcntb=#1\relax}% + \@tempdima=\dimexpr \@tempcntb sp * \MT@dimen@six/1000\relax + }{% + \MT@ifempty\@tempa{\let\@tempa\@m}\relax + \@tempdima=\dimexpr \numexpr\@tempa*\MT@letterspace@/1000\relax sp + * \fontdimen6\MT@lsfont/2000\relax + }% + \advance\@tempdima -\dimexpr \MT@letterspace@ sp + * \fontdimen6\MT@lsfont/2000\relax + \edef\MT@temp{\MT@temp{\the\@tempdima}}% +} +\def\MT@ls@outer@k{\ifhmode\kern\MT@outer@kern\relax\fi} +\def\MT@noligatures{% + \MT@dotrue + \let\@tempa\MT@nl@setname + \MT@map@clist@n{font,encoding,family,series,shape,size}{% + \MT@ifdefined@n@TF{MT@checklist@##1}% + {\csname MT@checklist@##1\endcsname}% + {\MT@checklist@{##1}}% + {nl}% + }% + \ifMT@do + \MT@noligatures@\MT@font\MT@nl@ligatures + \fi +} +\def\MT@noligatures@#1#2{% + \MT@ifdefined@c@TF#2{% + \MT@ifdefined@c@TF\tagcode{% + \let\MT@warn@maybe@inputenc\@empty + \def\MT@curr@list@name{\@backslashchar DisableLigatures}% + \MT@map@clist@c#2{% + \KV@@sp@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}% + }% +} +\def\MT@get@slot@{% + \ifnum\MT@char > \m@ne + \ifnum\MT@char=47\relax + \ifMT@norest \else + \@tempcnta=\directlua{ + local glyph = microtype.name_to_slot([[\expandafter\@gobble\@tempa]]) + if glyph then tex.write(glyph) + else tex.write(-1) + end + }\relax + \ifnum\@tempcnta<\z@ + \MT@warn@unknown + \let\MT@char\m@ne + \else + \edef\MT@char{\the\@tempcnta}% + \fi + \fi + \else + \ifMT@norest \else + \MT@warn@rest + \let\MT@char\m@ne + \fi + \fi + \else + \MT@warn@unknown + \fi +} +\def\MT@max@char + {1114111 } +\def\MT@max@slot + {1114111 } +\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 +} +\def\SetProtrusion{% + \MT@begin@catcodes + \MT@SetProtrusion +} +\newcommand*\MT@SetProtrusion[3][]{% + \let\MT@extra@context\@empty + \MT@set@named@keys{MT@pr@c}{#1}% + \def\MT@permutelist{pr@c}% + \setkeys{MT@cfg}{#2}% + \MT@permute + \MT@gdef@n{MT@pr@c@\MT@pr@c@name}{#3}% + \MT@end@catcodes +} +\def\SetExpansion{% + \MT@begin@catcodes + \MT@SetExpansion +} +\newcommand*\MT@SetExpansion[3][]{% + \let\MT@extra@context\@empty + \MT@set@named@keys{MT@ex@c}{#1}% + \MT@ifdefined@n@T{MT@ex@c@\MT@ex@c@name @factor}{% + \ifnum\csname MT@ex@c@\MT@ex@c@name @factor\endcsname > \@m + \MT@warning@nl{Expansion factor \number\@nameuse{MT@ex@c@\MT@ex@c@name @factor} + too large in list\MessageBreak `\MT@ex@c@name'. Setting it to the + maximum of 1000}% + \MT@glet@nc{MT@ex@c@\MT@ex@c@name @factor}\@m + \fi + }% + \def\MT@permutelist{ex@c}% + \setkeys{MT@cfg}{#2}% + \MT@permute + \MT@gdef@n{MT@ex@c@\MT@ex@c@name}{#3}% + \MT@end@catcodes +} +\def\SetTracking{% + \MT@begin@catcodes + \MT@SetTracking +} +\newcommand*\MT@SetTracking[3][]{% + \let\MT@extra@context\@empty + \MT@set@named@keys{MT@tr@c}{#1}% + \def\MT@permutelist{tr@c}% + \setkeys{MT@cfg}{#2}% + \MT@permute + \KV@@sp@def\@tempa{#3}% + \MT@ifempty\@tempa\relax{% + \MT@ifint\@tempa + {\MT@xdef@n{MT@tr@c@\MT@tr@c@name}{\@tempa}}% + {\MT@warning{Value `\@tempa' is not a number in\MessageBreak + tracking set `\MT@curr@set@name'}}}% + \MT@end@catcodes +} + \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@pr@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@pr@c}{context}[]{% + \MT@ifempty{#1}\relax{\def\MT@extra@context{#1}}% + \ifx\MT@copy@font\MT@copy@font@\else + \MT@warning@nl{If protrusion contexts don't work as expected, + \MessageBreak load the package with the `copyfonts' option}% + \fi + }% + } +\define@key{MT@pr@c}{unit}[character]{% + \MT@glet@nc{MT@pr@c@\MT@curr@set@name @unit}\@empty + \def\@tempa{#1}% + \MT@ifstreq\@tempa{character}\relax{% + \MT@ifdimen\@tempa + {\MT@glet@nc{MT@pr@c@\MT@curr@set@name @unit}\@tempa}% + {\MT@warn@nodim{character widths}}% + }% +} +\define@key{MT@tr@c}{unit}[1em]{% + \MT@glet@nc{MT@tr@c@\MT@curr@set@name @unit}\@empty + \def\@tempa{#1}% + \MT@ifdimen\@tempa + {\MT@glet@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}}% +} +\MT@map@clist@n{stretch,shrink,step}{% + \define@key{MT@ex@c}{#1}[]{% + \MT@ifempty{##1}\relax{% + \MT@ifint{##1}{% + \MT@gdef@n{MT@ex@c@\MT@curr@set@name @#1}{##1 }% + }{% + \MT@warning{% + Value `##1' for option `#1' is not a number.\MessageBreak + Ignoring it}% + }% + }% + }% +} +\define@key{MT@ex@c}{auto}[true]{% + \def\@tempa{#1}% + \csname if\@tempa\endcsname + \MT@gdef@n{MT@ex@c@\MT@curr@set@name @auto}{autoexpand}% + \else + \MT@glet@nc{MT@ex@c@\MT@curr@set@name @auto}\@empty + \fi +} +\MT@define@opt@key{tr}{spacing} +\MT@define@opt@key{tr}{outerspacing} +\MT@define@opt@key{tr}{outerkerning} +\define@key{MT@tr@c}{noligatures}[]% + {\MT@xdef@n{MT@tr@c@\MT@curr@set@name @noligatures}{#1}} +\define@key{MT@tr@c}{outer spacing}[]{\setkeys{MT@tr@c}{outerspacing={#1}}} +\define@key{MT@tr@c}{outer kerning}[]{\setkeys{MT@tr@c}{outerkerning={#1}}} +\define@key{MT@tr@c}{no ligatures}[]{\setkeys{MT@tr@c}{noligatures={#1}}} +\def\MT@inh@split#1=#2=#3\relax{% + \def\@tempa{#1}% + \ifx\@tempa\@empty \else + \MT@get@slot + \ifnum\MT@char > \m@ne + \let\MT@val\MT@char + \MT@map@clist@n{#2}{% + \def\@tempa{##1}% + \ifx\@tempa\@empty \else + \MT@get@slot + \ifnum\MT@char > \m@ne + \MT@exp@cs\MT@xadd{MT@inh@\MT@listname @\MT@val @}{{\MT@char}}% + \fi + \fi + }% + \fi + \fi +} +\MT@def@bool@opt{DVIoutput}{% + \csname if\@tempa\endcsname + \ifnum\pdfoutput>\z@ \MT@opt@DVItrue \fi + \pdfoutput\z@ + \else + \ifnum\pdfoutput<\@ne \MT@opt@DVItrue \fi + \pdfoutput\@ne + \fi +} + \MT@def@bool@opt{copyfonts}{% + \csname if\@tempa\endcsname + \MT@glet\MT@copy@font\MT@copy@font@ + \else + \MT@glet\MT@copy@font\relax + \fi + } +\ifnum\pdfoutput<\@ne \else + \MT@expansiontrue + \MT@autotrue +\fi +\def\MT@define@optionX#1#2{% + \define@key{MTX}{#1}[true]{% + \edef\@tempb{\csname MT@rbba@#1\endcsname}% + \MT@map@clist@n{##1}{% + \KV@@sp@def\MT@val{####1}% + \MT@ifempty\MT@val\relax{% + \@tempcnta=\m@ne + \MT@ifstreq\MT@val{true}{% + \MT@checksetup{#1}{% + \@tempcnta=\csname MT@\@tempb @level\endcsname + \MT@vinfo{Enabling #1 + (level \number\csname MT@\@tempb @level\endcsname)\on@line}% + }% + }{% + \MT@ifstreq\MT@val{false}{% + \@tempcnta=\z@ + \MT@vinfo{Disabling #1\on@line}% + }{% + \MT@ifstreq\MT@val{compatibility}{% + \MT@checksetup{#1}{% + \@tempcnta=\@ne + \MT@let@nc{MT@\@tempb @level}\@ne + \MT@vinfo{Setting #1 to level 1\on@line}% + }% + }{% + \MT@ifstreq\MT@val{nocompatibility}{% + \MT@checksetup{#1}{% + \@tempcnta=\tw@ + \MT@let@nc{MT@\@tempb @level}\tw@ + \MT@vinfo{Setting #1 to level 2\on@line}% + }% + }{\MT@error{Value `\MT@val' for key `#1' not recognised} + {Use any of `true', `false', `compatibility' or + `nocompatibility'.}% + }% + }% + }% + }% + \ifnum\@tempcnta>\m@ne + #2\@tempcnta\relax + \fi + }% + }% + }% +} +\def\MT@checksetup#1{% + \csname ifMT@#1\endcsname + \expandafter\@firstofone + \else + \MT@error{You cannot enable #1 if it was disabled\MessageBreak + in the package options}{Load microtype with #1 enabled.}% + \expandafter\@gobble + \fi +} +\MT@define@optionX{protrusion}\MT@protrudechars +\MT@define@optionX{expansion}\MT@adjustspacing +\let\MT@protrudechars\pdfprotrudechars +\let\MT@adjustspacing\pdfadjustspacing +\MT@requires@luatex3{ + \def\MT@define@optionX@#1#2{% + \define@key{MTX}{#1}[true]{% + \MT@map@clist@n{##1}{% + \KV@@sp@def\MT@val{####1}% + \MT@ifempty\MT@val\relax{% + \@tempcnta=\m@ne + \MT@ifstreq\MT@val{true}{% + \MT@checksetup{#1}{% + \@tempcnta=\@ne + \MT@vinfo{Enabling #1\on@line}% + }% + }{% + \MT@ifstreq\MT@val{false}{% + \@tempcnta=\z@ + \MT@vinfo{Disabling #1\on@line}% + }{\MT@error{Value `\MT@val' for key `#1' not recognised} + {Use either `true' or `false'}% + }% + }% + \ifnum\@tempcnta>\m@ne + #2\relax + \fi + }% + }% + }% + } + \MT@define@optionX@{tracking}{\ifnum\@tempcnta=\z@ \let\MT@tracking\MT@set@tr@zero + \else \let\MT@tracking\MT@tracking@ \fi} + \MT@define@optionX@{spacing}{\pdfadjustinterwordglue\@tempcnta} + \MT@define@optionX@{kerning}{\pdfprependkern\@tempcnta + \pdfappendkern \@tempcnta} +}{ +\define@key{MTX}{tracking}[true]{\MT@warning{Ignoring tracking setup}} +} +\define@key{MTX}{kerning}[true]{\MT@warning{Ignoring kerning setup}} +\define@key{MTX}{spacing}[true]{\MT@warning{Ignoring spacing setup}} +\define@key{MTX}{activate}[true]{% + \setkeys{MTX}{protrusion={#1}}% + \setkeys{MTX}{expansion={#1}}% +} +\def\MT@setup@PDF{% + \MT@info@nl{Generating \ifnum\pdfoutput<\@ne DVI \else PDF \fi output% + \ifMT@opt@DVI\space (changed by \MT@MT)\fi}% +} +\def\MT@setup@copies{% + \ifx\MT@copy@font\relax\else \MT@info@nl{Using font copies for contexts}\fi +} +\def\MT@setup@protrusion{% + \ifMT@protrusion + \edef\MT@active@features{\MT@active@features,pr}% + \MT@protrudechars\MT@pr@level + \MT@info@nl{Character protrusion enabled (level \number\MT@pr@level)% + \ifnum\MT@pr@factor=\MT@factor@default \else,\MessageBreak + factor: \number\MT@pr@factor\fi + \ifx\MT@pr@unit\@empty \else,\MessageBreak unit: \MT@pr@unit\fi}% + \MT@check@active@set{pr}% + \else + \let\MT@protrusion\relax + \MT@info@nl{No character protrusion}% + \fi +} +\def\MT@setup@expansion{% + \ifnum\pdfoutput<\@ne + \ifMT@opt@expansion \else + \MT@expansionfalse + \fi + \fi + \ifMT@expansion + \ifnum\MT@stretch=\m@ne + \let\MT@stretch\MT@stretch@default + \fi + \ifnum\MT@shrink=\m@ne + \let\MT@shrink\MT@stretch + \fi + \ifnum\MT@step=\m@ne + \def\MT@step{1 }% + \fi + \ifnum\MT@step=\z@ + \MT@warning@nl{The expansion step cannot be set to zero.\MessageBreak + Setting it to one}% + \def\MT@step{1 }% + \fi + \let\MT@auto\@empty + \ifMT@auto + \ifnum\pdfoutput<\@ne + \ifMT@opt@auto + \MT@error{% + Automatic font expansion only works for PDF output.\MessageBreak + However, you are creating a DVI file} + {If you have created expanded fonts instances, remove `auto' from% + \MessageBreak the package options. Otherwise, you have to switch + off expansion\MessageBreak completely.}% + \fi + \MT@autofalse + \else + \def\MT@auto{autoexpand}% + \fi + \else + \fi + \ifMT@selected + \let\MT@set@ex@codes\MT@set@ex@codes@s + \else + \let\MT@set@ex@codes\MT@set@ex@codes@n + \fi + \ifnum\MT@stretch=\z@ + \ifnum\MT@shrink=\z@ + \MT@warning@nl{% + Both the stretch and shrink limit are set to zero.\MessageBreak + Disabling font expansion}% + \MT@expansionfalse + \fi + \fi + \fi + \ifMT@expansion + \edef\MT@active@features{\MT@active@features,ex}% + \MT@adjustspacing\MT@ex@level + \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}% + \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 + \hsize\maxdimen\normalfont\pretolerance\m@ne\tolerance\m@ne + \hbadness\z@\showboxdepth\z@\ ##1\color@endgroup}}% + \gdef\showhyphens##1{\setbox0\vbox{% + \color@begingroup\pdfadjustspacing\z@\everypar{}\parfillskip\z@skip + \hsize\maxdimen\normalfont\pretolerance\m@ne\tolerance\m@ne + \hbadness\z@\showboxdepth\z@\ ##1\color@endgroup}}% + \else + \let\MT@expansion\relax + \MT@info@nl{No font expansion}% + \fi +} +\MT@requires@luatex3{% + \def\MT@setup@tracking{% + \ifMT@tracking + \edef\MT@active@features{\MT@active@features,tr}% + \MT@info@nl{Tracking enabled}% + \MT@check@active@set{tr}% + \ifMT@protrusion\else\MT@protrudechars\@ne\fi + \else + \let\MT@tracking\relax + \MT@info@nl{No adjustment of tracking}% + \fi + } +}{ + \def\MT@setup@tracking{% + \ifMT@tracking + \MT@error{The tracking feature only works with luatex 0.62\MessageBreak + or newer. Switching it off}{Upgrade luatex.}% + \MT@trackingfalse + \MT@let@nc{MT@tracking}\relax + \else + \MT@info@nl{No adjustment of tracking (luatex too old)}% + \fi + } +} + \def\MT@error@doesnt@work#1{% + \csname ifMT@#1\endcsname + \MT@error{The #1 feature only works with pdftex 1.40\MessageBreak + or newer. Switching it off} + {Use pdftex instead.}% + \csname MT@#1false\endcsname + \MT@let@nc{MT@#1}\relax + \else + \MT@info@nl{No adjustment of #1% + }% + \fi + } + \def\MT@setup@kerning {\MT@error@doesnt@work{kerning}} + \def\MT@setup@spacing {\MT@error@doesnt@work{spacing}} +\def\MT@setup@warntracking +{% + \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\MessageBreak + able to create the virtual fonts on the fly}% + \MT@glet\MT@warn@tracking@DVI\relax + }% + \else + \def\MT@warn@tracking@DVI{% + \ifnum\pdfprotrudechars<\@ne \global\pdfprotrudechars\@ne \fi + \MT@glet\MT@warn@tracking@DVI\relax + }% + \fi + \ifnum\MT@letterspace=\m@ne + \let\MT@letterspace\MT@letterspace@default + \else + \MT@ls@too@large\MT@letterspace + \fi +} +\def\MT@setup@noligatures{% + \ifMT@noligatures \else + \let\MT@noligatures\relax + \fi +} +\endinput +%% +%% End of file `microtype-luatex.def'. diff --git a/Master/texmf-dist/tex/latex/microtype/microtype-pdftex.def b/Master/texmf-dist/tex/latex/microtype/microtype-pdftex.def new file mode 100644 index 00000000000..be537a1ff4b --- /dev/null +++ b/Master/texmf-dist/tex/latex/microtype/microtype-pdftex.def @@ -0,0 +1,1568 @@ +%% +%% This is file `microtype-pdftex.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% microtype.dtx (with options: `pdftex-def') +%% +%% ------------------------------------------------------------------------ +%% +%% The `microtype' package +%% Subliminal refinements towards typographical perfection +%% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> +%% +%% This work may be distributed and/or modified under the conditions of the +%% LaTeX Project Public License, either version 1.3c of this license or (at +%% your option) any later version. The latest version of this license is in: +%% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part +%% of all distributions of LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `author-maintained'. +%% +%% This work consists of the files microtype.dtx and microtype.ins and the +%% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +%% microtype-luatex.def, microtype.lua and letterspace.sty. +%% +%% ------------------------------------------------------------------------ +%% This file contains enginge-specific definitions. +%% ------------------------------------------------------------------------ +%% +\ProvidesFile + {microtype-pdftex.def} + [2013/03/13 v2.5 + Definitions specific to + pdftex + (RS)] +\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 + \fi + \fi + \fi +\fi +\ifnum + \csname MT@\MT@engine tex@no\endcsname < 2 + \MT@warning@nl{You + are using a \MT@engine tex version older than + 0.14f% + .\MessageBreak + `\MT@MT' does not work with this version.\MessageBreak + Please install a newer version of \MT@engine tex% + .\MessageBreak I will quit now} + \MT@clear@options +\endinput\fi +\def + \MT@requires@pdftex% + #1{\ifnum + \MT@pdftex@no + <#1 \expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi} +\MT@requires@pdftex6{ +\def\MT@ifint#1{% + \ifcase\pdfmatch{^-*[0-9]+ *$}{#1}\relax + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi +} +}{ +\def\MT@ifint#1{% + \if!\ifnum9<1#1!\else?\fi + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +} +\MT@requires@pdftex6{ +\def\MT@ifdimen#1{% + \ifcase\pdfmatch{^([0-9]+([.,][0-9]+)?|[.,][0-9]+)% + (em|ex|cm|mm|in|pc|pt|dd|cc|bp|sp|nd|nc|px)? *$}{#1}\relax + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi +} +}{ +\def\MT@ifdimen#1{% + \setbox\z@=\hbox{% + \MT@count=1#1\relax + \ifnum\MT@count=\@ne + \aftergroup\@secondoftwo + \else + \aftergroup\@firstoftwo + \fi + }% +} +} +\MT@requires@pdftex5{ +\def\MT@ifstreq#1#2{% + \ifcase\pdfstrcmp{#1}{#2}\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +}{ +\def\MT@ifstreq#1#2{% + \edef\MT@res@a{#1}% + \edef\MT@res@b{#2}% + \ifx\MT@res@a\MT@res@b + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +} +\def\MT@do@font{\MT@while@num\z@ + \@cclvi +} +\MT@requires@pdftex5{ + \def\MT@ledmac@setup{% + \ifMT@protrusion + \MT@ifdefined@c@TF\l@dunhbox@line{% + \MT@info@nl{Patching ledmac to enable character protrusion}% + \newdimen\MT@led@kern + \let\MT@led@unhbox@line\l@dunhbox@line + \renewcommand*{\l@dunhbox@line}[1]{% + \ifhbox##1% + \MT@led@kern=\rightmarginkern##1% + \kern\leftmarginkern##1% + \MT@led@unhbox@line##1% + \kern\MT@led@kern + \fi + }% + }{% + \MT@warning@nl{% + Character protrusion in paragraphs with line\MessageBreak + numbering will only work if you update ledmac}% + }% + \fi + } +}{ + \def\MT@ledmac@setup{% + \ifMT@protrusion + \MT@warning@nl{% + The pdftex version you are using does not allow\MessageBreak + character protrusion in paragraphs with line\MessageBreak + numbering by the `ledmac' package.\MessageBreak + Upgrade pdftex to version 1.30 or later}% + \fi + } +} +\def\MT@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 +} +\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@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 +} +\let\MT@copy@font\relax +\MT@requires@pdftex7{ +\def\MT@copy@font@{% + \xdef\MT@font@copy{\csname\MT@@font/\MT@pr@context/\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{% + \MT@exp@cs\ifx{MT@\@nameuse{MT@abbr@##1}}\relax\else + \def\@tempa{##1}% + \MT@exp@cs\MT@map@tlist@c{MT@##1@doc@contexts}\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{% + \MT@exp@cs\ifx{MT@\@tempa @#1font@list}\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@protrusion{\MT@maybe@do{pr}} +\def\MT@set@pr@codes{% + \MT@nofamilyfalse + \MT@if@list@exists{% + \ifMT@nofamily + \MT@ifdefined@n@TF{\MT@encoding-\MT@family-settings}\relax{% + \MT@info@nl{Loading generic settings for font family\MessageBreak + `\MT@family' (encoding: \MT@encoding).\MessageBreak + For optimal results, create family-specific settings.\MessageBreak + See the microtype manual for details}% + \MT@glet@nc{\MT@encoding-\MT@family-settings}\@empty + }% + \fi + \MT@get@font@dimen@six{% + \MT@get@opt + \MT@reset@pr@codes + \MT@get@inh@list + \MT@set@inputenc{c}% + \MT@load@list\MT@pr@c@name + \MT@set@listname + \MT@let@cn\@tempc{MT@pr@c@\MT@pr@c@name}% + \expandafter\MT@set@codes\@tempc,\relax,}% + }\MT@reset@pr@codes +} +\def\MT@get@font@dimen@six{% + \ifnum\fontdimen6\MT@font=\z@ + \MT@warning@nl{% + Font `\MT@@font' does not specify its\MessageBreak + \@backslashchar fontdimen 6 (width of an `em')! Therefore,\MessageBreak + \@nameuse{MT@abbr@\MT@feat} will not work with this font}% + \expandafter\@gobble + \else + \edef\MT@dimen@six{\number\fontdimen6\MT@font}% + \expandafter\@firstofone + \fi +} +\def\MT@set@all@pr#1#2{% + \let\MT@temp\@empty + \MT@ifempty{#1}\relax{\g@addto@macro\MT@temp{\lpcode\MT@font\@tempcnta=#1}}% + \MT@ifempty{#2}\relax{\g@addto@macro\MT@temp{\rpcode\MT@font\@tempcnta=#2}}% + \MT@do@font\MT@temp +} +\def\MT@reset@pr@codes@{\MT@set@all@pr\z@\z@} +\let\MT@reset@pr@codes\relax +\def\MT@the@pr@code{\@tempcntb} +\MT@requires@pdftex6 + {\def\MT@the@pr@code@tr{% + \numexpr\@tempcntb+\MT@letterspace@/2\relax + } +}\relax +\def\MT@set@codes#1,{% + \ifx\relax#1\@empty\else + \MT@split@codes #1==\relax + \expandafter\MT@set@codes + \fi +} +\def\MT@split@codes#1=#2=#3\relax{% + \def\@tempa{#1}% + \ifx\@tempa\@empty \else + \MT@get@slot + \ifnum\MT@char > \m@ne + \MT@get@char@unit + \csname MT@\MT@feat @split@val\endcsname#2\relax + \fi + \fi +} +\def\MT@pr@split@val#1,#2\relax{% + \def\@tempb{#1}% + \MT@ifempty\@tempb\relax{% + \MT@scale@to@em + \lpcode\MT@font\MT@char=\MT@the@pr@code + }% + \def\@tempb{#2}% + \MT@ifempty\@tempb\relax{% + \MT@scale@to@em + \rpcode\MT@font\MT@char=\MT@the@pr@code + }% + \MT@ifdefined@c@T\MT@pr@inh@name{% + \MT@ifdefined@n@T{MT@inh@\MT@pr@inh@name @\MT@char @}{% + \MT@exp@cs\MT@map@tlist@c + {MT@inh@\MT@pr@inh@name @\MT@char @}% + \MT@set@pr@heirs + }% + }% +} +\MT@requires@pdftex3{ +\def\MT@scale@to@em{% + \@tempcntb=\MT@count\relax + \MT@scale\@tempcntb \@tempb \MT@dimen@six + \ifnum\@tempcntb=\z@ \else + \MT@scale@factor + \fi +} +\def\MT@get@charwd{% +^^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@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@set@pr@heirs#1{% + \lpcode\MT@font #1 =\lpcode\MT@font\MT@char\relax + \rpcode\MT@font #1 =\rpcode\MT@font\MT@char\relax +} +\def\MT@preset@pr{% + \expandafter\expandafter\expandafter\MT@preset@pr@ + \csname MT@pr@c@\MT@pr@c@name @preset\endcsname\@nil +} +\def\MT@preset@pr@#1,#2\@nil{% + \ifx\MT@pr@unit@\@empty + \MT@warn@preset@towidth{pr}% + \let\MT@preset@aux\MT@preset@aux@factor + \else + \def\MT@preset@aux{\MT@preset@aux@space2}% + \fi + \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{% + \@tempcntb=#1\relax + \MT@scale@factor + \edef#2{\number\@tempcntb}% +} +\def\MT@preset@aux@space#1#2#3{% + \def\@tempb{#2}% + \MT@get@space@unit#1% + \MT@scale@to@em + \edef#3{\number\@tempcntb}% +} +\def\MT@warn@preset@towidth#1{% + \MT@warning@nl{% + Cannot preset characters relative to their widths\MessageBreak + for \@nameuse{MT@abbr@#1} list `\@nameuse{MT@#1@c@name}'. Presetting them% + \MessageBreak relative to 1em instead}% +} +\def\MT@expansion{\MT@maybe@do{ex}} +\def\MT@set@ex@codes@s{% + \MT@if@list@exists{% + \MT@get@ex@opt + \let\MT@get@char@unit\relax + \MT@reset@ef@codes + \MT@get@inh@list + \MT@set@inputenc{c}% + \MT@load@list\MT@ex@c@name + \MT@set@listname + \MT@let@cn\@tempc{MT@ex@c@\MT@ex@c@name}% + \expandafter\MT@set@codes\@tempc,\relax,% + \MT@expandfont + }\relax +} +\def\MT@set@ex@codes@n{% + \MT@nonselectedtrue + \MT@if@list@exists + \MT@get@ex@opt + {% + \let\MT@stretch@ \MT@stretch + \let\MT@shrink@ \MT@shrink + \let\MT@step@ \MT@step + \let\MT@auto@ \MT@auto + \let\MT@ex@factor@\MT@ex@factor + }% + \MT@reset@ef@codes + \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}% +} +\def\MT@reset@ef@codes@{\MT@set@all@ex\MT@ex@factor@} +\MT@requires@pdftex4{ + \def\MT@reset@ef@codes{% + \ifnum\MT@ex@factor@=\@m \else + \MT@reset@ef@codes@ + \fi + } +}{ + \let\MT@reset@ef@codes\MT@reset@ef@codes@ +} +\def\MT@ex@split@val#1\relax{% + \@tempcntb=#1\relax + \ifnum\MT@ex@factor@=\@m \else + \MT@scale\@tempcntb \MT@ex@factor@ \@m + \fi + \ifnum\@tempcntb > \MT@ex@max + \MT@warn@ex@too@large\MT@ex@max + \else + \ifnum\@tempcntb < \MT@ex@min + \MT@warn@ex@too@large\MT@ex@min + \fi + \fi + \efcode\MT@font\MT@char=\@tempcntb + \MT@ifdefined@c@T\MT@ex@inh@name{% + \MT@ifdefined@n@T{MT@inh@\MT@ex@inh@name @\MT@char @}{% + \MT@exp@cs\MT@map@tlist@c{MT@inh@\MT@ex@inh@name @\MT@char @}\MT@set@ex@heirs + }% + }% +} +\def\MT@warn@ex@too@large#1{% + \MT@warning@nl{Expansion factor \number\@tempcntb\space too large for + character\MessageBreak `\the\MT@toks' in \MT@curr@list@name.\MessageBreak + Setting it to the maximum of \number#1}% + \@tempcntb=#1\relax +} +\def\MT@get@ex@opt{% + \MT@set@listname + \MT@ifdefined@n@TF{MT@ex@c@\MT@ex@c@name @factor}{% + \MT@let@cn\MT@ex@factor@{MT@ex@c@\MT@ex@c@name @factor}% + \MT@vinfo{... : Multiplying expansion factors by \number\MT@ex@factor@/1000}% + }{% + \let\MT@ex@factor@\MT@ex@factor + }% + \MT@get@ex@opt@{stretch}{Setting stretch limit to \number\MT@stretch@}% + \MT@get@ex@opt@{shrink} {Setting shrink limit to \number\MT@shrink@}% + \MT@get@ex@opt@{step} {Setting expansion step to \number\MT@step@}% + \def\@tempa{autoexpand}% + \MT@get@ex@opt@{auto}{\ifx\@tempa\MT@auto@ En\else Dis\fi abling automatic expansion}% + \MT@ifdefined@n@T{MT@ex@c@\MT@ex@c@name @preset}{% + \MT@preset@ex + \let\MT@reset@ef@codes\relax + }% +} +\def\MT@get@ex@opt@#1#2{% + \MT@ifdefined@n@TF{MT@ex@c@\MT@ex@c@name @#1}{% + \MT@let@nn{MT@#1@}{MT@ex@c@\MT@ex@c@name @#1}% + \MT@vinfo{... : #2}% + }{% + \MT@let@nn{MT@#1@}{MT@#1}% + }% +} +\def\MT@set@ex@heirs#1{% + \efcode\MT@font#1=\efcode\MT@font\MT@char +} +\def\MT@preset@ex{% + \@tempcntb=\csname MT@ex@c@\MT@ex@c@name @preset\endcsname\relax + \MT@scale@factor + \MT@set@all@ex\@tempcntb +} +\MT@requires@pdftex6{ +\def\MT@spacing{\MT@maybe@do{sp}} +\def\MT@set@sp@codes{% + \MT@if@list@exists{% + \MT@get@font@dimen@six{% + \MT@get@opt + \MT@reset@sp@codes + \MT@get@inh@list + \MT@set@inputenc{c}% + \MT@load@list\MT@sp@c@name + \MT@set@listname + \MT@let@cn\@tempc{MT@sp@c@\MT@sp@c@name}% + \expandafter\MT@set@codes\@tempc,\relax,}% + }\MT@reset@sp@codes +} +\def\MT@sp@split@val#1,#2,#3\relax{% + \def\@tempb{#1}% + \MT@ifempty\@tempb\relax{% + \MT@get@space@unit2% + \MT@scale@to@em + \knbscode\MT@font\MT@char=\@tempcntb + }% + \def\@tempb{#2}% + \MT@ifempty\@tempb\relax{% + \MT@get@space@unit3% + \MT@scale@to@em + \stbscode\MT@font\MT@char=\@tempcntb + }% + \def\@tempb{#3}% + \MT@ifempty\@tempb\relax{% + \MT@get@space@unit4% + \MT@scale@to@em + \shbscode\MT@font\MT@char=\@tempcntb + }% + \MT@ifdefined@c@T\MT@sp@inh@name{% + \MT@ifdefined@n@T{MT@inh@\MT@sp@inh@name @\MT@char @}{% + \MT@exp@cs\MT@map@tlist@c{MT@inh@\MT@sp@inh@name @\MT@char @}\MT@set@sp@heirs + }% + }% +} +\def\MT@set@sp@heirs#1{% + \knbscode\MT@font#1=\knbscode\MT@font\MT@char + \stbscode\MT@font#1=\stbscode\MT@font\MT@char + \shbscode\MT@font#1=\shbscode\MT@font\MT@char +} +\def\MT@set@all@sp#1#2#3{% + \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 +\def\MT@preset@sp{% + \expandafter\expandafter\expandafter\MT@preset@sp@ + \csname MT@sp@c@\MT@sp@c@name @preset\endcsname\@nil +} +\def\MT@preset@sp@#1,#2,#3\@nil{% + \ifx\MT@sp@unit@\@empty + \MT@warn@preset@towidth{sp}% + \MT@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@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 +} +}\relax +\MT@requires@pdftex6{ +\def\MT@kerning{\MT@maybe@do{kn}} +\def\MT@set@kn@codes{% + \MT@if@list@exists{% + \MT@get@font@dimen@six{% + \MT@get@opt + \MT@reset@kn@codes + \MT@get@inh@list + \MT@set@inputenc{c}% + \MT@load@list\MT@kn@c@name + \MT@set@listname + \MT@let@cn\@tempc{MT@kn@c@\MT@kn@c@name}% + \expandafter\MT@set@codes\@tempc,\relax,}% + }\MT@reset@kn@codes +} +\def\MT@kn@split@val#1,#2\relax{% + \def\@tempb{#1}% + \MT@ifempty\@tempb\relax{% + \MT@get@space@unit2% + \MT@scale@to@em + \knbccode\MT@font\MT@char=\@tempcntb + }% + \def\@tempb{#2}% + \MT@ifempty\@tempb\relax{% + \MT@get@space@unit2% + \MT@scale@to@em + \knaccode\MT@font\MT@char=\@tempcntb + }% + \MT@ifdefined@c@T\MT@kn@inh@name{% + \MT@ifdefined@n@T{MT@inh@\MT@kn@inh@name @\MT@char @}{% + \MT@exp@cs\MT@map@tlist@c{MT@inh@\MT@kn@inh@name @\MT@char @}\MT@set@kn@heirs + }% + }% +} +\def\MT@set@kn@heirs#1{% + \knbccode\MT@font#1=\knbccode\MT@font\MT@char + \knaccode\MT@font#1=\knaccode\MT@font\MT@char +} +\def\MT@set@all@kn#1#2{% + \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 +\def\MT@preset@kn{% + \expandafter\expandafter\expandafter\MT@preset@kn@ + \csname MT@kn@c@\MT@kn@c@name @preset\endcsname\@nil +} +\def\MT@preset@kn@#1,#2\@nil{% + \ifx\MT@kn@unit@\@empty + \MT@warn@preset@towidth{kn}% + \let\MT@preset@aux\MT@preset@aux@factor + \else + \def\MT@preset@aux{\MT@preset@aux@space2}% + \fi + \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 +} +}\relax +\MT@requires@pdftex6 +{ +\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@get@tr@opt + \relax + \MT@ifdefined@c@TF\MT@letterspace@\relax{\let\MT@letterspace@\MT@letterspace}% + \ifnum\MT@letterspace@=\z@ + \MT@set@tr@zero + \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@set@space\@tempa,% + \MT@ifdefined@c@TF\MT@tr@okern{\let\@tempa\MT@tr@okern}{\def\@tempa{*,*}}% + \expandafter\MT@tr@set@okern\@tempa,% + \MT@ifdefined@c@T\MT@tr@ligatures\MT@tr@noligatures + \MT@do@font{\lpcode\MT@lsfont\@tempcnta=\numexpr\MT@letterspace@/2\relax + \rpcode\MT@lsfont\@tempcnta=\numexpr\MT@letterspace@/2\relax}% + \let\MT@the@pr@code\MT@the@pr@code@tr + \fi + \aftergroup\MT@set@lsfont + \let\MT@font\MT@lsfont + \xdef\MT@set@curr@ls{\def\noexpand\MT@curr@ls{\MT@letterspace@}}% + \aftergroup\MT@set@curr@ls + \MT@outer@space=\csname MT@outer@space\expandafter\string\font@name\endcsname\relax + \xdef\MT@set@curr@os{\MT@outer@space=\the\MT@outer@space\relax}% + \MT@tr@outer@l + \ifx\MT@ls@adjust\@empty + \MT@outer@kern=-\dimexpr\MT@letterspace@ sp * \fontdimen6\font@name/2000\relax + \MT@ls@outer@k + \else + \MT@outer@kern=\expandafter\expandafter\expandafter\@firstoftwo + \csname MT@outer@kern\expandafter\string\font@name\endcsname\relax + \ifdim\MT@outer@kern=\z@\else \MT@ls@outer@k \fi + \MT@outer@kern=\expandafter\expandafter\expandafter\@secondoftwo + \csname MT@outer@kern\expandafter\string\font@name\endcsname\relax + \fi + \xdef\MT@set@curr@ok{\MT@outer@kern=\the\MT@outer@kern\relax}% + \aftergroup\aftergroup\aftergroup\MT@ls@aftergroup + \fi + }% +} +\def\MT@get@tr@opt{% + \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 + }% + }% + \MT@get@tr@opt@{spacing} {ispace}% + \MT@get@tr@opt@{outerspacing}{ospace}% + \MT@get@tr@opt@{outerkerning}{okern}% + \MT@get@tr@opt@{noligatures} {ligatures}% +} +\def\MT@get@tr@opt@#1#2{% + \MT@ifdefined@n@T{MT@tr@c@\MT@tr@c@name @#1}% + {\MT@let@nn{MT@tr@#2}{MT@tr@c@\MT@tr@c@name @#1}}% +} +\def\MT@set@lsfont{\MT@exp@two@c\let\font@name\MT@lsfont} +\DeclareRobustCommand\lsstyle{% + \not@math@alphabet\lsstyle\textls + \let\glb@currsize\@empty + \def\MT@feat{tr}% + \let\MT@tracking\MT@set@tr@codes + \selectfont +} +\DeclareRobustCommand\lslig[1]{% + {\MT@ifdefined@c@TF\MT@curr@ls{% + \escapechar\m@ne + \MT@get@ls@basefont + \MT@outer@kern=\dimexpr\MT@curr@ls sp * \fontdimen6\font@name/2000\relax + \kern\MT@outer@kern + \font@name #1% + \kern\MT@outer@kern% + }{#1}}% +} +\def\MT@get@ls@basefont{% + \xdef\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 +} +\def\MT@set@lsbasefont{\MT@exp@two@c\let\font@name\MT@ls@basefont} +\def\MT@set@tr@zero{% + \xdef\MT@ls@basefont{\csname\expandafter\string\font@name @base\endcsname}% + \expandafter\ifx\MT@ls@basefont\relax \else + \aftergroup\MT@set@lsbasefont + \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@tr@noligatures{% + \MT@warning@nl{% + Disabling selected ligatures is only possible since\MessageBreak + pdftex 1.40.4. Disabling all ligatures instead}% + \MT@glet\MT@tr@noligatures\relax + } +} +\newskip\MT@outer@space +\def\MT@tr@set@space#1,#2,#3,#4,#5,#6,{% + \let\MT@temp\@empty + \MT@tr@set@space@{#1}{#4}{2}\@empty + \MT@tr@set@space@{#2}{#5}{3}\@plus + \MT@tr@set@space@{#3}{#6}{4}\@minus + \MT@glet@nc{MT@outer@space\expandafter\string\font@name}\MT@temp +} +\def\MT@tr@set@space@#1#2#3#4{% + \MT@ifempty{#2}{% + \MT@ifempty{#1}{% + \edef\MT@temp{\MT@temp#4\the\fontdimen#3\MT@lsfont}% + }{% + \MT@tr@set@space@@{#1}{#3}{1000}% + \edef\MT@temp{\MT@temp#4\the\@tempdima}% + \fontdimen#3\MT@lsfont=\@tempdima + }% + }{% + \MT@tr@set@space@@{#2}{#3}{2000}% + \edef\MT@temp{\MT@temp#4\the\@tempdima}% + \MT@ifempty{#1}\relax{% + \MT@tr@set@space@@{#1}{#3}{1000}% + \fontdimen#3\MT@lsfont=\@tempdima + }% + }% +} +\def\MT@tr@set@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{% + \ifhmode + \ifdim\lastskip>5sp + \edef\x{\the\lastskip minus 0pt}% + \setbox\z@\hbox{\MT@outer@space=\x}% + \ifdim\wd\z@>\z@ + \unskip \hskip\MT@outer@space\relax + \let\MT@ls@outer@k\relax + \else + \ifdim\lastskip=% + \ifnum\spacefactor<2000 + \spaceskip + \else + \ifdim\xspaceskip=\z@ + \dimexpr\spaceskip+\fontdimen7\font@name\relax + \else + \xspaceskip + \fi + \fi + \unskip \hskip\MT@outer@space\relax + \let\MT@ls@outer@k\relax + \fi + \fi + \fi + \fi +} +\def\MT@tr@outer@r{% + \futurelet\MT@tr@outer@next\MT@tr@outer@r@ +} +\def\MT@if@outer@next#1{% + \ifx\MT@tr@outer@next#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi +} +\def\MT@tr@outer@r@{% + \def\MT@temp*{}% + \ifmmode \else + \ifnum\currentgrouptype=10 \else + \def\MT@temp*##1{\ifhmode\hskip\MT@outer@space + \fi}% + \expandafter\ifcat\expandafter\noexpand\csname MT@tr@outer@next\endcsname\egroup + \ifhmode\unkern\fi\egroup + \MT@set@curr@ok \MT@set@curr@os + \def\MT@temp*{\afterassignment\MT@tr@outer@r\let\MT@temp=}% + \else + \MT@if@outer@next\maybe@ic{% + \MT@set@curr@ok \MT@set@curr@os + \def\MT@temp*{\afterassignment\MT@tr@outer@icr\let\MT@temp=}% + }{% + \MT@if@outer@next\check@icr{% + \def\MT@temp*{\aftergroup\MT@tr@outer@r\check@icr\let\MT@temp=}% + }{% + \MT@if@outer@next\@sptoken{% + \def\MT@temp* {\ifhmode\hskip\MT@outer@space + \fi}% + }{% + \MT@if@outer@next~{% + \def\MT@temp*~{\nobreak\hskip\MT@outer@space + }% + }{% + \MT@if@outer@next\ \relax{% + \MT@if@outer@next\space\relax{% + \MT@if@outer@next\@xobeysp\relax{% + \def\MT@temp*{\ifdim\MT@outer@kern=\z@\else\MT@ls@outer@k + \fi}% + \MT@let@nc{MT@tr@outer@next}\relax + }}}}}}}\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@ +} +}{ + \DeclareRobustCommand\lsstyle{% + \MT@error{Letterspacing only works with \MT@engine tex version + 1.40% + \MessageBreak or newer} + {Upgrade \MT@engine tex, or try the `soul' package instead.}% + \MT@glet\lsstyle\relax + } +} +\def\MT@tr@set@okern#1,#2,{% + \let\MT@temp\@empty + \MT@ifempty{#1}{\MT@tr@set@okern@{*}}{\MT@tr@set@okern@{#1}}% + \MT@ifempty{#2}{\MT@tr@set@okern@{*}}{\MT@tr@set@okern@{#2}}% + \MT@glet@nc{MT@outer@kern\expandafter\string\font@name}\MT@temp +} +\def\MT@tr@set@okern@#1{% + \MT@test@ast#1*\@nil{% + \MT@ifdefined@c@TF\MT@tr@unit@ + {\edef\@tempb{#1}\MT@scale@to@em} + {\@tempcntb=#1\relax}% + \@tempdima=\dimexpr \@tempcntb sp * \MT@dimen@six/1000\relax + }{% + \MT@ifempty\@tempa{\let\@tempa\@m}\relax + \@tempdima=\dimexpr \numexpr\@tempa*\MT@letterspace@/1000\relax sp + * \fontdimen6\MT@lsfont/2000\relax + }% + \advance\@tempdima -\dimexpr \MT@letterspace@ sp + * \fontdimen6\MT@lsfont/2000\relax + \edef\MT@temp{\MT@temp{\the\@tempdima}}% +} +\def\MT@ls@outer@k{\ifhmode\kern\MT@outer@kern\relax\fi} +\MT@requires@pdftex5{ +\def\MT@noligatures{% + \MT@dotrue + \let\@tempa\MT@nl@setname + \MT@map@clist@n{font,encoding,family,series,shape,size}{% + \MT@ifdefined@n@TF{MT@checklist@##1}% + {\csname MT@checklist@##1\endcsname}% + {\MT@checklist@{##1}}% + {nl}% + }% + \ifMT@do + \MT@noligatures@\MT@font\MT@nl@ligatures + \fi +} +\def\MT@noligatures@#1#2{% + \MT@ifdefined@c@TF#2{% + \MT@ifdefined@c@TF\tagcode{% + \let\MT@warn@maybe@inputenc\@empty + \def\MT@curr@list@name{\@backslashchar DisableLigatures}% + \MT@map@clist@c#2{% + \KV@@sp@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@get@slot@{% + \ifnum\MT@char > \m@ne + \ifMT@norest \else + \MT@warn@rest + \let\MT@char\m@ne + \fi + \else + \MT@warn@unknown + \fi +} +\def\MT@max@char + {127 } +\def\MT@max@slot + {255 } +\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@error{Disabling ligatures of a font is only possible\MessageBreak + with pdftex version 1.30 or newer.\MessageBreak + Ignoring \string\DisableLigatures}{% + Upgrade + pdftex.}% +} +} +\def\SetProtrusion{% + \MT@begin@catcodes + \MT@SetProtrusion +} +\newcommand*\MT@SetProtrusion[3][]{% + \let\MT@extra@context\@empty + \MT@set@named@keys{MT@pr@c}{#1}% + \def\MT@permutelist{pr@c}% + \setkeys{MT@cfg}{#2}% + \MT@permute + \MT@gdef@n{MT@pr@c@\MT@pr@c@name}{#3}% + \MT@end@catcodes +} +\def\SetExpansion{% + \MT@begin@catcodes + \MT@SetExpansion +} +\newcommand*\MT@SetExpansion[3][]{% + \let\MT@extra@context\@empty + \MT@set@named@keys{MT@ex@c}{#1}% + \MT@ifdefined@n@T{MT@ex@c@\MT@ex@c@name @factor}{% + \ifnum\csname MT@ex@c@\MT@ex@c@name @factor\endcsname > \@m + \MT@warning@nl{Expansion factor \number\@nameuse{MT@ex@c@\MT@ex@c@name @factor} + too large in list\MessageBreak `\MT@ex@c@name'. Setting it to the + maximum of 1000}% + \MT@glet@nc{MT@ex@c@\MT@ex@c@name @factor}\@m + \fi + }% + \def\MT@permutelist{ex@c}% + \setkeys{MT@cfg}{#2}% + \MT@permute + \MT@gdef@n{MT@ex@c@\MT@ex@c@name}{#3}% + \MT@end@catcodes +} +\def\SetTracking{% + \MT@begin@catcodes + \MT@SetTracking +} +\newcommand*\MT@SetTracking[3][]{% + \let\MT@extra@context\@empty + \MT@set@named@keys{MT@tr@c}{#1}% + \def\MT@permutelist{tr@c}% + \setkeys{MT@cfg}{#2}% + \MT@permute + \KV@@sp@def\@tempa{#3}% + \MT@ifempty\@tempa\relax{% + \MT@ifint\@tempa + {\MT@xdef@n{MT@tr@c@\MT@tr@c@name}{\@tempa}}% + {\MT@warning{Value `\@tempa' is not a number in\MessageBreak + tracking set `\MT@curr@set@name'}}}% + \MT@end@catcodes +} +\def\SetExtraSpacing{% + \MT@begin@catcodes + \MT@SetExtraSpacing +} +\newcommand*\MT@SetExtraSpacing[3][]{% + \let\MT@extra@context\@empty + \MT@set@named@keys{MT@sp@c}{#1}% + \def\MT@permutelist{sp@c}% + \setkeys{MT@cfg}{#2}% + \MT@permute + \MT@gdef@n{MT@sp@c@\MT@sp@c@name}{#3}% + \MT@end@catcodes +} +\def\SetExtraKerning{% + \MT@begin@catcodes + \MT@SetExtraKerning +} +\newcommand*\MT@SetExtraKerning[3][]{% + \let\MT@extra@context\@empty + \MT@set@named@keys{MT@kn@c}{#1}% + \def\MT@permutelist{kn@c}% + \setkeys{MT@cfg}{#2}% + \MT@permute + \MT@gdef@n{MT@kn@c@\MT@kn@c@name}{#3}% + \MT@end@catcodes +} +\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@pr@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@pr@c}{context}[]{% + \MT@ifempty{#1}\relax{\def\MT@extra@context{#1}}% + \ifx\MT@copy@font\MT@copy@font@\else + \MT@warning@nl{If protrusion contexts don't work as expected, + \MessageBreak 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.}% + } + \define@key{MT@pr@c}{context}[]{% + \MT@error{Protrusion contexts only work with pdftex + 1.40.4\MessageBreak or later. + Ignoring `context' key\on@line}% + {Upgrade pdftex.}% + } +} +\define@key{MT@pr@c}{unit}[character]{% + \MT@glet@nc{MT@pr@c@\MT@curr@set@name @unit}\@empty + \def\@tempa{#1}% + \MT@ifstreq\@tempa{character}\relax{% + \MT@ifdimen\@tempa + {\MT@glet@nc{MT@pr@c@\MT@curr@set@name @unit}\@tempa}% + {\MT@warn@nodim{character widths}}% + }% +} +\define@key{MT@tr@c}{unit}[1em]{% + \MT@glet@nc{MT@tr@c@\MT@curr@set@name @unit}\@empty + \def\@tempa{#1}% + \MT@ifdimen\@tempa + {\MT@glet@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}}% +} +\MT@map@clist@n{sp,kn}{% + \define@key{MT@#1@c}{unit}[space]{% + \MT@glet@nc{MT@#1@c@\MT@curr@set@name @unit}\@empty + \def\@tempa{##1}% + \MT@ifstreq\@tempa{character}\relax{% + \MT@glet@nc{MT@#1@c@\MT@curr@set@name @unit}\m@ne + \MT@ifstreq\@tempa{space}\relax{% + \MT@ifdimen\@tempa + {\MT@glet@nc{MT@#1@c@\MT@curr@set@name @unit}\@tempa}% + {\MT@warn@nodim{width of space}}% + }% + }% + }% +} +\MT@map@clist@n{stretch,shrink,step}{% + \define@key{MT@ex@c}{#1}[]{% + \MT@ifempty{##1}\relax{% + \MT@ifint{##1}{% + \MT@gdef@n{MT@ex@c@\MT@curr@set@name @#1}{##1 }% + }{% + \MT@warning{% + Value `##1' for option `#1' is not a number.\MessageBreak + Ignoring it}% + }% + }% + }% +} +\define@key{MT@ex@c}{auto}[true]{% + \def\@tempa{#1}% + \csname if\@tempa\endcsname + \MT@requires@pdftex4{% + \MT@gdef@n{MT@ex@c@\MT@curr@set@name @auto}{autoexpand}% + }{% + \MT@warning{pdftex too old for automatic font expansion}% + } + \else + \MT@requires@pdftex4{% + \MT@glet@nc{MT@ex@c@\MT@curr@set@name @auto}\@empty + }\relax + \fi +} +\MT@define@opt@key{tr}{spacing} +\MT@define@opt@key{tr}{outerspacing} +\MT@define@opt@key{tr}{outerkerning} +\define@key{MT@tr@c}{noligatures}[]% + {\MT@xdef@n{MT@tr@c@\MT@curr@set@name @noligatures}{#1}} +\define@key{MT@tr@c}{outer spacing}[]{\setkeys{MT@tr@c}{outerspacing={#1}}} +\define@key{MT@tr@c}{outer kerning}[]{\setkeys{MT@tr@c}{outerkerning={#1}}} +\define@key{MT@tr@c}{no ligatures}[]{\setkeys{MT@tr@c}{noligatures={#1}}} +\def\MT@inh@split#1=#2=#3\relax{% + \def\@tempa{#1}% + \ifx\@tempa\@empty \else + \MT@get@slot + \ifnum\MT@char > \m@ne + \let\MT@val\MT@char + \MT@map@clist@n{#2}{% + \def\@tempa{##1}% + \ifx\@tempa\@empty \else + \MT@get@slot + \ifnum\MT@char > \m@ne + \MT@exp@cs\MT@xadd{MT@inh@\MT@listname @\MT@val @}{{\MT@char}}% + \fi + \fi + }% + \fi + \fi +} +\MT@def@bool@opt{DVIoutput}{% + \csname if\@tempa\endcsname + \ifnum\pdfoutput>\z@ \MT@opt@DVItrue \fi + \pdfoutput\z@ + \else + \ifnum\pdfoutput<\@ne \MT@opt@DVItrue \fi + \pdfoutput\@ne + \fi +} +\MT@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}{Upgrade pdftex.}% + \fi + } +} +\ifnum\pdfoutput<\@ne \else + \MT@requires@pdftex4{ + \MT@expansiontrue + \MT@autotrue + }\relax +\fi +\def\MT@define@optionX#1#2{% + \define@key{MTX}{#1}[true]{% + \edef\@tempb{\csname MT@rbba@#1\endcsname}% + \MT@map@clist@n{##1}{% + \KV@@sp@def\MT@val{####1}% + \MT@ifempty\MT@val\relax{% + \@tempcnta=\m@ne + \MT@ifstreq\MT@val{true}{% + \MT@checksetup{#1}{% + \@tempcnta=\csname MT@\@tempb @level\endcsname + \MT@vinfo{Enabling #1 + (level \number\csname MT@\@tempb @level\endcsname)\on@line}% + }% + }{% + \MT@ifstreq\MT@val{false}{% + \@tempcnta=\z@ + \MT@vinfo{Disabling #1\on@line}% + }{% + \MT@ifstreq\MT@val{compatibility}{% + \MT@checksetup{#1}{% + \@tempcnta=\@ne + \MT@let@nc{MT@\@tempb @level}\@ne + \MT@vinfo{Setting #1 to level 1\on@line}% + }% + }{% + \MT@ifstreq\MT@val{nocompatibility}{% + \MT@checksetup{#1}{% + \@tempcnta=\tw@ + \MT@let@nc{MT@\@tempb @level}\tw@ + \MT@vinfo{Setting #1 to level 2\on@line}% + }% + }{\MT@error{Value `\MT@val' for key `#1' not recognised} + {Use any of `true', `false', `compatibility' or + `nocompatibility'.}% + }% + }% + }% + }% + \ifnum\@tempcnta>\m@ne + #2\@tempcnta\relax + \fi + }% + }% + }% +} +\def\MT@checksetup#1{% + \csname ifMT@#1\endcsname + \expandafter\@firstofone + \else + \MT@error{You cannot enable #1 if it was disabled\MessageBreak + in the package options}{Load microtype with #1 enabled.}% + \expandafter\@gobble + \fi +} +\MT@define@optionX{protrusion}\MT@protrudechars +\MT@define@optionX{expansion}\MT@adjustspacing +\let\MT@protrudechars\pdfprotrudechars +\let\MT@adjustspacing\pdfadjustspacing +\MT@requires@pdftex6{ + \def\MT@define@optionX@#1#2{% + \define@key{MTX}{#1}[true]{% + \MT@map@clist@n{##1}{% + \KV@@sp@def\MT@val{####1}% + \MT@ifempty\MT@val\relax{% + \@tempcnta=\m@ne + \MT@ifstreq\MT@val{true}{% + \MT@checksetup{#1}{% + \@tempcnta=\@ne + \MT@vinfo{Enabling #1\on@line}% + }% + }{% + \MT@ifstreq\MT@val{false}{% + \@tempcnta=\z@ + \MT@vinfo{Disabling #1\on@line}% + }{\MT@error{Value `\MT@val' for key `#1' not recognised} + {Use either `true' or `false'}% + }% + }% + \ifnum\@tempcnta>\m@ne + #2\relax + \fi + }% + }% + }% + } + \MT@define@optionX@{tracking}{\ifnum\@tempcnta=\z@ \let\MT@tracking\MT@set@tr@zero + \else \let\MT@tracking\MT@tracking@ \fi} + \MT@define@optionX@{spacing}{\pdfadjustinterwordglue\@tempcnta} + \MT@define@optionX@{kerning}{\pdfprependkern\@tempcnta + \pdfappendkern \@tempcnta} +}{ +\define@key{MTX}{tracking}[true]{\MT@warning{Ignoring tracking setup}} +\define@key{MTX}{kerning}[true]{\MT@warning{Ignoring kerning setup}} +\define@key{MTX}{spacing}[true]{\MT@warning{Ignoring spacing setup}} +} +\define@key{MTX}{activate}[true]{% + \setkeys{MTX}{protrusion={#1}}% + \setkeys{MTX}{expansion={#1}}% +} +\def\MT@setup@PDF{% + \MT@info@nl{Generating \ifnum\pdfoutput<\@ne DVI \else PDF \fi output% + \ifMT@opt@DVI\space (changed by \MT@MT)\fi}% +} +\def\MT@setup@copies{% + \ifx\MT@copy@font\relax\else \MT@info@nl{Using font copies for contexts}\fi +} +\def\MT@setup@protrusion{% + \ifMT@protrusion + \edef\MT@active@features{\MT@active@features,pr}% + \MT@protrudechars\MT@pr@level + \MT@info@nl{Character protrusion enabled (level \number\MT@pr@level)% + \ifnum\MT@pr@factor=\MT@factor@default \else,\MessageBreak + factor: \number\MT@pr@factor\fi + \ifx\MT@pr@unit\@empty \else,\MessageBreak unit: \MT@pr@unit\fi}% + \MT@check@active@set{pr}% + \else + \let\MT@protrusion\relax + \MT@info@nl{No character protrusion}% + \fi +} +\def\MT@setup@expansion{% + \ifnum\pdfoutput<\@ne + \ifMT@opt@expansion \else + \MT@expansionfalse + \fi + \fi + \ifMT@expansion + \ifnum\MT@stretch=\m@ne + \let\MT@stretch\MT@stretch@default + \fi + \ifnum\MT@shrink=\m@ne + \let\MT@shrink\MT@stretch + \fi + \ifnum\MT@step=\m@ne + \MT@requires@pdftex6{% + \def\MT@step{1 }% + }{% + \ifnum\MT@stretch>\MT@shrink + \ifnum\MT@shrink=\z@ + \@tempcnta=\MT@stretch + \else + \@tempcnta=\MT@shrink + \fi + \else + \ifnum\MT@stretch=\z@ + \@tempcnta=\MT@shrink + \else + \@tempcnta=\MT@stretch + \fi + \fi + \divide\@tempcnta 5\relax + \ifnum\@tempcnta=\z@ \@tempcnta=\@ne \fi + \edef\MT@step{\number\@tempcnta\space}% + }% + \fi + \ifnum\MT@step=\z@ + \MT@warning@nl{The expansion step cannot be set to zero.\MessageBreak + Setting it to one}% + \def\MT@step{1 }% + \fi + \let\MT@auto\@empty + \ifMT@auto + \MT@requires@pdftex4{% + \ifnum\pdfoutput<\@ne + \ifMT@opt@auto + \MT@error{% + Automatic font expansion only works for PDF output.\MessageBreak + However, you are creating a DVI file} + {If you have created expanded fonts instances, remove `auto' from% + \MessageBreak the package options. Otherwise, you have to switch + off expansion\MessageBreak completely.}% + \fi + \MT@autofalse + \else + \def\MT@auto{autoexpand}% + \fi + }{% + \MT@error{% + The pdftex version you are using is too old for\MessageBreak + automatic font expansion}% + {If you have created expanded fonts instances, remove `auto' from\MessageBreak + the package options. Otherwise, you have to switch off expansion\MessageBreak + completely, or upgrade pdftex to version 1.20 or newer.}% + \MT@autofalse + \def\MT@auto{1000 }% + }% + \else + \MT@requires@pdftex4\relax{% + \def\MT@auto{1000 }% + }% + \fi + \ifMT@selected + \let\MT@set@ex@codes\MT@set@ex@codes@s + \else + \let\MT@set@ex@codes\MT@set@ex@codes@n + \fi + \ifnum\MT@stretch=\z@ + \ifnum\MT@shrink=\z@ + \MT@warning@nl{% + Both the stretch and shrink limit are set to zero.\MessageBreak + Disabling font expansion}% + \MT@expansionfalse + \fi + \fi + \fi + \ifMT@expansion + \edef\MT@active@features{\MT@active@features,ex}% + \MT@adjustspacing\MT@ex@level + \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}% + \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 + \hsize\maxdimen\normalfont\pretolerance\m@ne\tolerance\m@ne + \hbadness\z@\showboxdepth\z@\ ##1\color@endgroup}}% + \gdef\showhyphens##1{\setbox0\vbox{% + \color@begingroup\pdfadjustspacing\z@\everypar{}\parfillskip\z@skip + \hsize\maxdimen\normalfont\pretolerance\m@ne\tolerance\m@ne + \hbadness\z@\showboxdepth\z@\ ##1\color@endgroup}}% + \else + \let\MT@expansion\relax + \MT@info@nl{No font expansion}% + \fi +} +\MT@requires@pdftex6{% + \def\MT@setup@tracking{% + \ifMT@tracking + \edef\MT@active@features{\MT@active@features,tr}% + \MT@info@nl{Tracking enabled}% + \MT@check@active@set{tr}% + \ifMT@protrusion\else\MT@protrudechars\@ne\fi + \else + \let\MT@tracking\relax + \MT@info@nl{No adjustment of tracking}% + \fi + } + \def\MT@setup@spacing{% + \ifMT@spacing + \edef\MT@active@features{\MT@active@features,sp}% + \pdfadjustinterwordglue\@ne + \MT@info@nl{Adjustment of interword spacing enabled}% + \MT@with@package@T{ragged2e}{% + \MT@warning@nl{You are using the `ragged2e' package.\MessageBreak + Adjustment of interword spacing may lead to\MessageBreak + undesired results when used with `ragged2e'.\MessageBreak + In this case, disable the `spacing' option}% + }% + \MT@check@active@set{sp}% + \else + \let\MT@spacing\relax + \MT@info@nl{No adjustment of interword spacing}% + \fi + } + \def\MT@setup@spacing@check{% + \ifMT@spacing + \ifMT@babel \else + \ifnum\sfcode`\. > 1500 + \MT@ifstreq\MT@sp@context{nonfrench}\relax{% + \MT@warning@nl{% + \string\nonfrenchspacing\space is active. Adjustment of\MessageBreak + interword spacing will disable it. You might want\MessageBreak + to add `\@backslashchar\MT@MT context{spacing=nonfrench}'\MessageBreak + to your preamble}% + }% + \fi + \fi + \fi + } + \def\MT@setup@kerning{% + \ifMT@kerning + \edef\MT@active@features{\MT@active@features,kn}% + \pdfprependkern\@ne + \pdfappendkern\@ne + \MT@info@nl{Adjustment of character kerning enabled}% + \MT@check@active@set{kn}% + \else + \let\MT@kerning\relax + \MT@info@nl{No adjustment of character kerning}% + \fi + } +}{ + \def\MT@error@doesnt@work#1{% + \csname ifMT@#1\endcsname + \MT@error{The #1 feature only works with pdftex 1.40\MessageBreak + or newer. Switching it off} + {Upgrade pdftex.}% + \csname MT@#1false\endcsname + \MT@let@nc{MT@#1}\relax + \else + \MT@info@nl{No adjustment of #1% + \space(pdftex too old)% + }% + \fi + } + \def\MT@setup@tracking{\MT@error@doesnt@work{tracking}} + \def\MT@setup@kerning {\MT@error@doesnt@work{kerning}} + \def\MT@setup@spacing {\MT@error@doesnt@work{spacing}} +} +\def\MT@setup@warntracking +{% + \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\MessageBreak + able to create the virtual fonts on the fly}% + \MT@glet\MT@warn@tracking@DVI\relax + }% + \else + \def\MT@warn@tracking@DVI{% + \ifnum\pdfprotrudechars<\@ne \global\pdfprotrudechars\@ne \fi + \MT@glet\MT@warn@tracking@DVI\relax + }% + \fi + \ifnum\MT@letterspace=\m@ne + \let\MT@letterspace\MT@letterspace@default + \else + \MT@ls@too@large\MT@letterspace + \fi +} +\def\MT@setup@noligatures{% + \MT@requires@pdftex5{% + \ifMT@noligatures \else + \let\MT@noligatures\relax + \fi + }\relax +} +\endinput +%% +%% End of file `microtype-pdftex.def'. diff --git a/Master/texmf-dist/tex/latex/microtype/microtype-xetex.def b/Master/texmf-dist/tex/latex/microtype/microtype-xetex.def new file mode 100644 index 00000000000..581695e43d5 --- /dev/null +++ b/Master/texmf-dist/tex/latex/microtype/microtype-xetex.def @@ -0,0 +1,480 @@ +%% +%% This is file `microtype-xetex.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% microtype.dtx (with options: `xetex-def') +%% +%% ------------------------------------------------------------------------ +%% +%% The `microtype' package +%% Subliminal refinements towards typographical perfection +%% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> +%% +%% This work may be distributed and/or modified under the conditions of the +%% LaTeX Project Public License, either version 1.3c of this license or (at +%% your option) any later version. The latest version of this license is in: +%% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part +%% of all distributions of LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `author-maintained'. +%% +%% This work consists of the files microtype.dtx and microtype.ins and the +%% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +%% microtype-luatex.def, microtype.lua and letterspace.sty. +%% +%% ------------------------------------------------------------------------ +%% This file contains enginge-specific definitions. +%% ------------------------------------------------------------------------ +%% +\ProvidesFile + {microtype-xetex.def} + [2013/03/13 v2.5 + Definitions specific to + xetex + (RS)] +\ifdim 0\XeTeXrevision pt < 0.9997pt + \def\MT@xetex@no{1} +\else + \def\MT@xetex@no{2} +\fi +\ifnum + \csname MT@\MT@engine tex@no\endcsname < 2 + \MT@warning@nl{You + are using a \MT@engine tex version older than + 0.9997% + .\MessageBreak + `\MT@MT' does not work with this version.\MessageBreak + Please install a newer version of \MT@engine tex% + .\MessageBreak I will quit now} + \MT@clear@options +\endinput\fi +\def\MT@ifint#1{% + \if!\ifnum9<1#1!\else?\fi + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +\def\MT@ifdimen#1{% + \setbox\z@=\hbox{% + \MT@count=1#1\relax + \ifnum\MT@count=\@ne + \aftergroup\@secondoftwo + \else + \aftergroup\@firstoftwo + \fi + }% +} +\def\MT@ifstreq#1#2{% + \edef\MT@res@a{#1}% + \edef\MT@res@b{#2}% + \ifx\MT@res@a\MT@res@b + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} +\def\MT@do@font#1{% + \@tempcnta=\z@ + \MT@loop #1% + \advance\@tempcnta \@ne + \ifnum\@tempcnta < \XeTeXcountglyphs\MT@font \MT@repeat +} + \def\MT@ledmac@setup{% + \ifMT@protrusion + \MT@ifdefined@c@TF\l@dunhbox@line{% + \MT@info@nl{Patching ledmac to enable character protrusion}% + \newdimen\MT@led@kern + \let\MT@led@unhbox@line\l@dunhbox@line + \renewcommand*{\l@dunhbox@line}[1]{% + \ifhbox##1% + \MT@led@kern=\rightmarginkern##1% + \kern\leftmarginkern##1% + \MT@led@unhbox@line##1% + \kern\MT@led@kern + \fi + }% + }{% + \MT@warning@nl{% + Character protrusion in paragraphs with line\MessageBreak + numbering will only work if you update ledmac}% + }% + \fi + } +\def\MT@setupfont{\MT@setupfont@hook} +\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 +} +\g@addto@macro\MT@setupfont{% + \MT@check@font + \ifMT@inlist@ + \else + \MT@vinfo{Setting up font `\MT@@font'\on@line}% + \MT@protrusion +} +\g@addto@macro\MT@setupfont{% + \MT@register@font + \fi +} +\def\MT@protrusion{\MT@maybe@do{pr}} +\def\MT@set@pr@codes{% + \MT@nofamilyfalse + \MT@if@list@exists{% + \ifMT@nofamily + \MT@ifdefined@n@TF{\MT@encoding-\MT@family-settings}\relax{% + \MT@info@nl{Loading generic settings for font family\MessageBreak + `\MT@family' (encoding: \MT@encoding).\MessageBreak + For optimal results, create family-specific settings.\MessageBreak + See the microtype manual for details}% + \MT@glet@nc{\MT@encoding-\MT@family-settings}\@empty + }% + \fi + \MT@get@font@dimen@six{% + \MT@get@opt + \MT@reset@pr@codes + \MT@get@inh@list + \MT@set@inputenc{c}% + \MT@load@list\MT@pr@c@name + \MT@set@listname + \MT@let@cn\@tempc{MT@pr@c@\MT@pr@c@name}% + \expandafter\MT@set@codes\@tempc,\relax,}% + }\MT@reset@pr@codes +} +\def\MT@get@font@dimen@six{% + \ifnum\fontdimen6\MT@font=\z@ + \MT@warning@nl{% + Font `\MT@@font' does not specify its\MessageBreak + \@backslashchar fontdimen 6 (width of an `em')! Therefore,\MessageBreak + \@nameuse{MT@abbr@\MT@feat} will not work with this font}% + \expandafter\@gobble + \else + \edef\MT@dimen@six{\number\fontdimen6\MT@font}% + \expandafter\@firstofone + \fi +} +\def\MT@set@all@pr#1#2{% + \let\MT@temp\@empty + \MT@ifempty{#1}\relax{\g@addto@macro\MT@temp{\lpcode\MT@font\@tempcnta=#1}}% + \MT@ifempty{#2}\relax{\g@addto@macro\MT@temp{\rpcode\MT@font\@tempcnta=#2}}% + \MT@do@font\MT@temp +} +\def\MT@reset@pr@codes@{\MT@set@all@pr\z@\z@} +\let\MT@reset@pr@codes\relax +\def\MT@the@pr@code{\@tempcntb} +\def\MT@set@codes#1,{% + \ifx\relax#1\@empty\else + \MT@split@codes #1==\relax + \expandafter\MT@set@codes + \fi +} +\def\MT@split@codes#1=#2=#3\relax{% + \def\@tempa{#1}% + \ifx\@tempa\@empty \else + \MT@get@slot + \ifx\MT@char\@empty \else + \MT@get@char@unit + \csname MT@\MT@feat @split@val\endcsname#2\relax + \fi + \fi +} +\def\MT@pr@split@val#1,#2\relax{% + \def\@tempb{#1}% + \MT@ifempty\@tempb\relax{% + \MT@scale@to@em + \lpcode\MT@font\MT@char=\MT@the@pr@code + }% + \def\@tempb{#2}% + \MT@ifempty\@tempb\relax{% + \MT@scale@to@em + \rpcode\MT@font\MT@char=\MT@the@pr@code + }% + \MT@ifdefined@c@T\MT@pr@inh@name{% + \MT@ifdefined@n@T{MT@inh@\MT@pr@inh@name @\MT@char @}{% + \MT@exp@cs\MT@map@tlist@c + {MT@inh@\MT@pr@inh@name @\MT@char @}% + \MT@set@pr@heirs + }% + }% +} +\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{% + \ifnum\MT@char@<\z@ + \setbox\z@=\hbox{\MT@font \XeTeXglyph-\MT@char@}% + \MT@count=\wd\z@ + \else + \MT@count=\fontcharwd\MT@font\MT@char@\relax + \fi + \ifnum\MT@count=\z@ \MT@info@missing@char \fi +} +\def\MT@set@pr@heirs#1{% + \lpcode\MT@font #1 =\lpcode\MT@font\MT@char\relax + \rpcode\MT@font #1 =\rpcode\MT@font\MT@char\relax +} +\def\MT@preset@pr{% + \expandafter\expandafter\expandafter\MT@preset@pr@ + \csname MT@pr@c@\MT@pr@c@name @preset\endcsname\@nil +} +\def\MT@preset@pr@#1,#2\@nil{% + \ifx\MT@pr@unit@\@empty + \MT@warn@preset@towidth{pr}% + \let\MT@preset@aux\MT@preset@aux@factor + \else + \def\MT@preset@aux{\MT@preset@aux@space2}% + \fi + \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{% + \@tempcntb=#1\relax + \MT@scale@factor + \edef#2{\number\@tempcntb}% +} +\def\MT@preset@aux@space#1#2#3{% + \def\@tempb{#2}% + \MT@get@space@unit#1% + \MT@scale@to@em + \edef#3{\number\@tempcntb}% +} +\def\MT@warn@preset@towidth#1{% + \MT@warning@nl{% + Cannot preset characters relative to their widths\MessageBreak + for \@nameuse{MT@abbr@#1} list `\@nameuse{MT@#1@c@name}'. Presetting them% + \MessageBreak relative to 1em instead}% +} +\DeclareRobustCommand\lsstyle{% + \MT@error{Letterspacing currently doesn't work with xetex} + {Run pdftex or luatex, or use the `soul' package instead.}% + \MT@glet\lsstyle\relax +} +\def\MT@get@slot@{% + \ifnum\XeTeXfonttype\MT@font=\z@ + \ifnum\MT@char > \m@ne + \ifMT@norest \else + \MT@warn@rest + \let\MT@char\@empty + \fi + \else + \MT@warn@unknown + \fi + \else + \ifnum\MT@char=47\relax + \ifMT@norest \edef\MT@char{U47}% + \else + \@tempcnta=\XeTeXglyphindex"\expandafter\@gobble\@tempa"\relax + \ifnum\@tempcnta=\z@ + \MT@warn@unknown + \let\MT@char\@empty + \else + \edef\MT@char{\@tempa\space}% + \edef\MT@char@{-\the\@tempcnta}% + \fi + \fi + \else + \ifnum\MT@char > \m@ne + \ifMT@norest + \@tempcnta=\XeTeXcharglyph\MT@char\relax + \ifnum\@tempcnta=\z@ + \MT@info@missing@char + \let\MT@char\@empty + \else + \edef\MT@char{U\MT@char}% + \fi + \else + \MT@warn@rest + \let\MT@char\@empty + \fi + \else + \MT@warn@unknown + \let\MT@char\@empty + \fi + \fi + \fi +} +\def\MT@max@char + {1114111 } +\def\MT@max@slot + {1114111 } +\renewcommand*\DisableLigatures[2][]{% + \MT@error{Disabling ligatures of a font is only possible\MessageBreak + with pdftex version 1.30 or newer.\MessageBreak + Ignoring \string\DisableLigatures}{% + Use + pdftex.}% +} +\def\SetProtrusion{% + \MT@begin@catcodes + \MT@SetProtrusion +} +\newcommand*\MT@SetProtrusion[3][]{% + \let\MT@extra@context\@empty + \MT@set@named@keys{MT@pr@c}{#1}% + \def\MT@permutelist{pr@c}% + \setkeys{MT@cfg}{#2}% + \MT@permute + \MT@gdef@n{MT@pr@c@\MT@pr@c@name}{#3}% + \MT@end@catcodes +} + \define@key{MT@pr@c}{context}[]{% + \MT@error{Protrusion contexts only work with pdftex + \MessageBreak or luatex. + Ignoring `context' key\on@line}% + {Use pdftex or luatex.}% + } +\define@key{MT@pr@c}{unit}[character]{% + \MT@glet@nc{MT@pr@c@\MT@curr@set@name @unit}\@empty + \def\@tempa{#1}% + \MT@ifstreq\@tempa{character}\relax{% + \MT@ifdimen\@tempa + {\MT@glet@nc{MT@pr@c@\MT@curr@set@name @unit}\@tempa}% + {\MT@warn@nodim{character widths}}% + }% +} +\def\MT@inh@split#1=#2=#3\relax{% + \def\@tempa{#1}% + \ifx\@tempa\@empty \else + \MT@get@slot + \ifx\MT@char\@empty\else + \let\MT@val\MT@char + \MT@map@clist@n{#2}{% + \def\@tempa{##1}% + \ifx\@tempa\@empty \else + \MT@get@slot + \ifx\MT@char\@empty\else + \MT@exp@cs\MT@xadd{MT@inh@\MT@listname @\MT@val @}{{\MT@char}}% + \fi + \fi + }% + \fi + \fi +} +\MT@def@bool@opt{DVIoutput}{% + \csname if\@tempa\endcsname + \MT@warning@nl{Ignoring `DVIoutput' option}% + \fi +} + \MT@def@bool@opt{copyfonts}{% + \csname if\@tempa\endcsname + \MT@error + {The `copyfonts' option does not work with xetex} + {Use pdftex or luatex instead.}% + \fi + } +\def\MT@define@optionX#1#2{% + \define@key{MTX}{#1}[true]{% + \edef\@tempb{\csname MT@rbba@#1\endcsname}% + \MT@map@clist@n{##1}{% + \KV@@sp@def\MT@val{####1}% + \MT@ifempty\MT@val\relax{% + \@tempcnta=\m@ne + \MT@ifstreq\MT@val{true}{% + \MT@checksetup{#1}{% + \@tempcnta=\csname MT@\@tempb @level\endcsname + \MT@vinfo{Enabling #1 + (level \number\csname MT@\@tempb @level\endcsname)\on@line}% + }% + }{% + \MT@ifstreq\MT@val{false}{% + \@tempcnta=\z@ + \MT@vinfo{Disabling #1\on@line}% + }{% + \MT@ifstreq\MT@val{compatibility}{% + \MT@checksetup{#1}{% + \@tempcnta=\@ne + \MT@let@nc{MT@\@tempb @level}\@ne + \MT@vinfo{Setting #1 to level 1\on@line}% + }% + }{% + \MT@ifstreq\MT@val{nocompatibility}{% + \MT@checksetup{#1}{% + \@tempcnta=\tw@ + \MT@let@nc{MT@\@tempb @level}\tw@ + \MT@vinfo{Setting #1 to level 2\on@line}% + }% + }{\MT@error{Value `\MT@val' for key `#1' not recognised} + {Use any of `true', `false', `compatibility' or + `nocompatibility'.}% + }% + }% + }% + }% + \ifnum\@tempcnta>\m@ne + #2\@tempcnta\relax + \fi + }% + }% + }% +} +\def\MT@checksetup#1{% + \csname ifMT@#1\endcsname + \expandafter\@firstofone + \else + \MT@error{You cannot enable #1 if it was disabled\MessageBreak + in the package options}{Load microtype with #1 enabled.}% + \expandafter\@gobble + \fi +} +\MT@define@optionX{protrusion}\MT@protrudechars +\let\MT@protrudechars\XeTeXprotrudechars +\define@key{MTX}{expansion}[true]{\MT@warning{Ignoring expansion setup}} +\define@key{MTX}{tracking}[true]{\MT@warning{Ignoring tracking setup}} +\define@key{MTX}{kerning}[true]{\MT@warning{Ignoring kerning setup}} +\define@key{MTX}{spacing}[true]{\MT@warning{Ignoring spacing setup}} +\define@key{MTX}{activate}[true]{% + \setkeys{MTX}{protrusion={#1}}% +} +\let\MT@setup@PDF\relax +\let\MT@setup@copies\relax +\def\MT@setup@protrusion{% + \ifMT@protrusion + \edef\MT@active@features{\MT@active@features,pr}% + \MT@protrudechars\MT@pr@level + \MT@info@nl{Character protrusion enabled (level \number\MT@pr@level)% + \ifnum\MT@pr@factor=\MT@factor@default \else,\MessageBreak + factor: \number\MT@pr@factor\fi + \ifx\MT@pr@unit\@empty \else,\MessageBreak unit: \MT@pr@unit\fi}% + \MT@check@active@set{pr}% + \else + \let\MT@protrusion\relax + \MT@info@nl{No character protrusion}% + \fi +} +\def\MT@setup@expansion{% + \ifMT@expansion + \ifMT@opt@expansion + \MT@error{Font expansion does not work with xetex} + {Use pdftex or luatex instead.}% + \fi + \fi +} + \def\MT@error@doesnt@work#1{% + \csname ifMT@#1\endcsname + \MT@error{The #1 feature only works with pdftex 1.40\MessageBreak + or newer. Switching it off} + {Use pdftex instead.}% + \csname MT@#1false\endcsname + \MT@let@nc{MT@#1}\relax + \else + \MT@info@nl{No adjustment of #1% + }% + \fi + } + \def\MT@setup@tracking{\MT@error@doesnt@work{tracking}} + \def\MT@setup@kerning {\MT@error@doesnt@work{kerning}} + \def\MT@setup@spacing {\MT@error@doesnt@work{spacing}} +\let\MT@setup@warntracking\relax +\let\MT@setup@noligatures\relax +\endinput +%% +%% End of file `microtype-xetex.def'. diff --git a/Master/texmf-dist/tex/latex/microtype/microtype.cfg b/Master/texmf-dist/tex/latex/microtype/microtype.cfg index c0b735f6294..f1d91115c63 100644 --- a/Master/texmf-dist/tex/latex/microtype/microtype.cfg +++ b/Master/texmf-dist/tex/latex/microtype/microtype.cfg @@ -9,8 +9,8 @@ %% ------------------------------------------------------------------------ %% %% The `microtype' package -%% An interface to the micro-typographic extensions of pdfTeX -%% Copyright (c) 2004--2010 R Schlicht <w.m.l@gmx.net> +%% Subliminal refinements towards typographical perfection +%% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> %% %% This work may be distributed and/or modified under the conditions of the %% LaTeX Project Public License, either version 1.3c of this license or (at @@ -21,7 +21,8 @@ %% This work has the LPPL maintenance status `author-maintained'. %% %% This work consists of the files microtype.dtx and microtype.ins and the -%% derived files microtype.sty, microtype.lua and letterspace.sty. +%% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +%% microtype-luatex.def, microtype.lua and letterspace.sty. %% %% ------------------------------------------------------------------------ %% This is the main configuration file for the `microtype' package. @@ -39,7 +40,7 @@ %% \ProvidesFile {microtype.cfg} - [2010/01/10 v2.4 + [2013/03/13 v2.5 microtype main configuration file (RS)] @@ -50,37 +51,37 @@ { } \DeclareMicrotypeSet{allmath} - { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1,OML,OMS,U} } + { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,EU1,EU2,TS1,OML,OMS,U} } \DeclareMicrotypeSet{alltext} - { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1} } + { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1,EU1,EU2} } \DeclareMicrotypeSet{basicmath} - { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,OML,OMS}, + { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,EU1,EU2,OML,OMS}, family = {rm*,sf*}, series = {md*}, size = {normalsize,footnotesize,small,large} } \DeclareMicrotypeSet{basictext} - { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5}, + { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,EU1,EU2}, family = {rm*,sf*}, series = {md*}, size = {normalsize,footnotesize,small,large} } \DeclareMicrotypeSet{smallcaps} - { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1}, + { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1,EU1,EU2}, shape = {sc*} } \DeclareMicrotypeSet{footnotesize} - { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1}, + { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1,EU1,EU2}, size = {-small} } \DeclareMicrotypeSet{scriptsize} - { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1}, + { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1,EU1,EU2}, size = {-footnotesize} } @@ -101,7 +102,13 @@ \DeclareMicrotypeVariants{x,j,w,a,d,0,1} +\ifMT@fontspec +\DeclareMicrotypeAlias{lmr} {Latin Modern Roman} +\else \DeclareMicrotypeAlias{lmr} {cmr} % lmodern +\fi +\DeclareMicrotypeAlias{lmsy}{cmsy} +\DeclareMicrotypeAlias{lmm} {cmm} \DeclareMicrotypeAlias{aer} {cmr} % ae \DeclareMicrotypeAlias{zer} {cmr} % zefonts \DeclareMicrotypeAlias{cmor}{cmr} % eco @@ -112,11 +119,19 @@ \DeclareMicrotypeAlias{fp9j}{pplj} % " \DeclareMicrotypeAlias{txr} {ptm} % txfonts \DeclareMicrotypeAlias{qtm} {ptm} % TeX Gyre Termes (formerly: qfonts/QuasiTimes) +\DeclareMicrotypeAlias{TeX Gyre Pagella}{Palatino Linotype} +\DeclareMicrotypeAlias{Palatino LT Std} {Palatino Linotype} +\DeclareMicrotypeAlias{Palatino} {Palatino Linotype} +\DeclareMicrotypeAlias{Asana Math} {Palatino Linotype} \DeclareMicrotypeAlias{zeur}{eur} % Euler VM \DeclareMicrotypeAlias{zeus}{eus} % " \DeclareMicrotypeAlias{chr} {bch} % CH Math \DeclareMicrotypeAlias{mdbch}{bch} % mathdesign/Charter \DeclareMicrotypeAlias{mdugm}{ugm} % mathdesign/URW Garamond +\DeclareMicrotypeAlias{zgmx}{ugm} % garamondx +\DeclareMicrotypeAlias{zgmj}{ugm} % " +\DeclareMicrotypeAlias{zgmI}{ugm} % " +\DeclareMicrotypeAlias{zgmq}{ugm} % " \DeclareMicrotypeAlias{ulg} {blg} % URW LetterGothic -> Bitstream LetterGothic12Pitch \DeclareMicrotypeAlias{zpeus} {zpeu} % Adobe Euro sans -> serif \DeclareMicrotypeAlias{eurosans}{zpeu} % Adobe Euro sans -> serif @@ -298,13 +313,47 @@ y = {\`y,\'y,\~y,\h y,\d y} } +\DeclareCharacterInheritance + { encoding = {EU1,EU2} } + { A = {\`A,\'A,\^A,\~A,\"A,\r A,\k A,\u A}, + a = {\`a,\'a,\^a,\~a,\"a,\r a,\k a,\u a}, + C = {\'C,\c C,\v C}, + c = {\'c,\c c,\v c}, + D = {\v D,\DH}, + d = {\v d,\dj}, + E = {\`E,\'E,\^E,\"E,\k E,\v E}, + e = {\`e,\'e,\^e,\"e,\k e,\v e}, + G = {\u G}, + g = {\u g}, + I = {\`I,\'I,\^I,\"I,\.I}, + i = {\`i,\'i,\^i,\"i,\i}, + L = {\L,\'L,\v L}, + l = {\l,\'l,\v l}, + N = {\'N,\~N,\v N}, + n = {\'n,\~n,\v n}, + O = {\O,\`O,\'O,\^O,\~O,\"O,\H O}, + o = {\o,\`o,\'o,\^o,\~o,\"o,\H o}, + R = {\'R,\v R}, + r = {\'r,\v r}, + S = {\'S,\c S,\v S}, % \SS + s = {\'s,\c s,\v s}, + T = {\c T,\v T}, + t = {\c t,\v t}, + U = {\`U,\'U,\^U,\"U,\H U,\r U}, + u = {\`u,\'u,\^u,\"u,\H u,\r u}, + Y = {\'Y,\"Y}, + y = {\'y,\"y}, + Z = {\'Z,\.Z,\v Z}, + z = {\'z,\.z,\v z} + } + %%% ----------------------------------------------------------------------- %%% TRACKING/LETTERSPACING \SetTracking [ name = default, no ligatures = {f} ] - { encoding = {OT1,T1,T2A,LY1,OT4,QX} } + { encoding = {OT1,T1,T2A,LY1,OT4,QX,EU2} } { } %%% ----------------------------------------------------------------------- @@ -490,7 +539,7 @@ \SetProtrusion [ name = T1-default, load = default ] - { encoding = {T1,LY1} } + { encoding = {T1,LY1,EU1,EU2} } { \AE = {50, }, _ = {100,100}, diff --git a/Master/texmf-dist/tex/latex/microtype/microtype.lua b/Master/texmf-dist/tex/latex/microtype/microtype.lua index 7590e2095b4..8f800c38598 100644 --- a/Master/texmf-dist/tex/latex/microtype/microtype.lua +++ b/Master/texmf-dist/tex/latex/microtype/microtype.lua @@ -9,8 +9,8 @@ -- ------------------------------------------------------------------------ -- -- The `microtype' package --- An interface to the micro-typographic extensions of pdfTeX --- Copyright (c) 2004--2010 R Schlicht <w.m.l@gmx.net> +-- Subliminal refinements towards typographical perfection +-- Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> -- -- This work may be distributed and/or modified under the conditions of the -- LaTeX Project Public License, either version 1.3c of this license or (at @@ -21,7 +21,8 @@ -- This work has the LPPL maintenance status `author-maintained'. -- -- This work consists of the files microtype.dtx and microtype.ins and the --- derived files microtype.sty, microtype.lua and letterspace.sty. +-- derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +-- microtype-luatex.def, microtype.lua and letterspace.sty. -- -- ------------------------------------------------------------------------ -- This file contains auxiliary lua functions. @@ -36,11 +37,11 @@ microtype = {} microtype.module = { name = "microtype", - version = 2.4, - date = "2010/01/10", + version = 2.5, + date = "2013/03/13", description = "microtype module.", - author = "R Schlicht", - copyright = "R Schlicht", + author = "Elie Roux & R Schlicht", + copyright = "Elie Roux & R Schlicht", license = "LPPL", } @@ -48,7 +49,7 @@ if luatextra and luatextra.provides_module then luatextra.provides_module(microtype.module) end -function microtype.ifint(s) +function microtype.if_int(s) if string.find(s,"^-*[0-9]+ *$") then tex.write("@firstoftwo") else @@ -56,7 +57,7 @@ function microtype.ifint(s) end end -function microtype.ifdimen(s) +function microtype.if_dimen(s) if (string.find(s, "^-*[0-9]+(%a*) *$") or string.find(s, "^-*[0-9]*[.,][0-9]+(%a*) *$")) then tex.write("@firstoftwo") @@ -65,7 +66,7 @@ function microtype.ifdimen(s) end end -function microtype.ifstreq(s1, s2) +function microtype.if_str_eq(s1, s2) if s1 == s2 then tex.write("@firstoftwo") else @@ -73,6 +74,17 @@ function microtype.ifstreq(s1, s2) end end +function microtype.name_to_slot(name) + if fonts then + local tfmdata = fonts.ids[font.current()] + if tfmdata and tfmdata.shared then + local otfdata = tfmdata.shared.otfdata + local unicode = otfdata.luatex.unicodes[name] + return unicode and (type(unicode) == "number" and unicode or unicode[1]) + end + end +end + end -- -- diff --git a/Master/texmf-dist/tex/latex/microtype/microtype.sty b/Master/texmf-dist/tex/latex/microtype/microtype.sty index 018f1f958ac..5c925868330 100644 --- a/Master/texmf-dist/tex/latex/microtype/microtype.sty +++ b/Master/texmf-dist/tex/latex/microtype/microtype.sty @@ -4,13 +4,13 @@ %% %% The original source files were: %% -%% microtype.dtx (with options: `package,lua') +%% microtype.dtx (with options: `package') %% %% ------------------------------------------------------------------------ %% %% The `microtype' package -%% An interface to the micro-typographic extensions of pdfTeX -%% Copyright (c) 2004--2010 R Schlicht <w.m.l@gmx.net> +%% Subliminal refinements towards typographical perfection +%% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> %% %% This work may be distributed and/or modified under the conditions of the %% LaTeX Project Public License, either version 1.3c of this license or (at @@ -21,15 +21,16 @@ %% This work has the LPPL maintenance status `author-maintained'. %% %% This work consists of the files microtype.dtx and microtype.ins and the -%% derived files microtype.sty, microtype.lua and letterspace.sty. +%% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +%% microtype-luatex.def, microtype.lua and letterspace.sty. %% %% ------------------------------------------------------------------------ %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage {microtype} - [2010/01/10 v2.4 - Micro-typography with pdfTeX + [2013/03/13 v2.5 + Micro-typographical refinements (RS)] \def\MT@MT {microtype} @@ -90,6 +91,7 @@ \@onlypreamble\DisableLigatures \@onlypreamble\DeclareMicrotypeVariants \@onlypreamble\DeclareMicrotypeBabelHook +\expandafter\let\csname ver@letterspace.sty\endcsname\@empty \def\MT@old@cmd#1#2{% \newcommand*#1{\MT@warning{% \string#1 is deprecated. Please use\MessageBreak @@ -109,66 +111,43 @@ This error message appears because you loaded the `\MT@MT'\MessageBreak package with the option `verbose=errors'. Consult the documentation\MessageBreak in \MT@MT.pdf to find out what went wrong.}} -\def\MT@pdftex@no{0} +\ifcase 0% + \ifx\eTeXversion\@undefined 1\else + \ifx\eTeXversion\relax 1\else + \ifcase\eTeXversion 1\fi + \fi + \fi +\else + \catcode`\^^Q=9 \catcode`\^^X=14 +\fi +\def\MT@clear@options{% + \AtEndOfPackage{\let\@unprocessedoptions\relax\MT@restore@catcodes}% + \let\CurrentOption\@empty + \let\MT@endinput\endinput +} \ifx\normalpdftexversion\@undefined \else \let\pdftexversion \normalpdftexversion \let\pdftexrevision\normalpdftexrevision \let\pdfoutput \normalpdfoutput \fi +\let\MT@engine\relax \ifx\pdftexversion\@undefined \else \ifx\pdftexversion\relax \else - \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 - \fi - \fi + \def\MT@engine{pdf} + \ifx\directlua\@undefined \else + \ifx\directlua\relax \else + \def\MT@engine{lua} \fi \fi \fi \fi -\def\MT@clear@options{% - \AtEndOfPackage{\let\@unprocessedoptions\relax}% - \let\CurrentOption\@empty -} -\ifnum\MT@pdftex@no < - 2 - \MT@warning@nl{You - \ifcase\MT@pdftex@no - don't seem to be using pdftex.\MessageBreak - `\MT@MT' only works with pdftex.\MessageBreak - Try running `pdflatex' instead of - `\ifx\XeTeXversion\@undefined\else xe\fi latex'% - \else - 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% +\ifx\MT@engine\relax + \ifx\XeTeXversion\@undefined \else + \ifx\XeTeXversion\relax \else + \def\MT@engine{xe} \fi - } - \MT@clear@options\MT@restore@catcodes -\endinput\fi + \fi +\fi \RequirePackage{keyval}[1997/11/10] \newtoks\MT@toks \newif\ifMT@if@ @@ -207,41 +186,9 @@ \def\MT@factor@default{1000 } \def\MT@stretch@default{20 } \def\MT@shrink@default{20 } -\def\MT@step@default{4 } \let\MT@letterspace\m@ne \def\MT@letterspace@default{100} \newif\ifMT@document -\ifcase 0% - \ifx\eTeXversion\@undefined 1\else - \ifx\eTeXversion\relax 1\else - \ifcase\eTeXversion 1\fi - \fi - \fi -\else - \catcode`\^^Q=9 \catcode`\^^X=14 -\fi -\def\MT@requires@pdftex#1{% - \ifnum\MT@pdftex@no<#1 \expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi -} -\let\MT@requires@luatex\@secondoftwo -\ifx\directlua\@undefined \else - \ifx\directlua\relax \else - \let\MT@requires@luatex\@firstoftwo - \fi -\fi -\MT@requires@luatex{ -\ifnum\luatexversion<36 - \def\MT@lua{\directlua0} -\else - \def\MT@lua{\directlua} -\fi -\MT@lua{ - if (luatextra and luatextra.use_module) then - luatextra.use_module("microtype") - else - dofile(kpse.find_file("microtype.lua")) - end} -}\relax \def\MT@glet{\global\let} \def\MT@exp@cs#1#2{\expandafter#1\csname#2\endcsname} \def\MT@exp@gcs#1#2{\begingroup\expandafter\endgroup\expandafter#1\csname#2\endcsname} @@ -303,52 +250,6 @@ \fi } \endgroup -\MT@requires@pdftex6{ - \MT@requires@luatex{ - \def\MT@ifint#1{\csname\MT@lua{microtype.ifint([[#1]])}\endcsname} - }{ - \def\MT@ifint#1{% - \ifcase\pdfmatch{^-*[0-9]+ *$}{#1}\relax - \expandafter\@secondoftwo - \else - \expandafter\@firstoftwo - \fi - } - } -}{ - \def\MT@ifint#1{% - \if!\ifnum9<1#1!\else?\fi - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - } -} -\MT@requires@pdftex6{ - \MT@requires@luatex{ - \def\MT@ifdimen#1{\csname\MT@lua{microtype.ifdimen([[#1]])}\endcsname} - }{ - \def\MT@ifdimen#1{% - \ifcase\pdfmatch{^([0-9]+([.,][0-9]+)?|[.,][0-9]+)% - (em|ex|cm|mm|in|pc|pt|dd|cc|bp|sp|nd|nc|px)? *$}{#1}\relax - \expandafter\@secondoftwo - \else - \expandafter\@firstoftwo - \fi - } - } -}{ - \def\MT@ifdimen#1{% - \setbox\z@=\hbox{% - \MT@count=1#1\relax - \ifnum\MT@count=\@ne - \aftergroup\@secondoftwo - \else - \aftergroup\@firstoftwo - \fi - }% - } -} \def\MT@ifdim#1#2#3{% \ifdim #1\p@ #2 #3\p@ \expandafter\@firstoftwo @@ -356,29 +257,6 @@ \expandafter\@secondoftwo \fi } -\MT@requires@pdftex5{ - \MT@requires@luatex{ - \def\MT@ifstreq#1#2{\csname\MT@lua{microtype.ifstreq([[#1]],[[#2]])}\endcsname} - }{ - \def\MT@ifstreq#1#2{% - \ifcase\pdfstrcmp{#1}{#2}\relax - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - } - } -}{ - \def\MT@ifstreq#1#2{% - \edef\MT@res@a{#1}% - \edef\MT@res@b{#2}% - \ifx\MT@res@a\MT@res@b - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - } -} \def\MT@xadd#1#2{% \ifx#1\relax \xdef#1{#2}% @@ -480,7 +358,6 @@ \advance\@tempcnta \@ne \ifnum\@tempcnta < #2\MT@repeat } -\def\MT@do@font{\MT@while@num\z@\@cclvi} \newcount\MT@count \def\MT@increment#1{% ^^X \edef#1{\number\numexpr #1 + 1\relax}% @@ -532,7 +409,7 @@ \@ifl@aded{tex}{wordcount}{% \MT@warning@nl{Detected the `wordcount' utility.\MessageBreak Disabling `\MT@MT', since it wouldn't work}% - \MT@clear@options\MT@restore@catcodes\endinput}\relax + \MT@clear@options\endinput}\relax \let\MT@setup@\@empty \def\MT@addto@setup{\g@addto@macro\MT@setup@} \def\MT@with@package@T#1{\@ifpackageloaded{#1}\@firstofone\@gobble} @@ -543,42 +420,13 @@ \ifMT@inlist@\expandafter\@gobble\fi }\@gobble } -\MT@let@nc{ver@letterspace.sty}\@empty -\MT@requires@pdftex5{ - \def\MT@ledmac@setup{% - \ifMT@protrusion - \MT@ifdefined@c@TF\l@dunhbox@line{% - \MT@info@nl{Patching ledmac to enable character protrusion}% - \newdimen\MT@led@kern - \let\MT@led@unhbox@line\l@dunhbox@line - \renewcommand*{\l@dunhbox@line}[1]{% - \ifhbox##1% - \MT@led@kern=\rightmarginkern##1% - \kern\leftmarginkern##1% - \MT@led@unhbox@line##1% - \kern\MT@led@kern - \fi - }% - }{% - \MT@warning@nl{% - Character protrusion in paragraphs with line\MessageBreak - numbering will only work if you update ledmac}% - }% - \fi - } -}{ - \def\MT@ledmac@setup{% - \ifMT@protrusion - \MT@warning@nl{% - The pdftex version you are using does not allow\MessageBreak - character protrusion in paragraphs with line\MessageBreak - numbering by the `ledmac' package.\MessageBreak - Upgrade pdftex to version 1.30 or later}% - \fi - } -} \def\MT@restore@p@h{\chardef\%`\% \chardef\#`\# } +\newif\ifMT@xunicode +\newif\ifMT@fontspec +\MT@with@package@T{xunicode}\MT@xunicodetrue +\MT@with@package@T{fontspec}\MT@fontspectrue \def\MT@setupfont@hook{% + \ifMT@fontspec\MT@font\fi \MT@if@false \MT@with@babel@and@T{spanish} \MT@if@true \MT@with@babel@and@T{galician}\MT@if@true @@ -587,8 +435,9 @@ \MT@with@package@T{csquotes}{% \@ifpackagelater{csquotes}{2005/05/11}\@disablequotes\relax}% \MT@if@false - \MT@with@package@T{hyperref}\MT@if@true - \MT@with@package@T{tex4ht} \MT@if@true + \MT@with@package@T{hyperref} \MT@if@true + \MT@with@package@T{tex4ht} \MT@if@true + \MT@with@package@T{mathastext}\MT@if@true \ifMT@if@\MT@restore@p@h\fi } \MT@addto@setup{% @@ -600,7 +449,12 @@ 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 + \MT@with@package@T{xunicode}\MT@xunicodetrue + \MT@with@package@T{fontspec}\MT@fontspectrue \let\MT@setupfont@hook\@empty + \ifMT@fontspec + \g@addto@macro\MT@setupfont@hook{\MT@font}% + \fi \MT@if@false \MT@with@babel@and@T{spanish} \MT@if@true \MT@with@babel@and@T{galician}\MT@if@true @@ -630,6 +484,7 @@ time will almost certainly lead to undesired results. Have your choice!}% \MT@if@true }% \MT@with@package@T{tex4ht}\MT@if@true + \MT@with@package@T{mathastext}\MT@if@true \ifMT@if@\g@addto@macro\MT@setupfont@hook\MT@restore@p@h\fi \MT@with@package@T{listings}{% \g@addto@macro\MT@cfg@catcodes{% @@ -639,6 +494,7 @@ time will almost certainly lead to undesired results. Have your choice!}% }% \g@addto@macro\MT@setupfont@hook{% \catcode`\\\z@ + \def\space{ }% \let\lst@ProcessLetter\@empty }% }% @@ -662,66 +518,13 @@ 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 -} -\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@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 -} -\let\MT@copy@font\relax -\MT@requires@pdftex7{ -\def\MT@copy@font@{% - \xdef\MT@font@copy{\csname\MT@@font/\MT@pr@context/\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{% - \MT@exp@cs\ifx{MT@\@nameuse{MT@abbr@##1}}\relax\else - \def\@tempa{##1}% - \MT@exp@cs\MT@map@tlist@c{MT@##1@doc@contexts}\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{% - \MT@exp@cs\ifx{MT@\@tempa @#1font@list}\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}% + \ifMT@fontspec + \edef\MT@family{\MT@scrubfeature#2()\relax}% + \else + \def\MT@family{#2}% + \fi \def\MT@series {#3}% \def\MT@shape {#4}% \def\MT@size {#5}% @@ -729,6 +532,13 @@ time will almost certainly lead to undesired results. Have your choice!}% {\MT@let@cn\MT@familyalias{MT@\MT@family @alias}}% {\let\MT@familyalias\@empty}% } +\def\MT@scrubfeature#1(#2)#3\relax{#1} +\def\MT@scrubfeatures#1(#2)#3\relax{% + #1% + \ifx\relax#3\relax\else + \MT@scrubfeatures#3\relax + \fi +} \newif\ifMT@do \def\MT@maybe@do#1{% \csname ifMT@\csname MT@abbr@#1\endcsname\endcsname @@ -811,110 +621,7 @@ time will almost certainly lead to undesired results. Have your choice!}% \fi }% } -\def\MT@protrusion{\MT@maybe@do{pr}} -\def\MT@set@pr@codes{% - \MT@if@list@exists{% - \MT@get@font@dimen@six{% - \MT@get@opt - \MT@reset@pr@codes - \MT@get@inh@list - \MT@set@inputenc{c}% - \MT@load@list\MT@pr@c@name - \MT@set@listname - \MT@let@cn\@tempc{MT@pr@c@\MT@pr@c@name}% - \expandafter\MT@set@codes\@tempc,\relax,}% - }\MT@reset@pr@codes -} -\def\MT@get@font@dimen@six{% - \ifnum\fontdimen6\MT@font=\z@ - \MT@warning@nl{% - Font `\MT@@font' does not specify its\MessageBreak - \@backslashchar fontdimen 6 (width of an `em')! Therefore,\MessageBreak - \@nameuse{MT@abbr@\MT@feat} will not work with this font}% - \expandafter\@gobble - \else - \edef\MT@dimen@six{\number\fontdimen6\MT@font}% - \expandafter\@firstofone - \fi -} -\def\MT@set@all@pr#1#2{% - \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 -\def\MT@the@pr@code{\@tempcntb} -\MT@requires@pdftex6{ - \def\MT@the@pr@code@tr{% - \numexpr\@tempcntb+\MT@letterspace@/2\relax - } -}\relax -\def\MT@set@codes#1,{% - \ifx\relax#1\@empty\else - \MT@split@codes #1==\relax - \expandafter\MT@set@codes - \fi -} -\def\MT@split@codes#1=#2=#3\relax{% - \def\@tempa{#1}% - \ifx\@tempa\@empty \else - \MT@get@slot - \ifnum\MT@char > \m@ne - \MT@get@char@unit - \csname MT@\MT@feat @split@val\endcsname#2\relax - \fi - \fi -} -\def\MT@pr@split@val#1,#2\relax{% - \def\@tempb{#1}% - \MT@ifempty\@tempb\relax{% - \MT@scale@to@em - \lpcode\MT@font\MT@char=\MT@the@pr@code - }% - \def\@tempb{#2}% - \MT@ifempty\@tempb\relax{% - \MT@scale@to@em - \rpcode\MT@font\MT@char=\MT@the@pr@code - }% - \MT@ifdefined@c@T\MT@pr@inh@name{% - \MT@ifdefined@n@T{MT@inh@\MT@pr@inh@name @\MT@char @}{% - \MT@exp@cs\MT@map@tlist@c - {MT@inh@\MT@pr@inh@name @\MT@char @}% - \MT@set@pr@heirs - }% - }% -} -\MT@requires@pdftex3{ - \def\MT@scale@to@em{% - \@tempcntb=\MT@count\relax - \MT@scale\@tempcntb \@tempb \MT@dimen@six - \ifnum\@tempcntb=\z@ \else - \MT@scale@factor - \fi - } - \def\MT@get@charwd{% -^^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@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} -} +\newif\ifMT@nofamily \def\MT@get@font@dimen#1{% \ifnum\fontdimen#1\MT@font=\z@ \MT@warning@nl{Font `\MT@@font' does not specify its\MessageBreak @@ -926,7 +633,7 @@ time will almost certainly lead to undesired results. Have your choice!}% } \def\MT@info@missing@char{% \MT@info@nl{Character `\the\MT@toks' -^^X \iffontchar\MT@font\MT@char +^^X \iffontchar\MT@font\MT@char@ has a width of 0pt ^^X \else is missing\fi ^^Q \MessageBreak (it's probably missing) @@ -1054,554 +761,13 @@ time will almost certainly lead to undesired results. Have your choice!}% \MT@cfg@catcodes \inputencoding{\@nameuse{\@tempa}}% } -\def\MT@set@pr@heirs#1{% - \lpcode\MT@font#1=\lpcode\MT@font\MT@char - \rpcode\MT@font#1=\rpcode\MT@font\MT@char -} -\def\MT@preset@pr{% - \expandafter\expandafter\expandafter\MT@preset@pr@ - \csname MT@pr@c@\MT@pr@c@name @preset\endcsname\@nil -} -\def\MT@preset@pr@#1,#2\@nil{% - \ifx\MT@pr@unit@\@empty - \MT@warn@preset@towidth{pr}% - \let\MT@preset@aux\MT@preset@aux@factor - \else - \def\MT@preset@aux{\MT@preset@aux@space2}% - \fi - \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{% - \@tempcntb=#1\relax - \MT@scale@factor - \edef#2{\number\@tempcntb}% -} -\def\MT@preset@aux@space#1#2#3{% - \def\@tempb{#2}% - \MT@get@space@unit#1% - \MT@scale@to@em - \edef#3{\number\@tempcntb}% -} -\def\MT@warn@preset@towidth#1{% - \MT@warning@nl{% - Cannot preset characters relative to their widths\MessageBreak - for \@nameuse{MT@abbr@#1} list `\@nameuse{MT@#1@c@name}'. Presetting them% - \MessageBreak relative to 1em instead}% -} -\def\MT@expansion{\MT@maybe@do{ex}} -\def\MT@set@ex@codes@s{% - \MT@if@list@exists{% - \MT@get@ex@opt - \let\MT@get@char@unit\relax - \MT@reset@ef@codes - \MT@get@inh@list - \MT@set@inputenc{c}% - \MT@load@list\MT@ex@c@name - \MT@set@listname - \MT@let@cn\@tempc{MT@ex@c@\MT@ex@c@name}% - \expandafter\MT@set@codes\@tempc,\relax,% - \MT@expandfont - }\relax -} \newif\ifMT@nonselected -\def\MT@set@ex@codes@n{% - \MT@nonselectedtrue - \MT@if@list@exists - \MT@get@ex@opt - {% - \let\MT@stretch@ \MT@stretch - \let\MT@shrink@ \MT@shrink - \let\MT@step@ \MT@step - \let\MT@auto@ \MT@auto - \let\MT@ex@factor@\MT@ex@factor - }% - \MT@reset@ef@codes - \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}% -} -\def\MT@reset@ef@codes@{\MT@set@all@ex\MT@ex@factor@} -\MT@requires@pdftex4{ - \def\MT@reset@ef@codes{% - \ifnum\MT@ex@factor@=\@m \else - \MT@reset@ef@codes@ - \fi - } -}{ - \let\MT@reset@ef@codes\MT@reset@ef@codes@ -} -\def\MT@ex@split@val#1\relax{% - \@tempcntb=#1\relax - \ifnum\MT@ex@factor@=\@m \else - \MT@scale\@tempcntb \MT@ex@factor@ \@m - \fi - \ifnum\@tempcntb > \MT@ex@max - \MT@warn@ex@too@large\MT@ex@max - \else - \ifnum\@tempcntb < \MT@ex@min - \MT@warn@ex@too@large\MT@ex@min - \fi - \fi - \efcode\MT@font\MT@char=\@tempcntb - \MT@ifdefined@c@T\MT@ex@inh@name{% - \MT@ifdefined@n@T{MT@inh@\MT@ex@inh@name @\MT@char @}{% - \MT@exp@cs\MT@map@tlist@c{MT@inh@\MT@ex@inh@name @\MT@char @}\MT@set@ex@heirs - }% - }% -} -\def\MT@warn@ex@too@large#1{% - \MT@warning@nl{Expansion factor \number\@tempcntb\space too large for - character\MessageBreak `\the\MT@toks' in \MT@curr@list@name.\MessageBreak - Setting it to the maximum of \number#1}% - \@tempcntb=#1\relax -} -\def\MT@get@ex@opt{% - \MT@set@listname - \MT@ifdefined@n@TF{MT@ex@c@\MT@ex@c@name @factor}{% - \MT@let@cn\MT@ex@factor@{MT@ex@c@\MT@ex@c@name @factor}% - \MT@vinfo{... : Multiplying expansion factors by \number\MT@ex@factor@/1000}% - }{% - \let\MT@ex@factor@\MT@ex@factor - }% - \MT@get@ex@opt@{stretch}{Setting stretch limit to \number\MT@stretch@}% - \MT@get@ex@opt@{shrink} {Setting shrink limit to \number\MT@shrink@}% - \MT@get@ex@opt@{step} {Setting expansion step to \number\MT@step@}% - \def\@tempa{autoexpand}% - \MT@get@ex@opt@{auto}{\ifx\@tempa\MT@auto@ En\else Dis\fi abling automatic expansion}% - \MT@ifdefined@n@T{MT@ex@c@\MT@ex@c@name @preset}{% - \MT@preset@ex - \let\MT@reset@ef@codes\relax - }% -} -\def\MT@get@ex@opt@#1#2{% - \MT@ifdefined@n@TF{MT@ex@c@\MT@ex@c@name @#1}{% - \MT@let@nn{MT@#1@}{MT@ex@c@\MT@ex@c@name @#1}% - \MT@vinfo{... : #2}% - }{% - \MT@let@nn{MT@#1@}{MT@#1}% - }% -} -\def\MT@set@ex@heirs#1{% - \efcode\MT@font#1=\efcode\MT@font\MT@char -} -\def\MT@preset@ex{% - \@tempcntb=\csname MT@ex@c@\MT@ex@c@name @preset\endcsname\relax - \MT@scale@factor - \MT@set@all@ex\@tempcntb -} -\MT@requires@pdftex6{ -\def\MT@spacing{\MT@maybe@do{sp}} -\def\MT@set@sp@codes{% - \MT@if@list@exists{% - \MT@get@font@dimen@six{% - \MT@get@opt - \MT@reset@sp@codes - \MT@get@inh@list - \MT@set@inputenc{c}% - \MT@load@list\MT@sp@c@name - \MT@set@listname - \MT@let@cn\@tempc{MT@sp@c@\MT@sp@c@name}% - \expandafter\MT@set@codes\@tempc,\relax,}% - }\MT@reset@sp@codes -} -\def\MT@sp@split@val#1,#2,#3\relax{% - \def\@tempb{#1}% - \MT@ifempty\@tempb\relax{% - \MT@get@space@unit2% - \MT@scale@to@em - \knbscode\MT@font\MT@char=\@tempcntb - }% - \def\@tempb{#2}% - \MT@ifempty\@tempb\relax{% - \MT@get@space@unit3% - \MT@scale@to@em - \stbscode\MT@font\MT@char=\@tempcntb - }% - \def\@tempb{#3}% - \MT@ifempty\@tempb\relax{% - \MT@get@space@unit4% - \MT@scale@to@em - \shbscode\MT@font\MT@char=\@tempcntb - }% - \MT@ifdefined@c@T\MT@sp@inh@name{% - \MT@ifdefined@n@T{MT@inh@\MT@sp@inh@name @\MT@char @}{% - \MT@exp@cs\MT@map@tlist@c{MT@inh@\MT@sp@inh@name @\MT@char @}\MT@set@sp@heirs - }% - }% -} -\def\MT@set@sp@heirs#1{% - \knbscode\MT@font#1=\knbscode\MT@font\MT@char - \stbscode\MT@font#1=\stbscode\MT@font\MT@char - \shbscode\MT@font#1=\shbscode\MT@font\MT@char -} -\def\MT@set@all@sp#1#2#3{% - \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 -\def\MT@preset@sp{% - \expandafter\expandafter\expandafter\MT@preset@sp@ - \csname MT@sp@c@\MT@sp@c@name @preset\endcsname\@nil -} -\def\MT@preset@sp@#1,#2,#3\@nil{% - \ifx\MT@sp@unit@\@empty - \MT@warn@preset@towidth{sp}% - \MT@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@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 -} -}\relax -\MT@requires@pdftex6{ -\def\MT@kerning{\MT@maybe@do{kn}} -\def\MT@set@kn@codes{% - \MT@if@list@exists{% - \MT@get@font@dimen@six{% - \MT@get@opt - \MT@reset@kn@codes - \MT@get@inh@list - \MT@set@inputenc{c}% - \MT@load@list\MT@kn@c@name - \MT@set@listname - \MT@let@cn\@tempc{MT@kn@c@\MT@kn@c@name}% - \expandafter\MT@set@codes\@tempc,\relax,}% - }\MT@reset@kn@codes -} -\def\MT@kn@split@val#1,#2\relax{% - \def\@tempb{#1}% - \MT@ifempty\@tempb\relax{% - \MT@get@space@unit2% - \MT@scale@to@em - \knbccode\MT@font\MT@char=\@tempcntb - }% - \def\@tempb{#2}% - \MT@ifempty\@tempb\relax{% - \MT@get@space@unit2% - \MT@scale@to@em - \knaccode\MT@font\MT@char=\@tempcntb - }% - \MT@ifdefined@c@T\MT@kn@inh@name{% - \MT@ifdefined@n@T{MT@inh@\MT@kn@inh@name @\MT@char @}{% - \MT@exp@cs\MT@map@tlist@c{MT@inh@\MT@kn@inh@name @\MT@char @}\MT@set@kn@heirs - }% - }% -} -\def\MT@set@kn@heirs#1{% - \knbccode\MT@font#1=\knbccode\MT@font\MT@char - \knaccode\MT@font#1=\knaccode\MT@font\MT@char -} -\def\MT@set@all@kn#1#2{% - \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 -\def\MT@preset@kn{% - \expandafter\expandafter\expandafter\MT@preset@kn@ - \csname MT@kn@c@\MT@kn@c@name @preset\endcsname\@nil -} -\def\MT@preset@kn@#1,#2\@nil{% - \ifx\MT@kn@unit@\@empty - \MT@warn@preset@towidth{kn}% - \let\MT@preset@aux\MT@preset@aux@factor - \else - \def\MT@preset@aux{\MT@preset@aux@space2}% - \fi - \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 -} -}\relax -\MT@requires@pdftex6{ -\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@get@tr@opt - \relax - \MT@ifdefined@c@TF\MT@letterspace@\relax{\let\MT@letterspace@\MT@letterspace}% - \ifnum\MT@letterspace@=\z@ - \MT@set@tr@zero - \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@set@space\@tempa,% - \MT@ifdefined@c@TF\MT@tr@okern{\let\@tempa\MT@tr@okern}{\def\@tempa{*,*}}% - \expandafter\MT@tr@set@okern\@tempa,% - \MT@ifdefined@c@T\MT@tr@ligatures\MT@tr@noligatures - \MT@do@font{\lpcode\MT@lsfont\@tempcnta=\numexpr\MT@letterspace@/2\relax - \rpcode\MT@lsfont\@tempcnta=\numexpr\MT@letterspace@/2\relax}% - \let\MT@the@pr@code\MT@the@pr@code@tr - \fi - \aftergroup\MT@set@lsfont - \let\MT@font\MT@lsfont - \xdef\MT@set@curr@ls{\def\noexpand\MT@curr@ls{\MT@letterspace@}}% - \aftergroup\MT@set@curr@ls - \MT@outer@space=\csname MT@outer@space\expandafter\string\font@name\endcsname\relax - \xdef\MT@set@curr@os{\MT@outer@space=\the\MT@outer@space\relax}% - \MT@tr@outer@l - \ifx\MT@ls@adjust\@empty - \MT@outer@kern=-\dimexpr\MT@letterspace@ sp * \fontdimen6\font@name/2000\relax - \MT@ls@outer@k - \else - \MT@outer@kern=\expandafter\expandafter\expandafter\@firstoftwo - \csname MT@outer@kern\expandafter\string\font@name\endcsname\relax - \ifdim\MT@outer@kern=\z@\else \MT@ls@outer@k \fi - \MT@outer@kern=\expandafter\expandafter\expandafter\@secondoftwo - \csname MT@outer@kern\expandafter\string\font@name\endcsname\relax - \fi - \xdef\MT@set@curr@ok{\MT@outer@kern=\the\MT@outer@kern\relax}% - \aftergroup\aftergroup\aftergroup\MT@ls@aftergroup - \fi - }% -} \MT@addto@setup{% \@ifpackageloaded{tikz} {\def\MT@ls@aftergroup{% \ifnum\tikz@expandcount>\z@ \else \MT@set@curr@os\MT@set@curr@ok\expandafter\MT@tr@outer@r\fi}} {\def\MT@ls@aftergroup{\MT@set@curr@os\MT@set@curr@ok\MT@tr@outer@r}}} -\def\MT@get@tr@opt{% - \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 - }% - }% - \MT@get@tr@opt@{spacing} {ispace}% - \MT@get@tr@opt@{outerspacing}{ospace}% - \MT@get@tr@opt@{outerkerning}{okern}% - \MT@get@tr@opt@{noligatures} {ligatures}% -} -\def\MT@get@tr@opt@#1#2{% - \MT@ifdefined@n@T{MT@tr@c@\MT@tr@c@name @#1}% - {\MT@let@nn{MT@tr@#2}{MT@tr@c@\MT@tr@c@name @#1}}% -} -\def\MT@set@lsfont{\MT@exp@two@c\let\font@name\MT@lsfont} -\DeclareRobustCommand\lsstyle{% - \not@math@alphabet\lsstyle\textls - \def\MT@feat{tr}% - \let\MT@tracking\MT@set@tr@codes - \selectfont -} -\DeclareRobustCommand\lslig[1]{% - {\MT@ifdefined@c@TF\MT@curr@ls{% - \escapechar\m@ne - \MT@get@ls@basefont - \MT@outer@kern=\dimexpr\MT@curr@ls sp * \fontdimen6\font@name/2000\relax - \kern\MT@outer@kern - \font@name #1% - \kern\MT@outer@kern% - }{#1}}% -} -\def\MT@get@ls@basefont{% - \xdef\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 -} -\def\MT@set@lsbasefont{\MT@exp@two@c\let\font@name\MT@ls@basefont} -\def\MT@set@tr@zero{% - \xdef\MT@ls@basefont{\csname\expandafter\string\font@name @base\endcsname}% - \expandafter\ifx\MT@ls@basefont\relax \else - \aftergroup\MT@set@lsbasefont - \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@tr@noligatures{% - \MT@warning@nl{% - Disabling selected ligatures is only possible since\MessageBreak - pdftex 1.40.4. Disabling all ligatures instead}% - \MT@glet\MT@tr@noligatures\relax - } -} -\newskip\MT@outer@space -\def\MT@tr@set@space#1,#2,#3,#4,#5,#6,{% - \let\MT@temp\@empty - \MT@tr@set@space@{#1}{#4}{2}\@empty - \MT@tr@set@space@{#2}{#5}{3}\@plus - \MT@tr@set@space@{#3}{#6}{4}\@minus - \MT@glet@nc{MT@outer@space\expandafter\string\font@name}\MT@temp -} -\def\MT@tr@set@space@#1#2#3#4{% - \MT@ifempty{#2}{% - \MT@ifempty{#1}{% - \edef\MT@temp{\MT@temp#4\the\fontdimen#3\MT@lsfont}% - }{% - \MT@tr@set@space@@{#1}{#3}{1000}% - \edef\MT@temp{\MT@temp#4\the\@tempdima}% - \fontdimen#3\MT@lsfont=\@tempdima - }% - }{% - \MT@tr@set@space@@{#2}{#3}{2000}% - \edef\MT@temp{\MT@temp#4\the\@tempdima}% - \MT@ifempty{#1}\relax{% - \MT@tr@set@space@@{#1}{#3}{1000}% - \fontdimen#3\MT@lsfont=\@tempdima - }% - }% -} -\def\MT@tr@set@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{% - \ifhmode - \ifdim\lastskip>5sp - \edef\x{\the\lastskip minus 0pt}% - \setbox\z@\hbox{\MT@outer@space=\x}% - \ifdim\wd\z@>\z@ - \unskip \hskip\MT@outer@space\relax - \let\MT@ls@outer@k\relax - \else - \ifdim\lastskip=% - \ifnum\spacefactor<2000 - \spaceskip - \else - \ifdim\xspaceskip=\z@ - \dimexpr\spaceskip+\fontdimen7\font@name\relax - \else - \xspaceskip - \fi - \fi - \unskip \hskip\MT@outer@space\relax - \let\MT@ls@outer@k\relax - \fi - \fi - \fi - \fi -} -\def\MT@tr@outer@r{% - \futurelet\MT@tr@outer@next\MT@tr@outer@r@ -} -\def\MT@tr@outer@r@{% - \def\MT@temp*{}% - \ifmmode \else - \ifnum\currentgrouptype=10 \else - \def\MT@temp*##1{\ifhmode\hskip\MT@outer@space - \fi}% - \ifcat\egroup\noexpand\MT@tr@outer@next - \ifhmode\unkern\fi\egroup - \MT@set@curr@ok \MT@set@curr@os - \def\MT@temp*{\afterassignment\MT@tr@outer@r\let\MT@temp=}% - \else - \ifx\maybe@ic\MT@tr@outer@next - \MT@set@curr@ok \MT@set@curr@os - \def\MT@temp*{\afterassignment\MT@tr@outer@icr\let\MT@temp=}% - \else - \ifx\check@icr\MT@tr@outer@next - \def\MT@temp*{\aftergroup\MT@tr@outer@r\check@icr\let\MT@temp=}% - \else - \ifx\@sptoken\MT@tr@outer@next - \def\MT@temp* {\ifhmode\hskip\MT@outer@space - \fi}% - \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*{\ifdim\MT@outer@kern=\z@\else\MT@ls@outer@k - \fi}% - \let\MT@tr@outer@next\relax - \fi\fi\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@ -} -}{ - \DeclareRobustCommand\lsstyle{% - \MT@error{Letterspacing only works with pdftex version 1.40\MessageBreak - or newer}{Upgrade pdftex, or use the `soul' package instead.}% - \MT@glet\lsstyle\relax - } -} -\MT@requires@luatex{ - \DeclareRobustCommand\lsstyle{% - \MT@error{Letterspacing currently doesn't work with luatex} - {Run pdftex, or use the `soul' package instead.}% - \MT@glet\lsstyle\relax - } -}\relax \DeclareRobustCommand\textls{% \@ifstar{\let\MT@ls@adjust@\MT@ls@adjust@empty\MT@textls}% {\let\MT@ls@adjust@\MT@ls@adjust@relax\MT@textls}% @@ -1623,6 +789,7 @@ time will almost certainly lead to undesired results. Have your choice!}% \MT@ifempty{#1}% {\let\MT@letterspace@\@undefined}% {\KV@@sp@def\MT@letterspace@{#1}% + \edef\MT@letterspace@{\number\MT@letterspace@}% \MT@ls@too@large\MT@letterspace@}% \MT@ls@adjust@ } @@ -1638,63 +805,6 @@ time will almost certainly lead to undesired results. Have your choice!}% \fi } \newdimen\MT@outer@kern -\def\MT@tr@set@okern#1,#2,{% - \let\MT@temp\@empty - \MT@ifempty{#1}{\MT@tr@set@okern@{*}}{\MT@tr@set@okern@{#1}}% - \MT@ifempty{#2}{\MT@tr@set@okern@{*}}{\MT@tr@set@okern@{#2}}% - \MT@glet@nc{MT@outer@kern\expandafter\string\font@name}\MT@temp -} -\def\MT@tr@set@okern@#1{% - \MT@test@ast#1*\@nil{% - \MT@ifdefined@c@TF\MT@tr@unit@ - {\edef\@tempb{#1}\MT@scale@to@em} - {\@tempcntb=#1\relax}% - \@tempdima=\dimexpr \@tempcntb sp * \MT@dimen@six/1000\relax - }{% - \MT@ifempty\@tempa{\let\@tempa\@m}\relax - \@tempdima=\dimexpr \numexpr\@tempa*\MT@letterspace@/1000\relax sp - * \fontdimen6\MT@lsfont/2000\relax - }% - \advance\@tempdima -\dimexpr \MT@letterspace@ sp - * \fontdimen6\MT@lsfont/2000\relax - \edef\MT@temp{\MT@temp{\the\@tempdima}}% -} -\def\MT@ls@outer@k{\ifhmode\kern\MT@outer@kern\relax\fi} -\MT@requires@pdftex5{ -\def\MT@noligatures{% - \MT@dotrue - \let\@tempa\MT@nl@setname - \MT@map@clist@n{font,encoding,family,series,shape,size}{% - \MT@ifdefined@n@TF{MT@checklist@##1}% - {\csname MT@checklist@##1\endcsname}% - {\MT@checklist@{##1}}% - {nl}% - }% - \ifMT@do - \MT@noligatures@\MT@font\MT@nl@ligatures - \fi -} -\def\MT@noligatures@#1#2{% - \MT@ifdefined@c@TF#2{% - \MT@ifdefined@c@TF\tagcode{% - \let\MT@warn@maybe@inputenc\@empty - \def\MT@curr@list@name{\@backslashchar DisableLigatures}% - \MT@map@clist@c#2{% - \KV@@sp@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}% @@ -1799,11 +909,12 @@ time will almost certainly lead to undesired results. Have your choice!}% {0111}{0110}{0101}{0100}{0011}{0010}{0001}{0000}% } \def\MT@next@listname#1#2#3#4{% + \ifnum#1=\z@\MT@nofamilytrue\fi \edef\@tempa{\MT@encoding - /\ifnum#1=\@ne \MT@family\fi - /\ifnum#2=\@ne \MT@series\fi - /\ifnum#3=\@ne \MT@shape\fi - /\ifnum#4=\@ne *\fi +/\ifnum#1=\@ne \MT@family \fi +/\ifnum#2=\@ne \MT@series \fi +/\ifnum#3=\@ne \MT@shape \fi +/\ifnum#4=\@ne *\fi \MT@context}% \MT@ifdefined@n@TF{MT@\@tempb @\@tempa}{% \MT@next@listname@#4% @@ -1895,14 +1006,7 @@ time will almost certainly lead to undesired results. Have your choice!}% \fi \fi \let\MT@char\MT@char@ - \ifnum\MT@char < \z@ - \MT@warn@unknown - \else - \ifMT@norest \else - \MT@warn@rest - \let\MT@char\m@ne - \fi - \fi + \MT@get@slot@ \escapechar\m@ne } \newif\ifMT@norest @@ -1917,7 +1021,7 @@ time will almost certainly lead to undesired results. Have your choice!}% \ifcat !\noexpand#1\relax \edef\MT@char@{\number`#1}% \ifx\\#2\\% - \ifnum\MT@char@ > 127 \MT@warn@ascii \fi + \ifnum\MT@char@ > \MT@max@char \MT@warn@ascii \fi \else \MT@norestfalse \expandafter\MT@is@number#1#2\relax\relax @@ -1940,7 +1044,7 @@ time will almost certainly lead to undesired results. Have your choice!}% }\MT@norestfalse \fi \fi - \ifnum\MT@char@ > \@cclv + \ifnum\MT@char@ > \MT@max@slot \MT@warn@number@too@large{\noexpand#1\noexpand#2\noexpand#3}% \let\MT@char@\m@ne \fi @@ -1976,18 +1080,35 @@ time will almost certainly lead to undesired results. Have your choice!}% } \begingroup \catcode`\/=\z@ - /MT@map@tlist@n{/\CHAR}/@makeother + /MT@map@tlist@n{/\CHARLEX}/@makeother /lowercase{% /def/x{/endgroup /def/MT@charstring{\CHAR"}% /def/MT@is@char##1\CHAR"##2##3##4/relax{% + /ifx/relax##4/relax + /ifMT@xunicode + /expandafter/MT@is@charx/MT@strip@prefix##1>/relax\CHAR "% + /relax/relax/relax/relax/relax + /fi + /else + /ifx/relax##1/relax + /if##3\/relax + /edef/MT@char@{/number"##2}% + /MT@ifstreq/MT@charstring{##3##4}/relax/MT@norestfalse + /else + /edef/MT@char@{/number"##2##3}% + /MT@ifstreq/MT@charstring{##4}/relax/MT@norestfalse + /fi + /fi + /fi + }% + /def/MT@charxstring{\CHAR "}% + /def/MT@strip@prefix##1>##2/relax{##2}% + /def/MT@is@charx##1\CHAR "##2##3##4##5##6/relax{% /ifx/relax##1/relax - /if##3\/relax - /edef/MT@char@{/number"##2}% - /MT@ifstreq/MT@charstring{##3##4}/relax/MT@norestfalse - /else - /edef/MT@char@{/number"##2##3}% - /MT@ifstreq/MT@charstring{##4}/relax/MT@norestfalse + /ifx/relax##6/relax/else + /edef/MT@char@{/number"##2##3##4##5}% + /MT@ifstreq{\RELAX >\CHAR "}{##6}/relax/MT@norestfalse /fi /fi }% @@ -2000,6 +1121,13 @@ time will almost certainly lead to undesired results. Have your choice!}% \string\csname\MT@encoding\endcsname \MT@detokenize@n{#1}-\MT@detokenize@n{#2}\endcsname}% \expandafter\expandafter\expandafter\MT@is@letter\MT@char\relax\relax + \ifnum\MT@char@ < \z@ + \ifMT@xunicode + \edef\MT@char{\MT@exp@two@c\MT@strip@prefix\meaning\MT@char>\relax}% + \expandafter\MT@exp@two@c\expandafter\MT@is@charx\expandafter + \MT@char\MT@charxstring\relax\relax\relax\relax\relax + \fi + \fi \fi } \def\MT@set@listname{% @@ -2103,8 +1231,9 @@ time will almost certainly lead to undesired results. Have your choice!}% }% } \def\MT@check@font{\MT@exp@one@n\MT@in@clist\MT@font\MT@font@list} -\def\MT@register@subst@font{\xdef\MT@font@list{\MT@font@list\font@name,}} \def\MT@register@font{\xdef\MT@font@list{\MT@font@list\MT@font,}} +\def\MT@register@subst@font{\MT@exp@one@n\MT@in@clist\font@name\MT@font@list + \ifMT@inlist@\else\xdef\MT@font@list{\MT@font@list\font@name,}\fi} \let\MT@active@features\@empty \def\MT@check@font@cx{% \MT@if@true @@ -2121,9 +1250,13 @@ time will almost certainly lead to undesired results. Have your choice!}% } \def\MT@register@subst@font@cx{% \MT@map@clist@c\MT@active@features{% - \MT@exp@cs\MT@xadd - {MT@##1@\csname MT@##1@context\endcsname font@list}% - {\font@name,}% + \expandafter\MT@exp@one@n\expandafter\MT@in@clist\expandafter\font@name + \csname MT@##1@\csname MT@##1@context\endcsname font@list\endcsname + \ifMT@inlist@ \else + \MT@exp@cs\MT@xadd + {MT@##1@\csname MT@##1@context\endcsname font@list}% + {\font@name,}% + \fi }% } \def\MT@register@font@cx{% @@ -2148,6 +1281,7 @@ time will almost certainly lead to undesired results. Have your choice!}% \DeclareRobustCommand\microtypecontext[1]{% \MT@setup@contexts \let\MT@reset@context\relax + \let\glb@currsize\@empty \setkeys{MTC}{#1}% \selectfont \MT@reset@context @@ -2256,6 +1390,9 @@ time will almost certainly lead to undesired results. Have your choice!}% \let\MT@font@sets\@empty \def\MT@fix@font@set#1{% \xdef#1{#1}% + \ifMT@fontspec + \xdef#1{\expandafter\MT@scrubfeatures#1()\relax}% + \fi \global\@onelevel@sanitize#1% } \def\MT@define@set@key@size#1{% @@ -2459,8 +1596,8 @@ time will almost certainly lead to undesired results. Have your choice!}% }% } \renewcommand*\DeclareMicrotypeAlias[2]{% - \KV@@sp@def\@tempa{#1}% - \KV@@sp@def\@tempb{#2}% + \edef\@tempa{\zap@space#1 \@empty}% + \edef\@tempb{\zap@space#2 \@empty}% \@onelevel@sanitize\@tempb \MT@ifdefined@n@T{MT@\@tempa @alias}{% \MT@warning{Alias font family `\@tempb' will override @@ -2472,7 +1609,7 @@ time will almost certainly lead to undesired results. Have your choice!}% }% } \def\LoadMicrotypeFile#1{% - \KV@@sp@def\@tempa{#1}% + \edef\@tempa{\zap@space#1 \@empty}% \@onelevel@sanitize\@tempa \MT@exp@one@n\MT@in@clist\@tempa\MT@file@list \ifMT@inlist@ @@ -2490,110 +1627,12 @@ 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@error{Disabling ligatures of a font is only possible\MessageBreak - with pdftex version 1.30 or newer.\MessageBreak - Ignoring \string\DisableLigatures}{Upgrade pdftex.}% -} -} \def\DeclareMicrotypeBabelHook#1#2{% \MT@map@clist@n{#1}{% \KV@@sp@def\@tempa{##1}% \MT@gdef@n{MT@babel@\@tempa}{#2}% }% } -\def\SetProtrusion{% - \MT@begin@catcodes - \MT@SetProtrusion -} -\newcommand*\MT@SetProtrusion[3][]{% - \let\MT@extra@context\@empty - \MT@set@named@keys{MT@pr@c}{#1}% - \def\MT@permutelist{pr@c}% - \setkeys{MT@cfg}{#2}% - \MT@permute - \MT@gdef@n{MT@pr@c@\MT@pr@c@name}{#3}% - \MT@end@catcodes -} -\def\SetExpansion{% - \MT@begin@catcodes - \MT@SetExpansion -} -\newcommand*\MT@SetExpansion[3][]{% - \let\MT@extra@context\@empty - \MT@set@named@keys{MT@ex@c}{#1}% - \MT@ifdefined@n@T{MT@ex@c@\MT@ex@c@name @factor}{% - \ifnum\csname MT@ex@c@\MT@ex@c@name @factor\endcsname > \@m - \MT@warning@nl{Expansion factor \number\@nameuse{MT@ex@c@\MT@ex@c@name @factor} - too large in list\MessageBreak `\MT@ex@c@name'. Setting it to the - maximum of 1000}% - \MT@glet@nc{MT@ex@c@\MT@ex@c@name @factor}\@m - \fi - }% - \def\MT@permutelist{ex@c}% - \setkeys{MT@cfg}{#2}% - \MT@permute - \MT@gdef@n{MT@ex@c@\MT@ex@c@name}{#3}% - \MT@end@catcodes -} -\def\SetTracking{% - \MT@begin@catcodes - \MT@SetTracking -} -\newcommand*\MT@SetTracking[3][]{% - \let\MT@extra@context\@empty - \MT@set@named@keys{MT@tr@c}{#1}% - \def\MT@permutelist{tr@c}% - \setkeys{MT@cfg}{#2}% - \MT@permute - \KV@@sp@def\@tempa{#3}% - \MT@ifempty\@tempa\relax{% - \MT@ifint\@tempa - {\MT@xdef@n{MT@tr@c@\MT@tr@c@name}{\@tempa}}% - {\MT@warning{Value `\@tempa' is not a number in\MessageBreak - tracking set `\MT@curr@set@name'}}}% - \MT@end@catcodes -} -\def\SetExtraSpacing{% - \MT@begin@catcodes - \MT@SetExtraSpacing -} -\newcommand*\MT@SetExtraSpacing[3][]{% - \let\MT@extra@context\@empty - \MT@set@named@keys{MT@sp@c}{#1}% - \def\MT@permutelist{sp@c}% - \setkeys{MT@cfg}{#2}% - \MT@permute - \MT@gdef@n{MT@sp@c@\MT@sp@c@name}{#3}% - \MT@end@catcodes -} -\def\SetExtraKerning{% - \MT@begin@catcodes - \MT@SetExtraKerning -} -\newcommand*\MT@SetExtraKerning[3][]{% - \let\MT@extra@context\@empty - \MT@set@named@keys{MT@kn@c}{#1}% - \def\MT@permutelist{kn@c}% - \setkeys{MT@cfg}{#2}% - \MT@permute - \MT@gdef@n{MT@kn@c@\MT@kn@c@name}{#3}% - \MT@end@catcodes -} \def\MT@set@named@keys#1#2{% \def\x##1name=##2,##3\@nil{% \setkeys{#1}{name=##2}% @@ -2614,6 +1653,20 @@ time will almost certainly lead to undesired results. Have your choice!}% }% }% } +\def\MT@define@code@key@family#1{% + \define@key{MT@#1}{family}[]{% + \@tempcnta=\@ne + \MT@map@clist@n{##1}{% + \KV@@sp@def\MT@val{####1}% + \MT@get@highlevel{family}% + \ifMT@fontspec + \edef\x{\edef\noexpand\MT@val{\noexpand\MT@scrubfeature\MT@val()\relax}}\x + \fi + \MT@edef@n{MT@tempfamily\the\@tempcnta}{\MT@val}% + \advance\@tempcnta \@ne + }% + }% +} \def\MT@define@code@key@size#1{% \define@key{MT@#1}{size}[]{% \MT@map@clist@n{##1}{% @@ -2632,6 +1685,9 @@ time will almost certainly lead to undesired results. Have your choice!}% \KV@@sp@def\MT@val{####1}% \MT@ifstreq\MT@val*{\def\MT@val{*/*/*/*/*}}\relax \expandafter\MT@get@font@and@size\MT@val/////\@nil + \ifMT@fontspec + \edef\@tempb{\expandafter\MT@scrubfeatures\@tempb()\relax}% + \fi \MT@xdef@n{MT@\MT@permutelist @\@tempb\MT@extra@context}% {\csname MT@\MT@permutelist @name\endcsname}% \MT@exp@cs\MT@xaddb @@ -2644,7 +1700,7 @@ time will almost certainly lead to undesired results. Have your choice!}% \MT@get@font@{#1}{#2}{#3}{#4}{#5}{1}% } \MT@define@code@key{encoding}{cfg} -\MT@define@code@key{family} {cfg} +\MT@define@code@key@family {cfg} \MT@define@code@key{series} {cfg} \MT@define@code@key{shape} {cfg} \MT@define@code@key@size {cfg} @@ -2653,10 +1709,17 @@ time will almost certainly lead to undesired results. Have your choice!}% \define@key{MT@#1@c}{#2}[]{\MT@ifempty{##1}\relax{% \MT@xdef@n{MT@#1@c@\MT@curr@set@name @#2}{##1}}}% } +\newcount\MT@listname@count \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}% + \MT@ifdefined@n@TF{MT@#1@c@\MT@curr@file/\the\inputlineno}{% + \global\advance\MT@listname@count\@ne + \MT@edef@n{MT@#1@c@name}{\MT@curr@file/\the\inputlineno + (\number\MT@listname@count)}% + }{% + \MT@edef@n{MT@#1@c@name}{\MT@curr@file/\the\inputlineno}% + }% }{% \MT@edef@n{MT@#1@c@name}{##1}% \MT@ifdefined@n@T{MT@#1@c@\csname MT@#1@c@name\endcsname}{% @@ -2671,125 +1734,10 @@ 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}}}% } -\MT@requires@pdftex7{ - \MT@requires@luatex{ - \define@key{MT@ex@c}{context}[]{% - \MT@error{Expansion contexts currently don't work with luatex.\MessageBreak - Ignoring `context' key\on@line}% - {Use pdftex instead.}% - } - }{ - \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@pr@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@pr@c}{context}[]{% - \MT@ifempty{#1}\relax{\def\MT@extra@context{#1}}% - \ifx\MT@copy@font\MT@copy@font@\else - \MT@warning@nl{If protrusion contexts don't work as expected, - \MessageBreak 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}% } -\define@key{MT@pr@c}{unit}[character]{% - \MT@glet@nc{MT@pr@c@\MT@curr@set@name @unit}\@empty - \def\@tempa{#1}% - \MT@ifstreq\@tempa{character}\relax{% - \MT@ifdimen\@tempa - {\MT@glet@nc{MT@pr@c@\MT@curr@set@name @unit}\@tempa}% - {\MT@warn@nodim{character widths}}% - }% -} -\define@key{MT@tr@c}{unit}[1em]{% - \MT@glet@nc{MT@tr@c@\MT@curr@set@name @unit}\@empty - \def\@tempa{#1}% - \MT@ifdimen\@tempa - {\MT@glet@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}}% -} -\MT@map@clist@n{sp,kn}{% - \define@key{MT@#1@c}{unit}[space]{% - \MT@glet@nc{MT@#1@c@\MT@curr@set@name @unit}\@empty - \def\@tempa{##1}% - \MT@ifstreq\@tempa{character}\relax{% - \MT@glet@nc{MT@#1@c@\MT@curr@set@name @unit}\m@ne - \MT@ifstreq\@tempa{space}\relax{% - \MT@ifdimen\@tempa - {\MT@glet@nc{MT@#1@c@\MT@curr@set@name @unit}\@tempa}% - {\MT@warn@nodim{width of space}}% - }% - }% - }% -} -\MT@map@clist@n{stretch,shrink,step}{% - \define@key{MT@ex@c}{#1}[]{% - \MT@ifempty{##1}\relax{% - \MT@ifint{##1}{% - \MT@gdef@n{MT@ex@c@\MT@curr@set@name @#1}{##1 }% - }{% - \MT@warning{% - Value `##1' for option `#1' is not a number.\MessageBreak - Ignoring it}% - }% - }% - }% -} -\define@key{MT@ex@c}{auto}[true]{% - \def\@tempa{#1}% - \csname if\@tempa\endcsname - \MT@requires@pdftex4{% - \MT@gdef@n{MT@ex@c@\MT@curr@set@name @auto}{autoexpand}% - }{% - \MT@warning{pdftex too old for automatic font expansion}% - } - \else - \MT@requires@pdftex4{% - \MT@glet@nc{MT@ex@c@\MT@curr@set@name @auto}\@empty - }\relax - \fi -} -\MT@define@opt@key{tr}{spacing} -\MT@define@opt@key{tr}{outerspacing} -\MT@define@opt@key{tr}{outerkerning} -\define@key{MT@tr@c}{noligatures}[]% - {\MT@xdef@n{MT@tr@c@\MT@curr@set@name @noligatures}{#1}} -\define@key{MT@tr@c}{outer spacing}[]{\setkeys{MT@tr@c}{outerspacing={#1}}} -\define@key{MT@tr@c}{outer kerning}[]{\setkeys{MT@tr@c}{outerkerning={#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 @@ -2826,48 +1774,18 @@ time will almost certainly lead to undesired results. Have your choice!}% \setkeys{MT@inh}{#2}% \MT@permute } -\define@key{MT@inh}{encoding}[]{% - \def\MT@val{#1}% - \expandafter\MT@encoding@check\MT@val,\@nil - \MT@get@highlevel{encoding}% - \MT@edef@n{MT@tempencoding1}{\MT@val}% -} -\def\MT@encoding@check#1,#2\@nil{% - \MT@ifempty{#2}\relax{% - \edef\MT@val{#1}% - \MT@warning{You may only specify one encoding for character\MessageBreak - inheritance lists. Ignoring encoding(s) #2}% - }% -} -\MT@define@code@key{family}{inh} -\MT@define@code@key{series}{inh} -\MT@define@code@key{shape} {inh} -\MT@define@code@key@size {inh} -\MT@define@code@key@font {inh} +\MT@define@code@key{encoding}{inh} +\MT@define@code@key@family {inh} +\MT@define@code@key{series} {inh} +\MT@define@code@key{shape} {inh} +\MT@define@code@key@size {inh} +\MT@define@code@key@font {inh} \def\MT@inh@do#1,{% \ifx\relax#1\@empty \else \MT@inh@split #1==\relax \expandafter\MT@inh@do \fi } -\def\MT@inh@split#1=#2=#3\relax{% - \def\@tempa{#1}% - \ifx\@tempa\@empty \else - \MT@get@slot - \ifnum\MT@char > \m@ne - \let\MT@val\MT@char - \MT@map@clist@n{#2}{% - \def\@tempa{##1}% - \ifx\@tempa\@empty \else - \MT@get@slot - \ifnum\MT@char > \m@ne - \MT@exp@cs\MT@xadd{MT@inh@\MT@listname @\MT@val @}{{\MT@char}}% - \fi - \fi - }% - \fi - \fi -} \def\MT@permute{% \let\MT@cnt@encoding\@ne \MT@permute@ @@ -3093,15 +2011,6 @@ time will almost certainly lead to undesired results. Have your choice!}% \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 - \pdfoutput\z@ - \else - \ifnum\pdfoutput<\@ne \MT@opt@DVItrue \fi - \pdfoutput\@ne - \fi -} \MT@def@bool@opt{defersetup}{% \csname if\@tempa\endcsname \else \AtEndOfPackage{% @@ -3111,31 +2020,6 @@ time will almost certainly lead to undesired results. Have your choice!}% }% \fi } -\MT@requires@pdftex7{ - \MT@requires@luatex{ - \MT@def@bool@opt{copyfonts}{% - \csname if\@tempa\endcsname - \MT@error{The `copyfonts' option doesn't work with luatex} - {Use pdftex instead.}% - \fi - } - }{ - \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}{Upgrade pdftex.}% - \fi - } -} \MT@def@bool@opt{final}{% \csname if\@tempa\endcsname \MT@draftfalse @@ -3187,13 +2071,17 @@ time will almost certainly lead to undesired results. Have your choice!}% character widths}}% }% } -\MT@protrusiontrue -\ifnum\pdfoutput<\@ne \else - \MT@requires@pdftex4{ - \MT@expansiontrue - \MT@autotrue - }\relax +\let\MT@endinput\relax +\ifx\MT@engine\relax + \MT@warning@nl{You don't seem to be using either pdftex, luatex, or xetex.\MessageBreak + `\MT@MT' only works with these engines.\MessageBreak + I will quit now.} + \MT@clear@options +\else + \input{microtype-\MT@engine tex.def} \fi +\MT@endinput +\MT@protrusiontrue \define@key{MT}{config}[]{\relax} \def\MT@get@config#1config=#2,#3\@nil{% \MT@ifempty{#2}% @@ -3235,106 +2123,6 @@ time will almost certainly lead to undesired results. Have your choice!}% \MT@ifdefined@c@T\Microtype@Hook\Microtype@Hook \def\microtypesetup{\setkeys{MT}} \MT@addto@setup{\def\microtypesetup#1{\setkeys{MTX}{#1}\selectfont}} -\def\MT@define@optionX#1#2{% - \define@key{MTX}{#1}[true]{% - \edef\@tempb{\csname MT@rbba@#1\endcsname}% - \MT@map@clist@n{##1}{% - \KV@@sp@def\MT@val{####1}% - \MT@ifempty\MT@val\relax{% - \@tempcnta=\m@ne - \MT@ifstreq\MT@val{true}{% - \MT@checksetup{#1}{% - \@tempcnta=\csname MT@\@tempb @level\endcsname - \MT@vinfo{Enabling #1 - (level \number\csname MT@\@tempb @level\endcsname)\on@line}% - }% - }{% - \MT@ifstreq\MT@val{false}{% - \@tempcnta=\z@ - \MT@vinfo{Disabling #1\on@line}% - }{% - \MT@ifstreq\MT@val{compatibility}{% - \MT@checksetup{#1}{% - \@tempcnta=\@ne - \MT@let@nc{MT@\@tempb @level}\@ne - \MT@vinfo{Setting #1 to level 1\on@line}% - }% - }{% - \MT@ifstreq\MT@val{nocompatibility}{% - \MT@checksetup{#1}{% - \@tempcnta=\tw@ - \MT@let@nc{MT@\@tempb @level}\tw@ - \MT@vinfo{Setting #1 to level 2\on@line}% - }% - }{\MT@error{Value `\MT@val' for key `#1' not recognised} - {Use any of `true', `false', `compatibility' or - `nocompatibility'.}% - }% - }% - }% - }% - \ifnum\@tempcnta>\m@ne - #2\@tempcnta\relax - \fi - }% - }% - }% -} -\def\MT@checksetup#1{% - \csname ifMT@#1\endcsname - \expandafter\@firstofone - \else - \MT@error{You cannot enable #1 if it was disabled\MessageBreak - in the package options}{Load microtype with #1 enabled.}% - \expandafter\@gobble - \fi -} -\MT@define@optionX{protrusion}\pdfprotrudechars -\MT@define@optionX{expansion}\pdfadjustspacing -\MT@requires@pdftex6{ - \MT@requires@luatex\@firstofone{ - \def\MT@define@optionX@#1#2{% - \define@key{MTX}{#1}[true]{% - \MT@map@clist@n{##1}{% - \KV@@sp@def\MT@val{####1}% - \MT@ifempty\MT@val\relax{% - \@tempcnta=\m@ne - \MT@ifstreq\MT@val{true}{% - \MT@checksetup{#1}{% - \@tempcnta=\@ne - \MT@vinfo{Enabling #1\on@line}% - }% - }{% - \MT@ifstreq\MT@val{false}{% - \@tempcnta=\z@ - \MT@vinfo{Disabling #1\on@line}% - }{\MT@error{Value `\MT@val' for key `#1' not recognised} - {Use either `true' or `false'}% - }% - }% - \ifnum\@tempcnta>\m@ne - #2\relax - \fi - }% - }% - }% - } - \MT@define@optionX@{tracking}{\ifnum\@tempcnta=\z@ \let\MT@tracking\MT@set@tr@zero - \else \let\MT@tracking\MT@tracking@ \fi} - \MT@define@optionX@{spacing}{\pdfadjustinterwordglue\@tempcnta} - \MT@define@optionX@{kerning}{\pdfprependkern\@tempcnta - \pdfappendkern \@tempcnta} - \@gobble - } -}\@firstofone -{\define@key{MTX}{tracking}[true]{\MT@warning{Ignoring tracking setup}} - \define@key{MTX}{kerning}[true]{\MT@warning{Ignoring kerning setup}} - \define@key{MTX}{spacing}[true]{\MT@warning{Ignoring spacing setup}} -} -\define@key{MTX}{activate}[true]{% - \setkeys{MTX}{protrusion={#1}}% - \setkeys{MTX}{expansion={#1}}% -} \let\MT@saved@setupfont\MT@setupfont \define@key{MTX}{disable}[]{% \MT@info{Inactivate `\MT@MT' package}% @@ -3373,229 +2161,17 @@ time will almost certainly lead to undesired results. Have your choice!}% \renewcommand*\microtypecontext[1]{}% \renewcommand*\lsstyle{}% \else - \ifnum\pdfoutput<\@ne - \ifMT@opt@expansion \else - \MT@expansionfalse - \fi - \fi - \MT@info@nl{Generating \ifnum\pdfoutput<\@ne DVI \else PDF \fi output% - \ifMT@opt@DVI\space (changed by \MT@MT)\fi}% - \ifx\MT@copy@font\relax\else \MT@info@nl{Using font copies for contexts}\fi + \MT@setup@PDF + \MT@setup@copies \MT@map@tlist@c\MT@font@sets\MT@fix@font@set - \ifMT@protrusion - \edef\MT@active@features{\MT@active@features,pr}% - \pdfprotrudechars\MT@pr@level - \MT@info@nl{Character protrusion enabled (level \number\MT@pr@level)% - \ifnum\MT@pr@factor=\MT@factor@default \else,\MessageBreak - factor: \number\MT@pr@factor\fi - \ifx\MT@pr@unit\@empty \else,\MessageBreak unit: \MT@pr@unit\fi}% - \MT@check@active@set{pr}% - \else - \let\MT@protrusion\relax - \MT@info@nl{No character protrusion}% - \fi - \ifMT@expansion - \ifnum\MT@stretch=\m@ne - \let\MT@stretch\MT@stretch@default - \fi - \ifnum\MT@shrink=\m@ne - \let\MT@shrink\MT@stretch - \fi - \MT@requires@pdftex6{\def\MT@step{1 }}{% - \ifnum\MT@step=\m@ne - \ifnum\MT@stretch>\MT@shrink - \ifnum\MT@shrink=\z@ - \@tempcnta=\MT@stretch - \else - \@tempcnta=\MT@shrink - \fi - \else - \ifnum\MT@stretch=\z@ - \@tempcnta=\MT@shrink - \else - \@tempcnta=\MT@stretch - \fi - \fi - \divide\@tempcnta 5\relax - \else - \@tempcnta=\MT@step - \ifnum\@tempcnta=\z@ - \MT@warning@nl{The expansion step cannot be set to zero.\MessageBreak - Setting it to one} - \fi - \fi - \ifnum\@tempcnta=\z@ \@tempcnta=\@ne \fi - \edef\MT@step{\number\@tempcnta\space}}% - \let\MT@auto\@empty - \ifMT@auto - \MT@requires@pdftex4{% - \ifnum\pdfoutput<\@ne - \ifMT@opt@auto - \MT@error{% - Automatic font expansion only works for PDF output.\MessageBreak - However, you are creating a DVI file} - {If you have created expanded fonts instances, remove `auto' from% - \MessageBreak the package options. Otherwise, you have to switch - off expansion\MessageBreak completely.}% - \fi - \MT@autofalse - \else - \def\MT@auto{autoexpand}% - \fi - }{% - \MT@error{% - The pdftex version you are using is too old for\MessageBreak - automatic font expansion}% - {If you have created expanded fonts instances, remove `auto' from\MessageBreak - the package options. Otherwise, you have to switch off expansion\MessageBreak - completely, or upgrade pdftex to version 1.20 or newer.}% - \MT@autofalse - \def\MT@auto{1000 }% - }% - \else - \MT@requires@pdftex4\relax{% - \def\MT@auto{1000 }% - }% - \fi - \ifMT@selected - \let\MT@set@ex@codes\MT@set@ex@codes@s - \else - \let\MT@set@ex@codes\MT@set@ex@codes@n - \fi - \ifnum\MT@stretch=\z@ - \ifnum\MT@shrink=\z@ - \MT@warning@nl{% - Both the stretch and shrink limit are set to zero.\MessageBreak - Disabling font expansion}% - \MT@expansionfalse - \fi - \fi - \fi - \ifMT@expansion - \edef\MT@active@features{\MT@active@features,ex}% - \pdfadjustspacing\MT@ex@level - \MT@info@nl{\ifMT@auto 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}% - \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 - \hsize\maxdimen\normalfont\pretolerance\m@ne\tolerance\m@ne - \hbadness\z@\showboxdepth\z@\ #1\color@endgroup}}% - \gdef\showhyphens#1{\setbox0\vbox{% - \color@begingroup\pdfadjustspacing\z@\everypar{}\parfillskip\z@skip - \hsize\maxdimen\normalfont\pretolerance\m@ne\tolerance\m@ne - \hbadness\z@\showboxdepth\z@\ #1\color@endgroup}}% - \else - \let\MT@expansion\relax - \MT@info@nl{No font expansion}% - \fi + \MT@setup@protrusion + \MT@setup@expansion + \MT@setup@tracking + \MT@setup@warntracking + \MT@setup@spacing + \MT@setup@kerning + \MT@setup@noligatures } -\MT@requires@pdftex6{ - \def\MT@warn@lua#1{% - \MT@error{The `#1' feature doesn't currently work\MessageBreak with luatex} - {Use pdftex instead.}% - \csname MT@#1false\endcsname - \MT@let@nc{MT@#1}\relax - } - \MT@addto@setup{% - \ifMT@tracking - \MT@requires@luatex{\MT@warn@lua{tracking}}{% - \edef\MT@active@features{\MT@active@features,tr}% - \MT@info@nl{Tracking enabled}% - \MT@check@active@set{tr}% - \ifMT@protrusion\else\pdfprotrudechars\@ne\fi - }% - \else - \let\MT@tracking\relax - \MT@info@nl{No tracking}% - \fi - \ifMT@spacing - \MT@requires@luatex{\MT@warn@lua{spacing}}{% - \edef\MT@active@features{\MT@active@features,sp}% - \pdfadjustinterwordglue\@ne - \MT@info@nl{Adjustment of interword spacing enabled}% - \MT@check@active@set{sp}% - }% - \else - \let\MT@spacing\relax - \MT@info@nl{No adjustment of interword spacing}% - \fi - \ifMT@kerning - \MT@requires@luatex{\MT@warn@lua{kerning}}{% - \edef\MT@active@features{\MT@active@features,kn}% - \pdfprependkern\@ne - \pdfappendkern\@ne - \MT@info@nl{Adjustment of character kerning enabled}% - \MT@check@active@set{kn}% - }% - \else - \let\MT@kerning\relax - \MT@info@nl{No adjustment of character kerning}% - \fi - \ifnum\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\MessageBreak - able to create the virtual fonts on the fly}% - \MT@glet\MT@warn@tracking@DVI\relax - }% - \else - \def\MT@warn@tracking@DVI{% - \ifnum\pdfprotrudechars<\@ne \global\pdfprotrudechars\@ne \fi - \MT@glet\MT@warn@tracking@DVI\relax - }% - \fi - \ifnum\MT@letterspace=\m@ne - \let\MT@letterspace\MT@letterspace@default - \else - \MT@ls@too@large\MT@letterspace - \fi - }% -}{ - \MT@addto@setup{% - \ifMT@tracking - \MT@error{Tracking only works with pdftex version 1.40\MessageBreak - or newer. Switching it off}{Upgrade pdftex.}% - \else - \MT@info@nl{No tracking (pdftex too old)}% - \fi - \ifMT@spacing - \MT@error{Adjustment of interword spacing only works with\MessageBreak - pdftex version 1.40 or newer. Switching it off}{Upgrade pdftex.}% - \else - \MT@info@nl{No adjustment of interword spacing (pdftex too old)}% - \fi - \ifMT@kerning - \MT@error{Character kerning only works with\MessageBreak - pdftex version 1.40 or newer. Switching it off}{Upgrade pdftex.}% - \else - \MT@info@nl{No adjustment of character kerning (pdftex too old)}% - \fi - } -} -\MT@requires@pdftex5{ - \MT@addto@setup{% - \ifMT@noligatures \else - \let\MT@noligatures\relax - \fi - } -}\relax \MT@addto@setup{% \ifx\MT@active@features\@empty \else \edef\MT@active@features{\expandafter\@gobble\MT@active@features}% @@ -3658,23 +2234,8 @@ time will almost certainly lead to undesired results. Have your choice!}% \selectfont} \edef\MT@curr@file{\jobname.tex} \AtBeginDocument{\MT@setup@ \MT@glet\MT@setup@\@empty} -\MT@requires@pdftex6{ - \AtBeginDocument{% - \ifMT@spacing - \ifMT@babel \else - \ifnum\sfcode`\. > 1500 - \MT@ifstreq\MT@sp@context{nonfrench}\relax{% - \MT@warning@nl{% - \string\nonfrenchspacing\space is active. Adjustment of\MessageBreak - interword spacing will disable it. You might want\MessageBreak - to add `\@backslashchar\MT@MT context{spacing=nonfrench}'\MessageBreak - to your preamble}% - }% - \fi - \fi - \fi - } -}\relax +\MT@ifdefined@c@T\MT@setup@spacing@check + {\AtBeginDocument{\MT@setup@spacing@check}} \MT@restore@catcodes \endinput %% diff --git a/Master/texmf-dist/tex/latex/microtype/mt-CharisSIL.cfg b/Master/texmf-dist/tex/latex/microtype/mt-CharisSIL.cfg new file mode 100755 index 00000000000..c8388555dfb --- /dev/null +++ b/Master/texmf-dist/tex/latex/microtype/mt-CharisSIL.cfg @@ -0,0 +1,476 @@ +%% +%% This is file `mt-CharisSIL.cfg'. +%% +%% ------------------------------------------------------------------------ +%% +%% The `microtype' package +%% Subliminal refinements towards typographical perfection +%% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> +%% +%% This work may be distributed and/or modified under the conditions of the +%% LaTeX Project Public License, either version 1.3c of this license or (at +%% your option) any later version. The latest version of this license is in: +%% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part +%% of all distributions of LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `author-maintained'. +%% +%% This work consists of the files microtype.dtx and microtype.ins and the +%% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +%% microtype-luatex.def, microtype.lua and letterspace.sty. +%% +%% ------------------------------------------------------------------------ +%% This is a font-specific configuration file for the `microtype' package. +%% It may contain settings for font expansion and character protrusion, +%% tracking, interword spacing and additional kerning, as well as +%% character inheritance declarations. +%% Please consult the documentation for details. +%% +%% If you think you have found improvements to these settings, please +%% let me know. +%% +%% When modifying this file, also change the identification line below. +%% ------------------------------------------------------------------------ +%% +\ProvidesFile + {mt-CharisSIL.cfg}[2013/03/13 v1.0 microtype config. file: Charis SIL (RS)] + +%%% ----------------------------------------------------------------------- +%%% INHERITANCE + +% for xetex (EU1) and luatex (EU2) +\DeclareCharacterInheritance + { encoding = {EU1,EU2}, + family = Charis SIL } + { A = {À,Á,Â,Ã,Ä,Å,Ā,Ă,Ą,Ǎ,Ǟ,Ǡ,Ȧ,Ǻ,Ȁ,Ȃ,Ḁ,Ạ,Ả,Ấ,Ầ,Ẩ,Ẫ,Ậ,Ắ,Ằ,Ẳ,Ẵ,Ặ,Ꜳ, + А,Ӑ,Ӓ}, % Cyrillic + Æ = {Ǣ, + Ǽ,Ӕ}, % Cyrillic + B = {Ḃ,Ḅ,Ḇ, + В}, % Cyr + C = {Ç,Ć,Ĉ,Ḉ,Ċ,Č, + С,Ҫ}, % Cyr + D = {Ď,Ḋ,Ḍ,Ḏ,Ḑ,Ḓ,Đ}, + E = {È,É,Ê,Ë,Ē,Ĕ,Ė,Ę,Ě,Ȅ,Ȩ,Ȇ,Ḕ,Ḗ,Ḙ,Ḛ,Ḝ,Ẹ,Ẻ,Ẽ,Ế,Ề,Ể,Ễ,Ệ, + Е,Ѐ,Ё,Ӗ}, % Cyr + F = {Ḟ}, + G = {Ĝ,Ğ,Ġ,Ģ,Ǧ,Ǵ,Ḡ,Ԍ}, + H = {Ĥ,Ȟ,Ḣ,Ḥ,Ḧ,Ḩ,Ḫ, + Н,Ң,Ҥ,Ӈ,Ӊ}, % Cyr + I = {Ì,Í,Î,Ȉ,Ï,Į,Ĩ,Ị,Ī,İ,Ǐ,Ỉ,Ȋ,Ĭ,Ḭ,Ï, + І,Ї,Ӏ,ӏ}, % Cyr + J = {Ĵ, + Ј}, % Cyr + K = {Ķ,Ǩ,Ḱ,Ḳ,Ḵ, + К,Ќ,Қ,Ҝ,Ҟ,Ҡ,Ӄ,Ԟ}, % Cyr + L = {Ĺ,Ļ,Ľ,Ḷ,Ḹ,Ḻ,Ḽ}, % L· + M = {Ḿ,Ṁ,Ṃ, + М,Ӎ}, % Cyr + N = {Ñ,Ń,Ņ,Ň,Ǹ,Ṅ,Ṇ,Ṉ,Ṋ, + И,Й,Ѝ,Ҋ,Ӣ,Ӥ}, % Cyr + O = {Ò,Ó,Ô,Õ,Ö,Ō,Ŏ,Ő,Ǒ,Ǫ,Ǭ,Ȍ,Ȏ,Ȫ,Ȭ,Ȯ,Ȱ,Ṍ,Ṏ,Ṑ,Ṓ,Ọ,Ỏ,Ố,Ồ,Ổ,Ỗ,Ộ,Ớ,Ờ,Ở,Ỡ,Ơ, + О,Ѳ,Ӧ,Ө,Ӫ, % Cyr + Θ}, % Greek + P = {Ṕ,Ṗ, + Р,Ҏ}, % Cyr + Q = {Ԛ}, % Cyr + R = {Ŕ,Ŗ,Ř,Ȑ,Ȓ,Ṙ,Ṛ,Ṝ,Ṟ}, + S = {Ś,Ŝ,Ş,Š,Ș,Ṡ,Ṣ,Ṥ,Ṧ,Ṩ, + Ѕ}, % Cyr + T = {Ţ,Ť,Ț,Ṫ,Ṭ,Ṯ,Ṱ, + Т,Ҭ}, % Cyr + U = {Ù,Ú,Û,Ü,Ũ,Ū,Ŭ,Ů,Ű,Ų,Ǔ,Ǖ,Ǘ,Ǚ,Ǜ,Ȕ,Ȗ,Ṳ,Ṵ,Ṷ,Ṹ,Ṻ,Ụ,Ủ,Ứ,Ừ,Ử,Ữ,Ự}, + V = {Ṽ,Ṿ}, + W = {Ŵ,Ẁ,Ẃ,Ẅ,Ẇ,Ẉ, + Ԝ}, % Cyr + X = {Ẋ,Ẍ, + Х,Ҳ,Ӽ,Ӿ}, % Cyr + Y = {Ý,Ŷ,Ÿ,Ȳ,Ẏ,Ỳ,Ỵ,Ỷ,Ỹ, + Ү,Ұ}, % Cyr + Z = {Ź,Ż,Ž,Ẑ,Ẓ,Ẕ}, + a = {à,á,â,ã,ä,å,ā,ă,ą,ǎ,ǟ,ǡ,ȧ,ǻ,ȁ,ȃ,ḁ,ạ,ả,ầ,ấ,ẩ,ẫ,ậ,ắ,ằ,ẳ,ẵ,ặ, % aʾ + а,ӑ,ӓ}, % Cyr + æ = {ǽ, + ӕ}, % Cyr + b = {ḃ,ḅ,ḇ}, + c = {ç,ć,ĉ,ċ,č,ḉ, + с,ҫ}, % Cyr + d = {ď,ḋ,ḍ,ḏ,ḑ,ḓ}, + e = {è,é,ê,ë,ē,ĕ,ė,ę,ě,ȅ,ȩ,ȇ,ḕ,ḗ,ḙ,ḛ,ḝ,ẹ,ẻ,ẽ,ề,ế,ể,ễ,ệ, + е,ѐ,ё,ӗ}, % Cyr + f = {ḟ,ff}, % /f_f + g = {ĝ,ğ,ġ,ģ,ǧ,ǵ,ḡ}, + h = {ĥ,ȟ,ḣ,ḥ,ḧ,ḩ,ḫ,ẖ, + Һ,һ}, % Cyr + i = {ı,ì,í,î,ȉ,ǐ,ï,į,ī,ị,ĩ,ḭ,ḯ,ỉ,ȋ,ĭ, + і,ї}, % Cyr + j = {ĵ,ǰ, + ј}, % Cyr + k = {ķ,ǩ,ḱ,ḳ,ḵ}, + l = {ĺ,ļ,ḻ,ḷ,ḹ,ḽ}, % ľ,l· + m = {ḿ,ṁ,ṃ}, + n = {ñ,ń,ņ,ň,ǹ,ṅ,ṇ,ṉ,ṋ}, % ʼn + o = {ò,ó,ô,õ,ö,ō,ŏ,ő,ǒ,ǫ,ǭ,ȍ,ȏ,ȫ,ȭ,ȯ,ȱ,ṍ,ṏ,ṑ,ṓ,ọ,ỏ,ồ,ố,ổ,ỗ,ộ,ớ,ờ,ở,ỡ,ợ, + о,ѳ,ӧ,ө,ӫ}, % Cyr + p = {ṕ,ṗ, + р,ҏ}, % Cyr + q = {ԛ}, % Cyr + r = {ŕ,ŗ,ř,ȑ,ȓ,ṙ,ṛ,ṝ,ṟ}, + s = {ś,ŝ,ş,š,ș,ṡ,ṣ,ṥ,ṧ,ṩ, + ѕ}, % Cyr + t = {ţ,ț,ṫ,ṭ,ṯ,ṱ,ẗ}, % ť + u = {ù,ú,û,ü,ũ,ū,ŭ,ů,ű,ų,ǔ,ǖ,ǘ,ǚ,ǜ,ȕ,ȗ,ṳ,ṵ,ṷ,ṹ,ṻ,ụ,ủ,ứ,ừ,ử,ữ,ự}, + v = {ṽ,ṿ}, + w = {ŵ,ẁ,ẃ,ẅ,ẇ,ẉ,ẘ, + ԝ}, % Cyr + x = {ẋ,ẍ, + х,ҳ}, % Cyr + y = {ý,ÿ,ŷ,ȳ,ẏ,ẙ,ỳ,ỵ,ỷ,ỹ, + у,ў,ӯ,ӱ,ӳ}, % Cyr + z = {ź,ż,ž,ẑ,ẓ,ẕ}, + % Cyrillic + Г = {Ѓ,Ґ,Ғ,Ӷ,Ӻ}, + Ж = {Җ,Ӝ,Ӂ}, + З = {Ӟ,Ҙ}, + Л = {Ӆ}, + П = {Ԥ}, + У = {Ў,Ӯ,Ӱ,Ӳ}, + Ч = {Ҷ,Ҹ,Ӌ,Ӵ}, + Ы = {Ӹ}, + Ә = {Ӛ}, + Ҽ = {Ҿ}, + г = {ѓ,ґ,ғ,ӷ,ӻ}, + ж = {җ,ӂ,ӝ}, + з = {ҙ,ӟ}, + и = {й,ѝ,ҋ,ӣ,ӥ}, + к = {ќ,қ,ҝ,ҟ,ҡ,ӄ,ԟ}, + л = {ӆ}, + м = {ӎ}, + н = {ң,ҥ,ӈ,ӊ}, + п = {ԥ}, + т = {ҭ}, + х = {ӽ,ӿ}, + ч = {ҷ,ҹ,ӌ,ӵ}, + ш = {щ}, + ы = {ӹ}, + э = {ӭ}, + ҽ = {ҿ}, + ә = {ӛ}, + ү = {ұ}, + Г = {Γ}, % Greek + П = {Π}, % Greek + } + +% missing: tipa, math, symbols, ... + +%%% ----------------------------------------------------------------------- +%%% PROTRUSION + +\SetProtrusion + [ name = Charis-default ] + { encoding = {EU1,EU2}, + family = Charis SIL } + { + A = {50,50}, + Æ = {50,50}, + C = {50, }, + D = { ,50}, + F = { ,50}, + G = {50, }, + J = {100, }, + K = { ,50}, + L = { ,50}, + Ŀ = { ,100}, + O = {50,50}, + Œ = {50, }, + P = { ,50}, + Q = {50,70}, + R = { ,50}, + ẞ = { ,40}, % capital sharp s + T = {50,50}, + V = {50,50}, + W = {50,50}, + X = {50,50}, + Y = {50,50}, + k = { ,50}, + ŀ = { ,150}, + r = { ,50}, + t = { ,50}, + v = {50,50}, + w = {50,50}, + x = {50,50}, + y = { ,50}, + 1 = {150,150}, + 2 = {50,50}, + 3 = {50, }, + 4 = {100,50}, + 6 = {50, }, + 7 = {50,80}, + 9 = {50,50}, + . = { ,600}, + {,}= { ,500}, + : = { ,400}, + ; = { ,300}, + ! = { ,100}, + ? = { ,200}, + @ = {50,50}, + ~ = {200,250}, + \% = { ,50}, + * = {300,300}, + + = {200,250}, + / = { ,200}, + /backslash = {150,200}, + | = {200,200}, + - = {400,500}, % hyphen + – = {200,300}, % endash + — = {150,250}, % emdash + ― = {200,200}, % Horizontal Bar = \texttwelveudash + ‒ = {150,150}, % Figure Dash = \textthreequartersemdash + _ = {100,100}, + {=} = {100,100}, + ‘ = {300,400}, ’ = {300,400}, + “ = {300,300}, ” = {300,300}, + ‚ = {400,400}, „ = {300,300}, + ‹ = {400,300}, › = {300,400}, + « = {200,200}, » = {150,300}, + ¡ = {100, }, ¿ = {100, }, + ( = {200, }, ) = { ,200}, + < = {200,150}, > = {100,200}, + [ = {100, }, ] = { ,100}, + /braceleft = {200, }, /braceright = { ,300}, + † = { 80, 80}, + ‡ = {100,100}, + • = {200,200}, + ° = {150,200}, + ™ = {150,150}, + ¢ = { 50, }, + £ = { 50, }, + ¦ = {200,200}, + © = {100,100}, + ® = {100,100}, + ª = {100,200}, + º = {200,200}, + ¬ = {200, 50}, + µ = { ,100}, + ¶ = { ,100}, + · = {300,400}, + ¹ = {200,300}, + ² = {100,200}, + ³ = {100,200}, + € = {100, }, + ± = {150,200}, + × = {200,200}, + ÷ = {250,250}, + /minus = {200,200}, + − = {200,200}, + % Cyrillic + Б = { ,50}, + Г = { ,130}, + Ж = {50,50}, + З = {30,50}, + Л = {50, }, + У = {50,50}, + Ф = {50,50}, + Ч = {100, }, + Ъ = { ,50}, + Ь = { ,50}, + Э = {50,50}, + Ю = { ,40}, + Я = {50, }, + Ѵ = {50,50}, + Ҽ = {50, }, + Ђ = {50,100}, + Є = {50, }, + Љ = {50,50}, + Њ = { ,50}, + Ћ = {50,50}, + Ԅ = {100,100}, + Ԇ = {50,50}, + Ѣ = { ,50}, + Ҍ = { ,50}, + Ԉ = {50,80}, + Ԋ = { ,80}, + Ԏ = {50,50}, + Ԓ = {50, }, + Ԕ = {50,40}, + Ԗ = { ,50}, + Ԙ = {50, }, + Ԡ = { ,50}, + Ԣ = { ,50}, + Ԃ = { ,100}, + б = {50,50}, + г = { ,70}, + к = { ,50}, + л = {50, }, + т = {50,50}, + ф = {50,50}, + ч = {50, }, + ъ = { ,50}, + ь = { ,50}, + э = { ,50}, + я = {50, }, + љ = {50, }, + њ = { ,50}, + ѣ = { ,50}, + ѵ = {50,50}, + ҽ = {50, }, + ҍ = { ,50}, + ү = {50,50}, + ҕ = { ,50}, + ҧ = { ,50}, + ԃ = { ,100}, + ԅ = {100,100}, + ԇ = {50,50}, + ԉ = {50,70}, + ԋ = { ,70}, + ԙ = {50,30}, + ԡ = { ,50}, + ԣ = { ,50}, + % Д П Ц Ш Щ Ы Ҕ Ҧ Ҩ Ә Ҵ Џ Ӭ Ӡ Ԑ Ԁ + % в д ж з и м н п ц ш ы ю ђ є ћ џ ә ԑ ҩ ҵ ӡ ԁ ԍ ԏ ԓ ԕ ԗ + % Greek + Δ = {50,50}, + Ψ = {50,50}, + γ = {70,70}, + λ = {40,70}, + π = {40,50}, + ρ = { ,50}, + σ = { ,50}, + χ = {50,50}, +} + +\SetProtrusion + [ name = Charis-it ] + { encoding = {EU1,EU2}, + family = Charis SIL, + shape = {it,sl} } + { + C = {50, }, + G = {50, }, + J = {50, }, + L = {50,50}, + O = {50, }, + Œ = {50, }, + Q = {50, }, + S = {50, }, + $ = {50, }, + T = {70, }, + o = {50,50}, + p = { ,50}, + q = {50, }, + t = { ,50}, + w = { ,50}, + y = { ,50}, + 1 = {150,100}, + 3 = {50, }, + 4 = {100, }, + 6 = {50, }, + 7 = {100, }, + . = { ,700}, + {,}= { ,600}, + : = { ,400}, + ; = { ,400}, + ? = { ,150}, + & = { ,80}, + \% = {50,50}, + * = {300,200}, + + = {250,250}, + @ = {80,50}, + ~ = {150,150}, + / = { ,150}, + /backslash = {150,150}, + - = {300,400}, % hyphen + – = {200,300}, % endash + — = {150,200}, % emdash + _ = { ,100}, + {=} = {200,200}, + ± = {150,200}, + × = {250,250}, + ÷ = {250,250}, + ° = {150,200}, + · = {300,400}, + ‘ = {400,200}, ’ = {400,200}, + “ = {300,200}, ” = {400,200}, + ‚ = {200,500}, „ = {150,500}, + ‹ = {300,400}, › = {200,500}, + « = {200,300}, » = {150,400}, + ( = {200, }, ) = { ,200}, + < = {200,200}, > = {200,200}, + /braceleft = {300, }, /braceright = { ,200}, + % Cyrillic + Ж = {50,30}, + Л = {50, }, + У = {50,30}, + Ф = {50, }, + Ч = {100, }, + Ъ = { ,50}, + Ь = { ,50}, + Э = {50,50}, + Я = {50, }, + Ѵ = {50,50}, + Љ = {50,50}, + Ԅ = {140,100}, + Ԇ = {70,50}, + Ԉ = {50,80}, + Ԋ = { ,80}, + Ԏ = {50,50}, + г = {50,50}, + д = {50,30}, + м = {50, }, + ф = {50, }, + ч = {50, }, + ъ = { ,50}, + ь = { ,50}, + э = { ,50}, + я = {50, }, + љ = {50,50}, + њ = { ,50}, + ѵ = {50,50}, + ҍ = { ,50}, + ԅ = {140,100}, + ԇ = {70,50}, + ԉ = {50,70}, + ԋ = { ,70}, + % Greek + Γ = { ,130}, + Δ = {50,50}, + Ψ = {50,50}, + γ = {70,70}, + λ = {40,70}, + π = {40,50}, + ρ = { ,50}, + σ = { ,50}, + χ = {50,50}, + } + +\SetProtrusion + [ name = Charis-sc, + load = Charis-default ] + { encoding = {EU1,EU2}, + family = Charis SIL, + shape = {sc} } + { +% ᴀ = {100,100}, % etc., doesn't work with \textsc + /a.SC = {100,100}, + /c.SC = {50, }, + /d.SC = { ,50}, + /f.SC = { ,50}, + /g.SC = {50, }, + /j.SC = {100, }, + /k.SC = { ,50}, + /l.SC = { ,50}, + /f_l.SC = { ,50}, + /o.SC = {50,50}, + /oe.SC = {50, }, + /q.SC = {50,70}, + /r.SC = { ,50}, + /t.SC = {50,100}, + /v.SC = {50,50}, + /w.SC = {50,50}, + /x.SC = {50,50}, + /y.SC = {50,50} + } + +\endinput +%% +%% End of file `mt-CharisSIL.cfg'. diff --git a/Master/texmf-dist/tex/latex/microtype/mt-LatinModernRoman.cfg b/Master/texmf-dist/tex/latex/microtype/mt-LatinModernRoman.cfg new file mode 100755 index 00000000000..8f142d8f849 --- /dev/null +++ b/Master/texmf-dist/tex/latex/microtype/mt-LatinModernRoman.cfg @@ -0,0 +1,349 @@ +%% +%% This is file `mt-LatinModernRoman.cfg'. +%% +%% ------------------------------------------------------------------------ +%% +%% The `microtype' package +%% Subliminal refinements towards typographical perfection +%% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> +%% +%% This work may be distributed and/or modified under the conditions of the +%% LaTeX Project Public License, either version 1.3c of this license or (at +%% your option) any later version. The latest version of this license is in: +%% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part +%% of all distributions of LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `author-maintained'. +%% +%% This work consists of the files microtype.dtx and microtype.ins and the +%% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +%% microtype-luatex.def, microtype.lua and letterspace.sty. +%% +%% ------------------------------------------------------------------------ +%% This is a font-specific configuration file for the `microtype' package. +%% It may contain settings for font expansion and character protrusion, +%% tracking, interword spacing and additional kerning, as well as +%% character inheritance declarations. +%% Please consult the documentation for details. +%% +%% If you think you have found improvements to these settings, please +%% let me know. +%% +%% When modifying this file, also change the identification line below. +%% ------------------------------------------------------------------------ +%% +\ProvidesFile + {mt-LatinModernRoman.cfg}[2013/03/13 v1.0 microtype config. file: Latin Modern Roman (RS)] + +%%% ----------------------------------------------------------------------- +%%% INHERITANCE + +% for xetex (EU1) and luatex (EU2) +\DeclareCharacterInheritance + { encoding = {EU1,EU2}, + family = Latin Modern Roman } + { A = {À,Á,Â,Ã,Ä,Å,Ā,Ă,Ą,Ǻ,Ȁ,Ạ,Ả,Ấ,Ầ,Ẩ,Ẫ,Ậ,Ắ,Ằ,Ẳ,Ặ, + Α}, % Greek + Æ = {Ǽ}, + B = {฿, + Β}, % Greek + C = {Ç,Ć,Ĉ,Ċ,Č}, + D = {Ð,Ď,Đ,Ḍ,Ḏ}, + E = {È,É,Ê,Ë,Ē,Ĕ,Ė,Ę,Ě,Ȅ,Ẹ,Ẻ,Ẽ,Ề,Ế,Ễ,Ể,Ệ, + Ε}, % Greek + G = {Ĝ,Ğ,Ġ,Ģ,Ǧ,Ǵ}, + H = {Ĥ,Ħ,Ḥ,Ḧ,Ḫ, + Η}, % Greek + I = {Ì,Í,Î,Ï,Ĩ,Ī,Ĭ,Į,İ,Ȉ,Ỉ,Ị, + Ι}, % Greek + J = {Ĵ}, + K = {Ķ, + Κ}, % Greek + L = {Ĺ,Ļ,Ł,Ḷ}, % Ľ,Ŀ,Ḹ + M = {Μ}, % Greek + N = {Ñ,Ń,Ņ,Ň,Ṅ,Ṇ, + Ν}, % Greek + O = {Ò,Ó,Ô,Õ,Ö,Ø,Ō,Ŏ,Ő,Ọ,Ơ,Ǫ,Ǿ,Ȍ,Ỏ,Ố,Ồ,Ổ,Ỗ,Ộ,Ớ,Ờ,Ỡ,Ở,Ợ, + Ο}, % Greek + P = {Ρ}, % Greek + R = {Ŕ,Ŗ,Ř,Ȑ,Ṛ,Ṙ,Ṝ}, + S = {Ś,Ŝ,Ş,Š,Ș,Ṣ}, + T = {Ţ,Ť,Ț,Ṭ,Ṯ, + Τ}, % Greek + U = {Ù,Ú,Û,Ü,Ũ,Ū,Ŭ,Ů,Ű,Ų,Ư,Ȕ,Ụ,Ủ,Ứ,Ừ,Ử,Ữ,Ự}, + W = {Ŵ,Ẁ,Ẃ,Ẅ}, + X = {Χ}, % Greek + Y = {Ý,Ŷ,Ÿ,Ỵ,Ỷ,Ỹ}, + Z = {Ź,Ż,Ž,Ẓ, + Ζ}, % Greek + a = {à,á,â,ã,ä,å,ā,ă,ą,ǻ,ȁ,ạ,ả,ấ,ầ,ẩ,ẫ,ậ,ắ,ằ,ẳ,ẵ}, + æ = {ǽ}, + c = {ç,ć,ĉ,ċ,č}, + d = {đ,ḍ,ḏ}, + e = {è,é,ê,ë,ē,ĕ,ė,ę,ě,ȅ,ẹ,ẻ,ẽ,ế,ề,ể,ễ,ệ}, + f = {/f_f}, + g = {ĝ,ğ,ġ,ģ,ǧ,ǵ}, + h = {ĥ,ħ,ḥ,ḧ,ḫ}, + i = {ì,í,î,ï,ĩ,ī,ĭ,į,ı,ȉ,ỉ,ị}, + j = {ĵ}, + k = {ķ}, + l = {ĺ,ļ,ł,ḷ,ḹ}, % ľ,l· + n = {ñ,ń,ņ,ň,ṅ,ṇ}, + o = {ò,ó,ô,õ,ö,ø,ō,ŏ,ő,ọ,ơ,ǫ,ǿ,ȍ,ỏ,ố,ồ,ổ,ỗ,ộ,ớ,ờ,ỡ,ở,ợ}, + r = {ŕ,ŗ,ř,ȑ,ṛ,ṙ,ṝ}, + s = {ś,ŝ,ş,š,ș,ṣ}, + t = {ţ,ț,ṭ,ṯ,ẗ}, % ť + u = {ù,ú,û,ü,ũ,ū,ŭ,ů,ű,ų,ư,ȕ,ụ,ủ,ứ,ừ,ử,ữ,ự}, + w = {ŵ,ẁ,ẃ,ẅ}, + y = {ý,ŷ,ÿ,ỳ,ỵ,ỷ,ỹ}, + z = {ź,ż,ž,ẓ}, + } + +%%% ----------------------------------------------------------------------- +%%% PROTRUSION + +\SetProtrusion + [ name = LMR-default ] + { encoding = {EU1,EU2}, + family = Latin Modern Roman } + { + A = {50,50}, + Æ = {50, }, + F = { ,50}, + J = {50, }, + K = { ,50}, + L = { ,50}, + T = {50,50}, + V = {50,50}, + W = {50,50}, + X = {50,50}, + Y = {50,50}, + k = { ,50}, + r = { ,50}, + t = { ,70}, + v = {50,50}, + w = {50,50}, + x = {50,50}, + y = {50,70}, + 0 = { ,50}, + 1 = {100,200}, + 2 = {50,50}, + 3 = {50,50}, + 4 = {70,70}, + 5 = { ,50}, + 6 = { ,50}, + 7 = {50,100}, + 8 = { ,50}, + 9 = { ,50}, + . = { ,700}, + {,}= { ,500}, + : = { ,500}, + ; = { ,500}, + ! = { ,100}, + ? = { ,200}, + @ = {50,50}, + ~ = {200,250}, + \% = {50,50}, + * = {300,300}, + + = {250,250}, + - = {400,500}, % /hyphen + – = {400,300}, % /endash + — = {300,200}, % /emdash + _ = {200,200}, % /underscore + / = {200,300}, + /backslash = {200,300}, + ' = {300,400}, % /quotesingle + ‘ = {500,700}, ’ = {500,600}, + “ = {500,300}, ” = {200,600}, + ‚ = {400,400}, „ = {400,400}, + ‹ = {400,400}, › = {300,500}, + « = {300,200}, » = {100,400}, + ¡ = {100, }, ¿ = {100, }, + ( = {300, }, ) = { ,300}, + < = {200,100}, > = {100,200}, + /braceleft = {400,200}, /braceright = {200,400}, + /angleleft = {400, }, /angleright = { ,400}, + † = {100,100}, + ‡ = { 80, 80}, + • = {200,200}, + · = {400,450}, % / periodcentered + ℃ = { 80, 50}, + ₡ = { , 50}, + ° = {400,400}, + ™ = {100,200}, + © = {100,100}, + ® = {100,100}, + ª = {100,200}, + º = {100,200}, + ¹ = {200,250}, + ² = { 50,100}, + ³ = { 50,100}, + ¬ = {200, }, + − = {300,300}, + ± = {150,200}, + × = {150,250}, + ÷ = {150,250}, + € = {100, }, + /one.oldstyle = {100,100}, + /two.oldstyle = { 50, 50}, + /three.oldstyle = { 30, 80}, + /four.oldstyle = { 50, 50}, + /seven.oldstyle = { 50, 80}, + Γ = { ,180}, % /Gamma + Δ = {100,100}, % /Delta + Θ = { 50, 50}, % /Theta + Λ = {100,100}, % /Lambda +% Ξ = {,}, % /Xi +% Π = {,}, % /Pi + Σ = { 50, 50}, % /Sigma + Υ = {100,100}, % /Upsilon + Φ = { 50, 50}, % /Phi + Ψ = { 50, 50}, % /Psi +% Ω = {,}, % /Omega + } + +\SetProtrusion + [ name = LMR-it ] + { encoding = {EU1,EU2}, + family = Latin Modern Roman, + shape = {it,sl} } + { + A = {125,100}, + Æ = {125,-55}, + B = {90,-40}, + C = {145,-75}, + D = {75, -28}, + E = {80,-55}, + F = {85,-80}, + G = {153,-15}, + H = {73,-60}, + I = {140,-120}, + IJ = {140,-80}, + J = {135,-80}, + K = {70,-30}, + L = {87, 40}, + M = {67,-45}, + N = {75,-55}, + O = {150,-30}, + Œ = {150,-55}, + P = {82,-50}, + Q = {150,-30}, + R = {75, 15}, + S = {90,-65}, + $ = {100,-20}, + T = {220,-85}, + U = {230,-55}, + V = {260,-60}, + W = {185,-55}, + X = {70,-30}, + Y = {250,-60}, + Z = {90,-60}, + a = {150,-10}, + b = {170, }, + c = {173,-10}, + d = {150,-55}, + e = {180, }, + f = { ,-250}, + g = {150,-10}, + h = {100, }, + i = {210, }, + ij = {210,-40}, + j = { ,-40}, + k = {110,-50}, + l = {240,-110}, + m = {80, }, + n = {115, }, + o = {155, }, + q = {170,-40}, + r = {155,-40}, + s = {130, }, + t = {230,-10}, + u = {120, }, + v = {140,-25}, + w = {98,-20}, + x = {65,-40}, + y = {130,-20}, + z = {110,-80}, + 0 = {170,-85}, + 1 = {230,110}, + 2 = {130,-70}, + 3 = {140,-70}, + 4 = {130,80}, + 5 = {160, }, + 6 = {175,-30}, + 7 = {250,-150}, + 8 = {130,-40}, + 9 = {155,-80}, + . = { ,500}, + {,}= { ,450}, + : = { ,300}, + ; = { ,300}, + & = {130,30}, + \% = {180,50}, + * = {380,20}, + + = {180,200}, + @ = {180,10}, + ~ = {200,150}, + ( = {300, }, ) = { ,70}, + / = {100,100}, + - = {500,300}, % /hyphen + – = {500,300}, % /endash + — = {400,170}, % /emdash + _ = {100,200}, % /underscore + ' = {300,400}, % /quotesingle + " = {500,300}, + ‘ = {800,200}, ’ = {800,-20}, + “ = {540,100}, ” = {500,100}, + ‚ = {300,700}, „ = {200,600}, + ‹ = {500,300}, › = {400,400}, + « = {400,100}, » = {200,300}, + ¡ = {200, }, ¿ = {200, }, + < = {300,100}, > = {200,100}, + /backslash = {300,300}, + /braceleft = {400,100}, /braceright = {200,200}, + † = {200, 80}, + ‡ = {120, 80}, + • = {220,100}, + · = {550,300}, % / periodcentered + ℃ = {170, }, + ₡ = {100, 50}, + ¶ = {200, }, + ° = {500,300}, + ™ = {200, 70}, + © = { 50, 70}, + ® = { 50, 70}, + ª = {140,100}, + º = {140,100}, + ¹ = {400,150}, + ² = {250, 80}, + ³ = {250, 80}, + ¬ = {250, 80}, + − = {300,200}, + ± = {150,170}, + × = {200,200}, + ÷ = {200,200}, + € = {150, }, + /one.oldstyle = {100,100}, + /two.oldstyle = {100, 80}, + /three.oldstyle = { 80, 50}, + /four.oldstyle = { 80, 80}, + /five.oldstyle = { 50, }, + /six.oldstyle = { 50, }, + /seven.oldstyle = { 80, 80}, + /eight.oldstyle = { 50, }, + Γ = {100,120}, % /Gamma + Δ = {120,100}, % /Delta + Θ = {120, 50}, % /Theta + Λ = {130,100}, % /Lambda + Ξ = {100,}, % /Xi + Π = {100,}, % /Pi + Σ = {100, 50}, % /Sigma + Υ = {180,100}, % /Upsilon + Φ = {130, 70}, % /Phi + Ψ = {130, 50}, % /Psi + Ω = { 50,}, % /Omega + } + +\endinput +%% +%% End of file `mt-LatinModernRoman.cfg'. diff --git a/Master/texmf-dist/tex/latex/microtype/mt-PalatinoLinotype.cfg b/Master/texmf-dist/tex/latex/microtype/mt-PalatinoLinotype.cfg new file mode 100755 index 00000000000..e92feeaa8cf --- /dev/null +++ b/Master/texmf-dist/tex/latex/microtype/mt-PalatinoLinotype.cfg @@ -0,0 +1,293 @@ +%% mt-PalatinoLinotype.cfg: +%% Microtype configuration file for +%% Hermann Zapf’s Palatino font and +%% close substitutes +%% +%% Copyright © 2012 Loren B. Davis. ALL RIGHTS RESERVED. This is a derived +%% work and a modified component of R. Schlicht’s microtype package. The na- +%% ture of the changes to the mt-ppl.cfg component is: supporting character +%% protrusion for Unicode versions of Palatino and similar fonts. +%% +%% This work may be distributed and/or modified under the conditions of the +%% LaTeX Project Public License, either version 1.3c of this license or (at +%% your option) any later version. The latest version of this license is in: +%% http://www.latex-project.org/lppl.txt, and version 1.3c or later is part +%% of all distributions of LaTeX version 2005/12/01 or later. +%% +%% Palatino is a registered trademark of Linotype GmbH. Used without permis- +%% sion. + +\ProvidesFile + {mt-PalatinoLinotype.cfg}[2012/03/10 v1.0 microtype config. file: Palatino Linotype and similar fonts (LBD)] + +\DeclareCharacterInheritance + { encoding = {EU1,EU2}, + family = {PalatinoLinotype} } + { A = {À,Á,Â,Ã,Ä,Ā,Ă,Ą,Ǎ,Ǟ,Ǡ,Ȧ,Ǻ,Ȁ,Ȃ,Ḁ,Ạ,Ả,Ấ,Ầ,Ẩ,Ẫ,Ậ,Ắ,Ằ,Ẳ,Ẵ,Ặ,Ꜳ}, + B = {Ḃ,Ḅ,Ḇ}, + C = {Ç,Ć,Ĉ,Ḉ,Ċ,Č}, + D = {Ď,Ḋ,Ḍ,Ḏ,Ḑ,Ḓ}, + E = {È,É,Ê,Ë,Ē,Ĕ,Ė,Ę,Ě,Ȅ,Ȩ,Ȇ,Ḕ,Ḗ,Ḙ,Ḛ,Ḝ,Ẹ,Ẻ,Ẽ,Ế,Ề,Ể,Ễ,Ệ}, + F = {Ḟ}, + G = {Ĝ,Ğ,Ġ,Ģ,Ǧ,Ǵ,Ḡ}, + H = {Ĥ,Ȟ,Ḣ,Ḥ,Ḧ,Ḩ,Ḫ}, + I = {Ì,Í,Î,Ȉ,Ï,Į,Ĩ,Ị,Ī,İ,Ǐ,Ỉ,Ȋ,Ĭ,Ḭ,Ï}, + J = {Ĵ}, + K = {Ķ,Ǩ,Ḱ,Ḳ,Ḵ}, + L = {Ĺ,Ļ,Ľ,Ḷ,Ḹ,Ḻ,Ḽ,Ỻ,Ŀ,Ł}, % L· + M = {Ḿ,Ṁ,Ṃ}, + N = {Ñ,Ń,Ņ,Ň,Ǹ,Ṅ,Ṇ,Ṉ,Ṋ}, + O = {Ò,Ó,Ô,Õ,Ö,Ō,Ŏ,Ő,Ǒ,Ǫ,Ǭ,Ȍ,Ȏ,Ȫ,Ȭ,Ȯ,Ȱ,Ṍ,Ṏ,Ṑ,Ṓ,Ọ,Ỏ,Ố,Ồ,Ổ,Ỗ,Ộ,Ớ,Ờ,Ở,Ỡ,Ơ}, + P = {Ṕ,Ṗ}, + R = {Ŕ,Ŗ,Ř,Ȑ,Ȓ,Ṙ,Ṛ,Ṝ,Ṟ}, + S = {Ś,Ŝ,Ş,Š,Ș,Ṡ,Ṣ,Ṥ,Ṧ,Ṩ}, + T = {Ţ,Ť,Ț,Ṫ,Ṭ,Ṯ,Ṱ}, + U = {Ù,Ú,Û,Ü,Ũ,Ū,Ŭ,Ů,Ű,Ų,Ǔ,Ǖ,Ǘ,Ǚ,Ǜ,Ȕ,Ȗ,Ṳ,Ṵ,Ṷ,Ṹ,Ṻ,Ụ,Ủ,Ứ,Ừ,Ử,Ữ,Ự}, + V = {Ṽ,Ṿ}, + W = {Ŵ,Ẁ,Ẃ,Ẅ,Ẇ,Ẉ}, + X = {Ẋ,Ẍ}, + Y = {Ý,Ŷ,Ÿ,Ȳ,Ẏ,Ỳ,Ỵ,Ỷ,Ỹ}, + Z = {Ź,Ż,Ž,Ẑ,Ẓ,Ẕ}, + a = {à,á,â,ã,ä,å,ā,ă,ą,ǎ,ǟ,ǡ,ȧ,ǻ,ȁ,ȃ,ḁ,ạ,ả,ầ,ấ,ẩ,ẫ,ậ,ắ,ằ,ẳ,ẵ,ặ}, % aʾ + b = {ḃ,ḅ,ḇ}, + c = {ç,ć,ĉ,ċ,č,ḉ}, + d = {ď,ḋ,ḍ,ḏ,ḑ,ḓ}, + e = {è,é,ê,ë,ē,ĕ,ė,ę,ě,ȅ,ȩ,ȇ,ḕ,ḗ,ḙ,ḛ,ḝ,ẹ,ẻ,ẽ,ề,ế,ể,ễ,ệ}, + f = {ḟ,ff}, + g = {ĝ,ğ,ġ,ģ,ǧ,ǵ,ḡ}, + h = {ĥ,ȟ,ḣ,ḥ,ḧ,ḩ,ḫ,ẖ}, + i = {ı,ì,í,î,ȉ,ǐ,ï,į,ī,ị,ĩ,ḭ,ḯ,ỉ,ȋ,ĭ}, + j = {ĵ,ǰ}, + k = {ķ,ǩ,ḱ,ḳ,ḵ}, + l = {ĺ,ļ,ḻ,ḷ,ḹ,ḽ}, % ľ,l· + m = {ḿ,ṁ,ṃ}, + n = {ñ,ń,ņ,ň,ǹ,ṅ,ṇ,ṉ,ṋ}, % ʼn + o = {ò,ó,ô,õ,ö,ō,ŏ,ő,ǒ,ǫ,ǭ,ȍ,ȏ,ȫ,ȭ,ȯ,ȱ,ṍ,ṏ,ṑ,ṓ,ọ,ỏ,ồ,ố,ổ,ỗ,ộ,ớ,ờ,ở,ỡ,ợ}, + p = {ṕ,ṗ}, + r = {ŕ,ŗ,ř,ȑ,ȓ,ṙ,ṛ,ṝ,ṟ}, + s = {ś,ŝ,ş,š,ș,ṡ,ṣ,ṥ,ṧ,ṩ}, + t = {ţ,ț,ṫ,ṭ,ṯ,ṱ,ẗ}, % ť + u = {ù,ú,û,ü,ũ,ū,ŭ,ů,ű,ų,ǔ,ǖ,ǘ,ǚ,ǜ,ȕ,ȗ,ṳ,ṵ,ṷ,ṹ,ṻ,ụ,ủ,ứ,ừ,ử,ữ,ự}, + v = {ṽ,ṿ}, + w = {ŵ,ẁ,ẃ,ẅ,ẇ,ẉ,ẘ}, + x = {ẋ,ẍ}, + y = {ý,ÿ,ŷ,ȳ,ẏ,ẙ,ỳ,ỵ,ỷ,ỹ}, + z = {ź,ż,ž,ẑ,ẓ,ẕ}, + } + +\SetProtrusion + [ name = palatino-default ] + { encoding = {EU1,EU2}, + family = {PalatinoLinotype} } + { + A = {50,50}, + D = { ,50}, + J = {50, }, + K = { ,50}, + L = { ,50}, + O = {25, }, + T = {50,50}, + V = {50,50}, + W = {50,50}, + X = {50,50}, + Y = {50,50}, + b = { ,25}, + d = {25,30}, + f = { ,50}, + g = { ,100}, + k = { ,50}, + p = { ,50}, + q = {50, }, + r = { ,50}, + t = { ,50}, st = { ,50}, ſt = { ,50}, + v = {75,50}, + w = {50,50}, + x = {50,50}, + y = {50,70}, + 1 = {100,50}, + 2 = {25,50}, + 4 = {50, }, + 6 = {50, }, + 9 = {25, }, + Æ = {100, }, + Œ = {25, }, + . = { ,700}, ‥ = { ,350}, … = {,150}, + {,}= { ,500}, + : = { ,500}, + ; = { ,500}, + ! = { ,100}, ‼ = { ,100}, + ? = { ,200}, ‽ = { ,200}, + @ = {50,50}, + ~ = {200,250}, + & = {50,100}, + \% = {100,100}, + * = {200,200}, + + = {250,250}, + ( = {100, }, ) = { ,300}, + / = {200,300}, + - = {400,500}, + \textendash = {300,300}, \textemdash = {200,200}, + \textquoteleft = {500,700}, \textquoteright = {500,700}, + \textquotedblleft = {300,400}, \textquotedblright = {300,400}, + \textbackslash = {200,300}, + \quotesinglbase = {400,400}, \quotedblbase = {400,400}, + \guilsinglleft = {400,400}, \guilsinglright = {300,500}, + \guillemotleft = {300,300}, \guillemotright = {200,400}, + \textexclamdown = {100, }, \textquestiondown = {100, }, + \textbraceleft = {400,200}, \textbraceright = {200,400}, + \textless = {200,100}, \textgreater = {100,200}, + ≤ = {200,100}, ≥ = {100,200}, + \textminus = {300,300}, + \texttrademark = {200,200}, + \textcopyright = {200,200}, + \textregistered = {200,200}, + \textdegree = {300,300}, + ¦ = {450,500}, ¬ = {250,150}, + ⌐ = {150,250}, + · = {850, 700}, + ¶ = {100,0}, + × = {150, 300}, + ª = {300,300}, º = {300,300}, + ⁰ = {200,400}, + ¹ = {400,350}, ² = {200,300}, ³ = {250,400}, + ⁴ = {250,350}, ⁵ = {200,300}, ⁶ = {250,400}, + ⁷ = {200,450}, ⁸ = {250,400}, ⁹ = {200,350}, + ₀ = {200,400}, + ₁ = {400,250}, ₂ = {200,300}, ₃ = {250,400}, + ₄ = {250,350}, ₅ = {200,300}, ₆ = {250,400}, + ₇ = {200,450}, ₈ = {250,400}, ₉ = {200,350}, + ± = {150,100}, ÷ = {300,300}, + þ = { ,25}, + ₊ = {300,450}, ₋ = {300,450}, + ⁺ = {300,450}, ⁻ = {300,450}, + † = {200,250}, ‡ = {200,250}, + π = {50, }, + ſ = { ,50}, + № = {100,150}, + \textservicemark = {100,200}, + ‐ = {400,500}, ‑ = {400,500}, ‒ = {200,300}, + – = {205,305}, — = {200,300}, ― = {50,150}, + • = {125,200}, +% /a.sc = {50,50}, + } + +\SetProtrusion + [ name = palatino-it ] + { encoding = {EU1,EU2}, + family = {PalatinoLinotype}, + shape = {it,sl} } + { + A = {50,50}, + Æ = {50, }, + B = {50, }, + C = {50, }, + D = {50,50}, + E = {50, }, + F = {50, }, + G = {50, }, + H = {50, }, + K = {50, }, + L = {50, }, + O = {50, }, + Œ = {50, }, + P = {50, }, + Q = {50, }, + R = {50, }, + S = {50, }, + $ = {50, }, + T = {100, }, + U = {50, }, + V = {100,50}, + W = {50, }, + X = {50, }, + Y = {100,50}, + b = { ,50}, + c = {25, }, + g = {75, }, + i = {25, }, + m = { ,50}, + n = { ,50}, + p = { ,25}, + q = {25, }, + x = { ,50}, + 1 = {100, }, + 2 = {50, }, + 4 = {50, }, + 7 = {50, }, + . = { ,500}, ‥ = { ,350}, … = { ,200}, + {,}= { ,500}, + : = { ,300}, + ; = { ,300}, + ? = { ,300}, ‽ = { ,300}, + & = {50,50}, + \% = {100,100}, + * = {200,200}, + + = {150,200}, + @ = {50,50}, + ~ = {200,150}, + ( = {200, }, ) = { ,200}, + / = {100,200}, + - = {300,500}, + \textendash = {300,300}, \textemdash = {200,200}, + \textquoteleft = {700,400}, \textquoteright = {700,400}, + \textquotedblleft = {500,300}, \textquotedblright = {500,300}, + _ = {100,100}, + \textbackslash = {100,200}, + \quotesinglbase = {500,500}, \quotedblbase = {400,400}, + \guilsinglleft = {400,400}, \guilsinglright = {300,500}, + \guillemotleft = {300,300}, \guillemotright = {300,300}, + \textexclamdown = {100, }, \textquestiondown = {200, }, + \textbraceleft = {200,100}, \textbraceright = {200,200}, + \textless = {300,100}, \textgreater = {200,100}, + ≤ = {200,100}, ≥ = {100,200}, + ¦ = {450,500}, ¬ = {250,150}, + · = {850, 700}, + ¶ = {100,0}, + × = {150, 300}, + ª = {300,250}, ° = {300,300}, º = {300,250}, + ⁰ = {300,200}, + ¹ = {300,150}, ² = {350,200}, ³ = {250,150}, + ⁴ = {350,100}, ⁵ = {300, 50}, ⁶ = {400,100}, + ⁷ = {400, 50}, ⁸ = {250, 50}, ⁹ = {300, 50}, + ₀ = {300,300}, + ₁ = {300,350}, ₂ = {300,150}, ₃ = {250,250}, + ₄ = {400,200}, ₅ = {300,100}, ₆ = {450,200}, + ₇ = {450,150}, ₈ = {400,250}, ₉ = {400,200}, + ± = {150,100}, ÷ = {300,300}, + þ = { 50, }, + † = {250,200}, ‡ = {250,200}, + ₊ = {300,450}, ₋ = {300,450}, + ⁺ = {300,450}, ⁻ = {300,450}, + ‐ = {300,500}, ‑ = {300,500}, ‒ = {100,300}, + – = {125,305}, — = {200,300}, ― = {125,150}, + • = {125,200} + } + +\SetProtrusion + [ name = palatino-sc, + load = palatino-default ] + { encoding = {EU1,EU2}, + family = {PalatinoLinotype}, + shape = sc } + { + a = {50,50}, + æ = {50, }, + b = { 0, 0}, + d = { 0, 0}, + f = { 0, 0}, + g = { 0, 0}, + j = {50, }, + l = { ,50}, + o = { 0, 0}, + p = { 0, 0}, + q = { 0, }, + r = { , 0}, + t = {50,50}, + y = {50,50}, + fl = { 0,50}, + ffl = { 0,50}, + ſt = { 0,50}, + st = { 0,50} + } + +\endinput diff --git a/Master/texmf-dist/tex/latex/microtype/mt-bch.cfg b/Master/texmf-dist/tex/latex/microtype/mt-bch.cfg index 795a8e1653f..7cd6391674a 100644 --- a/Master/texmf-dist/tex/latex/microtype/mt-bch.cfg +++ b/Master/texmf-dist/tex/latex/microtype/mt-bch.cfg @@ -9,8 +9,8 @@ %% ------------------------------------------------------------------------ %% %% The `microtype' package -%% An interface to the micro-typographic extensions of pdfTeX -%% Copyright (c) 2004--2010 R Schlicht <w.m.l@gmx.net> +%% Subliminal refinements towards typographical perfection +%% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> %% %% This work may be distributed and/or modified under the conditions of the %% LaTeX Project Public License, either version 1.3c of this license or (at @@ -21,7 +21,8 @@ %% This work has the LPPL maintenance status `author-maintained'. %% %% This work consists of the files microtype.dtx and microtype.ins and the -%% derived files microtype.sty, microtype.lua and letterspace.sty. +%% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +%% microtype-luatex.def, microtype.lua and letterspace.sty. %% %% ------------------------------------------------------------------------ %% This is a font-specific configuration file for the `microtype' package. diff --git a/Master/texmf-dist/tex/latex/microtype/mt-blg.cfg b/Master/texmf-dist/tex/latex/microtype/mt-blg.cfg index d328a68752e..ec675c344cb 100644 --- a/Master/texmf-dist/tex/latex/microtype/mt-blg.cfg +++ b/Master/texmf-dist/tex/latex/microtype/mt-blg.cfg @@ -9,8 +9,8 @@ %% ------------------------------------------------------------------------ %% %% The `microtype' package -%% An interface to the micro-typographic extensions of pdfTeX -%% Copyright (c) 2004--2010 R Schlicht <w.m.l@gmx.net> +%% Subliminal refinements towards typographical perfection +%% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> %% %% This work may be distributed and/or modified under the conditions of the %% LaTeX Project Public License, either version 1.3c of this license or (at @@ -21,7 +21,8 @@ %% This work has the LPPL maintenance status `author-maintained'. %% %% This work consists of the files microtype.dtx and microtype.ins and the -%% derived files microtype.sty, microtype.lua and letterspace.sty. +%% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +%% microtype-luatex.def, microtype.lua and letterspace.sty. %% %% ------------------------------------------------------------------------ %% This is a font-specific configuration file for the `microtype' package. diff --git a/Master/texmf-dist/tex/latex/microtype/mt-cmr.cfg b/Master/texmf-dist/tex/latex/microtype/mt-cmr.cfg index 569a465f32d..d1560da8983 100644 --- a/Master/texmf-dist/tex/latex/microtype/mt-cmr.cfg +++ b/Master/texmf-dist/tex/latex/microtype/mt-cmr.cfg @@ -9,8 +9,8 @@ %% ------------------------------------------------------------------------ %% %% The `microtype' package -%% An interface to the micro-typographic extensions of pdfTeX -%% Copyright (c) 2004--2010 R Schlicht <w.m.l@gmx.net> +%% Subliminal refinements towards typographical perfection +%% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> %% %% This work may be distributed and/or modified under the conditions of the %% LaTeX Project Public License, either version 1.3c of this license or (at @@ -21,7 +21,8 @@ %% This work has the LPPL maintenance status `author-maintained'. %% %% This work consists of the files microtype.dtx and microtype.ins and the -%% derived files microtype.sty, microtype.lua and letterspace.sty. +%% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +%% microtype-luatex.def, microtype.lua and letterspace.sty. %% %% ------------------------------------------------------------------------ %% This is a font-specific configuration file for the `microtype' package. @@ -37,7 +38,7 @@ %% ------------------------------------------------------------------------ %% \ProvidesFile - {mt-cmr.cfg}[2009/11/09 v2.0 microtype config. file: Computer Modern Roman (RS)] + {mt-cmr.cfg}[2011/04/09 v2.1 microtype config. file: Computer Modern Roman (RS)] %%% ----------------------------------------------------------------------- %%% PROTRUSION @@ -180,58 +181,84 @@ [ name = cmr-it ] { } { - A = {100,50}, - B = {50, }, - C = {100, }, - D = {50,50}, - E = {50, }, - F = {100, }, - G = {100, }, - H = {50, }, - I = {50, }, - J = {100, }, - K = {50, }, - L = {50, }, - M = {50, }, - N = {50, }, - O = {100, }, - P = {50, }, - Q = {100, }, - R = {50, }, - S = {50, }, - $ = {50, }, - T = {100, }, - U = {50, }, - V = {100, }, - W = {100, }, - X = {50, }, - Y = {100, }, - 0 = {100, }, - 1 = {200,50}, - 2 = {100,-100}, - 3 = {100,-100}, - 4 = {150, }, - 5 = {100, }, - 6 = {100, }, - 7 = {200,-150}, - 8 = {50,-50}, - 9 = {100,-100}, + A = {100,100}, + B = {83,-40}, + C = {165,-75}, + D = {75, -28}, + E = {80,-55}, + F = {85,-80}, + G = {153,-15}, + H = {73,-60}, + I = {140,-120}, + J = {135,-80}, + K = {70,-30}, + L = {87, 40}, + M = {67,-45}, + N = {75,-55}, + O = {150,-30}, + P = {82,-50}, + Q = {150,-30}, + R = {75, 15}, + S = {90,-65}, + $ = {100,-20}, + T = {220,-85}, + U = {230,-55}, + V = {260,-60}, + W = {185,-55}, + X = {70,-30}, + Y = {250,-60}, + Z = {90,-60}, + a = {150,-10}, + b = {170, }, + c = {173,-10}, + d = {150,-55}, + e = {180, }, + f = { ,-250}, + g = {150,-10}, + h = {100, }, + i = {210, }, + j = { ,-40}, + k = {110,-50}, + l = {240,-110}, + m = {80, }, + n = {115, }, + o = {155, }, + q = {170,-40}, + r = {155,-40}, + s = {130, }, + t = {230,-10}, + u = {120, }, + v = {140,-25}, + w = {98,-20}, + x = {65,-40}, + y = {130,-20}, + z = {110,-80}, + 0 = {170,-85}, + 1 = {230,110}, + 2 = {130,-70}, + 3 = {140,-70}, + 4 = {130,80}, + 5 = {160, }, + 6 = {175,-30}, + 7 = {250,-150}, + 8 = {130,-40}, + 9 = {155,-80}, . = { ,500}, - {,}= { ,500}, + {,}= { ,450}, : = { ,300}, ; = { ,300}, - & = {100,50}, - \% = {100, }, - * = {400,100}, - + = {150,200}, - @ = {200,50}, + & = {130,30}, + \% = {180,50}, + * = {380,20}, + + = {180,200}, + @ = {180,10}, ~ = {200,150}, - ( = {200, }, ) = { ,200}, - / = {100,200}, + ( = {300, }, ) = { ,70}, + / = {100,100}, - = {500,300}, - \textendash = {500,300}, \textemdash = {400,200}, - \textquoteleft = {800,200}, \textquoteright = {800,200}, - \textquotedblleft = {700,100}, \textquotedblright = {500,300} + \textendash = {500,300}, \textemdash = {400,170}, + \textquoteleft = {800,200}, \textquoteright = {800,-20}, + \textquotedblleft = {540,100}, \textquotedblright = {500,100} } \SetProtrusion diff --git a/Master/texmf-dist/tex/latex/microtype/mt-euf.cfg b/Master/texmf-dist/tex/latex/microtype/mt-euf.cfg index e9bc49ea379..563f4b94b7d 100644 --- a/Master/texmf-dist/tex/latex/microtype/mt-euf.cfg +++ b/Master/texmf-dist/tex/latex/microtype/mt-euf.cfg @@ -9,8 +9,8 @@ %% ------------------------------------------------------------------------ %% %% The `microtype' package -%% An interface to the micro-typographic extensions of pdfTeX -%% Copyright (c) 2004--2010 R Schlicht <w.m.l@gmx.net> +%% Subliminal refinements towards typographical perfection +%% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> %% %% This work may be distributed and/or modified under the conditions of the %% LaTeX Project Public License, either version 1.3c of this license or (at @@ -21,7 +21,8 @@ %% This work has the LPPL maintenance status `author-maintained'. %% %% This work consists of the files microtype.dtx and microtype.ins and the -%% derived files microtype.sty, microtype.lua and letterspace.sty. +%% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +%% microtype-luatex.def, microtype.lua and letterspace.sty. %% %% ------------------------------------------------------------------------ %% This is a font-specific configuration file for the `microtype' package. diff --git a/Master/texmf-dist/tex/latex/microtype/mt-eur.cfg b/Master/texmf-dist/tex/latex/microtype/mt-eur.cfg index aead497cb7c..c5a1ec24b1c 100644 --- a/Master/texmf-dist/tex/latex/microtype/mt-eur.cfg +++ b/Master/texmf-dist/tex/latex/microtype/mt-eur.cfg @@ -9,8 +9,8 @@ %% ------------------------------------------------------------------------ %% %% The `microtype' package -%% An interface to the micro-typographic extensions of pdfTeX -%% Copyright (c) 2004--2010 R Schlicht <w.m.l@gmx.net> +%% Subliminal refinements towards typographical perfection +%% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> %% %% This work may be distributed and/or modified under the conditions of the %% LaTeX Project Public License, either version 1.3c of this license or (at @@ -21,7 +21,8 @@ %% This work has the LPPL maintenance status `author-maintained'. %% %% This work consists of the files microtype.dtx and microtype.ins and the -%% derived files microtype.sty, microtype.lua and letterspace.sty. +%% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +%% microtype-luatex.def, microtype.lua and letterspace.sty. %% %% ------------------------------------------------------------------------ %% This is a font-specific configuration file for the `microtype' package. diff --git a/Master/texmf-dist/tex/latex/microtype/mt-euroitc.cfg b/Master/texmf-dist/tex/latex/microtype/mt-euroitc.cfg index c550af7a186..8153724ece1 100644 --- a/Master/texmf-dist/tex/latex/microtype/mt-euroitc.cfg +++ b/Master/texmf-dist/tex/latex/microtype/mt-euroitc.cfg @@ -9,8 +9,8 @@ %% ------------------------------------------------------------------------ %% %% The `microtype' package -%% An interface to the micro-typographic extensions of pdfTeX -%% Copyright (c) 2004--2010 R Schlicht <w.m.l@gmx.net> +%% Subliminal refinements towards typographical perfection +%% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> %% %% This work may be distributed and/or modified under the conditions of the %% LaTeX Project Public License, either version 1.3c of this license or (at @@ -21,7 +21,8 @@ %% This work has the LPPL maintenance status `author-maintained'. %% %% This work consists of the files microtype.dtx and microtype.ins and the -%% derived files microtype.sty, microtype.lua and letterspace.sty. +%% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +%% microtype-luatex.def, microtype.lua and letterspace.sty. %% %% ------------------------------------------------------------------------ %% This is a font-specific configuration file for the `microtype' package. diff --git a/Master/texmf-dist/tex/latex/microtype/mt-eus.cfg b/Master/texmf-dist/tex/latex/microtype/mt-eus.cfg index 33f16930902..16e6c8f5f2d 100644 --- a/Master/texmf-dist/tex/latex/microtype/mt-eus.cfg +++ b/Master/texmf-dist/tex/latex/microtype/mt-eus.cfg @@ -9,8 +9,8 @@ %% ------------------------------------------------------------------------ %% %% The `microtype' package -%% An interface to the micro-typographic extensions of pdfTeX -%% Copyright (c) 2004--2010 R Schlicht <w.m.l@gmx.net> +%% Subliminal refinements towards typographical perfection +%% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> %% %% This work may be distributed and/or modified under the conditions of the %% LaTeX Project Public License, either version 1.3c of this license or (at @@ -21,7 +21,8 @@ %% This work has the LPPL maintenance status `author-maintained'. %% %% This work consists of the files microtype.dtx and microtype.ins and the -%% derived files microtype.sty, microtype.lua and letterspace.sty. +%% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +%% microtype-luatex.def, microtype.lua and letterspace.sty. %% %% ------------------------------------------------------------------------ %% This is a font-specific configuration file for the `microtype' package. diff --git a/Master/texmf-dist/tex/latex/microtype/mt-msa.cfg b/Master/texmf-dist/tex/latex/microtype/mt-msa.cfg index f0b954eb8ea..f1d0f86c162 100644 --- a/Master/texmf-dist/tex/latex/microtype/mt-msa.cfg +++ b/Master/texmf-dist/tex/latex/microtype/mt-msa.cfg @@ -9,8 +9,8 @@ %% ------------------------------------------------------------------------ %% %% The `microtype' package -%% An interface to the micro-typographic extensions of pdfTeX -%% Copyright (c) 2004--2010 R Schlicht <w.m.l@gmx.net> +%% Subliminal refinements towards typographical perfection +%% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> %% %% This work may be distributed and/or modified under the conditions of the %% LaTeX Project Public License, either version 1.3c of this license or (at @@ -21,7 +21,8 @@ %% This work has the LPPL maintenance status `author-maintained'. %% %% This work consists of the files microtype.dtx and microtype.ins and the -%% derived files microtype.sty, microtype.lua and letterspace.sty. +%% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +%% microtype-luatex.def, microtype.lua and letterspace.sty. %% %% ------------------------------------------------------------------------ %% This is a font-specific configuration file for the `microtype' package. diff --git a/Master/texmf-dist/tex/latex/microtype/mt-msb.cfg b/Master/texmf-dist/tex/latex/microtype/mt-msb.cfg index 6ed2d1fcc98..d1c8b11eed3 100644 --- a/Master/texmf-dist/tex/latex/microtype/mt-msb.cfg +++ b/Master/texmf-dist/tex/latex/microtype/mt-msb.cfg @@ -9,8 +9,8 @@ %% ------------------------------------------------------------------------ %% %% The `microtype' package -%% An interface to the micro-typographic extensions of pdfTeX -%% Copyright (c) 2004--2010 R Schlicht <w.m.l@gmx.net> +%% Subliminal refinements towards typographical perfection +%% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> %% %% This work may be distributed and/or modified under the conditions of the %% LaTeX Project Public License, either version 1.3c of this license or (at @@ -21,7 +21,8 @@ %% This work has the LPPL maintenance status `author-maintained'. %% %% This work consists of the files microtype.dtx and microtype.ins and the -%% derived files microtype.sty, microtype.lua and letterspace.sty. +%% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +%% microtype-luatex.def, microtype.lua and letterspace.sty. %% %% ------------------------------------------------------------------------ %% This is a font-specific configuration file for the `microtype' package. diff --git a/Master/texmf-dist/tex/latex/microtype/mt-mvs.cfg b/Master/texmf-dist/tex/latex/microtype/mt-mvs.cfg index 666cd337dda..dd6f18e18e3 100644 --- a/Master/texmf-dist/tex/latex/microtype/mt-mvs.cfg +++ b/Master/texmf-dist/tex/latex/microtype/mt-mvs.cfg @@ -9,8 +9,8 @@ %% ------------------------------------------------------------------------ %% %% The `microtype' package -%% An interface to the micro-typographic extensions of pdfTeX -%% Copyright (c) 2004--2010 R Schlicht <w.m.l@gmx.net> +%% Subliminal refinements towards typographical perfection +%% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> %% %% This work may be distributed and/or modified under the conditions of the %% LaTeX Project Public License, either version 1.3c of this license or (at @@ -21,7 +21,8 @@ %% This work has the LPPL maintenance status `author-maintained'. %% %% This work consists of the files microtype.dtx and microtype.ins and the -%% derived files microtype.sty, microtype.lua and letterspace.sty. +%% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +%% microtype-luatex.def, microtype.lua and letterspace.sty. %% %% ------------------------------------------------------------------------ %% This is a font-specific configuration file for the `microtype' package. @@ -43,15 +44,10 @@ %%% CHARACTER INHERITANCE \DeclareCharacterInheritance - { encoding = OT1, + { encoding = {OT1,U}, family = mvs } { 164 = {099,100,101} } % \EURhv,\EURcr,\EURtm -\DeclareCharacterInheritance - { encoding = U, - family = mvs } - { 164 = {099,100,101} } - %%% ----------------------------------------------------------------------- %%% PROTRUSION diff --git a/Master/texmf-dist/tex/latex/microtype/mt-pad.cfg b/Master/texmf-dist/tex/latex/microtype/mt-pad.cfg index 4ab10ff8359..1325e42f228 100644 --- a/Master/texmf-dist/tex/latex/microtype/mt-pad.cfg +++ b/Master/texmf-dist/tex/latex/microtype/mt-pad.cfg @@ -9,8 +9,8 @@ %% ------------------------------------------------------------------------ %% %% The `microtype' package -%% An interface to the micro-typographic extensions of pdfTeX -%% Copyright (c) 2004--2010 R Schlicht <w.m.l@gmx.net> +%% Subliminal refinements towards typographical perfection +%% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> %% %% This work may be distributed and/or modified under the conditions of the %% LaTeX Project Public License, either version 1.3c of this license or (at @@ -21,7 +21,8 @@ %% This work has the LPPL maintenance status `author-maintained'. %% %% This work consists of the files microtype.dtx and microtype.ins and the -%% derived files microtype.sty, microtype.lua and letterspace.sty. +%% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +%% microtype-luatex.def, microtype.lua and letterspace.sty. %% %% ------------------------------------------------------------------------ %% This is a font-specific configuration file for the `microtype' package. diff --git a/Master/texmf-dist/tex/latex/microtype/mt-pmn.cfg b/Master/texmf-dist/tex/latex/microtype/mt-pmn.cfg index 618c231f7d0..eaa6fbbd3c4 100644 --- a/Master/texmf-dist/tex/latex/microtype/mt-pmn.cfg +++ b/Master/texmf-dist/tex/latex/microtype/mt-pmn.cfg @@ -9,8 +9,8 @@ %% ------------------------------------------------------------------------ %% %% The `microtype' package -%% An interface to the micro-typographic extensions of pdfTeX -%% Copyright (c) 2004--2010 R Schlicht <w.m.l@gmx.net> +%% Subliminal refinements towards typographical perfection +%% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> %% %% This work may be distributed and/or modified under the conditions of the %% LaTeX Project Public License, either version 1.3c of this license or (at @@ -21,7 +21,8 @@ %% This work has the LPPL maintenance status `author-maintained'. %% %% This work consists of the files microtype.dtx and microtype.ins and the -%% derived files microtype.sty, microtype.lua and letterspace.sty. +%% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +%% microtype-luatex.def, microtype.lua and letterspace.sty. %% %% ------------------------------------------------------------------------ %% This is a font-specific configuration file for the `microtype' package. diff --git a/Master/texmf-dist/tex/latex/microtype/mt-ppl.cfg b/Master/texmf-dist/tex/latex/microtype/mt-ppl.cfg index 90ed3babd15..ba214018f7f 100644 --- a/Master/texmf-dist/tex/latex/microtype/mt-ppl.cfg +++ b/Master/texmf-dist/tex/latex/microtype/mt-ppl.cfg @@ -9,8 +9,8 @@ %% ------------------------------------------------------------------------ %% %% The `microtype' package -%% An interface to the micro-typographic extensions of pdfTeX -%% Copyright (c) 2004--2010 R Schlicht <w.m.l@gmx.net> +%% Subliminal refinements towards typographical perfection +%% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> %% %% This work may be distributed and/or modified under the conditions of the %% LaTeX Project Public License, either version 1.3c of this license or (at @@ -21,7 +21,8 @@ %% This work has the LPPL maintenance status `author-maintained'. %% %% This work consists of the files microtype.dtx and microtype.ins and the -%% derived files microtype.sty, microtype.lua and letterspace.sty. +%% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +%% microtype-luatex.def, microtype.lua and letterspace.sty. %% %% ------------------------------------------------------------------------ %% This is a font-specific configuration file for the `microtype' package. diff --git a/Master/texmf-dist/tex/latex/microtype/mt-ptm.cfg b/Master/texmf-dist/tex/latex/microtype/mt-ptm.cfg index a6bfbe3a209..51da99cbcf9 100644 --- a/Master/texmf-dist/tex/latex/microtype/mt-ptm.cfg +++ b/Master/texmf-dist/tex/latex/microtype/mt-ptm.cfg @@ -9,8 +9,8 @@ %% ------------------------------------------------------------------------ %% %% The `microtype' package -%% An interface to the micro-typographic extensions of pdfTeX -%% Copyright (c) 2004--2010 R Schlicht <w.m.l@gmx.net> +%% Subliminal refinements towards typographical perfection +%% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> %% %% This work may be distributed and/or modified under the conditions of the %% LaTeX Project Public License, either version 1.3c of this license or (at @@ -21,7 +21,8 @@ %% This work has the LPPL maintenance status `author-maintained'. %% %% This work consists of the files microtype.dtx and microtype.ins and the -%% derived files microtype.sty, microtype.lua and letterspace.sty. +%% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +%% microtype-luatex.def, microtype.lua and letterspace.sty. %% %% ------------------------------------------------------------------------ %% This is a font-specific configuration file for the `microtype' package. diff --git a/Master/texmf-dist/tex/latex/microtype/mt-ugm.cfg b/Master/texmf-dist/tex/latex/microtype/mt-ugm.cfg index 0037aeed2ed..7fc0bd74f0f 100644 --- a/Master/texmf-dist/tex/latex/microtype/mt-ugm.cfg +++ b/Master/texmf-dist/tex/latex/microtype/mt-ugm.cfg @@ -9,8 +9,8 @@ %% ------------------------------------------------------------------------ %% %% The `microtype' package -%% An interface to the micro-typographic extensions of pdfTeX -%% Copyright (c) 2004--2010 R Schlicht <w.m.l@gmx.net> +%% Subliminal refinements towards typographical perfection +%% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> %% %% This work may be distributed and/or modified under the conditions of the %% LaTeX Project Public License, either version 1.3c of this license or (at @@ -21,7 +21,8 @@ %% This work has the LPPL maintenance status `author-maintained'. %% %% This work consists of the files microtype.dtx and microtype.ins and the -%% derived files microtype.sty, microtype.lua and letterspace.sty. +%% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +%% microtype-luatex.def, microtype.lua and letterspace.sty. %% %% ------------------------------------------------------------------------ %% This is a font-specific configuration file for the `microtype' package. diff --git a/Master/texmf-dist/tex/latex/microtype/mt-zpeu.cfg b/Master/texmf-dist/tex/latex/microtype/mt-zpeu.cfg index 58d41b907cf..3570dae991e 100644 --- a/Master/texmf-dist/tex/latex/microtype/mt-zpeu.cfg +++ b/Master/texmf-dist/tex/latex/microtype/mt-zpeu.cfg @@ -9,8 +9,8 @@ %% ------------------------------------------------------------------------ %% %% The `microtype' package -%% An interface to the micro-typographic extensions of pdfTeX -%% Copyright (c) 2004--2010 R Schlicht <w.m.l@gmx.net> +%% Subliminal refinements towards typographical perfection +%% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net> %% %% This work may be distributed and/or modified under the conditions of the %% LaTeX Project Public License, either version 1.3c of this license or (at @@ -21,7 +21,8 @@ %% This work has the LPPL maintenance status `author-maintained'. %% %% This work consists of the files microtype.dtx and microtype.ins and the -%% derived files microtype.sty, microtype.lua and letterspace.sty. +%% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def, +%% microtype-luatex.def, microtype.lua and letterspace.sty. %% %% ------------------------------------------------------------------------ %% This is a font-specific configuration file for the `microtype' package. diff --git a/Master/tlpkg/libexec/ctan2tds b/Master/tlpkg/libexec/ctan2tds index a4972fc894e..bd16960748f 100755 --- a/Master/tlpkg/libexec/ctan2tds +++ b/Master/tlpkg/libexec/ctan2tds @@ -467,6 +467,7 @@ chomp ($Build = `cd $Master/../Build/source && pwd`); 'imprintmtshadow', "die 'skipping, nonfree font support'", 'indxcite', "die 'skipping, too old, license suboptimal'", 'induni-om', "die 'skipping, for omega, use of pua?'", + 'intex', "die 'skipping, wants autoconfery'", 'invoice', "&MAKEflatten", 'ipa', "die 'skipping, part of wsuipa'", 'isodoc', "&MAKEflatten", |