summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/microtype/microtype.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2008-03-01 23:20:56 +0000
committerKarl Berry <karl@freefriends.org>2008-03-01 23:20:56 +0000
commit2aae6e259727499d0adc0e0a7193b188a45ddb0e (patch)
tree3cfccaf897a394c270400a87a1d75dc3ce54f18f /Master/texmf-dist/source/latex/microtype/microtype.dtx
parentcd59e77a5d3e29f608044c68e994c78dc56e1367 (diff)
microtype update (29feb08)
git-svn-id: svn://tug.org/texlive/trunk@6791 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/microtype/microtype.dtx')
-rw-r--r--Master/texmf-dist/source/latex/microtype/microtype.dtx1341
1 files changed, 704 insertions, 637 deletions
diff --git a/Master/texmf-dist/source/latex/microtype/microtype.dtx b/Master/texmf-dist/source/latex/microtype/microtype.dtx
index e9b195fe805..f3c11ee19ae 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.3"
+% !DTXversion:: "2.3a"
% ------------------------------------------------------------------------
-% $Id: microtype.dtx,v 1.48 2007-12-24 01:31:23+01 schlicht Exp schlicht $
+% $Id: microtype.dtx,v 1.49 2008-02-29 02:11:20+01 schlicht Exp schlicht $
% ------------------------------------------------------------------------
% The `microtype' package
% An interface to the micro-typographic extensions of pdfTeX
-% Copyright (c) 2004--2007 R Schlicht <w.m.l@gmx.net>
+% Copyright (c) 2004--2008 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
@@ -31,17 +31,21 @@
\ProvidesFile{microtype.dtx}
%</driver>
%<package|letterspace>\ProvidesPackage
+%<config>\ProvidesFile
%<package> {microtype}
-%<*package>
- [2007/12/23 v2.3 Micro-typography with pdfTeX (RS)]
-%</package>
-%<letterspace> {letterspace}[2007/12/23 v1.3 Robust letterspacing (RS)]
+%<letterspace> {letterspace}
+%<m-t> {microtype.cfg}
+%<*package|letterspace|m-t>
+ [2008/02/29 v2.3a
+%<package> Micro-typography with pdfTeX (RS)%
+%<letterspace> Robust letterspacing (RS)%
+%<m-t> microtype main configuration file (RS)%
+ ]
+%</package|letterspace|m-t>
%<*config>
-%<config>\ProvidesFile
-%<m-t> {microtype.cfg}[2007/12/23 v2.3 microtype main configuration file (RS)]
%<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}[2005/11/07 v1.9 microtype config. file: Computer Modern Roman (RS)]
+%<cmr> {mt-cmr.cfg}[2008/02/29 v1.9a 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}[2004/11/07 v1.2 microtype config. file: Adobe Minion (HH)]
%<ppl> {mt-ppl.cfg}[2005/11/16 v1.6 microtype config. file: Palatino (RS)]
@@ -57,12 +61,15 @@
%<mvs> {mt-mvs.cfg}[2006/07/05 v1.1 microtype config. file: Marvosym Euro (RS)]
%</config>
%
+%<*driver|docsty>
%<*driver>
\documentclass[10pt,a4paper]{ltxdoc}
\makeatletter
+%</driver>
% Let's abolish CM! We use Charter and Letter Gothic
% (for the pre-built documentation on CTAN):
-% \def\rmdefault{bch}
+% \usepackage[charter]{mathdesign}
+% \def\rmdefault{bch} % not scaled
% \def\ttdefault{blg}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
@@ -73,16 +80,22 @@
\DeclareMicrotypeSet*[protrusion]
{ doc }
{ encoding = {*, TS1, OMS},
- family = {rm*, tt*, cmsy},
+ family = {rm*, tt*},
size = {footnotesize, small, normalsize} }
+ \SetProtrusion
+ { encoding = OMS,
+ family = mdbch }
+ { "68 = {400, }, % \langle
+ "69 = { ,400} }% \rangle
\DeclareMicrotypeSet*[kerning]
- { lettergothic }
- { encoding = T1 }
- % underscores shouldn't touch
+ { doc }
+ { encoding = T1,
+ family = blg,
+ font = * } % French sample in section \ref{sub:kerning}
\SetExtraKerning
{ encoding = T1,
family = blg }
- { _ = {100,100} }
+ { _ = {100,100} } % underscores shouldn't touch
% disable ?` and !` ligatures (sample in section \ref{sec:disable-ligatures})
\DisableLigatures[?,!]{encoding = *, family = rm* }
% Fraktur sample in section \ref{sec:lettersp}
@@ -101,7 +114,7 @@
\ifpdf
\ifnum\pdftexversion<140 \else % pdftex 1.40, including textmatrix patch
\microtypesetup{expansion=alltext,step=1} % hence we can activate expansion ...
- \tolerance=300 % ... and make TeX almost as tolerant as it normally is
+ \tolerance=300 % ... and make TeX almost as intolerant as it normally is
\g@addto@macro\macrocode{\pdfadjustspacing\z@}
\fi
% bonus material
@@ -110,7 +123,6 @@
\else
\let\lsstyle\relax
\fi
-\usepackage{amssymb}
\usepackage{booktabs}
\usepackage{array}
\newcolumntype{L}[1]{p{#1}<{\raggedright}}
@@ -130,19 +142,17 @@
\cmrtrue
\def\PackageFont{\sffamily}
\def\match{\textbullet}
- \def\textgeq{$\geq$}
+ \usepackage{amssymb} % \varnothing
\linespread{1}\normalfont
\setlength\textheight{47\baselineskip}
\else
\def\bfdefault{b}
\def\Module#1{{\color{theblue}$\langle$\textit{#1}$\rangle$}}
- \DeclareRobustCommand{\LaTeX}{L\kern-.26em{\sbox\z@ T\vbox to\ht\z@{%
+ \DeclareRobustCommand\LaTeX{L\kern-.26em{\sbox\z@ T\vbox to\ht\z@{%
\hbox{\check@mathfonts\fontsize\sf@size\z@\math@fontsfalse\selectfont A}%
\vss}}\kern-.1em\TeX}
\def\PackageFont{\ttfamily}
\def\match{{\large\raisebox{-.15em}{\textbullet}}}
- \def\textgeq{% being picky...
- \raisebox{.2ex}{\kern1pt\underline{\kern-1pt\textgreater\kern-1pt}\kern1pt}}
{\catcode`\`=\active % indiscernible from ' in Bitstream Letter Gothic
\g@addto@macro\macro@code{\let`\textasciigrave}}
\linespread{1.07}\normalfont
@@ -185,7 +195,7 @@
\leftskip 4.2em
\rightskip 2em plus 1fil
\parindent 0pt
- {\let\numberline\@gobble{\small[#1~--~#2]}}}
+ {\let\numberline\@gobble{\small[#1~-- #2]}}}
\def\l@table{\@dottedtocline{1}{0pt}{1.5em}}
\def\@pnumwidth{1.7em}
\ifpdf
@@ -258,6 +268,10 @@
\itemindent \labelsep
\lstset{belowskip=0pt}}}
{\endlist}
+% boxes (for some reason, mathdesign changes these values)
+\setlength\fboxrule{0.4pt}
+\setlength\fboxsep{3pt}
+\setlength\arrayrulewidth{0.4pt}
% tables
\setlength\tabcolsep{2pt}
\long\def\@makecaption#1#2{%
@@ -270,9 +284,9 @@
\vskip 4pt}
% index and change log
\IndexPrologue{\section{Index}%
- Links refer to the page where the corresponding entry is described (bold face)
- resp. occurs. Plain numbers refer to the code line where the corresponding entry
- is defined (underlined) resp. used.}
+ Links (in blue) refer to the page where the corresponding entry is described
+ (bold face) resp. occurs. Plain numbers (in black) refer to the code line
+ where the corresponding entry is defined (underlined) resp. used.}
\GlossaryPrologue{\section{Change History}\label{sec:changes}\vspace*{-\multicolsep}}
%\setcounter{finalcolumnbadness}{100}
%\raggedcolumns
@@ -302,7 +316,7 @@
\def\PrintMacroName#1{\strut\MacroFont\string #1\hskip15pt}
\def\ImplementationSettings{%
\linespread{1}%
- \hfuzz=16pt
+ \hfuzz=10pt
\def\MacroFont{\ttfamily\footnotesize}%
\def\macro@font{\ttfamily\footnotesize}%
}
@@ -322,7 +336,7 @@
\def\DescribeValues#1#2{%
\let\@tempa\@empty \let\Option@default\@empty
\@for\@tempb:=#2\do{%
- \expandafter\csname Special#1Value\expandafter\endcsname\@tempb\@nil
+ \csname Special#1Value\expandafter\endcsname\@tempb\@nil
\expandafter\g@addto@macro\expandafter\@tempa
\expandafter{\csname #1Sep\endcsname}%
\expandafter\g@addto@macro\expandafter\@tempa
@@ -357,16 +371,16 @@
\DeclareRobustCommand\opt[1]{{\ttfamily#1}\@bsphack\CatIndex{#1}{option}\@esphack}
\DeclareRobustCommand\file[1]{{\ttfamily#1}}
% ... and whistles
-{\catcode`\$\active
+{\catcode`\"\active
\gdef\verbatim#1
- {\catcode`\$\active \def$##1${\colorbox{theshade}{%
+ {\catcode`\"\active \def"##1"{\colorbox{theshade}{%
\textrm{Text lost! Please install the \pkg{listings} package.}}}%
\@beginparpenalty\predisplaypenalty\@verbatim\MacroFont
\frenchspacing\@vobeyspaces\expandafter\@xverbatim\@gobble}}
\IfFileExists{listings.sty}{
\usepackage{listings}
\lstset{
- gobble=1,columns=flexible,keepspaces,upquote,escapechar=$,
+ gobble=1,columns=flexible,keepspaces,upquote,escapechar=",
basicstyle=\MacroFont,
keywords=[0]{\microtypesetup,\DeclareMicrotypeSet,\UseMicrotypeSet,
\DeclareMicrotypeSetDefault,\SetProtrusion,\SetExpansion,\SetTracking,
@@ -377,14 +391,14 @@
keywordstyle=[0]\color{thegreen},
keywords=[1]{protrusion,expansion,activate,DVIoutput,draft,final,verbose,
config,factor,auto,stretch,shrink,step,selected,unit,tracking,spacing,
- kerning,letterspace,babel,%defersetup,copyfonts,
+ kerning,letterspace,babel,%defersetup,copyfonts, % undocumented
context,no ligatures,outer spacing,outer kerning}, % there are three \nobreakspace in this line
keywordstyle=[1]\color{thered},
comment=[l]\%,
commentstyle=\color{thegrey}\itshape,
alsoother={0123456789_},
frame=single,backgroundcolor=\color{theshade},rulecolor=\color{theframe},
- xleftmargin=3.4pt,xrightmargin=3.4pt,belowskip=\smallskipamount
+ framerule=\fboxrule,xleftmargin=3.4pt,xrightmargin=3.4pt,belowskip=\smallskipamount
}
\let\verbatim\relax
\lstnewenvironment{verbatim}[1][]{\lstset{##1}}{}
@@ -417,7 +431,7 @@
\IfFileExists{hyperxmp.sty}{
\usepackage{hyperxmp}
\hypersetup{%
- pdfcopyright={\textcopyright\ 2004--2007 R Schlicht\012%
+ pdfcopyright={\textcopyright\ 2004--2008 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;%
@@ -445,7 +459,8 @@
% \string\verb\quotechar*\verbatimchar\string#1\verbatimchar
% \encapchar codeline}%
% \@esphack}
- \def\ctanurl#1{\href{http://www.ctan.org/tex-archive/#1}{\nolinkurl{/#1}}}
+ \def\ctanurl#1{Available from \acronym{CTAN} at
+ \href{http://www.ctan.org/tex-archive/#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]}
@@ -471,7 +486,8 @@
/OCGs [\mt@objects]
/D << /Order [\mt@order]
/BaseState/OFF
- /ON [\mt@Protrusion@false \mt@Expansion@false \csname mtl@objects\endcsname] >> >> }
+ /ON [\mt@Protrusion@false \mt@Expansion@false
+ \ifx\mtl@objects\@undefined\else\mtl@objects\fi] >> >> }
\newbox\mt@box
\newdimen\mt@unvdimen
\def\mt@place#1{%
@@ -538,7 +554,7 @@
\newcommand\hyperref[2][]{#2}
\let\hyperpage\@firstofone
\let\texorpdfstring\@firstoftwo
- \let\ctanurl\url
+ \def\ctanurl{Available from \acronym{CTAN} at \url}
\let\nolinkurl\url
\let\mailto\texttt
\def\mailtoRS{\mailto{w.m.l@gmx.net}}
@@ -557,11 +573,10 @@
\fi Th\`anh}
\def\pdftex{\texorpdfstring{pdf\kern.05em\TeX}{pdfTeX}}
\def\luatex{\texorpdfstring{Lua\kern-.05em\TeX}{LuaTeX}}
-\def\eplain{\texorpdfstring{\pkg{eplain}}{eplain}}
\def\etex{\mbox{e-\TeX}}
\def\nonetex{\mbox{\rlap{\kern.05em/}e-\TeX}} % aka. \TeX
\def\microtype{{\PackageFont microtype}}
-\def\letterspace{{\PackageFont letterspace}}
+\def\letterspace{\pkg{letterspace}}
\def\fontdim{\cmd\fontdimen\,}
\def\eg{e.\,g.}
\def\ie{i.\,e.}
@@ -571,6 +586,7 @@
\footnotesize\or\small\or\or\normalsize\or\or\large\or\or\or\Large\fi}
\DeclareRobustCommand\acronym[1]{%
\texorpdfstring{{\smaller\textls[60]{#1}}}{#1}}
+\let\less=<
{\catcode`\<=\active
\AtBeginDocument{\catcode`\<=\active
\def<#1>{\acronym{#1}}
@@ -578,6 +594,7 @@
\DeclareRobustCommand\@contributor[2]{\textit{#1}}
%\DeclareRobustCommand\@contributor[2]{\href{mailto:#2}{\textit{#1}}}
}}
+%<*driver>
\CodelineIndex
\EnableCrossrefs
\RecordChanges
@@ -586,6 +603,7 @@
\DocInput{microtype.dtx}
\end{document}
%</driver>
+%</driver|docsty>
% \fi
%
% ^^A -------------------------------------------------------------------------
@@ -631,12 +649,12 @@
% package will by default enable protrusion and expansion if they can safely be
% assumed to work.
%
-% The alternative package \letterspace, which also works with \eplain\ or
+% The alternative package \letterspace, which also works with \pkg{eplain} or
% even \pkg{miniltx}, 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.07em--2007 R Schlicht.
+% This package is copyright \textcopyright\ 2004\kern.08em--2008 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},
@@ -712,23 +730,23 @@
% 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 doesn't
-% pose a problem any longer. The \microtype\ package provides the possibility
+% 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.
%
-% \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 words ends with an
-% `r', the following space should be a tiny bit smaller than that following an,
-% say, `m'. You can think of this concept as an extension to \TeX's `space
+% \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~\mbox{--,} \pdftex\ provides the possibility to modify these
-% parameters independently from one another. Furthermore, the values may be set
+% 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.
@@ -747,7 +765,7 @@
% 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
-% (and will of course apply as usual), this additional kerning is based on
+% (which will of course apply as usual), this additional kerning is based on
% single characters, not on character pairs.
%
% The possibility, finally, to \emph{disable all ligatures} of a font may be
@@ -806,6 +824,7 @@
% 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).
%
+%
%\subsection{Micro-Typographic Options}\label{sub:options-microtype}
%
%\Describe{Option}{protrusion}
@@ -840,15 +859,16 @@
%\end{verbatim}
%\smallskip
% When \pdftex\ employs font expansion and character protrusion, line breaks
-% (and consequently, page breaks) may turn out differently. If that is not
-% desired, you may pass the value |compatibility| to the \opt{protrusion}
-% and/or \opt{expansion} options. Typographically, however, the results may be
+% (and consequently, page breaks) may turn out differently. If this is not
+% desired -- because you are typesetting a book whose pagination must not
+% change -- you may pass the value |compatibility| to the \opt{protrusion}
+% and/or \opt{expansion} options. Typographically, however, the results will be
% suboptimal, hence the default value is |nocompatibility|.
%
% Finally, you may also specify the name of a font set to which character
% protrusion and/or font expansion should be restricted. See
% section~\ref{sec:font-sets} for a detailed discussion. Specifying a font set
-% for a feature implies activating this feature.
+% for a feature implicitly activates this feature.
%
%\medskip
%\Describe{Option}{tracking}{true,!false,:font set name}
@@ -859,7 +879,55 @@
% off, or they may be activated by passing a set name to the option. By
% default, neither feature is enabled.
%
-%\bigskip\noindent
+%\begin{table}\small
+%\changes{v2.3a}{2008/02/25}{add table of available and enabled features}
+%\caption{Availability of micro-typographic features}\label{tab:available-features}
+%\catcode`\!=13 \def!{\textcolor{thered}{$\ \varnothing$}}
+%\catcode`\?=13 \def?{\textcolor{theblue}{$\ \boxtimes$}}
+%\catcode`\Q=13 \defQ{\textcolor{thegreen}{$\ \!\bigstar$}}
+%\setlength\fboxsep{4pt}
+%\leavevmode\kern-\dimexpr\fboxsep+\fboxrule\relax
+%\fcolorbox{theframe}{white}{^^A
+%\begin{minipage}{\textwidth}
+%\def\arraystretch{1.2}
+%\begin{tabular}{*2{@{}L{48pt}}*3{@{}L{44pt}}*3{@{}L{42pt}}@{}}
+% \footnotesize \pdftex
+% && \multicolumn{6}{l}{\footnotesize Micro-typographic features}\\
+%\cmidrule(r){1-2}
+%\cmidrule{3-8}
+% \footnotesize version
+% & \footnotesize output
+% & \footnotesize Protrusion
+% & \footnotesize Expansion
+% & \footnotesize (= auto)
+% & \footnotesize Kerning
+% & \footnotesize Spacing
+% & \footnotesize Tracking\\
+%\cmidrule(r){1-1}\cmidrule(r){2-2}\cmidrule(r){3-3}\cmidrule(r){4-4}
+%\cmidrule(r){5-5}\cmidrule(r){6-6}\cmidrule(r){7-7}\cmidrule{8-8}
+% $\less$ 0.14f & <DVI>/<PDF> & ! & ! & ! & ! & ! & !\\
+% $\geq$ 0.14f & <DVI>/<PDF> & Q & ? & ! & ! & ! & !\\
+% $\geq$ 1.20 & <DVI> & Q & ? & ! & ! & ! & !\\
+% & <PDF> & Q & Q & Q & ! & ! & !\\
+% $\geq$ 1.40 & <DVI> & Q & ? & ! & ? & ? & !\\
+% & <PDF> & Q & Q & Q & ? & ? & ?\\
+%\bottomrule
+%\end{tabular}^^A
+%\vskip4pt\footnotesize
+% Q = enabled\quad
+% ? = not enabled\quad
+% ! = not available
+%\vskip3pt
+%\end{minipage}^^A
+%}\kern-\dimexpr\fboxsep+\fboxrule\relax ^^A end \fcolorbox
+%\end{table}
+%
+%\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 the output mode.
+%
+%\medskip\noindent
% Whether ligatures should be disabled cannot be controlled via a package option
% but by using the \cs{DisableLigatures} command, which is explained in
% section~\ref{sec:disable-ligatures}.
@@ -879,6 +947,7 @@
% typographical correctness -- if you are using a large font that calls for
% more modest protrusion).
%
+%\ifcmr\else\pagebreak\fi ^^A layout
%\medskip
%\Describe{Option}{unit}{!character,:dimension}
% This option is described in section~\ref{sub:protrusion}, apropos the command
@@ -900,7 +969,6 @@
% regardless whether \opt{auto} is true or not.
%\fi
%
-%\ifcmr\else\enlargethispage\baselineskip\fi ^^A layout
%\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
@@ -1003,13 +1071,13 @@
%\medskip
%\Describe{Option}{verbose}{true,!false,errors,silent}
% Information on the settings used for each font will be written into the log
-% file if you enable the \opt{verbose} option, which is disabled by default.
-% When \microtype\ encounters a problem that is not fatal (\eg, an unknown
-% character in the settings, or non-existent settings), it will by default only
-% issue a warning and try to continue. Loading the package with |verbose=errors|
-% will turn all warnings into errors, so that you can be sure that no problem
-% will go unnoticed. If on the other hand you have investigated all warnings
-% and decide to ignore them, you may silence \microtype\ with |verbose=silent|.
+% file if you enable the \opt{verbose} option. When \microtype\ encounters a
+% problem that is not fatal (\eg, an unknown character in the settings, or
+% non-existent settings), it will by default only issue a warning and try to
+% continue. Loading the package with |verbose=errors| will turn all warnings
+% into errors, so that you can be sure that no problem will go unnoticed. If on
+% the other hand you have investigated all warnings and decide to ignore them,
+% you may silence \microtype\ with |verbose=silent|.
%
%\medskip
%\Describe{Option}{babel}{true,!false}
@@ -1044,7 +1112,6 @@
%\Describe{Macro}{\microtypesetup}{key\,|=|\,value list}
% Inside the preamble, this command accepts all package options described above
% (except for |config|).
-%^^A
% In the document body, this command may be used to change the general settings
% of the micro-typographic extensions. It then accepts the keys: \key{expansion},
% \key{protrusion} and \key{activate}, which in turn may receive the values
@@ -1101,7 +1168,7 @@
% 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
+% in the above example -- it does not constitute a restriction. In other
% words, this is equivalent to specifying \emph{all} possible values for that
% attribute.
% Therefore, the predefined set `|alltext|', which is declared as:
@@ -1156,7 +1223,7 @@
%\begin{table}\microtypesetup{protrusion=false}\small
%\caption{Predefined font sets}\label{tab:predefined-font-sets}
%\catcode`\!=13 \def!{$\varnothing$}
-%\setlength\fboxsep{4pt}\setlength\fboxrule{0.4pt}
+%\setlength\fboxsep{4pt}
%\leavevmode\kern-\dimexpr\fboxsep+\fboxrule\relax
%\fcolorbox{theframe}{white}{^^A
%\begin{minipage}{\textwidth}
@@ -1245,7 +1312,7 @@
% `|basictext|' set for font expansion and interword spacing, and the
% `|smallcaps|' set for tracking.
%
-%\bigskip\noindent
+%\medskip\noindent
% These commands may only be used in the preamble or in the main configuration
% file. Their scope is global to the document. Only one set per feature may be
% activated.
@@ -1397,7 +1464,7 @@
% 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
@@ -1407,11 +1474,10 @@
% it will only be expanded or shrunk by one half of the amount that the rest
% of the characters will be expanded or shrunk.
% While the default value for character protrusion is~0~-- that is, if you
-% didn't specify any characters, none would be protruded~--, the default value
+% didn't specify any characters, none would be protruded~-- the default value
% for expansion is 1000, which means that all characters would be expanded by
% the same amount.
%
-%\ifcmr\else\pagebreak\fi ^^A layout
%\paragraph{Options:}
%\begin{options}
% \item[\key{name}, \key{load}, \key{preset}, \key{inputenc}, \key{context}]
@@ -1531,7 +1597,6 @@
% `|500*|'; this is also the default, \ie, the sum of the outer kerns is
% by default equal to the current letterspace amount. To remove kerning on
% both sides, you would write `|outer kerning={0,0}|'.
-%\ifcmr\else\enlargethispage{-\baselineskip}\fi ^^A layout
% \item[\key{no ligatures}]
% As far as \pdftex\ is concerned, ligatures in letterspaced fonts would
% be constructed as usual, which may be advisable when changing the
@@ -1559,8 +1624,7 @@
%
%\ifx\lssample\undefined
% {\centering\itshape
-% [The original documentation\footnote{Available from <CTAN> at
-% \ctanurl{macros/latex/contrib/microtype/microtype.pdf}.}
+% [The original documentation\footnote{\ctanurl{macros/latex/contrib/microtype/microtype.pdf}.}
% includes an image illustrating all of these options.]\par}
%\medskip\noindent
% As an
@@ -1573,12 +1637,12 @@
% (which I would in no way recommend; they are only for illustrative purposes):
%\begin{verbatim}
%\SetTracking
-% [ no ligatures = {$\anchorarrow{nolig}$f},
-% spacing = {60$\anchorarrow{ispace}$0*,-1$\anchorarrow{istretch}$00*, $\anchorarrow{ishrink}$},
-% outer spacing = {4$\anchorarrow{ospace}$50,2$\anchorarrow{ostretch}$50,1$\anchorarrow{oshrink}$50},
-% outer kerning = {$\anchorarrow{okernbegin}$*,$\anchorarrow{okernend}$*} ]
+% [ no ligatures = {"\anchorarrow{nolig}"f},
+% spacing = {60"\anchorarrow{ispace}"0*,-1"\anchorarrow{istretch}"00*, "\anchorarrow{ishrink}"},
+% outer spacing = {4"\anchorarrow{ospace}"50,2"\anchorarrow{ostretch}"50,1"\anchorarrow{oshrink}"50},
+% outer kerning = {"\anchorarrow{okernbegin}"*,"\anchorarrow{okernend}"*} ]
% { encoding = * }
-% { 1$\anchorarrow{lsamount}$60 }
+% { 1"\anchorarrow{lsamount}"60 }
%\end{verbatim}
% and then write:
%\begin{verbatim}
@@ -1634,8 +1698,8 @@
%\usepackage[tracking=alltext,letterspace=-40]{microtype}
%\end{verbatim}
%
-%\emptypdfpageresources ^^A layers of letterspacing illustration
-%\subsection{Interword Spacing}\label{sub:interword-spacing}
+%
+%\subsection{Interword Spacing}\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
@@ -1653,6 +1717,8 @@
% adjustment is in effect, space factors are ignored, since it may be
% considered an extension to space factors with much finer control.
%
+%\emptypdfpageresources ^^A layers of letterspacing illustration
+%
%\paragraph{The spacing settings}
% are declared as pairs of \meta{character}\,|=|\,\meta{spacing factors}, where
% the latter consist of three numbers: first, the additional kern inserted
@@ -1691,12 +1757,13 @@
%\subsection{Additional Kerning}\label{sub:kerning}
%
%\Describe{Macro}{\SetExtraKerning}{?options,set of fonts,kerning settings}
-% Fine tune the additional kerning. In contrast to standard kerning, which is
-% always associated with a \emph{pair} of characters, and to tracking, which
-% specifies the space between \emph{all} characters of a font, the additional
-% kerning relates to single characters, that is, whenever that character
-% appears in the text, the specified kerning will be inserted, regardless of
-% which character precedes resp. follows it.
+% With this command, you can fine tune the extra kerning. In contrast to
+% standard kerning, which is always associated with a \emph{pair} of
+% characters, and to tracking, which specifies the space between \emph{all}
+% characters of a font, the extra kerning relates to single characters, that
+% is, whenever a particular character appears in the text, the specified
+% kerning will be inserted, regardless of which character precedes resp.
+% follows it.
%
% I should not neglect to mention a limitation of this additional kerning:
% words \emph{immediately following} such a kern (not separated by a space)
@@ -1716,13 +1783,14 @@
% 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 are relative to 1em.
+% \meta{dimension}. By default, the values denote thousandths of 1em.
% \item[\key{context}] When it comes to kerning settings, this option is
% especially useful, since it allows to apply 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,
@@ -1739,11 +1807,20 @@
%\changes{v2.3}{2007/11/20}{add kerning sample}
% \begin{microtypecontext}{kerning=french}
% What is the result of these settings? If they are active, like in the
-% current paragraph, the following will happen: a thin space will be
-% inserted in front of each semicolon, exclamation and question mark; a
-% normal space in front of the colon. Read section~\ref{sec:context} to
-% learn how to activate these settings!
+% current paragraph, a thin space will be inserted in front of each
+% question mark, exclamation mark and semicolon; a normal space in front
+% of the colon. Read section~\ref{sec:context} to learn how to activate
+% these settings! This paragraph was input like this:
% \end{microtypecontext}
+%\begin{verbatim}[deletekeywords={[1]{context,activate}}]
+%\begin{microtypecontext}{kerning=french}
+% What is the result of these settings? If they are active, like in the
+% current paragraph, a thin space will be inserted in front of each
+% question mark, exclamation mark and semicolon; a normal space in front
+% of the colon. Read section~\ref{sec:context} to learn how to activate
+% these settings! This paragraph was input like this:
+%\end{microtypecontext}
+%\end{verbatim}
%\end{options}
%
%
@@ -1790,7 +1867,7 @@
%\begin{table}[t]\small
%\changes{v1.6a}{2005/02/02}{add table of fonts with tailored protrusion settings}
%\caption{Fonts with tailored protrusion settings}\label{tab:fonts}
-%\setlength\fboxsep{4pt}\setlength\fboxrule{0.4pt}
+%\setlength\fboxsep{4pt}
%\leavevmode\kern-\dimexpr\fboxsep+\fboxrule\relax
%\fcolorbox{theframe}{white}{^^A
%\begin{minipage}{\textwidth}
@@ -1893,7 +1970,7 @@
% Font package authors might also want to have a look at the hook
% \cs{Microtype@Hook}, described in the implementation part,
% section~\ref{sub:hook}.}
-% This command will load the file |mt-|\meta{font name}|.cfg|.
+% This command will load the file `|mt-|\meta{font name}|.cfg|'.
%
%
%\section{Context-sensitive Setup}\label{sec:context}
@@ -2054,8 +2131,8 @@
% the same time.
%
% In contrast to \microtype, which requires \LaTeX, the \letterspace\
-% package also works with \eplain\ or even only \pkg{miniltx}: for use with
-% \eplain, load the package with \cmd\usepackage\ inside the
+% package also works with \pkg{eplain} or even only \pkg{miniltx}: for use with
+% \pkg{eplain}, load the package with \cmd\usepackage\ inside the
% \cmd\beginpackages~\dots\ \cmd\endpackages\ environment; with \pkg{miniltx},
% simply \cmd\input\ \file{letterspace.sty} (\pkg{miniltx} does not support
% package options).
@@ -2078,11 +2155,12 @@
% may contain a comma-separated list of characters for which the ligature
% mechanism should be inhibited:
%\begin{verbatim}
-%\DisableLigatures[?,!]{encoding = T1} % $\ifx\tagcode\undefined\else ^^A
-% \normalfont\color{thegrey}inhibit ?` !`, but not fi -- >> etc.\fi$
+%\DisableLigatures[?,!]{encoding = T1} % "\ifx\tagcode\undefined\else ^^A
+% \normalfont\color{thegrey}inhibit ?` !`, 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.
+% only be used in the preamble, and only once. It requires \pdftex\ 1.30 or
+% later.
%
%
%\section{Hints and Caveats}\label{sec:caveats}
@@ -2175,11 +2253,11 @@
%\end{verbatim}
%
%\changes{v1.7}{2005/03/23}{add hint about compatibility}
-%\paragraph{Compatibility.}
-% The package is supposed to work happily together with all other \LaTeX\
-% packages (except for \pkg{pdfcprot}). However, life isn't perfect, so
+%\paragraph{Compatibility and interaction with other packages:}
+% The \microtype\ package is supposed to work happily together with all other
+% \LaTeX\ packages (except for \pkg{pdfcprot}). However, life isn't perfect, so
% problems are to be expected. Currently, I am only aware of the following
-% issue:
+% issues:
%\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
@@ -2187,9 +2265,11 @@
% your document includes multiple input encodings, 8-bit characters in
% the settings will not work reliably unless you specify the |inputenc|
% key.
+%\changes{v2.3a}{2008/02/25}{add hint about \pkg{babel} having to be loaded first}
+% \item When loading the package with the \opt{babel} option, you must load
+% the \pkg{babel} package before \microtype.
%\end{itemize}
%
-%
%\changes{v1.8}{2005/06/23}{add hint about error messages}
%\paragraph{Possible error messages and how to get rid of them:}
%\begin{itemize}
@@ -2206,7 +2286,6 @@
% possible in <DVI> mode, it requires that all instances of the expanded fonts
% exist on your \TeX\ system.
%
-%\ifcmr\else\pagebreak\fi ^^A layout
%\changes{v2.2}{2007/06/13}{add hint about error message with \pdftex\ 1.40}
% \item
%\begin{verbatim}
@@ -2268,9 +2347,9 @@
% When applying micro-typographic enhancement to a large document with a lot of
% fonts, \pdftex\ may be running out of some kind of memory. It can be
% increased by setting the respective parameter to a larger value. For
-% web2c-based systems, change the settings in \file{texmf.cnf}, for MiK\TeX, in
-% the file \file{miktex.ini} (2.4 or older) resp. \file{pdflatex.ini} (2.5 or
-% newer).
+% web2c-based systems, \eg, \TeX Live, change the settings in \file{texmf.cnf},
+% for MiK\TeX, in the file \file{miktex.ini} (2.4 or older) resp.
+% \file{pdflatex.ini} (2.5 or newer).
%
%\changes{v2.0}{2007/01/05}{add hint about warning when tracking \emph{and}
% expansion is applied to a font}
@@ -2283,7 +2362,7 @@
%\end{itemize}
%
%
-%\section{Contributions}\label{sec:contrib}
+%\section{Contributions}
%
% I would be glad to include configuration files for more fonts. Preparing such
% configurations is quite a time-consuming task and requires a lot of patience.
@@ -2305,9 +2384,9 @@
% 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
-% least for promoting it in [\cite{ThanhPracTeX}]. 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.
+% least for promoting it in \cite{ThanhPracTeX} and \cite{ThanhEuroTeX07}. 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
@@ -2360,6 +2439,7 @@
% and
% \contributor Peter Meier <Peter.Meier998\at gmx.de>.
%
+%
%\begin{thebibliography}{}
% \bibitem[Th\`anh 2000]{ThanhThesis}
% \thanh, `Micro-typographic extensions to the \TeX\ typesetting system',
@@ -2370,19 +2450,19 @@
%\iffalse ^^A obsolete
% \bibitem[Th\`anh 2001]{ThanhTUG}
% \thanh, `Margin Kerning and Font Expansion with \pdftex',
-% \newblock in: \textit{TUGBoat}, vol.~22(2001), no.~3 -- Proceedings of the
-% 2001 Annual Meeting, pp.~146--148.
+% \newblock in: \textit{TUGBoat}, vol.~22(2001), no.~3: `Proceedings of the
+% 2001 Annual Meeting', pp.~146--148.
% \newblock (Online at \url{http://www.tug.org/TUGboat/Articles/tb22-3/tb72thanh.pdf})
%\fi
%
%\bibitem[Th\`anh 2004]{ThanhPracTeX}
% \thanh, `Micro-typographic extensions of \pdftex\ in practice',
-% \newblock in: \textit{TUGBoat}, vol.~25(2004), no.~1 -- Proceedings of the
-% Practical \TeX\ 2004 Conference, pp.~35--38.
+% \newblock in: \textit{TUGBoat}, vol.~25(2004), no.~1: `Proceedings of the
+% Practical \TeX\ 2004 Conference', pp.~35--38.
% \newblock (Online at \url{http://www.tug.org/TUGboat/Articles/tb25-1/thanh.pdf})
%
%\iffalse
-% \bibitem[Th\`anh 2005]{ThanhEuroTeX}
+% \bibitem[Th\`anh 2005]{ThanhEuroTeX05}
% \thanh, `Experiences with micro-typographic extensions of \pdftex\ in practice',
% \newblock in: Euro\TeX\ 2005 Proceedings
% ^^A 15th~Annual Meeting of the European \TeX\ Users,
@@ -2390,39 +2470,50 @@
% [=~\textit{TUGBoat}, vol.~27(2006), no.~0],
% pp.~159--164.
% \newblock (Online at \url{http://www.tug.org/TUGboat/Articles/tb27-0/thanh.pdf})
-% ^^A = \url{http://www.dante.de/dante/events/eurotex/papers/TUT07.pdf}
+% ^^A = \url{http://www.dante.de/dante/events/eurotex/papers/TUT07.pdf}
%\fi
%
+% \bibitem[Th\`anh 2008]{ThanhEuroTeX07} ^^A as yet only available for TUG members
+% \thanh, `Font-specific issues in \pdftex',
+% \newblock in: \textit{TUGBoat}, vol.~29(2008), no.~1:
+% `EuroBacho\TeX\ 2007 Proceedings', pp.~36--41.
+% \newblock (Online -- for <TUG> members -- at \url{https://www.tug.org/members/TUGboat/tb29-1/tb91thanh-fonts.pdf})
+%
% \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 (Available from <CTAN> at \ctanurl{systems/pdftex/};
+% \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}
%
% \bibitem[Fontname]{fontname}
% Karl Berry, \emph{Fontname. Filenames for \TeX\ fonts},
% \newblock September 2005.
-% \newblock (Available from <CTAN> at \ctanurl{info/fontname/fontname.pdf})
+% \newblock (\ctanurl{info/fontname/fontname.pdf})
%
% \bibitem[\LaTeXe\ font selection]{fntguide}
% \LaTeX3 Project Team, \emph{\LaTeXe\ font selection},
% \newblock 27 November 2005.
-% \newblock (Available from <CTAN> at \ctanurl{macros/latex/doc/fntguide.pdf})
+% \newblock (\ctanurl{macros/latex/doc/fntguide.pdf})
%
-% \bibitem[\texttt{pdfcprot}]{pdfcprot}
-% Carsten Schurig, Tobias Schlemmer, \emph{The |pdfcprot.sty| package},
+% \bibitem[\pkg{pdfcprot}]{pdfcprot}
+% Carsten Schurig, Tobias Schlemmer, \emph{The \pkg{pdfcprot}|.sty| package},
% \newblock 10 June 2005.
-% \newblock (Available from <CTAN> at \ctanurl{macros/latex/contrib/pdfcprot/})
+% \newblock (\ctanurl{macros/latex/contrib/pdfcprot/})
%
-% \bibitem[\texttt{soul}]{soul}
-% Melchior Franz, \emph{The |soul| package},
+% \bibitem[\pkg{soul}]{soul}
+% Melchior Franz, \emph{The \pkg{soul} package},
% \newblock 17 November 2003.
-% \newblock (Available from <CTAN> at \ctanurl{macros/latex/contrib/soul/})
+% \newblock (\ctanurl{macros/latex/contrib/soul/}).
+%\changes{v2.3a}{2008/01/06}{mention \pkg{soulutf8}}
+% \newblock See also Heiko Oberdiek's extension of this package, \pkg{soulutf8},
+% which adds Unicode support
+% \newblock (\ctanurl{macros/latex/contrib/oberdiek/})
%\end{thebibliography}
%
-%\section{Short History}\label{sec:short-history}
+%
+%\section{Short History}
%\changes{v1.5}{2004/12/11}{add `Short History'}
%
% The comprehensive list of changes can be
@@ -2450,13 +2541,15 @@
% \global\expandafter\def\csname MTversiondate#1\endcsname{#2}}
%
%\begin{History}
-%\Version{2.3}{\filedate}
+%\VersionDate{2.3a}{\filedate}
+%
+%\Version{2.3}{2007/12/23}
% \item New key `|outer kerning|' for \cs{SetTracking} to customise outer kerning
% [section~\ref{sub:tracking}]
% \item Adjust protrusion settings for tracking even if protrusion is not enabled
% \item New option `\opt{verbose}|=silent|' to turn all warnings into mere messages
% [section~\ref{sub:options-misc}]
-% \item The \letterspace\ package also works with \eplain\ or \pkg{miniltx}
+% \item The \letterspace\ package also works with \pkg{eplain} or \pkg{miniltx}
% [section~\ref{sec:lettersp}]
%
%\Version{2.2}{2007/07/14}
@@ -2490,7 +2583,7 @@
% and additional kerning
% (new commands \cs{SetTracking}, \cs{SetExtraSpacing}, \cs{SetExtraKerning};
% new options `\opt{tracking}', `\opt{spacing}', `\opt{kerning}')
-% [sections~\ref{sub:tracking}, \ref{sub:interword-spacing}, \ref{sub:kerning}]
+% [sections~\ref{sub:tracking}, \ref{sub:spacing}, \ref{sub:kerning}]
% \item New commands \cs{textls} and \cs{lsstyle} for letterspacing,
% new option `\opt{letterspace}'
% [sections~\ref{sub:option-tracking}, \ref{sec:lettersp}]
@@ -2545,7 +2638,7 @@
% \item Value `|relative|' renamed to `|character|' for `|unit|' keys
% \item Support for the Polish <OT4> encoding (protrusion, expansion, inheritance)
% \item Support for the Vietnamese <T5> encoding (protrusion, expansion, inheritance)
-% \item `\opt{DVIoutput}' option will work with \TeX Live 2004
+%^^A \item `\opt{DVIoutput}' option will work with \TeX Live 2004
%
%\Version{1.8}{2005/06/23}
%^^A \item If font substitution has occurred, the settings for the substitute will
@@ -2561,8 +2654,8 @@
% \item Protrusion settings for <AMS> math fonts
% \item Protrusion settings for Times in <LY1> encoding completed
% \item The `|allmath|' font set also includes <U> encoding
-% \item 8-bit characters in the configuration finally work as advertised,
-% even if made active by the \pkg{csquotes} package
+%^^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 (requires \pdftex\ version 1.30 or later)
%
@@ -2578,7 +2671,7 @@
% \item Hook \cs{Microtype@Hook} for font package authors
% [section~\ref{sub:hook}]
% \item New option `\opt{verbose}|=errors|' to turn all warnings into errors
-% \item Disable expansion inside \cmd\showhyphens
+%^^A \item Disable expansion inside \cmd\showhyphens
% \item Warning when running in draft mode
%
%\VersionDate{1.6a}{2005/02/02}
@@ -2590,7 +2683,7 @@
% \item When \pdftex\ is too old to expand fonts automatically, expansion
% has to be enabled explicitly, automatic expansion will be disabled
% [section~\ref{sub:options-microtype}]
-% \item Protrusion settings of digits improved
+%^^A \item Protrusion settings of digits improved
% \item Use \etex\ extensions, if available
%
%\Version{1.5}{2004/12/15}
@@ -2604,16 +2697,17 @@
% [section~\ref{sub:options-expansion}]
% \item Protrusion settings for Bitstream Charter
%
-%\Version{1.4b}{2004/11/26}
-% \item \cs{UseMicrotypeSet} requires the set to be declared
-% [section~\ref{sec:font-sets}]
+%\VersionDate{1.4b}{2004/11/26}
+%^^A\Version{1.4b}{2004/11/26}
+%^^A \item \cs{UseMicrotypeSet} requires the set to be declared
+%^^A [section~\ref{sec:font-sets}]
%
%\VersionDate{1.4a}{2004/11/17}
%
%\Version{1.4}{2004/11/12}
% \item Set up fonts independently from \LaTeX\ font loading
-% (therefore, no risk of overlooking fonts anymore, and the package may
-% be loaded at any time)
+%^^A (therefore, no risk of overlooking fonts anymore, and the package may
+%^^A be loaded at any time)
%^^A \item \cs{microtypesetup} now sets the correct level of protrusion
%^^A [section~\ref{sub:options-cmd}]
% \item New option: `\opt{final}'
@@ -2747,7 +2841,7 @@
%^^A \normalfont,\pickup@font,\selectfont,\set@fontsize} ^^A latex
%\DoNotIndex{\normalpdfoutput,\normalpdftexversion,\normalpdftexrevision} ^^A texlive
%\DoNotIndex{\foreign@language,\languagename,\select@language,\shorthandoff} ^^A babel
-%\DoNotIndex{\percentsign} ^^A babel/spanish,galician
+%\DoNotIndex{\percentsign} ^^A babel/spanish,galician,mexican
%\DoNotIndex{\CJK@ifundefined,\CJK@plane} ^^A CJK
%\DoNotIndex{\@disablequotes} ^^A csquotes
%\DoNotIndex{\pdfstringdefDisableCommands,\pdfstringdefWarn} ^^A hyperref
@@ -2758,7 +2852,7 @@
%\DoNotIndex{\l@dunhbox@line} ^^A ledmac,ledpar
%\DoNotIndex{\lst@ProcessLetter} ^^A listings
%\DoNotIndex{\py@macron} ^^A pinyin
-%\DoNotIndex{\soulregister} ^^A soul
+%\DoNotIndex{\soulregister,\SOUL@} ^^A soul
%\DoNotIndex{\conditionally@traceoff} ^^A trace
%\DoNotIndex{\color@begingroup,\color@endgroup,\everypar,\hbadness,\hsize,\maxdimen,
% \parfillskip,\pretolerance,\showboxdepth,\tolerance,\vbox,\z@skip} ^^A \showhyphens
@@ -2783,7 +2877,7 @@
% \begin{itemize}
% \item[|letterspace|:] The code for the \letterspace\ package (\file{letterspace.sty}).
% \item[|lua|:] Code for \luatex\ (by default disabled).
-% \item[|plain|:] Code for \eplain, \pkg{miniltx} (\letterspace\ 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{itemize}
@@ -2836,6 +2930,48 @@
%<letterspace> {letterspace}
% \end{macrocode}
%\end{macro}
+%\begin{macro}{\MT@fix@catcode}
+%\changes{v1.3}{2004/10/27}{check some category codes (compatibility with \pkg{german})}
+%\changes{v1.5}{2004/12/03}{reset catcode of `\texttt{\^}' (compatibility with \pkg{chemsym})}
+%\changes{v2.3a}{2007/12/29}{fix catcodes earlier, and also for the \letterspace\ package}
+% We have to make sure that the category codes of some characters are correct
+% (the \pkg{german} package, for instance, makes |"| active). Probably overly
+% cautious. Ceterum censeo: it should be forbidden for packages to change
+% catcodes within the preamble.
+%\begin{macro}{\MT@restore@catcodes}
+% Polite as we are, we'll restore them afterwards.
+% \begin{macrocode}
+\let\MT@restore@catcodes\@empty
+% \end{macrocode}
+%\end{macro}
+% \begin{macrocode}
+\def\MT@fix@catcode#1#2{%
+ \edef\MT@restore@catcodes{%
+ \MT@restore@catcodes
+ \catcode#1 \the\catcode#1\relax
+ }%
+ \catcode#1 #2\relax
+}
+%<package>\MT@fix@catcode{17}{14}% ^^Q (comment)
+\MT@fix@catcode{24} {9}% ^^X (ignore)
+%<package>\MT@fix@catcode{33}{12}% !
+%<package>\MT@fix@catcode{34}{12}% "
+\MT@fix@catcode{36} {3}% $ (math shift)
+\MT@fix@catcode{39}{12}% '
+\MT@fix@catcode{42}{12}% *
+\MT@fix@catcode{43}{12}% +
+\MT@fix@catcode{44}{12}% ,
+\MT@fix@catcode{45}{12}% -
+\MT@fix@catcode{58}{12}% :
+\MT@fix@catcode{60}{12}% <
+\MT@fix@catcode{61}{12}% =
+\MT@fix@catcode{62}{12}% >
+%<package>\MT@fix@catcode{63}{12}% ?
+\MT@fix@catcode{94} {7}% ^ (superscript)
+\MT@fix@catcode{96}{12}% `
+%<package>\MT@fix@catcode{124}{12}% |
+% \end{macrocode}
+%\end{macro}
% These are all commands for the outside world. We define them here as blank
% commands, so that they won't generate an error if we are not running \pdftex.
% \begin{macrocode}
@@ -2990,7 +3126,7 @@
%\begin{macro}{\MT@addto@annot}
%\begin{macro}{\ifMT@inannot}
% During font setup, we save the text for the popup in \cs{MT@pdf@annot}.
-% (This requires \pdftex\ \textgeq\ 1.30.)
+% (This requires \pdftex\ $\geq$~1.30.)
% \begin{macrocode}
\newif\ifMT@inannot \MT@inannottrue
\let\MT@pdf@annot\@empty
@@ -3047,8 +3183,13 @@
%\subsubsection{Requirements}
%
%\begin{macro}{\MT@plain}
-% The \letterspace\ package also works with \eplain\ (1) or \pkg{miniltx} (2). ^^A tested with eplain v3.1, 2006/12/03
-%\changes{v2.3}{2007/11/07}{\letterspace: support for \eplain/\pkg{miniltx}}
+% The \letterspace\ package works with:
+%\begin{enum}
+% \item \LaTeX
+%\changes{v2.3}{2007/11/07}{\letterspace: support for \pkg{eplain}/\pkg{miniltx}}
+% \item \pkg{eplain} ^^A tested with eplain v3.1, 2006/12/03; v3.2, 2007/11/26
+% \item \pkg{miniltx}
+%\end{enum}
% \begin{macrocode}
%<*plain>
\def\MT@plain{0}
@@ -3082,17 +3223,17 @@
% Currently, we have to distinguish seven cases for \pdftex:
%\begin{enum}
% \item not running \pdftex
-% \item \pdftex\ (\textless\ 0.14f)
+% \item \pdftex\ ($\less$~0.14f)
% \item + micro-typographic extensions (0.14f,g)
-% \item + protrusion relative to 1em (\textgeq~0.14h)
+% \item + protrusion relative to 1em ($\geq$~0.14h)
% \item + automatic font expansion;
% protrusion no longer has to be set up first;
-% default \cmd\efcode\,=\,1000 (\textgeq~1.20)
+% default \cmd\efcode\,=\,1000 ($\geq$~1.20)
%\changes{v1.8}{2005/04/15}{case 5: \pdftex\ 1.30}
% \item + \cmd{\(left,right)marginkern};
% \cmd\pdfnoligatures;
% \cmd\pdfstrcmp;
-% \cmd\pdfescapestring\ (\textgeq~1.30)
+% \cmd\pdfescapestring\ ($\geq$~1.30)
%\changes{v2.0}{2005/08/20}{(beta:1) case 6: \pdftex\ 1.40}
% \item + adjustment of interword spacing;
% extra kerning;
@@ -3101,15 +3242,15 @@
% in 1.30, but failed on strings longer than 1023 bytes.};
% \cmd\pdftracingfonts;
% always \etex\
-% (\textgeq~1.40)
+% ($\geq$~1.40)
%\changes{v2.2}{2007/02/23}{case 7: \pdftex\ 1.40.4}
% \item + \cmd\letterspacefont\ doesn't disable ligatures and kerns;
% \cmd\pdfcopyfont\
-% (\textgeq~1.40.4)
+% ($\geq$~1.40.4)
%\end{enum}
-%\changes{v1.1}{2004/09/13}{fix concerning version check
+%\changes{v1.1}{2004/09/13}{fix: version check
% (reported by \contributor Harald Harders <h.harders\at tu-bs.de>)}
-% ^^A private mail, 2004/09/13
+% ^^A private mail, 2004/09/13
% \begin{macrocode}
\def\MT@pdftex@no{0}
% \end{macrocode}
@@ -3170,7 +3311,7 @@
%\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 here.
+% and exit.
% \begin{macrocode}
\def\MT@clear@options{%
%<plain> \ifnum\MT@plain<2
@@ -3184,7 +3325,6 @@
\ifnum\MT@pdftex@no <
%<package> 2
%<letterspace> 6
- \MT@clear@options
\MT@warning@nl{You
\ifcase\MT@pdftex@no
don't seem to be using pdftex.\MessageBreak
@@ -3199,54 +3339,14 @@
Please install a newer version of pdftex%
\fi
}
+ \MT@clear@options\MT@restore@catcodes
\endinput\fi
-%<*package>
% \end{macrocode}
% Still there? Then we can begin:
-%\begin{macro}{\MT@catcodes}
-%\changes{v1.3}{2004/10/27}{check some category codes (compatibility with \pkg{german})}
-%\changes{v1.5}{2004/12/03}{reset catcode of `\texttt{\^}' (compatibility with \pkg{chemsym})}
-% We have to make sure that the category codes of some characters are correct
-% (the \pkg{german} package, for instance, makes |"| active). Probably overly
-% cautious. Ceterum censeo: it should be forbidden for packages to change
-% catcodes within the preamble.
-% \begin{macrocode}
-\def\MT@catcodes{%
- \catcode`\^7 %
- \@makeother\-%
- \@makeother\=%
- \@makeother\*%
- \@makeother\+%
- \@makeother\,%
- \@makeother\/%
- \@makeother\`%
- \@makeother\'%
- \@makeother\"%
- \@makeother\!%
-}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\MT@restore@catcodes}
-% Polite as we are, we'll restore them afterwards.
-% \begin{macrocode}
-\def\MT@restore@catcodes#1{%
- \ifx\relax#1\else
- \noexpand\catcode`\noexpand#1\the\catcode`#1\relax
- \expandafter\MT@restore@catcodes
- \fi
-}
-\edef\MT@restore@catcodes{\MT@restore@catcodes\^\-\=\*\+\,\/\`\'\"\!\relax}
-% \end{macrocode}
-%\end{macro}
-% \begin{macrocode}
-\MT@catcodes
-\AtEndOfPackage{\MT@restore@catcodes}
-% \end{macrocode}
% 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>
\RequirePackage{keyval}[1997/11/10]
%<*package>
% \end{macrocode}
@@ -3420,31 +3520,23 @@
%
%\begin{macro}{\MT@maybe@etex}
%\changes{v2.2}{2007/05/01}{use catcode trickery}
-%\begin{macro}{\MT@maybe@etex@}
+%\changes{v2.3a}{2007/12/29}{removed}
% For definitions that depend on \etex\ features.
% \begin{macrocode}
-\def\MT@maybe@etex{%
- \ifcase 0%
- \ifx\eTeXversion\@undefined 1\else
- \ifx\eTeXversion\relax 1\else
- \ifcase\eTeXversion 1\fi
- \fi
+\ifcase 0%
+ \ifx\eTeXversion\@undefined 1\else
+ \ifx\eTeXversion\relax 1\else
+ \ifcase\eTeXversion 1\fi
\fi
- \catcode`Q=14 \catcode`X=9
- \else
- \catcode`Q=9 \catcode`X=14
\fi
- \MT@maybe@etex@
-}
-\def\MT@maybe@etex@#1{#1%
- \catcode`Q=11 \catcode`X=11
-}
-%<debug>\MT@maybe@etex{\MT@dinfo@nl{0}{this is
-%<debug>Q not
-%<debug> etex}}
+\else
+ \catcode`\^^Q=9 \catcode`\^^X=14
+\fi
+%<debug>\MT@dinfo@nl{0}{this is
+%<debug>^^Q not
+%<debug> etex}
% \end{macrocode}
%\end{macro}
-%\end{macro}
%\begin{macro}{\MT@requires@pdftex}
% For definitions that depend on a particular \pdftex\ version.
% \begin{macrocode}
@@ -3476,19 +3568,21 @@
% Since \luatex\ is still heavily experimental, we don't support it by default.
% Also, at the time of this writing, \luatex\ ignores \cmd\letterspacefont.
% \begin{macrocode}
-%<*!lua>
+%<*!lua|letterspace>
\ifx\directlua\@undefined\else
%<!letterspace> \MT@error
%<letterspace> \MT@warning@nl
{`\MT@MT'
-%<!letterspace> only works with luatex if you generate\MessageBreak
+%<!letterspace> only works with luatex if you generate%
+%<letterspace> doesn't currently work with luatex.%
+ \MessageBreak
%<!letterspace> the package with the `lua' option%
-%<letterspace> doesn't currently work with luatex.\MessageBreak Bye bye%
+%<letterspace> Bye bye%
}
%<!letterspace> {}
-%<letterspace> \MT@clear@options\expandafter\endinput
+%<letterspace> \MT@clear@options\MT@restore@catcodes\expandafter\endinput
\fi
-%</!lua>
+%</!lua|letterspace>
% \end{macrocode}
%\begin{macro}{\MT@glet}
%\changes{v1.9f}{2006/08/09}{new macro}
@@ -3579,30 +3673,26 @@
% If we are running \etex, we will use its primitives \cs{ifdefined} and
% \cs{ifcsname}, which decreases memory use substantially.
% \begin{macrocode}
-\MT@maybe@etex{
- \def\MT@ifdefined@c@T#1{%
-X \ifdefined#1\expandafter\@firstofone\else\expandafter\@gobble\fi
-Q \ifx#1\@undefined\expandafter\@gobble\else\expandafter\@firstofone\fi
- }
+\def\MT@ifdefined@c@T#1{%
+^^X \ifdefined#1\expandafter\@firstofone\else\expandafter\@gobble\fi
+^^Q \ifx#1\@undefined\expandafter\@gobble\else\expandafter\@firstofone\fi
+}
%</package>
-%<letterspace>\catcode`\X=9
- \def\MT@ifdefined@c@TF#1{%
-X \ifdefined#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
-%<package>Q \ifx#1\@undefined
-%<package>Q \expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi
- }
- \def\MT@ifdefined@n@T#1{%
-X \ifcsname#1\endcsname\expandafter\@firstofone\else\expandafter\@gobble\fi
-%<package>Q \begingroup\MT@exp@two@c\endgroup\ifx\csname #1\endcsname\relax
-%<package>Q \expandafter\@gobble\else\expandafter\@firstofone\fi
- }
-%<letterspace>\catcode`\X=11
+\def\MT@ifdefined@c@TF#1{%
+^^X \ifdefined#1\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+%<package>^^Q \ifx#1\@undefined
+%<package>^^Q \expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi
+}
+\def\MT@ifdefined@n@T#1{%
+^^X \ifcsname#1\endcsname\expandafter\@firstofone\else\expandafter\@gobble\fi
+%<package>^^Q \begingroup\MT@exp@two@c\endgroup\ifx\csname #1\endcsname\relax
+%<package>^^Q \expandafter\@gobble\else\expandafter\@firstofone\fi
+}
%<*package>
- \def\MT@ifdefined@n@TF#1{%
-X \ifcsname#1\endcsname\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
-Q \begingroup\MT@exp@two@c\endgroup\ifx\csname #1\endcsname\relax
-Q \expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi
- }
+\def\MT@ifdefined@n@TF#1{%
+^^X \ifcsname#1\endcsname\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi
+^^Q \begingroup\MT@exp@two@c\endgroup\ifx\csname #1\endcsname\relax
+^^Q \expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi
}
% \end{macrocode}
%\end{macro}
@@ -3618,16 +3708,14 @@ Q \expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi
% \nonetex\ version requires some more fiddling (and the \cmd\string\ isn't
% perfect, of course).
% \begin{macrocode}
-\MT@maybe@etex{
- \def\MT@detokenize@n#1{%
-X \detokenize\expandafter{%
- \string#1%
-X }%
- }
- \def\MT@detokenize@c#1{%
-X \detokenize\expandafter\expandafter\expandafter{\expandafter\string#1}%
-Q \MT@exp@two@c\zap@space\strip@prefix\meaning#1 \@empty
- }
+\def\MT@detokenize@n#1{%
+^^X \detokenize\expandafter{%
+ \string#1%
+^^X }%
+}
+\def\MT@detokenize@c#1{%
+^^X \detokenize\expandafter\expandafter\expandafter{\expandafter\string#1}%
+^^Q \MT@exp@two@c\zap@space\strip@prefix\meaning#1 \@empty
}
% \end{macrocode}
%\end{macro}
@@ -3703,7 +3791,8 @@ Q \MT@exp@two@c\zap@space\strip@prefix\meaning#1 \@empty
% ^^A private mail, 2005/03/15
%\changes{v1.9b}{2006/01/05}{use \cmd\pdfmatch\ if available}
% (|nd| and |nc| are new Didot resp. Cicero, added in \pdftex\ 1.30; |px| is a pixel.)
-%\changes{v2.2}{2007/05/10}{employ \luatex\ features if available} ^^A FIXME: fix lua expression
+%\changes{v2.2}{2007/05/10}{employ \luatex\ features if available}
+%\todo{fix lua expression}
% \begin{macrocode}
\MT@requires@pdftex6{
%<*lua>
@@ -3993,7 +4082,8 @@ Q \MT@exp@two@c\zap@space\strip@prefix\meaning#1 \@empty
%\end{macro}
%\end{macro}
%\begin{macro}{\MT@while@num}
-% Execute \meta{\#3} from \meta{\#1} up to (excluding) \meta{\#2}.
+% Execute \meta{\#3} from \meta{\#1} up to (excluding) \meta{\#2} (much faster
+% than \LaTeX's \cmd\@whilenum).
% \begin{macrocode}
\def\MT@while@num#1#2#3{%
\@tempcnta#1\relax
@@ -4018,13 +4108,12 @@ Q \MT@exp@two@c\zap@space\strip@prefix\meaning#1 \@empty
% The \etex\ way is slightly faster.
% \begin{macrocode}
\newcount\MT@count
-\MT@maybe@etex{
- \def\MT@increment#1{%
-X \edef#1{\number\numexpr #1 + 1\relax}%
-Q \MT@count=#1\relax
-Q \advance\MT@count \@ne
-Q \edef#1{\number\MT@count}%
- }
+\def\MT@increment#1{%
+^^X \edef#1{\number\numexpr #1 + 1\relax}%
+^^Q \MT@count=#1\relax
+^^Q \advance\MT@count \@ne
+^^Q \edef#1{\number\MT@count}%
+}
% \end{macrocode}
%\end{macro}
%\end{macro}
@@ -4039,15 +4128,14 @@ Q \edef#1{\number\MT@count}%
% instead of truncated. Therefore, we'll get a different (more accurate)
% result in about half of the cases.
% \begin{macrocode}
- \def\MT@scale#1#2#3{%
-Q \multiply #1 #2\relax
- \ifnum #3 = \z@
-X #1=\numexpr #1 * #2\relax
- \else
-X #1=\numexpr #1 * #2 / #3\relax
-Q \divide #1 #3\relax
- \fi
- }
+\def\MT@scale#1#2#3{%
+^^Q \multiply #1 #2\relax
+ \ifnum #3 = \z@
+^^X #1=\numexpr #1 * #2\relax
+ \else
+^^X #1=\numexpr #1 * #2 / #3\relax
+^^Q \divide #1 #3\relax
+ \fi
}
% \end{macrocode}
%\end{macro}
@@ -4157,8 +4245,8 @@ Q \divide #1 #3\relax
%\begin{itemize}
% \item \cmd\pickup@font
% \item \cmd\do@subst@correction
-% \item \cmd\add@accent
-% \item \cmd\showhyphens
+% \item \cmd\add@accent\ (all in section~\ref{sssec:impl.hook})
+% \item \cmd\showhyphens\ (in section~\ref{sssec:impl.options})
%\end{itemize}
%
% The \pkg{wordcount} package redefines the font-switching commands, which will
@@ -4171,7 +4259,7 @@ Q \divide #1 #3\relax
\@ifl@aded{tex}{wordcount}{%
\MT@warning@nl{Detected the `wordcount' utility.\MessageBreak
Disabling `\MT@MT', since it wouldn't work}%
- \MT@clear@options\endinput}\relax
+ \MT@clear@options\MT@restore@catcodes\endinput}\relax
% \end{macrocode}
%\begin{macro}{\MT@setup@}
%\changes{v1.9a}{2005/11/21}{defer setup until the end of the preamble}
@@ -4188,7 +4276,7 @@ Q \divide #1 #3\relax
%\end{macro}
%\begin{macro}{\MT@addto@setup}
% We use our private hook to have better control over the timing.
-% This will also work with \eplain, but not with \pkg{miniltx} alone.
+% This will also work with \pkg{eplain}, but not with \pkg{miniltx} alone.
% \begin{macrocode}
\def\MT@addto@setup{\g@addto@macro\MT@setup@}
% \end{macrocode}
@@ -4198,6 +4286,10 @@ Q \divide #1 #3\relax
% \begin{macrocode}
\AtBeginDocument{\MT@setup@ \MT@glet\MT@setup@\@empty}
% \end{macrocode}
+% Don't hesitate with \pkg{miniltx}.
+% \begin{macrocode}
+%<plain>\else \let\MT@addto@setup\@firstofone \fi
+% \end{macrocode}
%\begin{macro}{\MT@with@package@T}
% We almost never do anything if a package is not loaded.
% \begin{macrocode}
@@ -4321,19 +4413,23 @@ Q \divide #1 #3\relax
%\fi
%\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}
-% Spanish and Galician \pkg{babel} modify \cmd\%, storing the original meaning
-% in \cmd\percentsign.
+%\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.
% \begin{macrocode}
- \MT@with@babel@and@T{spanish} {\MT@ifdefined@c@T\percentsign{\let\%\percentsign}}%
- \MT@with@babel@and@T{galician}{\MT@ifdefined@c@T\percentsign{\let\%\percentsign}}%
+ \MT@if@false
+ \MT@with@babel@and@T{spanish} \MT@if@true
+ \MT@with@babel@and@T{galician}\MT@if@true
+ \MT@with@babel@and@T{mexican} \MT@if@true
+ \ifMT@if@\MT@ifdefined@c@T\percentsign{\let\%\percentsign}\fi
% \end{macrocode}
%\changes{v1.8}{2005/04/22}{restore \pkg{csquotes}'s active characters}
% Using \cmd\@disablequotes, we can restore the original meaning of all
% characters made active by \pkg{csquotes}.
% (It would be doable for older versions, too, but we won't bother.)
% \begin{macrocode}
- \MT@with@package@T{csquotes}
- {\@ifpackagelater{csquotes}{2005/05/11}\@disablequotes\relax}%
+ \MT@with@package@T{csquotes}{%
+ \@ifpackagelater{csquotes}{2005/05/11}\@disablequotes\relax}%
% \end{macrocode}
% \pkg{hyperref} redefines \cmd\% and \cmd\# inside a \cmd\url. We restore
% the original meanings (which we can only hope are correct).
@@ -4343,8 +4439,10 @@ Q \divide #1 #3\relax
% (reported by \contributor Peter Dyballa <Peter_Dyballa\at Web.DE>)}
% ^^A private mail, 2006/02/26
% \begin{macrocode}
- \@ifpackageloaded{hyperref}\MT@restore@p@h
- {\MT@with@package@T{tex4ht}\MT@restore@p@h}%
+ \MT@if@false
+ \MT@with@package@T{hyperref}\MT@if@true
+ \MT@with@package@T{tex4ht} \MT@if@true
+ \ifMT@if@\MT@restore@p@h\fi
}
% \end{macrocode}
%\end{macro}
@@ -4369,14 +4467,14 @@ time will almost certainly lead to undesired results. Have your choice!}%
% We can clean up \cs{MT@setupfont@hook} now.
% \begin{macrocode}
\let\MT@setupfont@hook\@empty
- \MT@with@babel@and@T{spanish}{%
- \g@addto@macro\MT@setupfont@hook{%
- \MT@ifdefined@c@T\percentsign{\let\%\percentsign}}%
- }
- \MT@with@babel@and@T{galician}{%
+ \MT@if@false
+ \MT@with@babel@and@T{spanish} \MT@if@true
+ \MT@with@babel@and@T{galician}\MT@if@true
+ \MT@with@babel@and@T{mexican} \MT@if@true
+ \ifMT@if@
\g@addto@macro\MT@setupfont@hook{%
\MT@ifdefined@c@T\percentsign{\let\%\percentsign}}%
- }
+ \fi
\MT@with@package@T{csquotes}{%
\@ifpackagelater{csquotes}{2005/05/11}{%
\g@addto@macro\MT@setupfont@hook\@disablequotes
@@ -4386,11 +4484,6 @@ time will almost certainly lead to undesired results. Have your choice!}%
numbers, try upgrading the `csquotes' package}%
}%
}
- \@ifpackageloaded
-%</package>
-%<letterspace> \MT@with@package@T
- {hyperref}{%
-%<package> \g@addto@macro\MT@setupfont@hook\MT@restore@p@h
% \end{macrocode}
% We disable \microtype's additions inside \pkg{hyperref}'s \cmd\pdfstringdef,
% which redefines lots of commands.
@@ -4398,7 +4491,12 @@ time will almost certainly lead to undesired results. Have your choice!}%
% (reported by \contributor\thanh{} <hanthethanh\at gmail.com>)}
% ^^A private mail, 2005/09/10
%\changes{v2.3}{2007/11/11}{disable \cs{microtypecontext} in \pkg{hyperref}'s \cmd\pdfstringdef}
+% \pkg{hyperref} doesn't work with plain \TeX, so in that case we don't bother.
% \begin{macrocode}
+ \MT@if@false
+%</package>
+%<plain> \ifnum\MT@plain=0
+ \MT@with@package@T{hyperref}{%
\pdfstringdefDisableCommands{%
%<*package>
\let\pickup@font\MT@orig@pickupfont
@@ -4408,10 +4506,12 @@ time will almost certainly lead to undesired results. Have your choice!}%
\def\lsstyle{\pdfstringdefWarn\lsstyle}%
\def\textls#1#{\pdfstringdefWarn\textls}%
}%
+%<package> \MT@if@true
}
+%<plain> \fi
%<*package>
- {\MT@with@package@T{tex4ht}
- {\g@addto@macro\MT@setupfont@hook\MT@restore@p@h}}%
+ \MT@with@package@T{tex4ht}\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
% (reported by \contributor Holger Uhr <huhr\at uni-paderborn.de>)}
@@ -4449,19 +4549,32 @@ time will almost certainly lead to undesired results. Have your choice!}%
% at the same time doesn't make much sense. But \pkg{soul} can do more, \eg,
% underlining. The optional argument to \cs{textls} may not be used.
% \begin{macrocode}
-%
%</package>
+%<plain> \ifnum\MT@plain=0
\MT@with@package@T{soul}{%
\soulregister\lsstyle 0%
\soulregister\textls 1%
}
+% \end{macrocode}
+%\changes{v2.3a}{2008/01/06}{fix test for \pkg{soul} under plain \TeX}
+% Under plain \TeX, \pkg{soul} doesn't register itself the \LaTeX\ way, hence
+% we have to use a different test in this case.
+% \begin{macrocode}
+%<*plain>
+ \else
+ \ifx\SOUL@\@undefined\else
+ \soulregister\lsstyle 0%
+ \soulregister\textls 1%
+ \fi
+ \fi
+%</plain>
%<*package>
% \end{macrocode}
%\changes{v2.1}{2007/01/15}{compatibility with \pkg{pinyin}: disable \microtype\ in \cmd\py@macron\
% (reported by \contributor Sven Naumann <svenau\at gmx.net>)}
% ^^A MID: <87d55hxxdd.fsf@linux.site>
-% Compatibility with \pkg{pinyin} (\pkg{CJK}) package: disable \microtype\ in
-% \cmd\py@macron, which loads a different font for the accent.
+% Compatibility with the \pkg{pinyin} package (from \pkg{CJK}): disable
+% \microtype\ in \cmd\py@macron, which loads a different font for the accent.
% In older versions of \pkg{pinyin}, \cmd\py@macron\ had only one argument.
% \begin{macrocode}
\MT@with@package@T{pinyin}{%
@@ -4480,17 +4593,9 @@ time will almost certainly lead to undesired results. Have your choice!}%
}
%</package>
}
-% \end{macrocode}
-% The \pkg{miniltx} version.
-% \begin{macrocode}
-%<*plain>
-\else
- \let\MT@addto@setup\@firstofone
-\fi
-%</plain>
%<*package>
% \end{macrocode}
-%\changes{v1.6}{2005/01/19}{load a font, if none is active}
+%\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
@@ -4592,8 +4697,8 @@ time will almost certainly lead to undesired results. Have your choice!}%
% the preamble, or when the package has been loaded with the \opt{copyfonts}
% option.
% \begin{macrocode}
-\MT@requires@pdftex7{
\let\MT@copy@font\relax
+\MT@requires@pdftex7{
\def\MT@copy@font@{%
% \end{macrocode}
%\begin{macro}{\MT@font@copy}
@@ -4604,7 +4709,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
%\end{macro}
%\begin{macro}{\MT@font@orig}
% \pdftex\ doesn't allow to copy a font that has already been copied and
-% expanded/letterspaced. Hence, we have to get the original.
+% expanded\slash letterspaced. Hence, we have to get the original.
% \begin{macrocode}
\expandafter\ifx\MT@font@copy\relax
\edef\MT@font@orig{\csname\expandafter\string\font@name @orig\endcsname}%
@@ -4728,7 +4833,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
% \end{macrocode}
% (but only if the feature isn't globally set to false)
% \begin{macrocode}
- \expandafter\csname ifMT@\csname MT@abbr@#1\endcsname\endcsname
+ \csname ifMT@\csname MT@abbr@#1\endcsname\endcsname
% \end{macrocode}
% Begin with setting micro-typography to true for this font. The
% \cs{MT@checklist@...} tests will set it to false if the property is not in
@@ -4760,6 +4865,13 @@ time will almost certainly lead to undesired results. Have your choice!}%
%\end{macro}
%\end{macro}
%\end{macro}
+%\begin{macro}{\MT@dinfo@list}
+% \begin{macrocode}
+%<debug>\def\MT@dinfo@list#1#2#3{\MT@dinfo@nl{1}{\@nameuse{MT@abbr@#1}:
+%<debug> #2 \ifx\\#3\\list empty\else `\@nameuse{MT@#2}' #3 list\fi}%
+%<debug>}
+% \end{macrocode}
+%\end{macro}
%\begin{macro}{\MT@checklist@}
% The generic test (\meta{\#1} is the axis, \meta{\#2} the feature, \cmd\@tempa\
% contains the set name).
@@ -4776,10 +4888,10 @@ time will almost certainly lead to undesired results. Have your choice!}%
\csname MT@#1\expandafter\endcsname
\csname MT@#2list@#1@\@tempa\endcsname
\ifMT@inlist@
-%<debug>\MT@dinfo@nl{1}{\@nameuse{MT@abbr@#2}: #1 `\@nameuse{MT@#1}' in list}%
+%<debug>\MT@dinfo@list{#2}{#1}{in}%
\MT@dotrue
\else
-%<debug>\MT@dinfo@nl{1}{\@nameuse{MT@abbr@#2}: #1 `\@nameuse{MT@#1}' not in list}%
+%<debug>\MT@dinfo@list{#2}{#1}{not in}%
\MT@dofalse
\expandafter\MT@clist@break
\fi
@@ -4788,7 +4900,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
% If no limitations have been specified, \ie, the list for a font attribute
% has not been defined at all, the font should be set up.
% \begin{macrocode}
-%<debug> {\MT@dinfo@nl{1}{\@nameuse{MT@abbr@#2}: #1 list empty}}%
+%<debug> {\MT@dinfo@list{#2}{#1}{}}%
}
% \end{macrocode}
%\end{macro}
@@ -4804,18 +4916,18 @@ time will almost certainly lead to undesired results. Have your choice!}%
\MT@exp@two@n\MT@in@clist
\MT@family{\csname MT@#1list@family@\@tempa\endcsname}%
\ifMT@inlist@
-%<debug>\MT@dinfo@nl{1}{\@nameuse{MT@abbr@#1}: family `\@nameuse{MT@family}' in list}%
+%<debug>\MT@dinfo@list{#1}{family}{in}%
\MT@dotrue
\else
-%<debug>\MT@dinfo@nl{1}{\@nameuse{MT@abbr@#1}: family `\@nameuse{MT@family}' not in list}%
+%<debug>\MT@dinfo@list{#1}{family}{not in}%
\MT@dofalse
\ifx\MT@familyalias\@empty \else
\MT@exp@two@n\MT@in@clist
\MT@familyalias{\csname MT@#1list@family@\@tempa\endcsname}%
\ifMT@inlist@
-%<debug> \MT@dinfo@nl{1}{\@nameuse{MT@abbr@#1}: alias `\MT@familyalias' in list}%
+%<debug> \MT@dinfo@list{#1}{familyalias}{in}%
\MT@dotrue
-%<debug>\else\MT@dinfo@nl{1}{\@nameuse{MT@abbr@#1}: alias `\MT@familyalias' not in list}%
+%<debug>\else\MT@dinfo@list{#1}{familyalias}{not in}%
\fi
\fi
\fi
@@ -4823,7 +4935,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
\expandafter\MT@clist@break
\fi
}%
-%<debug> {\MT@dinfo@nl{1}{\@nameuse{MT@abbr@#1}: family list empty}}%
+%<debug> {\MT@dinfo@list{#1}{family}{}}%
}
% \end{macrocode}
%\end{macro}
@@ -4836,15 +4948,15 @@ time will almost certainly lead to undesired results. Have your choice!}%
{MT@#1list@size@\@tempa}{%
\expandafter\MT@in@rlist\csname MT@#1list@size@\@tempa\endcsname
\ifMT@inlist@
-%<debug>\MT@dinfo@nl{1}{\@nameuse{MT@abbr@#1}: size `\MT@size' in list}%
+%<debug>\MT@dinfo@list{#1}{size}{in}%
\MT@dotrue
\else
-%<debug>\MT@dinfo@nl{1}{\@nameuse{MT@abbr@#1}: size `\MT@size' not in list}%
+%<debug>\MT@dinfo@list{#1}{size}{not in}%
\MT@dofalse
\expandafter\MT@clist@break
\fi
}%
-%<debug> {\MT@dinfo@nl{1}{\@nameuse{MT@abbr@#1}: size list empty}}%
+%<debug> {\MT@dinfo@list{#1}{size}{}}%
}
% \end{macrocode}
%\end{macro}
@@ -4864,14 +4976,14 @@ time will almost certainly lead to undesired results. Have your choice!}%
\expandafter\MT@exp@one@n\expandafter\MT@in@clist\expandafter
\@tempb \csname MT@#1list@font@\@tempa\endcsname
\ifMT@inlist@
-%<debug>\MT@dinfo@nl{1}{\@nameuse{MT@abbr@#1}: font `\MT@@font' in list}%
+%<debug>\MT@dinfo@list{#1}{font}{in}%
\expandafter\MT@clist@break
\else
-%<debug>\MT@dinfo@nl{1}{\@nameuse{MT@abbr@#1}: font `\MT@@font' not in list}%
+%<debug>\MT@dinfo@list{#1}{font}{not in}%
\MT@dofalse
\fi
}%
-%<debug> {\MT@dinfo@nl{1}{\@nameuse{MT@abbr@#1}: font list empty}}%
+%<debug> {\MT@dinfo@list{#1}{font}{}}%
}
% \end{macrocode}
%\end{macro}
@@ -4916,7 +5028,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
% Load the main list.
% \begin{macrocode}
\MT@let@cn\@tempc{MT@pr@c@\MT@pr@c@name}%
- \expandafter\MT@pr@do\@tempc,\relax,%
+ \expandafter\MT@set@codes\@tempc,\relax,%
}\MT@reset@pr@codes
}
% \end{macrocode}
@@ -4974,7 +5086,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
%\begin{macro}{\MT@the@pr@code}
%\begin{macro}{\MT@the@pr@code@tr}
%\changes{v2.2}{2007/04/05}{adjust protrusion of letterspaced fonts}
-% If the font is letterspaced, we have to add the letterspacing amount to
+% If the font is letterspaced, we have to add half the letterspacing amount to
% the margin kerns. This will be activated in \cs{MT@set@tr@codes}.
% \begin{macrocode}
\def\MT@the@pr@code{\@tempcntb}
@@ -4986,30 +5098,32 @@ time will almost certainly lead to undesired results. Have your choice!}%
% \end{macrocode}
%\end{macro}
%\end{macro}
-%\begin{macro}{\MT@pr@do}
-% Split up the values and set \cmd\lpcode\ and \cmd\rpcode.
+%\begin{macro}{\MT@set@codes}
+%\changes{v2.3a}{2007/12/29}{generalised}
+% Split up the values and set the codes.
% \begin{macrocode}
-\def\MT@pr@do#1,{%
+\def\MT@set@codes#1,{%
\ifx\relax#1\@empty\else
- \MT@pr@split #1==\relax
- \expandafter\MT@pr@do
+ \MT@split@codes #1==\relax
+ \expandafter\MT@set@codes
\fi
}
% \end{macrocode}
%\end{macro}
-%\begin{macro}{\MT@pr@split}
+%\begin{macro}{\MT@split@codes}
%\changes{v1.1}{2004/09/13}{fix: allow zero and negative values}
%\changes{v1.8}{2005/05/25}{get character width once only}
% The \pkg{keyval} package would remove spaces here, which we needn't do since
% \cs{SetProtrusion} ignores spaces in the protrusion list anyway.
+% \cs{MT@get@char@unit} may mean different things.
% \begin{macrocode}
-\def\MT@pr@split#1=#2=#3\relax{%
+\def\MT@split@codes#1=#2=#3\relax{%
\def\@tempa{#1}%
\ifx\@tempa\@empty \else
\MT@get@slot
\ifnum\MT@char > \m@ne
\MT@get@char@unit
- \MT@pr@split@val#2\relax
+ \csname MT@\MT@feat @split@val\endcsname#2\relax
\fi
\fi
}
@@ -5060,21 +5174,20 @@ time will almost certainly lead to undesired results. Have your choice!}%
% 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@maybe@etex{
- \MT@requires@pdftex3{
- \def\MT@scale@to@em{%
- \@tempcntb=\MT@count\relax
+\MT@requires@pdftex3{
+ \def\MT@scale@to@em{%
+ \@tempcntb=\MT@count\relax
% \end{macrocode}
% For really huge fonts (100pt 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}
@@ -5083,12 +5196,12 @@ 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{%
+^^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
+ }
% \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
@@ -5096,28 +5209,27 @@ Q \MT@count=\wd\z@
% \cs{MT@set@pr@codes}.
% The letterspaced font is already loaded so that 1em = \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
- }{
+ \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}
}
% \end{macrocode}
%\begin{macro}{\MT@get@font@dimen}
@@ -5142,16 +5254,14 @@ Q \MT@count=\wd\z@
% ^^A MID: <1h64d0x.16xsx9n1151dieN%mh@michael-hoppe.de>
% Info about missing characters, or characters with zero width.
% \begin{macrocode}
-\MT@maybe@etex{
- \def\MT@info@missing@char{%
- \MT@info@nl{Character `\the\MT@toks'
-X \iffontchar\MT@font\MT@char
+\def\MT@info@missing@char{%
+ \MT@info@nl{Character `\the\MT@toks'
+^^X \iffontchar\MT@font\MT@char
has a width of 0pt
-X \else is missing\fi
-Q \MessageBreak (it's probably missing)
- \MessageBreak in font `\MT@@font'.\MessageBreak
- Ignoring protrusion settings for this character}%
- }
+^^X \else is missing\fi
+^^Q \MessageBreak (it's probably missing)
+ \MessageBreak in font `\MT@@font'.\MessageBreak
+ Ignoring protrusion settings for this character}%
}
% \end{macrocode}
%\end{macro}
@@ -5459,13 +5569,14 @@ Q \MessageBreak (it's probably missing)
\def\MT@set@ex@codes@s{%
\MT@if@list@exists{%
\MT@get@ex@opt
+ \let\MT@get@char@unit\relax
\MT@reset@ef@codes
\MT@get@inh@list
\MT@set@inputenc{c}%
\MT@load@list\MT@ex@c@name
\MT@set@listname
\MT@let@cn\@tempc{MT@ex@c@\MT@ex@c@name}%
- \expandafter\MT@ex@do\@tempc,\relax,%
+ \expandafter\MT@set@codes\@tempc,\relax,%
\MT@expandfont
}\relax
}
@@ -5488,10 +5599,10 @@ Q \MessageBreak (it's probably missing)
\MT@if@list@exists
\MT@get@ex@opt
{%
- \let\MT@stretch@\MT@stretch
- \let\MT@shrink@\MT@shrink
- \let\MT@step@\MT@step
- \let\MT@auto@\MT@auto
+ \let\MT@stretch@ \MT@stretch
+ \let\MT@shrink@ \MT@shrink
+ \let\MT@step@ \MT@step
+ \let\MT@auto@ \MT@auto
\let\MT@ex@factor@\MT@ex@factor
}%
\MT@reset@ef@codes
@@ -5545,52 +5656,36 @@ Q \MessageBreak (it's probably missing)
}
% \end{macrocode}
%\end{macro}
-%\begin{macro}{\MT@ex@do}
+%\begin{macro}{\MT@ex@split@val}
% There's only one number per character.
% \begin{macrocode}
-\def\MT@ex@do#1,{%
- \ifx\relax#1\@empty \else
- \MT@ex@split #1==\relax
- \expandafter\MT@ex@do
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\MT@ex@split}
-% \begin{macrocode}
-\def\MT@ex@split#1=#2=#3\relax{%
- \def\@tempa{#1}%
- \ifx\@tempa\@empty \else
- \MT@get@slot
- \ifnum\MT@char > \m@ne
- \@tempcntb=#2\relax
+\def\MT@ex@split@val#1\relax{%
+ \@tempcntb=#1\relax
% \end{macrocode}
% Take an optional factor into account.
% \begin{macrocode}
- \ifnum\MT@ex@factor@=\@m \else
- \MT@scale\@tempcntb \MT@ex@factor@ \@m
- \fi
- \ifnum\@tempcntb > \MT@ex@max
- \MT@warn@ex@too@large\MT@ex@max
- \else
- \ifnum\@tempcntb < \MT@ex@min
- \MT@warn@ex@too@large\MT@ex@min
- \fi
- \fi
- \efcode\MT@font\MT@char=\@tempcntb
-%<debug>\MT@dinfo@nl{4}{::: ef (\MT@char): \number\efcode\MT@font\MT@char: [#2]}%
+ \ifnum\MT@ex@factor@=\@m \else
+ \MT@scale\@tempcntb \MT@ex@factor@ \@m
+ \fi
+ \ifnum\@tempcntb > \MT@ex@max
+ \MT@warn@ex@too@large\MT@ex@max
+ \else
+ \ifnum\@tempcntb < \MT@ex@min
+ \MT@warn@ex@too@large\MT@ex@min
+ \fi
+ \fi
+ \efcode\MT@font\MT@char=\@tempcntb
+%<debug>\MT@dinfo@nl{4}{::: ef (\MT@char): \number\efcode\MT@font\MT@char: [#1]}%
% \end{macrocode}
% Heirs, heirs, I love thy heirs.
% \begin{macrocode}
- \MT@ifdefined@c@T\MT@ex@inh@name{%
- \MT@ifdefined@n@T{MT@inh@\MT@ex@inh@name @\MT@char @}{%
- \expandafter\MT@map@tlist@c
- \csname MT@inh@\MT@ex@inh@name @\MT@char @\endcsname
- \MT@set@ex@heirs
- }%
- }%
- \fi
- \fi
+ \MT@ifdefined@c@T\MT@ex@inh@name{%
+ \MT@ifdefined@n@T{MT@inh@\MT@ex@inh@name @\MT@char @}{%
+ \expandafter\MT@map@tlist@c
+ \csname MT@inh@\MT@ex@inh@name @\MT@char @\endcsname
+ \MT@set@ex@heirs
+ }%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -5691,35 +5786,11 @@ Q \MessageBreak (it's probably missing)
\MT@load@list\MT@sp@c@name
\MT@set@listname
\MT@let@cn\@tempc{MT@sp@c@\MT@sp@c@name}%
- \expandafter\MT@sp@do\@tempc,\relax,%
+ \expandafter\MT@set@codes\@tempc,\relax,%
}\MT@reset@sp@codes
}
% \end{macrocode}
%\end{macro}
-%\begin{macro}{\MT@sp@do}
-% \begin{macrocode}
-\def\MT@sp@do#1,{%
- \ifx\relax#1\@empty \else
- \MT@sp@split #1==\relax
- \expandafter\MT@sp@do
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\MT@sp@split}
-% \begin{macrocode}
-\def\MT@sp@split#1=#2=#3\relax{%
- \def\@tempa{#1}%
- \ifx\@tempa\@empty \else
- \MT@get@slot
- \ifnum\MT@char > \m@ne
- \MT@get@char@unit
- \MT@sp@split@val#2\relax
- \fi
- \fi
-}
-% \end{macrocode}
-%\end{macro}
%\begin{macro}{\MT@sp@split@val}
% If |unit=space|, \cs{MT@get@space@unit} will be defined to fetch the
% corresponding fontdimen (2 for the first, 3 for the second and 4 for the
@@ -5834,35 +5905,11 @@ Q \MessageBreak (it's probably missing)
\MT@load@list\MT@kn@c@name
\MT@set@listname
\MT@let@cn\@tempc{MT@kn@c@\MT@kn@c@name}%
- \expandafter\MT@kn@do\@tempc,\relax,%
+ \expandafter\MT@set@codes\@tempc,\relax,%
}\MT@reset@kn@codes
}
% \end{macrocode}
%\end{macro}
-%\begin{macro}{\MT@kn@do}
-% \begin{macrocode}
-\def\MT@kn@do#1,{%
- \ifx\relax#1\@empty \else
- \MT@kn@split #1==\relax
- \expandafter\MT@kn@do
- \fi
-}
-% \end{macrocode}
-%\end{macro}
-%\begin{macro}{\MT@kn@split}
-% \begin{macrocode}
-\def\MT@kn@split#1=#2=#3\relax{%
- \def\@tempa{#1}%
- \ifx\@tempa\@empty \else
- \MT@get@slot
- \ifnum\MT@char > \m@ne
- \MT@get@char@unit
- \MT@kn@split@val#2\relax
- \fi
- \fi
-}
-% \end{macrocode}
-%\end{macro}
%\begin{macro}{\MT@kn@split@val}
% Again, the unit may be measured in the space dimension; this time only
% \fontdim2.
@@ -6012,7 +6059,7 @@ Q \MessageBreak (it's probably missing)
%\end{macro}
% In case of nested letterspacing with different amounts, we have to extract
% the base font again.
-% ^^A FIXME: outer spacing/kerning for nested letterspaced text
+%\todo{outer spacing/kerning for nested letterspaced text}
% \begin{macrocode}
\MT@get@ls@basefont
\global\expandafter\letterspacefont\MT@lsfont\font@name\MT@letterspace@
@@ -6209,12 +6256,12 @@ Q \MessageBreak (it's probably missing)
\selectfont
}
% \end{macrocode}
-% Now the definitions for the \letterspace\ package with \eplain.
+% Now the definitions for the \letterspace\ package with plain \TeX.
% \begin{macrocode}
%<*plain>
\else
\def\MT@set@lsfont{\MT@lsfont}
-\renewcommand\lsstyle{%
+\def\lsstyle{%
\begingroup
\escapechar\m@ne
\xdef\font@name{\csname\expandafter\string\the\font\endcsname}%
@@ -6304,16 +6351,16 @@ Q \MessageBreak (it's probably missing)
% outer spacing will be remembered in a macro.
% \begin{macrocode}
\def\MT@tr@set@space#1,#2,#3,#4,#5,#6,{%
-%<debug>\MT@dinfo@nl2{... orig. space:
-%<debug> \the\fontdimen2\MT@lsfont, \the\fontdimen3\MT@lsfont, \the\fontdimen4\MT@lsfont
+%<debug>\MT@dinfo@nl2{... orig. space: \the\fontdimen2\MT@lsfont,
+%<debug> \the\fontdimen3\MT@lsfont, \the\fontdimen4\MT@lsfont
%<debug> \MessageBreak... (#1,#2,#3) (#4,#5,#6)}%
\let\MT@temp\@empty
\MT@tr@set@space@{#1}{#4}{2}\@empty
\MT@tr@set@space@{#2}{#5}{3}\@plus
\MT@tr@set@space@{#3}{#6}{4}\@minus
\global\MT@let@nc{MT@outer@space\expandafter\string\font@name}\MT@temp
-%<debug>\MT@dinfo@nl2{... inner space:
-%<debug> \the\fontdimen2\MT@lsfont, \the\fontdimen3\MT@lsfont, \the\fontdimen4\MT@lsfont}%
+%<debug>\MT@dinfo@nl2{... inner space: \the\fontdimen2\MT@lsfont,
+%<debug> \the\fontdimen3\MT@lsfont, \the\fontdimen4\MT@lsfont}%
%<debug>\MT@dinfo@nl2{... outer space: \MT@temp}%
}
% \end{macrocode}
@@ -6380,7 +6427,7 @@ Q \MessageBreak (it's probably missing)
\edef\x{\the\lastskip plus 0pt}%
\setbox\z@\hbox{\MT@outer@space=\x}%
\ifdim\wd\z@>\z@
-%<debug>\MT@dinfo2{((( adjusting pre spaces: \the\MT@outer@space}%
+%<debug>\MT@dinfo2{[[[ adjusting pre spaces: \the\MT@outer@space}%
\unskip \hskip\MT@outer@space\relax
% \end{macrocode}
% Disable left outer kerning.
@@ -6403,7 +6450,7 @@ Q \MessageBreak (it's probably missing)
}
\def\MT@tr@outer@r@{%
\def\MT@temp*##1{\hskip\MT@outer@space
-%<debug>\MT@dinfo2{))) adjusting post spaces (1): \the\MT@outer@space}%
+%<debug>\MT@dinfo2{]]] adjusting post spaces (1): \the\MT@outer@space}%
}%
\ifcat\egroup\noexpand\MT@tr@outer@next
\unkern\egroup
@@ -6430,12 +6477,12 @@ Q \MessageBreak (it's probably missing)
\else
\ifx\@sptoken\MT@tr@outer@next
\def\MT@temp* {\hskip\MT@outer@space
-%<debug>\MT@dinfo2{))) adjusting post spaces (2): \the\MT@outer@space}%
+%<debug>\MT@dinfo2{]]] adjusting post spaces (2): \the\MT@outer@space}%
}%
\else
\ifx~\MT@tr@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 spaces (3): \the\MT@outer@space}%
}%
\else
\ifx\ \MT@tr@outer@next \else
@@ -6465,13 +6512,12 @@ Q \MessageBreak (it's probably missing)
% \end{macrocode}
%\end{macro}
%\end{macro}
-% For older \pdftex\ versions, let it relax.
+% For older \pdftex\ versions, throw an error.
% \begin{macrocode}
}{
\DeclareRobustCommand\lsstyle{%
- \MT@warning{Letterspacing only works with pdftex version 1.40\MessageBreak
- or newer. You might want to use the `soul' package\MessageBreak
- instead}%
+ \MT@error{Letterspacing only works with pdftex version 1.40\MessageBreak
+ or newer}{Upgrade pdftex, or use the `soul' package instead.}%
\MT@glet\lsstyle\relax
}
}
@@ -6574,46 +6620,46 @@ Q \MessageBreak (it's probably missing)
%\changes{v2.3}{2007/10/23}{fix: set evaluation didn't work (bug introduced in 2.2)}
% \begin{macrocode}
\MT@requires@pdftex5{
- \def\MT@noligatures{%
- \MT@dotrue
- \let\@tempa\MT@nl@setname
- \MT@map@clist@n{font,encoding,family,series,shape,size}{%
- \MT@ifdefined@n@TF{MT@checklist@##1}%
- {\csname MT@checklist@##1\endcsname}%
- {\MT@checklist@{##1}}%
- {nl}%
- }%
- \ifMT@do
- \MT@noligatures@\MT@font\MT@nl@ligatures
- \fi
- }
+\def\MT@noligatures{%
+ \MT@dotrue
+ \let\@tempa\MT@nl@setname
+ \MT@map@clist@n{font,encoding,family,series,shape,size}{%
+ \MT@ifdefined@n@TF{MT@checklist@##1}%
+ {\csname MT@checklist@##1\endcsname}%
+ {\MT@checklist@{##1}}%
+ {nl}%
+ }%
+ \ifMT@do
+ \MT@noligatures@\MT@font\MT@nl@ligatures
+ \fi
+}
% \end{macrocode}
%\begin{macro}{\MT@noligatures@}
% This is also used by \cs{MT@set@tr@codes}.
% \begin{macrocode}
- \def\MT@noligatures@#1#2{%
- \MT@ifdefined@c@TF#2{%
+\def\MT@noligatures@#1#2{%
+ \MT@ifdefined@c@TF#2{%
% \end{macrocode}
% Early MiK\TeX\ versions (before 2.5.2579) didn't know \cmd\tagcode.
% \begin{macrocode}
- \MT@ifdefined@c@TF\tagcode{%
- \MT@map@clist@c#2{%
- \KV@@sp@def\@tempa{##1}\MT@get@slot
- \ifnum\MT@char > \m@ne
- \tagcode#1\MT@char=\m@ne\fi
- }%
- \MT@vinfo{... Disabling ligatures for characters: #2}%
- }{%
- \pdfnoligatures#1%
- \MT@warning{Cannot disable selected ligatures (pdftex doesn't\MessageBreak
- know \@backslashchar tagcode). Disabling all ligatures of\MessageBreak
- the font instead}%
+ \MT@ifdefined@c@TF\tagcode{%
+ \MT@map@clist@c#2{%
+ \KV@@sp@def\@tempa{##1}\MT@get@slot
+ \ifnum\MT@char > \m@ne
+ \tagcode#1\MT@char=\m@ne\fi
}%
+ \MT@vinfo{... Disabling ligatures for characters: #2}%
}{%
\pdfnoligatures#1%
- \MT@vinfo{... Disabling ligatures}%
+ \MT@warning{Cannot disable selected ligatures (pdftex doesn't\MessageBreak
+ know \@backslashchar tagcode). Disabling all ligatures of\MessageBreak
+ the font instead}%
}%
- }
+ }{%
+ \pdfnoligatures#1%
+ \MT@vinfo{... Disabling ligatures}%
+ }%
+}
}\relax
% \end{macrocode}
%\end{macro}
@@ -6641,7 +6687,7 @@ Q \MessageBreak (it's probably missing)
\edef\MT@curr@list@name{\@nameuse{MT@abbr@\MT@feat} list
\noexpand\MessageBreak`\@tempb'}%
\MT@let@cn\@tempc{MT@\MT@feat @c@\@tempb}%
- \expandafter\csname MT@\MT@feat @do\expandafter\endcsname\@tempc,\relax,%
+ \expandafter\MT@set@codes\@tempc,\relax,%
}{%
\MT@error{\@nameuse{MT@abbr@\MT@feat} list `\@tempb' undefined.\MessageBreak
Cannot load it from list `\@tempa'}{}%
@@ -6841,7 +6887,7 @@ Q \MessageBreak (it's probably missing)
%\begin{table}\footnotesize
%\caption{Order for matching font attributes}\label{tab:match-order}
%\catcode`\!=13 \let!\match
-%\setlength\fboxsep{4pt}\setlength\fboxrule{0.4pt}
+%\setlength\fboxsep{4pt}
%\leavevmode\kern-\dimexpr\fboxsep+\fboxrule\relax
%\fcolorbox{theframe}{white}{^^A
%\begin{minipage}{\textwidth}
@@ -7042,7 +7088,7 @@ Q \MessageBreak (it's probably missing)
% \begin{macrocode}
\MT@toks=\expandafter{\@tempa}%
% \end{macrocode}
-% Now, let's walk through (hopefully all) possible cases.
+% Now, let's walk through (hopefully) all possible cases.
%\begin{itemize}
% \item It's a letter, a character or a number.
% \begin{macrocode}
@@ -7221,7 +7267,7 @@ Q \MessageBreak (it's probably missing)
%\fi
%
% Unfortunately, the (older) \pkg{inputenc} definitions prefer the
-% protected/generic variants (\eg, \cmd\copyright\ instead of
+% protected\slash generic variants (\eg, \cmd\copyright\ instead of
% \cmd\textcopyright), which our parser won't be able to understand.
% (I'm fed up now, so you have to complain if you really, really want to be able
% to write `\expandafter|\textcopyright|' instead of \cmd\textcopyright, thus
@@ -7357,7 +7403,7 @@ Q \MessageBreak (it's probably missing)
}
% \end{macrocode}
%\end{macro}
-% (What about math? Well, for a moment the following looked like a solution, with
+% [What about math? Well, for a moment the following looked like a solution, with
% \cs{mt@is@mathchar} defined accordingly, analogous to \cs{MT@is@char} above,
% to pick up the last two tokens (the \cmd\meaning\ of a \cmd\mathchardef'ed
% command expands to its hexadecimal notation):
@@ -7376,7 +7422,7 @@ Q \MessageBreak (it's probably missing)
% global scope. Therefore, if they are changed by a package that loads
% different math fonts, there is no guarantee whatsoever that things will still
% be correct (\eg, the minus in |cmsy| when the \pkg{euler} package is loaded).
-% So, no way to go, unfortunately.)
+% So, no way to go, unfortunately.]
%
% Some warning messages, for performance reasons separated here.
%\begin{macro}{\MT@curr@list@name}
@@ -7451,7 +7497,7 @@ Q \MessageBreak (it's probably missing)
% \end{macrocode}
%\end{macro}
%
-%\subsubsection{Hook into \LaTeX's font selection}
+%\subsubsection{Hook into \LaTeX's font selection}\label{sssec:impl.hook}
%
% We append \cs{MT@setupfont} to \cmd\pickup@font, which is called by \LaTeX\
% every time a font is selected. We then check whether we've already seen this
@@ -7461,8 +7507,7 @@ Q \MessageBreak (it's probably missing)
%
% In contrast to the \pkg{pdfcprot} package, there is no need to declare the
% fonts in advance that should benefit from micro-typographic treatment. Also,
-% only those fonts that are actually being used will be set up for expansion
-% and protrusion.
+% only those fonts that are actually being used will be set up.
%
% For my reference:
%\begin{itemize}
@@ -7476,7 +7521,7 @@ Q \MessageBreak (it's probably missing)
% \item \cmd\extract@font.
% \end{itemize}
% \item \cmd\get@external@font\ is called by \cmd\extract@font, by itself,
-% and by the substitution macros
+% and by the substitution macros.
%\end{itemize}
%
%\iffalse
@@ -7977,8 +8022,8 @@ Q \MessageBreak (it's probably missing)
% \end{macrocode}
%\end{macro}
%\begin{macro}{\MT@get@highlevel}
-% Saying, for instance, `|family=rm*|' or `|shape=bf*|' will lead to
-% \cmd\rmdefault\ resp. \cmd\bfdefault\ being expanded/protruded.
+% Saying, for instance, `|family=rm*|' or `|shape=bf*|' will expand to
+% \cmd\rmdefault\ resp. \cmd\bfdefault.
% \begin{macrocode}
\def\MT@get@highlevel#1{%
\expandafter\MT@test@ast\MT@val*\@nil\relax{%
@@ -8276,7 +8321,6 @@ Q \MessageBreak (it's probably missing)
\KV@@sp@def\@tempa{#2}%
\MT@ifdefined@n@TF{MT@#1@set@@\@tempa}{%
\MT@xdef@n{MT@#1@setname}{\@tempa}%
- \MT@info{Using \@nameuse{MT@abbr@#1} set `\@tempa'}%
}{%
\MT@ifdefined@n@TF{MT@#1@setname}\relax{%
\MT@xdef@n{MT@#1@setname}{\@nameuse{MT@default@#1@set}}%
@@ -8443,30 +8487,30 @@ Q \MessageBreak (it's probably missing)
% The optional argument may be used to disable selected ligatures only.
% \begin{macrocode}
\MT@requires@pdftex5{
- \def\DisableLigatures{%
- \MT@begin@catcodes
- \MT@DisableLigatures
- }
- \newcommand*\MT@DisableLigatures[2][]{%
- \MT@ifempty{#1}\relax{\gdef\MT@nl@ligatures{#1}}%
- \xdef\MT@active@features{\MT@active@features,nl}%
- \global\MT@noligaturestrue
- \MT@declare@sets{nl}{no ligatures}{#2}%
- \gdef\MT@nl@setname{no ligatures}%
- \MT@end@catcodes
- }
+\def\DisableLigatures{%
+ \MT@begin@catcodes
+ \MT@DisableLigatures
+}
+\newcommand*\MT@DisableLigatures[2][]{%
+ \MT@ifempty{#1}\relax{\gdef\MT@nl@ligatures{#1}}%
+ \xdef\MT@active@features{\MT@active@features,nl}%
+ \global\MT@noligaturestrue
+ \MT@declare@sets{nl}{no ligatures}{#2}%
+ \gdef\MT@nl@setname{no ligatures}%
+ \MT@end@catcodes
+}
}{
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
-% If \pdftex\ is too old, we issue a warning.
+% If \pdftex\ is too old, we throw an error.
% \begin{macrocode}
- \renewcommand*\DisableLigatures[2][]{%
- \MT@warning{Disabling ligatures of a font is only possible\MessageBreak
- with pdftex version 1.30 or newer.\MessageBreak
- Ignoring \string\DisableLigatures}%
- }
+\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.}%
+}
}
% \end{macrocode}
%\end{macro}
@@ -8594,7 +8638,7 @@ Q \MessageBreak (it's probably missing)
% ligatures of letterspaced fonts}
%\changes{v2.2}{2007/06/16}{new keys `\texttt{spacing}' and `\texttt{outer spacing}'
% to adjust interword spacing
-% (suggested by \contributor Steven E. Harris <seh\at panix.com>)}
+% (suggested by \contributor Steven~E. Harris <seh\at panix.com>)}
% ^^A private mail, 2007/06/15
% \begin{macrocode}
\def\SetTracking{%
@@ -8877,7 +8921,7 @@ Q \MessageBreak (it's probably missing)
%\changes{v2.0}{2006/09/30}{option `\opt{unit}', \cs{SetProtrusion}:
% deprecate value `\texttt{relative}' completely}
% Protrusion codes may be relative to character width, or to any dimension.
-%\todo{new key for unit: dimen (for kerning, especially)}
+%\todo{new key for unit: \texttt{dimen} (for \texttt{kerning}, especially)}
% \begin{macrocode}
\define@key{MT@pr@c}{unit}[character]{%
\global\MT@let@nc{MT@pr@c@\MT@curr@set@name @unit}\@empty
@@ -9136,9 +9180,12 @@ Q \MessageBreak (it's probably missing)
%\begin{macro}{\MT@permute@@@@}
% Calling \cs{MT@permute} will define commands for all permutations
% of the specified font attributes of the form
-% |\MT@|\meta{list type}|@/|\allowbreak\meta{encoding}|/|\allowbreak
-% \meta{family}|/|\allowbreak\meta{series}|/|\allowbreak
-% \meta{shape}|/|\allowbreak\meta{|\textbar*|}
+% |\MT@|\meta{list type}|@/|\allowbreak
+% \meta{encoding}|/|\allowbreak
+% \meta{family}|/|\allowbreak
+% \meta{series}|/|\allowbreak
+% \meta{shape}|/|\allowbreak
+% \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
@@ -9403,10 +9450,12 @@ Q \MessageBreak (it's probably missing)
%\begin{macro}{\MT@optwarn@nan}
% \begin{macrocode}
%</package>
+%<plain>\ifnum\MT@plain<2
\def\MT@optwarn@nan#1#2{%
- \MT@warning@nl{Value `#1' for option `#2' is not a\MessageBreak number.
- Using default value of \number\@nameuse{MT@#2@default}}%
+ \MT@warning@nl{Value `#1' for option `#2' is not a\MessageBreak number.
+ Using default value of \number\@nameuse{MT@#2@default}}%
}
+%<plain>\fi
%<*package>
% \end{macrocode}
%\end{macro}
@@ -9571,7 +9620,7 @@ Q \MessageBreak (it's probably missing)
\MT@def@bool@opt{copyfonts}{%
\csname if\@tempa\endcsname
\MT@error{The `copyfonts' option doesn't work with luatex}
- {Use pdftex instead.}%
+ {Use pdftex instead.}%
\fi
}
}{
@@ -9588,8 +9637,7 @@ Q \MessageBreak (it's probably missing)
\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.}%
+ to use the `copyfonts' option}{Upgrade pdftex.}%
\fi
}
}
@@ -9642,7 +9690,7 @@ Q \MessageBreak (it's probably missing)
% ^^A private mail, 2004/11/30
%\changes{v1.6}{2004/12/18}{new option: \opt{factor}, by default 1000}
%\changes{v2.0}{2005/09/21}{(beta:1) new option: \opt{letterspace}, by default 100}
-%\changes{v2.0}{2007/01/05}{option `\texttt{letterspacing}' renamed to `\opt{letterspace}'}
+%^^A\changes{v2.0}{2007/01/05}{option `\texttt{letterspacing}' renamed to `\opt{letterspace}'}
% Options with numerical keys:
% \opt{factor},
% \opt{stretch},
@@ -9651,6 +9699,7 @@ Q \MessageBreak (it's probably missing)
% \opt{letterspace}.
% \begin{macrocode}
%</package>
+%<plain>\ifnum\MT@plain<2
\MT@map@clist@n{%
%<package> stretch,shrink,step,%
letterspace}{%
@@ -9666,6 +9715,7 @@ Q \MessageBreak (it's probably missing)
{\MT@optwarn@nan{##1}{#1}}%
}%
}
+%<plain>\fi
%<*package>
% \end{macrocode}
% \opt{factor} will define the protrusion factor only.
@@ -9692,6 +9742,7 @@ Q \MessageBreak (it's probably missing)
}%
}
% \end{macrocode}
+%
% \subsubsection{Reading the Configuration File}
%
% The package should just work if called without any options. Therefore,
@@ -9868,10 +9919,9 @@ Q \MessageBreak (it's probably missing)
\MT@let@nc{MT@\@tempb @level}\tw@
\MT@info{Setting #1 to level 2}%
}%
- }{\MT@warning{%
- Value `\MT@val' for key `#1' not recognised.\MessageBreak
- Use any of `true', `false', `compatibility' or\MessageBreak
- `nocompatibility'}%
+ }{\MT@error{Value `\MT@val' for key `#1' not recognised}
+ {Use any of `true', `false', `compatibility' or
+ `nocompatibility'.}%
}%
}%
}%
@@ -9890,11 +9940,11 @@ Q \MessageBreak (it's probably missing)
% Test whether the feature wasn't disabled in the package options.
% \begin{macrocode}
\def\MT@checksetup#1{%
- \expandafter\csname ifMT@#1\endcsname
+ \csname ifMT@#1\endcsname
\expandafter\@firstofone
\else
- \MT@warning{You cannot enable #1 if it was disabled\MessageBreak
- in the package options,}%
+ \MT@error{You cannot enable #1 if it was disabled\MessageBreak
+ in the package options}{Load microtype with #1 enabled.}%
\expandafter\@gobble
\fi
}
@@ -9924,8 +9974,8 @@ Q \MessageBreak (it's probably missing)
\MT@ifstreq\MT@val{false}{%
\@tempcnta=\z@
\MT@info{Disabling #1}%
- }{\MT@warning{Value `\MT@val' for key `#1' not recognised.
- \MessageBreak Use either `true' or `false'}%
+ }{\MT@error{Value `\MT@val' for key `#1' not recognised}
+ {Use either `true' or `false'}%
}%
}%
\ifnum\@tempcnta>\m@ne
@@ -9975,7 +10025,7 @@ Q \MessageBreak (it's probably missing)
%</package>
% \end{macrocode}
%
-%\subsubsection{Processing the Options}
+%\subsubsection{Processing the Options}\label{sssec:impl.options}
%
%\begin{macro}{\MT@ProcessOptionsWithKV}
% Parse options.
@@ -9985,18 +10035,18 @@ Q \MessageBreak (it's probably missing)
\let\@tempc\relax
\let\MT@temp\@empty
%<plain> \ifnum\MT@plain=0
- \MT@map@clist@c\@classoptionslist{%
- \def\CurrentOption{##1}%
- \MT@ifdefined@n@T{KV@#1@\CurrentOption}{%
- \edef\MT@temp{\MT@temp,\CurrentOption,}%
- \@expandtwoargs\@removeelement\CurrentOption
- \@unusedoptionlist\@unusedoptionlist
+ \MT@map@clist@c\@classoptionslist{%
+ \def\CurrentOption{##1}%
+ \MT@ifdefined@n@T{KV@#1@\expandafter\MT@getkey\CurrentOption=\@nil}{%
+ \edef\MT@temp{\MT@temp,\CurrentOption,}%
+ \@expandtwoargs\@removeelement\CurrentOption
+ \@unusedoptionlist\@unusedoptionlist
+ }%
}%
- }%
- \edef\MT@temp{\noexpand\setkeys{#1}%
- {\MT@temp\@ptionlist{\@currname.\@currext}}}%
+ \edef\MT@temp{\noexpand\setkeys{#1}%
+ {\MT@temp\@ptionlist{\@currname.\@currext}}}%
% \end{macrocode}
-% \eplain\ can also handle options.
+% \pkg{eplain} can handle package options.
% \begin{macrocode}
%<*plain>
\else
@@ -10009,6 +10059,13 @@ Q \MessageBreak (it's probably missing)
}
% \end{macrocode}
%\end{macro}
+%\begin{macro}{\MT@getkey}
+% For |key=val| in class options.
+%\changes{v2.3a}{2008/02/09}{fix: \texttt{key\quotechar=val} in class options list}
+% \begin{macrocode}
+\def\MT@getkey#1=#2\@nil{#1}
+% \end{macrocode}
+%\end{macro}
% \begin{macrocode}
\MT@ProcessOptionsWithKV{MT}
%<plain>\fi
@@ -10092,11 +10149,7 @@ Q \MessageBreak (it's probably missing)
% If \opt{shrink} has not been specified, it will inherit the value from \opt{stretch}.
% \begin{macrocode}
\ifnum\MT@shrink=\m@ne
- \ifnum\MT@stretch>\z@
- \let\MT@shrink\MT@stretch
- \else
- \let\MT@shrink\MT@shrink@default
- \fi
+ \let\MT@shrink\MT@stretch
\fi
% \end{macrocode}
% If \opt{step} has not been specified, we will set it to min(\opt{stretch},\opt{shrink})/5,
@@ -10146,11 +10199,12 @@ Q \MessageBreak (it's probably missing)
% \begin{macrocode}
\ifnum\pdfoutput<\@ne
\ifMT@opt@auto
- \MT@warning@nl{%
+ \MT@error{%
Automatic font expansion only works for PDF output.\MessageBreak
- However, you are creating a DVI file. I will switch\MessageBreak
- automatic font expansion off and hope that expanded\MessageBreak
- fonts are available}
+ However, you are creating a DVI file}
+ {If you have created expanded fonts instances, remove `auto' from%
+ \MessageBreak the package options. Otherwise, you have to switch
+ off expansion\MessageBreak completely.}
\fi
\MT@autofalse
\else
@@ -10163,11 +10217,12 @@ Q \MessageBreak (it's probably missing)
%\changes{v1.6}{2004/12/23}{disable automatic expansion for old \pdftex\ versions}
% \begin{macrocode}
}{%
- \MT@warning@nl{%
+ \MT@error{%
The pdftex version you are using is too old for\MessageBreak
- automatic font expansion. I will switch it off and\MessageBreak
- hope that expanded fonts are available.\MessageBreak
- Otherwise, install pdftex version 1.20 or newer}
+ automatic font expansion}%
+ {If you have created expanded fonts instances, remove `auto' from\MessageBreak
+ the package options. Otherwise, you have to switch off expansion\MessageBreak
+ completely, or upgrade pdftex to version 1.20 or newer.}
\MT@autofalse
\def\MT@auto{1000 }
}
@@ -10207,7 +10262,7 @@ Q \MessageBreak (it's probably missing)
(level \number\MT@ex@level),\MessageBreak
stretch: \number\MT@stretch, shrink: \number\MT@shrink,
step: \number\MT@step, \ifMT@selected\else non-\fi selected%
- \ifx\MT@copy@font\MT@copy@font@ .\MessageBreak
+ \ifx\MT@copy@font\relax\else .\MessageBreak
Set up for expansion contexts (using font copies)\fi}
% \end{macrocode}
%\changes{v2.2}{2007/01/28}{warning if \opt{stretch} or \opt{shrink} aren't multiples of \opt{step}}
@@ -10262,7 +10317,7 @@ Q \MessageBreak (it's probably missing)
\ifMT@tracking
%<*lua>
\MT@requires@luatex{
- \MT@warning@nl{Tracking doesn't currently work with luatex}
+ \MT@error{Tracking doesn't currently work with luatex}{Use pdftex.}%
\let\MT@tracking\relax
}{
%</lua>
@@ -10331,26 +10386,28 @@ Q \MessageBreak (it's probably missing)
\fi
}
% \end{macrocode}
-% If \pdftex\ is too old, we disable tracking, spacing and kerning.
+% 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.
% \begin{macrocode}
%<*package>
}{
\MT@addto@setup{%
\ifMT@tracking
- \MT@warning@nl{Tracking only works with pdftex version 1.40\MessageBreak
- or newer. Switching it off}%
+ \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@warning@nl{Adjustment of interword spacing only works with\MessageBreak
- pdftex version 1.40 or newer. Switching it off}%
+ \MT@error{Adjustment of interword spacing only works with\MessageBreak
+ pdftex version 1.40 or newer. Switching it off}{Upgrade pdftex.}%
\else
\MT@info@nl{No adjustment of interword spacing (pdftex too old)}
\fi
\ifMT@kerning
- \MT@warning@nl{Character kerning only works with\MessageBreak
- pdftex version 1.40 or newer. Switching it off}%
+ \MT@error{Character kerning only works with\MessageBreak
+ pdftex version 1.40 or newer. Switching it off}{Upgrade pdftex.}%
\else
\MT@info@nl{No adjustment of character kerning (pdftex too old)}
\fi
@@ -10427,9 +10484,9 @@ Q \MessageBreak (it's probably missing)
\shorthandoff{#2}}
}{
\def\MT@shorthandoff#1#2{%
- \MT@error{You must load the `babel' package before \MT@MT}
- {Otherwise, `\MT@MT' cannot switch off the active characters
- for #1 babel.}}
+ \MT@error{You must load `babel' before `\MT@MT'}
+ {Otherwise, `\MT@MT' cannot switch off #1 babel's\MessageBreak
+ active characters.}}
}
% \end{macrocode}
%\end{macro}
@@ -10451,6 +10508,7 @@ Q \MessageBreak (it's probably missing)
}
\ifMT@kerning
% \end{macrocode}
+%\todo{make switching off of babel's shorthands configurable}
% Disable French \pkg{babel}'s active characters.
%\changes{v2.0}{2006/10/10}{(beta:8) option `\opt{babel}': fix: switch off French
% \pkg{babel}'s shorthands with \cmd\shorthandoff\
@@ -10462,8 +10520,8 @@ Q \MessageBreak (it's probably missing)
\MT@with@babel@and@T{french} \MT@if@true
\MT@with@babel@and@T{frenchb} \MT@if@true
\MT@with@babel@and@T{francais}\MT@if@true
- \MT@with@babel@and@T{acadian} \MT@if@true
\MT@with@babel@and@T{canadien}\MT@if@true
+ \MT@with@babel@and@T{acadian} \MT@if@true
\ifMT@if@\MT@shorthandoff{French}{:;!?}\fi
% \end{macrocode}
% Disable Turkish \pkg{babel}'s active characters.
@@ -10500,9 +10558,13 @@ Q \MessageBreak (it's probably missing)
\edef\MT@curr@file{\jobname.tex}
% \end{macrocode}
%\end{macro}
-% That was that.
+% Restore catcodes.
% \begin{macrocode}
%</package>
+\MT@restore@catcodes
+% \end{macrocode}
+% That was that.
+% \begin{macrocode}
%</package|letterspace>
% \end{macrocode}
%
@@ -10617,7 +10679,7 @@ Q \MessageBreak (it's probably missing)
% 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 an alias of \texttt{cmr}}
+% as aliases of \texttt{cmr}}
% \begin{macrocode}
\DeclareMicrotypeAlias{lmr} {cmr} % lmodern
\DeclareMicrotypeAlias{aer} {cmr} % ae
@@ -10692,14 +10754,14 @@ Q \MessageBreak (it's probably missing)
%%% INTERACTION WITH THE `babel' PACKAGE
\DeclareMicrotypeBabelHook
- {french,francais,acadian,canadien}
- {kerning=french, spacing=}
-
-\DeclareMicrotypeBabelHook
{english,UKenglish,british,USenglish,american}
{kerning=, spacing=nonfrench}
\DeclareMicrotypeBabelHook
+ {french,francais,acadian,canadien}
+ {kerning=french, spacing=}
+
+\DeclareMicrotypeBabelHook
{turkish}
{kerning=turkish, spacing=}
@@ -11153,48 +11215,51 @@ Q \MessageBreak (it's probably missing)
%\subsubsection{Default}
%
% The default settings always use the most moderate value.
+%
% \begin{macrocode}
%<*cfg-t>
\SetProtrusion
%<m-t> [ name = default ]
% \end{macrocode}
% We also create configuration files for the fonts
+%\begin{itemize}
+% \item Bitstream Charter (<NFSS> code |bch|)
%\changes{v1.5}{2004/11/28}{settings for Bitstream Charter}
-% Bitstream Charter (<NFSS> code |bch|),
% \begin{macrocode}
%<bch> [ name = bch-default ]
% \end{macrocode}
-% Bitstream Letter Gothic (|blg|),
+% \item Bitstream Letter Gothic (|blg|)
%\changes{v2.2}{2007/03/03}{settings for Bitstream Letter Gothic}
% \begin{macrocode}
%<blg> [ name = blg-default ]
% \end{macrocode}
-% Computer Modern Roman (|cmr|),
+% \item Computer Modern Roman (|cmr|)
% \begin{macrocode}
%<cmr> [ name = cmr-default ]
% \end{macrocode}
-% Adobe Garamond (|pad|, |padx|, |padj|),
+% \item Adobe Garamond (|pad|, |padx|, |padj|)
% \begin{macrocode}
%<pad> [ name = pad-default ]
% \end{macrocode}
-% Minion\footnote{Contributed by Harald Harders (\mailto{h.harders@tu-bs.de}).}
-% (|pmnx|, |pmnj|),
+% \item Minion\footnote{Contributed by Harald Harders (\mailto{h.harders@tu-bs.de}).}
+% (|pmnx|, |pmnj|)
%\changes{v1.1}{2004/09/14}{settings for Adobe Minion (contributed by
% \contributor Harald Harders <h.harders\at tu-bs.de>)}
% ^^A private mail, 2004/09/14
% \begin{macrocode}
%<pmn> [ name = pmnj-default ]
% \end{macrocode}
-% Palatino (|ppl|, |pplx|, |pplj|),
+% \item Palatino (|ppl|, |pplx|, |pplj|)
% \begin{macrocode}
%<ppl> [ name = ppl-default ]
% \end{macrocode}
-% Times (|ptm|, |ptmx|, |ptmj|)
+% \item Times (|ptm|, |ptmx|, |ptmj|)
% \begin{macrocode}
%<ptm> [ name = ptm-default ]
% \end{macrocode}
-% and <URW> Garamond (|ugm|).
+% \item <URW> Garamond (|ugm|)
%\changes{v1.9c}{2006/01/26}{settings for <URW> Garamond}
+%\end{itemize}
% \begin{macrocode}
%<ugm> [ name = ugm-default ]
%<m-t> { encoding = OT1 }
@@ -11355,8 +11420,8 @@ Q \MessageBreak (it's probably missing)
%<blg|ugm> {=}= {200,200},
%<m-t|pad|pmn|ptm> ( = {100, }, ) = { ,200},
%<bch|ugm> ( = {200, }, ) = { ,200},
-%<blg> ( = {300, }, ) = { ,300},
-%<cmr|ppl> ( = {100, }, ) = { ,300},
+%<cmr|blg> ( = {300, }, ) = { ,300},
+%<ppl> ( = {100, }, ) = { ,300},
%<bch|pmn> [ = {100, }, ] = { ,100},
%<blg> [ = {300,100}, ] = { ,300},
% \end{macrocode}
@@ -11433,7 +11498,7 @@ Q \MessageBreak (it's probably missing)
% \end{macrocode}
% <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}
+%\changes{v1.9a}{2005/11/07}{fix: remove `\texttt{\_}' from <OT1> encoding}
% \begin{macrocode}
\SetProtrusion
%<m-t> [ name = T1-default,
@@ -11528,8 +11593,9 @@ Q \MessageBreak (it's probably missing)
}
% \end{macrocode}
-% The \pkg{lmodern} fonts, on the other hand, restore the original kerning from
-% the <OT1> fonts, and so do we. Silly, isn't it?
+% The \pkg{lmodern} fonts used to restore the original settings from <OT1>
+% fonts. Now, they require even other settings, though.
+%\changes{v2.3a}{2008/02/19}{adjust <LMR> quotation marks again}
% \begin{macrocode}
%<*cmr>
\SetProtrusion
@@ -11538,8 +11604,7 @@ Q \MessageBreak (it's probably missing)
{ encoding = {T1,LY1},
family = lmr }
{
- \textquotedblleft = {500,300},
- \quotedblbase = {500,300}
+ \textquotedblleft = {300,400}, \textquotedblright = {300,400}
}
%</cmr>
@@ -12134,8 +12199,8 @@ Q \MessageBreak (it's probably missing)
family = lmr,
shape = {it,sl} }
{
- \textquotedblleft = {700,100},
- \quotedblbase = {600,300}
+ \textquotedblleft = { ,200}, \textquotedblright = { ,200},
+ \quotesinglbase = { ,400}, \quotedblbase = { ,500}
}
% \end{macrocode}
@@ -12496,7 +12561,7 @@ Q \MessageBreak (it's probably missing)
%</pmn>
% \end{macrocode}
%
-%\subsubsection{\texttt{textcomp}}
+%\subsubsection{Text Companion}
%
% Finally the <TS1> encoding.
% Still quite incomplete for Times and especially Palatino. Anybody?
@@ -13823,18 +13888,18 @@ Q \MessageBreak (it's probably missing)
% ^^A Manfred Siemoneit, Typographisches Gestalten.
% ^^A Regeln und Tips f\"ur die richtige Gestaltung von Drucksachen,
% ^^A Bielefeld 1989
-% The numbers indicate the preference/order when the interword space
+% The numbers indicate the preference\slash order when the interword space
% needs to be shrunk.}
% \label{fig:example-spacing}
% \includegraphics[width=.6\textwidth]{justification.jpg}
% \end{figure}^^A
%}\relax\fi.
% I do not claim to have coped with the task.
-%\todo{fix spacing settings}
+%\todo{fix settings}
%
%\begin{quote}
% `The idea is -- analog to the tables for expansion and protrusion -- to
-% have tables for optical reduction/expansion of spaces in dependence of the
+% have tables for optical reduction\slash expansion of spaces in dependence of the
% actual character so that the distance between words is optically equal.
%
% When reducing distances the (weighting) order is:
@@ -13916,12 +13981,13 @@ Q \MessageBreak (it's probably missing)
%
% From the \TeX book:
%\begin{quote}
-% `If the space factor \textit{f} is different from 1000, the interword glue is
-% computed as follows: Take the normal space glue for the current font, and
-% add the extra space if \textit{f}\,\textgeq\,2000.
-% [...]
-% Then the stretch component is multiplied by \textit{f}\,/\,1000, while the
-% shrink component is multiplied by 1000\,/\,\textit{f}.'
+% `If the
+% space factor $f$ is different from 1000, the interword glue is computed as
+% follows: Take the normal space glue for the current font, and add the
+% extra space if $f\ge2000$.
+% [\,\dots]
+% Then the stretch component is multiplied by $f/1000$, while the shrink
+% component is multiplied by $1000/f$.'
%\end{quote}
% The `extra space' (\fontdim7) for Computer Modern Roman is a third of
% \fontdim2, \ie, 333.
@@ -13935,7 +14001,7 @@ Q \MessageBreak (it's probably missing)
{
% \end{macrocode}
% \file{latex.ltx} has:
-%\begin{verbatim}
+%\begin{verbatim}[morekeywords={[1]{\nonfrenchspacing}}]
%\def\nonfrenchspacing{
% \sfcode`\. 3000
%\end{verbatim}
@@ -14084,7 +14150,7 @@ Q \MessageBreak (it's probably missing)
%</m-t>
%</config>
% \end{macrocode}
-%\changes{v2.0}{2006/12/28}{remove \texttt{letterspacing} settings}
+%^^A\changes{v2.0}{2006/12/28}{remove \texttt{letterspacing} settings}
%\GeneralChanges*
%
%\section{Auxiliary File for Micro Fine Tuning}
@@ -14205,6 +14271,7 @@ normal, and shrunk by 5\%:
%
% ^^A -------------------------------------------------------------------------
%\makeatother
+%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
@@ -14221,7 +14288,7 @@ normal, and shrunk by 5\%:
% Grave accent \` Left brace \{ Vertical bar \|
% Right brace \} Tilde \~}
%
-% \CheckSum{9305}
+% \CheckSum{9198}
%
% \Finale
%