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/texmf-dist/source/latex/microtype | |
parent | 822d98439954f0fef863481b85be865206566fb5 (diff) |
microtype (13mar13)
git-svn-id: svn://tug.org/texlive/trunk@29369 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/microtype')
-rw-r--r-- | Master/texmf-dist/source/latex/microtype/microtype.dtx | 3248 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/microtype/microtype.ins | 18 |
2 files changed, 2161 insertions, 1105 deletions
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[no ligatures={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 |