summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/microtype/microtype.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-05-02 01:30:05 +0000
committerKarl Berry <karl@freefriends.org>2016-05-02 01:30:05 +0000
commit966c8c981c3264bf82e6c256dc35c7d2d27f49ba (patch)
tree303845f3b25af7fe42b44c815726a100ad607c51 /Master/texmf-dist/source/latex/microtype/microtype.dtx
parentf385fb50ed694e9ae7173d5f82f78994a0a610b0 (diff)
microtype (30apr16)
git-svn-id: svn://tug.org/texlive/trunk@40825 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/microtype/microtype.dtx')
-rw-r--r--Master/texmf-dist/source/latex/microtype/microtype.dtx1472
1 files changed, 953 insertions, 519 deletions
diff --git a/Master/texmf-dist/source/latex/microtype/microtype.dtx b/Master/texmf-dist/source/latex/microtype/microtype.dtx
index 78c2450e83a..7415061d05c 100644
--- a/Master/texmf-dist/source/latex/microtype/microtype.dtx
+++ b/Master/texmf-dist/source/latex/microtype/microtype.dtx
@@ -2,13 +2,11 @@
% ^^A messages to WinEdt:
% !Mode:: "TeX:DTX:UK"
% !smartQuote:: "English"
-% !DTXversion:: "2.5a"
-% ------------------------------------------------------------------------
-% $Id: microtype.dtx,v 1.72 2013-05-23 20:35:08+02 schlicht Exp schlicht $
+% !DTXversion:: "2.6"
% ------------------------------------------------------------------------
% The `microtype' package
% Subliminal refinements towards typographical perfection
-% Copyright (c) 2004--2013 R Schlicht <w.m.l@gmx.net>
+% Copyright (c) 2004--2016 R Schlicht <w.m.l@gmx.net>
%
% This work may be distributed and/or modified under the conditions of the
% LaTeX Project Public License, either version 1.3c of this license or (at
@@ -19,8 +17,8 @@
% This work has the LPPL maintenance status `author-maintained'.
%
% This work consists of the files microtype.dtx and microtype.ins and the
-% derived files microtype.sty, microtype-pdftex.def, microtype-xetex.def,
-% microtype-luatex.def, microtype.lua and letterspace.sty.
+% derived files microtype.sty, microtype-pdftex.def, microtype-luatex.def,
+% microtype-xetex.def, microtype.lua and letterspace.sty.
%
% Modified versions of the configuration files (*.cfg) may be distributed
% provided that: (1) the original copyright statement is not removed, and
@@ -40,7 +38,7 @@
%<luatex-def> {microtype-luatex.def}
%<xetex-def> {microtype-xetex.def}
%<*package|letterspace|m-t|pdftex-def|luatex-def|xetex-def>
- [2013/05/23 v2.5a
+ [2016/05/01 v2.6
%<package> Micro-typographical refinements
%<letterspace> Robust letterspacing
%<m-t> microtype main configuration file
@@ -48,7 +46,7 @@
%<pdftex-def> pdftex
%<luatex-def> luatex
%<xetex-def> xetex
- (RS)]
+ (RS)]
%</package|letterspace|m-t|pdftex-def|luatex-def|xetex-def>
%<*config>
%<bch> {mt-bch.cfg}[2007/03/03 v1.5 microtype config. file: Bitstream Charter (RS)]
@@ -76,19 +74,21 @@
%</driver>
% Let's abolish CM! We use Charter and Letter Gothic
% (for the pre-built documentation on CTAN):
+ \usepackage[T1]{fontenc}
\usepackage[charter]{mathdesign}
\def\rmdefault{bch} % not scaled
\def\sfdefault{SourceSansPro-TLF}
- \newcommand*{\SourceSansPro@scale}{1.02}
+ \def\SourceSansPro@scale{1.02}
\def\ttdefault{blg}
{\ttfamily\selectfont
\DeclareFontShape{T1}{blg}{k}{n}{<-> ssub * blg/b/n}{}}
+ \usepackage{textcomp}
\usepackage{ifpdf,ifluatex,ifxetex}
%<*!docsty>
+\ifxetex\else
\usepackage[latin1]{\ifluatex lua\fi inputenc}
+\fi
%</!docsty>
-\usepackage[T1]{fontenc}
-\usepackage{textcomp}
\GetFileInfo{\jobname.dtx}
\usepackage[expansion=false,kerning=true]{microtype}[\filedate]
\DeclareMicrotypeSet*[protrusion]
@@ -118,32 +118,32 @@
\IfFileExists{t1mwr.fd}
{\def\textfrak##1{{\fontfamily{mwr}\selectfont ##1}}
\ifpdf
- \SetTracking[no ligatures={f,s,c}]{encoding=T1,family=mwr}{100}
+ \SetTracking[no ligatures={f,s,c}]{encoding=T1,family=mwr}{120}
\fi}
{\IfFileExists{yfonts.sty}
{\usepackage{yfonts}
\ifpdf
- \SetTracking[no ligatures={f,s,c}]{encoding=LY,family=yfrak}{100}
+ \SetTracking[no ligatures={f,s,c}]{encoding=LY,family=yfrak}{120}
\fi}
{\def\textfrak{\rule{.5em}{1.5ex}\@gobble}}}
\tolerance=700
\ifpdf
+ \ifluatex % microtype.dtx finally compiles with 0.35!
+ \microtypesetup{kerning=false}
+ \def\pdftexversion{200} % in TeX Live 2015, they let this to \luatexversion
+ \fi
\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 intolerant as it normally is
\g@addto@macro\macrocode{\microtypesetup{expansion=false}}
- \pdfminorversion=5 % for the OCGs
+ \pdfminorversion=5 % for the OCGs (default since TeX Live 2010)
\fi
% bonus material
\InputIfFileExists{microtype-logo.dtx}\relax\relax
\InputIfFileExists{microtype-lssample.dtx}\relax\relax
- \usepackage{pdfpages}
\else
\let\lsstyle\relax
\fi
-\ifluatex % microtype.dtx finally compiles with 0.35!
- \microtypesetup{kerning=false}
-\fi
\ifxetex
\microtypesetup{kerning=false}
\fi
@@ -177,10 +177,10 @@
\else
\def\bfdefault{b}
\def\Module#1{{\color{theblue}\textoractual{$\langle$}{<}\textit{#1}\textoractual{$\rangle$}{>}}}
- \def\TeX{\textoractual{T\kern-.1667em\lower.4ex\hbox{E}\kern-.125emX\@}{TeX}}
+ \def\TeX{\textoractual{T\kern-.1em\lower.4ex\hbox{E}\kern-.075emX\@}{TeX}}
\DeclareRobustCommand\LaTeX{\textoractual{L\kern-.26em{\sbox\z@ T\vbox to\ht\z@{%
\hbox{\check@mathfonts\fontsize\sf@size\z@\math@fontsfalse\selectfont A}%
- \vss}}}{La}\kern-.1em\TeX}
+ \vss}}}{La}\kern-.075em\TeX}
\def\PackageFont{\ttfamily}
\def\match{{\large\raisebox{-.15em}{\textbullet}}}
{\catcode`\`=\active % indiscernible from ' in Bitstream Letter Gothic
@@ -196,15 +196,15 @@
\def\section{\@startsection {section}{1}{\z@}%
{-3.5ex \@plus -1ex \@minus -.2ex}%
{2.3ex \@plus.2ex}%
- {\normalfont\Large\fontseries{k}\sffamily\color{sectioning}}}
+ {\normalfont\Large\ifcmr\fontseries{bx}\else\fontseries{k}\fi\sffamily\color{sectioning}}}
\def\subsection{\@startsection{subsection}{2}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
- {\normalfont\large\fontseries{k}\sffamily\color{sectioning}}}
+ {\normalfont\large\ifcmr\fontseries{bx}\else\fontseries{k}\fi\sffamily\color{sectioning}}}
\def\subsubsection{\@startsection{subsubsection}{3}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
- {\normalfont\normalsize\fontseries{k}\sffamily\color{sectioning}}}
+ {\normalfont\normalsize\ifcmr\fontseries{bx}\else\fontseries{k}\fi\sffamily\color{sectioning}}}
\def\paragraph{\@startsection{paragraph}{4}%
{0pt}{8pt plus 2pt minus 1pt}{-1em}%
{\normalfont\normalsize\itshape}}
@@ -229,7 +229,7 @@
\let\@oddfoot\@empty
\let\@mkboth\markboth
\def\sectionmark##1{\markboth{\textls*[70]{\MakeUppercase{##1}}}{}}
- \def\subsectionmark##1{\markright{: ##1}}}
+ \def\subsectionmark##1{\markright{\,: ##1}}}
\pagestyle{MTheadings}
% toc
\let\l@section@\l@section
@@ -251,7 +251,7 @@
\fi
\def\defspecial@toc#1#2#3{\long\def#1{%
\ifpdf\phantomsection\specialoutline\pdfbookmark[1]{#2}{#3}\normaloutline\fi
- \section*{#2}\@mkboth{\textls*[60]{\MakeUppercase{#2}}}{}%
+ \section*{#2}\@mkboth{\textls*[70]{\MakeUppercase{#2}}}{}%
\@starttoc{#3}}}
\defspecial@toc\tableofcontents\contentsname{toc}
\defspecial@toc\listoftables\listtablename{lot}
@@ -293,7 +293,7 @@
\expandafter\list
\csname\@itemitem\endcsname
{\ifnum\@itemdepth=\@ne\leftmargin 0pt\fi
- \def\makelabel##1{\hss\llap{##1}}}%
+ \def\makelabel##1{\hss\llap{\color{sectioning}##1}}}%
\fi}
{\endlist}
\newenvironment{enum}[1][0]
@@ -320,20 +320,22 @@
\setlength\arrayrulewidth{0.4pt}
% tables
\setlength\tabcolsep{2pt}
+\newbox\mt@box
+\newdimen\mt@unvdimen
\long\def\@makecaption#1#2{%
\setbox\mt@box\vbox{\llap{\vbox{% \fboxsep = 4pt
\vskip\dimexpr\floatsep-4pt+\fboxrule\relax
\hsize\dimexpr\marginparwidth-\marginparsep-4pt-\fboxrule\relax
\rightskip\dimexpr\marginparsep+4pt+\fboxrule\relax plus 2.5em
- \footnotesize {\sffamily#1:}\\[-\dimexpr\aboverulesep+\cmidrulewidth+3.5\fboxrule]
- \textcolor{theframe}{\vrule width \hsize height\fboxrule}\\[.3\baselineskip]\sffamily#2}}}
+ \footnotesize \sffamily #1:\\[-\dimexpr\aboverulesep+\cmidrulewidth+3.5\fboxrule]
+ \textcolor{theframe}{\rlap{\vrule width \hsize height\fboxrule}}\\[.3\baselineskip] #2}}}
\mt@unvdimen\dimexpr\ht\mt@box+\dp\mt@box\relax
\unvbox\mt@box
\vskip-\mt@unvdimen}
% index and change log
\IndexPrologue{\section{Index}%
- Links (in blue) refer to the page where the corresponding entry is described
- (bold face) resp. occurs. Plain numbers (in black) refer to the code line
+ Numbers in upright shape refer to the page where the corresponding entry is described
+ (bold face) resp. occurs. Numbers in italics refer to the code line
where the corresponding entry is defined (underlined) resp. used.}
\GlossaryPrologue{\section{Change history}\label{sec:changes}\vspace*{-\multicolsep}}
%\setcounter{finalcolumnbadness}{100}
@@ -346,24 +348,30 @@
\end{multicols}
\vspace*{-2\baselineskip}%
\begin{multicols}{2}
- \llap{\sffamily\mdseries\color{thegrey}\footnotesize
- \hbox to 1em{\hss#1\hss}\hskip\marginparsep}%
- \vspace*{-\baselineskip}%
- \IndexParms %\rightskip 15pt
- \let\item\@idxitem
- \raggedcolumns}}
+ \ifpdf{\let\bfseries\empty\let\hfil\empty\phantomsection\pdfbookmark[2]{#1}{#1}}\fi
+ \setbox0\hbox{\sffamily\hss#1}%
+ \ifdim\wd0<1em \setbox0\hbox to 1em{\sffamily\hss#1\hss}\fi
+ \llap{\color{thegrey}\box0\hskip\marginparsep}%
+ \vspace*{-\baselineskip}%
+ \IndexParms %\rightskip 15pt
+ \let\item\@idxitem
+ \raggedcolumns}}
\def\GlossaryParms{\IndexParms
+ \let\indexspace\relax
\def\@idxitem ##1##2\efill{%
\end{multicols}
- \begin{multicols}{2}[\subsubsection*{\if##1v\relax
- \llap{\mdseries\color{thegrey}\footnotesize
- \csname MTversiondate##2\endcsname\hskip\marginparsep}%
- Version ##2\else ##2\fi}][5\baselineskip]
- \ifpdf \phantomsection \pdfbookmark[2]{\if##1v\relax ##2
- (\csname MTversiondate##2\endcsname)\else ##2\fi}{subsection##2}\fi
- \GlossaryParms \rightskip 15pt plus 5pt
- \let\item\@idxitem
- \ignorespaces \makeatletter \scan@allowedfalse}%
+ \ifpdf \vspace{-3.25ex}%
+ \pdfbookmark[2]{\if##1v\relax ##2
+ (\csname MTversiondate##2\endcsname)\else ##2\fi}
+ {subsection\zap@space ##2 \@empty}\fi
+ \begin{multicols}{2}[%
+ \subsubsection*{\if##1v\relax
+ \llap{\mdseries\color{thegrey}\footnotesize
+ \csname MTversiondate##2\endcsname\hskip\marginparsep}%
+ Version ##2\else ##2\fi}][6\baselineskip]
+ \GlossaryParms \rightskip 15pt plus 5pt
+ \let\item\@idxitem
+ \ignorespaces \makeatletter \scan@allowedfalse}%
\def\subitem{\par\hangindent 15pt}%
\def\subsubitem{\subitem\hspace*{7.5pt}}}
% macro code
@@ -422,16 +430,32 @@
\def\OptionSep{{\rmfamily, }} \def\MacroSep{\,} \def\EnvironmentSep{\,}
\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}%
- \index{\quotechar!Options % the `!' will be sorted first
- \actualchar{\protect\bfseries Options:}%
- \levelchar{\protect\ttfamily#1}\encapchar usage}\@esphack}
-\def\SpecialUsageIndex#1{\@bsphack{\index{\quotechar!User Commands
- \actualchar{\protect\bfseries User Commands:}%
- \levelchar\expandafter\@gobble\string#1\actualchar\string\verb
+\def\SpecialOptionIndex#1{\@bsphack
+ \index{\quotechar/#1% sort options as `Symbols'
+ \actualchar{\protect\ttfamily#1}\encapchar usage}%
+ \CatIndex{#1}{option}\@esphack}
+\def\SpecialUsageIndex#1{\@bsphack
+ \index{\quotechar1% sort commands as `Numbers'
+ \actualchar\string\verb
\quotechar*\verbatimchar\string#1\verbatimchar\encapchar usage}%
- \let\special@index\index\SpecialIndex@{#1}{\encapchar usage}}\@esphack}
+ {\let\special@index\index\SpecialIndex@{#1}{\encapchar usage}}\@esphack}
\def\SpecialEnvIndex#1{\CatIndex{#1}{environment}}
+%</driver|docsty>
+% microtype's index style (microtype-gind.ist):
+%<docist>actual '='
+%<docist>quote '!'
+%<docist>level '>'
+%<docist>preamble "\n \\begin{theindex} \n \\makeatletter\\scan@allowedfalse\n\\indexspace"
+%<docist>postamble "\n\n \\end{theindex}\n"
+%<docist>item_x1 "\\efill \n \\subitem "
+%<docist>delim_0 "\\pfill "
+%<docist>delim_1 "\\pfill "
+%<docist>heading_prefix "{\\bfseries\\hfil "
+%<docist>heading_suffix "\\hfil}\\nopagebreak\n"
+%<docist>headings_flag 1
+%<docist>symhead_positive "Options"
+%<docist>numhead_positive "Commands"
+%<*driver|docsty>
\def\PrintDescribeMacro#1{\strut\MacroFont\color{thegreen}\string #1}
\def\PrintDescribeEnv#1{\strut\MacroFont\bslash begin\{{\color{thegreen}#1}\}%
\\*[.25\baselineskip]\strut\bslash end\{{\color{thegreen}#1}\}}
@@ -472,7 +496,8 @@
keywordstyle=[0]\color{thegreen},
keywords=[1]{protrusion,expansion,activate,DVIoutput,draft,final,verbose,
config,factor,auto,stretch,shrink,step,selected,unit,tracking,kerning,
- spacing,letterspace,babel,context,%defersetup,copyfonts, % undocumented
+ spacing,letterspace,babel,context,
+ %defersetup,copyfonts,enable,disable,% undocumented
no ligatures,outer spacing,outer kerning}, % there are three \nobreakspace in this line
keywordstyle=[1]\color{thered},
comment=[l]\%,
@@ -484,8 +509,9 @@
\let\verbatim\relax
\lstnewenvironment{verbatim}[1][]{\lstset{##1}}{}
\ifpdf \IfFileExists{dummy-space.pfb}{%
- \pdfmapline{+dummy-space <dummy-space.pfb}
+ \pdfmapline{=dummy-space <dummy-space.pfb}
\font\dummyspace=dummy-space
+ \pdfglyphtounicode{space}{0020}
\def\lst@outputspace{% copy spaces (from a font that really has a space at x20)
\setbox0\hbox{ }\@tempdima\wd0
\setbox0\hbox{\dummyspace\char"20}\advance\@tempdima-\wd0
@@ -494,7 +520,10 @@
}{
\let\lstset\@gobble
}
-%\def\todo{\changes{zTo Do}{0000/00/00}}
+\def\todo#1{\changes{zTo Do}{0000/00/00}{#1}%
+ \marginpar{\rightskip2\marginparsep plus1em\hangindent1.5em\hangafter-2
+ \smash{\rlap{\raisebox{-3.3ex}{\colorbox{thered}{\Large\color{white}!}}}}%
+ \footnotesize\textcolor{thered}{#1}}}
\let\todo\@gobble
\newcommand\microtypesample[1]{\begin{quote}#1\end{quote}}
\let\emptypdfpageresources\relax
@@ -510,18 +539,18 @@
{hyperref}
\usepackage{hyperxmp}
\usepackage{attachfile}
- %\usepackage{pdfpages}
+ \usepackage{pdfpages}
\hypersetup{
pdftitle={The microtype package},
pdfauthor={R Schlicht <w.m.l@gmx.net>},
pdfsubject={Subliminal refinements towards typographical perfection},
pdfkeywords={TeX, LaTeX, pdfTeX, LuaTeX, XeTeX, typography, micro-typography,
character protrusion, margin kerning, optical alignment, font expansion,
- font scaling, hz, kerning, spacing, glue, letterspacing, tracking, ligatures}
+ font scaling, hz, kerning, spacing, glue, letterspacing, tracking, ligatures},
pdfcopyright={\textcopyright\ 2004--2013 R Schlicht\012%
This work may be distributed and/or modified under the conditions
of the LaTeX Project Public License, either version 1.3c of this
- license or (at your option) any later version.\&\#xA;%
+ license or (at your option) any later version.\012%
This work has the LPPL maintenance status `author-maintained'.},
pdflicenseurl={http://www.latex-project.org/lppl/}
}
@@ -536,19 +565,20 @@
\string\verb\quotechar*\verbatimchar\saved@macroname\verbatimchar\fi
:\levelchar #3\encapchar hyperpage}}%
\@tempa\endgroup\@esphack}
- %\def\theCodelineNo{% % ... and everything else (would double the pdf file size)
- % \reset@font\color{thegrey}\scriptsize
- % \@tempcnta\arabic{CodelineNo}\advance\@tempcnta by\@ne
- % \hypertarget{L:\number\@tempcnta}{\arabic{CodelineNo}}}
- %\def\main#1{\underline{\hyperlink{L:#1}{#1}}}
- %\def\codeline#1{\link@sanitize#1-\@nil{#1}}
- %\def\link@sanitize#1-#2\@nil{\link@@sanitize#1,\@nil}
- %\def\link@@sanitize#1,#2\@nil{\hyperlink{L:#1}}
- %\def\SpecialIndex#1{\@bsphack\special@index{\expandafter\@gobble
- % \string#1\actualchar
- % \string\verb\quotechar*\verbatimchar\string#1\verbatimchar
- % \encapchar codeline}%
- % \@esphack}
+ \def\theCodelineNo{% ... and everything else
+ \reset@font\sffamily\color{thegrey}\scriptsize
+ \@tempcnta\arabic{CodelineNo}\advance\@tempcnta by\@ne
+ \hypertarget{L:\number\@tempcnta}
+ {\textoractual{\arabic{CodelineNo}\ }{}}}% don't copy line numbers
+ \def\main#1{\underline{\itshape\hyperlink{L:#1}{#1}}}
+ \def\codeline#1{{\itshape\link@sanitize#1-\@nil{#1}}}
+ \def\link@sanitize#1-#2\@nil{\link@@sanitize#1,\@nil}
+ \def\link@@sanitize#1,#2\@nil{\hyperlink{L:#1}}
+ \def\SpecialIndex#1{\@bsphack\special@index{\expandafter\@gobble
+ \string#1\actualchar
+ \string\verb\quotechar*\verbatimchar\string#1\verbatimchar
+ \encapchar codeline}%
+ \@esphack}
\def\ctanurl#1{Available from \acronym{CTAN} at
\href{http://mirror.ctan.org/#1}{\nolinkurl{/#1}}}
\DeclareRobustCommand\mailto[1]{\href{mailto:#1}{\nolinkurl{#1}}}
@@ -578,8 +608,6 @@
/BaseState/OFF
/ON [\mt@Protrusion@false \mt@Expansion@false
\ifx\mtl@objects\@undefined\else\mtl@objects\fi] >> >> }
- \newbox\mt@box
- \newdimen\mt@unvdimen
\def\mt@place#1{%
\vskip-\mt@unvdimen
\setbox\mt@box\vbox{#1}%
@@ -594,7 +622,7 @@
\mt@layer{Protrusion#1}{%
\mt@layer{Expansion#2}{%
\mt@place{\microtypesetup{protrusion=#1,expansion=#2}%
- \mt@sample@text}}}}
+ \mt@sample@text\strut}}}}
\def\mt@toggle@sample#1{%
\pdfstartlink user{/Subtype/Link
/BS << /Type/Border/W 1 /S/D /D[4 1] >>
@@ -648,36 +676,39 @@
\let\nolinkurl\url
\let\mailto\texttt
\def\mailtoRS{\mailto{w.m.l@gmx.net}}
+ \let\href\texttt
+ \newcommand\textattachfile[3][]{#3 \textit{[File \file{#2} not attached,
+ because \file{microtype.dtx} hasn't been compiled with \pdftex.]}}
\fi
\ifx\l@ukenglish\@undefined
\hyphenation{let-ter-spac-ing let-ter-spaced let-ter-space}
\else
\language=\l@ukenglish
\fi
-\hyphenation{An-dre-as Ber-nard Ha-rald Mi-cha-el Pe-ter Ste-phan Wolf-ram
- Har-ders Hop-pe Jac-kow-ski Ku-char-czyk Mei-er Mu-the-si-us Zed-ler
- Die-te-rich
- Sveinung % ?
- Marcin % ?
- RazorXsr
+\hyphenation{%An-dre-as Ber-nard Ha-rald Mi-cha-el Pe-ter Ste-phan Wolf-ram
+ %Har-ders Hop-pe Jac-kow-ski Ku-char-czyk Mei-er Mu-the-si-us Zed-ler
+ %Die-te-rich Sveinung Marcin RazorXsr
+ Dyballa Maverick
with-out
Pa-la-ti-no}
\def\fallbacktext#1{{\centering\itshape[#1]\par}}
% abbreviations
-\DeclareRobustCommand\thanh{H\`an Th\^e%
- \ifx\eTeXversion\undefined \llap{\raisebox{0.5ex}{\'{}}}
- \else \llap{\raisebox{0.45ex}{\'{}\kern\dimexpr.05em-2\fontdimen1\font\relax}}
- \fi Th\`anh}
-\def\pdftex{\texorpdfstring{pdf\kern.05em\TeX}{pdfTeX}}
-\def\luatex{\texorpdfstring{Lua\kern-.05em\TeX}{LuaTeX}}
-\def\etex{\mbox{e-\TeX}}
-\def\nonetex{\mbox{\rlap{\kern.05em/}e-\TeX}} % aka. \TeX
+\DeclareRobustCommand\thanhthe{Th\^e%
+ \ifx\eTeXversion\undefined \llap{\raisebox{0.5ex}{\'{}}}%
+ \else \llap{\raisebox{0.45ex}{\'{}\kern\dimexpr.05em-2\fontdimen1\font\relax}}%
+ \fi}
+\DeclareRobustCommand\thanh{H\`an \thanhthe{} Th\`anh}
+\DeclareRobustCommand\pdftex{\texorpdfstring{pdf\kern.05em\TeX}{pdfTeX}}
+\DeclareRobustCommand\luatex{\texorpdfstring{Lua\kern-.05em\TeX}{LuaTeX}}
+\DeclareRobustCommand\etex{\mbox{e-\kern-.075em\TeX}}
+\DeclareRobustCommand\nonetex{\rlap{\kern.05em/}\etex} % aka. \TeX
\def\@reflect#1{\ifdim\fontdimen1\font=0pt \reflectbox{#1}%
\else \rotatebox[origin=c]{180}{#1}\fi}
-\DeclareRobustCommand\xetex{% also reflect the initial `X'?
- \textoractual{\@reflect{X}\lower.4ex\hbox{\kern-.12em\@reflect{E}}}{Xe}%
- \kern-.16em\TeX}
+\def\xe{% also reflect the initial `X'?
+ \textoractual{\@reflect{X}\lower.4ex\hbox{\kern-.066em\@reflect{E}}}{Xe}}
+\DeclareRobustCommand\xetex{\xe\kern-.1em\TeX}
\def\texlive{\TeX~Live}
+\def\miktex{MiK\TeX}
\def\microtype{{\PackageFont microtype}}
\def\letterspace{\pkg{letterspace}}
\def\fontdim{\cmd\fontdimen\,}
@@ -693,10 +724,13 @@
{\catcode`\<=\active
\AtBeginDocument{\catcode`\<=\active
\def<#1>{\acronym{#1}}
- \def\contributor#1 <#2\at#3>{\@contributor{#1}{#2@#3}}
- \DeclareRobustCommand\@contributor[2]{\textit{#1}}
- %\DeclareRobustCommand\@contributor[2]{\href{mailto:#2}{\textit{#1}}}
- }}
+ \def\contributor#1 <#2\at#3>{\@contributor{#1}{#2@#3}}}}
+\DeclareRobustCommand\@contributor[2]{\textit{#1}}
+%\DeclareRobustCommand\@contributor[2]{\href{mailto:#2}{\textit{#1}}}
+%\DeclareRobustCommand\@contributor[2]{\textit{#1}%
+% \expandafter\index\expandafter{\@getlastname#1 \@nil\actualchar %\href{mailto:#2}{#1}
+% #1 (contributor)\encapchar hyperpage}}
+%\def\@getlastname#1 #2\@nil{\ifx\@nil#2\@nil#1\else\@getlastname#2\@nil\fi}
%<*driver>
\CodelineIndex
\EnableCrossrefs
@@ -721,7 +755,7 @@
%
% \GetFileInfo{microtype.dtx}
% \title{\ifx\printlogo\undefined\else\printlogo\fi
-% \textls[70]{The \microtype\ package}\\[.3\baselineskip]\large
+% \textls[40]{The \microtype\ package}\\[.3\baselineskip]\large
% Subliminal refinements towards typographical perfection}
% \author{R Schlicht\\\mailtoRS}
% \date{\fileversion\\\filedate}
@@ -732,7 +766,7 @@
%\noindent
% The \microtype\ package provides a \LaTeX\ interface to the micro-typographic
% extensions that were introduced by \pdftex\ and have since also propagated to
-% \xetex\ and \luatex: most prominently, character protrusion and font
+% \luatex\ and \xetex: most prominently, character protrusion and font
% expansion, furthermore the adjustment of interword spacing and additional
% kerning, as well as hyphenatable letterspacing (tracking) and the possibility
% to disable all or selected ligatures.
@@ -746,16 +780,16 @@
% or \luatex.
% The package will by default enable protrusion and expansion if they can safely
% be assumed to work.
-% Disabling ligatures requires \pdftex\ ($\geq$~1.30) or \luatex, while the
-% adjustment of interword spacing and of kerning only works with \pdftex\ ($\geq$~1.40).
-% Letterspacing is available with \pdftex\ ($\geq$~1.40) or \luatex\ ($\geq$~0.62).
+% Disabling ligatures requires \pdftex\ ($\geq$\,1.30) or \luatex, while the
+% adjustment of interword spacing and of kerning only works with \pdftex\ ($\geq$\,1.40).
+% Letterspacing is available with \pdftex\ ($\geq$\,1.40) or \luatex\ ($\geq$\,0.62).
%
% The alternative package \letterspace, which also works with plain \TeX,
% provides the user commands for letterspacing only, omitting support for all
% other extensions (see section~\ref{sec:lettersp}).
%
%\bigskip\noindent
-% This package is copyright \textcopyright\ 2004\kern.09em--2013 R Schlicht.
+% This package is copyright \textcopyright\ 2004\kern.09em--2016 R Schlicht.
% It may be distributed and/or modified under the conditions of the
% \IfFileExists{lppl.tex}{\hyperref[LPPL:LPPL]}{\href{http://www.latex-project.org/lppl/}}
% {\LaTeX\ Project Public License},
@@ -766,7 +800,7 @@
%
%\newpage
%\emptypdfpageresources ^^A layers of the logo
-%{\sffamily\def\familydefault{\sfdefault}\def\bfdefault{sb}
+%{\sffamily\def\familydefault{\sfdefault}\ifcmr\else\def\bfdefault{sb}\fi
% \tableofcontents
% \listoftables
%}
@@ -826,21 +860,21 @@
% Another micro-typographic technique, which has always been extremely
% difficult to achieve in \TeX, is robust and hyphenatable \emph{letterspacing
% (tracking)}.\footnote{^^A
-% The \cite{soul} package undertook great efforts, but could still fail in
+% The \cite{soul} package undertakes great efforts, but may still fail in
% certain circumstances; even to systematically adjust the tracking of a
-% font throughout the document remained impossible.}
+% font throughout the document remains impossible.}
% Whereas letterspacing can easily be, and often is, abused when applying
% it to lowercase letters, readability may be increased by slightly
% letterspacing (small) capitals or by decreasing the tracking of very large
% uppercase type.
%
-% Setting \emph{additional kerning} for characters of a font is especially
-% useful for languages whose typographical tradition requires certain
+% Setting \emph{additional kerning} for individual characters is especially
+% (but not only) useful for languages whose typographical tradition requires certain
% characters to be separated by a space. For example, it is customary in French
% typography to add a small space before question mark, exclamation mark and
% semi-colon, and a bigger space before the colon and the guillemets. Until
-% now, this could only be achieved by making these characters active (for
-% example by the \pkg{babel} package), which may not always be a robust
+% now, this could only be achieved by making these characters active (as is done,
+% for example, the \pkg{babel} package), which may not always be a robust
% solution. In contrast to the standard kerning built into the fonts
% (which will of course apply as usual), this additional kerning relates to
% single characters, not to character pairs.
@@ -858,8 +892,8 @@
% improvements. I suggest reading the reasoning behind the settings in
% section~\ref{sub:conf-spacing}.
%
-% The possibility, finally, to \emph{disable all ligatures} of a font may be
-% useful for typewriter fonts.
+% The possibility, finally, to \emph{disable all ligatures} in a font is
+% particularly useful for typewriter fonts.
%
%\emptypdfpageresources ^^A layers of the sample
%\bigskip\noindent
@@ -889,7 +923,7 @@
%
%\changes{v2.2}{2007/06/06}{add overview}
%\begin{itemize}
-% \item Enable the respective micro-typographic feature, either via the
+% \item Enable the desired micro-typographic features, either via the
% respective package option or with the \cs{microtypesetup} command
% (section~\ref{sec:options}).
% \item Select the fonts to which this feature should be applied by declaring
@@ -969,15 +1003,13 @@
% This option will systematically change the tracking of the fonts specified in
% the active font set (by default, all small capitals).
% It is not available with \xetex\ (you may use the `|LetterSpace|'
-% option of the \pkg{fontspec} package instead).
-% With \luatex, you need to load the fonts with the \pkg{fontspec} option
-% `|Renderer=Basic|`. See the \cite{fontspec} manual for details.
+% option of the \cite{fontspec} package instead).
%
%\medskip
%\Describe{Option}{kerning}{true,!false,:font set name}
%\DescribeOption{spacing}
% These features do not unconditionally improve the quality of the typeset text:
-% the `spacing' feature is still considered experimental, while the `kerning'
+% the \opt{spacing} feature is still considered experimental, while the \opt{kerning}
% feature only makes sense in special cases.
% Therefore, neither feature is enabled by default. They are not available
% with \xetex\ or \luatex.
@@ -1040,7 +1072,7 @@
%\end{table}
%
%\medskip\noindent
-% In table~\ref{tab:available-features}, you find an overview of which
+% Table~\ref{tab:available-features} presents an overview of which
% micro-typographic features are available and enabled by default for the
% relevant \TeX\ versions and output modes.
%
@@ -1150,7 +1182,6 @@
% to +1000.
%
%
-%\ifcmr\enlargethispage{\baselineskip}\fi ^^A layout
%\subsection{Miscellaneous options}\label{sub:options-misc}
%
%\Describe{Option}{DVIoutput}{true,*false}
@@ -1286,7 +1317,7 @@
% `|basictext|' in the main configuration file as follows:
%\begin{verbatim}
%\DeclareMicrotypeSet{basictext}
-% { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,EU1,EU2},
+% { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,EU1,EU2,TU},
% family = {rm*,sf*},
% series = {md*},
% size = {normalsize,footnotesize,small,large}
@@ -1309,7 +1340,7 @@
% Therefore, the predefined set `|alltext|', which is declared as:
%\begin{verbatim}
%\DeclareMicrotypeSet{alltext}
-% { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1,EU1,EU2} }
+% { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1,EU1,EU2,TU} }
%\end{verbatim}
% is far less restrictive. The only condition here is that the encoding must
% match.
@@ -1352,7 +1383,7 @@
% not allowed.
%
%\medskip\noindent
-% Table~\ref{tab:predefined-font-sets} lists the nine predefined font sets.
+% Table~\ref{tab:predefined-font-sets} lists the eleven predefined font sets.
% They may also be activated by passing their name to the feature options
% \opt{protrusion}, \opt{expansion}, \opt{tracking}, \opt{kerning} and
% \opt{spacing} when loading the package, for example:
@@ -1370,7 +1401,7 @@
%\fcolorbox{theframe}{white}{^^A
%\begin{minipage}{\textwidth}
%\def\arraystretch{1.2}
-%\begin{tabular}{@{}L{65pt}L{80pt}*3{L{41pt}}L{67pt}@{}}
+%\begin{tabular}{@{}L{65pt}L{80pt}*2{L{40pt}}L{43pt}L{67pt}@{}}
% \footnotesize Set name
% & \multicolumn{5}{l}{\footnotesize Font attributes}\\
%\cmidrule{2-6}
@@ -1395,9 +1426,16 @@
% & !
% & ! \\
%\cmidrule(r){1-1}
+% |alltext-nott|\linebreak(|allmath-nott|)
+% & Text encodings, <TS1>\linebreak (<OML>, <OMS>, <U>)
+% & /\cmd\rm|*|/,\linebreak/\cmd\sf|*|/
+% & !
+% & !
+% & ! \\
+%\cmidrule(r){1-1}
% |basictext|\linebreak(|basicmath|)
% & Text encodings \linebreak (<OML>, <OMS>)
-% & /\cmd\rm|*|/,\linebreak /\cmd\sf|*|/
+% & /\cmd\rm|*|/,\linebreak/\cmd\sf|*|/
% & /\cmd\md|*|/
% & !
% & /\cmd\normalsize/, /\cmd\footnotesize/, /\cmd\small/, /\cmd\large/\\
@@ -1406,7 +1444,7 @@
% & Text encodings
% & !
% & !
-% & /\cmd\sc|*|/
+% & /\cmd\sc|*|/,/si/,/scit/
% & ! \\
%\cmidrule(r){1-1}
% |footnotesize|
@@ -1432,7 +1470,7 @@
%\bottomrule
%\end{tabular}
%\vskip4pt\footnotesize
-% `Text encodings' = <OT1>, <T1>, <T2A>, <LY1>, <OT4>, <QX>, <T5>, <EU1>, <EU2>
+% `Text encodings' = <OT1>, <T1>, <T2A>, <LY1>, <OT4>, <QX>, <T5>, <EU1>, <EU2>, <TU>
%\hfill
% `/\bslash\,\dots|*|/' = `/\bslash\,\dots|default|/'
%\vskip3pt
@@ -1440,6 +1478,7 @@
%}\kern-\dimexpr\fboxsep+\fboxrule\relax ^^A end \fcolorbox
%\end{table}
%
+%\ifcmr\else\pagebreak\fi ^^A layout
%\medskip
%\Describe{Macro}{\UseMicrotypeSet}{?features,set name}
% This command activates a font set previously declared by \cs{DeclareMicrotypeSet}.
@@ -1474,22 +1513,21 @@
% three arguments; the first one is optional and may contain additional
% options; in the second argument, you specify the set of fonts to which the
% settings should apply; the third argument contains the actual settings.
+% Here, as in all configuration commands, all spaces are ignored.
%
% The set of fonts to which the settings should apply is declared using the
% same syntax of \meta{font axis}\,|=|\,\meta{value list} pairs as for the
-% command \cs{DeclareMicrotypeSet} (see section~\ref{sec:font-sets}). Values
-% with an asterisk will be translated immediately instead of at the end
-% of the preamble.
+% command \cs{DeclareMicrotypeSet} (see section~\ref{sec:font-sets}), with the
+% only difference that values with an asterisk will be translated immediately
+% instead of at the end of the preamble.
% To find the matching settings for a given font the package will try all
% combinations of font encoding, family, series, shape and size,
% with decreasing significance in this order. For instance, if both settings for
% the current family (say, |T1/cmr///|) and settings for italic fonts in the
% normal weight (|T1//m/it/|) exist, those for the |cmr| family would
% apply.
-%\changes{v1.7}{2005/03/23}{remove table of match order}^^A
-%^^A \footnote{
-%^^A For the interested, table~\ref{tab:match-order} on
-%^^A page~\pageref{tab:match-order} presents the exact order.}
+%\changes{v1.7}{2005/03/23}{remove table of match order
+% (now table~\ref{tab:match-order} on page~\pageref{tab:match-order})}
% The encoding must always match.
%\iffalse
%^^A TODO: When using native TrueType\slash OpenType fonts (with \xetex\ or \luatex, and
@@ -1497,6 +1535,20 @@
%^^A certain |features|.
%\fi
%
+% The characters may be specified either as a single letter (|A|),
+% as a text symbol command (\cmd\textquoteleft), or as a slot number (resp.
+% Unicode number for \luatex\ or \xetex): three or more digits for decimal
+% notation, prefixed with~|"| for hexadecimal, with~|'| for octal numerals (\eg, the
+% `fl' ligature in <T1> encoding:~|029|, |"1D|, |'35|).
+% \mbox{8-bit} (and even <UTF-8>) characters may be entered directly or in
+% \LaTeX's traditional \mbox{7-bit} notation: both |\"A| and \expandafter|\"A|
+% are valid, provided the character is actually declared in both the input and
+% the font encoding.
+% With \luatex\ or \xetex, you may additionally specify a (font-specific)
+% glyph name, prefixed with `|/|' (\eg, the `fl' ligature as |/f_l|).
+% Note that you also have the possibility to declare lists
+% of characters that should inherit settings (see section~\ref{sub:inherit}).
+%
%\subsection[Character protrusion]
% {Character protrusion \requires{\pdftex~0.14f,\luatex~0.30,\xetex~0.9997}}
% \label{sub:protrusion}
@@ -1518,21 +1570,6 @@
%
%\paragraph{The protrusion settings}
% consist of \meta{character}\,|=|\,\meta{protrusion factors} pairs.
-%
-% The characters may be specified either as a single character (|A|),
-% as a text symbol command (\cmd\textquoteleft), or as a slot number (resp.
-% Unicode number for \luatex\ or \xetex): three or more digits for decimal
-% notation, prefixed with~|"| for hexadecimal, with~|'| for octal (\eg, the
-% `fl' ligature in <T1> encoding:~|029|, |"1D|, |'35|).
-% \mbox{8-bit} (and even <UTF-8>) characters may be entered directly or in
-% \LaTeX's traditional \mbox{7-bit} notation: both |\"A| and \expandafter|\"A|
-% are valid, provided the character is actually declared in both the input and
-% the font encoding.
-% With \luatex\ or \xetex, you may additionally specify a (font-specific)
-% glyph name, prefixed with `|/|' (\eg, the `fl' ligature as |/f_l|).
-% Note that you also have the possibility to declare lists
-% of characters that should inherit settings (see section~\ref{sub:inherit}).
-%
% The protrusion factors designate the amount that a character should be
% protruded into the left margin (first value) respectively into the right
% margin (second value). By default, the values are relative to the character
@@ -1540,18 +1577,18 @@
% fully into the margin, while, for example, with a value of 50 it would be
% protruded by 5\% of its width. Negative values are admitted, as well as
% numbers larger than 1000 (but effectively not more than \EM{1} of the font).
-% You can omit either number if the character should not be protruded on that
+% You may omit either number if the character should not be protruded on that
% side, but must not drop the separating comma.
%
%\paragraph{Options:}
%\begin{options}
% \item[\key{name}] You may assign a name to the protrusion settings, so that you
% are able to load it by another list.
-% \item[\key{load}] You can load another list (provided, you previously assigned
+% \item[\key{load}] You can load another list (provided, you 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
-% Thus, the configuration may be simplified considerably. You can for
+% In this way, 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
% (since the value that comes last will take precedence). Font settings
@@ -1616,7 +1653,7 @@
% If the \opt{selected} option has been set to true, 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
+% in general but for a particular font (set) all characters should be
% expanded or shrunk by the same amount, you would have to declare an empty
% list for these fonts.
%
@@ -1651,7 +1688,7 @@
% value will be used (that is, no calculation will take place).
%
% As a practical example, suppose you have a paragraph containing a widow
-% that could easily be avoided by shrinking the font a little bit more.
+% that could be avoided by shrinking the font a bit more.
% In conjunction with the |context| option (see section~\ref{sec:context}
% for further details), you could thus allow for more expansion in this
% particular paragraph:
@@ -1665,15 +1702,15 @@
% { }
% % ... END PREAMBLE
% {\microtypecontext{expansion=sloppy}%
-% This paragraph contains an `unnecessary' widow.}
+% This paragraph contains a `fussy' 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
-% that \pdftex\ prohibits the use of fonts with different expansion
+% expansion parameters only works with \pdftex\ version 1.40.4 or later.^^A
+% \footnote{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.
+% the |sloppy| context has to be applied to complete paragraphs.
% \item[\key{factor}]
% This option provides a different method to alter expansion settings for
% certain fonts, working around the restriction just mentioned. The
@@ -1746,7 +1783,7 @@
% which accepts the same values as \texttt{spacing}, it may be adjusted
% independently.
% \item[\key{outer kerning}]
-% If, on the other hand, no interword space precedes of follows, you may
+% If, on the other hand, no interword space precedes or 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 \EM{1} (or the current
@@ -1756,8 +1793,8 @@
% by default equal to the current letterspace amount. To remove kerning on
% both sides, you would write `|outer kerning={0,0}|'.
% \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
+% By default, ligatures in letterspaced fonts will be
+% constructed as usual, which may be advisable when changing the
% tracking by only a small amount. For larger letterspacing amounts, on
% the other hand, the normal letter space within ligatures would have
% displeasing \textls[150]{e\lslig{ff}ects}.
@@ -1765,10 +1802,9 @@
% ligatures should be disabled; only the character that begins a ligature
% must be specified.
% If the key is given without a value, \emph{all} ligatures of the font
-% will be disabled. This is not recommended, however, since it also
-% entails that kerning will be switched off.\footnote{
-% The inseparable connexion of ligatures and kerns is a limitation of
-% \TeX\ that will not be lifted before the advent of \luatex.}
+% will be disabled. With \pdftex, this is not recommended, however,
+% since it entails that kerning will be switched off, too. With \luatex,
+% there is no such limitation.
% 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
@@ -1792,7 +1828,7 @@
% 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):
+% (which are in no way recommended; they only serve illustrative purposes):
%\begin{verbatim}
%\SetTracking
% [ no ligatures = {"\anchorarrow{nolig}"f},
@@ -1832,7 +1868,7 @@
%\fi
% example, suppose you want to space out all small
% capitals by \EM{50/1000}, fonts smaller than \cmd\small\ by \EM{0.02}, and to
-% decrease the tracking of large type by \EM{0.02}. You can achieve this with
+% decrease the tracking of large type by \EM{0.02}. This could be achieved with
% the following settings:
%^^A there's a \nobreakspace ahead!
%\begin{verbatim}
@@ -1860,7 +1896,7 @@
%\subsection[Additional kerning]
% {Additional kerning \requires{\pdftex~1.40}}
% \label{sub:kerning}
-%
+%\todo{Rename to \cs{SetSidebearing}}
%\Describe{Macro}{\SetExtraKerning}{?options,set of fonts,kerning settings}
% With this command, you can fine tune the extra kerning. In contrast to
% standard kerning, which is always associated with a \emph{pair} of
@@ -1872,11 +1908,11 @@
%
%\emptypdfpageresources ^^A layers of letterspacing illustration
%
-% I should not neglect to mention a limitation of this additional kerning:
+% It should not be neglected to mention a limitation of this feature:
% words \emph{immediately following} such a kern (not separated by a space)
% will not be hyphenated, unless you insert the breakpoints manually, \eg, for
% kerning after the apostrophe, `|l'apos\-trophe|'. This restriction of \pdftex\
-% will hopefully be lifted soon.
+% will hopefully be lifted some time.
%
%\paragraph{The kerning settings}
% are specified as pairs of \meta{character}\,|=|\,\meta{kerning values}, where
@@ -1969,7 +2005,7 @@
% after this character if it appears before an interword space, second, the
% additional stretch amount, and third, the additional shrink amount. All
% values may also be negative, in which case the dimensions will be decreased.
-% Not all values have to be specified, however, the settings must contain the
+% Not all values have to be specified, but the settings must always contain the
% two separating commas.
%
%\paragraph{Options:}
@@ -1981,8 +2017,9 @@
% measured. Possible values are: |character|, a \meta{dimension} and,
% additionally, |space|. The latter will measure the values in thousandths
% of the respective space dimension set by the font. By default, the unit
-% is measured by the space dimensions. For example, with these
+% is measured by the space dimensions. For example, with the following
% (nonsensical) settings:
+%\pagebreak ^^A layout
%\begin{verbatim}
%\SetExtraSpacing
% [ unit = space ] % default
@@ -2062,7 +2099,7 @@
% \footnotesize Font family (<NFSS> code)
% & \multicolumn{2}{l}{\footnotesize Features}\\
%\cmidrule{2-3}
-% & \footnotesize Encodings
+% & \footnotesize Encodings [Scripts]
% & \footnotesize Shapes\\
%\cmidrule{1-1}\cmidrule{2-2}\cmidrule{3-3}
% Generic
@@ -2099,18 +2136,18 @@
% & <OT1>, <OT4>, <T1>, <LY1>, <QX>, (<TS1>)\fnref{fn:incmpl}
% & n, it, (sl)\fnref{fn:it-sl}, sc \\
% Latin Modern Roman
-% & <EU1>, <EU2> [Latin, Greek]
+% & <EU1/2>, <TU> [Latin, Greek]
% & n, it, (sl)\fnref{fn:it-sl}\\
-% Charis SIL
-% & <EU1>, <EU2> [Latin, Cyrillic, Greek]
+% Charis <SIL>
+% & <EU1/2>, <TU> [Latin, Cyrillic, Greek]
% & n, it, sc\\
%\iffalse ^^A provided with the EB Garamond package
-% EB Garamond
-% & <EU1>, <EU2> [Latin, Cyrillic, Greek]
+% <EB> Garamond
+% & <EU1/2>, <TU> [Latin, Cyrillic, Greek]
% & n, it, sc, si\\
%\fi
-% Palatino Linotype\footnote{Alias: \TeX\ Gyre Pagella, Palatino LT Std, Palatino}
-% & <EU1>, <EU2> [Latin]
+% Palatino Linotype\footnote{Aliases: \TeX\ Gyre Pagella, Palatino <LT> Std, Palatino}
+% & <EU1/2>, <TU> [Latin]
% & n, it, sc\\
% Computer Modern math (|cmsy|, |cmm|)\footnote{Aliases: Latin Modern (|lmsy|, |lmm|)}
% & <OML>/<OMS>
@@ -2136,7 +2173,7 @@
% On its search for a configuration file, the package will also try to remove
% from the font name a suffix of one or more letters that denotes a `variant'
% of the base font (cf. Karl Berry's \cite{fontname}). It is thus possible to
-% put settings for, \eg, the fonts |padx| (expert set), |padj| (oldstyle
+% put settings for, \eg, the fonts |padx|~(expert set), |padj| (oldstyle
% numerals) and |pad| (plain) into one and the same file \file{mt-pad.cfg}.
% This command expects a comma-separated list of variant suffixes. The starred
% version appends the suffix(es) to the existing list. The default declaration
@@ -2145,7 +2182,6 @@
%\DeclareMicrotypeVariants{x,j,w,a,d,0,1}
%\end{verbatim}
%
-%\pagebreak ^^A layout
%\medskip
%\Describe{Macro}{\DeclareMicrotypeAlias}{font name,alias font}
% This command may be used for fonts that are very similar, or actually the
@@ -2160,7 +2196,6 @@
% not find settings for it, also try the font |cmr|. In fact, you will find
% this very line, along with some others, in the default configuration file.
%
-%\enlargethispage\baselineskip ^^A layout
%\medskip
%\Describe{Macro}{\LoadMicrotypeFile}{font name}
% In rare cases, it might be necessary to load a font configuration file
@@ -2178,18 +2213,18 @@
% The \microtype\ package also allows applying different micro-typographic
% settings to the fonts depending on the context in which they occur. This
% opens up the space for infinite possibilities of tweaking the document's
-% appearance.\footnote{
-% With \luatex, you have to load the fonts with the \pkg{fontspec} option
-% `|Renderer=Basic|'.}
-% ^^A Otherwise, OpenType feature will be ignored (+smcp being one of them)
+% appearance.
+% ^^A\footnote{
+% ^^A With \luatex, you have to load the fonts with the \cite{fontspec} option
+% ^^A `|Renderer=Basic|'.} ^^A Otherwise, OpenType feature will be ignored (+smcp being one of them)
%
%\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 in the current group. To each feature
-% (\key{protrusion}, \key{expansion}, \key{tracking}, \key{spacing} and
-% \key{kerning}), one context may be assigned. Consequently, only settings with
-% the corresponding `|context|' keyword will be applied.
+% (\key{protrusion}, \key{expansion}, (or \key{activate} as a shortcut for both),
+% \key{tracking}, \key{spacing} and \key{kerning}), one context may be assigned.
+% Consequently, only settings with the corresponding `|context|' keyword will be applied.
%
%\medskip
%\Describe{Env}{microtypecontext}{context assignments}
@@ -2223,6 +2258,7 @@
% \leavevmode \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi
% \new@makefnmark \ifhmode\spacefactor\@x@sf\fi \relax}
%\end{verbatim}
+%\ifcmr\else\enlargethispage\baselineskip\fi ^^A layout
% For the \pkg{memoir} class, you would additionally have to disable
% auto-detection of multiple footnotes, which prevents protrusion:
%\begin{verbatim}
@@ -2302,6 +2338,7 @@
% the \opt{letterspace} package option, with decreasing significance in this
% order.
%
+%\pagebreak ^^A layout
%\medskip
%\Describe{Macro}{\lslig}{ligature}
% Since the commands \cs{textls} and \cs{lsstyle} will also evaluate the
@@ -2315,7 +2352,7 @@
% least the \pkg{yfonts} package realises the short~s~(`\textfrak{s:}') as the
% ligature~`|s:|'. On the other hand, the `ct'~ligature and the other `long~s'
% ligatures often found in Fraktur fonts should be suppressed. There are two
-% ways to solve this problem: either don't disable the `|s|' and/or `|c|'
+% ways of solving this problem: either don't disable the `|s|' and/or `|c|'
% ligatures and break those that need to be broken up by inserting
% `|{\kern0pt}|' or \pkg{babel}'s \verb="|= shortcut; or disable them and
% protect those ligatures that need to be protected by enclosing them in the
@@ -2323,14 +2360,14 @@
% (namely, `\textls{\def\!#1{\textcolor{thered}{\lslig{#1}}}^^A
% \def\?#1{\textcolor{thegreen}{#1}}^^A
% \textfrak{Au\!{s:}\?{si}\!{ch}t\!{s:}lo\?{si}gkeit}}',
-% ligatures shown in red, inhibited ligatures in green).
+% with ligatures shown in red, inhibited ligatures in green).
%
%\begin{verbatim}[morekeywords={[0]{\kern}}]
-%\SetTracking[no ligatures={f}]{encoding = LY, family = yfrak}{100}
+%\SetTracking[no ligatures={f}]{encoding = LY, family = yfrak}{120}
%\textfrak{\lsstyle Aus:s{\kern0pt}ichts:los{\kern0pt}igkeit}
%\end{verbatim}
%\begin{verbatim}
-%\SetTracking[no ligatures={f,s,c}]{encoding = LY, family = yfrak}{100}
+%\SetTracking[no ligatures={f,s,c}]{encoding = LY, family = yfrak}{120}
%\textfrak{\lsstyle Au\lslig{s:}si\lslig{ch}t\lslig{s:}losigkeit}
%\end{verbatim}
%
@@ -2377,7 +2414,7 @@
%\end{verbatim}
% Only the character that begins the ligature(s) should be specified. This
% command may only be used in the preamble, and only once.\footnote{
-% With \luatex, you have to load the fonts with the \pkg{fontspec} option
+% With \luatex, you have to load the fonts with the \cite{fontspec} option
% `|Renderer=Basic|'.}
% ^^A Otherwise, it won't work at all
%
@@ -2438,14 +2475,15 @@
% will solely decide by examining its attributes. Therefore, you have to take
% care of disabling protrusion in |verbatim| environments for yourself (that
% is, if you don't want to disable protrusion for the typewriter font
-% altogether, by choosing a different font set). While the \cs{microtypesetup}
-% command has of course been designed for cases like this, you might find it
-% tiresome to repeat it every time if you are using the |verbatim| environment
-% frequently. The following line, added to the document's preamble, would serve
-% the same purpose:
+% altogether, by activating, say, the font set `|alltext-nott|').
+% While the \cs{microtypesetup} command has of course been designed for cases
+% like this, you may find it tiresome to repeat it every time if you are
+% using the |verbatim| environment frequently. The following line (which requires
+% the \pkg{etoolbox} package), added to the document's preamble, would serve the same purpose:
%\changes{v2.3e}{2009/07/21}{suggest to patch \cmd\@verbatim\ instead of \cmd\verbatim}
+%\changes{v2.6}{2016/03/07}{suggest to use \pkg{etoolbox} to patch \cmd\verbatim}
%\begin{verbatim}
-%\g@addto@macro\@verbatim{\microtypesetup{activate=false}}
+%\AtBeginEnvironment{verbatim}{\microtypesetup{activate=false}}
%\end{verbatim}
% If you are using the \pkg{fancyvrb} or the \pkg{listings} package, this is
% not necessary, since their implementation of the corresponding environments
@@ -2500,7 +2538,7 @@
% the \pkg{babel} package before \microtype.
%\changes{v2.5}{2012/09/11}{add hint about \luatex\ compatibility}
% \item Before this package was fully compatible with \luatex, the following
-% method of enabling expansion and protrusion with the \pkg{fontspec}
+% method of enabling expansion and protrusion with the \cite{fontspec}
% package was most often found to be recommended:
%\begin{verbatim}[deletekeywords={[1]{expansion,protrusion}},belowskip=0pt]
%\newfontfeature{Microtype}{protrusion=default;expansion=default}
@@ -2510,26 +2548,33 @@
% basically override all of the settings made by \microtype\ -- despite
% the naming, the above lines have nothing to do with this
% package.\footnote{^^A
-% They make use of features provided by \pkg{luaotfload} (via \pkg{fontspec}).}
-%\changes{v2.5a}{2013/05/21}{add hint about \pkg{fontspec} having to be loaded first}
-% \item With \luatex, load \pkg{fontspec} before \microtype.
-% ^^A otherwise the \pkg{luaotfload} function luaotfload.aux.slot_of_name wouldn't be picked up
+% They make use of features provided by \cite{luaotfload} (via \cite{fontspec}).}
%\changes{v2.3c}{2008/11/11}{add hint about partial incompatibility with \pkg{CJK}}
-% \item It is currently not possible to create character-specific settings for
+% \item With \pdftex, it is currently not possible to create character-specific settings for
% Chinese\slash Japanese\slash Korean fonts. Therefore, the only
-% micro-typographic extension that can be made to work with the
-% \pkg{CJK} package is font expansion.
+% micro-typographic extension that can be made to work with
+% \pkg{CJK} fonts is (non-selected) font expansion.
+%\changes{v2.6}{2015/11/03}{add hint about partial incompatibility with \pkg{xeCJK} and \pkg{luatexja}}
+% \item When used with the \pkg{xeCJK} package or the \pkg{luatexja} package,
+% text commands (\eg, |\'A|, |\textless|) in the configuration will not be understood.
+% You therefore have to ensure that \microtype\ will encounter none of them.
+% This requires, firstly, that the glyphs be specified only as single (possibly Unicode)
+% characters, as numbers, or as glyph names (cf. section~\ref{sec:fine-tuning});
+% and secondly, if you are using a font for which pre-defined settings do not exist,
+% that you create these settings yourself (because otherwise, the default settings
+% will be loaded, which do contain text commands).
%\end{itemize}
%
%\changes{v1.8}{2005/06/23}{add hint about error messages}
-%\paragraph{Possible error messages and how to get rid of them:}
+%\paragraph{Possible error messages and how to get rid of them (\textcolor{thegreen}{specs} may differ):}
%\begin{itemize}
%\lstset{deletekeywords={[1]{expansion,auto}},belowskip=-\smallskipamount,frame=none,
-% xleftmargin=0pt,backgroundcolor=,basicstyle=\MacroFont\footnotesize}
+% xleftmargin=0pt,backgroundcolor=,basicstyle=\MacroFont\footnotesize,
+% delim=[is][\itshape\color{thegreen}]{<}{>}}
%\changes{v1.9a}{2005/11/15}{add explanation for error message in <DVI> mode}
% \item
%\begin{verbatim}
-%! Font csnameendcsname=cmr10+20 at 10.0pt not loadable: Metric (TFM) file not found.
+%! Font csnameendcsname=<cmr10+20 at 10.0pt> not loadable: Metric (TFM) file not found.
%\end{verbatim}
% This error message will occur if you are trying to employ font expansion
% while creating <DVI> output. Remember that \emph{automatic} font expansion
@@ -2553,7 +2598,7 @@
% regard to older \pdftex\ versions}
% \item
%\begin{verbatim}
-%Warning: pdflatex: font ptmr8r cannot be expanded (not an included Type1 font)
+%Warning: pdflatex: font <ptmr8r> cannot be expanded (not an included Type1 font)
%\end{verbatim}
% and the <PDF> viewer complains about a missing font, \eg, Adobe Reader thusly:
%\begin{verbatim}[aboveskip=\smallskipamount]
@@ -2569,7 +2614,7 @@
%\changes{v1.9a}{2005/11/15}{add explanation for error message with non-Type\,1 fonts}
% \item
%\begin{verbatim}
-%Warning: pdflatex (file ecrm1000+20): Font ecrm1000+20 at 1200 not found
+%Warning: pdflatex (file <ecrm1000+20>): Font <ecrm1000+20 at 1200> not found
%\end{verbatim}
% Furthermore, \pdftex\ versions older than 1.40 require Type\,1 fonts for
% automatic font expansion. When you receive a message like the above, you are
@@ -2581,17 +2626,17 @@
% and \texttt{font\textunderscore mem\textunderscore size}}
% \item
%\begin{verbatim}
-%! Font T1/cmr/m/n/10=ecrm1000 at 10.0pt not loaded: Not enough room left.
+%! Font <T1/cmr/m/n/10>=<ecrm1000 at 10.0pt> not loaded: Not enough room left.
%\end{verbatim}
% Memory parameter `|font_mem_size|' too small.
% \item
%\begin{verbatim}
-%! TeX capacity exceeded, sorry [maximum internal font number (font_max)=2000].
+%! TeX capacity exceeded, sorry [maximum internal font number (font_max)=<2000>].
%\end{verbatim}
% Memory parameter `|font_max|' too small.
% \item
%\begin{verbatim}
-%! TeX capacity exceeded, sorry [PDF memory size (pdf_mem_size)=65536].
+%! TeX capacity exceeded, sorry [PDF memory size (pdf_mem_size)=<65536>].
%\end{verbatim}
% Memory parameter `|pdf_mem_size|' too small (\pdftex\ versions older than 1.30).
%
@@ -2599,7 +2644,7 @@
% fonts, \pdftex\ may be running out of some kind of memory. It can be
% increased by setting the respective parameter to a larger value. For
% web2c-based systems, \eg, \texlive, change the settings in \file{texmf.cnf},
-% for MiK\TeX, in the file \file{miktex.ini} (2.4 or older) resp.
+% for \miktex, in the file \file{miktex.ini} (2.4 or older) resp.
% \file{pdflatex.ini} (2.5 or newer).
%
%\changes{v2.0}{2007/01/05}{add hint about warning when tracking \emph{and}
@@ -2620,8 +2665,9 @@
% \href{http://mirror.ctan.org/macros/latex/contrib/microtype/}
% {\acronym{CTAN}}.
% For the source code of the logo on the title page and of the letterspacing
-% sample from section~\ref{sub:tracking}, see appendix~\ref{sec:title-logo} and
-% \ref{sec:letterspace-ill}.
+% sample from section~\ref{sub:tracking}, see the appendices~\ref{sec:title-logo}
+% and \ref{sec:letterspace-ill}.
+%\changes{v2.5a}{2013/05/23}{add notes on typesetting the documentation}
% If you want to re-typeset the documentation, read the comments at the end of
% \file{microtype.dtx}.
%
@@ -2645,13 +2691,13 @@
%\section{Acknowledgments}
%
% This package would be pointless if
-% \contributor\thanh{} <thanh\at pdftex.org>
+% \contributor H\`an \thanhthe{} Th\`anh <thanh\at pdftex.org>
% hadn't created the \pdftex\ programme in the first place, which introduced
% the micro-typographic extensions and made them available to the \TeX\ world.
% Furthermore, I thank him for helping me to improve this package, and not
% least for promoting it in \cite{ThanhPracTeX}, \cite{ThanhEuroTeX07} and ^^A comma, to avoid the Three Ands Falls
% elsewhere. I also thank him and the rest of the \pdftex\ team, and more
-% recently also of the \luatex\ team, for refuting the idea that \TeX\ is dead,
+% recently also the \luatex\ team, for refuting the idea that \TeX\ is dead,
% and for fixing the bugs I find.
%
% \contributor Harald Harders <h.harders\at tu-bs.de>
@@ -2676,7 +2722,7 @@
% \contributor Hendrik Vogt <hendrik.vogt\at tu-dresden.de>,
% who made substantial improvements to the Computer Modern Roman italic settings.
% I thank
-% \contributor Loren B. Davis <davislo\at eecs.oregonstate.edu>
+% \contributor Loren~B. Davis <davislo\at eecs.oregonstate.edu>
% for providing protrusion settings for OpenType versions of Palatino Linotype.
% I am also very much indebted to
% \contributor \'Elie Roux <elie.roux\at telecom-bretagne.eu>,
@@ -2693,14 +2739,13 @@
% \contributor Peter Wilson <herries.press\at earthlink.net>
% kindly provided a hook in his \pkg{ledmac}/\pkg{ledpar} packages, so that
% critical editions can finally also benefit from character protrusion.
-%\iffalse
-% Useful not only for his \pkg{shapepar} package,
+% Likewise,
% \contributor Donald Arseneau <asnd\at triumf.ca>
-% suggested the new commands \cs{microtypeunhbox} and \cs{microtypeunhcopy}.
-%\fi
+% patched his \pkg{shapepar} package to accommodate protrusion.
%
% Additionally, the following people have reported bugs, made suggestions or
-% helped otherwise (in chronological order):
+% helped otherwise (in chronological order, quotes indicate
+% \href{http://tex.stackexchange.com/users/}{TeX.SX} user names):
% \contributor Tom Kink <kink\at hia.rwth-aachen.de>,
% \contributor Herb Schulz <herbs\at wideopenwest.com>,
% \contributor Michael Hoppe <mh\at michael-hoppe.de>,
@@ -2708,7 +2753,7 @@
% \contributor Georg Verweyen <verweyen\at gmail.com>,
% \contributor Christoph Bier <christoph.bier\at web.de>,
% \contributor Peter Muthesius <Pemu\at gmx.de>,
-% \contributor Bernard Gaulle <gaulle\at idris.fr>\,\textdagger,
+% \contributor Bernard Gaulle <gaulle\at idris.fr>, ^^A\,\textdagger,
% \contributor Adam Kucharczyk <adamk\at ijp-pan.krakow.pl>,
% \contributor Mark Rossi <mark.rossi\at de.bosch.com>,
% \contributor Stephan Hennig <stephanhennig\at arcor.de>,
@@ -2746,14 +2791,24 @@
% \contributor Meho~R <meho.2005\at gmail.com>,
% \contributor Steffen Hoffmann <speraviro-delenda\at expires-2011-11-30.arcornews.de>,
% \contributor Scott Pakin <scott\at pakin.org>,
-% \contributor Loren~B. Davis <davislo\at eecs.oregonstate.edu>,
% \contributor Ma\"ieul Rouquette <maieul\at maieul.net>,
% \contributor Jonas Hogstrom <hjb981\at gmail.com>,
% \contributor Gabriel Kerneis <gabriel\at kerneis.info>,
-% \contributor RazorXsr <@\at @>, ^^A http://tex.stackexchange.com/users/17609/razorxsr
-% \contributor Dave <@\at @> ^^A http://tex.stackexchange.com/users/15562/dave
+% `\contributor RazorXsr <@\at @>', ^^A http://tex.stackexchange.com/users/17609/razorxsr
+% `\contributor Dave <@\at @>', ^^A http://tex.stackexchange.com/users/15562/dave
+% \contributor Giuseppe Palma <pippi.palma\at gmail.com>,
+% \contributor Stephan Stiller <stephan.stiller\at gmail.com>,
+% \contributor Christopher Schramm <debian\at shakaweb.org>,
+% `\contributor uli <@\at @>', ^^A http://tex.stackexchange.com/users/9391/uli
+% \contributor Sam Mason <sam\at samason.me.uk>, ^^A http://tex.stackexchange.com/users/16433/sam-mason
+% `\contributor kleenstar <@\at @>', ^^A http://tex.stackexchange.com/users/56468/kleenstar
+% `\contributor Henning <@\at @>', ^^A http://tex.stackexchange.com/users/64603/henning
+% \contributor Ronnie Marksch <Ronnie.Marksch\at yahoo.de>,
+% \contributor David Carlisle <d.p.carlisle\at gmail.com>,
+% `\contributor Max <@\at @>', ^^A http://tex.stackexchange.com/users/16809/max
+% `\contributor HcN <@\at @>' ^^A http://tex.stackexchange.com/users/87090/hcn
% and
-% \contributor Giuseppe Palma <pippi.palma\at gmail.com>.
+% \contributor Will Robertson <will\at wspr.io>.
%
%
%\iffalse
@@ -2828,12 +2883,12 @@
% \thanh, Sebastian Rahtz, Hans Hagen, Hartmut Henkel, Pawe\l\ Jackowski, Martin Schr\"oder,
% \emph{The \pdftex\ user manual},
% \newblock 23 November 2010.
-% \newblock (\ctanurl{systems/pdftex/};
-% latest version at \url{http://sarovar.org/projects/pdftex/})
+% \newblock (\ctanurl{systems/pdftex/})
+% ^^A latest version at \url{http://sarovar.org/projects/pdftex/}
% ^^A or even \url{http://foundry.supelec.fr/scm/?group_id=23}
%
% \bibitem[Fontname]{fontname}
-% Karl Berry, \emph{Fontname. Filenames for \TeX\ fonts},
+% Karl Berry, \emph{Fontname: Filenames for \TeX\ fonts},
% \newblock July 2009.
% \newblock (\ctanurl{info/fontname/fontname.pdf})
%
@@ -2842,6 +2897,18 @@
% \newblock 27 November 2005.
% \newblock (\ctanurl{macros/latex/doc/fntguide.pdf})
%
+% \bibitem[\pkg{fontspec}]{fontspec}
+% Will Robertson, Khaled Hosny,
+% \emph{The \pkg{fontspec} package: Font selection for \xe\LaTeX\ and Lua\LaTeX},
+% \newblock 1 February 2016.
+% \newblock (\ctanurl{macros/latex/contrib/fontspec/})
+%
+% \bibitem[\pkg{luaotfload}]{luaotfload}
+% \'Elie Roux, Khaled Hosny, Philipp Gesang,
+% \emph{The \pkg{luaotfload} package},
+% \newblock 12 December 2015.
+% \newblock (\ctanurl{macros/luatex/generic/luaotfload/})
+%
% \bibitem[\pkg{pdfcprot}]{pdfcprot}
% Carsten Schurig, Tobias Schlemmer, \emph{The \pkg{pdfcprot}|.sty| package},
% \newblock 10 June 2005.
@@ -2856,10 +2923,6 @@
% \pkg{soulutf8}, which adds Unicode support.
% \newblock (\ctanurl{macros/latex/contrib/oberdiek/})
%
-% \bibitem[\pkg{fontspec}]{fontspec}
-% Will Robertson, Khaled Hosny, \emph{The \pkg{fontspec} package},
-% \newblock 16 March 2013.
-% \newblock (\ctanurl{macros/latex/contrib/fontspec/})
%\end{thebibliography}
%
%
@@ -2880,13 +2943,13 @@
% {\leftmargin 0pt
% \parsep 0pt
% \def\refsection##1{[##1]}
-% \def\makelabel##1{\hss\llap{##1}}}}
+% \def\makelabel##1{\hss\llap{\color{sectioning}##1}}}}
% {\endlist}
%\newcommand\Version[2]{
% \VersionDate{#1}{#2}
% \vskip\topsep
% \pagebreak[2]
-% \item[\textsf{#1}]\textsf{(#2)}
+% \item[\textsf{\bfseries\color{sectioning}#1}]\textsf{\bfseries\color{sectioning}(#2)}
% \vskip\topsep
% \nopagebreak}
%\newcommand\VersionDate[2]{^^A needed in the Change history
@@ -2894,12 +2957,17 @@
%
%\begin{History}
%
-% ^^A\item New commands \cs{microtypeunhbox} and \cs{microtypeunhcopy} ^^A \refsection{\ref{..}}
+%\Version{\expandafter\@gobble\fileversion}{\filedate}
+% \item Support for \luatex\ 0.85
+% \item Improvements for tracking/letterspacing with \luatex\
+% (|Renderer=Basic| no longer required)
+% \item New font sets: `|alltext-nott|', `|allmath-nott|'
+% \refsection{\ref{sec:font-sets}, table~\ref{tab:predefined-font-sets}}
%
-%\VersionDate{\expandafter\@gobble\fileversion}{\filedate}
+%\VersionDate{2.5a}{2013/05/23}
%
%\Version{2.5}{2013/03/13}
-% \item Support for the \pkg{fontspec} package, viz.
+% \item Support for the \cite{fontspec} package, viz.
% for OpenType fonts with \luatex\ and \xetex
% \item Support for protrusion with \xetex\ $\geq$ 0.9997
% \item Support for tracking/letterspacing with \luatex\ $\geq$ 0.62
@@ -3145,14 +3213,12 @@
%
%\StopEventually{
% \GeneralChanges{Documentation}
-% \newpage
-% \appendix
-% \AppendixSettings
+% \ifx\Finale\relax
+% \newpage
+% \appendix
+% \AppendixSettings
+% \fi
% \typeout{:?1000} ^^A tell WinEdt not to bother about overfull boxes
-%\changes{v2.5}{2013/02/23}{include \file{microtype-logo.dtx} and \file{microtype-lssample.dtx}}
-% \InputIfFileExists{microtype-logo.dtx}\relax\relax
-% \InputIfFileExists{microtype-lssample.dtx}\relax\relax
-% \PrintChanges
% \PrintIndex
% \typeout{:?1111}
% \InputIfFileExists{lppl.tex}\LPPLSettings\relax
@@ -3185,7 +3251,6 @@
% \if@tempswa\@newiftrue\else\@newiffalse\fi
%}
%
-%
%\DoNotIndex{\!,\",\',\(,\),\*,\+,\,,\-,\.,\/,\:,\;,\<,\=,\>,\?,\[,\\,\],\`,
% \#,\$,\&,\^,\_,\|,\~,\ ,
% \advance,\afterassignment,\aftergroup,\begingroup,\bgroup,\catcode,\char,
@@ -3212,6 +3277,8 @@
%^^A\DoNotIndex{\XeTeXcharglyph,\XeTeXcountglyphs,\XeTeXfonttype,\XeTeXglyph,
%^^A \XeTeXglyphindex,\XeTeXglyphname,\XeTeXprotrudechars}
%\DoNotIndex{\directlua,\luatexversion} ^^A luatex
+%^^A\DoNotIndex{\adjustspacing,\copyfont,\expandglyphsinfont,
+%^^A \ignoreligaturesinfont,\outputmode,\protrudechars,\tracingfonts}
%\DoNotIndex{\eplain,\usepkg@pkg} ^^A eplain
%\DoNotIndex{\@backslashchar,\@cclv,\@cclvi,\@classoptionslist,\@currext,
% \@currname,\@defaultunits,\@empty,\@expandtwoargs,\@firstofone,\@firstoftwo,
@@ -3233,7 +3300,7 @@
%^^A\DoNotIndex{\add@accent,\curr@fontshape,\define@newfont,\do@subst@correction,
%^^A \f@size,\font@name,\glb@currsize,\normalfont,\pickup@font,\selectfont,
%^^A \set@fontsize,\showhyphens} ^^A latex
-%\DoNotIndex{\normalpdfoutput,\normalpdftexversion,\normalpdftexrevision} ^^A tex live
+%\DoNotIndex{\normalpdfoutput,\normalpdftexversion,\normalpdftexrevision} ^^A tex live 2004
%\DoNotIndex{\foreign@language,\languagename,\select@language,\shorthandoff} ^^A babel
%\DoNotIndex{\percentsign} ^^A babel/spanish,galician,mexican
%\DoNotIndex{\CJK@ifundefined,\CJK@plane,\CJK@temp,\CJK@addcmap} ^^A CJK,CJKutf8
@@ -3244,7 +3311,7 @@
%\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 (e)ledmac,(e)ledpar
+%\DoNotIndex{\l@dunhbox@line} ^^A ((r)e)ledmac,((r)e)ledpar
%\DoNotIndex{\lst@ProcessLetter} ^^A listings
%\DoNotIndex{\RequireLuaModule} ^^A luatexbase
%\DoNotIndex{\pdf@escapestring} ^^A pdftexcmds
@@ -3519,7 +3586,8 @@
% \fallbacktext{If \file{microtype.sty} had been generated with the `|debug|'
% option,\\this method would be demonstrated here.}
%\else
-% Let's see how it works~\dots
+% Let's see how it works~\dots\ (if you don't see anything special on this page,
+% your <PDF> viewer doesn't support annotations).
%\begin{verbatim}
%\tracingmicrotypeinpdf=2
%\end{verbatim}
@@ -3680,6 +3748,7 @@
\fi
% \end{macrocode}
%\begin{macro}{\MT@engine}
+%\changes{v2.6}{2016/03/25}{fix test with \luatex\ 0.85}
%\begin{macro}{\MT@engine@tooold}
% Old packages might have let \cmd\pdftexversion\ to \cmd\relax.
% \begin{macrocode}
@@ -3690,13 +3759,26 @@
\def\MT@engine{pdf}
%<letterspace> \let\MT@pdf@or@lua\@firstoftwo
%<letterspace> \ifnum\pdftexversion > 139 \def\MT@engine@tooold{1}\fi
- \ifx\directlua\@undefined \else
- \ifx\directlua\relax \else
- \def\MT@engine{lua}
-%<letterspace> \let\MT@pdf@or@lua\@secondoftwo
-%<letterspace> \ifnum\luatexversion < 62 \def\MT@engine@tooold{0}\fi
+ \fi
+\fi
+\ifx\directlua\@undefined \else
+ \ifx\directlua\relax \else
+ \def\MT@engine{lua}
+% \end{macrocode}
+% Since approx. \luatex\ 0.80, \cmd\pdftexversion\ is let to \cmd\luatexversion,
+% so that we would be fooled to think that \pdftex\ is too old.
+% \begin{macrocode}
+%<*letterspace>
+ \let\MT@pdf@or@lua\@secondoftwo
+ \ifnum\luatexversion < 62 \def\MT@engine@tooold{0}
+ \else
+ \def\MT@engine@tooold{1}
+ \ifnum\luatexversion > 84
+ \let\pdfoutput\outputmode
+ \let\pdfprotrudechars\protrudechars
\fi
\fi
+%</letterspace>
\fi
\fi
%<*package>
@@ -3734,7 +3816,7 @@
% \cmd\pdfnoligatures;
% \cmd\pdfstrcmp;
% \cmd\pdfescapestring\ ($\geq$~1.30)
-%\changes{v2.0}{2005/08/20}{(beta:1) case 6: \pdftex\ 1.40}
+%\changes{v2.0}{2005/08/20}{case 6: \pdftex\ 1.40} ^^A (beta:1)
% \item + adjustment of interword spacing;
% extra kerning;
% \cmd\letterspacefont;
@@ -3809,8 +3891,12 @@
% \item N/A
% \item \luatex\ ($\less$~0.36)
% \item + \cmd\directlua\ without state number ($\geq$~0.36)
-% \item + \cmd\letterspacefont\ ($\geq$~0.62).
+% \item + \cmd\letterspacefont\ ($\geq$~0.62)
+% \item + almost all of the \pdftex\ primitives have been renamed ($\geq$~0.85)
+% \item + \cmd\protrusionboundary\ [not yet supported] ($\geq$~0.90)
+%\todo{interface for \cmd\protrusionboundary}
%\end{enum}
+%\changes{v2.6}{2016/04/22}{update for \luatex\ 0.85 (renamed primitives)}
% \begin{macrocode}
%<*luatex-def>
%<debug>\MT@dinfo@nl0{this is luatex (\the\luatexversion)}
@@ -3823,12 +3909,15 @@
%\changes{v2.3d}{2009/03/25}{update for \luatex\ 0.36}
% \begin{macrocode}
\def\MT@lua{\directlua}
-\def\MT@luatex@no{3}
-\ifnum\luatexversion<62
- \def\MT@luatex@no{2}
- \ifnum\luatexversion<36
- \def\MT@lua{\directlua0}
- \def\MT@luatex@no{1}
+\def\MT@luatex@no{4}
+\ifnum\luatexversion<85
+ \def\MT@luatex@no{3}
+ \ifnum\luatexversion<62
+ \def\MT@luatex@no{2}
+ \ifnum\luatexversion<36
+ \def\MT@lua{\directlua0}
+ \def\MT@luatex@no{1}
+ \fi
\fi
\fi
% \end{macrocode}
@@ -4052,9 +4141,10 @@
%<pdftex-def> \MT@pdftex@no
%<luatex-def> \MT@luatex@no
<#1 \expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi}
-%<debug+pdftex-def>\MT@requires@pdftex6{
+%<luatex-def&debug>\MT@requires@luatex4{\let\pdftracingfonts\tracingfonts}\relax
+%<pdftex-def&debug>\MT@requires@pdftex6{
%<debug>\pdftracingfonts=1
-%<debug+pdftex-def>}\relax
+%<pdftex-def&debug>}\relax
%</pdftex-def|luatex-def>
% \end{macrocode}
%\end{macro}
@@ -4068,6 +4158,14 @@
% \begin{macrocode}
%<*luatex-def>
\RequirePackage{luatexbase}
+% \end{macrocode}
+% Additionally, we load \pkg{luaotfload}, because some of its functions are
+% required in \file{microtype.lua}. This eliminates the need for the user to
+% load \pkg{fontspec} before \microtype.
+% There will hardly be any \luatex\ documents that don't load this package, anyway.
+%\changes{v2.6}{2013/06/19}{load \pkg{luaotfload} with \luatex}
+% \begin{macrocode}
+\RequirePackage{luaotfload}
\RequireLuaModule{microtype}
%</luatex-def>
% \end{macrocode}
@@ -4076,25 +4174,29 @@
% (contributed by \contributor \'Elie Roux <elie.roux\at telecom-bretagne.eu>)}
% \begin{macrocode}
%<*luafile>
-microtype = microtype or {}
-local microtype = microtype
-local microtype_module = {
- name = "microtype",
- version = 2.5,
- date = "2013/05/15",
- description = "microtype module.",
- author = "E. Roux, R. Schlicht and P. Gesang",
- copyright = "E. Roux, R. Schlicht and P. Gesang",
- license = "LPPL",
+microtype = microtype or {}
+local microtype = microtype
+microtype.module = {
+ name = "microtype",
+ version = 2.6,
+ date = "2016/05/01",
+ description = "microtype module.",
+ author = "E. Roux, R. Schlicht and P. Gesang",
+ copyright = "E. Roux, R. Schlicht and P. Gesang",
+ license = "LPPL",
}
-if luatexbase and luatexbase.provides_module then
- luatexbase.provides_module(microtype_module)
-end
+local err, warn, info, log = luatexbase.provides_module(microtype.module)
+microtype.warning = warn
-local find = string.find
-local tex_write = tex.write
+local find = string.find
+local match = string.match
+local tex_write = tex.write
+
+function microtype.sprint (...)
+ tex.sprint(luatexbase.catcodetables['latex-package'], ...)
+end
%</luafile>
% \end{macrocode}
@@ -4482,6 +4584,9 @@ microtype.if_str_eq = if_str_eq
\MT@map@clist@#1,\@nil,\@nnil
\fi
}
+% \end{macrocode}
+%\todo{think \cs{@nil} should be defined as itself}
+% \begin{macrocode}
\def\MT@map@clist@c#1{\MT@exp@one@n\MT@map@clist@n#1}
\def\MT@map@clist@#1,{%
\ifx\@nil#1%
@@ -4646,25 +4751,53 @@ microtype.if_str_eq = if_str_eq
\advance\@tempcnta \@ne
\ifnum\@tempcnta < #2\MT@repeat
}
+%</package|letterspace>
% \end{macrocode}
%\end{macro}
%\begin{macro}{\MT@do@font}
% Execute \meta{\#1} 256 times,
% \begin{macrocode}
-%</package|letterspace>
-%<*pdftex-def|luatex-def|letterspace>
-\def\MT@do@font{\MT@while@num\z@
-%<pdftex-def|letterspace> \@cclvi
+%<pdftex-def>\def\MT@do@font{\MT@while@num\z@\@cclvi}
% \end{macrocode}
-% resp. 1114111 times for \luatex\ (this is going to be slow, but \luatex\ is
-% slow anyway -- still, there ought to be a better way!)
+% resp. for the whole font for \luatex, if loaded by \pkg{fontspec}/\pkg{luaotfload}.
%\changes{v2.5}{2010/08/14}{adapt for \luatex}
+%\changes{v2.6}{2013/07/14}{speed up for \luatex}
% \begin{macrocode}
-%<luatex-def> \MT@max@slot
+%<*luatex-def|letterspace>
+\def\MT@do@font#1{%
+ \MT@if@fontspec@font{%
+ \def\MT@dofont@function{#1}%
+ \MT@lua{microtype.do_font()}%
+ }{\MT@while@num\z@\@cclvi{#1}}%
}
-%</pdftex-def|luatex-def|letterspace>
+%</luatex-def|letterspace>
+% \end{macrocode}
+% This is the |lua| function, which is much faster than looping through all glyphs
+% in \TeX.
+% \begin{macrocode}
+%<*luafile>
+local function do_font()
+ if fonts then
+ local thefont
+ if fonts.ids then --- legacy luaotfload
+ thefont = fonts.ids[font.current()]
+ else --- new location
+ thefont = fonts.hashes.identifiers[font.current()]
+ end
+ if thefont then
+ for i,v in next,thefont.characters do
+ if v.index > 0 then
+ microtype.sprint([[\@tempcnta=]]..i..[[\relax\MT@dofont@function]])
+ end
+ end
+ end
+ end
+end
+microtype.do_font = do_font
+
+%</luafile>
% \end{macrocode}
-% resp. for the whole font.
+% The \xetex\ variant.
%\changes{v2.5}{2010/05/18}{adapt for \xetex}
% \begin{macrocode}
%<*xetex-def>
@@ -4800,16 +4933,16 @@ microtype.if_str_eq = if_str_eq
% Whenever an optional argument accepts a list of features, we can use this
% command to check whether a feature exists in order to prevent a rather
% confusing `|Missing \endcsname inserted|' error message. The feature (long
-% form) must be in \cmd\@tempa, the type of list to ignore in \meta{\#1},
+% form) must be in \meta{\#1}, the type of list to ignore in \meta{\#2},
% then comes the action.
% \begin{macrocode}
-\def\MT@is@feature#1{%
- \MT@exp@one@n\MT@in@clist\@tempa\MT@features@long
+\def\MT@is@feature#1#2{%
+ \MT@in@clist{#1}\MT@features@long
\ifMT@inlist@
\expandafter\@firstofone
\else
- \MT@error{`\@tempa' is not an available micro-typographic\MessageBreak
- feature. Ignoring #1}{Available features are: `\MT@features@long'.}%
+ \MT@error{`#1' is not an available micro-typographic\MessageBreak
+ feature. Ignoring #2}{Available features are: `\MT@features@long'.}%
\expandafter\@gobble
\fi
}
@@ -4914,7 +5047,8 @@ microtype.if_str_eq = if_str_eq
% ^^A private mail, 2012/06/30
% They are also part of recent \xetex.
%\changes{v2.5a}{2013/03/25}{support for \pkg{eledmac}}
-% The successor package \pkg{eledmac} is also supported.
+%\changes{v2.6}{2015/08/10}{support for \pkg{reledmac}}
+% The successor packages \pkg{eledmac} and \pkg{reledmac} are also supported.
% \begin{macrocode}
%</package>
%<pdftex-def>\MT@requires@pdftex5{
@@ -4927,7 +5061,7 @@ microtype.if_str_eq = if_str_eq
% Hook.
%\changes{v2.5a}{2013/03/27}{simplified}
% \begin{macrocode}
- \MT@info@nl{Patching (e)ledmac to enable character protrusion}%
+ \MT@info@nl{Patching ((r)e)ledmac to enable character protrusion}%
\let\MT@led@unhbox@line\l@dunhbox@line
\renewcommand*{\l@dunhbox@line}[1]{%
\ifhbox##1%
@@ -4942,7 +5076,8 @@ microtype.if_str_eq = if_str_eq
}{%
\MT@warning@nl{%
Character protrusion in paragraphs with line\MessageBreak
- numbering will only work if you update ledmac}%
+ numbering will only work if you update ledmac,\MessageBreak
+ or use one of its successors, eledmac or reledmac}%
}%
\fi
}
@@ -4954,7 +5089,7 @@ microtype.if_str_eq = if_str_eq
\MT@warning@nl{%
The pdftex version you are using does not allow\MessageBreak
character protrusion in paragraphs with line\MessageBreak
- numbering by the `ledmac' package.\MessageBreak
+ numbering by the `((r)e)ledmac' package.\MessageBreak
Upgrade pdftex to version 1.30 or later}%
\fi
}
@@ -4962,8 +5097,11 @@ microtype.if_str_eq = if_str_eq
%</pdftex-def>
% \end{macrocode}
%\end{macro}
-%\todo{fix: protrusion with \pkg{shapepar} (reported by \contributor Giuseppe Palma <pippi.palma\at gmail.com>)}
-% ^^A private mail, 2013/03/22
+% The \pkg{shapepar} package (v2.2) fixes this in a similar manner by itself,
+% so we don't have to bother.
+% ^^A missing protrusion with \pkg{shapepar} (reported by \contributor Giuseppe Palma <pippi.palma\at gmail.com>)}
+% ^^A ^^A private mail, 2013/03/22
+% ^^A fixed in shapepar v2.2 (Mar 2013)
%\begin{macro}{\MT@restore@p@h}
% Restore meaning of \cmd\% and \cmd\#.
% \begin{macrocode}
@@ -4977,9 +5115,28 @@ microtype.if_str_eq = if_str_eq
% Two new conditionals for use with \xetex\ or \luatex.
% \begin{macrocode}
\newif\ifMT@xunicode
-\newif\ifMT@fontspec
\MT@with@package@T{xunicode}\MT@xunicodetrue
+%</package>
+\newif\ifMT@fontspec
+%<letterspace>\MT@requires@latex2{
\MT@with@package@T{fontspec}\MT@fontspectrue
+%<letterspace>}{\MT@fontspecfalse}
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\begin{macro}{\MT@if@fontspec@font}
+%\begin{macro}{\MT@fontspec@setup}
+%\changes{v2.6}{2016/04/23}{fix \cs{MT@if@fontspec@font} ABD}
+% For fonts loaded by \pkg{fontspec} (or, rather, \pkg{luaotfload}) we can
+% use some of the features the latter package provides.
+% \begin{macrocode}
+\let\MT@if@fontspec@font\@secondoftwo
+\def\MT@fontspec@setup{%
+ \@ifpackagelater{fontspec}{2013/05/23}{
+ \MT@let@cn\MT@if@fontspec@font{fontspec_if_fontspec_font:TF}%
+ }\relax
+}
+\ifMT@fontspec\MT@fontspec@setup\fi
% \end{macrocode}
%\end{macro}
%\end{macro}
@@ -4996,6 +5153,7 @@ microtype.if_str_eq = if_str_eq
% (This is no longer needed, since the complete setup is now deferred until the
% end of the preamble. However, it is still necessary for \opt{defersetup}|=false|.)
% \begin{macrocode}
+%<*package>
\def\MT@setupfont@hook{%
% \end{macrocode}
%\iffalse
@@ -5078,14 +5236,19 @@ The `pdfcprot' package provides an interface to character protrusion.\MessageBre
So does the `\MT@MT' package. Using both packages at the same\MessageBreak
time will almost certainly lead to undesired results. Have your choice!}%
}%
- \MT@with@package@T{ledmac}\MT@ledmac@setup
- \MT@with@package@T{eledmac}\MT@ledmac@setup
+ \MT@with@package@T {ledmac}\MT@ledmac@setup
+ \MT@with@package@T {eledmac}\MT@ledmac@setup
+ \MT@with@package@T{reledmac}\MT@ledmac@setup
\MT@with@package@T{xunicode}\MT@xunicodetrue
- \MT@with@package@T{fontspec}\MT@fontspectrue
+ \MT@with@package@T{fontspec}{\MT@fontspectrue\MT@fontspec@setup}%
% \end{macrocode}
% We can clean up \cs{MT@setupfont@hook} now.
+%\changes{v2.6}{2014/03/17}{redefine \cs{MT@setupfont@hook} globally
+% for problem with \pkg{tikzposter}
+% (reported by \contributor Sam Mason <sam\at samason.me.uk>)}
+% ^^A http://tex.stackexchange.com/questions/165846/
% \begin{macrocode}
- \let\MT@setupfont@hook\@empty
+ \MT@glet\MT@setupfont@hook\@empty
\ifMT@fontspec
\g@addto@macro\MT@setupfont@hook{\MT@font}%
\fi
@@ -5110,7 +5273,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
% We disable \microtype's additions inside \pkg{hyperref}'s \cmd\pdfstringdef,
% 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>)}
+% (reported by \contributor H\`an \thanhthe{} Th\`anh <hanthethanh\at gmail.com>)}
% ^^A private mail, 2005/09/10
%\changes{v2.3}{2007/11/11}{disable \cs{microtypecontext} in \pkg{hyperref}'s \cmd\pdfstringdef}
% \pkg{hyperref} doesn't work with plain \TeX, so in that case we don't bother.
@@ -5175,7 +5338,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
}%
}%
% \end{macrocode}
-%\changes{v2.0}{2005/12/21}{(beta:3) compatibility with \pkg{soul}: register \cs{textls} and \cs{lsstyle}}
+%\changes{v2.0}{2005/12/21}{compatibility with \pkg{soul}: register \cs{textls} and \cs{lsstyle}} ^^A (beta:3)
% Of course, using both \pkg{soul}'s and \microtype's letterspacing mechanisms
% at the same time doesn't make much sense. But \pkg{soul} can do more, \eg,
% underlining. The optional argument to \cs{textls} may not be used.
@@ -5340,6 +5503,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
% \begin{macrocode}
%<*pdftex-def|luatex-def>
\let\MT@copy@font\relax
+%<luatex-def>\MT@requires@luatex4{\let\pdfcopyfont\copyfont}\relax
%<pdftex-def>\MT@requires@pdftex7{
\def\MT@copy@font@{%
% \end{macrocode}
@@ -5659,7 +5823,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
% (Warnings seem to be too irritating.) ^^A at least one thing I found out in the ridiculously long `beta' phase
% The switch is set in \cs{MT@next@listname}.
%\changes{v2.5}{2011/05/28}{info if settings are not family-specific
-% (suggested by \contributor\thanh{} <thanh\at river-valley.org>)}
+% (suggested by \contributor H\`an \thanhthe{} Th\`anh <thanh\at river-valley.org>)}
% ^^A private mail, 2010/09/07
% ^^A (beta:07)
% \begin{macrocode}
@@ -6354,6 +6518,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
%\begin{macro}{\MT@expandfont}
% Expand the font.
% \begin{macrocode}
+%<luatex-def>\MT@requires@luatex4{\let\pdffontexpand\expandglyphsinfont}\relax
\def\MT@expandfont{%
\pdffontexpand\MT@font \MT@stretch@ \MT@shrink@ \MT@step@ \MT@auto@\relax
}
@@ -6808,7 +6973,24 @@ time will almost certainly lead to undesired results. Have your choice!}%
% the base font again.
% \begin{macrocode}
\MT@get@ls@basefont
+% \end{macrocode}
+%\changes{v2.6}{2013/07/15}{use \pkg{luaotfload}'s \texttt{kernfactor} font feature if available}
+% \pkg{luaotfload} provides the faux font feature |kernfactor|, which we will
+% use when dealing with non-legacy fonts, as it is less problematic and faster
+% than the \pdftex\ primitive \cmd\letterspacefont.
+% \begin{macrocode}
+%<*luatex-def|letterspace>
+ \MT@if@fontspec@font{%
+%<luatex-def&debug>\MT@dinfo@nl{1}{... fontspec font: \MessageBreak
+%<luatex-def&debug> \expandafter\fontname\MT@font}%
+ \global\expandafter\font\MT@lsfont=%
+ \expandafter\MT@exp@two@c\expandafter\MT@ls@fontspec@font
+ \expandafter\fontname\expandafter\MT@font\space \@nil
+ }{%
+%</luatex-def|letterspace>
+%<luatex-def&debug>\MT@dinfo@nl{1}{... legacy font}%
\global\expandafter\letterspacefont\MT@lsfont\font@name\MT@letterspace@
+%<luatex-def|letterspace> }%
% \end{macrocode}
%\changes{v2.2}{2007/06/16}{possibility to customise interword spacing}
% Scale interword spacing (not configurable in \letterspace).
@@ -6849,8 +7031,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
%</letterspace>
% \end{macrocode}
% Adjust protrusion values now, and maybe later (in \cs{MT@pr@split@val})
-% (not for \luatex, though, where the letterspaced font inherits the protrusion
-% values from the base font).
+% (not for \luatex, though, where letterspacing does not interfere with protrusion).
%\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>)}
@@ -6859,19 +7040,21 @@ time will almost certainly lead to undesired results. Have your choice!}%
% (reported by \contributor Wolfram Schaalo <schaalo\at gmx.net>)}
% ^^A private mail, 2008/05/12
% \begin{macrocode}
+%<luatex-def|letterspace> \MT@if@fontspec@font\relax{%
%<debug>\MT@dinfo@nl{2}{... compensating for tracking (\number\MT@letterspace@)}%
\MT@do@font{\lpcode\MT@lsfont\@tempcnta=\numexpr\MT@letterspace@/2\relax
\rpcode\MT@lsfont\@tempcnta=\numexpr\MT@letterspace@/2\relax}%
-%<pdftex-def> \let\MT@the@pr@code\MT@the@pr@code@tr
+ \let\MT@the@pr@code\MT@the@pr@code@tr
+%<luatex-def|letterspace> }%
\fi
% \end{macrocode}
-% Finally, let the letterspaced font propagate. With \luatex, we also need to
-% load.
+% Finally, let the letterspaced font propagate.
+% With \luatex, we also need to load.
%\changes{v2.5a}{2013/05/15}{fix: load font for \pkg{fontspec}} ^^A for MT@get@slot
% \begin{macrocode}
\aftergroup\MT@set@lsfont
%<pdftex-def|luatex-def> \let\MT@font\MT@lsfont
-%<luatex-def> \ifMT@fontspec\MT@font\fi
+%<luatex-def> \MT@if@fontspec@font\MT@font\relax
% \end{macrocode}
%\begin{macro}{\MT@set@curr@ls}
%\begin{macro}{\MT@curr@ls}
@@ -6933,19 +7116,17 @@ time will almost certainly lead to undesired results. Have your choice!}%
%\end{macro}
% Stuff to be done after the letterspace group. The \letterspace\ package
% only adjusts the kerning.
+%\changes{v2.6}{2014/09/07}{fix: ensure to set up math fonts (reported by \contributor kleenstar <@\at @>)}
+% ^^A http://tex.stackexchange.com/questions/187655/microtype-gives-wrong-letterspacing-in-math-mode
% \begin{macrocode}
\MT@afteraftergroup{%
\MT@set@curr@os
\MT@set@curr@ok
+ \MT@glet\noexpand\glb@currsize\noexpand\@empty
\noexpand\MT@tr@outer@r
}%
%</pdftex-def|luatex-def>
\fi
-% \end{macrocode}
-% Since protrusion values are inherited in \luatex, we switch off the setup for
-% this font.
-% \begin{macrocode}
-%<luatex-def> \MT@protrusionfalse
%<pdftex-def|luatex-def> }%
}
% \end{macrocode}
@@ -6967,6 +7148,31 @@ time will almost certainly lead to undesired results. Have your choice!}%
%</pdftex-def|luatex-def|letterspace>
% \end{macrocode}
%\end{macro}
+%\begin{macro}{\MT@ls@fontspec@colon}
+%\begin{macro}{\MT@ls@fontspec@font}
+% Add the |kernfactor| feature to a font loaded by \pkg{fontspec}
+% (we might have to add the colon ourselves).
+% \begin{macrocode}
+%<*luatex-def|letterspace>
+\def\MT@ls@fontspec@colon#1:#2:#3\@nil{#1:#2}
+\def\MT@ls@fontspec@font#1 #2\@nil{%
+ "\MT@ls@fontspec@colon#1::\@nil
+ kernfactor=%
+ \ifnum\MT@letterspace@<\z@ -0.%
+ \ifnum-\MT@letterspace@<100 0\fi
+ \ifnum-\MT@letterspace@<10 0\fi
+ \number-\MT@letterspace@
+ \else 0.%
+ \ifnum\MT@letterspace@<100 0\fi
+ \ifnum\MT@letterspace@<10 0\fi
+ \number\MT@letterspace@
+ \fi;"
+ \ifx\\#2\\ at \f@size pt\else#2\fi\relax
+}
+%</luatex-def|letterspace>
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
%\begin{macro}{\MT@get@tr@opt}
% Various settings (only for the \microtype\ version).
% \begin{macrocode}
@@ -7036,9 +7242,9 @@ time will almost certainly lead to undesired results. Have your choice!}%
% \end{macrocode}
%\end{macro}
%\begin{macro}{\lsstyle}
-%\changes{v2.0}{2005/09/21}{(beta:1) new command: letterspacing}
-%\changes{v2.0}{2006/09/19}{(beta:8) fix: font switches don't pose a problem anymore}
-%\changes{v2.0}{2006/09/21}{(beta:8) fix: letterspacing commands may be nested}
+%\changes{v2.0}{2005/09/21}{new command: letterspacing} ^^A (beta:1)
+%\changes{v2.0}{2006/09/19}{fix: font switches don't pose a problem anymore} ^^A (beta:8)
+%\changes{v2.0}{2006/09/21}{fix: letterspacing commands may be nested} ^^A (beta:8)
%\changes{v2.0}{2006/12/28}{totally redone, using the new \cmd\letterspacefont}
%\changes{v2.3d}{2008/11/16}{make invalid in math mode}
%\changes{v2.3d}{2009/01/07}{disable for \luatex}
@@ -7048,11 +7254,11 @@ time will almost certainly lead to undesired results. Have your choice!}%
% another text switch, of course).
%\changes{v2.5}{2012/11/14}{fix: ensure to set up math fonts (reported by \contributor RazorXsr <@\at @>)}
% ^^A http://tex.stackexchange.com/questions/82686/settracking-in-the-math-environment
-% Still, we have to ensure that math fonts are set up again.
+% Still, we have to (globally) ensure that math fonts are set up again.
% \begin{macrocode}
\DeclareRobustCommand\lsstyle{%
\not@math@alphabet\lsstyle\textls
- \let\glb@currsize\@empty
+ \MT@glet\glb@currsize\@empty
%<pdftex-def|luatex-def> \def\MT@feat{tr}%
\let\MT@tracking\MT@set@tr@codes
\selectfont
@@ -7174,10 +7380,10 @@ time will almost certainly lead to undesired results. Have your choice!}%
% \end{macrocode}
%\end{macro}
%\begin{macro}{\MT@tr@set@space}
-% Adjust interword spacing (\fontdim2--4) for inner and outer space.
+% Adjust interword spacing (\fontdim2,3,4) for inner and outer space.
% For inner spacing, the font dimensions will be adjusted, the settings for
% outer spacing will be remembered in a macro.
-%\todo{don't add stretch components if ragged2e is active?} ^^A reported by \contributor Leo ? <sdl.web\at gmail.com>, MID: <wqlfwxsuo6h.fsf@pip.srcf.ucam.org>
+%\todo{don't add stretch components if \pkg{ragged2e} is active?} ^^A reported by \contributor Leo ? <sdl.web\at gmail.com>, MID: <wqlfwxsuo6h.fsf@pip.srcf.ucam.org>
%^^A or in fact, shouldn't we test whether \spaceskip<>0pt ?
% \begin{macrocode}
\def\MT@tr@set@space#1,#2,#3,#4,#5,#6,{%
@@ -7410,7 +7616,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
% \pkg{xspace} requires special treatment.
% \begin{macrocode}
\MT@if@outer@next\xspace{%
- \def\MT@temp*\xspace{\futurelet\@let@token\MT@xspace}%
+ \def\MT@temp*\xspace{\MT@xspace}%
}{%
% \end{macrocode}
% If there's no outer spacing, there may be outer kerning.
@@ -7441,10 +7647,18 @@ time will almost certainly lead to undesired results. Have your choice!}%
%\changes{v2.5a}{2013/05/15}{fix \texttt{outer spacing} problem with \pkg{xspace}
% (reported by \contributor Dave <@\at @>)}
% ^^A http://tex.stackexchange.com/questions/59655
+%\changes{v2.6}{2014/11/22}{fix \texttt{outer spacing} problem with (not only) \pkg{algorithm}
+% (reported by \contributor Henning <@\at @>
+% and \contributor Ronnie Marksch <Ronnie.Marksch\at yahoo.de>)}
+% ^^A http://tex.stackexchange.com/questions/213164
+% ^^A MID: <mk1sqc$jve$1@speranza.aioe.org>
+%\begin{macro}{\MT@xspace@}
% If the group is followed by \cmd\xspace, we first feed \cmd\xspace\ with the
% next token, then check whether it has inserted a space.
+% \cmd\@let@token\ might be something evil, so it should be encapsulated here.
% \begin{macrocode}
-\def\MT@xspace{\@xspace@firsttrue\@xspace
+\def\MT@xspace{\futurelet\@let@token\MT@xspace@}
+\def\MT@xspace@{\@xspace@firsttrue\@xspace
\ifdim\lastskip>5sp
\unskip \hskip\MT@outer@space
\else
@@ -7453,6 +7667,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
}
% \end{macrocode}
%\end{macro}
+%\end{macro}
% For older \pdftex\ versions and \luatex, throw an error.
% \begin{macrocode}
}{
@@ -7478,7 +7693,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
%</xetex-def>
% \end{macrocode}
%\begin{macro}{\textls}
-%\changes{v2.0}{2005/09/21}{(beta:1) new command: letterspacing}
+%\changes{v2.0}{2005/09/21}{new command: letterspacing} ^^A (beta:1)
%\changes{v2.0}{2006/12/28}{starred version: remove spaces around text}
%\changes{v2.1}{2007/01/19}{fix: use \cmd\hmode@bgroup}
%\changes{v2.3d}{2008/11/16}{make math mode aware}
@@ -7647,6 +7862,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
%\begin{macro}{\MT@noligatures@}
% This is also used by \cs{MT@set@tr@codes}.
% \begin{macrocode}
+%<luatex-def>\MT@requires@luatex4{\let\pdfnoligatures\ignoreligaturesinfont}\relax
\def\MT@noligatures@#1#2{%
\MT@ifdefined@c@TF#2{%
% \end{macrocode}
@@ -7661,7 +7877,16 @@ time will almost certainly lead to undesired results. Have your choice!}%
\def\MT@curr@list@name{\@backslashchar DisableLigatures}%
\MT@map@clist@c#2{%
\KV@@sp@def\@tempa{##1}\MT@get@slot
- \ifnum\MT@char>\m@ne \tagcode#1\MT@char=\m@ne \fi}%
+ \ifnum\MT@char>\m@ne
+ \tagcode#1\MT@char=\m@ne
+% \end{macrocode}
+% With \luatex, we additionally register the ligatures that should be inhibited
+% in a table (used by the \pkg{luaotfload} function |keepligature|).
+%\changes{v2.6}{2016/04/20}{use \pkg{luaotfload} function to keep\slash inhibit ligatures}
+% \begin{macrocode}
+%<luatex-def> \MT@if@fontspec@font{\MT@lua{microtype.noligatures([[#1]],[[\MT@char]])}}\relax
+ \fi
+ }%
\MT@vinfo{... Disabling ligatures for characters: #2}%
}{%
\pdfnoligatures#1%
@@ -7671,7 +7896,9 @@ time will almost certainly lead to undesired results. Have your choice!}%
}%
}{%
\pdfnoligatures#1%
- \MT@vinfo{... Disabling ligatures}%
+%<luatex-def> \MT@if@fontspec@font
+%<luatex-def> {\MT@lua{microtype.noligatures([[#1]],"_all_")}}\relax
+ \MT@vinfo{... Disabling all ligatures}%
}%
}
%<pdftex-def>}\relax
@@ -7679,6 +7906,56 @@ time will almost certainly lead to undesired results. Have your choice!}%
% \end{macrocode}
%\end{macro}
%\end{macro}
+% For each potential ligature, \pkg{luaotfload} will call the
+% |keepligature| function, which expects the first node of the ligature,
+% to check whether they should be kept or inhibited.
+% Here's our concoction of this function. The table |microtype.ligs| will
+% be populated in \cmd\MT@noligatures@.
+% \begin{macrocode}
+%<*luafile>
+microtype.ligs = microtype.ligs or { }
+
+local function noligatures(fontcs,liga)
+ local fontcs = match(fontcs,"([^ ]+)")
+ microtype.ligs[fontcs] = microtype.ligs[fontcs] or { }
+ table.insert(microtype.ligs[fontcs],liga)
+end
+microtype.noligatures = noligatures
+
+local function keepligature(c)
+ local nodedirect = node.direct
+ local getfield = nodedirect.getfield
+ local getfont = nodedirect.getfont
+ local f,ch
+ if type(c) == "userdata" then -- in older luaotfload versions, c was a node
+ f = c.font
+ ch = c.components.char
+ else -- since 2.6, c is a (direct node) number
+ f = getfont(c)
+ ch = getfield(getfield(c,"components"),"char")
+ end
+-- if ch then -- should always be true
+ local ligs = microtype.ligs[match(tex.fontidentifier(f),"\\([^ ]+)")]
+ if ligs then
+ for _,lig in pairs(ligs) do
+ if lig == "_all_" or tonumber(lig) == ch then
+ return false
+ end
+ end
+ end
+ return true
+-- end
+end
+
+if luaotfload and luaotfload.letterspace then
+ if luaotfload.letterspace.keepligature then
+ microtype.warning("overwriting function `keepligature'")
+ end
+ luaotfload.letterspace.keepligature = keepligature
+end
+
+%</luafile>
+% \end{macrocode}
%
%\subsubsection{Loading the configuration}
%
@@ -7805,10 +8082,9 @@ time will almost certainly lead to undesired results. Have your choice!}%
% \end{macrocode}
%\end{macro}
%\begin{macro}{\MT@begin@catcodes}
-% This will be used before reading the files as well as in the configuration
-% commands \cs{Set...}, and \cs{DeclareCharacterInheritance}, so that the
-% catcodes are also harmless when these commands are used outside the
-% configuration files.
+% This will be used before reading the files as well as in all configuration
+% commands, so that 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}
@@ -8198,6 +8474,9 @@ time will almost certainly lead to undesired results. Have your choice!}%
% If the user has specified something like `|fi|', or wanted to define a number
% but forgot to use three digits, we'll have something left of the string. In
% this case, we issue a warning and forget the complete string.
+%\changes{v2.6}{2016/04/23}{fix: could fail with \xetex\
+% (reported by \contributor Christopher Schramm <debian\at shakaweb.org>)}
+% ^^A http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=725395#15
% \begin{macrocode}
\ifMT@norest \else
\MT@warn@rest
@@ -8207,6 +8486,7 @@ time will almost certainly lead to undesired results. Have your choice!}%
%<luatex-def> \fi
\else
\MT@warn@unknown
+%<xetex-def> \let\MT@char\@empty
\fi
%<*xetex-def>
\else
@@ -8259,10 +8539,10 @@ time will almost certainly lead to undesired results. Have your choice!}%
%</pdftex-def|luatex-def|xetex-def>
% \end{macrocode}
% This is the lua function to translate glyph name into slot number.
-% Beginning with v2.2, \pkg{luaotfload} provides this function in an API, which
+% Beginning with v2.2, \pkg{luaotfload} provides this function in an <API>, which
% we use if available, but (for now, at least) keep the old code for backward
% compatibility.
-%\changes{v2.5a}{2013/04/19}{adapted for \pkg{luaotfload} v2.2
+%\changes{v2.5a}{2013/04/19}{adapt to \pkg{luaotfload} v2.2
% (contributed by \contributor \'Elie Roux <elie.roux\at telecom-bretagne.eu>)}
% ^^A MID: <516AAF6B.8040605@telecom-bretagne.eu>
% \begin{macrocode}
@@ -8535,7 +8815,8 @@ end
/MT@ifstreq/MT@charstring{##3##4}/relax/MT@norestfalse
/else
/edef/MT@char@{/number"##2##3}%
- /MT@ifstreq/MT@charstring{##4}/relax/MT@norestfalse
+ /MT@ifstreq/MT@charstring{##4}/relax
+ {/MT@is@xchar##2##3|##4\CHAR"/relax}%
/fi
%<debug> /MT@dinfo@nl{3}{> `/the/MT@toks' is a \char (/MT@char@)}%
/fi
@@ -8544,6 +8825,17 @@ end
% \end{macrocode}
%\end{macro}
%\end{macro}
+%\begin{macro}{\MT@is@xchar}
+%\changes{v2.6}{2016/04/23}{update for \pkg{fontspec}'s <TU> encoding}
+% With \pkg{fontspec}'s <TU> encoding, glyphs numbers may be up to four digits.
+%\SpecialEscapechar{\/}
+% \begin{macrocode}
+ /def/MT@is@xchar##1|##2\CHAR"##3##4/relax{%
+ /MT@ifstreq/MT@charstring{##3##4}%
+ {/edef/MT@char@{/number"##1##2}}/MT@norestfalse
+ }%
+% \end{macrocode}
+%\end{macro}
%\begin{macro}{\MT@charxstring}
%\begin{macro}{\MT@strip@prefix}
%\begin{macro}{\MT@is@charx}
@@ -8697,6 +8989,14 @@ end
}
% \end{macrocode}
%\end{macro}
+\def\MT@warn@unknown@once#1{%
+ \def\MT@warn@unknown{%
+ \MT@warning@nl{One or more slots in the configuration are unknown.\MessageBreak
+ Make sure that no text commands are used.\MessageBreak
+ See the documentation for details (the note\MessageBreak
+ on `#1' in section 9: `Hints and caveats')}%
+ \MT@glet\MT@warn@unknown\relax}%
+}
%
%\subsubsection{Hook into \LaTeX's font selection}\label{sssec:impl.hook}
%
@@ -8764,49 +9064,80 @@ end
%<plain>\MT@requires@latex2{
\MT@addto@setup{%
% \end{macrocode}
+%\begin{macro}{\MT@orig@pickupfont}
+% The \pkg{luatexja} package redefines \cmd\char, which will upset our parsing
+% of text symbols and commands; instead of fixing this, we won't bother,
+% at least for the moment, but simply issue a warning and disable all
+% further warnings. The fix is left to the user by not specifying any text
+% commands but only (Unicode) letters.
+%\changes{v2.6}{2015/12/05}{(in)compatibility with \pkg{luatexja}: disable unknown slots warnings
+% (reported by \contributor Max <@\at @>)}
+% ^^A http://tex.stackexchange.com/questions/272102/luatexja-with-microtype-generates-lots-of-warnings
+% The \pkg{xeCJK} package, or rather its \pkg{xunicode-addon}, also modifies the way
+% text symbols are defined (like \pkg{luatexja} but in a different way).
+% Again, we only issue a warning.
+%\changes{v2.6}{2015/11/03}{(in)compatibility with \pkg{xeCJK}: disable unknown slots warnings
+% (reported by \contributor HcN <@\at @>)}
+% ^^A http://tex.stackexchange.com/questions/275653/warning-using-microtype-and-excjk-packages
+% \begin{macrocode}
+ \MT@with@package@T{luatexja}{\MT@warn@unknown@once{luatexja}}%
+ \MT@with@package@T{xeCJK} {\MT@warn@unknown@once{xeCJK}}%
+% \end{macrocode}
%\changes{v2.1}{2007/01/15}{compatibility with \pkg{CJK}: also check for its definition}
%\changes{v2.3b}{2008/05/26}{compatibility with \pkg{CJKutf8}: also check for its definition}
-%\begin{macro}{\MT@orig@pickupfont}
% \microtype\ also works with \pkg{CJK} in the sense that nothing will break
% when both packages are used at the same time. However, since \pkg{CJK} has
% its own way of encoding, it is currently not possible to create
% character-specific settings. That is, the only feature available with
-% \pkg{CJK} fonts is expansion.
+% \pkg{CJK} fonts is (non-selected) expansion.
% (Tracking doesn't really work for other reasons.)
%\todo{fix tracking with \pkg{CJK}, if worth the trouble}^^A
% Like us, \pkg{CJK} redefines \cmd\pickup@font.
% \begin{macrocode}
\@ifpackageloaded{CJK}{%
- \@ifpackagelater{CJK}{2006/10/17}% 4.7.0
- {\def\MT@orig@pickupfont{\CJK@ifundefined\CJK@plane}}%
- {\def\MT@orig@pickupfont{\@ifundefined{CJK@plane}}}%
- \g@addto@macro\MT@orig@pickupfont
- {{\expandafter\ifx\font@name\relax\define@newfont\fi}}%
+% \end{macrocode}
+%\changes{v2.6}{2013/06/06}{compatibility with \pkg{xeCJK}: pretend that \pkg{CJK} wasn't loaded}
+% The \pkg{xeCJK} package in turn pretends that \pkg{CJK} was loaded, but does not
+% change the definition of \cmd\pickup@font.
+% With \pkg{xeCJK}, protrusion should be possible also for C/J/K characters;
+% I haven't tried it, though.
+%^^A also, \XeTeXinterchartoks probably interferes ...
+% \begin{macrocode}
+ \@ifpackageloaded{xeCJK}{\@firstofone}{%
+ \@ifpackagelater{CJK}{2006/10/17}% 4.7.0
+ {\def\MT@orig@pickupfont{\CJK@ifundefined\CJK@plane}}%
+ {\def\MT@orig@pickupfont{\@ifundefined{CJK@plane}}}%
+ \g@addto@macro\MT@orig@pickupfont
+ {{\expandafter\ifx\font@name\relax\define@newfont\fi}}%
% \end{macrocode}
% \pkg{CJKutf8} redefines \cmd\pickup@font\ once more (recent versions, in
% <PDF> mode, as determined by \pkg{ifpdf}, which \pkg{CJKutf8} loads).
% \begin{macrocode}
- \@ifpackageloaded{CJKutf8}%
- {\@ifpackagelater{CJKutf8}{2008/05/22}% 4.8.0
- {\ifpdf\expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi}%
- {\@firstoftwo}}%
- {\@firstoftwo}%
- {\g@addto@macro\MT@orig@pickupfont{%
- {\expandafter\ifx\csname\curr@fontshape/\f@size/\CJK@plane\endcsname\relax
- \define@newfont\else\xdef\font@name{%
+ \@ifpackageloaded{CJKutf8}%
+ {\@ifpackagelater{CJKutf8}{2008/05/22}% 4.8.0
+ {\ifpdf\expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi}%
+ {\@firstoftwo}}%
+ {\@firstoftwo}%
+ {\g@addto@macro\MT@orig@pickupfont{%
+ {\expandafter\ifx\csname\curr@fontshape/\f@size/\CJK@plane\endcsname\relax
+ \define@newfont\else\xdef\font@name{%
+ \csname \curr@fontshape/\f@size/\CJK@plane\endcsname}\fi}}}%
+ {\g@addto@macro\MT@orig@pickupfont{%
+ {\expandafter\ifx\csname \curr@fontshape/\f@size/\CJK@plane\endcsname\relax
+ \define@newfont\def\CJK@temp{v}%
+ \ifx\CJK@temp\CJK@plane
+ \expandafter\ifx\csname CJK@cmap@\f@family\CJK@plane\endcsname\relax
+ \else\csname CJK@cmap@\f@family\CJK@plane\endcsname\fi
+ \else \CJK@addcmap\CJK@plane \fi
+ \else\xdef\font@name{%
\csname \curr@fontshape/\f@size/\CJK@plane\endcsname}\fi}}}%
- {\g@addto@macro\MT@orig@pickupfont{%
- {\expandafter\ifx\csname \curr@fontshape/\f@size/\CJK@plane\endcsname\relax
- \define@newfont\def\CJK@temp{v}%
- \ifx\CJK@temp\CJK@plane
- \expandafter\ifx\csname CJK@cmap@\f@family\CJK@plane\endcsname\relax
- \else\csname CJK@cmap@\f@family\CJK@plane\endcsname\fi
- \else \CJK@addcmap\CJK@plane \fi
- \else\xdef\font@name{%
- \csname \curr@fontshape/\f@size/\CJK@plane\endcsname}\fi}}}%
- }{%
- \def\MT@orig@pickupfont{\expandafter\ifx\font@name\relax\define@newfont\fi}%
- }%
+ \@gobble
+ }%
+ }{\@firstofone}%
+% \end{macrocode}
+% This is the normal \LaTeX\ definition.
+% \begin{macrocode}
+ {\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.
@@ -9028,6 +9359,8 @@ end
%\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>
+%\changes{v2.6}{2014/03/26}{allow \texttt{activate} shortcut (reported by \contributor Karl Berry <karl\at freefriends.org>)}
+% ^^A private mail, 2014/03/21
% The user may change the context, so that different setups are possible. This
% is especially useful for multi-lingual documents.
%
@@ -9044,7 +9377,7 @@ end
%\changes{v2.5}{2012/11/13}{fix: ensure to set up math fonts (reported by \contributor RazorXsr <@\at @>)}
% ^^A http://tex.stackexchange.com/questions/82556/pdftex-font-expansion-error-setexpansion-in-microtype-package
% \begin{macrocode}
- \let\glb@currsize\@empty
+ \MT@glet\glb@currsize\@empty
\setkeys{MTC}{#1}%
\selectfont
\MT@reset@context
@@ -9127,6 +9460,13 @@ end
}%
}
% \end{macrocode}
+% We also allow the |activate| shortcut.
+% \begin{macrocode}
+\define@key{MTC}{activate}[]{%
+ \setkeys{MT}{protrusion={#1}}%
+ \setkeys{MT}{expansion={#1}}%
+}
+% \end{macrocode}
%\begin{macro}{\MT@pr@context}
%\begin{macro}{\MT@ex@context}
%\begin{macro}{\MT@tr@context}
@@ -9164,6 +9504,8 @@ end
%\todo{allow for \texttt{load}ing and extending another set; or using more than one set?}
%
%\begin{macro}{\DeclareMicrotypeSet}
+%^^A \changes{v1.1}{2004/09/15}{remove spaces around first argument}
+%\changes{v2.6}{2013/08/05}{ignore spaces}
%\begin{macro}{\DeclareMicrotypeSet*}
% Calling this macro will create a comma list for every font attribute of the
% form: |\MT|\meta{feature}|list@|\meta{attribute}|@|\meta{set name}. If the
@@ -9174,6 +9516,7 @@ end
% does not constitute a constraint.
% \begin{macrocode}
\def\DeclareMicrotypeSet{%
+ \MT@begin@catcodes
\@ifstar
\MT@DeclareSetAndUseIt
\MT@DeclareSet
@@ -9182,23 +9525,21 @@ end
%\end{macro}
%\end{macro}
%\begin{macro}{\MT@DeclareSet}
-%\changes{v1.1}{2004/09/15}{remove spaces around first argument}
% \begin{macrocode}
\newcommand\MT@DeclareSet[3][]{%
- \KV@@sp@def\@tempa{#1}%
- \MT@ifempty\@tempa{%
+ \MT@ifempty{#1}{%
\MT@map@clist@c\MT@features{{\MT@declare@sets{##1}{#2}{#3}}}%
}{%
- \MT@map@clist@c\@tempa{{%
- \KV@@sp@def\@tempa{##1}%
- \MT@ifempty\@tempa\relax{%
- \MT@is@feature{set declaration `#2'}{%
+ \MT@map@clist@n{#1}{{%
+ \MT@ifempty{##1}\relax{%
+ \MT@is@feature{##1}{set declaration `#2'}{%
\MT@exp@one@n\MT@declare@sets
- {\csname MT@rbba@\@tempa\endcsname}{#2}{#3}%
+ {\csname MT@rbba@##1\endcsname}{#2}{#3}%
}%
}%
}}%
}%
+ \MT@end@catcodes
}
% \end{macrocode}
%\end{macro}
@@ -9221,13 +9562,16 @@ end
%\changes{v1.1}{2004/09/20}{remove spaces around set name}
%\changes{v1.8}{2005/05/15}{warning when redefining a set}
%\changes{v2.0}{2006/10/16}{fix: empty size list when redefining set}
+%\changes{v2.6}{2016/04/20}{fix: undefine lists for redefining}
%\todo{share one set between features}
% \begin{macrocode}
\def\MT@declare@sets#1#2#3{%
- \KV@@sp@def\MT@curr@set@name{#2}%
+ \def\MT@curr@set@name{#2}%
\MT@ifdefined@n@T{MT@#1@set@@\MT@curr@set@name}{%
\MT@warning{Redefining \@nameuse{MT@abbr@#1} set `\MT@curr@set@name'}%
- \MT@glet@nc{MT@#1list@size@\MT@curr@set@name}\@empty
+ \MT@map@clist@n{font,encoding,family,series,shape,size}{%
+ \MT@glet@nc{MT@#1list@##1@\MT@curr@set@name}\@undefined
+ }%
}%
\MT@glet@nc{MT@#1@set@@\MT@curr@set@name}\@empty
%<debug>\MT@dinfo{1}{declaring \@nameuse{MT@abbr@#1} set `\MT@curr@set@name'}%
@@ -9306,11 +9650,13 @@ end
% \begin{macrocode}
\let\MT@font@sets\@empty
\def\MT@fix@font@set#1{%
- \xdef#1{#1}%
- \ifMT@fontspec
- \xdef#1{\expandafter\MT@scrubfeatures#1()\relax}%
- \fi
- \global\@onelevel@sanitize#1%
+ \MT@ifdefined@c@T{#1}{%
+ \xdef#1{#1}%
+ \ifMT@fontspec
+ \xdef#1{\expandafter\MT@scrubfeatures#1()\relax}%
+ \fi
+ \global\@onelevel@sanitize#1%
+ }%
}
% \end{macrocode}
%\end{macro}
@@ -9321,7 +9667,7 @@ end
\def\MT@define@set@key@size#1{%
\define@key{MT@#1@set}{size}[]{%
\MT@map@clist@n{##1}{%
- \KV@@sp@def\MT@val{####1}%
+ \def\MT@val{####1}%
\expandafter\MT@get@range\MT@val--\@nil
\ifx\MT@val\relax \else
\MT@exp@cs\MT@xadd
@@ -9415,7 +9761,7 @@ end
% The \pkg{relsize} solution of parsing \cmd\@setfontsize\ does not work with the
% <AMS> classes, among others. I hope my hijacking doesn't do any harm.
%\changes{v1.2}{2004/09/26}{hijack \cmd\set@fontsize\ instead of \cmd\@setfontsize}
-% We redefine \cmd\set@fontsize, and not \cmd\@setfontsize\ because some classes
+% We redefine \cmd\set@fontsize\ instead of \cmd\@setfontsize\ because some classes
% might define the size selection commands by simply using \cmd\fontsize\
% (\eg, the \pkg{a0poster} class).
%\changes{v2.3b}{2008/03/07}{grouping}
@@ -9448,7 +9794,7 @@ end
\define@key{MT@#1@set}{font}[]{%
\MT@glet@nc{MT@#1list@font@\MT@curr@set@name}\@empty
\MT@map@clist@n{##1}{%
- \KV@@sp@def\MT@val{####1}%
+ \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
@@ -9532,23 +9878,31 @@ end
% To use a particular set we simply redefine |MT@|\meta{feature}|@setname|.
% If the optional argument is empty, set names for all features will be
% redefined.
-%\changes{v1.1}{2004/09/20}{remove spaces around first argument}
+%^^A \changes{v1.1}{2004/09/20}{remove spaces around first argument}
+%\changes{v2.6}{2013/08/05}{ignore spaces}
+% \begin{macrocode}
+\def\UseMicrotypeSet{%
+ \MT@begin@catcodes
+ \MT@UseMicrotypeSet
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MT@UseMicrotypeSet}
% \begin{macrocode}
-\renewcommand*\UseMicrotypeSet[2][]{%
- \KV@@sp@def\@tempa{#1}%
- \MT@ifempty\@tempa{%
+\newcommand*\MT@UseMicrotypeSet[2][]{%
+ \MT@ifempty{#1}{%
\MT@map@clist@c\MT@features{{\MT@use@set{##1}{#2}}}%
}{%
- \MT@map@clist@c\@tempa{{%
- \KV@@sp@def\@tempa{##1}%
- \MT@ifempty\@tempa\relax{%
- \MT@is@feature{activation of set `#2'}{%
+ \MT@map@clist@n{#1}{{%
+ \MT@ifempty{##1}\relax{%
+ \MT@is@feature{##1}{activation of set `#2'}{%
\MT@exp@one@n\MT@use@set
- {\csname MT@rbba@\@tempa\endcsname}{#2}%
+ {\csname MT@rbba@##1\endcsname}{#2}%
}%
}%
}}%
}%
+ \MT@end@catcodes
}
% \end{macrocode}
%\end{macro}
@@ -9565,15 +9919,14 @@ end
%\changes{v1.8}{2005/05/15}{fix: remove braces in first line}
% \begin{macrocode}
\def\MT@use@set#1#2{%
- \KV@@sp@def\@tempa{#2}%
- \MT@ifdefined@n@TF{MT@#1@set@@\@tempa}{%
- \MT@xdef@n{MT@#1@setname}{\@tempa}%
+ \MT@ifdefined@n@TF{MT@#1@set@@#2}{%
+ \MT@xdef@n{MT@#1@setname}{#2}%
}{%
\MT@ifdefined@n@TF{MT@#1@setname}\relax{%
\MT@xdef@n{MT@#1@setname}{\@nameuse{MT@default@#1@set}}%
}%
\MT@error{%
- The \@nameuse{MT@abbr@#1} set `\@tempa' is undeclared.\MessageBreak
+ The \@nameuse{MT@abbr@#1} set `#2' is undeclared.\MessageBreak
Using set `\@nameuse{MT@#1@setname}' instead}{}%
}%
}
@@ -9586,24 +9939,32 @@ end
%\end{macro}
%\begin{macro}{\DeclareMicrotypeSetDefault}
%\changes{v1.8}{2005/05/15}{new command: set default font set}
+%\changes{v2.6}{2013/08/05}{ignore spaces}
% This command can be used in the main configuration file to declare the
% default font set, in case no set is specified in the package options.
% \begin{macrocode}
-\renewcommand*\DeclareMicrotypeSetDefault[2][]{%
- \KV@@sp@def\@tempa{#1}%
- \MT@ifempty\@tempa{%
+\def\DeclareMicrotypeSetDefault{%
+ \MT@begin@catcodes
+ \MT@DeclareMicrotypeSetDefault
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MT@DeclareMicrotypeSetDefault}
+% \begin{macrocode}
+\newcommand*\MT@DeclareMicrotypeSetDefault[2][]{%
+ \MT@ifempty{#1}{%
\MT@map@clist@c\MT@features{{\MT@set@default@set{##1}{#2}}}%
}{%
- \MT@map@clist@c\@tempa{{%
- \KV@@sp@def\@tempa{##1}%
- \MT@ifempty\@tempa\relax{%
- \MT@is@feature{declaration of default set `#2'}{%
+ \MT@map@clist@n{#1}{{%
+ \MT@ifempty{##1}\relax{%
+ \MT@is@feature{##1}{declaration of default set `#2'}{%
\MT@exp@one@n\MT@set@default@set
- {\csname MT@rbba@\@tempa\endcsname}{#2}%
+ {\csname MT@rbba@##1\endcsname}{#2}%
}%
}%
}}%
}%
+ \MT@end@catcodes
}
% \end{macrocode}
%\end{macro}
@@ -9615,13 +9976,12 @@ end
%\begin{macro}{\MT@set@default@set}
% \begin{macrocode}
\def\MT@set@default@set#1#2{%
- \KV@@sp@def\@tempa{#2}%
- \MT@ifdefined@n@TF{MT@#1@set@@\@tempa}{%
-%<debug>\MT@dinfo{1}{declaring default \@nameuse{MT@abbr@#1} set `\@tempa'}%
- \MT@xdef@n{MT@default@#1@set}{\@tempa}%
+ \MT@ifdefined@n@TF{MT@#1@set@@#2}{%
+%<debug>\MT@dinfo{1}{declaring default \@nameuse{MT@abbr@#1} set `#2'}%
+ \MT@xdef@n{MT@default@#1@set}{#2}%
}{%
\MT@error{%
- The \@nameuse{MT@abbr@#1} set `\@tempa' is not declared.\MessageBreak
+ The \@nameuse{MT@abbr@#1} set `#2' is not declared.\MessageBreak
Cannot make it the default set. Using set\MessageBreak `all' instead}{}%
\MT@xdef@n{MT@default@#1@set}{all}%
}%
@@ -9638,12 +9998,14 @@ end
%
%\begin{macro}{\DeclareMicrotypeVariants}
%\changes{v2.2}{2007/02/04}{new command}
+%\changes{v2.6}{2013/08/05}{ignore spaces}
%\begin{macro}{\MT@variants}
% Specify suffixes for variants (see \file{fontname/variants.map}).
% The starred version appends to the list.
% \begin{macrocode}
\let\MT@variants\@empty
\def\DeclareMicrotypeVariants{%
+ \MT@begin@catcodes
\@ifstar
\MT@DeclareVariants
{\let\MT@variants\@empty\MT@DeclareVariants}%
@@ -9655,10 +10017,11 @@ end
% \begin{macrocode}
\def\MT@DeclareVariants#1{%
\MT@map@clist@n{#1}{%
- \KV@@sp@def\@tempa{##1}%
+ \def\@tempa{##1}%
\@onelevel@sanitize\@tempa
\xdef\MT@variants{\MT@variants{\@tempa}}%
}%
+ \MT@end@catcodes
}
% \end{macrocode}
%\end{macro}
@@ -9667,17 +10030,24 @@ end
% settings for the aliased font will be loaded.
%\changes{v1.5}{2004/12/03}{remove spaces around arguments}
%\changes{v1.8}{2005/05/09}{warning when overriding an alias font}
-%\changes{v2.5}{2010/05/17}{remove spaces in font name}
+%\changes{v2.5}{2010/05/17}{ignore spaces}
% \begin{macrocode}
-\renewcommand*\DeclareMicrotypeAlias[2]{%
- \edef\@tempa{\zap@space#1 \@empty}%
- \edef\@tempb{\zap@space#2 \@empty}%
+\def\DeclareMicrotypeAlias{%
+ \MT@begin@catcodes
+ \MT@DeclareMicrotypeAlias
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\MT@DeclareMicrotypeAlias}
+% \begin{macrocode}
+\newcommand*\MT@DeclareMicrotypeAlias[2]{%
+ \def\@tempb{#2}%
\@onelevel@sanitize\@tempb
- \MT@ifdefined@n@T{MT@\@tempa @alias}{%
+ \MT@ifdefined@n@T{MT@#1@alias}{%
\MT@warning{Alias font family `\@tempb' will override
- alias `\@nameuse{MT@\@tempa @alias}'\MessageBreak
- for font family `\@tempa'}}%
- \MT@xdef@n{MT@\@tempa @alias}{\@tempb}%
+ alias `\@nameuse{MT@#1@alias}'\MessageBreak
+ for font family `#1'}}%
+ \MT@xdef@n{MT@#1@alias}{\@tempb}%
% \end{macrocode}
% If we encounter this command while a font is being set up, we also set the
% alias for the current font so that if \cs{DeclareMicrotypeAlias} has been
@@ -9689,6 +10059,7 @@ end
%<debug>\MT@dinfo{1}{Activating alias font `\@tempb' for `\MT@family'}%
\MT@glet\MT@familyalias\@tempb
}%
+ \MT@end@catcodes
}
% \end{macrocode}
%\end{macro}
@@ -9712,8 +10083,8 @@ end
\edef\MT@curr@file{mt-\@tempa.cfg}%
\MT@vinfo{... Loading configuration file \MT@curr@file}%
}{%
- \MT@warning{... Configuration file mt-\@tempa.cfg\MessageBreak
- does not exist}%
+ \MT@warning{Configuration file mt-\@tempa.cfg\MessageBreak
+ does not exist}%
}%
\MT@end@catcodes
\fi
@@ -9779,7 +10150,7 @@ end
% Declare the context that should be loaded when a \pkg{babel} language
% is selected. The command will not check whether a previous declaration will
% be overwritten.
-%\changes{v2.0}{2005/10/04}{(beta:1) new command: interaction with \pkg{babel}}
+%\changes{v2.0}{2005/10/04}{new command: interaction with \pkg{babel}} ^^A (beta:1)
% \begin{macrocode}
%<*package>
\def\DeclareMicrotypeBabelHook#1#2{%
@@ -9933,7 +10304,7 @@ end
% \end{macrocode}
%\end{macro}
%\begin{macro}{\SetExtraSpacing}
-%\changes{v2.0}{2005/09/28}{(beta:1) new command: adjustment of interword spacing}
+%\changes{v2.0}{2005/09/28}{new command: adjustment of interword spacing} ^^A (beta:1)
% \begin{macrocode}
%<*pdftex-def>
\def\SetExtraSpacing{%
@@ -9963,7 +10334,7 @@ end
%\end{macro}
%\end{macro}
%\begin{macro}{\SetExtraKerning}
-%\changes{v2.0}{2005/09/28}{(beta:1) new command: additional kerning}
+%\changes{v2.0}{2005/09/28}{new command: additional kerning} ^^A (beta:1)
% \begin{macrocode}
\def\SetExtraKerning{%
\MT@begin@catcodes
@@ -10204,7 +10575,7 @@ end
}%
}
% \end{macrocode}
-% Protrusion contexts \emph{may} also work without copying the font, so we
+% Protrusion contexts \emph{might} also work without copying the font, so we
% don't issue an error but only a warning. The problem is that \pdftex\ only
% allows one set of protrusion factors for a given font within one paragraph
% (those that are in effect at the end of the paragraph will be in effect for
@@ -10262,8 +10633,8 @@ end
% to `\texttt{character}' for key \texttt{unit}}
%\changes{v2.0}{2006/09/30}{option `\opt{unit}', \cs{SetProtrusion}:
% deprecate value `\texttt{relative}' completely}
-% Protrusion codes may be relative to character width, or to any dimension.
%\todo{new key for unit: \texttt{dimen} (for \texttt{kerning}, especially)}
+% Protrusion codes may be relative to character width, or to any dimension.
% \begin{macrocode}
%<*pdftex-def|xetex-def|luatex-def>
\define@key{MT@pr@c}{unit}[character]{%
@@ -10880,11 +11251,12 @@ end
}
% \end{macrocode}
%\changes{v1.5}{2004/12/02}{new option: \opt{selected}, by default false
-% (suggested by \contributor \thanh{} <hanthethanh\at gmx.net>)}
+% (suggested by \contributor H\`an \thanhthe{} Th\`anh <hanthethanh\at gmx.net>)}
% ^^A private mail, 2004/11/30
-%\changes{v2.0}{2005/10/04}{(beta:1) new option: \opt{babel}, by default false
+%\changes{v2.0}{2005/10/04}{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
+% ^^A (beta:1)
%\begin{macro}{\MT@def@bool@opt}
% The |true|/|false| options:
% \opt{draft}, \opt{final} (may be inherited from the class options),
@@ -10921,6 +11293,7 @@ end
% \begin{macrocode}
%</package>
%<*pdftex-def|luatex-def|xetex-def>
+%<luatex-def>\MT@requires@luatex4{\let\pdfoutput\outputmode}\relax
\MT@def@bool@opt{DVIoutput}{%
\csname if\@tempa\endcsname
%<*pdftex-def|luatex-def>
@@ -10938,7 +11311,7 @@ end
%\changes{v1.9a}{2005/11/21}{new option: \opt{defersetup}, by default true}
% Setting the \opt{defersetup} option to false will restore the old behaviour,
% where the setup took place at the time when the package was loaded. This is
-% undocumented, since I would like to learn about the cases where this is
+% \emph{undocumented}, since I would like to learn about the cases where this is
% necessary.
%
% The only problem with the new deferred setup I can think of is when a box
@@ -11034,10 +11407,10 @@ end
%</package>
% \end{macrocode}
%\changes{v1.5}{2004/12/02}{defaults: \opt{step}: 4
-% (suggested by \contributor \thanh{} <hanthethanh\at gmx.net>)}
+% (suggested by \contributor H\`an \thanhthe{} Th\`anh <hanthethanh\at gmx.net>)}
% ^^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}{2005/09/21}{new option: \opt{letterspace}, by default 100} ^^A (beta:1)
%^^A\changes{v2.0}{2007/01/05}{option `\texttt{letterspacing}' renamed to `\opt{letterspace}'}
% Options with numerical keys:
% \opt{factor},
@@ -11102,11 +11475,14 @@ end
%\end{macro}
% \begin{macrocode}
\ifx\MT@engine\relax
- \MT@warning@nl{You don't seem to be using either pdftex, luatex, or xetex.\MessageBreak
+ \MT@warning@nl{You don't seem to be using pdftex, luatex or xetex.\MessageBreak
`\MT@MT' only works with these engines.\MessageBreak
- I will quit now.}
+ I will quit now}
\MT@clear@options
\else
+% \end{macrocode}
+% Otherwise load the engine-specific code (as strewn across this file).
+% \begin{macrocode}
\input{microtype-\MT@engine tex.def}
\fi
\MT@endinput
@@ -11340,6 +11716,12 @@ end
%\begin{macro}{\MT@protrudechars}
%\begin{macro}{\MT@adjustspacing}
% \begin{macrocode}
+%<*luatex-def>
+\MT@requires@luatex4{
+ \let\pdfprotrudechars\protrudechars
+ \let\pdfadjustspacing\adjustspacing
+}\relax
+%</luatex-def>
\let\MT@protrudechars\pdfprotrudechars
\let\MT@adjustspacing\pdfadjustspacing
%</pdftex-def|luatex-def>
@@ -11390,9 +11772,11 @@ end
% \begin{macrocode}
\MT@define@optionX@{tracking}{\ifnum\@tempcnta=\z@ \let\MT@tracking\MT@set@tr@zero
\else \let\MT@tracking\MT@tracking@ \fi}
+%<*pdftex>
\MT@define@optionX@{spacing}{\pdfadjustinterwordglue\@tempcnta}
\MT@define@optionX@{kerning}{\pdfprependkern\@tempcnta
\pdfappendkern \@tempcnta}
+%</pdftex>
}{
%</pdftex-def|luatex-def>
%<*pdftex-def|luatex-def|xetex-def>
@@ -11411,8 +11795,10 @@ end
%</pdftex-def|luatex-def|xetex-def>
% \end{macrocode}
%\begin{macro}{\MT@saved@setupfont}
-% Disable everything -- may be used as a work-around in case setting up fonts
-% doesn't work in certain environments. \emph{(Undocumented.)}
+% Disable everything -- may be used as a temporary work-around in case
+% setting up fonts doesn't work under certain circumstances, but only until
+% that specific problem is fixed. This is \emph{undocumented}, as it completely
+% deprives us of the possibility to act -- we're blind and paralysed.
% \begin{macrocode}
%<*package>
\let\MT@saved@setupfont\MT@setupfont
@@ -12028,12 +12414,13 @@ end
}%
\ifMT@kerning
% \end{macrocode}
-%\todo{make switching off of babel's shorthands configurable}
+%\todo{make switching off of \pkg{babel}'s shorthands configurable}
% Disable French \pkg{babel}'s active characters.
-%\changes{v2.0}{2006/10/10}{(beta:8) option `\opt{babel}': fix: switch off French
+%\changes{v2.0}{2006/10/10}{option `\opt{babel}': fix: switch off French
% \pkg{babel}'s shorthands properly
% (reported by \contributor Daniel Flipo <daniel.flipo\at univ-lille1.fr>)}
% ^^A private mail, 2006/10/09
+% ^^A (beta:8)
% \begin{macrocode}
\MT@if@false
\MT@with@babel@and@T{french} \MT@if@true
@@ -12044,7 +12431,7 @@ end
\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}': switch off Turkish \pkg{babel}'s shorthands}
+%\changes{v2.0}{2006/10/10}{option `\opt{babel}': switch off Turkish \pkg{babel}'s shorthands} ^^A (beta:8)
%\changes{v2.3}{2007/10/03}{fix: really switch off Turkish shorthands}
% \begin{macrocode}
\MT@if@false
@@ -12133,49 +12520,70 @@ end
%\changes{v1.9d}{2006/04/20}{add <QX> encoding to text sets}
%\changes{v2.3e}{2009/10/28}{add <T2A> encoding}
%\changes{v2.5}{2010/05/13}{add <EU1> and <EU2> encodings}
+%\changes{v2.6}{2016/04/22}{add <TU> encoding
+% (notified by \contributor Will Robertson <will\at wspr.io>)}
+% ^^A semi-private mail, 2016/01/28
% \begin{macrocode}
\DeclareMicrotypeSet{allmath}
- { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,EU1,EU2,TS1,OML,OMS,U} }
+ { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,EU1,EU2,TU,TS1,OML,OMS,U} }
\DeclareMicrotypeSet{alltext}
- { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1,EU1,EU2} }
+ { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1,EU1,EU2,TU} }
+
+% \end{macrocode}
+%\changes{v2.6}{2014/04/07}{new: \texttt{allmath-nott} and \texttt{alltext-nott}
+% (reqested by \contributor Karl Berry <karl\at freefriends.org>)}
+% ^^A private mail, 2014/03/21
+% \begin{macrocode}
+\DeclareMicrotypeSet{allmath-nott}
+ { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,EU1,EU2,TU,TS1,OML,OMS,U},
+ family = {rm*,sf*}
+ }
+
+\DeclareMicrotypeSet{alltext-nott}
+ { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1,EU1,EU2,TU},
+ family = {rm*,sf*}
+ }
% \end{macrocode}
%\changes{v1.9d}{2006/02/22}{\texttt{md*} instead of \texttt{m} series in basic sets}
% \begin{macrocode}
\DeclareMicrotypeSet{basicmath}
- { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,EU1,EU2,OML,OMS},
+ { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,EU1,EU2,TU,OML,OMS},
family = {rm*,sf*},
series = {md*},
size = {normalsize,footnotesize,small,large}
}
\DeclareMicrotypeSet{basictext}
- { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,EU1,EU2},
+ { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,EU1,EU2,TU},
family = {rm*,sf*},
series = {md*},
size = {normalsize,footnotesize,small,large}
}
% \end{macrocode}
-%\changes{v2.0}{2006/12/28}{add \texttt{smallcaps} set}
+%\changes{v2.0}{2006/12/28}{new: \texttt{smallcaps}}
%\changes{v2.3e}{2009/06/01}{\texttt{sc*} instead of \texttt{sc} in \texttt{smallcaps} set}
+%\changes{v2.6}{2014/02/18}{add \texttt{si} and \texttt{scit} to \texttt{smallcaps} set
+% (reported by \contributor uli <@\at @>)}
+% ^^A http://tex.stackexchange.com/questions/157397
% \begin{macrocode}
\DeclareMicrotypeSet{smallcaps}
- { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1,EU1,EU2},
- shape = {sc*}
+ { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1,EU1,EU2,TU},
+ shape = {sc*,si,scit}
}
% \end{macrocode}
-%\changes{v2.0}{2006/12/21}{add \texttt{footnotesize} and \texttt{scriptsize} sets}
+%\changes{v2.0}{2006/12/21}{new: \texttt{footnotesize} and \texttt{scriptsize}}
% \begin{macrocode}
\DeclareMicrotypeSet{footnotesize}
- { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1,EU1,EU2},
+ { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1,EU1,EU2,TU},
size = {-small}
}
\DeclareMicrotypeSet{scriptsize}
- { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1,EU1,EU2},
+ { encoding = {OT1,T1,T2A,LY1,OT4,QX,T5,TS1,EU1,EU2,TU},
size = {-footnotesize}
}
@@ -12198,6 +12606,7 @@ end
% \end{macrocode}
%
%\subsection{Font variants and aliases}
+%\GeneralChanges{Font aliases}
%
% \begin{macrocode}
%%% -----------------------------------------------------------------------
@@ -12218,9 +12627,9 @@ end
%
%\bigskip\noindent
% Fonts that are `the same':
-% The \pkg{fontspec} package will use |lmr| by default, whose EU1/2 encoding
+% The \pkg{fontspec} package will use |lmr| by default, whose EU1/2/TU encoding
% is declared in \file{mt-LatinModernRoman.cfg}.
-%\changes{v2.5}{2012/08/23}{declare \texttt{lmr} as alias of \texttt{Latin Modern Roman}
+%\changes{v2.5}{2012/08/23}{declare \texttt{lmr} as alias of Latin Modern Roman
% (OpenType version)}
% \begin{macrocode}
\ifMT@fontspec
@@ -12261,7 +12670,7 @@ end
\DeclareMicrotypeAlias{qpl} {ppl} % TeX Gyre Pagella (formerly: qfonts/QuasiPalatino)
% \end{macrocode}
% The `<FPL> Neu' fonts, a `re-implementation' of Palatino.
-%\changes{v2.2}{2007/05/27}{declare <FPL> Neu as an alias of Palatino}
+%\changes{v2.2}{2007/05/27}{declare \texttt{fp9x}, \texttt{fp9j} (<FPL> Neu) as aliases of \texttt{ppl[xj]}}
% \begin{macrocode}
\DeclareMicrotypeAlias{fp9x}{pplx} % FPL Neu
\DeclareMicrotypeAlias{fp9j}{pplj} % "
@@ -12271,7 +12680,7 @@ end
% The OpenType versions:
%
%\changes{v2.5}{2012/03/29}{declare TeX Gyre Pagella, Asana Math, Palatino <LT> Std, and Palatino
-% as aliases of \texttt{Palatino Linotype} (OpenType version)}
+% as aliases of Palatino Linotype (OpenType version)}
% \begin{macrocode}
\DeclareMicrotypeAlias{TeX Gyre Pagella}{Palatino Linotype}
\DeclareMicrotypeAlias{Palatino LT Std} {Palatino Linotype}
@@ -12291,7 +12700,7 @@ end
\DeclareMicrotypeAlias{zeus}{eus} % "
% \end{macrocode}
% MicroPress's Charter version (\pkg{chmath}).
-%\changes{v2.2}{2007/06/08}{declare \texttt{chr} (\pkg{chmath}) as an alias of Charter
+%\changes{v2.2}{2007/06/08}{declare \texttt{chr} (\pkg{chmath}) as an alias of \texttt{bch}
% (reported by \contributor Geoff Vallis <gkv\at Princeton.EDU>)}
% ^^A private mail, 2007/06/07
% \begin{macrocode}
@@ -12299,7 +12708,7 @@ end
% \end{macrocode}
% The \pkg{mathdesign} package provides math fonts matching Bitstream Charter
%\changes{v1.9a}{2005/10/31}{declare \texttt{mdbch} (\pkg{mathdesign})
-% as an alias of Charter}
+% as an alias of \texttt{bch}}
% and <URW> Garamond.
% \begin{macrocode}
\DeclareMicrotypeAlias{mdbch}{bch} % mathdesign/Charter
@@ -12308,7 +12717,7 @@ end
% The \pkg{garamondx} package, an extension of <URW> Garamond, providing
% small caps and oldstyle figures.
%\changes{v2.5}{2013/02/20}{declare \texttt{zgmx} etc. (\pkg{garamondx})
-% as aliases of <URW> Garamond}
+% as aliases of \texttt{ugm}}
% \begin{macrocode}
\DeclareMicrotypeAlias{zgmx}{ugm} % garamondx
\DeclareMicrotypeAlias{zgmj}{ugm} % "
@@ -12592,7 +13001,7 @@ end
%
%\subsubsection{<T5>}
%\changes{v1.9}{2005/08/17}{add list for <T5> (requested by
-% \contributor \thanh{} <hanthethanh\at gmail.com>)}
+% \contributor H\`an \thanhthe{} Th\`anh <hanthethanh\at gmail.com>)}
% ^^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.
@@ -12628,16 +13037,18 @@ end
}
% \end{macrocode}
-%\subsubsection{<EU1>, <EU2>}
+%\subsubsection{<EU1>, <EU2>, <TU>}
%\changes{v2.5}{2010/11/05}{add rudimentary list for <EU1> and <EU2>} ^^A (beta:03)
-% The <EU1> and <EU2> encodings are not well-defined as they don't
+%\changes{v2.6}{2016/04/22}{add <TU> encoding}
+% The <EU1> (\xetex), <EU2> (\luatex), and, since \pkg{fontspec} version 2.5,
+% <TU> encodings are not well-defined in the sense that they don't
% contain a fixed number of glyphs, all of which must be present.
% OpenType fonts may contain thousands of glyphs, but we only define those
% that should be present in every font (basically <T1>). This inheritance list
% should be overridden by font-specific ones.
% \begin{macrocode}
\DeclareCharacterInheritance
- { encoding = {EU1,EU2} }
+ { encoding = {EU1,EU2,TU} }
{ A = {\`A,\'A,\^A,\~A,\"A,\r A,\k A,\u A},
a = {\`a,\'a,\^a,\~a,\"a,\r a,\k a,\u a},
C = {\'C,\c C,\v C},
@@ -12705,6 +13116,7 @@ end
%
%\changes{v2.2}{2007/02/23}{add ligatures that are to be disabled}
%\changes{v2.5}{2011/09/07}{add <EU2> encoding to default list} ^^A (beta:09)
+%\changes{v2.6}{2016/04/22}{add <TU> encoding to default list}
% By default, we only disable the `f*' ligatures, for those fonts that have
% any. Thus, ligatures and especially kerning for all other characters will be
% retained.
@@ -12716,7 +13128,7 @@ end
\SetTracking
[ name = default,
no ligatures = {f} ]
- { encoding = {OT1,T1,T2A,LY1,OT4,QX,EU2} }
+ { encoding = {OT1,T1,T2A,LY1,OT4,QX,EU2,TU} }
{ }
% \end{macrocode}
@@ -13216,6 +13628,7 @@ end
% For \xetex\ (<EU1>) and \luatex\ (<EU2>) we simply use the <T1> list as
% default (for now).
%\changes{v2.5}{2010/11/05}{add default lists for <EU1> and <EU2>} ^^A (beta:03)
+%\changes{v2.6}{2016/04/22}{add <TU> encoding to lists}
% \begin{macrocode}
\SetProtrusion
%<m-t> [ name = T1-default,
@@ -13236,7 +13649,7 @@ end
%<ppl> load = ppl-default ]
%<ptm> load = ptm-default ]
%<ugm> load = ugm-default ]
-%<m-t> { encoding = {T1,LY1,EU1,EU2} }
+%<m-t> { encoding = {T1,LY1,EU1,EU2,TU} }
%<bch|cmr|pad|pmn|ppl> { encoding = {T1,LY1},
%<blg|ptm|ugm> { encoding = {T1},
%<bch> family = bch }
@@ -15851,8 +16264,8 @@ end
%<*m-t|cmr>
%%% -----------------------------------------------------------------------
%%% INTERWORD SPACING
-%</m-t|cmr>
+%</m-t|cmr>
%<*m-t>
\SetExtraSpacing
[ name = default ]
@@ -15861,22 +16274,21 @@ end
% \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, 2005/06/14
-%\ifpdf\IfFileExists{justification.jpg}{^^A
+%\ifpdf\IfFileExists{justification.png}{^^A
% , who also provided the sample in figure~\ref{fig:example-spacing}^^A
%\changes{v2.2}{2007/04/05}{add sample}^^A
% \begin{figure}
% \caption{^^A
-% Example for interword spacing (from Siemoneit 1989).
+% Example for interword spacing (from: M.~Siemoneit, \emph{Typographisches Gestalten}, Frankfurt/M. 1989).
% ^^A Manfred Siemoneit, Typographisches Gestalten.
-% ^^A Regeln und Tips f\"ur die richtige Gestaltung von Drucksachen,
-% ^^A Bielefeld 1989
-% The numbers indicate the preference\slash order when the interword space
-% needs to be shrunk.}
+% ^^A Regeln und Tips f\"ur die richtige Gestaltung von Drucksachen,
+% ^^A Frankfurt/M.: Polygraph Verlag, 1989
+% The numbers indicate the preference for shrinking the interword space.}
% \label{fig:example-spacing}
-% \includegraphics[width=.6\textwidth]{justification.jpg}
+% \includegraphics[width=.66\textwidth]{justification.png}
% \end{figure}^^A
%}\relax\fi.
-% I do not claim to have coped with the task.
+% I~do not claim to have coped with the task.
%\todo{fix settings}
%
%\begin{quote}
@@ -16172,8 +16584,8 @@ end
% \end{macrocode}
%^^A\changes{v2.0}{2006/12/28}{remove \texttt{letterspacing} settings}
%
+%\ifpdf
%\GeneralChanges{Documentation}
-%\changes{v2.5a}{2013/05/15}{include OpenType configuration files}
%^^A The OpenType configuration files are outsourced to an external file,
%^^A since they are typeset with \luatex.
%
@@ -16197,8 +16609,12 @@ end
% To view the OpenType configuration settings, first typeset
% \file{microtype-utf.dtx} with \luatex.}
%
-%
%\GeneralChanges*
+%\else
+% \fallbacktext{The original documentation\footnote{
+% \ctanurl{macros/latex/contrib/microtype/microtype.pdf}.}
+% also includes the OpenType configuration files.}
+%\fi
%
%\section{Auxiliary file for micro fine tuning}
%
@@ -16317,6 +16733,19 @@ normal, and shrunk by 5\%:
% \mailtoRS.
%
% ^^A -------------------------------------------------------------------------
+%
+% \newpage
+% \appendix
+% \AppendixSettings
+% \GeneralChanges{Documentation}
+%
+%\changes{v2.5}{2013/02/23}{include \file{microtype-logo.dtx} and \file{microtype-lssample.dtx}}
+% \InputIfFileExists{microtype-logo.dtx}\relax\relax
+% \InputIfFileExists{microtype-lssample.dtx}\relax\relax
+%
+% \PrintChanges
+%
+% ^^A -------------------------------------------------------------------------
%\makeatother
%
% \CharacterTable
@@ -16335,7 +16764,7 @@ normal, and shrunk by 5\%:
% Grave accent \` Left brace \{ Vertical bar \|
% Right brace \} Tilde \~}
%
-% \CheckSum{10288}
+% \CheckSum{10444}
%
% \Finale
%
@@ -16345,53 +16774,58 @@ normal, and shrunk by 5\%:
*** Typesetting the documentation ***
- The documentation (microtype.pdf) can be found on CTAN, if it isn't already
- on your computer, so there should be no need to re-typeset it.
- If you still want to do that, there are some requirements to consider.
- Follow these steps:
+ The documentation of this package (microtype.pdf) can be found on CTAN,
+ if it isn't already installed in your TeX system, so there should be no
+ need to re-typeset it.
+ If you still want to do this, there are some requirements to consider
+ and some steps to follow:
-# 1) In microtype.ins, uncomment the line:
+# (1) In microtype.ins, uncomment the lines:
+%\generate{\makefile{microtype-gind.ist}{docist}}
+# and
%\generate{\makefile{microtype-doc.sty}{docsty}}
-# 2) Install the package by running:
+# (2) Install the package by running:
pdflatex microtype.ins
-# 3) Extract microtype-lssample.dtx and microtype-logo.dtx from
-# microtype.pdf (ie., from the file you are going to recreate ...).
-# This can be done, eg., with Adobe Reader or with the pdftk tool.
-# 4) Run
+# (3) Extract microtype-lssample.dtx and microtype-logo.dtx from
+# microtype.pdf (ie., from the file you are about to recreate ...).
+# This can be done, eg., with Adobe Reader or with the pdftk tool.
+# (4) Run
pdflatex microtype.dtx
pdflatex microtype.dtx
-# * The following fonts are required:
-# - Bitstream Charter
-# - Bitstream LetterGothic
-# - Adobe Source Sans Pro
-# - Adobe Wittenberger Fraktur MT (alternatively yfrak)
-# - Adobe Zapf Chancery
-# - Adobe Kepler MM (for microtype-logo.dtx, input by microtype.dtx)
-# - Adobe Caslon (for microtype-lssample.dtx, input by microtype.dtx)
-# 5) Run
-makeindex -s gind.ist microtype
-# 6) Run
-makeindex -s gglo.ist -o microtype.gls microtype.glo
-# 7) Run
+# [ The following fonts are required:
+# - Bitstream Charter
+# - Bitstream LetterGothic
+# - Adobe Source Sans Pro
+# - Adobe Wittenberger Fraktur MT (alternatively yfrak)
+# - Adobe Zapf Chancery (alternatively URW Zapf Chancery)
+# - Adobe Kepler MM (for microtype-logo.dtx, input by microtype.dtx)
+# - Adobe Caslon (for microtype-lssample.dtx, input by microtype.dtx) ]
+# (5) Run
+makeindex -s microtype-gind.ist microtype
+# (6) Run
+makeindex -s gglo.ist -o microtype.gls microtype.glo microtype-utf.glo
+# (7) Run
lualatex microtype-utf.dtx
-# * There will be some errors (15, to be exact) about `invalid utf-8 sequences',
-# which you should just ignore.
-# * The following fonts are required:
-# - Bitstream Charter (Type 1)
-# - Bitstream LetterGothic (Type 1)
-# - Adobe Source Sans Pro (Type 1 or OpenType)
-# - Latin Modern Roman (OpenType)
-# - Charis SIL (OpenType)
-# - TeX Gyre Pagella (OpenType)
-# 8) Run
+# [ The following fonts are required:
+# - Bitstream Charter (Type 1)
+# - Bitstream LetterGothic (Type 1)
+# - Adobe Source Sans Pro (Type 1)
+# - Latin Modern Roman (OpenType)
+# - Charis SIL (OpenType)
+# - TeX Gyre Pagella (OpenType) ]
+# (8) Run
pdflatex microtype.dtx
-# 9) Run
-makeindex -s gind.ist microtype
-# 10) Run
-makeindex -s gglo.ist -o microtype.gls microtype.glo
-# 11) Run
+# (9) Run
+makeindex -s microtype-gind.ist microtype
+# (10) Run
+makeindex -s gglo.ist -o microtype.gls microtype.glo microtype-utf.glo
+# (11) Run
pdflatex microtype.dtx
#
-# That's it, although I still may have forgotten some things...
+# That's it, although I still may have forgotten some things ...
+%
+% -- RS
+% -----------------------------------------------------------------------------
+%
+% vim: ts=2:sw=2:et:
%
-% --