summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/microtype
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2007-12-25 09:57:38 +0000
committerNorbert Preining <preining@logic.at>2007-12-25 09:57:38 +0000
commitd44531a5d8e2be7f6b19fe5e5110e4b1734cc697 (patch)
treece58b67dd82f6bb4bb17f2457af835d2e05abf23 /Master/texmf-dist/source/latex/microtype
parent49de519af20c652c3b3cfe9ba1dd4df1de06bde8 (diff)
microtype update 07-12-25
git-svn-id: svn://tug.org/texlive/trunk@5899 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/microtype')
-rw-r--r--Master/texmf-dist/source/latex/microtype/microtype.dtx1817
-rw-r--r--Master/texmf-dist/source/latex/microtype/microtype.ins7
2 files changed, 1121 insertions, 703 deletions
diff --git a/Master/texmf-dist/source/latex/microtype/microtype.dtx b/Master/texmf-dist/source/latex/microtype/microtype.dtx
index ceefb327e10..e9b195fe805 100644
--- a/Master/texmf-dist/source/latex/microtype/microtype.dtx
+++ b/Master/texmf-dist/source/latex/microtype/microtype.dtx
@@ -2,9 +2,9 @@
% ^^A messages to WinEdt:
% !Mode:: "TeX:DTX:UK"
% !smartQuote:: "English"
-% !DTXversion:: "2.2"
+% !DTXversion:: "2.3"
% ------------------------------------------------------------------------
-% $Id: microtype.dtx,v 1.45 2007-07-14 16:10:26+02 schlicht Exp schlicht $
+% $Id: microtype.dtx,v 1.48 2007-12-24 01:31:23+01 schlicht Exp schlicht $
% ------------------------------------------------------------------------
% The `microtype' package
% An interface to the micro-typographic extensions of pdfTeX
@@ -33,14 +33,14 @@
%<package|letterspace>\ProvidesPackage
%<package> {microtype}
%<*package>
- [2007/07/14 v2.2 Micro-typography with pdfTeX (RS)]
+ [2007/12/23 v2.3 Micro-typography with pdfTeX (RS)]
%</package>
-%<letterspace> {letterspace}[2007/07/14 v1.2 Robust letterspacing (RS)]
+%<letterspace> {letterspace}[2007/12/23 v1.3 Robust letterspacing (RS)]
%<*config>
%<config>\ProvidesFile
-%<m-t> {microtype.cfg}[2007/07/14 v2.2 microtype main configuration file (RS)]
+%<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)]
+%<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)]
%<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)]
@@ -76,43 +76,41 @@
family = {rm*, tt*, cmsy},
size = {footnotesize, small, normalsize} }
\DeclareMicrotypeSet*[kerning]
- { lettergothic }
- { encoding = T1,
- family = blg }
+ { lettergothic }
+ { encoding = T1 }
+ % underscores shouldn't touch
\SetExtraKerning
{ encoding = T1,
family = blg }
- { _ = {100,100} } % underscores shouldn't touch
- \ifx\tagcode\undefined\else % disable ?` and !` ligatures (sample in section \ref{sec:disable-ligatures})
- \DisableLigatures[?,!]{encoding = *, family = rm* }
- \fi
- \IfFileExists{t1mwr.fd}{ % Fraktur sample in section \ref{sec:lettersp}
- \newcommand\textfrak[1]{{\fontfamily{mwr}\selectfont ##1}}
- \ifpdf
- \SetTracking[no ligatures={f}]{encoding=T1,family=mwr}{100}
- \fi
- }{
- \IfFileExists{yfonts.sty}{
- \usepackage{yfonts}
- \ifpdf
- \SetTracking[no ligatures={f}]{encoding=LY,family=yfrak}{100}
- \fi
- }{
- \let\textfrak\@gobble
- }
- }
+ { _ = {100,100} }
+ % disable ?` and !` ligatures (sample in section \ref{sec:disable-ligatures})
+ \DisableLigatures[?,!]{encoding = *, family = rm* }
+ % Fraktur sample in section \ref{sec:lettersp}
+ \IfFileExists{t1mwr.fd}
+ {\newcommand\textfrak[1]{{\fontfamily{mwr}\selectfont ##1}}
+ \ifpdf
+ \SetTracking[no ligatures={f}]{encoding=T1,family=mwr}{100}
+ \fi}
+ {\IfFileExists{yfonts.sty}
+ {\usepackage{yfonts}
+ \ifpdf
+ \SetTracking[no ligatures={f}]{encoding=LY,family=yfrak}{100}
+ \fi}
+ {\let\textfrak\@gobble}}
\tolerance=700
-\let\printlogo\@empty
\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
\g@addto@macro\macrocode{\pdfadjustspacing\z@}
\fi
+ % bonus material
\InputIfFileExists{microtype-logo.dtx}\relax\relax
+ \InputIfFileExists{microtype-lssample.dtx}\relax\relax
\else
\let\lsstyle\relax
\fi
+\usepackage{amssymb}
\usepackage{booktabs}
\usepackage{array}
\newcolumntype{L}[1]{p{#1}<{\raggedright}}
@@ -152,9 +150,10 @@
\fi
\addtolength\textheight{\topskip}
\setlength\topmargin{12pt}
-\def\paragraph{\@startsection
- {paragraph}{4}{0pt}%
- {3.25ex plus 1ex minus .2ex}{-1em}%
+% sections
+\def\@seccntformat#1{\llap{\csname the#1\endcsname\hskip\marginparsep}}
+\def\paragraph{\@startsection{paragraph}{4}%
+ {0pt}{8pt plus 2pt minus 1pt}{-1em}%
{\normalfont\normalsize\itshape}}
% title
\def\@maketitle{%
@@ -220,7 +219,7 @@
\parindent 0pt
\everypar{\parindent 0pt}%
\leavevmode\hbox to 15pt{\@thefnmark\hss}#1}
-\skip\@mpfootins=0.5\baselineskip
+\skip\@mpfootins=4pt
% lists
\setlength\leftmargini{15pt}
\setlength\leftmarginii{12.5pt}
@@ -268,7 +267,7 @@
\else
\hb@xt@\hsize{\box\@tempboxa\hfil}%
\fi
- \vskip 6pt}
+ \vskip 4pt}
% index and change log
\IndexPrologue{\section{Index}%
Links refer to the page where the corresponding entry is described (bold face)
@@ -336,7 +335,7 @@
\if#1?\def\@tempb{\normalsize[\Variable{#2}]}% % ? = optional
\else\def\@tempb{\normalsize\{\Variable{#1#2}\}}\fi}
\def\Variable#1{$\langle${\rmfamily\itshape\small#1}$\rangle$}
-\def\OptionSep{,\,} \def\MacroSep{\space}
+\def\OptionSep{{\rmfamily, }} \def\MacroSep{\,}
\def\PrintValues[#1]{{\MacroFont\expandafter\@gobble\@tempa\hfill #1}\\*[.25\baselineskip]}
\def\CatIndex#1#2{\index{#1\actualchar{\protect\ttfamily #1} (#2)\encapchar hyperpage}}
\def\SpecialOptionIndex#1{\@bsphack\CatIndex{#1}{option}%
@@ -377,12 +376,13 @@
\textls,\lsstyle,\lslig,\Microtype@Hook},
keywordstyle=[0]\color{thegreen},
keywords=[1]{protrusion,expansion,activate,DVIoutput,draft,final,verbose,
- config,factor,auto,stretch,shrink,step,selected,unit,context,%defersetup,
- tracking,spacing,kerning,letterspace,babel,no ligatures}, % there's a \nobreakspace in this line
+ config,factor,auto,stretch,shrink,step,selected,unit,tracking,spacing,
+ kerning,letterspace,babel,%defersetup,copyfonts,
+ 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$_},
+ alsoother={0123456789_},
frame=single,backgroundcolor=\color{theshade},rulecolor=\color{theframe},
xleftmargin=3.4pt,xrightmargin=3.4pt,belowskip=\smallskipamount
}
@@ -402,14 +402,14 @@
\usepackage{pdfcolmk}
\fi\fi
\usepackage[bookmarks,bookmarksopen,pdfdisplaydoctitle,colorlinks,
- linkcolor=theblue,urlcolor=theblue,citecolor=theblue,
+ linkcolor=theblue,citecolor=theblue,urlcolor=thered,
hyperindex=false,hyperfootnotes=false,
pdftitle={The microtype package},
pdfauthor={R Schlicht <w.m.l@gmx.net>},
pdfsubject={An interface to the micro-typographic extensions of pdfTeX},
- pdfkeywords={TeX, LaTeX, pdftex, typography, micro-typography,
+ pdfkeywords={TeX, LaTeX, pdfTeX, LuaTeX, typography, micro-typography,
character protrusion, margin kerning, optical alignment, font expansion,
- font scaling, hz, kerning, spacing, glue, letterspacing, tracking}
+ font scaling, hz, kerning, spacing, glue, letterspacing, tracking, ligatures}
]{hyperref}
\pdfcatalog{/Lang(en-GB)}
\ifnum\pdftexversion < 130 \else
@@ -447,11 +447,9 @@
% \@esphack}
\def\ctanurl#1{\href{http://www.ctan.org/tex-archive/#1}{\nolinkurl{/#1}}}
\DeclareRobustCommand\mailto[1]{\href{mailto:#1}{\nolinkurl{#1}}}
- {% some PDF viewers don't like spaces:
- \catcode`\%=12
- \gdef\mailtoRS{\href
- {mailto:<w.m.l@gmx.net>%20Robert%20Schlicht?subject=[microtype%20\fileversion]}
- {\texttt{w.m.l@gmx.net}}}}
+ \def\mailtoRS{\href % some PDF viewers don't like spaces:
+ {mailto:<w.m.l@gmx.net>\%20Robert\%20Schlicht?subject=[microtype\%20\fileversion]}
+ {\texttt{w.m.l@gmx.net}}}
% the samples on the first page, utilising nested optional content groups (aka. layers):
\ifnum\pdftexversion<140 \else
\def\mt@layer#1#2{\pdfliteral direct{/OC/#1 BDC}#2\pdfliteral direct{EMC}}
@@ -467,13 +465,13 @@
\xdef\mt@order{\mt@order[(Sample)}
\mt@register{Protrusion}{true} \mt@register{Protrusion}{false}
\mt@register{Expansion} {true} \mt@register{Expansion} {false}
- \mt@register{invisible}{}
+ \mt@register{_compatibility}{}
\xdef\mt@order{\mt@order]}
\pdfcatalog{/OCProperties <<
/OCGs [\mt@objects]
/D << /Order [\mt@order]
- /BaseState/ON
- /OFF [\mt@Protrusion@true \mt@Expansion@true \mt@invisible@] >> >> }
+ /BaseState/OFF
+ /ON [\mt@Protrusion@false \mt@Expansion@false \csname mtl@objects\endcsname] >> >> }
\newbox\mt@box
\newdimen\mt@unvdimen
\def\mt@place#1{%
@@ -495,7 +493,7 @@
\pdfstartlink user{/Subtype/Link
/BS << /Type/Border/W 1 /S/D /D[4 1] >>
/H/O /C[0.65 0.04 0.07] /Contents(Click to Toggle #1!)
- %/OC << /Type/OCMD /VE[/Not \mt@invisible@] >> % not honoured by older viewers
+ %/OC << /Type/OCMD /VE[/Not \csname mt@_compatibility@\endcsname] >> % not honoured by older viewers
/A << /S/SetOCGState /State[/Toggle \csname mt@#1@true\endcsname
\csname mt@#1@false\endcsname] >>}
#1 \hfill\pdfendlink & \mt@layer{#1true}{\rlap{on}}\mt@layer{#1false}{off}}
@@ -517,7 +515,7 @@
\mt@show@sample{false}{false}
\mt@show@sample{false}{true}
\mt@show@sample{true} {false}
- \mt@layer{invisible}{%
+ \mt@layer{_compatibility}{%
% for compatibility with older PDF viewers that don't support OCGs, we
% add a layer that contains a white box, which will hide the underlying
% layers for older viewers, and will be ignored by PDF 1.5 capable viewers.
@@ -558,10 +556,12 @@
\else \llap{\raisebox{0.45ex}{\'{}\kern\dimexpr.05em-2\fontdimen1\font\relax}}
\fi Th\`anh}
\def\pdftex{\texorpdfstring{pdf\kern.05em\TeX}{pdfTeX}}
-\def\luatex{\texorpdfstring{Lua\TeX}{LuaTeX}}
+\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\fontdim{\cmd\fontdimen\,}
\def\eg{e.\,g.}
\def\ie{i.\,e.}
@@ -569,8 +569,8 @@
\edef\x{\@tempcnta=\the\@tempcnta}\expandafter}\x
\advance\@tempcnta-7 \ifcase\@tempcnta\tiny\or\scriptsize\or
\footnotesize\or\small\or\or\normalsize\or\or\large\or\or\or\Large\fi}
-\DeclareRobustCommand\acronym[1]{\texorpdfstring
- {{\smaller\ifcmr #1\else\textls[60]{#1}\fi}}{#1}}
+\DeclareRobustCommand\acronym[1]{%
+ \texorpdfstring{{\smaller\textls[60]{#1}}}{#1}}
{\catcode`\<=\active
\AtBeginDocument{\catcode`\<=\active
\def<#1>{\acronym{#1}}
@@ -588,15 +588,10 @@
%</driver>
% \fi
%
-%^^A |microtype| n. [Gr. mikros, small; typos, type] (CNID: Anthozoa)
-%^^A A normal mesentery arrangement. see -> macrotype.
-%^^A (Armand R. Maggenti, Online Dictionary of Invertebrate Zoology: M, 2005,
-%^^A http://digitalcommons.unl.edu/onlinedictinvertzoology/14)
-%
% ^^A -------------------------------------------------------------------------
%\GeneralChanges*
%\changes{v1.0}{2004/09/11}{Initial version}
-%\changes{v2.0}{2006/12/29}{new package \pkg{letterspace}: a stripped-down version,
+%\changes{v2.0}{2006/12/29}{new package \letterspace: a stripped-down version,
% containing the letterspacing commands only}
%\GeneralChanges{Documentation}
%\changes{v1.9b}{2006/01/13}{activate expansion in the distributed <PDF>}
@@ -604,7 +599,7 @@
% ^^A Adobe Reader 8 had serious bugs with transparency. Fixed in 8.1.
%
% \GetFileInfo{microtype.dtx}
-% \title{\printlogo
+% \title{\ifx\printlogo\undefined\else\printlogo\fi
% \textls{The \microtype\ package}\\[.3\baselineskip]\large
% An interface to the micro-typographic extensions of \pdftex}
% \author{R Schlicht\\\mailtoRS}
@@ -626,7 +621,8 @@
% Roman, Palatino, Times, <URW> Garamond, Adobe Garamond and Minion,
% Bitstream Charter and Letter Gothic, the <AMS> symbols and Euler fonts, for
% various Euro symbol fonts, as well as some generic settings for unknown
-% fonts. Contributions are very welcome.}
+% fonts (cf.~table~\ref{tab:fonts} on page~\pageref{tab:fonts}).
+% Contributions are very welcome.}
%
% Note that font expansion and character protrusion will only work with
% \pdftex, at least version 0.14f. Automatic font expansion requires version
@@ -635,9 +631,9 @@
% package will by default enable protrusion and expansion if they can safely be
% assumed to work.
%
-% The alternative package \pkg{letterspace} provides the user commands for
-% letterspacing only, omitting support for all other extensions (see
-% section~\ref{sec:lettersp}).
+% The alternative package \letterspace, which also works with \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.
@@ -650,7 +646,7 @@
%
%
%\newpage
-%\emptypdfpageresources ^^A layout: layers of the logo
+%\emptypdfpageresources ^^A layers of the logo
%\tableofcontents
%\listoftables
%
@@ -718,10 +714,10 @@
% 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
-% to change the tracking of customisable sets of fonts, \eg, 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.
+% 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
@@ -757,7 +753,7 @@
% The possibility, finally, to \emph{disable all ligatures} of a font may be
% useful for typewriter fonts.
%
-%\emptypdfpageresources ^^A layout: layers of the sample
+%\emptypdfpageresources ^^A layers of the sample
%\bigskip\noindent
% The \microtype\ package provides an interface to all these micro-typographic
% extensions. All micro-typographic aspects may be customised to your taste and
@@ -790,9 +786,12 @@
% activated directly in the package options (section~\ref{sec:font-sets}).
% \item Fine-tune the micro-typographic settings of the fonts or sets of fonts
% (section~\ref{sec:fine-tuning}).
-% \item If you're of the kind who always wants to go further, you'll
-% certainly be interested in the possibility of context-sensitive setup
+% \item If you're of the kind who always wants to march on, you'll certainly
+% be interested in the possibility of context-sensitive setup
% (section~\ref{sec:context}).
+% \item You are even countenanced to leave the path of typographic virtue and
+% steal some sheep (section~\ref{sec:lettersp}) or trespass in other ways
+% (section~\ref{sec:disable-ligatures}).
% \item Should you encounter any obstacles, follow the hints and caveats
% (section~\ref{sec:caveats}).
%\end{itemize}
@@ -805,7 +804,7 @@
% description of all \key{keys} and their possible |values|
% (`|true|' may be omitted; multiple values, where allowed, must be enclosed in
% braces; the default value is shown on the right, preceded by an asterisk
-% if it is contingent on the \pdftex\ version).
+% if it is contingent on the \pdftex\ version and/or the output mode).
%
%\subsection{Micro-Typographic Options}\label{sub:options-microtype}
%
@@ -851,12 +850,12 @@
% section~\ref{sec:font-sets} for a detailed discussion. Specifying a font set
% for a feature implies activating this feature.
%
-%\bigskip
+%\medskip
%\Describe{Option}{tracking}{true,!false,:font set name}
%\DescribeOption{spacing}
%\DescribeOption{kerning}
-% The new extensions of tracking, interword spacing, and additional kerning do
-% not have a compatibility level. Therefore, they can only be switched on or
+% There is no compatibility level for the new extensions of tracking, interword
+% spacing, and additional kerning. Therefore, they can only be switched on or
% off, or they may be activated by passing a set name to the option. By
% default, neither feature is enabled.
%
@@ -880,7 +879,7 @@
% typographical correctness -- if you are using a large font that calls for
% more modest protrusion).
%
-%\bigskip
+%\medskip
%\Describe{Option}{unit}{!character,:dimension}
% This option is described in section~\ref{sub:protrusion}, apropos the command
% \cs{SetProtrusion}. Use with care.
@@ -901,6 +900,7 @@
% 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
@@ -910,8 +910,7 @@
% you should either install the \pkg{cm-super} fonts or use the Latin Modern
% fonts (package \pkg{lmodern}).
%
-%\ifcmr\pagebreak\fi ^^A layout
-%\bigskip
+%\medskip
%\Describe{Option}{stretch}{:integer}[20]
%\DescribeOption{shrink}
% You may specify the stretchability and shrinkability of a font, \ie, the
@@ -921,7 +920,7 @@
% The default stretch limit is 20. The shrink limit will by default be the
% same as the stretch limit.
%
-%\bigskip
+%\medskip
%\Describe{Option}{step}{:integer}[\textrm{min(\opt{stretch},\opt{shrink})/5}]
% Font expansion will be applied in discrete steps. For example, if \opt{step}
% is set to~4 (which it is by default), \pdftex\ will try up to eleven different
@@ -940,7 +939,7 @@
%\usepackage{microtype}
%\end{verbatim}
%
-%\bigskip
+%\medskip
%\Describe{Option}{selected}{true,!false}
% When applying font expansion, it is possible to restrict the expansion of some
% characters that are more sensitive to deformation than others (\eg, the `O',
@@ -965,7 +964,7 @@
%
%\subsection{Miscellaneous Options}\label{sub:options-misc}
%
-%\Describe{Option}{DVIoutput}{true,!false}
+%\Describe{Option}{DVIoutput}{true,false}[*\,false]
% \pdftex\ is not only able to generate <PDF> output but can also spit out <DVI>
% files.\footnote{
% Recent \TeX\ systems are using pdfe\TeX\ as the default engine even for
@@ -989,8 +988,8 @@
%
%\changes{v2.0}{2006/11/28}{add remark about `\opt{draft}' option disabling \microtype\
% (noted by \contributor Michalis Miatidis <miatidis\at informatik.rwth-aachen.de>)}
-% ^^A private mail, 26/11/2006
-%\bigskip
+% ^^A private mail, 2006/11/26
+%\medskip
%\Describe{Option}{draft}{true,!false}
%\DescribeOption{final}
% If the \opt{draft} option is passed to the package, \emph{all
@@ -1001,24 +1000,24 @@
% show any overfull boxes, you should load \microtype\ with the |final|
% option.
%
-%\bigskip
-%\Describe{Option}{verbose}{true,!false,errors}
+%\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.
+% 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|.
%
-%\bigskip
+%\medskip
%\Describe{Option}{babel}{true,!false}
% Loading the package with the \opt{babel} option will adjust the typesetting
% according to the respective selected language. Read section~\ref{sec:context}
% for further information.
%
-%\bigskip
+%\medskip
%\Describe{Option}{config}{:file name}[microtype]
% Various settings for this package will be loaded from a main configuration
% file, by default \file{microtype.cfg} (see section~\ref{sub:config-file}).
@@ -1026,7 +1025,7 @@
% name \emph{without the extension}, \eg, |config=mycrotype|.
%
%\iffalse ^^A ... waiting for bug reports before documenting yet another option ...
-%\bigskip
+%\medskip
%\Describe{Option}{defersetup}{!true,false}
% Unlike in earlier versions, \microtype\ will since version 1.9a defer its
% setup until the end of the preamble. This has at least two advantages: the
@@ -1045,7 +1044,7 @@
%\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
@@ -1069,7 +1068,7 @@
% `font sets'; these font sets are specified via font attributes that have to
% match.
%
-%\bigskip
+%\medskip
%\Describe{Macro}{\DeclareMicrotypeSet}{?features,set name,set of fonts}
%\DescribeMacro{\DeclareMicrotypeSet*}
% This command declares a new set of fonts to which the micro-typographic
@@ -1117,15 +1116,13 @@
% document's |\|\meta{value}|default|, \eg, \cmd\rmdefault.
% A single asterisk means |\|\meta{attribute}|default|, \eg,
% \cmd\encodingdefault, respectively \cmd\normalsize\ for the size axis.
-%
-% Sizes may be either specified as a dimension (`|10|' or `|10pt|'), or as a
+% Sizes may either be specified as a dimension (`|10|' or `|10pt|'), or as a
% size selection command \emph{without} the backslash. You may also specify
% ranges (\eg, `|small-Large|'); while the lower boundary is included in the
% range, the upper boundary is not. Thus, `|12-16|' would match 12pt, 13.5pt
% and 15.999pt, \eg, but not 16pt. You are allowed to omit the lower or
% upper bound (`|-10|', `|large-|').
%
-%\bigskip\noindent
% Additionally to this declaration scheme, you can add single fonts to
% a set using the `|font|' key, which expects the concatenation of all font
% attributes, separated by forward slashes, \ie,
@@ -1143,13 +1140,27 @@
% T1/tt*/m/it/*} }
%\end{verbatim}
% As you can tell from the example, the asterisk notation is also allowed for
-% the |font| key. Size selection commands are possible, too, however, ranges are
+% the |font| key. A single asterisk is equivalent to `|*/*/*/*/*|', \ie, the
+% normal font. Size selection commands are possible, too, however, ranges are
% not allowed.
%
+%\medskip\noindent
+% Table~\ref{tab:predefined-font-sets} lists the nine predefined font sets.
+% They may also be activated by passing their name to the feature options
+% \opt{protrusion}, \opt{expansion}, \opt{tracking}, \opt{spacing} and
+% \opt{kerning} when loading the package, for example:
+%\begin{verbatim}
+%\usepackage[protrusion=allmath,tracking=smallcaps]{microtype}
+%\end{verbatim}
+%
%\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}
+%\leavevmode\kern-\dimexpr\fboxsep+\fboxrule\relax
+%\fcolorbox{theframe}{white}{^^A
+%\begin{minipage}{\textwidth}
%\begin{tabular}{@{}L{65pt}L{80pt}*3{L{41pt}}L{67pt}@{}}
-%\toprule
% \footnotesize Set name
% & \multicolumn{5}{l}{\footnotesize Font attributes}\\
%\cmidrule{2-6}
@@ -1161,77 +1172,72 @@
%\cmidrule(r){1-1}\cmidrule(r){2-2}\cmidrule(r){3-3}
%\cmidrule(r){4-4}\cmidrule(r){5-5}\cmidrule{6-6}
% |all|
-% & --
-% & --
-% & --
-% & --
-% & -- \\
+% & !
+% & !
+% & !
+% & !
+% & ! \\
%\cmidrule(r){1-1}
% |alltext|\linebreak(|allmath|)
% & Text encodings, <TS1>\linebreak (<OML>, <OMS>, <U>)
-% & --
-% & --
-% & --
-% & -- \\
+% & !
+% & !
+% & !
+% & ! \\
%\cmidrule(r){1-1}
% |basictext|\linebreak(|basicmath|)
% & Text encodings \linebreak (<OML>, <OMS>)
-% & |\rm*|,\linebreak |\sf*|
-% & |\md*|
-% & --
+% & \cmd\rm|*|,\linebreak \cmd\sf|*|
+% & \cmd\md|*|
+% & !
% & \cmd\normalsize, \cmd\footnotesize, \cmd\small, \cmd\large\\
%\cmidrule(r){1-1}
% |smallcaps|
% & Text encodings
-% & --
-% & --
+% & !
+% & !
% & sc
-% & -- \\
+% & ! \\
%\cmidrule(r){1-1}
% |footnotesize|
% & Text encodings, <TS1>
-% & --
-% & --
-% & --
-% & |-\small|\\
+% & !
+% & !
+% & !
+% & |-|\cmd\small\\
%\cmidrule(r){1-1}
% |scriptsize|
% & Text encodings, <TS1>
-% & --
-% & --
-% & --
-% & |-\footnotesize| \\
+% & !
+% & !
+% & !
+% & |-|\cmd\footnotesize\\
%\cmidrule(r){1-1}
% |normalfont|
-% & |\encoding*|
-% & |\family*|
-% & |\series*|
-% & |\shape*|
-% & |\normalsize| \\
+% & \cmd\encoding|*|
+% & \cmd\family|*|
+% & \cmd\series|*|
+% & \cmd\shape|*|
+% & \cmd\normalsize \\
%\bottomrule
%\end{tabular}
-%\vskip8pt\footnotesize
+%\vskip4pt\footnotesize
% `Text encodings' = <OT1>, <T1>, <LY1>, <OT4>, <QX>, <T5>
%\hfill
% `\dots|*|' = `\dots|default|'
+%\vskip3pt
+%\end{minipage}^^A
+%}\kern-\dimexpr\fboxsep+\fboxrule\relax ^^A end \fcolorbox
%\end{table}
%
-% Table~\ref{tab:predefined-font-sets} lists the nine predefined font sets.
-% They may also be activated by passing their name to the feature options
-% \opt{protrusion}, \opt{expansion}, \opt{tracking}, \opt{spacing} and
-% \opt{kerning} when loading the package, for example:
-%\begin{verbatim}
-%\usepackage[protrusion=allmath,tracking=smallcaps]{microtype}
-%\end{verbatim}
-%
-%\bigskip
+%\medskip
%\Describe{Macro}{\UseMicrotypeSet}{?features,set name}
% This command activates a font set previously declared by \cs{DeclareMicrotypeSet}.
-% Using the optional argument, you can limit the application of the set to
-% one or more features. This command only has an effect if the feature has been
-% activated in the package options.
+% Using the optional argument, you can limit the application of the set to one
+% or more features. This command only has an effect if the feature was activated
+% in the package options.
%
-%\bigskip
+%\medskip
%\Describe{Macro}{\DeclareMicrotypeSetDefault}{?features,set name}
% If a feature is enabled but no font set has been chosen explicitly, the sets
% declared by this command will be activated. By default, the `|alltext|' font
@@ -1323,7 +1329,8 @@
% are able to load it by another list.
% \item[\key{load}] You can load another list (provided, you previously assigned
% a name to it) before the current list will be loaded, so that the
-% fonts will inherit the values from the loaded list.\par
+% fonts will inherit the values from the loaded list.
+% \par
% Thus, the configuration may be simplified considerably. You can for
% instance create a default list for a font; settings for other shapes
% or series can then load these settings, and extend or overwrite them
@@ -1363,9 +1370,9 @@
% scaled by a |factor|. A |unit| setting will only be taken into account
% if it is not |=character|.
% \item[\key{inputenc}] Select an input encoding that should apply to this
-% list, regardless of what the document's input encoding is. You may specify
-% any encoding that can be loaded via the \pkg{inputenc} package, \eg,
-% |ansinew|, |koi8-r|, |utf8|, with the exception of |uft8x|.
+% list, regardless of what the document's input encoding is. You may
+% specify any encoding that can be loaded via the \pkg{inputenc} package,
+% \eg, |ansinew|, |koi8-r|, |utf8|.
% \item[\key{context}] The scope of the list may be limited to a certain
% context. For an example application, see section~\ref{sec:context}.
%\end{options}
@@ -1377,9 +1384,19 @@
% By default, all characters of a font are allowed to be stretched or shrunk by
% the same amount. However, it is also possible to limit the expansion of
% certain characters if they are more sensitive to deformation. This is the
-% purpose of the \cs{SetExpansion} command. Note that it will only have an effect
-% if the package has been loaded with the \opt{selected} option. Otherwise,
-% the expansion settings will be ignored.
+% purpose of the \cs{SetExpansion} command. Note that it will only have an
+% effect if the package was loaded with the \opt{selected} option (cf.
+% section~\ref{sub:options-expansion}). Otherwise, the expansion settings will
+% be ignored~-- unlike the options in the optional first argument, which will
+% still be evaluated.
+%
+% If the package was loaded with the \opt{selected} option, and settings for a
+% font don't exist, font expansion will not be applied to this font at all.
+% Should the extraordinary situation arise that you want to employ selected
+% expansion in general but that all characters of a particular font (set)
+% should be expanded or shrunk by the same amount, you would have to declare an
+% empty list for these fonts.
+%
%
%\paragraph{The expansion settings}
% consist of \meta{character}\,|=|\,\meta{expansion factor} pairs.
@@ -1394,17 +1411,18 @@
% 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}]
% Analogous to \cs{SetProtrusion}, the optional argument may be used to
% assign a name to the list, to load another list, to preset all
% expansion factors, to set the input encoding, or to determine the
-% context of the list (contexts are only allowed if you are using at least
-% \pdftex\ version 1.40.4).
+% context of the list (contexts are only possible if you are using at
+% least \pdftex\ version 1.40.4).
%\changes{v1.8}{2005/04/12}{add example of how to get rid of a widow
% (suggested by \contributor Adam Kucharczyk <adamk\at ijp-pan.krakow.pl>)}
-% ^^A private mail, 09/04/2005
+% ^^A private mail, 2005/04/09
% \item[\key{auto}, \key{stretch}, \key{shrink}, \key{step}]
% These keys can be used to override the global settings from the package
% options (see section~\ref{sub:options-expansion}). If you don't specify
@@ -1429,9 +1447,9 @@
% This paragraph contains an `unnecessary' widow.}
%\end{verbatim}
% This method of employing contexts to temporarily apply different
-% expansion parameters only works with \pdftex\ version 1.40.4 or later.
-% For older versions, a dirty trick is laid out in
-% section~\ref{ssec:font-setup} on page~\pageref{exp-hack}. Also note
+% expansion parameters only works with \pdftex\ version 1.40.4 or later
+% (for older versions, a dirty trick is laid out in
+% section~\ref{ssec:font-setup} on page~\pageref{exp-hack}). Also note
% that \pdftex\ prohibits the use of fonts with different expansion
% limits or steps (even of different fonts) within one paragraph, hence
% the sloppy context has to be applied to complete paragraphs.
@@ -1456,27 +1474,16 @@
% \opt{shrink} options.
%\end{options}
%
-%\medskip\noindent
-% These options in the optional first argument will even be taken into account
-% if the package has not been loaded with the \opt{selected} option.
-%
-% If the \opt{selected} option has been passed to the package (cf.
-% section~\ref{sub:options-expansion}), and settings for a font don't exist,
-% font expansion will not be applied to this font at all. Should the
-% extraordinary situation arise that you want to employ selected expansion in
-% general but that all characters of a particular font (set) should be expanded
-% or shrunk by the same amount, you would have to declare an empty list for
-% these fonts.
-%
%
%\subsection{Tracking}\label{sub:tracking}
%\Describe{Macro}{\SetTracking}{?options,set of fonts,tracking amount}
% An important typographic technique -- which was missing in \TeX\ for a long
-% time -- is tracking, \ie, the uniform addition or subtraction of letter space
-% to/from all the characters in a font. For example, it is good typographic
-% practice to slightly space out text set in all capitals or small capitals (as
-% in this document). Legibility may also be improved by minimally increasing
-% the tracking of smaller and decreasing that of larger type.\footnote{
+% time -- is the adjustment of tracking, \ie, the uniform addition or
+% subtraction of letter space to/from all the characters in a font. For
+% example, it is good typographic practice to slightly space out text set in
+% all capitals or small capitals (as in this document). Legibility may also be
+% improved by minimally increasing the tracking of smaller and decreasing that
+% of larger type.\footnote{
% With full-featured fonts like Computer Modern, this is usually not
% necessary, though, since they come in optical sizes, and the tracking of
% the small-capitals font is already adjusted.}
@@ -1495,26 +1502,36 @@
% These options serve the same functions as in the previous configuration
% commands. The unit may be any dimension, default is 1em.
% \item[\key{spacing}]
-% When the inter-\emph{character} spacing gets altered, the inter-\emph{word}
+% When the inter-\emph{letter} spacing is altered, the inter-\emph{word}
% spacing probably also needs to be adjusted. This option expects three
% numbers for interword space, stretch and shrink respectively, which are
% given in thousandths of 1em (or of the current \texttt{unit}). If a
% value is followed by an asterisk, it denotes thousandths of the
% respective font dimension which will be added to it. For instance, with
%\begin{verbatim}
-%\SetTracking[ spacing = {25*,166,} ]{ encoding = *, shape = sc }{ 25 }
+%\SetTracking[ spacing = {25*,166, } ]{ encoding = *, shape = sc }{ 25 }
%\end{verbatim}
% the interword space will be increased by 2.5\%, the stretch amount will
-% be set to 0.166em, and the shrink amount will not be modified. If you
-% don't specify the \texttt{spacing} option, the interword space will be
-% scaled by the current letterspace amount (as in the above example),
-% stretch and shrink will not be changed.
+% be set to 0.166em, while the shrink amount will be left untouched. If
+% you don't specify the \texttt{spacing} option, the interword space will
+% be scaled by the current letterspace amount (as in the above example),
+% while stretch and shrink will not be changed.
% \item[\key{outer spacing}]
-% If an interword space precedes or follows letterspaced text, it will by
-% default be equal to that within the text. With this option, which
-% accepts the same values as \texttt{spacing}, it may be adjusted
+% If an interword space immediately precedes or follows letterspaced text,
+% it will by default be equal to that within the text. With this option,
+% which accepts the same values as \texttt{spacing}, it may be adjusted
% independently.
-%\enlargethispage\baselineskip ^^A layout
+% \item[\key{outer kerning}]
+% If, on the other hand, no interword space precedes of follows, you may
+% still want to slightly set off the first and last letter from adjoining
+% letters. This option expects the kerning amounts for left and right hand
+% side, separated by a comma, in thousandths of 1em (or the current
+% \texttt{unit}). If a value is followed by an asterisk, it denotes
+% thousandths of the current letterspacing amount. A single asterisk means
+% `|500*|'; this is also the default, \ie, the sum of the outer kerns is
+% 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
@@ -1532,19 +1549,69 @@
% The default settings disable ligatures for the character `|f|' only,
% \ie, `ff', `fi', ffi', etc.\footnote{
% With \pdftex\ versions older than 1.40.4, \emph{all} ligatures, and
-% hence all kerning, will be disabled. It is recommended to use at least
-% version 1.40.4.}
+% hence all kerning, will be disabled. It is therefore recommended to
+% use at least version 1.40.4.}
% In exceptional situations, you can manually break up a ligature by
% inserting `|{\kern0pt}|' resp. \pkg{babel}'s \verb="|=
% shortcut, or protect it by enclosing it in \cs{lslig} (see
% section~\ref{sec:lettersp}).
%\end{options}
%
+%\ifx\lssample\undefined
+% {\centering\itshape
+% [The original documentation\footnote{Available from <CTAN> at
+% \ctanurl{macros/latex/contrib/microtype/microtype.pdf}.}
+% includes an image illustrating all of these options.]\par}
+%\medskip\noindent
+% As an
+%\else
+%\changes{v2.3}{2007/11/03}{add letterspacing illustration}
%\medskip\noindent
-% As an example, suppose you want to space out all small capitals by 50/1000em
-% (0.025em on each side of each character), fonts smaller than \cmd\small\ by
-% 0.02em, and to decrease the tracking of large type by 0.02em. You can achieve
-% this with the following settings:
+% Since a picture is worth a thousand words, probably even more if, in our
+% case, it depicts a couple of letterspaced words, let's bring one to sum up
+% these somewhat confusing options. Suppose you had the following settings
+% (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}$*} ]
+% { encoding = * }
+% { 1$\anchorarrow{lsamount}$60 }
+%\end{verbatim}
+% and then write:
+%\begin{verbatim}
+%Stop \textls{stealing sheep}!
+%\end{verbatim}
+% this is the (typographically dubious) outcome:
+%
+% \lssample
+%
+%\noindent
+% While the word `Stop' is not letterspaced, the space between the letters in
+% the other two words is expanded by the \showarrow[tracking]{tracking~amount}{red}
+% of 160/1000em\,=\allowbreak\,0.16em.
+% The \showarrow[ispace]{inner~space}{green} within the letterspaced text is
+% increased by 60\%, while its \showarrow[istretch]{stretch}{green} amount is
+% decreased by 10\% and the \showarrow[ishrink]{shrink}{green} amount is left
+% untouched.
+% The \showarrow[ospace]{outer~space}{green} (of 0.45em) immediately before the
+% piece of text may \showarrow[ostretch]{stretch}{green} by 0.25em and
+% \showarrow[oshrink]{shrink}{green} by 0.15em.
+% Note that there is no outer space after the text, since the exclamation mark
+% immediately follows; instead, the default \showarrow[okern]{outer~kern}{red}
+% of half the letterspace amount (0.08em) is added.
+% Furthermore, one \showarrow{ligature}{grey} wasn't broken up, because we
+% neglected to specify the `|s|' in the |no ligatures| key.
+%
+%\medskip\noindent
+% As another
+%\fi
+% example, suppose you want to space out all small capitals by
+% 50/1000em, fonts smaller than \cmd\small\ by 0.02em, and to decrease the
+% tracking of large type by 0.02em. You can achieve this with the following
+% settings:
%^^A there's a \nobreakspace ahead!
%\begin{verbatim}
%\usepackage[tracking=true]{microtype}
@@ -1567,7 +1634,7 @@
%\usepackage[tracking=alltext,letterspace=-40]{microtype}
%\end{verbatim}
%
-%
+%\emptypdfpageresources ^^A layers of letterspacing illustration
%\subsection{Interword Spacing}\label{sub:interword-spacing}
%
%\Describe{Macro}{\SetExtraSpacing}{?options,set of fonts,spacing settings}
@@ -1652,7 +1719,31 @@
% \meta{dimension}. By default, the values are relative to 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 (see section~\ref{sec:context}).
+% 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:
+%\begin{verbatim}[deletekeywords={[1]{unit}}]
+%\SetExtraKerning
+% [ name = french-default,
+% context = french,
+% unit = space ]
+% { encoding = {OT1,T1,LY1} }
+% {
+% : = {1000,}, % = \fontdimen2
+% ; = {500, }, % ~ \thinspace
+% ! = {500, },
+% ? = {500, }
+% }
+%\end{verbatim}
+%\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!
+% \end{microtypecontext}
%\end{options}
%
%
@@ -1699,12 +1790,14 @@
%\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}
+%\leavevmode\kern-\dimexpr\fboxsep+\fboxrule\relax
+%\fcolorbox{theframe}{white}{^^A
%\begin{minipage}{\textwidth}
%\def\arraystretch{1.2}
%\let\footnoterule\relax
%\def\fnref#1{\textsuperscript{\itshape\ifpdf\ref*{#1}\else\ref{#1}\fi}}
%\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}*3l@{}}
-%\toprule
% \footnotesize Font family (<NFSS> code)
% & \multicolumn{2}{l}{\footnotesize Features}\\
%\cmidrule{2-3}
@@ -1734,7 +1827,7 @@
% & n, it \\
% Adobe Minion (|pmnx|, |pmnj|)\footnote{By courtesy of Harald Harders (\mailto{h.harders@tu-bs.de})}
% & <OT1>, <T1>, <LY1>, <TS1>
-% & n, it, (sl)\fnref{fn:it-sl}, sc, si \\
+% & n, it, (sl)\fnref{fn:it-sl}, sc, si\\
% Palatino (|ppl|, |pplx|, |pplj|)\footnote{Aliases: \pkg{pxfonts} (|pxr|),
% \pkg{qfonts}/QuasiPalatino, \TeX\ Gyre Pagella (|qpl|),
% <FPL> Neu (|fp9x|, |fp9j|)}
@@ -1757,11 +1850,12 @@
% & <U>/<OT1>
% & n, it \\
%\bottomrule
-%\end{tabular*}
-%\end{minipage}
+%\end{tabular*}^^A
+%\end{minipage}^^A
+%}\kern-\dimexpr\fboxsep+\fboxrule\relax ^^A end \fcolorbox
%\end{table}
%
-%\bigskip
+%\medskip
%\Describe{Macro}{\DeclareMicrotypeVariants}{list of suffixes}
%\DescribeMacro{\DeclareMicrotypeVariants*}
% On its search for a configuration file, the package will also try to remove
@@ -1776,7 +1870,7 @@
%\DeclareMicrotypeVariants{x,j,w,a,d,0,1}
%\end{verbatim}
%
-%\bigskip
+%\medskip
%\Describe{Macro}{\DeclareMicrotypeAlias}{font name,alias font}
% This command may be used for fonts that are very similar, or actually the
% same (for instance if you did not stick to the Berry naming scheme when
@@ -1790,7 +1884,7 @@
% not find settings for it, also try the font |cmr|. In fact, you will find
% this very line, along with some others, in the default configuration file.
%
-%\bigskip
+%\medskip
%\Describe{Macro}{\LoadMicrotypeFile}{font name}
% In rare cases, it might be necessary to load a font configuration file
% manually, for instance, from within another configuration file, or to be able
@@ -1808,7 +1902,7 @@
% settings to the fonts depending on the context they occur in. This opens up
% the space for infinite possibilities of tweaking the document's appearance.
%
-%\bigskip
+%\medskip
%\Describe{Macro}{\microtypecontext}{context assignments}
% This command may be used anywhere in the document (also in the preamble) to
% change the micro-typographic context. To each feature (\key{protrusion},
@@ -1816,15 +1910,15 @@
% context may be assigned. Consequently, only settings with the corresponding
% `|context|' keyword will be applied.
%
-%\bigskip
+%\medskip
%\Describe{Macro}{\textmicrotypecontext}{context assignments,general text}
% The alternative command \cs{textmicrotypecontext} sets the context(s) for the
% text given in the second argument.
%
%\changes{v1.9c}{2006/01/25}{add example of how to increase protrusion of footnote markers
% (suggested by \contributor Georg Verweyen <verweyen\at gmail.com>)}
-% ^^A private mail, 25/01/2006
-%\bigskip\noindent
+% ^^A private mail, 2006/01/25
+%\medskip\noindent
% Suppose you want the footnote markers in the text to be protruded by a larger
% amount. You could define settings for the numbers:
%\begin{verbatim}
@@ -1854,7 +1948,7 @@
%\end{verbatim}
% ^^A For other classes, the command would have to be changed in a similar way.
%
-%\bigskip\noindent
+%\medskip\noindent
% Another possibility would be to employ contexts for a language-dependent
% setup. For instance, if you are writing a text in French, you could add:
%\begin{verbatim}
@@ -1873,7 +1967,7 @@
% \microtype\ with the \opt{babel} option. The current language will then be
% automatically detected and the contexts set accordingly.
%
-%\bigskip
+%\medskip
%\Describe{Macro}{\DeclareMicrotypeBabelHook}
% {list of \pkg{babel} languages,context list}
% Naturally, \microtype\ does not know about the typographic specialties of
@@ -1887,8 +1981,8 @@
%\end{verbatim}
% Consequently, whenever you switch to the French language, the kerning context
% will be changed to `|french|' and the spacing context will be reset. This
-% hook only has an effect if the package has been loaded with the \opt{babel}
-% option (see section~\ref{sub:options-misc}).
+% hook only has an effect if the package was loaded with the \opt{babel} option
+% (see section~\ref{sub:options-misc}).
% Currently, \microtype\ supports French and Turkish kerning and English
% spacing (aka. \cmd\nonfrenchspacing). For unknown languages, all contexts
% will be reset.
@@ -1902,24 +1996,24 @@
% While the \opt{tracking} feature, described in section~\ref{sub:tracking},
% will apply to sets of fonts, you may also want to letterspace shorter pieces
% of text, regardless of the font in which they are typeset.\footnote{
-% Letterspacing should be used cautiously. Renowned typographers have
-% compared letterspacing lower-case text to stealing sheep (a capital offence
-% in Britain in the 19th century). Unless you know what you are doing, you
-% should probably only letterspace small-capitals or all-capitals. Another
-% just cause may be emphasis in texts typeset in Fraktur fonts.}
+% Letterspacing should be used cautiously; in particular, letterspacing
+% lower-case text is held in abhorrence by honourable typographers. Unless
+% you know what you are doing, you should probably only letterspace
+% small-capitals or all-capitals. Another just cause may be emphasis in texts
+% typeset in Fraktur fonts.}
% For such ad-hoc letterspacing, \microtype\ introduces two commands that can
% be used in the same way as \LaTeX's text commands (independently of whether
% the |tracking| option is enabled): \cs{textls} expects the text in the
% mandatory argument, while \cs{lsstyle} will switch on letterspacing for all
% subsequent fonts until the end of the current group. The starred version of
-% \cs{textls} does not add any extra space before or after the text, which may
-% be useful, \eg, for section titles. By default, each character will be spaced
-% out by 100/1000em (0.05em on each side); this amount may be altered in the
+% \cs{textls} does not add any extra kerning before or after the text, which
+% may be useful, \eg, for section titles. By default, each character will be
+% spaced out by 100/1000em\,=\,0.1em; this amount may be altered in the
% optional argument to \cs{textls}, using the \cs{SetTracking} command, or
% globally with the \opt{letterspace} package option, with decreasing
% significance in this order.
%
-%\bigskip
+%\medskip
%\Describe{Macro}{\lslig}{ligature}
% Since the commands \cs{textls} and \cs{lsstyle} will also evaluate the
% `\texttt{no ligatures}' key for the respective font, you do not need to worry
@@ -1952,12 +2046,19 @@
%\DescribePackage{letterspace}
% These three commands (plus the \opt{letterspace} option, described in
% section~\ref{sub:option-tracking}) are also available with the
-% \pkg{letterspace} package, which is in fact a much stripped-down version of
-% \microtype, omitting support for all the other extensions (also omitting the
-% possibilities of the \cs{SetTracking} command -- all `|f|' ligatures will be
-% disabled). If you prefer to forgo \microtype's specialties, you may load the
-% \pkg{letterspace} package instead. Both packages should not be used at the
-% same time.
+% \letterspace\ package, which is in fact a much stripped-down version of
+% \microtype, omitting support for all the other extensions (and also omitting
+% the possibilities of the \cs{SetTracking} command -- all `|f|' ligatures will
+% be disabled). If you prefer to forgo \microtype's specialties, you may load
+% the \letterspace\ package instead. Both packages should not be used at
+% 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
+% \cmd\beginpackages~\dots\ \cmd\endpackages\ environment; with \pkg{miniltx},
+% simply \cmd\input\ \file{letterspace.sty} (\pkg{miniltx} does not support
+% package options).
%
%
%\section{Disabling Ligatures}\label{sec:disable-ligatures}
@@ -2076,13 +2177,13 @@
%\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 \pkg{pdfcprot}). However, life isn't perfect, so problems
-% are to be expected. Currently, I am only aware of the following issue:
+% 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:
%\begin{itemize}
% \item If you want to use 8-bit characters in the configuration, you have to
% load the \pkg{inputenc} package first. Unicode input is also supported
-% (when loading \pkg{inputenc} with the |utf8| option, however,
-% \emph{not} with the |utf8x| option resp. the \pkg{ucs} package). If
+% (when loading \pkg{inputenc} with the |utf8| or the |utf8x| option). If
% your document includes multiple input encodings, 8-bit characters in
% the settings will not work reliably unless you specify the |inputenc|
% key.
@@ -2105,6 +2206,7 @@
% 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}
@@ -2252,10 +2354,11 @@
% \contributor Michalis Miatidis <miatidis\at informatik.rwth-aachen.de>,
% \contributor Sven Naumann <svenau\at gmx.net>,
% \contributor Ross Hetherington <ross\at heth.eclipse.co.uk>,
-% \contributor Geoff Vallis <gkv\at Princeton.EDU>
+% \contributor Geoff Vallis <gkv\at Princeton.EDU>,
+% \contributor Steven~E. Harris <seh\at panix.com>,
+% \contributor Karl Berry <karl\at freefriends.org>
% and
-% \contributor Steven~E. Harris <seh\at panix.com>.
-%
+% \contributor Peter Meier <Peter.Meier998\at gmx.de>.
%
%\begin{thebibliography}{}
% \bibitem[Th\`anh 2000]{ThanhThesis}
@@ -2347,58 +2450,70 @@
% \global\expandafter\def\csname MTversiondate#1\endcsname{#2}}
%
%\begin{History}
-%\Version{2.2}{\filedate}
+%\Version{2.3}{\filedate}
+% \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}
+% [section~\ref{sec:lettersp}]
+%
+%\Version{2.2}{2007/07/14}
% \item Improvements to tracking/letterspacing: retain kerning (with \pdftex\ 1.40.4);
% automatically adjust protrusion settings
-% \item New key `\texttt{no ligatures}' for \cs{SetTracking} to disable
-% selected or all ligatures (with \pdftex\ 1.40.4) (see section~\ref{sub:tracking})
-% \item New keys `\texttt{spacing}' and `\texttt{outer spacing}' for
-% \cs{SetTracking} to customise interword spacing (see section~\ref{sub:tracking})
+% \item New key `|no ligatures|' for \cs{SetTracking} to disable selected or
+% all ligatures (with \pdftex\ 1.40.4)
+% [section~\ref{sub:tracking}]
+% \item New keys `|spacing|' and `|outer spacing|' for \cs{SetTracking} to
+% customise interword spacing
+% [section~\ref{sub:tracking}]
% \item Possibility to expand a font with different parameters (with \pdftex\ 1.40.4)
% ^^A ; new option `\opt{copyfonts}'
-% (see section~\ref{sub:expansion})
+% [section~\ref{sub:expansion}]
% \item New optional argument for \cs{DisableLigatures} to disable selected ligatures only
-% (see section~\ref{sec:disable-ligatures})
+% [section~\ref{sec:disable-ligatures}]
% \item New command \cs{DeclareMicrotypeVariants} to specify variant suffixes
-% (see section~\ref{sub:config-file})
+% [section~\ref{sub:config-file}]
% \item New command \cs{textmicrotypecontext} as a wrapper for \cs{microtypecontext}
-% (see section~\ref{sec:context})
+% [section~\ref{sec:context}]
% \item Protrusion settings for Bitstream Letter Gothic
% \item Basic support for \luatex\ (if generated with the |lua| option)
%
%\Version{2.1}{2007/01/21}
% \item New command \cs{lslig} to protect ligatures in letterspaced text
-% (see section~\ref{sec:lettersp})
+% [section~\ref{sec:lettersp}]
%
%\Version{2.0}{2007/01/14}
% \item Support for the new extensions of \pdftex\ version 1.40:
% tracking/letterspacing, adjustment of interword spacing (glue),
% and additional kerning
% (new commands \cs{SetTracking}, \cs{SetExtraSpacing}, \cs{SetExtraKerning};
-% new options `\opt{tracking}', `\opt{spacing}', `\opt{kerning}';
-% see sections~\ref{sub:tracking}, \ref{sub:interword-spacing} and~\ref{sub:kerning})
+% new options `\opt{tracking}', `\opt{spacing}', `\opt{kerning}')
+% [sections~\ref{sub:tracking}, \ref{sub:interword-spacing}, \ref{sub:kerning}]
% \item New commands \cs{textls} and \cs{lsstyle} for letterspacing,
% new option `\opt{letterspace}'
-% (see sections~\ref{sub:option-tracking} and~\ref{sec:lettersp})
+% [sections~\ref{sub:option-tracking}, \ref{sec:lettersp}]
% \item New option `\opt{babel}' for automatic micro-typographic adjustment to
% the selected language
-% (see sections~\ref{sub:options-misc} and~\ref{sec:context})
+% [sections~\ref{sub:options-misc}, \ref{sec:context}]
% \item New font sets: `|smallcaps|', `|footnotesize|', `|scriptsize|'
-% (see section~\ref{sec:font-sets} and table~\ref{tab:predefined-font-sets})
-% \item New package `\pkg{letterspace}' providing the commands for robust and
+% [section~\ref{sec:font-sets}; table~\ref{tab:predefined-font-sets}]
+% \item New package `\letterspace' providing the commands for robust and
% hyphenatable letterspacing
+% [section~\ref{sec:lettersp}]
%
%\VersionDate{1.9f}{2006/09/09}
%
%\Version{1.9e}{2006/07/28}
% \item New key `|inputenc|' to specify the lists' input encodings
-% (see section~\ref{sec:fine-tuning})
+% [section~\ref{sec:fine-tuning}]
% \item Protrusion settings for Euler math fonts
%
%\Version{1.9d}{2006/05/05}
-% \item Support for the Central European <QX> encoding (inheritance,
-% generic protrusion settings, contributed by Maciej Eder;
-% protrusion settings for Times)
+% \item Support for the Central European <QX> encoding
+% (inheritance, generic protrusion settings, contributed by Maciej Eder;
+% protrusion settings for Times)
% \item Protrusion settings for various Euro symbol fonts (Adobe, <ITC>, \pkg{marvosym})
% \item Support for Unicode input in the configuration (\pkg{inputenc}/|utf8|)
%
@@ -2411,19 +2526,20 @@
% \item Defer setup until the end of the preamble; consequently, no need to
% change font defaults before loading \microtype, or to put it the other
% way round, \microtype\ may now be loaded at any time
+% ^^A ; new option `\opt{defersetup}'
% \item Inside the preamble, \cs{microtypesetup} accepts all package options
-% (see section~\ref{sub:options-cmd})
+% [section~\ref{sub:options-cmd}]
% \item Protrusion settings for <T5> encoded Charter
%
%\Version{1.9}{2005/10/28}
% \item New command \cs{DisableLigatures} to disable ligatures of fonts
-% (requires \pdftex\ version 1.30 or later;
-% see section~\ref{sec:disable-ligatures})
+% (requires \pdftex\ version 1.30 or later)
+% [section~\ref{sec:disable-ligatures}]
% \item New command \cs{microtypecontext} to change the configuration context;
% new key `|context|' for the configuration commands
-% (see section~\ref{sec:context})
+% [section~\ref{sec:context}]
% \item New key `|font|' to add single fonts to the font sets
-% (see section~\ref{sec:font-sets})
+% [section~\ref{sec:font-sets}]
% \item New key `|preset|' to set all characters to the specified value before
% loading the lists
% \item Value `|relative|' renamed to `|character|' for `|unit|' keys
@@ -2432,15 +2548,15 @@
% \item `\opt{DVIoutput}' option will work with \TeX Live 2004
%
%\Version{1.8}{2005/06/23}
-% \item If font substitution has occurred, the settings for the substitute will
-% be used instead of those for the selected font
-% \item New command \cs{DeclareMicrotypeSetDefault} to declare the default font
-% sets (see section~\ref{sec:font-sets})
+%^^A \item If font substitution has occurred, the settings for the substitute will
+%^^A be used instead of those for the selected font
+% \item New command \cs{DeclareMicrotypeSetDefault} to declare the default font sets
+% [section~\ref{sec:font-sets}]
% \item New option `\opt{config}' to load a different configuration file
-% (see section~\ref{sub:options-misc})
+% [section~\ref{sub:options-misc}]
% \item New option `\opt{unit}' to measure protrusion factors relative to a
% dimension instead of the character width
-% (see section~\ref{sub:protrusion})
+% [section~\ref{sub:protrusion}]
% \item Renamed commands from \cs{..MicroType..} to \cs{..Microtype..}
% \item Protrusion settings for <AMS> math fonts
% \item Protrusion settings for Times in <LY1> encoding completed
@@ -2453,13 +2569,14 @@
%\Version{1.7}{2005/03/23}
% \item Possibility to specify ranges of font sizes in the set declarations
% and protrusion and expansion settings
-% (see sections~\ref{sec:font-sets} and~\ref{sec:fine-tuning})
-% \item Always take font size into account when trying to find protrusion resp.
-% expansion settings for a given font
-% (see section~\ref{sec:fine-tuning})
-% \item New command \cs{LoadMicrotypeFile} to load a font configuration file
-% manually (see section~\ref{sub:config-file})
-% \item Hook \cs{Microtype@Hook} for font package authors (see section~\ref{sub:hook})
+% [sections~\ref{sec:font-sets}, \ref{sec:fine-tuning}]
+%^^A \item Always take font size into account when trying to find protrusion resp.
+%^^A expansion settings for a given font
+%^^A [section~\ref{sec:fine-tuning}]
+% \item New command \cs{LoadMicrotypeFile} to load a font configuration file manually
+% [section~\ref{sub:config-file}]
+% \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
% \item Warning when running in draft mode
@@ -2469,27 +2586,27 @@
%\Version{1.6}{2005/01/24}
% \item New option `\opt{factor}' to influence protrusion resp. expansion of
% all characters of a font or font set
-% (see sections~\ref{sub:options-protrusion} and~\ref{sec:fine-tuning})
+% [sections~\ref{sub:options-protrusion}, \ref{sec:fine-tuning}]
% \item When \pdftex\ is too old to expand fonts automatically, expansion
% has to be enabled explicitly, automatic expansion will be disabled
-% (see section~\ref{sub:options-microtype})
+% [section~\ref{sub:options-microtype}]
% \item Protrusion settings of digits improved
% \item Use \etex\ extensions, if available
%
%\Version{1.5}{2004/12/15}
% \item When output mode is <DVI>, font expansion has to be enabled explicitly,
% automatic expansion will be disabled
-% (see section~\ref{sub:options-microtype})
-% \item New option `\opt{selected}' to enable selected expansion
-% (see sections~\ref{sub:options-expansion} and \ref{sub:expansion});
-% default is: |false|
+% [section~\ref{sub:options-microtype}]
+% \item New option `\opt{selected}' to enable selected expansion,
+% default: |false|
+% [sections~\ref{sub:options-expansion}, \ref{sub:expansion}]
% \item New default for expansion option `\opt{step}': 4 (min(\opt{stretch},\opt{shrink})/5)
-% (see section~\ref{sub:options-expansion})
+% [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
-% (see section~\ref{sec:font-sets})
+% [section~\ref{sec:font-sets}]
%
%\VersionDate{1.4a}{2004/11/17}
%
@@ -2497,28 +2614,29 @@
% \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)
-% \item \cs{microtypesetup} now sets the correct level of protrusion
-% (see chapter~\ref{sub:options-cmd})
+%^^A \item \cs{microtypesetup} now sets the correct level of protrusion
+%^^A [section~\ref{sub:options-cmd}]
% \item New option: `\opt{final}'
+% [section~\ref{sub:options-misc}]
%
%\VersionDate{1.3}{2004/10/27}
%
%\Version{1.2}{2004/10/03}
% \item New font sets: `|allmath|' and `|basicmath|'
-% (see section~\ref{sec:font-sets} and table~\ref{tab:predefined-font-sets})
+% [section~\ref{sec:font-sets}; table~\ref{tab:predefined-font-sets}]
% \item Protrusion settings for Computer Modern Roman math symbols
% \item Protrusion settings for <TS1> encoding completed for Computer Modern
% Roman and Adobe Garamond
-% \item If an alias font name is specified, it will be used as an alternative,
-% not as a replacement (see section~\ref{sub:config-file})
+%^^A \item If an alias font name is specified, it will be used as an alternative,
+%^^A not as a replacement [section~\ref{sub:config-file}]
%
%\Version{1.1}{2004/09/21}
% \item Protrusion settings for Adobe Minion, contributed by Harald Harders
% \item New command: \cs{DeclareCharacterInheritance}
-% (see section~\ref{sub:inherit})
+% [section~\ref{sub:inherit}]
% \item Characters may also be specified as octal or hexadecimal numbers
-% (see section~\ref{sec:fine-tuning})
-% \item Configuration file names in lowercase (see section~\ref{sub:config-file})
+% [section~\ref{sec:fine-tuning}]
+%^^A \item Configuration file names in lowercase [section~\ref{sub:config-file}]
%
%\Version{1.0}{2004/09/11}
% \item First <CTAN> release
@@ -2591,13 +2709,14 @@
%
%\DoNotIndex{\!,\",\',\(,\),\*,\+,\,,\-,\.,\/,\:,\;,\<,\=,\>,\?,\[,\\,\],\`,
% \#,\$,\&,\^,\_,\|,\~,\ ,
-% \advance,\afterassignment,\aftergroup,\begingroup,\catcode,\char,\chardef,
-% \csname,\def,\divide,\edef,\egroup,\else,\endcsname,\endgroup,\endinput,
-% \escapechar,\expandafter,\fi,\futurelet,\gdef,\global,\hbox,\hskip,\if,
-% \ifcase,\ifcat,\ifdim,\iffalse,\ifhbox,\ifnum,\iftrue,\ifx,\input,\inputlineno,
-% \jobname,\kern,\lastskip,\let,\lowercase,\meaning,\multiply,\newcount,
-% \newdimen,\newif,\newskip,\newtoks,\noexpand,\number,\or,\relax,\setbox,
-% \space,\string,\the,\unkern,\unskip,\uppercase,\wd,\xdef}
+% \advance,\afterassignment,\aftergroup,\begingroup,\bgroup,\catcode,\char,
+% \chardef,\csname,\def,\divide,\edef,\egroup,\else,\endcsname,\endgroup,
+% \endinput,\escapechar,\expandafter,\fi,\futurelet,\gdef,\global,\hbox,
+% \hskip,\if,\ifcase,\ifcat,\ifdim,\iffalse,\ifhbox,\ifhmode,\ifnum,\iftrue,
+% \ifx,\immediate,\input,\inputlineno,\jobname,\kern,\lastskip,\let,\lowercase,
+% \meaning,\multiply,\newcount,\newdimen,\newif,\newlinechar,\newskip,\newtoks,
+% \noexpand,\number,\or,\relax,\setbox,\space,\string,\the,\unkern,\unskip,
+% \uppercase,\wd,\write,\xdef}
%^^A\DoNotIndex{\font,\fontdimen,\nullfont,\sfcode} ^^A tex
%\DoNotIndex{\detokenize,\dimexpr,\eTeXversion,\ifcsname,\ifdefined,\numexpr}
%^^A\DoNotIndex{\fontcharwd,\iffontchar} ^^A e-tex
@@ -2607,18 +2726,22 @@
%^^A \letterspacefont,\pdfadjustinterwordglue,\pdfadjustspacing,\pdfappendkern,
%^^A \pdffontexpand,\pdfnoligatures,\pdfprependkern,\pdfprotrudechars,\tagcode}^^A pdftex
%\DoNotIndex{\directlua,\luaescapestring} ^^A luatex
-%\DoNotIndex{\@backslashchar,\@cclv,\@cclvi,\@classoptionslist,\@currext,\@currname,
-% \@defaultunits,\@empty,\@expandtwoargs,\@firstofone,\@firstoftwo,\@gobble,
-% \@gobbletwo,\@ifl@aded,\@ifpackagelater,\@ifpackageloaded,\@ifstar,\@ifundefined,
-% \@let@token,\@m,\@makeother,\@minus,\@nameuse,\@ne,\@nil,\@nnil,\@onelevel@sanitize,
-% \@onlypreamble,\@percentchar,\@pkgextension,\@plus,\@ptionlist,\@removeelement,
-% \@secondoftwo,\@spaces,\@sptoken,\@tempa,\@tempb,\@tempc,\@tempcnta,\@tempcntb,
-% \@tempdima,\@undefined,\@unprocessedoptions,\@unusedoptionlist,\@xobeysp,\check@icr,
-% \g@addto@macro,\hmode@bgroup,\m@ne,\maybe@ic,\maybe@ic@,\on@line,\p@,\set@display@protect,
-% \strip@prefix,\strip@pt,\tw@,\z@,\zap@space,\active,\leavevmode,\makeatletter,\newcommand,
-% \nobreak,\nonfrenchspacing,\normalsize,\renewcommand,\AtBeginDocument,\AtEndOfPackage,
-% \CheckCommand,\CurrentOption,\DeclareRobustCommand,\IfFileExists,\InputIfFileExists,
-% \MessageBreak,\PackageError,\PackageInfo,\PackageWarning,\RequirePackage}
+%\DoNotIndex{\eplain,\usepkg@pkg} ^^A eplain
+%\DoNotIndex{\@backslashchar,\@cclv,\@cclvi,\@classoptionslist,\@currext,
+% \@currname,\@defaultunits,\@empty,\@expandtwoargs,\@firstofone,\@firstoftwo,
+% \@gobble,\@gobbletwo,\@ifl@aded,\@ifpackagelater,\@ifpackageloaded,\@ifstar,
+% \@ifundefined,\@let@token,\@m,\@makeother,\@minus,\@nameuse,\@ne,\@nil,\@nnil,
+% \@onelevel@sanitize,\@onlypreamble,\@percentchar,\@pkgextension,\@plus,
+% \@ptionlist,\@removeelement,\@secondoftwo,\@spaces,\@sptoken,\@tempa,\@tempb,
+% \@tempc,\@tempcnta,\@tempcntb,\@tempdima,\@typeset@protect,\@undefined,
+% \@unprocessedoptions,\@unusedoptionlist,\@warning,\@xobeysp,\check@icr,
+% \g@addto@macro,\hmode@bgroup,\m@ne,\maybe@ic,\maybe@ic@,\on@line,\p@,
+% \set@display@protect,\strip@prefix,\strip@pt,\tw@,\z@,\zap@space,
+% \active,\documentclass,\leavevmode,\makeatletter,\newcommand,\nobreak,
+% \nonfrenchspacing,\normalsize,\renewcommand,\AtBeginDocument,\AtEndOfPackage,
+% \CheckCommand,\CurrentOption,\DeclareRobustCommand,\IfFileExists,
+% \InputIfFileExists,\MessageBreak,\PackageError,\PackageInfo,\PackageWarning,
+% \RequirePackage}
%^^A\DoNotIndex{\@@enc@update,\add@accent,\cf@encoding,\curr@fontshape,
%^^A \define@newfont,\do@subst@correction,\f@encoding,\f@size,\font@name,
%^^A \normalfont,\pickup@font,\selectfont,\set@fontsize} ^^A latex
@@ -2630,6 +2753,7 @@
%\DoNotIndex{\pdfstringdefDisableCommands,\pdfstringdefWarn} ^^A hyperref
%\DoNotIndex{\@inpenc@undefined@,\IeC,\inputencoding,\inputencodingname} ^^A inputenc
%\DoNotIndex{\UTFviii@defined} ^^A inputenc/utf8
+%\DoNotIndex{\PrerenderUnicode,\unicode@charfilter} ^^A inputenc/utf8x
%\DoNotIndex{\define@key,\KV@@sp@def,\setkeys} ^^A keyval
%\DoNotIndex{\l@dunhbox@line} ^^A ledmac,ledpar
%\DoNotIndex{\lst@ProcessLetter} ^^A listings
@@ -2638,10 +2762,11 @@
%\DoNotIndex{\conditionally@traceoff} ^^A trace
%\DoNotIndex{\color@begingroup,\color@endgroup,\everypar,\hbadness,\hsize,\maxdimen,
% \parfillskip,\pretolerance,\showboxdepth,\tolerance,\vbox,\z@skip} ^^A \showhyphens
-%\DoNotIndex{\x,\y,\C,\H,\A,\R,\X,\MT@dinfo,\MT@dinfo@nl,\tracingmicrotype,\tracingmicrotypeinpdf,
-% \iftracingmicrotypeinpdfall,\tracingmicrotypeinpdfalltrue,\tracingmicrotypeinpdfallfalse,
-% \MT@pdf@annot,\ifMT@inannot,\MT@inannottrue,\MT@inannotfalse,\MT@addto@annot,\MT@show@pdfannot,
-% \DeclareMicroTypeSet,\DeclareMicroTypeAlias,\LoadMicroTypeFile,\MicroType@Hook,\UseMicroTypeSet} ^^A microtype
+%\DoNotIndex{\x,\y,\C,\H,\A,\R,\X,\MT@dinfo,\MT@dinfo@nl,\tracingmicrotype,
+% \tracingmicrotypeinpdf,\iftracingmicrotypeinpdfall,\tracingmicrotypeinpdfalltrue,
+% \tracingmicrotypeinpdfallfalse,\MT@pdf@annot,\ifMT@inannot,\MT@inannottrue,
+% \MT@inannotfalse,\MT@addto@annot,\MT@show@pdfannot,\DeclareMicroTypeSet,
+% \DeclareMicroTypeAlias,\LoadMicroTypeFile,\MicroType@Hook,\UseMicroTypeSet} ^^A microtype
%
% ^^A -------------------------------------------------------------------------
%
@@ -2652,61 +2777,69 @@
%\section{Implementation}
%
% The \pkg{docstrip} modules in this file are:
-% \begin{description}
-% \item[|driver|] The documentation driver, only visible in the \file{dtx} file.
-% \item[|package|] The code for the \microtype\ package (\file{microtype.sty}).
-% \begin{description}
-% \item[|debug|] Code for additional output in the log file.\\
-% Used for -- surprise! -- debugging purposes.
-% \item[|lua|] Code for \luatex\ (by default disabled)
-% \item[|letterspace|] The code for the \pkg{letterspace} package
-% (\file{letterspace.sty}).
-% \end{description}
-% \item[|config|] Surrounds all configuration modules.
-% \begin{description}
-% \item[|cfg-t|] Surrounds (Latin) text configurations.
-% \begin{description}
-% \item[|m-t|] The main configuration file (\file{microtype.cfg}).
-% \item[|bch|] Settings for Bitstream Charter (\file{mt-bch.cfg}).
-% \item[|blg|] Settings for Bitstream Letter Gothic (\file{mt-blg.cfg}).
-% \item[|cmr|] Settings for Computer Modern Roman (\file{mt-cmr.cfg}).
-% \item[|pad|] Settings for Adobe Garamond (\file{mt-pad.cfg}).
-% \item[|ppl|] Settings for Palatino (\file{mt-ppl.cfg}).
-% \item[|ptm|] Settings for Times (\file{mt-ptm.cfg}).
-% \item[|pmn|] Settings for Adobe Minion (\file{mt-pmn.cfg}).\\
-% Contributed by \contributor Harald Harders <h.harders\at tu-bs.de>.
-% \item[|ugm|] Settings for <URW> Garamond (\file{mt-ugm.cfg}).
-% \end{description}
-% \item[|cfg-u|] Surrounds non-text configurations (<U> encoding).
-% \begin{description}
-% \item[|msa|] Settings for <AMS> `a' symbol font (\file{mt-msa.cfg}).
-% \item[|msb|] Settings for <AMS> `b' symbol font (\file{mt-msb.cfg}).
-% \item[|euf|] Settings for Euler Fraktur font (\file{mt-euf.cfg}).
-% \item[|eur|] Settings for Euler Roman font (\file{mt-eur.cfg}).
-% \item[|eus|] Settings for Euler Script font (\file{mt-eus.cfg}).
-% \end{description}
-% \item[|cfg-e|] Surrounds Euro symbol configurations.
-% \begin{description}
-% \item[|zpeu|] Settings for Adobe Euro symbol fonts (\file{mt-zpeu.cfg}).
-% \item[|euroitc|] Settings for <ITC> Euro symbol fonts (\file{mt-euroitc.cfg}).
-% \item[|mvs|] Settings for \pkg{marvosym} Euro symbol (\file{mt-mvs.cfg}).
-% \end{description}
-% \end{description}
-% \item[|test|] A helper file that may be used to create and test
-% protrusion settings (\file{test-microtype.tex}).
-% \end{description}
+% \begin{itemize}
+% \item[|driver|:] The documentation driver, only visible in the \file{dtx} file.
+% \item[|package|:] The code for the \microtype\ package (\file{microtype.sty}).
+% \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[|debug|:] Code for additional output in the log file.
+% \\Used for -- surprise! -- debugging purposes.
+% \end{itemize}
+% \item[|config|:] Surrounds all configuration modules.
+% \begin{itemize}
+% \item[|cfg-t|:] Surrounds (Latin) text configurations.
+% \begin{itemize}
+% \item[|m-t|:] The main configuration file (\file{microtype.cfg}).
+% \item[|bch|:] Settings for Bitstream Charter (\file{mt-bch.cfg}).
+% \item[|blg|:] Settings for Bitstream Letter Gothic (\file{mt-blg.cfg}).
+% \item[|cmr|:] Settings for Computer Modern Roman (\file{mt-cmr.cfg}).
+% \item[|pad|:] Settings for Adobe Garamond (\file{mt-pad.cfg}).
+% \item[|ppl|:] Settings for Palatino (\file{mt-ppl.cfg}).
+% \item[|ptm|:] Settings for Times (\file{mt-ptm.cfg}).
+% \item[|pmn|:] Settings for Adobe Minion (\file{mt-pmn.cfg}).
+% \\Contributed by \contributor Harald Harders <h.harders\at tu-bs.de>.
+% \item[|ugm|:] Settings for <URW> Garamond (\file{mt-ugm.cfg}).
+% \end{itemize}
+% \item[|cfg-u|:] Surrounds non-text configurations (<U> encoding).
+% \begin{itemize}
+% \item[|msa|:] Settings for <AMS> `a' symbol font (\file{mt-msa.cfg}).
+% \item[|msb|:] Settings for <AMS> `b' symbol font (\file{mt-msb.cfg}).
+% \item[|euf|:] Settings for Euler Fraktur font (\file{mt-euf.cfg}).
+% \item[|eur|:] Settings for Euler Roman font (\file{mt-eur.cfg}).
+% \item[|eus|:] Settings for Euler Script font (\file{mt-eus.cfg}).
+% \end{itemize}
+% \item[|cfg-e|:] Surrounds Euro symbol configurations.
+% \begin{itemize}
+% \item[|zpeu|:] Settings for Adobe Euro symbol fonts (\file{mt-zpeu.cfg}).
+% \item[|euroitc|:] Settings for <ITC> Euro symbol fonts (\file{mt-euroitc.cfg}).
+% \item[|mvs|:] Settings for \pkg{marvosym} Euro symbol (\file{mt-mvs.cfg}).
+% \end{itemize}
+% \end{itemize}
+% \item[|test|:] A helper file that may be used to create and test
+% protrusion settings\\(\file{test-microtype.tex}).
+% \end{itemize}
% And now for something completely different.
%
% \begin{macrocode}
%<*package|letterspace>
-%<*package>
% \end{macrocode}
%
%\subsection{Preliminaries}
%
+%\begin{macro}{\MT@MT}
+% This is us.
+% \begin{macrocode}
+\def\MT@MT
+%<package> {microtype}
+%<letterspace> {letterspace}
+% \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}
+%<*package>
\newcommand*\DeclareMicrotypeSet[3][]{}
\newcommand*\UseMicrotypeSet[2][]{}
\newcommand*\DeclareMicrotypeSetDefault[2][]{}
@@ -2768,23 +2901,15 @@
\MT@old@cmd\LoadMicroTypeFile \LoadMicrotypeFile
%</package>
% \end{macrocode}
-%\begin{macro}{\MT@MT}
-% This is us.
-% \begin{macrocode}
-\def\MT@MT
-%<package> {microtype}
-%<letterspace> {letterspace}
-% \end{macrocode}
-%\end{macro}
+%\begin{macro}{\MT@warning}
+%\begin{macro}{\MT@warning@nl}
%\begin{macro}{\MT@info}
%\begin{macro}{\MT@info@nl}
%\begin{macro}{\MT@vinfo}
%\changes{v1.6}{2005/01/06}{new macro: used instead of \cs{ifMT@verbose}}
-%\begin{macro}{\MT@warning}
-%\begin{macro}{\MT@warning@nl}
+%\begin{macro}{\MT@error}
%\begin{macro}{\MT@warn@err}
%\changes{v1.7}{2005/03/16}{new macro: for \opt{verbose}\texttt{\quotechar=errors}}
-%\begin{macro}{\MT@error}
% Communicate.
% \begin{macrocode}
\def\MT@warning{\PackageWarning\MT@MT}
@@ -2793,11 +2918,11 @@
\def\MT@info{\PackageInfo\MT@MT}
\def\MT@info@nl#1{\MT@info{#1\@gobble}}
\let\MT@vinfo\@gobble
+\def\MT@error{\PackageError\MT@MT}
\def\MT@warn@err#1{\MT@error{#1}{%
This error message appears because you loaded the `\MT@MT'\MessageBreak
package with the option `verbose=errors'. Consult the documentation\MessageBreak
in \MT@MT.pdf to find out what went wrong.}}
-\def\MT@error{\PackageError\MT@MT}
% \end{macrocode}
%\end{macro}
%\end{macro}
@@ -2825,11 +2950,11 @@
\MT@warning@nl{This is the debug version}
\newcount\tracingmicrotype
\tracingmicrotype=2
-\def\MT@info#1{\PackageInfo\MT@MT{#1}\MT@addto@annot{#1}}%
-\def\MT@info@nl#1{\PackageInfo\MT@MT{#1\@gobble}\MT@addto@annot{#1}}%
+\def\MT@info#1{\PackageInfo\MT@MT{#1}\MT@addto@annot{#1}}
+\def\MT@info@nl#1{\PackageInfo\MT@MT{#1\@gobble}\MT@addto@annot{#1}}
\let\MT@vinfo\MT@info@nl
-\def\MT@warning#1{\PackageWarning\MT@MT{#1}\MT@addto@annot{Warning: #1}}%
-\def\MT@warning@nl#1{\PackageWarning\MT@MT{#1\@gobble}\MT@addto@annot{Warning: #1}}%
+\def\MT@warning#1{\PackageWarning\MT@MT{#1}\MT@addto@annot{Warning: #1}}
+\def\MT@warning@nl#1{\PackageWarning\MT@MT{#1\@gobble}\MT@addto@annot{Warning: #1}}
\def\MT@dinfo#1#2{\ifnum\tracingmicrotype<#1 \else\MT@info{#2}\fi}
\def\MT@dinfo@nl#1#2{\ifnum\tracingmicrotype<#1 \else\MT@info@nl{#2}\fi}
% \end{macrocode}
@@ -2851,15 +2976,15 @@
% \end{macrocode}
%\end{macro}
%\ifpdf\ifx\tracingmicrotypeinpdf\undefined
-% [If \file{microtype.sty} had been generated with the `|debug|' option, this
-% method would be demonstrated here.]
+% {\centering\itshape
+% [If \file{microtype.sty} had been generated with the `|debug|' option,\\
+% this method would be demonstrated here.]\par}
%\else
% Let's see how it works~\dots
%\begin{verbatim}
%\tracingmicrotypeinpdf=2
%\end{verbatim}
-% \tracingmicrotypeinpdf2
-% \tracingmicrotype0
+%\tracingmicrotypeinpdf=2
%\fi\fi
%\begin{macro}{\MT@pdf@annot}
%\begin{macro}{\MT@addto@annot}
@@ -2878,19 +3003,20 @@
%\end{macro}
%\begin{macro}{\iftracingmicrotypeinpdfall}
% With \cs{tracingmicrotypeinpdfallfalse}, the <PDF> output is (hopefully)
-% identical, but some font switches are not displayed; otherwise the output
-% is affected, but \emph{all} font switches are visible. In the latter
-% case, we also insert a small kern so that multiple font switches are
-% discernable.
+% identical, but some font switches will not be displayed; otherwise the output
+% is affected, but \emph{all} font switches are visible. In the latter case, we
+% also insert a small kern so that multiple font switches are discernable.
% \begin{macrocode}
\newif\iftracingmicrotypeinpdfall
% \end{macrocode}
%\end{macro}
%\begin{macro}{\MT@show@pdfannot}
-% A red caret is shown for fonts which are actually set up, a green one marks
-% fonts that have already been seen. The |/Caret| annotation requires a viewer
-% for <PDF> version 1.5 (you could use |/Text| if you're using an older <PDF>
-% viewer).
+% A red caret is shown for fonts which are actually set up by
+% {\ifpdf\ifx\tracingmicrotypeinpdf\undefined\else\fontfamily{pzc}\itshape\fi\fi
+% Microtype},
+% a green one marks fonts that we have already seen. The |/Caret| annotation
+% requires a viewer for <PDF> version 1.5 (you could use |/Text| if you're
+% using an older <PDF> viewer).
% \begin{macrocode}
\def\MT@show@pdfannot#1{%
\ifnum\tracingmicrotypeinpdf<#1 \else
@@ -2910,14 +3036,42 @@
\fi
}
%</debug>
+%</package>
% \end{macrocode}
%\end{macro}
%\ifpdf\ifx\tracingmicrotypeinpdf\undefined\else
% \tracingmicrotypeinpdf0
+% \tracingmicrotype0
%\fi\fi
%
%\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}}
+% \begin{macrocode}
+%<*plain>
+\def\MT@plain{0}
+\ifx\documentclass\@undefined
+ \def\MT@plain{1}
+ \def\hmode@bgroup{\leavevmode\bgroup}
+ \let\@typeset@protect\relax
+ \ifx\eplain\@undefined
+ \def\MT@plain{2}
+ \def\PackageWarning#1#2{%
+ \begingroup
+ \newlinechar=10 %
+ \def\MessageBreak{^^J(#1)\@spaces\@spaces\@spaces\@spaces}%
+ \immediate\write16{^^JPackage #1 Warning: #2\on@line.^^J}%
+ \endgroup
+ }
+ \def\on@line{ on input line \the\inputlineno}
+ \def\@spaces{\space\space\space\space}
+ \fi
+\fi
+%</plain>
+% \end{macrocode}
+%\end{macro}
%\begin{macro}{\MT@pdftex@no}
%\changes{v1.6a}{2005/02/02}{new macro}
% \pdftex's features for which we provide an interface here haven't always been
@@ -2929,9 +3083,10 @@
%\begin{enum}
% \item not running \pdftex
% \item \pdftex\ (\textless\ 0.14f)
-% \item + micro-typographic extensions (0.14f, 0.14g)
+% \item + micro-typographic extensions (0.14f,g)
% \item + protrusion relative to 1em (\textgeq~0.14h)
% \item + automatic font expansion;
+% protrusion no longer has to be set up first;
% default \cmd\efcode\,=\,1000 (\textgeq~1.20)
%\changes{v1.8}{2005/04/15}{case 5: \pdftex\ 1.30}
% \item + \cmd{\(left,right)marginkern};
@@ -2942,9 +3097,9 @@
% \item + adjustment of interword spacing;
% extra kerning;
% \cmd\letterspacefont;
-% \cmd\pdftracingfonts;
% \cmd\pdfmatch\footnote{This command was actually introduced
-% in 1.30, but was still buggy then.};
+% in 1.30, but failed on strings longer than 1023 bytes.};
+% \cmd\pdftracingfonts;
% always \etex\
% (\textgeq~1.40)
%\changes{v2.2}{2007/02/23}{case 7: \pdftex\ 1.40.4}
@@ -2954,8 +3109,8 @@
%\end{enum}
%\changes{v1.1}{2004/09/13}{fix concerning version check
% (reported by \contributor Harald Harders <h.harders\at tu-bs.de>)}
+% ^^A private mail, 2004/09/13
% \begin{macrocode}
-%</package>
\def\MT@pdftex@no{0}
% \end{macrocode}
%\changes{v1.9}{2005/08/29}{compatibility with \TeX Live hack
@@ -3018,8 +3173,10 @@
% and exit here.
% \begin{macrocode}
\def\MT@clear@options{%
+%<plain> \ifnum\MT@plain<2
\AtEndOfPackage{\let\@unprocessedoptions\relax}%
\let\CurrentOption\@empty
+%<plain> \fi
}
% \end{macrocode}
%\end{macro}
@@ -3087,7 +3244,7 @@
% \end{macrocode}
% We need the \pkg{keyval} package, including the `new' \cmd\KV@@sp@def\
% implementation.
-%\changes{v2.1}{2007/01/15}{fix: \pkg{letterspace} package forgot to load \pkg{keyval}}
+%\changes{v2.1}{2007/01/15}{fix: \letterspace\ package forgot to load \pkg{keyval}}
% \begin{macrocode}
%</package>
\RequirePackage{keyval}[1997/11/10]
@@ -3309,9 +3466,9 @@
% \end{macrocode}
%\end{macro}
%\begin{macro}{\MT@lua}
-% Is zero the correct number for the |lua| state?
+% Communicate with |lua|.
% \begin{macrocode}
-\def\MT@lua{\directlua\z@}
+\def\MT@lua{\directlua0}
%</lua>
%</package>
% \end{macrocode}
@@ -3543,16 +3700,16 @@ Q \MT@exp@two@c\zap@space\strip@prefix\meaning#1 \@empty
%\changes{v1.4b}{2004/11/22}{don't set \cs{MT@count} globally (save stack problem)}
%\changes{v1.7}{2005/03/15}{comparison with 1 to allow size smaller than 1
% (suggested by \contributor Andreas B\"uhmann <andreas.buehmann\at web.de>)}
-% ^^A private mail, 15/03/2005
+% ^^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}
+%\changes{v2.2}{2007/05/10}{employ \luatex\ features if available} ^^A FIXME: fix lua expression
% \begin{macrocode}
\MT@requires@pdftex6{
%<*lua>
\MT@requires@luatex{
\def\MT@ifdimen#1{%
- \csname % fix expression!
+ \csname
\MT@lua{if (string.find("\luaescapestring{#1}","^-*[0-9]+(\@percentchar a*) *$") or
string.find("\luaescapestring{#1}","^-*[0-9]*[.,][0-9]+(\@percentchar a*) *$"))
then tex.write("@firstoftwo")
@@ -3727,19 +3884,22 @@ Q \MT@exp@two@c\zap@space\strip@prefix\meaning#1 \@empty
%^^A\changes{v1.4b}{2004/11/22}{fix: compare with \cmd\\ instead of \cmd\relax\
%^^A (discovered by \contributor Herb Schulz <herbs\at wideopenwest.com>)}
%^^A ^^A MID: <BDBFA967.C01F%herbs@wideopenwest.com>
-%\changes{v1.9a}{2005/11/03}{fix}
% Using \cmd\pdfmatch\ would be slower.
+%\changes{v1.9a}{2005/11/03}{fix}
+%\changes{v2.3}{2007/11/14}{fix: don't use \cmd\x\
+% (reported by \contributor Peter Meier <Peter.Meier998\at gmx.de>)}
+% ^^A private mail, 2007/11/12
% \begin{macrocode}
\newif\ifMT@inlist@
\def\MT@in@clist#1#2{%
- \def\x##1,#1,##2##3\@nnil{%
+ \def\MT@res@a##1,#1,##2##3\@nnil{%
\ifx##2\@empty
\MT@inlist@false
\else
\MT@inlist@true
\fi
}%
- \expandafter\x\expandafter,#2,#1,\@empty\@nnil
+ \expandafter\MT@res@a\expandafter,#2,#1,\@empty\@nnil
}
% \end{macrocode}
%\end{macro}
@@ -3753,9 +3913,9 @@ Q \MT@exp@two@c\zap@space\strip@prefix\meaning#1 \@empty
% Using \cmd\pdfmatch\ and \cmd\pdflastmatch\ here would be really slow!
% \begin{macrocode}
\def\MT@rem@from@clist#1#2{%
- \def\x##1,#1,##2\x{##1,##2\y}%
- \def\y##1,\y##2\y{\ifx,##1\@empty\else##1\fi}%
- \xdef#2{\MT@exp@two@c\y\x\expandafter,#2,\y,#1,\x}%
+ \def\MT@res@a##1,#1,##2\MT@res@a{##1,##2\MT@res@b}%
+ \def\MT@res@b##1,\MT@res@b##2\MT@res@b{\ifx,##1\@empty\else##1\fi}%
+ \xdef#2{\MT@exp@two@c\MT@res@b\MT@res@a\expandafter,#2,\MT@res@b,#1,\MT@res@a}%
}
% \end{macrocode}
%\end{macro}
@@ -3767,12 +3927,12 @@ Q \MT@exp@two@c\zap@space\strip@prefix\meaning#1 \@empty
% \begin{macrocode}
\def\MT@in@tlist#1#2{%
\MT@inlist@false
- \def\x{#1}%
+ \def\MT@res@a{#1}%
\MT@map@tlist@c#2\MT@in@tlist@
}
\def\MT@in@tlist@#1{%
- \edef\y{#1}%
- \ifx\x\y
+ \edef\MT@res@b{#1}%
+ \ifx\MT@res@a\MT@res@b
\MT@inlist@true
\expandafter\MT@tlist@break
\fi
@@ -3822,6 +3982,7 @@ Q \MT@exp@two@c\zap@space\strip@prefix\meaning#1 \@empty
% This is the same as \LaTeX's \cmd\loop, which we mustn't use, since this
% could confuse an outer \cmd\loop\ in the document.
% \begin{macrocode}
+%</package>
\def\MT@loop#1\MT@repeat{%
\def\MT@iterate{#1\relax\expandafter\MT@iterate\fi}%
\MT@iterate \let\MT@iterate\relax
@@ -3846,6 +4007,7 @@ Q \MT@exp@two@c\zap@space\strip@prefix\meaning#1 \@empty
% Execute \meta{\#1} 256 times.
% \begin{macrocode}
\def\MT@do@font{\MT@while@num\z@\@cclvi}
+%<*package>
% \end{macrocode}
%\end{macro}
%\changes{v1.4}{2004/11/12}{use one instead of five counters}
@@ -4020,11 +4182,13 @@ Q \divide #1 #3\relax
% preamble, and fonts don't have to be set up before \microtype.
% \begin{macrocode}
%</package>
+%<plain>\ifnum\MT@plain<2
\let\MT@setup@\@empty
% \end{macrocode}
%\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.
% \begin{macrocode}
\def\MT@addto@setup{\g@addto@macro\MT@setup@}
% \end{macrocode}
@@ -4054,7 +4218,7 @@ Q \divide #1 #3\relax
}
% \end{macrocode}
%\end{macro}
-% Don't load \pkg{letterspace}.
+% Don't load \letterspace.
% \begin{macrocode}
\MT@let@nc{ver@letterspace.sty}\@empty
% \end{macrocode}
@@ -4177,7 +4341,7 @@ Q \divide #1 #3\relax
% Same for \pkg{tex4ht}.
%\changes{v1.9d}{2006/02/27}{restore \cmd\% and \cmd\# when \pkg{tex4ht} is loaded
% (reported by \contributor Peter Dyballa <Peter_Dyballa\at Web.DE>)}
-% ^^A private mail, 26/02/2006
+% ^^A private mail, 2006/02/26
% \begin{macrocode}
\@ifpackageloaded{hyperref}\MT@restore@p@h
{\MT@with@package@T{tex4ht}\MT@restore@p@h}%
@@ -4232,10 +4396,15 @@ time will almost certainly lead to undesired results. Have your choice!}%
% which redefines lots of commands.
%\changes{v1.9}{2005/09/10}{disable \microtype\ setup inside \pkg{hyperref}'s \cmd\pdfstringdef\
% (reported by \contributor\thanh{} <hanthethanh\at gmail.com>)}
-% ^^A private mail, 10/09/2005
+% ^^A private mail, 2005/09/10
+%\changes{v2.3}{2007/11/11}{disable \cs{microtypecontext} in \pkg{hyperref}'s \cmd\pdfstringdef}
% \begin{macrocode}
\pdfstringdefDisableCommands{%
-%<package> \let\pickup@font\MT@orig@pickupfont
+%<*package>
+ \let\pickup@font\MT@orig@pickupfont
+ \let\textmicrotypecontext\@secondoftwo
+ \let\microtypecontext\@gobble
+%</package>
\def\lsstyle{\pdfstringdefWarn\lsstyle}%
\def\textls#1#{\pdfstringdefWarn\textls}%
}%
@@ -4250,7 +4419,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
% The \pkg{listings} package makes numbers and letters active,
% \begin{macrocode}
\MT@with@package@T{listings}{%
- \g@addto@macro\MT@normal@catcodes{%
+ \g@addto@macro\MT@cfg@catcodes{%
\MT@while@num{"30}{"3A}{\catcode\@tempcnta 12\relax}%
\MT@while@num{"41}{"5B}{\catcode\@tempcnta 11\relax}%
\MT@while@num{"61}{"7B}{\catcode\@tempcnta 11\relax}%
@@ -4259,7 +4428,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
% \dots~and the backslash (which would lead to problems in \cs{MT@get@slot}).
%\changes{v2.0}{2006/09/15}{compatibility with \pkg{listings}: set catcode of backslash to zero
% (reported by \contributor Steven Bath <steven128\at iname.com>)}
-% ^^A private mail, 15/09/2006
+% ^^A private mail, 2006/09/15
% \begin{macrocode}
\g@addto@macro\MT@setupfont@hook{%
\catcode`\\\z@
@@ -4311,6 +4480,14 @@ 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}
@@ -4378,8 +4555,8 @@ time will almost certainly lead to undesired results. Have your choice!}%
% \pdftex\ provides. The following commands are \cmd\let\ to \cmd\relax\ if the
% respective feature is disabled via package options.
%
-% For versions older than 1.20, protrusion has to be set up first, since then,
-% the order doesn't matter.
+% For versions older than 1.20, protrusion has to be set up first, beginning
+% with 1.20, the order doesn't matter.
% \begin{macrocode}
\MT@protrusion
\MT@expansion
@@ -4404,7 +4581,6 @@ time will almost certainly lead to undesired results. Have your choice!}%
% \begin{macrocode}
\MT@register@font
\fi
- \MT@glet\MT@font\@empty
}
% \end{macrocode}
%\end{macro}
@@ -4745,6 +4921,32 @@ time will almost certainly lead to undesired results. Have your choice!}%
}
% \end{macrocode}
%\end{macro}
+%\begin{macro}{\MT@gobble@settings}
+% \begin{macrocode}
+\def\MT@gobble@settings#1\@tempc,\relax,{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MT@get@font@dimen@six}
+%\changes{v1.8}{2005/05/03}{new macro: test whether \fontdim6 is defined}
+%\begin{macro}{\MT@dimen@six}
+% If \fontdim6 is zero, character protrusion won't work, and we can
+% skip the settings (for example, the \pkg{dsfont} fonts don't specify this
+% dimension; this is probably a bug).
+% \begin{macrocode}
+\def\MT@get@font@dimen@six{%
+ \ifnum\fontdimen6\MT@font=\z@
+ \MT@warning@nl{%
+ Font `\MT@@font' does not specify its\MessageBreak
+ \@backslashchar fontdimen 6 (width of an `em')! Therefore,\MessageBreak
+ \@nameuse{MT@abbr@\MT@feat} will not work with this font}%
+ \expandafter\MT@gobble@settings
+ \else
+ \edef\MT@dimen@six{\number\fontdimen6\MT@font}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
%\begin{macro}{\MT@set@all@pr}
%\changes{v2.2}{2007/06/16}{(et al.) allow empty values}
% Set all protrusion codes of the font.
@@ -4769,53 +4971,20 @@ time will almost certainly lead to undesired results. Have your choice!}%
% \end{macrocode}
%\end{macro}
%\end{macro}
-%\begin{macro}{\MT@compensate@tr@}
-%\begin{macro}{\MT@compensate@tr}
+%\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
-% the margin kerns. This command will be activated in \cs{MT@set@tr@codes}.
+% the margin kerns. This will be activated in \cs{MT@set@tr@codes}.
% \begin{macrocode}
+\def\MT@the@pr@code{\@tempcntb}
\MT@requires@pdftex6{
- \g@addto@macro\MT@set@pr@codes\MT@compensate@tr
- \let\MT@compensate@tr\relax
- \def\MT@compensate@tr@{%
-%<debug>\MT@dinfo@nl{2}{... compensating for tracking (\number\MT@letterspace@)}%
- \MT@do@font{\MT@compensate@tr@@\lpcode \MT@compensate@tr@@\rpcode}%
- }
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-%\begin{macro}{\MT@compensate@tr@@}
-% \begin{macrocode}
- \def\MT@compensate@tr@@#1{%
- #1\MT@font\@tempcnta=\numexpr#1\MT@font\@tempcnta + \MT@letterspace@/2\relax
+ \def\MT@the@pr@code@tr{%
+ \numexpr\@tempcntb+\MT@letterspace@/2\relax
}
}\relax
% \end{macrocode}
%\end{macro}
-%\begin{macro}{\MT@gobble@settings}
-%\begin{macro}{\MT@dimen@six}
-%\begin{macro}{\MT@get@font@dimen@six}
-%\changes{v1.8}{2005/05/03}{new macro: test whether \fontdim6 is defined}
-% If \fontdim6 is zero, character protrusion won't work, and we can
-% skip the settings (for example, the \pkg{dsfont} fonts don't specify this
-% dimension; this is probably a bug).
-% \begin{macrocode}
-\def\MT@get@font@dimen@six{%
- \ifnum\fontdimen6\MT@font=\z@
- \MT@warning@nl{%
- Font `\MT@@font' does not specify its\MessageBreak
- \@backslashchar fontdimen 6 (width of an `em')! Therefore,\MessageBreak
- \@nameuse{MT@abbr@\MT@feat} will not work with this font}%
- \expandafter\MT@gobble@settings
- \else
- \edef\MT@dimen@six{\number\fontdimen6\MT@font}%
- \fi
-}
-\def\MT@gobble@settings#1\@tempc,\relax,{}
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
%\end{macro}
%\begin{macro}{\MT@pr@do}
% Split up the values and set \cmd\lpcode\ and \cmd\rpcode.
@@ -4852,13 +5021,13 @@ time will almost certainly lead to undesired results. Have your choice!}%
\def\@tempb{#1}%
\MT@ifempty\@tempb\relax{%
\MT@scale@to@em
- \lpcode\MT@font\MT@char=\@tempcntb
+ \lpcode\MT@font\MT@char=\MT@the@pr@code
%<debug>\MT@dinfo@nl{4}{;;; lp (\MT@char): \number\lpcode\MT@font\MT@char: [#1]}%
}%
\def\@tempb{#2}%
\MT@ifempty\@tempb\relax{%
\MT@scale@to@em
- \rpcode\MT@font\MT@char=\@tempcntb
+ \rpcode\MT@font\MT@char=\MT@the@pr@code
%<debug>\MT@dinfo@nl{4}{;;; rp (\MT@char): \number\rpcode\MT@font\MT@char: [#2]}%
}%
% \end{macrocode}
@@ -4923,8 +5092,8 @@ Q \MT@count=\wd\z@
% \end{macrocode}
%\changes{v2.2}{2007/04/05}{subtract letterspacing amount from width}
% For letterspaced fonts, we have to subtract the letterspacing amount from the
-% characters' widths. The protrusion amounts will be adjusted at the end of
-% \cs{MT@set@pr@codes}, in \cs{MT@compensate@tr}.
+% characters' widths. The protrusion amounts will be adjusted in
+% \cs{MT@set@pr@codes}.
% The letterspaced font is already loaded so that 1em = \fontdim6.
% \begin{macrocode}
\MT@requires@pdftex6{
@@ -5056,8 +5225,8 @@ Q \MessageBreak (it's probably missing)
%\begin{macro}{\MT@sp@unit@}
%\begin{macro}{\MT@kn@unit@}
% The |unit| can only be evaluated here, since it might be font-specific.
-% If it's \cmd\@empty, it's relative to character widths, if it's -1, relative
-% to space dimensions.
+% If it's \cmd\@empty, it's relative to character widths, if it's \textminus1,
+% relative to space dimensions.
% \begin{macrocode}
\MT@ifdefined@n@TF{MT@\MT@feat @c@\csname MT@\MT@feat @c@name\endcsname @unit}{%
\MT@let@nn{MT@\MT@feat @unit@}%
@@ -5185,9 +5354,8 @@ Q \MessageBreak (it's probably missing)
}
}{
\def\MT@set@inputenc@{%
- \MT@error{Key `inputenc' used in \MT@curr@list@name, but the `inputenc'
- \MessageBreak package isn't loaded. Ignoring key}%
- {You must load the `inputenc' package before you can use the `inputenc' key.}%
+ \MT@warning@nl{Key `inputenc' used in \MT@curr@list@name, but the `inputenc'
+ \MessageBreak package isn't loaded. Ignoring input encoding}%
}
}
}
@@ -5201,7 +5369,7 @@ Q \MessageBreak (it's probably missing)
% (problem with \pkg{listings})}
% \begin{macrocode}
\def\MT@load@inputenc{%
- \MT@normal@catcodes
+ \MT@cfg@catcodes
%<debug>\MT@dinfo@nl{1}{loading input encoding: \@nameuse{\@tempa}}%
\inputencoding{\@nameuse{\@tempa}}%
}
@@ -5815,56 +5983,9 @@ Q \MessageBreak (it's probably missing)
%<*package>
\MT@vinfo{Tracking font `\MT@@font'\on@line}%
\MT@get@font@dimen@six
- \MT@if@list@exists{%
- \MT@set@listname
- \MT@ifdefined@n@T{MT@tr@c@\MT@tr@c@name}{%
- \MT@let@cn\MT@letterspace{MT@tr@c@\MT@tr@c@name}%
-% \end{macrocode}
-%\begin{macro}{\MT@tr@unit@}
-% Different unit?
-% \begin{macrocode}
- \MT@ifdefined@n@T{MT@tr@c@\MT@tr@c@name @unit}{%
- \MT@let@cn\MT@tr@unit@{MT@tr@c@\MT@tr@c@name @unit}%
- \ifdim\MT@tr@unit@=1em
- \let\MT@tr@unit@\@undefined
- \else
- \MT@let@cn\@tempb{MT@tr@c@\MT@tr@c@name}%
- \MT@get@unit\MT@tr@unit@
- \let\MT@tr@factor@\@m
- \MT@scale@to@em
- \edef\MT@letterspace{\number\@tempcntb}%
- \fi
- }%
- }%
-% \end{macrocode}
-%\end{macro}
-%\changes{v2.2}{2007/02/23}{disable ligatures in letterspaced fonts manually
-% (due to change in \pdftex\ 1.40.4)}
-%\begin{macro}{\MT@tr@ligatures}
-% Which ligatures should we disable (empty means all, undefined none)?
-% \begin{macrocode}
- \MT@ifdefined@n@T{MT@tr@c@\MT@tr@c@name @noligatures}%
- {\MT@let@cn\MT@tr@ligatures{MT@tr@c@\MT@tr@c@name @noligatures}}%
-% \end{macrocode}
-%\end{macro}
-%\changes{v2.2}{2007/06/16}{possibility to customise interword spacing}
-%\begin{macro}{\MT@tr@ispace}
-%\begin{macro}{\MT@tr@ospace}
-% Adjust interword spacing.
-% \begin{macrocode}
- \MT@ifdefined@n@T{MT@tr@c@\MT@tr@c@name @spacing}%
- {\MT@let@cn\MT@tr@ispace{MT@tr@c@\MT@tr@c@name @spacing}}%
- \MT@ifdefined@n@T{MT@tr@c@\MT@tr@c@name @outerspacing}%
- {\MT@let@cn\MT@tr@ospace{MT@tr@c@\MT@tr@c@name @outerspacing}}%
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-% \begin{macrocode}
- }\relax
-% \end{macrocode}
-% Activate protrusion adjustment.
-% \begin{macrocode}
- \let\MT@compensate@tr\MT@compensate@tr@
+ \MT@if@list@exists
+ \MT@get@tr@opt
+ \relax
%</package>
\MT@ifdefined@c@TF\MT@letterspace@\relax{\let\MT@letterspace@\MT@letterspace}%
\ifnum\MT@letterspace@=\z@\else
@@ -5891,27 +6012,39 @@ 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
% \begin{macrocode}
\MT@get@ls@basefont
\global\expandafter\letterspacefont\MT@lsfont\font@name\MT@letterspace@
% \end{macrocode}
-% Scale interword spacing (not configurable in \pkg{letterspace}).
+%\changes{v2.2}{2007/06/16}{possibility to customise interword spacing}
+% Scale interword spacing (not configurable in \letterspace).
% \begin{macrocode}
%<*package>
\MT@ifdefined@c@TF\MT@tr@ispace
- {\let\@tempa\MT@tr@ispace}
+ {\let\@tempa\MT@tr@ispace}%
{\edef\@tempa{\MT@letterspace@*,,}}%
\MT@ifdefined@c@TF\MT@tr@ospace
- {\edef\@tempa{\@tempa,\MT@tr@ospace}}
+ {\edef\@tempa{\@tempa,\MT@tr@ospace}}%
{\edef\@tempa{\@tempa,,,}}%
- \expandafter\MT@tr@adjust@space\@tempa,%
+ \expandafter\MT@tr@set@space\@tempa,%
+% \end{macrocode}
+%\changes{v2.3}{2007/11/03}{possibility to customise outer kerning
+% (suggested by \contributor Stephan Hennig <stephanhennig\at arcor.de>)}
+% ^^A MID: <46aa1cbb$0$31620$9b4e6d93@newsspool3.arcor-online.net>
+% Adjust outer kerning.
+% \begin{macrocode}
+ \MT@ifdefined@c@TF\MT@tr@okern{\let\@tempa\MT@tr@okern}{\def\@tempa{*,*}}%
+ \expandafter\MT@tr@set@okern\@tempa,%
%</package>
%<*letterspace>
\fontdimen2\MT@lsfont=\dimexpr\numexpr 1000+\MT@letterspace@\relax sp
* \fontdimen2\MT@lsfont/1000\relax
%</letterspace>
% \end{macrocode}
-% Disable ligatures (not configurable in \pkg{letterspace}).
+%\changes{v2.2}{2007/02/23}{disable ligatures in letterspaced fonts manually
+% (due to change in \pdftex\ 1.40.4)}
+% Disable ligatures (not configurable in \letterspace).
% \begin{macrocode}
%<package> \MT@ifdefined@c@T\MT@tr@ligatures\MT@tr@noligatures
%<letterspace> \tagcode\MT@lsfont`f=\m@ne
@@ -5920,25 +6053,145 @@ Q \MessageBreak (it's probably missing)
% Finally, let the letterspaced font propagate.
% \begin{macrocode}
\aftergroup\MT@set@lsfont
+%<package> \let\MT@font\MT@lsfont
+% \end{macrocode}
+%\begin{macro}{\MT@set@curr@ls}
+%\begin{macro}{\MT@curr@ls}
+% We need to remember the current letterspacing amount (for \cs{lslig}).
+% \begin{macrocode}
+ \xdef\MT@set@curr@ls{\def\noexpand\MT@curr@ls{\MT@letterspace@}}%
+ \aftergroup\MT@set@curr@ls
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+% Adjust surrounding spacing and kerning.
+%\begin{macro}{\MT@set@curr@os}
+%\changes{v2.3}{2007/11/03}{adjusting spaces made more reliable}
+% We get the current outer spacing and adjust it, then, after the end of the
+% current outer group, set the current outer spacing, again, and adjust.
+% \begin{macrocode}
%<*package>
- \let\MT@font\MT@lsfont
+ \MT@outer@space=\csname MT@outer@space\expandafter\string\font@name\endcsname\relax
+ \xdef\MT@set@curr@os{\MT@outer@space=\the\MT@outer@space\relax}%
+ \aftergroup\aftergroup\aftergroup\MT@set@curr@os
+ \MT@tr@outer@l
+%</package>
% \end{macrocode}
-% Adjust surrounding spacing.
+%\end{macro}
+% If \cs{MT@ls@adjust} is empty, it's the starred version of \cs{textls}.
+% Use scaling to avoid a `Dimension too large'.
% \begin{macrocode}
- \ifx\MT@ls@adjust\relax
- \global\MT@outer@space=\csname MT@outer@space\MT@@font\endcsname
- \MT@tr@outer@l
- \aftergroup\aftergroup\aftergroup\MT@tr@outer@r
+ \ifx\MT@ls@adjust\@empty
+ \MT@outer@kern=-\dimexpr\MT@letterspace@ sp * \fontdimen6\font@name/2000\relax
+ \MT@ls@outer@k
+%<*letterspace>
+ \xdef\MT@set@curr@ok{\MT@outer@kern=\the\MT@outer@kern\relax}%
+ \aftergroup\aftergroup\aftergroup\MT@set@curr@ok
+ \aftergroup\aftergroup\aftergroup\MT@ls@outer@k
+%</letterspace>
+% \end{macrocode}
+% Otherwise, get the current outer kerning and adjust it, for left and right
+% side.
+% \begin{macrocode}
+%<*package>
+ \else
+ \MT@outer@kern=\expandafter\expandafter\expandafter\@firstoftwo
+ \csname MT@outer@kern\expandafter\string\font@name\endcsname\relax
+ \ifdim\MT@outer@kern=\z@\else \MT@ls@outer@k \fi
+ \MT@outer@kern=\expandafter\expandafter\expandafter\@secondoftwo
+ \csname MT@outer@kern\expandafter\string\font@name\endcsname\relax
+%</package>
\fi
+%<*package>
+% \end{macrocode}
+%\begin{macro}{\MT@set@curr@ok}
+% Carry the outer kerning amount to outside the next group, then set outer
+% spacing (which will set kerning, if no space follows).
+% \begin{macrocode}
+ \xdef\MT@set@curr@ok{\MT@outer@kern=\the\MT@outer@kern\relax}%
+ \aftergroup\aftergroup\aftergroup\MT@set@curr@ok
+ \aftergroup\aftergroup\aftergroup\MT@tr@outer@r
+% \end{macrocode}
+%\end{macro}
+% Adjust protrusion values, now and maybe later.
+%\changes{v2.3}{2007/07/27}{also adjust tracking if protrusion is not enabled,
+% and even for \letterspace\
+% (reported by \contributor Stephan Hennig <stephanhennig\at arcor.de>)}
+% ^^A MID: <46a9c6c6$0$21005$9b4e6d93@newsspool1.arcor-online.net>
+% \begin{macrocode}
+%<debug>\MT@dinfo@nl{2}{... compensating for tracking (\number\MT@letterspace@)}%
%</package>
+ \MT@do@font{\lpcode\MT@lsfont\@tempcnta=\numexpr\MT@letterspace@/2\relax
+ \rpcode\MT@lsfont\@tempcnta=\numexpr\MT@letterspace@/2\relax}%
+%<package> \let\MT@the@pr@code\MT@the@pr@code@tr
\fi
}
% \end{macrocode}
%\end{macro}
+%\begin{macro}{\MT@get@tr@opt}
+% Various settings (only for the \microtype\ version).
+% \begin{macrocode}
+%<*package>
+\def\MT@get@tr@opt{%
+ \MT@set@listname
+ \MT@ifdefined@n@T{MT@tr@c@\MT@tr@c@name}{%
+ \MT@let@cn\MT@letterspace{MT@tr@c@\MT@tr@c@name}%
+% \end{macrocode}
+%\begin{macro}{\MT@tr@unit@}
+% Different unit?
+% \begin{macrocode}
+ \MT@ifdefined@n@T{MT@tr@c@\MT@tr@c@name @unit}{%
+ \MT@let@cn\MT@tr@unit@{MT@tr@c@\MT@tr@c@name @unit}%
+ \ifdim\MT@tr@unit@=1em
+ \let\MT@tr@unit@\@undefined
+ \else
+ \MT@let@cn\@tempb{MT@tr@c@\MT@tr@c@name}%
+ \MT@get@unit\MT@tr@unit@
+ \let\MT@tr@factor@\@m
+ \MT@scale@to@em
+ \edef\MT@letterspace{\number\@tempcntb}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MT@tr@ispace}
+%\begin{macro}{\MT@tr@ospace}
+% Adjust interword spacing.
+% \begin{macrocode}
+ \MT@get@tr@opt@{spacing} {ispace}%
+ \MT@get@tr@opt@{outerspacing}{ospace}%
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\begin{macro}{\MT@tr@okern}
+% Adjust outer kerning.
+% \begin{macrocode}
+ \MT@get@tr@opt@{outerkerning}{okern}%
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MT@tr@ligatures}
+% Which ligatures should we disable (empty means all, undefined none)?
+% \begin{macrocode}
+ \MT@get@tr@opt@{noligatures} {ligatures}%
+}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\begin{macro}{\MT@get@tr@opt@}
+% \begin{macrocode}
+\def\MT@get@tr@opt@#1#2{%
+ \MT@ifdefined@n@T{MT@tr@c@\MT@tr@c@name @#1}%
+ {\MT@let@nn{MT@tr@#2}{MT@tr@c@\MT@tr@c@name @#1}}%
+}
+%</package>
+% \end{macrocode}
+%\end{macro}
%\begin{macro}{\MT@set@lsfont}
% Redefine \cmd\font@name, which will be called a second later (in
% \cmd\selectfont).
% \begin{macrocode}
+%<plain>\ifnum\MT@plain=0
\def\MT@set@lsfont{\MT@exp@two@c\let\font@name\MT@lsfont}
% \end{macrocode}
%\end{macro}
@@ -5954,28 +6207,44 @@ Q \MessageBreak (it's probably missing)
%<package> \def\MT@feat{tr}%
\let\MT@tracking\MT@set@tr@codes
\selectfont
+}
% \end{macrocode}
-% Possibly remove the first and last kerns (for \cs{textls*}). Use scaling to
-% avoid a `Dimension too large'.
+% Now the definitions for the \letterspace\ package with \eplain.
% \begin{macrocode}
- \MT@lskern=\dimexpr\MT@ifdefined@c@TF\MT@letterspace@
- \MT@letterspace@\MT@letterspace sp
- * \fontdimen6\MT@lsfont/2000\relax
- \MT@ls@adjust
+%<*plain>
+\else
+\def\MT@set@lsfont{\MT@lsfont}
+\renewcommand\lsstyle{%
+ \begingroup
+ \escapechar\m@ne
+ \xdef\font@name{\csname\expandafter\string\the\font\endcsname}%
+ \MT@set@tr@codes
+ \endgroup
}
+\let\textls\@undefined
+\let\lslig\@undefined
+\fi
+%</plain>
% \end{macrocode}
%\end{macro}
%\begin{macro}{\lslig}
%\changes{v2.1}{2007/01/17}{new command: protect ligatures in letterspaced text}
%\changes{v2.2}{2007/02/25}{always defined}
+%\changes{v2.3}{2007/11/03}{redone: extract outer kerns from current letterspacing
+% amount}
%\begin{macro}{\MT@lslig}
% For Fraktur fonts, some ligatures shouldn't be broken up. This command will
% temporarily select the base font and insert the correct kerning.
% \begin{macrocode}
\DeclareRobustCommand\lslig[1]{%
- \kern\MT@lskern
- {\MT@get@ls@basefont\font@name #1}%
- \kern\MT@lskern
+ {\MT@ifdefined@c@TF\MT@curr@ls{%
+ \escapechar\m@ne
+ \MT@get@ls@basefont
+ \MT@outer@kern=\dimexpr\MT@curr@ls sp * \fontdimen6\font@name/2000\relax
+ \kern\MT@outer@kern
+ \font@name #1%
+ \kern\MT@outer@kern%
+ }{#1}}%
}
% \end{macrocode}
%\end{macro}
@@ -5991,7 +6260,6 @@ Q \MessageBreak (it's probably missing)
% could destroy all previously set up micro-typographic features of the font.
% \begin{macrocode}
\def\MT@get@ls@basefont{%
- \escapechar\m@ne
\edef\MT@ls@basefont{\csname\expandafter\string\font@name @base\endcsname}%
\expandafter\ifx\MT@ls@basefont\relax
\MT@exp@two@c\MT@glet\MT@ls@basefont\font@name
@@ -6030,50 +6298,56 @@ Q \MessageBreak (it's probably missing)
\newskip\MT@outer@space
% \end{macrocode}
%\end{macro}
-%\begin{macro}{\MT@tr@adjust@space}
+%\begin{macro}{\MT@tr@set@space}
% Adjust interword spacing (\fontdim2--4) for inner and outer space.
% For inner spacing, the font dimensions will be adjusted, the settings for
% outer spacing will be remembered in a macro.
% \begin{macrocode}
-\def\MT@tr@adjust@space#1,#2,#3,#4,#5,#6,{%
+\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> \MessageBreak... (#1,#2,#3) (#4,#5,#6)}%
\let\MT@temp\@empty
- \MT@adjust@space@{#1}{#4}{2}\@empty
- \MT@adjust@space@{#2}{#5}{3}\@plus
- \MT@adjust@space@{#3}{#6}{4}\@minus
- \global\MT@let@nc{MT@outer@space\expandafter\string\MT@lsfont}\MT@temp
+ \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{... outer space: \MT@temp}%
}
% \end{macrocode}
%\end{macro}
-%\begin{macro}{\MT@adjust@space@}
+%\begin{macro}{\MT@tr@set@space@}
% If outer spacing settings don't exist, they will be inherited from the inner
% spacing settings.
% \begin{macrocode}
-\def\MT@adjust@space@#1#2#3#4{%
+\def\MT@tr@set@space@#1#2#3#4{%
\MT@ifempty{#2}{%
\MT@ifempty{#1}{%
\edef\MT@temp{\MT@temp#4\the\fontdimen#3\MT@lsfont}%
}{%
- \MT@tr@get@space{#1}{#3}{1000}%
+ \MT@tr@set@space@@{#1}{#3}{1000}%
\edef\MT@temp{\MT@temp#4\the\@tempdima}%
\fontdimen#3\MT@lsfont=\@tempdima
}%
}{%
- \MT@tr@get@space{#2}{#3}{2000}%
+ \MT@tr@set@space@@{#2}{#3}{2000}%
\edef\MT@temp{\MT@temp#4\the\@tempdima}%
\MT@ifempty{#1}\relax{%
- \MT@tr@get@space{#1}{#3}{1000}%
+ \MT@tr@set@space@@{#1}{#3}{1000}%
\fontdimen#3\MT@lsfont=\@tempdima
}%
}%
}
% \end{macrocode}
%\end{macro}
-%\begin{macro}{\MT@tr@get@space}
+%\begin{macro}{\MT@tr@set@space@@}
% If the value is followed by an asterisk, the fontdimen will be scaled by the
% respective amount, otherwise the value denotes the desired dimension in the
% respective unit.
% \begin{macrocode}
-\def\MT@tr@get@space#1#2#3{%
+\def\MT@tr@set@space@@#1#2#3{%
\MT@test@ast#1*\@nil{%
\MT@ifdefined@c@TF\MT@tr@unit@
{\edef\@tempb{#1}\MT@scale@to@em}
@@ -6092,16 +6366,27 @@ Q \MessageBreak (it's probably missing)
\MT@ifempty\@tempa{\let\@tempa\MT@letterspace@}\relax
\@tempdima=\dimexpr \numexpr1000+\@tempa sp *\fontdimen#2\MT@lsfont/1000\relax
}%
-%<debug>\MT@dinfo2{... adjusting font dimen #2 (#1): \the\@tempdima}%
+%<debug>\MT@dinfo@nl3{... : font dimen #2 (#1): \the\@tempdima}%
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\MT@tr@outer@l}
-% Recall the last skip (must really be a space, not just a marker).
+% Recall the last skip (must really be an interword space, not just a marker,
+%\changes{v2.3}{2007/10/23}{only change pre outer space if it contains glue}
+% nor a `hard' space, \ie, one that doesn't contain stretch or shrink parts).
% \begin{macrocode}
\def\MT@tr@outer@l{%
\ifdim\lastskip>5sp
- \unskip \hskip\MT@outer@space
+ \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}%
+ \unskip \hskip\MT@outer@space\relax
+% \end{macrocode}
+% Disable left outer kerning.
+% \begin{macrocode}
+ \let\MT@ls@outer@k\relax
+ \fi
\fi
}
% \end{macrocode}
@@ -6117,9 +6402,13 @@ Q \MessageBreak (it's probably missing)
\futurelet\MT@tr@outer@next\MT@tr@outer@r@
}
\def\MT@tr@outer@r@{%
- \def\MT@temp*##1{\hskip\MT@outer@space}%
+ \def\MT@temp*##1{\hskip\MT@outer@space
+%<debug>\MT@dinfo2{))) adjusting post spaces (1): \the\MT@outer@space}%
+ }%
\ifcat\egroup\noexpand\MT@tr@outer@next
\unkern\egroup
+ \MT@set@curr@ok
+ \MT@set@curr@os
\def\MT@temp*{\afterassignment\MT@tr@outer@r\let\x=}%
\else
% \end{macrocode}
@@ -6140,15 +6429,22 @@ Q \MessageBreak (it's probably missing)
\def\MT@temp*{\aftergroup\MT@tr@outer@r\check@icr\let\x=}%
\else
\ifx\@sptoken\MT@tr@outer@next
- \def\MT@temp* {\hskip\MT@outer@space}%
+ \def\MT@temp* {\hskip\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}%
+ \def\MT@temp*~{\nobreak\hskip\MT@outer@space
+%<debug>\MT@dinfo2{))) adjusting post spaces (3): \the\MT@outer@space}%
+ }%
\else
\ifx\ \MT@tr@outer@next \else
\ifx\space\MT@tr@outer@next \else
\ifx\@xobeysp\MT@tr@outer@next \else
- \def\MT@temp*{}%
+% \end{macrocode}
+% If there's no outer spacing, there may be outer kerning.
+% \begin{macrocode}
+ \def\MT@temp*{\ifdim\MT@outer@kern=\z@\else\MT@ls@outer@k\fi}%
\let\MT@tr@outer@next\relax
\fi\fi\fi\fi\fi\fi\fi\fi
\MT@temp*%
@@ -6189,8 +6485,8 @@ Q \MessageBreak (it's probably missing)
% \begin{macrocode}
\DeclareRobustCommand\textls{%
\hmode@bgroup
- \@ifstar{\let\MT@ls@adjust\MT@ls@adjust@\MT@textls}%
- {\let\MT@ls@adjust\relax \MT@textls}%
+ \@ifstar{\let\MT@ls@adjust\@empty\MT@textls}%
+ {\let\MT@ls@adjust\relax \MT@textls}%
}
% \end{macrocode}
%\end{macro}
@@ -6204,7 +6500,6 @@ Q \MessageBreak (it's probably missing)
{\KV@@sp@def\MT@letterspace@{#1}%
\MT@ls@too@large\MT@letterspace@}%
\lsstyle #2%
- \MT@ls@adjust
\egroup
}
% \end{macrocode}
@@ -6226,31 +6521,62 @@ Q \MessageBreak (it's probably missing)
}
% \end{macrocode}
%\end{macro}
-%\begin{macro}{\MT@lskern}
-% This dimen is used for the starred version of \cs{textls} and for \cs{lslig}.
+%\begin{macro}{\MT@outer@kern}
+%\begin{macro}{\MT@tr@set@okern}
+% This dimen is used for the starred version of \cs{textls}, for \cs{lslig}
+% and for adjusted outer kerning.
% \begin{macrocode}
-\newdimen\MT@lskern
+\newdimen\MT@outer@kern
+%<*package>
+\def\MT@tr@set@okern#1,#2,{%
+ \let\MT@temp\@empty
+ \MT@tr@set@okern@{#1}%
+ \MT@tr@set@okern@{#2}%
+ \global\MT@let@nc{MT@outer@kern\expandafter\string\font@name}\MT@temp
+%<debug>\MT@dinfo@nl2{... outer kerning:
+%<debug> (#1,#2) = \@nameuse{MT@outer@kern\expandafter\string\font@name}}%
+}
% \end{macrocode}
%\end{macro}
-%\begin{macro}{\MT@ls@adjust}
-%\begin{macro}{\MT@ls@adjust@}
-% Remove extra space for the starred version.
+%\end{macro}
+%\begin{macro}{\MT@tr@set@okern@}
% \begin{macrocode}
-\let\MT@ls@adjust\relax
-\def\MT@ls@adjust@{\kern-\MT@lskern}
-%<*package>
+\def\MT@tr@set@okern@#1{%
+ \MT@test@ast#1*\@nil{%
+ \MT@ifdefined@c@TF\MT@tr@unit@
+ {\edef\@tempb{#1}\MT@scale@to@em}
+ {\@tempcntb=#1\relax}%
+ \@tempdima=\dimexpr \@tempcntb sp * \MT@dimen@six/1000\relax
+ }{%
+ \MT@ifempty\@tempa{\let\@tempa\@m}\relax
+ \@tempdima=\dimexpr \numexpr\@tempa*\MT@letterspace@/1000\relax sp
+ * \fontdimen6\MT@lsfont/2000\relax
+ }%
+ \advance\@tempdima -\dimexpr \MT@letterspace@ sp
+ * \fontdimen6\MT@lsfont/2000\relax
+ \edef\MT@temp{\MT@temp{\the\@tempdima}}%
+}
+%</package>
% \end{macrocode}
%\end{macro}
+%\begin{macro}{\MT@ls@outer@k}
+% Adjust outer kerning.
+% \begin{macrocode}
+\def\MT@ls@outer@k{\ifhmode\kern\MT@outer@kern\relax\fi}
+%<*package>
+% \end{macrocode}
%\end{macro}
%
%\subsubsection{Disabling Ligatures}
%
%\begin{macro}{\MT@noligatures}
% The possibility to disable ligatures is a new features of \pdftex\ 1.30.
+%\changes{v2.3}{2007/10/23}{fix: set evaluation didn't work (bug introduced in 2.2)}
% \begin{macrocode}
\MT@requires@pdftex5{
\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}%
@@ -6272,7 +6598,7 @@ Q \MessageBreak (it's probably missing)
% \begin{macrocode}
\MT@ifdefined@c@TF\tagcode{%
\MT@map@clist@c#2{%
- \def\@tempa{##1}\MT@get@slot
+ \KV@@sp@def\@tempa{##1}\MT@get@slot
\ifnum\MT@char > \m@ne
\tagcode#1\MT@char=\m@ne\fi
}%
@@ -6304,7 +6630,7 @@ Q \MessageBreak (it's probably missing)
\edef\@tempa{#1}%
\MT@let@cn\@tempb{MT@\MT@feat @c@\@tempa @load}%
\MT@ifstreq\@tempa\@tempb{%
- \MT@warning{\@nameuse{MT@abbr@\MT@feat} list `\@tempa' cannot load itself}%
+ \MT@error{\@nameuse{MT@abbr@\MT@feat} list `\@tempa' cannot load itself}{}%
}{%
\ifx\@tempb\relax \else
\MT@ifdefined@n@TF{MT@\MT@feat @c@\@tempb}{%
@@ -6317,8 +6643,8 @@ Q \MessageBreak (it's probably missing)
\MT@let@cn\@tempc{MT@\MT@feat @c@\@tempb}%
\expandafter\csname MT@\MT@feat @do\expandafter\endcsname\@tempc,\relax,%
}{%
- \MT@warning{\@nameuse{MT@abbr@\MT@feat} list `\@tempb' undefined.
- Cannot load\MessageBreak it from list `\@tempa'}%
+ \MT@error{\@nameuse{MT@abbr@\MT@feat} list `\@tempb' undefined.\MessageBreak
+ Cannot load it from list `\@tempa'}{}%
}%
\fi
}%
@@ -6327,7 +6653,7 @@ Q \MessageBreak (it's probably missing)
%\end{macro}
%\changes{v1.1}{2004/09/13}{configuration file names in lowercase
% (suggested by \contributor Harald Harders <h.harders\at tu-bs.de>)}
-% ^^A private mail, 13/09/2004
+% ^^A private mail, 2004/09/13
%\begin{macro}{\MT@find@file}
%\changes{v1.1}{2004/09/14}{fix: also check whether the file for the base
% font family has already been loaded}
@@ -6376,7 +6702,7 @@ Q \MessageBreak (it's probably missing)
}
% \end{macrocode}
%\end{macro}
-%\begin{macro}{\MT@normal@catcodes}
+%\begin{macro}{\MT@cfg@catcodes}
% We have to make sure that all characters have the correct category code.
% Especially, new lines and spaces should be ignored, since files might be
% loaded in the middle of the document. This is basically \cmd\nfss@catcodes\
@@ -6399,7 +6725,7 @@ Q \MessageBreak (it's probably missing)
%
% We leave |^| at catcode 7, so that stuff like `|^^ff|' remains possible.
% \begin{macrocode}
-\def\MT@normal@catcodes{%
+\def\MT@cfg@catcodes{%
\makeatletter
\catcode`\^7%
\catcode`\ 9%
@@ -6410,7 +6736,9 @@ Q \MessageBreak (it's probably missing)
\catcode`\}\tw@
\catcode`\#6%
\catcode`\%14%
- \MT@map@tlist@n{\!\"\$\&\'\(\)\*\+\,\-\.\/\:\;\<\=\>\?\[\]\_\`\|\~}\@makeother
+ \MT@map@tlist@n
+ {\!\"\$\&\'\(\)\*\+\,\-\.\/\:\;\<\=\>\?\[\]\_\`\|\~}%
+ \@makeother
}
% \end{macrocode}
%\end{macro}
@@ -6420,14 +6748,11 @@ Q \MessageBreak (it's probably missing)
% catcodes are also harmless when these commands are used outside the
% configuration files.
%\changes{v1.7}{2005/02/17}{also use inside configuration commands}
+%\changes{v2.3}{2007/11/20}{fix: don't disable \cmd\KV@@sp@def}
% \begin{macrocode}
\def\MT@begin@catcodes{%
\begingroup
- \MT@normal@catcodes
-% \end{macrocode}
-% Inside the configuration files, we don't have to bother about spaces.
-% \begin{macrocode}
- \let\KV@@sp@def\def
+ \MT@cfg@catcodes
}
% \end{macrocode}
%\end{macro}
@@ -6439,7 +6764,7 @@ Q \MessageBreak (it's probably missing)
%\end{macro}
%\begin{macro}{\MT@get@basefamily}
% The family name might have a suffix
-%\changes{v1.1}{2004/09/14}{only remove suffix, if it is `x' or `j'}
+%\changes{v1.1}{2004/09/14}{only remove suffix if it is `\texttt{x}' or `\texttt{j}'}
% \eg, for expert set (|x|), old style numbers (|j|)
%\changes{v1.2}{2004/09/26}{also remove `w' (swash capitals)}
% swash capitals (|w|) etc. We mustn't simply remove the last letter, as this
@@ -6486,7 +6811,7 @@ Q \MessageBreak (it's probably missing)
%\changes{v1.2}{2004/09/30}{alternatively check for alias font name}
%\changes{v1.7}{2005/03/15}{use \cmd\@tfor\
% (\contributor Andreas B\"uhmann <andreas.buehmann\at web.de>'s idea)}
-% ^^A private mail, 12/03/2005
+% ^^A private mail, 2005/03/12
%\changes{v1.8}{2005/04/16}{made recursive}
% \begin{macrocode}
\def\MT@get@listname#1{%
@@ -6508,28 +6833,32 @@ Q \MessageBreak (it's probably missing)
%\begin{macro}{\MT@try@order}
%\changes{v1.7}{2005/03/11}{fix: also check for //\meta{series}/\meta{shape}//
% (reported by \contributor Andreas B\"uhmann <andreas.buehmann\at web.de>)}
-% ^^A private mail, 10/03/2005
+% ^^A private mail, 2005/03/10
%\changes{v1.7}{2005/03/11}{always check for size, too
% (suggested by \contributor Andreas B\"uhmann <andreas.buehmann\at web.de>)}
-% ^^A private mail, 10/03/2005
+% ^^A private mail, 2005/03/10
%
%\begin{table}\footnotesize
%\caption{Order for matching font attributes}\label{tab:match-order}
%\catcode`\!=13 \let!\match
+%\setlength\fboxsep{4pt}\setlength\fboxrule{0.4pt}
+%\leavevmode\kern-\dimexpr\fboxsep+\fboxrule\relax
+%\fcolorbox{theframe}{white}{^^A
+%\begin{minipage}{\textwidth}
%\begin{tabular}{@{}L{38pt}*{16}{p{19.5pt}<{\centering}@{}}}
-%\addlinespace\toprule\addlinespace
% & 1.& 2.& 3.& 4.& 5.& 6.& 7.& 8.& 9.&10.&11.&12.&13.&14.&15.&16.\\
-%\cmidrule(r){2-2}\cmidrule(r){3-3}\cmidrule(r){4-4}\cmidrule(r){5-5}
-%\cmidrule(r){6-6}\cmidrule(r){7-7}\cmidrule(r){8-8}\cmidrule(r){9-9}
+%\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(r){8-8} \cmidrule(r){9-9}
%\cmidrule(r){10-10}\cmidrule(r){11-11}\cmidrule(r){12-12}\cmidrule(r){13-13}
-%\cmidrule(r){14-14}\cmidrule(r){15-15}\cmidrule(r){16-16}\cmidrule{17-17}
+%\cmidrule(r){14-14}\cmidrule(r){15-15}\cmidrule(r){16-16}\cmidrule {17-17}
% Encoding & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! \\
% Family & ! & ! & ! & ! & ! & ! & ! & ! & - & - & - & - & - & - & - & - \\
% Series & ! & ! & ! & ! & - & - & - & - & ! & ! & ! & ! & - & - & - & - \\
% Shape & ! & ! & - & - & ! & ! & - & - & ! & ! & - & - & ! & ! & - & - \\
% Size & ! & - & ! & - & ! & - & ! & - & ! & - & ! & - & ! & - & ! & - \\
-%\bottomrule
%\end{tabular}
+%\end{minipage}^^A
+%}\kern-\dimexpr\fboxsep+\fboxrule\relax ^^A end \fcolorbox
%\end{table}
%
% Beginning with version 1.7, we always check for the font size. Since the
@@ -6691,7 +7020,7 @@ Q \MessageBreak (it's probably missing)
%\changes{v1.6a}{2005/01/30}{completely redone, hopefully more robust
% (compatible with \pkg{frenchpro}; problem reported by
% \contributor Bernard Gaulle <gaulle\at idris.fr>)}
-% ^^A private mail, 28/01/2005
+% ^^A private mail, 2005/01/28
%\changes{v1.7}{2005/03/21}{remove backslash hack}
% There are lots of possibilities how a character may be specified in the
% configuration files, which makes translating them into slot numbers quite
@@ -6816,7 +7145,7 @@ Q \MessageBreak (it's probably missing)
% Numbers may be specified as a three-digit decimal number (|029|),
%\changes{v1.1}{2004/09/13}{numbers may also be specified in hexadecimal or octal
% (suggested by \contributor Harald Harders <h.harders\at tu-bs.de>)}
-% ^^A private mail, 13/09/2004
+% ^^A private mail, 2004/09/13
% as a hexadecimal number (prefixed with~|"|: |"1D|) or as a octal number
% (prefixed with~|'|: |'35|). They must consist of at least three characters
% (including the prefix), that is, |"F| is not permitted.
@@ -6898,9 +7227,9 @@ Q \MessageBreak (it's probably missing)
% to write `\expandafter|\textcopyright|' instead of \cmd\textcopyright, thus
% rendering your configuration files unportable.)
%
-% Unicode characters (\pkg{inputenc}/|utf8|) are also supported (however, not
-% \pkg{ucs}, aka. \pkg{inputenc}/|utf8x|).
+% Unicode characters (\pkg{inputenc}/|utf8|,|utf8x|) are also supported.
%\changes{v1.9d}{2006/03/06}{support for Unicode (\pkg{inputenc}/\allowbreak\texttt{utf8})}
+%\changes{v2.3}{2007/11/11}{support for extended Unicode (\pkg{inputenc}/\allowbreak\texttt{utf8x} resp. \pkg{ucs}) -- experimental}
%
%\iffalse ^^A obsolete because of `inputenc' key
% We presume that only one input encoding is being used throughout the entire
@@ -6923,7 +7252,12 @@ Q \MessageBreak (it's probably missing)
% \begin{macrocode}
\def\UTFviii@defined##1{\ifx ##1\relax
\MT@undefined@char{utf8}\else\expandafter ##1\fi}%
- \edef\x{%
+% \end{macrocode}
+% For \pkg{ucs} (utf8x). Let's call it experimental~\dots
+% \begin{macrocode}
+ \MT@ifdefined@c@T\PrerenderUnicode
+ {\PrerenderUnicode{\@tempa}\let\unicode@charfilter\@firstofone}%
+ \edef\x{\endgroup
\def\noexpand\@tempa{\@tempa}%
% \end{macrocode}
% Append what we think the translation is to the token register we use for the
@@ -6931,7 +7265,7 @@ Q \MessageBreak (it's probably missing)
% \begin{macrocode}
\MT@toks={\the\MT@toks\space(= \@tempa)}%
}%
- \expandafter\endgroup\x
+ \x
\fi
}
% \end{macrocode}
@@ -6960,7 +7294,7 @@ Q \MessageBreak (it's probably missing)
%\changes{v2.2}{2007/03/07}{expand once more (for \pkg{frenchpro})}
% \dots~or, if it hasn't been defined by \cs{DeclareTextSymbol}, a letter
% (\eg, \cmd\i, when using \pkg{frenchpro}). ^^A as noted by Bernard Gaulle
-% ^^A private mail, 28/01/2005
+% ^^A private mail, 2005/01/28
% \begin{macrocode}
\expandafter\expandafter\expandafter\MT@is@letter\MT@char\relax\relax
\fi
@@ -6978,7 +7312,7 @@ Q \MessageBreak (it's probably missing)
% \begin{macrocode}
/MT@map@tlist@n{/\CHAR}/@makeother
/lowercase{%
- /def/x{%
+ /def/x{/endgroup
/def/MT@charstring{\CHAR"}%
/def/MT@is@char##1\CHAR"##2##3##4/relax{%
/ifx/relax##1/relax
@@ -6994,7 +7328,7 @@ Q \MessageBreak (it's probably missing)
}%
}%
}
-/expandafter/endgroup/x
+/x
% \end{macrocode}
%\end{macro}
%\end{macro}
@@ -7177,25 +7511,15 @@ Q \MessageBreak (it's probably missing)
% \end{macrocode}
%\end{macro}
%\end{macro}
-%\begin{macro}{\do@subst@correction}
-% Additionally, we hook into \cmd\do@subst@correction, which is called if
-% a substitution has taken place, to record the name of the ersatz font.
-% Unfortunately, this will only work for one-level substitutions.
-%
% All this is done at the beginning of the document.
+% It doesn't work for plain, of course, which doesn't have \cmd\pickup@font.
% \begin{macrocode}
%</package>
+%<plain>\ifnum\MT@plain=0
\MT@addto@setup{%
-%<*package>
- \g@addto@macro\do@subst@correction
- {\xdef\MT@font{\csname \curr@fontshape/\f@size\endcsname}}
-%</package>
% \end{macrocode}
-%\end{macro}
%\changes{v2.1}{2007/01/15}{compatibility with \pkg{CJK}: also check for its definition}
%\begin{macro}{\MT@orig@pickupfont}
-% Check whether \cmd\pickup@font\ is defined as expected.
-% The warning issued by \cmd{\CheckCommand*} would be a bit too generic.
% \microtype\ also seems to work with \pkg{CJK}.
% \begin{macrocode}
\@ifpackageloaded{CJK}{
@@ -7210,12 +7534,18 @@ Q \MessageBreak (it's probably missing)
}{
\def\MT@orig@pickupfont{\expandafter\ifx\font@name\relax\define@newfont\fi}
}
+% \end{macrocode}
+% Check whether \cmd\pickup@font\ is defined as expected.
+% The warning issued by \cmd{\CheckCommand*} would be a bit too generic.
+% \begin{macrocode}
\ifx\pickup@font\MT@orig@pickupfont \else
\MT@warning@nl{%
Command \string\pickup@font\space is not defined as expected.%
+ \MessageBreak Patching it anyway. Some things may break%
%<*package>
- \MessageBreak Double-check whether micro-typography is indeed\MessageBreak
- applied to the document.\MessageBreak (Hint: Turn on `verbose' mode)%
+ .\MessageBreak Double-check whether micro-typography is indeed%
+ \MessageBreak applied to the document.%
+ \MessageBreak (Hint: Turn on `verbose' mode)%
%</package>
}
\fi
@@ -7223,7 +7553,7 @@ Q \MessageBreak (it's probably missing)
%\end{macro}
%\begin{macro}{\pickup@font}
% Then we append our stuff. Everything is done inside a group.
-%\changes{v2.2}{2007/04/15}{\file{letterspace.sty}: setup inside group}
+%\changes{v2.2}{2007/04/15}{\letterspace: setup inside group}
% \begin{macrocode}
\g@addto@macro\pickup@font{\begingroup}
% \end{macrocode}
@@ -7245,7 +7575,8 @@ Q \MessageBreak (it's probably missing)
% catch first order substitutions, like |bx| to |b|, but it will still fail if
% the substituting font is itself substituted.
% \begin{macrocode}
- \ifx\MT@font\@empty
+ \MT@let@cn\MT@font{MT@subst@\expandafter\string\font@name}%
+ \ifx\MT@font\relax
\let\MT@font\font@name
\else
\ifx\MT@font\font@name \else
@@ -7267,6 +7598,22 @@ Q \MessageBreak (it's probably missing)
\let\MT@pickupfont\pickup@font
% \end{macrocode}
%\end{macro}
+%\begin{macro}{\do@subst@correction}
+% Additionally, we hook into \cmd\do@subst@correction, which is called if
+% a substitution has taken place, to record the name of the ersatz font.
+% Unfortunately, this will only work for one-level substitutions.
+%\changes{v2.3}{2007/08/05}{remember substitute font for all times
+% (reported by \contributor Stephan Hennig <stephanhennig\at arcor.de>)}
+% ^^A MID: <46ab4fbb$0$31632$9b4e6d93@newsspool3.arcor-online.net>
+% We have to remember the substitute for the rest of the document, not just for
+% the first time it is called, since we need it every time a font is
+% letterspaced.
+% \begin{macrocode}
+ \g@addto@macro\do@subst@correction
+ {\edef\MT@font{\csname\curr@fontshape/\f@size\endcsname}%
+ \global\MT@let@nc{MT@subst@\expandafter\string\font@name}\MT@font}
+% \end{macrocode}
+%\end{macro}
%\begin{macro}{\add@accent}
%\changes{v1.8}{2005/06/14}{fix: disable micro-typographic setup inside \cmd\add@accent\
% (reported by \contributor Stephan Hennig <stephanhennig\at arcor.de>)}
@@ -7286,6 +7633,7 @@ Q \MessageBreak (it's probably missing)
}
%</package>
}
+%<plain>\fi
%<*package>
% \end{macrocode}
%\end{macro}
@@ -7394,6 +7742,8 @@ Q \MessageBreak (it's probably missing)
%
%\begin{macro}{\microtypecontext}
%\changes{v1.9}{2005/10/03}{new command: change setup context in the document}
+%\changes{v2.3}{2007/08/05}{made robust (reported by \contributor Stephan Hennig <stephanhennig\at arcor.de>)}
+% ^^A MID: <46ab4fbb$0$31632$9b4e6d93@newsspool3.arcor-online.net>
% The user may change the context, so that different setups are possible. This
% is especially useful for multi-lingual documents.
%
@@ -7402,7 +7752,7 @@ Q \MessageBreak (it's probably missing)
% \begin{macrocode}
\def\microtypecontext#1{\MT@addto@setup{\microtypecontext{#1}}}
\MT@addto@setup{%
- \def\microtypecontext#1{%
+ \DeclareRobustCommand\microtypecontext[1]{%
\MT@setup@contexts
\let\MT@reset@context\relax
\setkeys{MTC}{#1}%
@@ -7416,7 +7766,7 @@ Q \MessageBreak (it's probably missing)
%\changes{v2.2}{2007/07/03}{new command: wrapper around \cs{microtypecontext}}
% This is just a wrapper around \cs{microtypecontext}.
% \begin{macrocode}
-\def\textmicrotypecontext#1#2{{\microtypecontext{#1}#2}}
+\DeclareRobustCommand\textmicrotypecontext[2]{{\microtypecontext{#1}#2}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\MT@reset@context}
@@ -7692,7 +8042,7 @@ Q \MessageBreak (it's probably missing)
%\end{macro}
%\changes{v1.7}{2005/03/11}{allow specification of size ranges
% (suggested by \contributor Andreas B\"uhmann <andreas.buehmann\at web.de>)}
-% ^^A private mail, 10/03/2005
+% ^^A private mail, 2005/03/10
% Font sizes may also be specified as ranges. This has been requested by Andreas
% B\"uhmann, who has also offered valuable help in implementing this. Now, it
% is for instance possible to set up different lists for fonts with optical
@@ -7704,7 +8054,7 @@ Q \MessageBreak (it's probably missing)
%\begin{macro}{\MT@lower}
% Ranges will be stored as triplets of |{|\meta{lower bound}|}|\allowbreak
% |{|\meta{upper bound}|}|\allowbreak|{|\meta{list name}|}|.
-% For simple sizes, the upper boundary is -1.
+% For simple sizes, the upper boundary is \textminus1.
% \begin{macrocode}
\def\MT@get@range#1-#2-#3\@nil{%
\MT@ifempty{#1}{%
@@ -7733,9 +8083,9 @@ Q \MessageBreak (it's probably missing)
\MT@get@size
\ifx\MT@val\relax \else
\MT@ifdim\MT@lower>\MT@val{%
- \MT@warning{%
+ \MT@error{%
Invalid size range (\MT@lower\space > \MT@val) in font set
- `\MT@curr@set@name'.\MessageBreak Swapping sizes}%
+ `\MT@curr@set@name'.\MessageBreak Swapping sizes}{}%
\edef\MT@upper{\MT@lower}%
\edef\MT@lower{\MT@val}%
}{%
@@ -7798,12 +8148,14 @@ Q \MessageBreak (it's probably missing)
%\end{macro}
%\changes{v1.9}{2005/07/13}{\cs{DeclareMicrotypeSet}: new key: \texttt{font}}
%\begin{macro}{\MT@define@set@key@font}
+%\changes{v2.3}{2007/11/20}{\texttt{font}: single asterisk means normal font}
% \begin{macrocode}
\def\MT@define@set@key@font#1{%
\define@key{MT@#1@set}{font}[]{%
\global\MT@let@nc{MT@#1list@font@\MT@curr@set@name}\@empty
\MT@map@clist@n{##1}{%
\KV@@sp@def\MT@val{####1}%
+ \MT@ifstreq\MT@val*{\def\MT@val{*/*/*/*/*}}\relax
\expandafter\MT@get@font\MT@val/////\@nil
\MT@exp@two@n\g@addto@macro
{\csname MT@#1list@font@\MT@curr@set@name\expandafter\endcsname}%
@@ -7929,9 +8281,9 @@ Q \MessageBreak (it's probably missing)
\MT@ifdefined@n@TF{MT@#1@setname}\relax{%
\MT@xdef@n{MT@#1@setname}{\@nameuse{MT@default@#1@set}}%
}%
- \MT@warning{%
+ \MT@error{%
The \@nameuse{MT@abbr@#1} set `\@tempa' is undeclared.\MessageBreak
- Using set `\@nameuse{MT@#1@setname}' instead}%
+ Using set `\@nameuse{MT@#1@setname}' instead}{}%
}%
}
% \end{macrocode}
@@ -7977,9 +8329,9 @@ Q \MessageBreak (it's probably missing)
%<debug>\MT@dinfo{1}{declaring default \@nameuse{MT@abbr@#1} set `\@tempa'}%
\MT@xdef@n{MT@default@#1@set}{\@tempa}%
}{%
- \MT@warning{%
+ \MT@error{%
The \@nameuse{MT@abbr@#1} set `\@tempa' is not declared.\MessageBreak
- Cannot make it the default set. Using set\MessageBreak `all' instead}%
+ Cannot make it the default set. Using set\MessageBreak `all' instead}{}%
\MT@xdef@n{MT@default@#1@set}{all}%
}%
}
@@ -8051,7 +8403,7 @@ Q \MessageBreak (it's probably missing)
%\begin{macro}{\LoadMicrotypeFile}
%\changes{v1.7}{2005/03/22}{new command (suggested by
% \contributor Andreas B\"uhmann <andreas.buehmann\at web.de>)}
-% ^^A private mail, 21/03/2005
+% ^^A private mail, 2005/03/21
% May be used to load a configuration file manually.
% \begin{macrocode}
\def\LoadMicrotypeFile#1{%
@@ -8243,7 +8595,7 @@ Q \MessageBreak (it's probably missing)
%\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>)}
-% ^^A private mail, 15/06/2007
+% ^^A private mail, 2007/06/15
% \begin{macrocode}
\def\SetTracking{%
\MT@begin@catcodes
@@ -8253,6 +8605,7 @@ Q \MessageBreak (it's probably missing)
%\end{macro}
%\begin{macro}{\MT@SetTracking}
% Third argument may be empty.
+%\changes{v2.3}{2007/11/20}{sanity check for value}
% \begin{macrocode}
\newcommand*\MT@SetTracking[3][]{%
\let\MT@extra@context\@empty
@@ -8261,7 +8614,12 @@ Q \MessageBreak (it's probably missing)
\def\MT@permutelist{tr@c}%
\setkeys{MT@cfg}{#2}%
\MT@permute
- \MT@ifempty{#3}\relax{\MT@gdef@n{MT@tr@c@\MT@tr@c@name}{#3}}%
+ \KV@@sp@def\@tempa{#3}%
+ \MT@ifempty\@tempa\relax{%
+ \MT@ifint\@tempa
+ {\MT@xdef@n{MT@tr@c@\MT@tr@c@name}{\@tempa}}%
+ {\MT@warning{Value `\@tempa' is not a number in\MessageBreak
+ tracking set `\MT@curr@set@name'}}}%
\MT@end@catcodes
}
% \end{macrocode}
@@ -8392,6 +8750,7 @@ Q \MessageBreak (it's probably missing)
\define@key{MT@#1}{font}[]{%
\MT@map@clist@n{##1}{%
\KV@@sp@def\MT@val{####1}%
+ \MT@ifstreq\MT@val*{\def\MT@val{*/*/*/*/*}}\relax
\expandafter\MT@get@font@and@size\MT@val/////\@nil
\MT@xdef@n{MT@\MT@permutelist @\@tempb\MT@extra@context}%
{\csname MT@\MT@permutelist @name\endcsname}%
@@ -8467,24 +8826,35 @@ Q \MessageBreak (it's probably missing)
% Automatically enable font copying if we find an expansion context.
% After the preamble, check whether font copying is enabled.
% For older \pdftex\ versions, disallow.
+% Also disable for \luatex.
% \begin{macrocode}
\MT@requires@pdftex7{
- \define@key{MT@ex@c}{context}[]{\MT@ifempty{#1}\relax{%
- \MT@glet\MT@copy@font\MT@copy@font@
- \def\MT@extra@context{#1}}%
- }
- \MT@addto@setup{%
+%<*lua>
+ \MT@requires@luatex{
\define@key{MT@ex@c}{context}[]{%
- \ifx\MT@copy@font\MT@copy@font@
- \MT@ifempty{#1}\relax{\def\MT@extra@context{#1}}%
- \else
- \MT@error{\MT@MT\space isn't set up for expansion contexts.\MessageBreak
- Ignoring `context' key\on@line}%
- {Either move the settings inside the preamble,\MessageBreak
- or load the package with the `copyfonts' option.}%
- \fi
+ \MT@error{Expansion contexts currently don't work with luatex.\MessageBreak
+ Ignoring `context' key\on@line}%
+ {Use pdftex instead.}%
}
- }
+ }{
+%</lua>
+ \define@key{MT@ex@c}{context}[]{\MT@ifempty{#1}\relax{%
+ \MT@glet\MT@copy@font\MT@copy@font@
+ \def\MT@extra@context{#1}}%
+ }
+ \MT@addto@setup{%
+ \define@key{MT@ex@c}{context}[]{%
+ \ifx\MT@copy@font\MT@copy@font@
+ \MT@ifempty{#1}\relax{\def\MT@extra@context{#1}}%
+ \else
+ \MT@error{\MT@MT\space isn't set up for expansion contexts.\MessageBreak
+ Ignoring `context' key\on@line}%
+ {Either move the settings inside the preamble,\MessageBreak
+ or load the package with the `copyfonts' option.}%
+ \fi
+ }
+ }
+%<lua> }
}{
\define@key{MT@ex@c}{context}[]{%
\MT@error{Expansion contexts only work with pdftex 1.40.4\MessageBreak
@@ -8589,18 +8959,20 @@ Q \MessageBreak (it's probably missing)
\fi
}
% \end{macrocode}
-% Tracking: Interword spacing.
+% Tracking: Interword spacing and outer kerning.
% The variant with space in case \cs{SetTracking} is called inside an argument
% (\eg, to \cmd\IfFileExists).
% \begin{macrocode}
\MT@define@opt@key{tr}{spacing}
\MT@define@opt@key{tr}{outerspacing}
-\define@key{MT@tr@c}{outer spacing}[]{\setkeys{MT@tr@c}{outerspacing={#1}}}
+\MT@define@opt@key{tr}{outerkerning}
% \end{macrocode}
% Which ligatures should be disabled?
% \begin{macrocode}
\define@key{MT@tr@c}{noligatures}[]%
{\MT@xdef@n{MT@tr@c@\MT@curr@set@name @noligatures}{#1}}
+\define@key{MT@tr@c}{outer spacing}[]{\setkeys{MT@tr@c}{outerspacing={#1}}}
+\define@key{MT@tr@c}{outer kerning}[]{\setkeys{MT@tr@c}{outerkerning={#1}}}
\define@key{MT@tr@c}{no ligatures}[]{\setkeys{MT@tr@c}{noligatures={#1}}}
% \end{macrocode}
%
@@ -9120,9 +9492,10 @@ Q \MessageBreak (it's probably missing)
% \end{macrocode}
%\changes{v1.5}{2004/12/02}{new option: \opt{selected}, by default false
% (suggested by \contributor \thanh{} <hanthethanh\at gmx.net>)}
-% ^^A private mail, 30/11/2004
+% ^^A private mail, 2004/11/30
%\changes{v2.0}{2005/10/04}{(beta:1) new option: \opt{babel}, by default false
% (language-dependent setup suggested by \contributor Ulrich Dirr <ud\at art-satz.de>)}
+% ^^A private mail, 2005/08/27
%\begin{macro}{\MT@def@bool@opt}
% The |true|/|false| options:
% \opt{draft}, \opt{final} (may be inherited from the class options),
@@ -9193,19 +9566,30 @@ Q \MessageBreak (it's probably missing)
% out automatically whether it's required.
% \begin{macrocode}
\MT@requires@pdftex7{
- \MT@def@bool@opt{copyfonts}{%
- \csname if\@tempa\endcsname
- \MT@glet\MT@copy@font\MT@copy@font@
- \else
- \MT@glet\MT@copy@font\relax
- \fi
- }
+%<*lua>
+ \MT@requires@luatex{
+ \MT@def@bool@opt{copyfonts}{%
+ \csname if\@tempa\endcsname
+ \MT@error{The `copyfonts' option doesn't work with luatex}
+ {Use pdftex instead.}%
+ \fi
+ }
+ }{
+%</lua>
+ \MT@def@bool@opt{copyfonts}{%
+ \csname if\@tempa\endcsname
+ \MT@glet\MT@copy@font\MT@copy@font@
+ \else
+ \MT@glet\MT@copy@font\relax
+ \fi
+ }
+%<lua> }
}{
\MT@def@bool@opt{copyfonts}{%
\csname if\@tempa\endcsname
\MT@error{The pdftex version you are using is too old\MessageBreak
to use the `copyfonts' option}
- {Please upgrade pdftex.}%
+ {Upgrade pdftex.}%
\fi
}
}
@@ -9221,7 +9605,8 @@ Q \MessageBreak (it's probably missing)
\fi
}
% \end{macrocode}
-% For \opt{verbose} output, we simply redefine \cs{MT@vinfo}.
+% For \opt{verbose} output, we redefine \cs{MT@vinfo}.
+%\changes{v2.3}{2007/11/05}{turned some warnings into errors}
% \begin{macrocode}
\define@key{MT}{verbose}[true]{%
\let\MT@vinfo\MT@info@nl
@@ -9232,28 +9617,38 @@ Q \MessageBreak (it's probably missing)
% Take problems seriously.
% \begin{macrocode}
\MT@ifstreq\@tempa{errors}{%
- \let\MT@warning\MT@warn@err
+ \let\MT@warning \MT@warn@err
\let\MT@warning@nl\MT@warn@err
}{%
\let\MT@vinfo\@gobble
- \MT@ifstreq\@tempa{false}\relax
- {\MT@optwarn@admissible{#1}{verbose}}%
+% \end{macrocode}
+%\changes{v2.3}{2007/11/05}{new value for \opt{verbose} option: \texttt{silent}
+% (suggested by \contributor Karl Berry <karl\at freefriends.org>)}
+% ^^A private mail, 2007/11/05
+% Cast warnings to the winds.
+% \begin{macrocode}
+ \MT@ifstreq\@tempa{silent}{%
+ \let\MT@warning \MT@info
+ \let\MT@warning@nl\MT@info@nl
+ }{%
+ \MT@ifstreq\@tempa{false}\relax{\MT@optwarn@admissible{#1}{verbose}}%
+ }%
}%
}%
}
% \end{macrocode}
%\changes{v1.5}{2004/12/02}{defaults: \opt{step}: 4
% (suggested by \contributor \thanh{} <hanthethanh\at gmx.net>)}
-% ^^A private mail, 30/11/2004
+% ^^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}'}
% Options with numerical keys:
-% \opt{factor},
-% \opt{stretch},
-% \opt{shrink},
-% \opt{step},
-% \opt{letterspace}.
+% \opt{factor},
+% \opt{stretch},
+% \opt{shrink},
+% \opt{step},
+% \opt{letterspace}.
% \begin{macrocode}
%</package>
\MT@map@clist@n{%
@@ -9511,7 +9906,7 @@ Q \MessageBreak (it's probably missing)
% \end{macrocode}
%\begin{macro}{\MT@define@optionX@}
% The same for |tracking|, |spacing| and |kerning|, which do not have a
-% |nocompatibility| level.
+% |compatibility| level.
% \begin{macrocode}
\MT@requires@pdftex6{
\def\MT@define@optionX@#1#2{%
@@ -9577,6 +9972,7 @@ Q \MessageBreak (it's probably missing)
\MT@info{Reactivate `\MT@MT' package}%
\let\MT@setupfont\MT@saved@setupfont
}
+%</package>
% \end{macrocode}
%
%\subsubsection{Processing the Options}
@@ -9584,10 +9980,11 @@ Q \MessageBreak (it's probably missing)
%\begin{macro}{\MT@ProcessOptionsWithKV}
% Parse options.
% \begin{macrocode}
-%</package>
+%<plain>\ifnum\MT@plain<2
\def\MT@ProcessOptionsWithKV#1{%
\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}{%
@@ -9596,11 +9993,17 @@ Q \MessageBreak (it's probably missing)
\@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.
+% \begin{macrocode}
+%<*plain>
+ \else
+ \edef\MT@temp{\noexpand\setkeys{#1}%
+ {\csname usepkg@options@\usepkg@pkg\endcsname}}%
+ \fi
+%</plain>
\MT@temp
\MT@clear@options
}
@@ -9608,6 +10011,7 @@ Q \MessageBreak (it's probably missing)
%\end{macro}
% \begin{macrocode}
\MT@ProcessOptionsWithKV{MT}
+%<plain>\fi
%<*package>
% \end{macrocode}
% Now we can take the appropriate actions. We also tell the log file which
@@ -9728,8 +10132,9 @@ Q \MessageBreak (it's probably missing)
% \end{macrocode}
%\begin{macro}{\MT@auto}
% Automatic expansion of the font? This new feature of \pdftex\ 1.20 makes the
-% \textit{hz}-algorithm really usable. It must be either `|autoexpand|' or
-% empty (or `|1000|' for older versions of \pdftex).
+% \textit{\fontfamily{pzc}\selectfont hz}~programme really usable.
+% It must be either `|autoexpand|' or empty (or `|1000|' for older versions of
+% \pdftex).
% \begin{macrocode}
\let\MT@auto\@empty
\ifMT@auto
@@ -9864,6 +10269,11 @@ Q \MessageBreak (it's probably missing)
\edef\MT@active@features{\MT@active@features,tr}
\MT@info@nl{Tracking enabled}
\MT@check@active@set{tr}
+% \end{macrocode}
+% Enable protrusion for compensation at the line edges.
+%\changes{v2.3}{2007/07/27}{enable protrusion when tracking is enabled}
+% \begin{macrocode}
+ \ifMT@protrusion\else\pdfprotrudechars\@ne\fi
%<lua> }
\else
\let\MT@tracking\relax
@@ -9893,19 +10303,23 @@ Q \MessageBreak (it's probably missing)
%\begin{macro}{\MT@warn@tracking@DVI}
%\changes{v2.2}{2007/02/11}{warning when letterspacing in DVI mode}
% We issue a warning, when letterspacing in <DVI> mode, since it will probably
-% not work.
+% not work. We also switch on protrusion if it isn't already, to compensate for
+% the letterspacing kerns.
% \begin{macrocode}
\ifnum\pdfoutput<\@ne
\def\MT@warn@tracking@DVI{%
\MT@warning@nl{%
You are using tracking/letterspacing in DVI mode.\MessageBreak
This will probably not work, unless the post-\MessageBreak
- processing program (dvips, dvipdfm(x), ...) is able\MessageBreak
- to create the virtual fonts on the fly}%
+ processing program (dvips, dvipdfm(x), ...) is\MessageBreak
+ able to create the virtual fonts on the fly}%
\MT@glet\MT@warn@tracking@DVI\relax
}
\else
- \let\MT@warn@tracking@DVI\relax
+ \def\MT@warn@tracking@DVI{%
+ \ifnum\pdfprotrudechars<\@ne \global\pdfprotrudechars\@ne \fi
+ \MT@glet\MT@warn@tracking@DVI\relax
+ }
\fi
% \end{macrocode}
%\end{macro}
@@ -9947,7 +10361,7 @@ Q \MessageBreak (it's probably missing)
% ignored with \cmd\pdfadjustinterwordglue\,|>|\,0. Why 1500? Because some
% packages redefine \cmd\frenchspacing. See the |c.t.t| thread
% `\cmd\frenchspacing\ with <AMS> packages and babel', started by Philipp
-% Lehman on 16 August 2005: \nolinkurl{<ddtbaj$rob$1@online.de>}.
+% Lehman on 16 August 2005: \nolinkurl{ddtbaj$rob$1@online.de}.
% \begin{macrocode}
\MT@requires@pdftex6{
\AtBeginDocument{%
@@ -10009,7 +10423,7 @@ Q \MessageBreak (it's probably missing)
% \begin{macrocode}
\@ifpackageloaded{babel}{
\def\MT@shorthandoff#1#2{%
- \MT@info@nl{Switching off #1 babel's active characters}%
+ \MT@info@nl{Switching off #1 babel's active characters (#2)}%
\shorthandoff{#2}}
}{
\def\MT@shorthandoff#1#2{%
@@ -10035,27 +10449,30 @@ Q \MessageBreak (it's probably missing)
\MT@orig@foreign@language{#1}%
\MT@set@babel@context{#1}%
}
+ \ifMT@kerning
% \end{macrocode}
% 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 active characters with \cmd\shorthandoff\
+% \pkg{babel}'s shorthands with \cmd\shorthandoff\
% instead of \cmd\NoAutoSpaceBeforeFDP\
% (reported by \contributor Daniel Flipo <daniel.flipo\at univ-lille1.fr>)}
-% ^^A private mail, 09/10/2006
+% ^^A private mail, 2006/10/09
% \begin{macrocode}
- \ifMT@kerning
\MT@if@false
\MT@with@babel@and@T{french} \MT@if@true
\MT@with@babel@and@T{frenchb} \MT@if@true
\MT@with@babel@and@T{francais}\MT@if@true
\MT@with@babel@and@T{acadian} \MT@if@true
\MT@with@babel@and@T{canadien}\MT@if@true
- \ifMT@if@\MT@shorthandoff{French}{;:!?}\fi
+ \ifMT@if@\MT@shorthandoff{French}{:;!?}\fi
% \end{macrocode}
% Disable Turkish \pkg{babel}'s active characters.
-%\changes{v2.0}{2006/10/10}{(beta:8) option `\opt{babel}': disable Turkish \pkg{babel}'s active characters}
+%\changes{v2.0}{2006/10/10}{(beta:8) option `\opt{babel}': switch off Turkish \pkg{babel}'s shorthands}
+%\changes{v2.3}{2007/10/03}{fix: really switch off Turkish shorthands}
% \begin{macrocode}
- \MT@with@babel@and@T{turkish}{\MT@shorthandoff{Turkish}{:!=}}
+ \MT@if@false
+ \MT@with@babel@and@T{turkish} \MT@if@true
+ \ifMT@if@\MT@shorthandoff{Turkish}{:!=}\fi
\fi
% \end{macrocode}
% In case \pkg{babel} was loaded before \microtype:
@@ -10229,8 +10646,8 @@ Q \MessageBreak (it's probably missing)
% \end{macrocode}
%\todo{check Times variants}
% More Times variants, to be checked: |pns|, |mns| (TimesNewRomanPS); |mnt|
-% (TimesNewRomanMT), |mntx| (TimesNRExpertMT); |mtm| (TimesSmallTextMT); |pte|
-% (Times\-Europa); |ptt|, |pttj| (TimesTen); TimesEighteen; TimesModernEF.
+% (Times\-NewRomanMT, TimesNRSevenMT), |mtm| (TimesSmallTextMT); |pte|
+% (TimesEuropa); |ptt| (TimesTen); TimesEighteen; TimesModernEF.
%
% The \pkg{eulervm} package virtually extends the Euler fonts.
%\changes{v1.9e}{2006/07/28}{declare \texttt{zeur} and \texttt{zeus} (\pkg{eulervm})
@@ -10242,7 +10659,7 @@ Q \MessageBreak (it's probably missing)
% MicroPress's Charter version (\pkg{chmath}).
%\changes{v2.2}{2007/06/08}{declare \texttt{chr} (\pkg{chmath}) as an alias of Charter
% (reported by \contributor Geoff Vallis <gkv\at Princeton.EDU>)}
-% ^^A private mail, 07/06/2007
+% ^^A private mail, 2007/06/07
% \begin{macrocode}
\DeclareMicrotypeAlias{chr} {bch} % CH Math
% \end{macrocode}
@@ -10319,7 +10736,7 @@ Q \MessageBreak (it's probably missing)
%
%\changes{v1.1}{2004/09/14}{remove 8-bit characters from the configuration files
% (suggested by \contributor Harald Harders <h.harders\at tu-bs.de>)}
-% ^^A private mail, 13/09/2004
+% ^^A private mail, 2004/09/13
% 8-bit characters are also admissible, provided they have been declared in the
% input encoding file. They should, however, only be used in private
% configuration files, where the proper input encoding is guaranteed, or else in
@@ -10475,7 +10892,7 @@ Q \MessageBreak (it's probably missing)
%\subsubsection{<QX>}
%\changes{v1.9d}{2006/04/20}{add list for <QX> encoding (contributed by
% \contributor Maciej Eder <maciej_eder\at poczta.onet.pl>)}
-% ^^A private mail, 19/04/2006
+% ^^A private mail, 2006/04/19
% The Central European <QX> encoding.\footnote{
% Thanks to \contributor Maciej Eder <maciej_eder\at poczta.onet.pl>.}
% Ligatures: |009|~(`fk'), |012|~(`fi'), |013|~(`fl'), |014|~(`ffi'),
@@ -10518,7 +10935,7 @@ Q \MessageBreak (it's probably missing)
%\subsubsection{<T5>}
%\changes{v1.9}{2005/08/17}{add list for <T5> (requested by
% \contributor \thanh{} <hanthethanh\at gmail.com>)}
-% ^^A private email, 16/08/2005
+% ^^A private email, 2005/08/16
% The Vietnamese encoding <T5>. It is so crowded with accented and double-accented
% characters that there is no room for any ligatures.
% \begin{macrocode}
@@ -10598,9 +11015,10 @@ Q \MessageBreak (it's probably missing)
%%% TRACKING/LETTERSPACING
\SetTracking
- [ no ligatures = {f} ]
+ [ name = default,
+ no ligatures = {f} ]
{ encoding = {OT1,T1,LY1,OT4,QX} }
- {}
+ { }
% \end{macrocode}
%
@@ -10746,6 +11164,11 @@ Q \MessageBreak (it's probably missing)
% \begin{macrocode}
%<bch> [ name = bch-default ]
% \end{macrocode}
+% 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|),
% \begin{macrocode}
%<cmr> [ name = cmr-default ]
@@ -10754,12 +11177,11 @@ Q \MessageBreak (it's probably missing)
% \begin{macrocode}
%<pad> [ name = pad-default ]
% \end{macrocode}
-% Minion\footnote{
-% Contributed by Harald Harders (\mailto{h.harders@tu-bs.de})}
+% 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, 14/09/2004
+% ^^A private mail, 2004/09/14
% \begin{macrocode}
%<pmn> [ name = pmnj-default ]
% \end{macrocode}
@@ -10767,19 +11189,14 @@ Q \MessageBreak (it's probably missing)
% \begin{macrocode}
%<ppl> [ name = ppl-default ]
% \end{macrocode}
-% Times (|ptm|, |ptmx|, |ptmj|),
+% Times (|ptm|, |ptmx|, |ptmj|)
% \begin{macrocode}
%<ptm> [ name = ptm-default ]
% \end{macrocode}
-% <URW> Garamond (|ugm|)
+% and <URW> Garamond (|ugm|).
%\changes{v1.9c}{2006/01/26}{settings for <URW> Garamond}
% \begin{macrocode}
%<ugm> [ name = ugm-default ]
-% \end{macrocode}
-% and Bitstream Letter Gothic (|blg|).
-%\changes{v2.2}{2007/03/03}{settings for Bitstream Letter Gothic}
-% \begin{macrocode}
-%<blg> [ name = blg-default ]
%<m-t> { encoding = OT1 }
%<cmr> { }
%<bch|blg|pad|pmn|ugm> { encoding = OT1,
@@ -11130,7 +11547,7 @@ Q \MessageBreak (it's probably missing)
% Settings for the <QX> encoding (generic and Times).
%\changes{v1.9d}{2006/04/20}{settings for <QX> encoding (contributed by
% \contributor Maciej Eder <maciej_eder\at poczta.onet.pl>)}
-% ^^A private mail, 19/04/2006
+% ^^A private mail, 2006/04/19
% It also includes some glyphs otherwise in <TS1>.
% \begin{macrocode}
%<*m-t|ptm>
@@ -13396,7 +13813,7 @@ Q \MessageBreak (it's probably missing)
{
% \end{macrocode}
% These settings are only a first approximation. The following reasoning is from
-% a mail from \contributor Ulrich Dirr <ud\at art-satz.de>^^A private mail, 14/06/2005
+% a mail from \contributor Ulrich Dirr <ud\at art-satz.de>^^A private mail, 2005/06/14
%\ifpdf\IfFileExists{justification.jpg}{^^A
% , who also provided the sample in figure~\ref{fig:example-spacing}^^A
%\changes{v2.2}{2007/04/05}{add sample}^^A
@@ -13421,7 +13838,6 @@ Q \MessageBreak (it's probably missing)
% actual character so that the distance between words is optically equal.
%
% When reducing distances the (weighting) order is:
-%
% \begin{itemize}
% \item after commas
% \begin{macrocode}
@@ -13607,11 +14023,12 @@ Q \MessageBreak (it's probably missing)
% The ratio of \fontdim2 to \fontdim6 varies for different fonts, so that
% either the kerning of the colon (which should be a space, \ie, \fontdim2) or
% that of the other punctuation characters (\TeX's \cmd\thinspace, \ie, one
-% sixth of \fontdim6) may be inaccurate. For Times, for example, a thin space
-% would be 665. I don't know whether French typography really wants a thin
-% space, or rather (as it happens to turn out with <CMR>) half a space.
-% (Wikipedia\footnote{\url{http://fr.wikipedia.org/wiki/Espace_typographique}.}
-% claims it should be a quarter of an em, which seems too much to me; then
+% sixth of \fontdim6) may be inaccurate, depending on which |unit| we choose
+% (|space| or |1em|). For Times, for example, a thin space would be 665. I
+% don't know whether French typography really wants a thin space, or rather (as
+% it happens to turn out with <CMR>) half a space.
+% (Wikipedia\footnote{\url{http://fr.wikipedia.org/wiki/Espace_typographique}, 5 July 2007.}
+% claims it should be a quarter of an |em|, which seems too much to me; then
% again, it also says that this \emph{was} a thin space in French typography.)
% \begin{macrocode}
\SetExtraKerning
@@ -13627,8 +14044,8 @@ Q \MessageBreak (it's probably missing)
}
% \end{macrocode}
-% This has the disadvantage that the word following a left guillemet will not be
-% hyphenated. This might be fixed in \pdftex.
+% These settings have the disadvantage that a word following a left guillemet
+% will not be hyphenated. This might be fixed in \pdftex.
% \begin{macrocode}
\SetExtraKerning
[ name = french-guillemets,
@@ -13804,7 +14221,7 @@ normal, and shrunk by 5\%:
% Grave accent \` Left brace \{ Vertical bar \|
% Right brace \} Tilde \~}
%
-% \CheckSum{8918}
+% \CheckSum{9305}
%
% \Finale
%
diff --git a/Master/texmf-dist/source/latex/microtype/microtype.ins b/Master/texmf-dist/source/latex/microtype/microtype.ins
index 2e6b7971760..eeeda7cfeb0 100644
--- a/Master/texmf-dist/source/latex/microtype/microtype.ins
+++ b/Master/texmf-dist/source/latex/microtype/microtype.ins
@@ -1,5 +1,5 @@
% !Mode:: "TeX:STY:UK"
-% $Id: microtype.ins,v 1.14 2007-07-14 16:10:02+02 schlicht Exp schlicht $
+% $Id: microtype.ins,v 1.16 2007-12-24 01:13:32+01 schlicht Exp schlicht $
% ------------------------------------------------------------------------
\input docstrip
\keepsilent
@@ -81,13 +81,14 @@ derived files microtype.sty and letterspace.sty.
Harald Harders <h.harders{at}tu-bs.de>.^^M
\endpreamble
+% ------------------------------------------------------------------------
+
\def\makefile#1#2{\file{#1}{\from{microtype.dtx}{#2}}}
\def\makecfg#1#2{\makefile{mt-#2.cfg}{config,cfg-#1,#2}}
-
\generate{
\makefile{microtype.sty}{package} % add `lua' for luatex support
\usepreamble\lsppreamble
- \makefile{letterspace.sty}{letterspace}
+ \makefile{letterspace.sty}{letterspace,plain}
\usepreamble\cfgpreamble
\makefile{microtype.cfg}{config,cfg-t,m-t}
\usepreamble\fontpreamble