From b3225c4301e7724de481f410444fef5463799b9d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Tue, 14 Jan 2020 03:00:43 +0000 Subject: CTAN sync 202001140300 --- macros/latex-dev/base/README.md | 2 +- macros/latex-dev/base/alltt.dtx | 2 +- macros/latex-dev/base/alltt.ins | 4 +- macros/latex-dev/base/alltt.pdf | Bin 172925 -> 173077 bytes macros/latex-dev/base/cfgguide.pdf | Bin 219609 -> 220187 bytes macros/latex-dev/base/cfgguide.tex | 2 +- macros/latex-dev/base/changes.txt | 86 + macros/latex-dev/base/classes.dtx | 32 +- macros/latex-dev/base/classes.ins | 4 +- macros/latex-dev/base/classes.pdf | Bin 521012 -> 521068 bytes macros/latex-dev/base/clsguide.pdf | Bin 371678 -> 372505 bytes macros/latex-dev/base/clsguide.tex | 2 +- macros/latex-dev/base/cmextra.ins | 4 +- macros/latex-dev/base/cmfonts.fdd | 19 +- macros/latex-dev/base/cmfonts.ins | 4 +- macros/latex-dev/base/cmfonts.pdf | Bin 270758 -> 264453 bytes macros/latex-dev/base/cyrguide.pdf | Bin 223439 -> 216976 bytes macros/latex-dev/base/cyrguide.tex | 2 +- macros/latex-dev/base/doc.dtx | 9 +- macros/latex-dev/base/doc.pdf | Bin 629059 -> 629843 bytes macros/latex-dev/base/docstrip.dtx | 2 +- macros/latex-dev/base/docstrip.ins | 4 +- macros/latex-dev/base/docstrip.pdf | Bin 470025 -> 469409 bytes macros/latex-dev/base/ec.ins | 4 +- macros/latex-dev/base/encguide.pdf | Bin 1244549 -> 1530505 bytes macros/latex-dev/base/encguide.tex | 2 +- macros/latex-dev/base/exscale.dtx | 2 +- macros/latex-dev/base/exscale.ins | 4 +- macros/latex-dev/base/exscale.pdf | Bin 195881 -> 195880 bytes macros/latex-dev/base/fix-cm.dtx | 2 +- macros/latex-dev/base/fix-cm.ins | 4 +- macros/latex-dev/base/fix-cm.pdf | Bin 261915 -> 262051 bytes macros/latex-dev/base/fntguide.pdf | Bin 356976 -> 360943 bytes macros/latex-dev/base/fntguide.tex | 91 +- macros/latex-dev/base/fontdef.dtx | 149 +- macros/latex-dev/base/format.ins | 16 +- macros/latex-dev/base/graphpap.dtx | 2 +- macros/latex-dev/base/graphpap.ins | 4 +- macros/latex-dev/base/graphpap.pdf | Bin 156288 -> 156280 bytes macros/latex-dev/base/idx.tex | 2 +- macros/latex-dev/base/ifthen.dtx | 2 +- macros/latex-dev/base/ifthen.ins | 4 +- macros/latex-dev/base/ifthen.pdf | Bin 205211 -> 205205 bytes macros/latex-dev/base/inputenc.dtx | 2 +- macros/latex-dev/base/inputenc.ins | 4 +- macros/latex-dev/base/inputenc.pdf | Bin 294776 -> 294824 bytes macros/latex-dev/base/lablst.tex | 2 +- macros/latex-dev/base/latex209.dtx | 2 +- macros/latex-dev/base/latex209.ins | 4 +- macros/latex-dev/base/latexchanges.pdf | Bin 393049 -> 227574 bytes macros/latex-dev/base/latexchanges.tex | 2 +- macros/latex-dev/base/latexrelease.dtx | 2 +- macros/latex-dev/base/latexrelease.ins | 8 +- macros/latex-dev/base/latexrelease.pdf | Bin 245922 -> 246174 bytes macros/latex-dev/base/latexsym.dtx | 2 +- macros/latex-dev/base/latexsym.ins | 6 +- macros/latex-dev/base/latexsym.pdf | Bin 192302 -> 192293 bytes macros/latex-dev/base/lb2.pdf | Bin 238183 -> 138223 bytes macros/latex-dev/base/letter.dtx | 2 +- macros/latex-dev/base/letter.ins | 4 +- macros/latex-dev/base/letter.pdf | Bin 305243 -> 305288 bytes macros/latex-dev/base/lgc2.pdf | Bin 202897 -> 101344 bytes macros/latex-dev/base/ltalloc.dtx | 2 +- macros/latex-dev/base/ltbibl.dtx | 2 +- macros/latex-dev/base/ltboxes.dtx | 2 +- macros/latex-dev/base/ltclass.dtx | 72 +- macros/latex-dev/base/ltcntrl.dtx | 2 +- macros/latex-dev/base/ltcounts.dtx | 2 +- macros/latex-dev/base/ltdefns.dtx | 2 +- macros/latex-dev/base/ltdirchk.dtx | 2 +- macros/latex-dev/base/lterror.dtx | 2 +- macros/latex-dev/base/ltexpl.dtx | 2 +- macros/latex-dev/base/ltfiles.dtx | 2 +- macros/latex-dev/base/ltfinal.dtx | 20 +- macros/latex-dev/base/ltfloat.dtx | 2 +- macros/latex-dev/base/ltfntcmd.dtx | 33 +- macros/latex-dev/base/ltfssaxes.dtx | 1231 +++++++++++ macros/latex-dev/base/ltfssbas.dtx | 156 +- macros/latex-dev/base/ltfsscmp.dtx | 2 +- macros/latex-dev/base/ltfssdcl.dtx | 2 +- macros/latex-dev/base/ltfssini.dtx | 940 ++++++++- macros/latex-dev/base/ltfsstrc.dtx | 42 +- macros/latex-dev/base/lthyphen.dtx | 2 +- macros/latex-dev/base/ltidxglo.dtx | 2 +- macros/latex-dev/base/ltlength.dtx | 2 +- macros/latex-dev/base/ltlists.dtx | 4 +- macros/latex-dev/base/ltlogos.dtx | 2 +- macros/latex-dev/base/ltluatex.dtx | 2 +- macros/latex-dev/base/ltluatex.pdf | Bin 302613 -> 302606 bytes macros/latex-dev/base/ltmath.dtx | 2 +- macros/latex-dev/base/ltmiscen.dtx | 4 +- macros/latex-dev/base/ltnews.pdf | Bin 883720 -> 911022 bytes macros/latex-dev/base/ltnews.tex | 11 +- macros/latex-dev/base/ltnews01.pdf | Bin 150027 -> 150020 bytes macros/latex-dev/base/ltnews01.tex | 2 +- macros/latex-dev/base/ltnews02.pdf | Bin 141559 -> 134750 bytes macros/latex-dev/base/ltnews02.tex | 2 +- macros/latex-dev/base/ltnews03.pdf | Bin 141541 -> 134730 bytes macros/latex-dev/base/ltnews03.tex | 2 +- macros/latex-dev/base/ltnews04.pdf | Bin 135577 -> 128768 bytes macros/latex-dev/base/ltnews04.tex | 2 +- macros/latex-dev/base/ltnews05.pdf | Bin 163984 -> 157174 bytes macros/latex-dev/base/ltnews05.tex | 2 +- macros/latex-dev/base/ltnews06.pdf | Bin 133140 -> 133132 bytes macros/latex-dev/base/ltnews06.tex | 2 +- macros/latex-dev/base/ltnews07.pdf | Bin 130835 -> 124028 bytes macros/latex-dev/base/ltnews07.tex | 2 +- macros/latex-dev/base/ltnews08.pdf | Bin 144478 -> 144471 bytes macros/latex-dev/base/ltnews08.tex | 2 +- macros/latex-dev/base/ltnews09.pdf | Bin 120216 -> 120208 bytes macros/latex-dev/base/ltnews09.tex | 2 +- macros/latex-dev/base/ltnews10.pdf | Bin 147946 -> 147941 bytes macros/latex-dev/base/ltnews10.tex | 2 +- macros/latex-dev/base/ltnews11.pdf | Bin 104948 -> 104942 bytes macros/latex-dev/base/ltnews11.tex | 2 +- macros/latex-dev/base/ltnews12.pdf | Bin 137925 -> 137918 bytes macros/latex-dev/base/ltnews12.tex | 2 +- macros/latex-dev/base/ltnews13.pdf | Bin 161072 -> 161066 bytes macros/latex-dev/base/ltnews13.tex | 2 +- macros/latex-dev/base/ltnews14.pdf | Bin 150928 -> 150920 bytes macros/latex-dev/base/ltnews14.tex | 2 +- macros/latex-dev/base/ltnews15.pdf | Bin 122094 -> 122088 bytes macros/latex-dev/base/ltnews15.tex | 2 +- macros/latex-dev/base/ltnews16.pdf | Bin 137500 -> 130688 bytes macros/latex-dev/base/ltnews16.tex | 2 +- macros/latex-dev/base/ltnews17.pdf | Bin 156557 -> 149740 bytes macros/latex-dev/base/ltnews17.tex | 2 +- macros/latex-dev/base/ltnews18.pdf | Bin 36010 -> 36003 bytes macros/latex-dev/base/ltnews18.tex | 2 +- macros/latex-dev/base/ltnews19.pdf | Bin 235074 -> 235068 bytes macros/latex-dev/base/ltnews19.tex | 2 +- macros/latex-dev/base/ltnews20.pdf | Bin 283179 -> 283173 bytes macros/latex-dev/base/ltnews21.pdf | Bin 236105 -> 233341 bytes macros/latex-dev/base/ltnews22.pdf | Bin 302720 -> 302711 bytes macros/latex-dev/base/ltnews22.tex | 2 +- macros/latex-dev/base/ltnews23.pdf | Bin 274333 -> 274326 bytes macros/latex-dev/base/ltnews23.tex | 2 +- macros/latex-dev/base/ltnews24.pdf | Bin 255302 -> 252518 bytes macros/latex-dev/base/ltnews24.tex | 2 +- macros/latex-dev/base/ltnews25.pdf | Bin 196332 -> 196325 bytes macros/latex-dev/base/ltnews25.tex | 2 +- macros/latex-dev/base/ltnews26.pdf | Bin 365466 -> 362703 bytes macros/latex-dev/base/ltnews26.tex | 2 +- macros/latex-dev/base/ltnews27.pdf | Bin 239763 -> 239755 bytes macros/latex-dev/base/ltnews27.tex | 2 +- macros/latex-dev/base/ltnews28.pdf | Bin 368514 -> 368086 bytes macros/latex-dev/base/ltnews28.tex | 2 +- macros/latex-dev/base/ltnews29.pdf | Bin 435463 -> 432667 bytes macros/latex-dev/base/ltnews29.tex | 2 +- macros/latex-dev/base/ltnews30.pdf | Bin 490976 -> 490969 bytes macros/latex-dev/base/ltnews31.pdf | Bin 337112 -> 424281 bytes macros/latex-dev/base/ltnews31.tex | 548 ++++- macros/latex-dev/base/ltoutenc.dtx | 775 +------ macros/latex-dev/base/ltoutenc.ins | 9 +- macros/latex-dev/base/ltoutput.dtx | 2 +- macros/latex-dev/base/ltpage.dtx | 2 +- macros/latex-dev/base/ltpageno.dtx | 2 +- macros/latex-dev/base/ltpar.dtx | 2 +- macros/latex-dev/base/ltpictur.dtx | 2 +- macros/latex-dev/base/ltplain.dtx | 2 +- macros/latex-dev/base/ltsect.dtx | 2 +- macros/latex-dev/base/ltspace.dtx | 4 +- macros/latex-dev/base/lttab.dtx | 2 +- macros/latex-dev/base/lttextcomp.dtx | 2215 ++++++++++++++++++++ macros/latex-dev/base/ltthm.dtx | 2 +- macros/latex-dev/base/ltvers.dtx | 6 +- macros/latex-dev/base/ltx3info.pdf | Bin 197804 -> 191533 bytes macros/latex-dev/base/ltx3info.tex | 2 +- macros/latex-dev/base/ltxcheck.tex | 2 +- macros/latex-dev/base/ltxdoc.dtx | 2 +- macros/latex-dev/base/ltxdoc.pdf | Bin 215387 -> 215600 bytes macros/latex-dev/base/ltxref.dtx | 2 +- macros/latex-dev/base/makeindx.dtx | 2 +- macros/latex-dev/base/makeindx.ins | 4 +- macros/latex-dev/base/makeindx.pdf | Bin 160679 -> 160673 bytes macros/latex-dev/base/manual.pdf | Bin 151360 -> 151354 bytes macros/latex-dev/base/modguide.pdf | Bin 226766 -> 220384 bytes macros/latex-dev/base/modguide.tex | 2 +- macros/latex-dev/base/newdc.ins | 4 +- macros/latex-dev/base/newlfont.dtx | 2 +- macros/latex-dev/base/nfssfont.dtx | 2 +- macros/latex-dev/base/nfssfont.ins | 4 +- macros/latex-dev/base/nfssfont.pdf | Bin 202434 -> 202429 bytes macros/latex-dev/base/olddc.ins | 4 +- macros/latex-dev/base/oldlfont.dtx | 2 +- macros/latex-dev/base/preload.dtx | 2 +- macros/latex-dev/base/proc.dtx | 2 +- macros/latex-dev/base/proc.ins | 4 +- macros/latex-dev/base/proc.pdf | Bin 216907 -> 216899 bytes macros/latex-dev/base/slides.dtx | 10 +- macros/latex-dev/base/slides.ins | 8 +- macros/latex-dev/base/slides.pdf | Bin 351771 -> 352152 bytes macros/latex-dev/base/slifonts.pdf | Bin 214301 -> 214708 bytes macros/latex-dev/base/source2e.pdf | Bin 2878515 -> 3126387 bytes macros/latex-dev/base/source2e.tex | 8 +- macros/latex-dev/base/syntonly.dtx | 2 +- macros/latex-dev/base/syntonly.ins | 4 +- macros/latex-dev/base/syntonly.pdf | Bin 182088 -> 181687 bytes macros/latex-dev/base/testpage.tex | 2 +- macros/latex-dev/base/tlc2.pdf | Bin 273653 -> 164949 bytes macros/latex-dev/base/tulm.ins | 4 +- macros/latex-dev/base/tulm.pdf | Bin 156541 -> 156534 bytes macros/latex-dev/base/unpack.ins | 2 +- macros/latex-dev/base/usrguide.pdf | Bin 396690 -> 398281 bytes macros/latex-dev/base/usrguide.tex | 2 +- macros/latex-dev/base/utf8ienc.dtx | 2 +- macros/latex-dev/base/utf8ienc.pdf | Bin 337692 -> 330882 bytes macros/latex-dev/base/webcomp.pdf | Bin 136159 -> 136153 bytes macros/latex-dev/required/tools/afterpage.pdf | Bin 189855 -> 189848 bytes macros/latex-dev/required/tools/array.pdf | Bin 481483 -> 481463 bytes macros/latex-dev/required/tools/bm.pdf | Bin 306786 -> 306782 bytes macros/latex-dev/required/tools/calc.pdf | Bin 340608 -> 340877 bytes macros/latex-dev/required/tools/changes.txt | 10 + macros/latex-dev/required/tools/dcolumn.pdf | Bin 199053 -> 199221 bytes macros/latex-dev/required/tools/delarray.pdf | Bin 183440 -> 183432 bytes macros/latex-dev/required/tools/enumerate.pdf | Bin 199056 -> 199049 bytes macros/latex-dev/required/tools/fileerr.pdf | Bin 180550 -> 180048 bytes macros/latex-dev/required/tools/fontsmpl.pdf | Bin 144826 -> 138025 bytes macros/latex-dev/required/tools/ftnright.pdf | Bin 347382 -> 346873 bytes macros/latex-dev/required/tools/hhline.dtx | 19 +- macros/latex-dev/required/tools/hhline.pdf | Bin 175724 -> 175678 bytes macros/latex-dev/required/tools/indentfirst.pdf | Bin 144786 -> 144779 bytes macros/latex-dev/required/tools/layout.pdf | Bin 246939 -> 246931 bytes macros/latex-dev/required/tools/longtable.pdf | Bin 350096 -> 350326 bytes macros/latex-dev/required/tools/multicol.dtx | 43 +- macros/latex-dev/required/tools/multicol.pdf | Bin 490977 -> 491417 bytes macros/latex-dev/required/tools/rawfonts.pdf | Bin 135695 -> 135688 bytes macros/latex-dev/required/tools/shellesc.pdf | Bin 169764 -> 169757 bytes macros/latex-dev/required/tools/showkeys.pdf | Bin 242793 -> 242786 bytes macros/latex-dev/required/tools/somedefs.pdf | Bin 156466 -> 156511 bytes macros/latex-dev/required/tools/tabularx.pdf | Bin 254089 -> 254340 bytes macros/latex-dev/required/tools/theorem.pdf | Bin 323501 -> 323427 bytes macros/latex-dev/required/tools/tools-overview.pdf | Bin 68295 -> 68288 bytes macros/latex-dev/required/tools/trace.pdf | Bin 212747 -> 212742 bytes macros/latex-dev/required/tools/varioref.pdf | Bin 355234 -> 355228 bytes macros/latex-dev/required/tools/verbatim.pdf | Bin 308886 -> 302239 bytes macros/latex-dev/required/tools/xr.pdf | Bin 163793 -> 163785 bytes macros/latex-dev/required/tools/xspace.pdf | Bin 238011 -> 238007 bytes 238 files changed, 5743 insertions(+), 1101 deletions(-) create mode 100644 macros/latex-dev/base/ltfssaxes.dtx create mode 100644 macros/latex-dev/base/lttextcomp.dtx (limited to 'macros/latex-dev') diff --git a/macros/latex-dev/base/README.md b/macros/latex-dev/base/README.md index 2514e10177..a8b6195bfe 100644 --- a/macros/latex-dev/base/README.md +++ b/macros/latex-dev/base/README.md @@ -1,7 +1,7 @@ The LaTeX kernel ================ -Release 2020-02-01 pre-release 2 +Release 2020-02-02 pre-release 3 Overview -------- diff --git a/macros/latex-dev/base/alltt.dtx b/macros/latex-dev/base/alltt.dtx index c106b5a97f..2c9e22a124 100644 --- a/macros/latex-dev/base/alltt.dtx +++ b/macros/latex-dev/base/alltt.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/alltt.ins b/macros/latex-dev/base/alltt.ins index e60d1f6df3..197637dfb1 100644 --- a/macros/latex-dev/base/alltt.ins +++ b/macros/latex-dev/base/alltt.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2019 +%% Copyright (C) 1993-2020 %% The LaTeX3 Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. diff --git a/macros/latex-dev/base/alltt.pdf b/macros/latex-dev/base/alltt.pdf index 30aebe01bc..e60420986f 100644 Binary files a/macros/latex-dev/base/alltt.pdf and b/macros/latex-dev/base/alltt.pdf differ diff --git a/macros/latex-dev/base/cfgguide.pdf b/macros/latex-dev/base/cfgguide.pdf index 31e0c133f0..801ea74acb 100644 Binary files a/macros/latex-dev/base/cfgguide.pdf and b/macros/latex-dev/base/cfgguide.pdf differ diff --git a/macros/latex-dev/base/cfgguide.tex b/macros/latex-dev/base/cfgguide.tex index 651b59bc20..0edfaf8d83 100644 --- a/macros/latex-dev/base/cfgguide.tex +++ b/macros/latex-dev/base/cfgguide.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/changes.txt b/macros/latex-dev/base/changes.txt index ea882e939f..686a62b4a5 100644 --- a/macros/latex-dev/base/changes.txt +++ b/macros/latex-dev/base/changes.txt @@ -4,6 +4,87 @@ completeness or accuracy and it contains some references to files that are not part of the distribution. ======================================================================= +2020-01-12 Frank Mittelbach + + * ltfssini.dtx (section{Custom series settings for main document families}): + Cleaning up the code for \rmfamily, \sffamily, \ttfamily and adding + hooks to support Japanese implementations. + +2020-01-05 David Carlisle + + * base/ltclass.dtx: Support more write streams for + filecontents in LuaTeX (gh/238) + +2019-12-24 Frank Mittelbach + + * lttextcomp.dtx: Implement text companion symbols in the kernel + (formerly textcomp package). + +2019-12-21 Frank Mittelbach + + * fontdef.dtx: + Make remaing alias definition robust independently (gh/184) + +2019-12-20 Frank Mittelbach + + * classes.dtx (subsubsection{Itemize}): + Normalize the itemlabels by providing \itemlabelfont + (defaulting to \normalfont) + +2019-12-18 Frank Mittelbach + + * ltoutenc.dtx: improve \add@accent + + * ltoutenc.dtx (subsubsection{Default encodings}): + Don't fake \textcompwordmark; take default from T1 instead + +2019-12-17 Frank Mittelbach + + * fontdef.dtx (subsection{Defaults}): Set + \shapedefault explicitly to "n" not \updefault + \bfdefault set to to "b" not "bx" (but bx for CM fonts) + \updefault set to to "up" not "n". + Part of extending the series and shape handling, see ltnews31. + +2019-12-17 Frank Mittelbach + + * ltfssini.dtx (section{Supporting nested emphasis}): + Support nested \emph sequences a generalization \eminnershape. + See ltnews31 for details. + + * ltfssini.dtx (section{Custom series settings for main document families}): + Provide custom series settings a la mweights package. + See ltnews31 for details. + +2019-12-17 Frank Mittelbach + + * ltfssaxes.dtx: Code for additional series and shape axes added + See ltnews31 for details. + +2019-12-16 Frank Mittelbach + + * doc.dtx (subsection{Macros surrounding the `definition parts'}): + Use \shapedefault not \updefault for extended NFSS + +2019-12-16 Frank Mittelbach + + * cmfonts.fdd: Provide substitutions for cmtt/bx/sl + +2019-12-02 Frank Mittelbach + + * cmfonts.fdd: Silent warning for cmss/it substitution (gh/172)} + +2019-11-29 Frank Mittelbach + + * ltclass.dtx: Be careful when displaying the package or + class info text as it may contain UTF-8 chars (gh/52)} + +2019-11-22 Frank Mittelbach + + * ltoutenc.dtx (subsection{The fontenc package}): + Avoid spurious warning if fontenc selects LY1 as default + encoding (gh/199) + 2019-11-14 Frank Mittelbach * utf8ienc.dtx (subsection{The mapping table}): @@ -31,6 +112,11 @@ are not part of the distribution. * ltclass.dtx (section{Implementation}): Initialize \...-h@@k only when loading the package or class (gh/198) +2019-10-11 Frank Mittelbach + + * ltfsstrc.dtx (subsection{Sizefunctions}): + Added 'alias' size function (mainly for autoinst fonts) + ######################### # 2019-10-01 PL 3 Release ######################### diff --git a/macros/latex-dev/base/classes.dtx b/macros/latex-dev/base/classes.dtx index 1de8095a6e..b43ae84f37 100644 --- a/macros/latex-dev/base/classes.dtx +++ b/macros/latex-dev/base/classes.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -53,7 +53,7 @@ %<*driver> \ProvidesFile{classes.drv} % - [2019/10/25 v1.4k + [2019/12/20 v1.4l % Standard LaTeX document class] %<10pt|11pt|12pt> Standard LaTeX file (size option)] % \end{macrocode} @@ -2949,15 +2949,33 @@ % \begin{macro}{\labelitemiv} % Itemization is controlled by four commands: |\labelitemi|, % |\labelitemii|, |\labelitemiii|, and |\labelitemiv|, which define -% the labels of thevarious itemization levels: the symbols used are +% the labels of the various itemization levels: the symbols used are % bullet, bold en-dash, centered asterisk and centred dot. % % \begin{macrocode} -\newcommand\labelitemi{\textbullet} -\newcommand\labelitemii{\normalfont\bfseries \textendash} -\newcommand\labelitemiii{\textasteriskcentered} -\newcommand\labelitemiv{\textperiodcentered} +\newcommand\labelitemi {\labelitemfont \textbullet} +\newcommand\labelitemii {\labelitemfont \bfseries \textendash} +\newcommand\labelitemiii{\labelitemfont \textasteriskcentered} +\newcommand\labelitemiv{ \labelitemfont \textperiodcentered} % \end{macrocode} +% +% \begin{macro}{\labelitemfont} +% The default definition for \cs{labelitemfont} is to reset the +% font to \cs{normalfont} so that always the same symbol is +% produced regardless of surrounding conditions. +% +% \changes{v1.4l}{2019/12/20}{Normalize label fonts} +% A possible alternative would be +%\begin{verbatim} +%\renewcommand\labelitemfont{% +% \fontseries\seriesdefault +% \fontshape\shapedefault\selectfont} +%\end{verbatim} +% which resets series and shape doesn't touch the family. +% \begin{macrocode} +\newcommand\labelitemfont{\normalfont} +% \end{macrocode} +% \end{macro} % \end{macro} % \end{macro} % \end{macro} diff --git a/macros/latex-dev/base/classes.ins b/macros/latex-dev/base/classes.ins index b56871b111..c6f1696a1d 100644 --- a/macros/latex-dev/base/classes.ins +++ b/macros/latex-dev/base/classes.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2019 +%% Copyright (C) 1993-2020 %% The LaTeX3 Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. diff --git a/macros/latex-dev/base/classes.pdf b/macros/latex-dev/base/classes.pdf index 46e254f6a6..9a7dfeeac2 100644 Binary files a/macros/latex-dev/base/classes.pdf and b/macros/latex-dev/base/classes.pdf differ diff --git a/macros/latex-dev/base/clsguide.pdf b/macros/latex-dev/base/clsguide.pdf index d65fb12386..fc1f4dc5ef 100644 Binary files a/macros/latex-dev/base/clsguide.pdf and b/macros/latex-dev/base/clsguide.pdf differ diff --git a/macros/latex-dev/base/clsguide.tex b/macros/latex-dev/base/clsguide.tex index 2b3c4b3b00..4b50a0b312 100644 --- a/macros/latex-dev/base/clsguide.tex +++ b/macros/latex-dev/base/clsguide.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/cmextra.ins b/macros/latex-dev/base/cmextra.ins index 00a8554464..6490133296 100644 --- a/macros/latex-dev/base/cmextra.ins +++ b/macros/latex-dev/base/cmextra.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2019 +%% Copyright (C) 1993-2020 %% The LaTeX3 Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. diff --git a/macros/latex-dev/base/cmfonts.fdd b/macros/latex-dev/base/cmfonts.fdd index f330394792..b7b97ccf1c 100644 --- a/macros/latex-dev/base/cmfonts.fdd +++ b/macros/latex-dev/base/cmfonts.fdd @@ -26,7 +26,6 @@ % extension .ins) which are part of the distribution. % % \fi -% \CheckSum{295} % %\iffalse This is a META comment % @@ -68,7 +67,7 @@ %<*driver, > \ProvidesFile{cmfonts.drv} % - [2014/09/29 v2.5h Standard LaTeX font definitions] + [2019/12/16 v2.5j Standard LaTeX font definitions] % %<*driver> \documentclass{ltxdoc} @@ -915,8 +914,13 @@ %<+OT1cmss,Ucmss>% Font undefined, therefore substituted %<+OT1cmss>\DeclareFontShape{OT1}{cmss}{m}{it} %<+Ucmss>\DeclareFontShape{U}{cmss}{m}{it}% -%<-nowarn> {<->sub*cmss/m/sl}{} -%<+nowarn> {<->ssub*cmss/m/sl}{} +% \end{macrocode} +% Never warn about substituting \texttt{sl} for \texttt{it} because +% that is common practise for sans serif fonts. +% \changes{v2.5i}{2019/12/02}{Silent warning for cmss/it substitution +% (gh/172)} +% \begin{macrocode} + {<->ssub*cmss/m/sl}{} %<+OT1cmss>\DeclareFontShape{OT1}{cmss}{m}{sl} %<+Ucmss>\DeclareFontShape{U}{cmss}{m}{sl}% {% @@ -1021,6 +1025,13 @@ %<+Ucmtt>\DeclareFontShape{U}{cmtt}{bx}{it}% %<-nowarn> {<->sub*cmtt/m/it}{} %<+nowarn> {<->ssub*cmtt/m/it}{} +% \end{macrocode} +% +% \changes{v2.5j}{2019/12/16}{Provide substitutions for cmtt/bx/sl} +% \begin{macrocode} +%<+OT1cmtt>\DeclareFontShape{OT1}{cmtt}{bx}{sl} +%<-nowarn> {<->sub*cmtt/m/n}{} +%<+nowarn> {<->ssub*cmtt/m/n}{} %<+OT1cmtt>\DeclareFontShape{OT1}{cmtt}{bx}{ui} %<+Ucmtt>\DeclareFontShape{U}{cmtt}{bx}{ui}% %<-nowarn> {<->sub*cmtt/m/it}{} diff --git a/macros/latex-dev/base/cmfonts.ins b/macros/latex-dev/base/cmfonts.ins index b28cb7ba29..a290b22cd3 100644 --- a/macros/latex-dev/base/cmfonts.ins +++ b/macros/latex-dev/base/cmfonts.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2019 +%% Copyright (C) 1993-2020 %% The LaTeX3 Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. diff --git a/macros/latex-dev/base/cmfonts.pdf b/macros/latex-dev/base/cmfonts.pdf index 85eb37d861..c6b67359bb 100644 Binary files a/macros/latex-dev/base/cmfonts.pdf and b/macros/latex-dev/base/cmfonts.pdf differ diff --git a/macros/latex-dev/base/cyrguide.pdf b/macros/latex-dev/base/cyrguide.pdf index 7c66ffc92e..e5700cd659 100644 Binary files a/macros/latex-dev/base/cyrguide.pdf and b/macros/latex-dev/base/cyrguide.pdf differ diff --git a/macros/latex-dev/base/cyrguide.tex b/macros/latex-dev/base/cyrguide.tex index ed73423510..c3feb2c14b 100644 --- a/macros/latex-dev/base/cyrguide.tex +++ b/macros/latex-dev/base/cyrguide.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/doc.dtx b/macros/latex-dev/base/doc.dtx index e7f2b44c2f..31c36b88c7 100644 --- a/macros/latex-dev/base/doc.dtx +++ b/macros/latex-dev/base/doc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -35,7 +35,7 @@ %<+package|shortvrb>\NeedsTeXFormat{LaTeX2e}[1994/12/01] %<+package> \ProvidesPackage{doc} %<+shortvrb>\ProvidesPackage{shortvrb} -%<+package|shortvrb> [2019/11/10 v2.1k +%<+package|shortvrb> [2019/12/16 v2.1l %<+package|shortvrb> Standard LaTeX documentation package (FMi)] %\catcode`\<=12 % @@ -1448,18 +1448,19 @@ % bothered since doc-sources should be up-to-date but since the % request came from someone called David Carlisle \ldots :-) % \changes{v1.9y}{1996/01/26}{Support compat mode} +% \changes{v2.1l}{2019/12/16}{Use \cs{shapedefault} not \cs{updefault} for extended NFSS} % \begin{macrocode} \def\MacroFont{\small \usefont\encodingdefault \ttdefault \mddefault - \updefault + \shapedefault }% \else \def\MacroFont{\fontencoding\encodingdefault \fontfamily\ttdefault \fontseries\mddefault - \fontshape\updefault + \fontshape\shapedefault \small}% \fi }{} diff --git a/macros/latex-dev/base/doc.pdf b/macros/latex-dev/base/doc.pdf index 5d99480994..771be50d69 100644 Binary files a/macros/latex-dev/base/doc.pdf and b/macros/latex-dev/base/doc.pdf differ diff --git a/macros/latex-dev/base/docstrip.dtx b/macros/latex-dev/base/docstrip.dtx index 5ee3d1b7ae..31245a1ef8 100644 --- a/macros/latex-dev/base/docstrip.dtx +++ b/macros/latex-dev/base/docstrip.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/docstrip.ins b/macros/latex-dev/base/docstrip.ins index 7b68b7ce85..aa4d869dfd 100644 --- a/macros/latex-dev/base/docstrip.ins +++ b/macros/latex-dev/base/docstrip.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2019 +%% Copyright (C) 1993-2020 %% The LaTeX3 Project and any individual authors listed elsewhere %% in this file. %% @@ -52,7 +52,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. diff --git a/macros/latex-dev/base/docstrip.pdf b/macros/latex-dev/base/docstrip.pdf index 450c3bcf52..b79e99ed02 100644 Binary files a/macros/latex-dev/base/docstrip.pdf and b/macros/latex-dev/base/docstrip.pdf differ diff --git a/macros/latex-dev/base/ec.ins b/macros/latex-dev/base/ec.ins index 196396a24a..9c10479eae 100644 --- a/macros/latex-dev/base/ec.ins +++ b/macros/latex-dev/base/ec.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2019 +%% Copyright (C) 1993-2020 %% The LaTeX3 Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. diff --git a/macros/latex-dev/base/encguide.pdf b/macros/latex-dev/base/encguide.pdf index 51fffb6777..cd3e045000 100644 Binary files a/macros/latex-dev/base/encguide.pdf and b/macros/latex-dev/base/encguide.pdf differ diff --git a/macros/latex-dev/base/encguide.tex b/macros/latex-dev/base/encguide.tex index ec18fab6f8..8032f2cce9 100644 --- a/macros/latex-dev/base/encguide.tex +++ b/macros/latex-dev/base/encguide.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/exscale.dtx b/macros/latex-dev/base/exscale.dtx index 575a89ce68..0267d94794 100644 --- a/macros/latex-dev/base/exscale.dtx +++ b/macros/latex-dev/base/exscale.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/exscale.ins b/macros/latex-dev/base/exscale.ins index cc8d8d9ae9..13941ca647 100644 --- a/macros/latex-dev/base/exscale.ins +++ b/macros/latex-dev/base/exscale.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2019 +%% Copyright (C) 1993-2020 %% The LaTeX3 Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. diff --git a/macros/latex-dev/base/exscale.pdf b/macros/latex-dev/base/exscale.pdf index 518c658f77..e38b5e759f 100644 Binary files a/macros/latex-dev/base/exscale.pdf and b/macros/latex-dev/base/exscale.pdf differ diff --git a/macros/latex-dev/base/fix-cm.dtx b/macros/latex-dev/base/fix-cm.dtx index 7f770cf8c0..e4c384ee70 100644 --- a/macros/latex-dev/base/fix-cm.dtx +++ b/macros/latex-dev/base/fix-cm.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/fix-cm.ins b/macros/latex-dev/base/fix-cm.ins index eb4547d576..0e587d80ba 100644 --- a/macros/latex-dev/base/fix-cm.ins +++ b/macros/latex-dev/base/fix-cm.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2019 +%% Copyright (C) 1993-2020 %% The LaTeX3 Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. diff --git a/macros/latex-dev/base/fix-cm.pdf b/macros/latex-dev/base/fix-cm.pdf index 5672a24f77..c3fc4b7734 100644 Binary files a/macros/latex-dev/base/fix-cm.pdf and b/macros/latex-dev/base/fix-cm.pdf differ diff --git a/macros/latex-dev/base/fntguide.pdf b/macros/latex-dev/base/fntguide.pdf index 5b0191c09d..f6e8ef39ca 100644 Binary files a/macros/latex-dev/base/fntguide.pdf and b/macros/latex-dev/base/fntguide.pdf differ diff --git a/macros/latex-dev/base/fntguide.tex b/macros/latex-dev/base/fntguide.tex index f3231a8183..59c6499962 100644 --- a/macros/latex-dev/base/fntguide.tex +++ b/macros/latex-dev/base/fntguide.tex @@ -38,7 +38,7 @@ \author{\copyright~Copyright 1995--2019, \LaTeX3 Project Team.\\ All rights reserved.} -\date{July 2019} +\date{October 2019} \begin{document} @@ -170,7 +170,7 @@ Addresses and other details can be found at: This section describes the commands available to class and package writers for specifying and selecting fonts. -\subsection{Text font attributes} +\subsection{Text font attributes} \label{sec:textfontattributes} Every text font in \LaTeX{} has five \emph{attributes}: \begin{description} @@ -1214,6 +1214,13 @@ Tries to load a font from a different font shape declaration given by \item[ssub] Silent variant of `sub', only loggings. +\item[alias] +\NEWfeature{2019/10/15} +Same as `ssub' but with a different logging message. Intended for +cases where the substitution is only done to change the name, e.g., +going from \texttt{regular} series to the official name \texttt{m}. In +that case given a warning that some shape is not found is not correct. + \item[subf] Like the empty function but issues a warning that it has to substitute the external font \m{fontarg} because the desired font shape was not @@ -1603,6 +1610,9 @@ Example: \DeclareFontSubstitution{T1}{cmr}{m}{n} \end{verbatim} + + + \subsection{Case changing} \label{sec:case} @@ -1810,15 +1820,25 @@ with |L|, experimental encodings intended for wide distribution will start with |E|, whilst |U| is for Unknown or Unclassified encodings. \item -Font family names should contain up to five lower case letters. -Where possible, these should conform to the \emph{Filenames for fonts} -font naming scheme. +\NEWdescription{2019/10/15} +Font family names should contain only upper and lower case letters and +hyphen characters. Where possible, these should conform to the +\emph{Filenames for fonts} font naming scheme of the scheme +implemented by \texttt{autoinst} with suffixes such as \texttt{-LF}, +\texttt{-OsF}, etc.\ to indicate different figure styles. \item -Font series names should contain up to four lower case letters. +\NEWdescription{2019/10/15} +Font series names should contain up to four lower case letters. If at +all possible standard names as suggested in +Section~\ref{sec:textfontattributes} should be used. Font specific +names such as \texttt{regular} or \texttt{black}, etc.\ should be at +least aliased to a corresponding standard name. \item -Font shapes should contain up to two letters lower case. +\NEWdescription{2019/10/15} +Font shapes should contain up to four letters lower case. Use the +names suggested in Section~\ref{sec:textfontattributes}. \item Names for symbol fonts are built from lower and upper case letters @@ -1844,6 +1864,63 @@ fonts with existing fonts. Note that commands defined in this way must be robust, in case they get put into a section title or other moving argument. + + +\subsection{The order of declaration} + + +\NEWdescription{2019/10/15} +\NFSS{} forces you to give all declarations in a specific order so +that it can check whether you have specified all necessary +information. If you declare objects in the wrong order, it will +complain. Here are the dependencies that you have to obey: +\begin{itemize} +\item +|\DeclareFontFamily| checks that the encoding scheme was previously +declared with |\DeclareFontEncoding|. + +\item +|\DeclareFontShape| checks that the font +family was declared to be available in the requested +encoding (|\DeclareFontFamily|). + +\item +|\DeclareSymbolFont| checks that the encoding scheme is valid. + +\item +|\SetSymbolFont| additionally ensures that the requested math +version was declared (|\DeclareMathVersion|) and that the requested +symbol font was declared (|\DeclareSymbolFont|). + + +\item +|\DeclareSymbolFontAlphabet| checks that the command name for the +alphabet identifier can be used and that the symbol font was declared. + +\item +|\DeclareMathAlphabet| checks that the chosen command name can be +used and that the encoding scheme was declared. + +\item +|\SetMathAlphabet| checks that the alphabet identifier was +previously declared with |\DeclareMathAlphabet| or +|\DeclareSymbolFontAlphabet| and that the math version and the +encoding scheme are known. + +\item +|\DeclareMathSymbol| makes sure that the command name can be used +(i.e., is undefined or was previously declared to be a math symbol) +and that the symbol font was previously declared. + +\item +When the |\begin{document}| command is reached, \NFSS{} makes +some additional checks---for example, verifying that substitution +defaults for every encoding scheme point to known font shape group +declarations. +\end{itemize} + + + \section{If you need to know more \ldots} \NEWdescription{1996/06/01} diff --git a/macros/latex-dev/base/fontdef.dtx b/macros/latex-dev/base/fontdef.dtx index c9c5f5d77d..d1931e8652 100644 --- a/macros/latex-dev/base/fontdef.dtx +++ b/macros/latex-dev/base/fontdef.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -39,7 +39,7 @@ %\ProvidesFile{fontdef.drv} % \fi % \ProvidesFile{fontdef.dtx} -%<-latexrelease> [2019/09/21 v3.0d LaTeX Kernel +%<-latexrelease> [2019/12/17 v3.0e LaTeX Kernel % \iftrue (\else %(Text %(Math @@ -253,6 +253,10 @@ \input {ot1enc.def} % <- should come after T1 for speed \input {omsenc.def} % \end{macrocode} +% +% \begin{macrocode} +\input{ts1enc.def} +% \end{macrocode} % \changes{v3.0a}{2016/12/03}{(DPC) Default to TU encoding for Unicode TeX engines} % \begin{macrocode} \ifx\Umathchar\@undefined @@ -265,6 +269,16 @@ \fontencoding{OT1} % \end{macrocode} % +% +% +% +% \begin{macrocode} +\def\rmsubstdefault{cmr} +\def\sfsubstdefault{cmss} +\def\ttsubstdefault{cmtt} +\LoadFontDefinitionFile{TS1}{cmr} +% \end{macrocode} +% % \begin{macrocode} \else % \end{macrocode} @@ -273,12 +287,16 @@ \input {tuenc.def} \fontencoding{TU} \DeclareFontSubstitution{TU}{lmr}{m}{n} -\begingroup -\nfss@catcodes -\input {tulmr.fd} -\input {tulmss.fd} -\input {tulmtt.fd} -\endgroup +\LoadFontDefinitionFile{TU}{lmr} +\LoadFontDefinitionFile{TU}{lmss} +\LoadFontDefinitionFile{TU}{lmtt} +% \end{macrocode} +% +% \begin{macrocode} +\def\rmsubstdefault{lmr} +\def\sfsubstdefault{lmss} +\def\ttsubstdefault{lmtt} +\LoadFontDefinitionFile{TS1}{lmr} % \end{macrocode} % % \begin{macrocode} @@ -442,8 +460,9 @@ % \begin{macro}{\bfdefault} % \begin{macro}{\mddefault} % Series changing commands are influenced by the following hooks. +% \changes{v3.0e}{2019/12/17}{Set \cs{bfdefault} to ``b''} % \begin{macrocode} -\newcommand\bfdefault{bx} +\newcommand\bfdefault{b} % overwritten below \newcommand\mddefault{m} % \end{macrocode} % \end{macro} @@ -453,18 +472,39 @@ % \begin{macro}{\sldefault} % \begin{macro}{\scdefault} % \begin{macro}{\updefault} +% % Shape changing commands use the following hooks. +% \changes{v3.0e}{2019/12/17}{Set \cs{updefault} to ``up''} % \begin{macrocode} \newcommand\itdefault{it} \newcommand\sldefault{sl} \newcommand\scdefault{sc} -\newcommand\updefault{n} +\newcommand\updefault{up} % overwritten below % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % + +% \begin{macrocode} +% +%<*text|latexrelease> +%\IncludeInRelease{2020/02/02}% +% {\updefault}{font defaults change}% +\renewcommand\updefault{up} +\renewcommand\bfdefault{b} +% +%\EndIncludeInRelease +%\IncludeInRelease{0000/00/00}% +% {\updefault}{font defaults change}% +% +%\renewcommand\updefault{n} +%\renewcommand\bfdefault{bx} +%\EndIncludeInRelease +%<*text> +% \end{macrocode} +% % \begin{macro}{\familydefault} % \begin{macro}{\seriesdefault} % \begin{macro}{\shapedefault} @@ -477,7 +517,14 @@ % \begin{macrocode} \newcommand\familydefault{\rmdefault} \newcommand\seriesdefault{\mddefault} -\newcommand\shapedefault{\updefault} +% \end{macrocode} +% In previous releases \cs{shapedefault} pointed to \cs{updefault} +% which resolved to \texttt{n}, but these days that is no longer +% the case (and \texttt{up} is wrong when you want to do a +% reset. So we now use \texttt{n} explicitly. +% \begin{macrocode} +% \changes{v3.0e}{2019/12/17}{Set \cs{shapedefault} explicitly to ``n''} +\newcommand\shapedefault{n} % \end{macrocode} % \end{macro} % \end{macro} @@ -854,7 +901,15 @@ \DeclareMathSymbol{\forall}{\mathord}{symbols}{"38} \DeclareMathSymbol{\exists}{\mathord}{symbols}{"39} \DeclareMathSymbol{\neg}{\mathord}{symbols}{"3A} - \let\lnot=\neg +% \end{macrocode} +% Alias: +% \changes{v3.0e}{2019/12/21}{Distangle alias (gh/184)} +% \begin{macrocode} +% \let\lnot=\neg +\DeclareMathSymbol{\lnot}{\mathord}{symbols}{"3A} +% \end{macrocode} +% +% \begin{macrocode} \DeclareMathSymbol{\flat}{\mathord}{letters}{"5B} \DeclareMathSymbol{\natural}{\mathord}{letters}{"5C} \DeclareMathSymbol{\sharp}{\mathord}{letters}{"5D} @@ -908,18 +963,33 @@ \DeclareMathSymbol{\triangleright}{\mathbin}{letters}{"2E} \DeclareMathSymbol{\bigtriangleup}{\mathbin}{symbols}{"34} \DeclareMathSymbol{\bigtriangledown}{\mathbin}{symbols}{"35} - \let \varbigtriangledown \bigtriangledown - \let \varbigtriangleup \bigtriangleup +% \end{macrocode} +% Alias: +% \changes{v3.0e}{2019/12/21}{Distangle alias (gh/184)} +% \begin{macrocode} +% \let \varbigtriangledown \bigtriangledown +% \let \varbigtriangleup \bigtriangleup +\DeclareMathSymbol{\varbigtriangleup}{\mathbin}{symbols}{"34} +\DeclareMathSymbol{\varbigtriangledown}{\mathbin}{symbols}{"35} % \end{macrocode} % -% These last two synonyms are needed because the \textsf{stamryrd} +% These last two synonyms are needed because the \textsf{stmaryrd} % package redefines them as Operators. % % \begin{macrocode} \DeclareMathSymbol{\wedge}{\mathbin}{symbols}{"5E} - \let\land=\wedge \DeclareMathSymbol{\vee}{\mathbin}{symbols}{"5F} - \let\lor=\vee +% \end{macrocode} +% Alias: +% \changes{v3.0e}{2019/12/21}{Distangle alias (gh/184)} +% \begin{macrocode} +% \let\land=\wedge +% \let\lor=\vee +\DeclareMathSymbol{\land}{\mathbin}{symbols}{"5E} +\DeclareMathSymbol{\lor}{\mathbin}{symbols}{"5F} +% \end{macrocode} +% +% \begin{macrocode} \DeclareMathSymbol{\cap}{\mathbin}{symbols}{"5C} \DeclareMathSymbol{\cup}{\mathbin}{symbols}{"5B} \DeclareMathSymbol{\ddagger}{\mathbin}{symbols}{"7A} @@ -966,21 +1036,31 @@ \DeclareMathSymbol{\Leftrightarrow}{\mathrel}{symbols}{"2C} \DeclareMathSymbol{\Leftarrow}{\mathrel}{symbols}{"28} \DeclareMathSymbol{\Rightarrow}{\mathrel}{symbols}{"29} -\DeclareRobustCommand\neq{\not=} + \DeclareRobustCommand\neq{\not=} % \end{macrocode} % As \cs{neq} is robust we should not use \cs{let} to define % \cs{ne} as then then it would change if \cs{neq} changes. % \changes{v3.0d}{2019/09/21}{Distangle alias (gh/184)} % \begin{macrocode} -%\let\ne=\neq -\DeclareRobustCommand\ne{\not=} + \DeclareRobustCommand\ne{\not=} % \end{macrocode} -% It is ok to use \cs{let} for those declared by \cs{DeclareMathSymbol}. +% It would ok to use \cs{let} for those declared by +% \cs{DeclareMathSymbol} but for a cleaner interface we avoid it +% always (just in case the internals change). % \begin{macrocode} \DeclareMathSymbol{\leq}{\mathrel}{symbols}{"14} - \let\le=\leq \DeclareMathSymbol{\geq}{\mathrel}{symbols}{"15} - \let\ge=\geq +% \end{macrocode} +% Alias: +% \changes{v3.0e}{2019/12/21}{Distangle alias (gh/184)} +% \begin{macrocode} +% \let\le=\leq +% \let\ge=\geq +\DeclareMathSymbol{\le}{\mathrel}{symbols}{"14} +\DeclareMathSymbol{\ge}{\mathrel}{symbols}{"15} +% \end{macrocode} +% +% \begin{macrocode} \DeclareMathSymbol{\succ}{\mathrel}{symbols}{"1F} \DeclareMathSymbol{\prec}{\mathrel}{symbols}{"1E} \DeclareMathSymbol{\approx}{\mathrel}{symbols}{"19} @@ -992,15 +1072,32 @@ \DeclareMathSymbol{\subseteq}{\mathrel}{symbols}{"12} \DeclareMathSymbol{\in}{\mathrel}{symbols}{"32} \DeclareMathSymbol{\ni}{\mathrel}{symbols}{"33} - \let\owns=\ni +% \end{macrocode} +% Alias: +% \changes{v3.0e}{2019/12/21}{Distangle alias (gh/184)} +% \begin{macrocode} +% \let\owns=\ni +\DeclareMathSymbol{\owns}{\mathrel}{symbols}{"33} +% \end{macrocode} +% +% \begin{macrocode} \DeclareMathSymbol{\gg}{\mathrel}{symbols}{"1D} \DeclareMathSymbol{\ll}{\mathrel}{symbols}{"1C} \DeclareMathSymbol{\not}{\mathrel}{symbols}{"36} \DeclareMathSymbol{\leftrightarrow}{\mathrel}{symbols}{"24} \DeclareMathSymbol{\leftarrow}{\mathrel}{symbols}{"20} - \let\gets=\leftarrow \DeclareMathSymbol{\rightarrow}{\mathrel}{symbols}{"21} - \let\to=\rightarrow +% \end{macrocode} +% Alias: +% \changes{v3.0e}{2019/12/21}{Distangle alias (gh/184)} +% \begin{macrocode} +% \let\gets=\leftarrow +% \let\to=\rightarrow +\DeclareMathSymbol{\gets}{\mathrel}{symbols}{"20} +\DeclareMathSymbol{\to}{\mathrel}{symbols}{"21} +% \end{macrocode} +% +% \begin{macrocode} \DeclareMathSymbol{\mapstochar}{\mathrel}{symbols}{"37} \DeclareRobustCommand\mapsto{\mapstochar\rightarrow} \DeclareMathSymbol{\sim}{\mathrel}{symbols}{"18} diff --git a/macros/latex-dev/base/format.ins b/macros/latex-dev/base/format.ins index d060044552..2a4b68e4f6 100644 --- a/macros/latex-dev/base/format.ins +++ b/macros/latex-dev/base/format.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2019 +%% Copyright (C) 1993-2020 %% The LaTeX3 Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. @@ -123,7 +123,7 @@ extension .ins) which are part of the distribution. This is a generated file. -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. @@ -173,11 +173,13 @@ the system are in the document `cfgguide.tex'. \from{ltcounts.dtx}{2ekernel} \from{ltlength.dtx}{2ekernel} \from{ltfssbas.dtx}{2ekernel} + \from{ltfssaxes.dtx}{2ekernel} \from{ltfsstrc.dtx}{2ekernel} -% \from{ltfsscmp.dtx}{compat,2ekernel} +% \from{ltfsscmp.dtx}{compat,2ekernel} % only provided as part of latexrelease.sty! \from{ltfssdcl.dtx}{compat,2ekernel} \from{ltfssini.dtx}{compat,2ekernel} \from{ltfntcmd.dtx}{2ekernel} + \from{lttextcomp.dtx}{2ekernel} \from{ltpageno.dtx}{2ekernel} \from{ltxref.dtx}{2ekernel} \from{ltmiscen.dtx}{2ekernel} @@ -207,6 +209,11 @@ the system are in the document `cfgguide.tex'. \from{ltmath.dtx}{fleqn}} \file{leqno.clo}{% \from{ltmath.dtx}{leqno}} +%%% generate the textcomp package + \file{textcomp.sty}{% + \from{lttextcomp.dtx}{TS1sty}} + \file{textcomp-2018-08-11.sty}{% + \from{lttextcomp.dtx}{TS1oldsty}} } \generateFile{oldlfont.sty}{t}{% @@ -217,6 +224,7 @@ the system are in the document `cfgguide.tex'. \from{newlfont.dtx}{package} } + % expl3-based extensions \generate{\file{ltexpl.ltx}{\from{ltexpl.dtx}{2ekernel}}} diff --git a/macros/latex-dev/base/graphpap.dtx b/macros/latex-dev/base/graphpap.dtx index 7e4b322f32..ac72f4dca5 100644 --- a/macros/latex-dev/base/graphpap.dtx +++ b/macros/latex-dev/base/graphpap.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/graphpap.ins b/macros/latex-dev/base/graphpap.ins index eb1d356edc..8563ac0f43 100644 --- a/macros/latex-dev/base/graphpap.ins +++ b/macros/latex-dev/base/graphpap.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2019 +%% Copyright (C) 1993-2020 %% The LaTeX3 Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. diff --git a/macros/latex-dev/base/graphpap.pdf b/macros/latex-dev/base/graphpap.pdf index ca875d0861..54846e7394 100644 Binary files a/macros/latex-dev/base/graphpap.pdf and b/macros/latex-dev/base/graphpap.pdf differ diff --git a/macros/latex-dev/base/idx.tex b/macros/latex-dev/base/idx.tex index 1d74b1fca0..6eb3ddad7b 100644 --- a/macros/latex-dev/base/idx.tex +++ b/macros/latex-dev/base/idx.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ifthen.dtx b/macros/latex-dev/base/ifthen.dtx index 1a289df1c3..f2157e094a 100644 --- a/macros/latex-dev/base/ifthen.dtx +++ b/macros/latex-dev/base/ifthen.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ifthen.ins b/macros/latex-dev/base/ifthen.ins index acfa2fcf43..71e17c118d 100644 --- a/macros/latex-dev/base/ifthen.ins +++ b/macros/latex-dev/base/ifthen.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2019 +%% Copyright (C) 1993-2020 %% The LaTeX3 Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. diff --git a/macros/latex-dev/base/ifthen.pdf b/macros/latex-dev/base/ifthen.pdf index c08cf1dee0..616b1c350b 100644 Binary files a/macros/latex-dev/base/ifthen.pdf and b/macros/latex-dev/base/ifthen.pdf differ diff --git a/macros/latex-dev/base/inputenc.dtx b/macros/latex-dev/base/inputenc.dtx index 65f260826d..641125cc75 100644 --- a/macros/latex-dev/base/inputenc.dtx +++ b/macros/latex-dev/base/inputenc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/inputenc.ins b/macros/latex-dev/base/inputenc.ins index 0831576d76..4b866f2a5c 100644 --- a/macros/latex-dev/base/inputenc.ins +++ b/macros/latex-dev/base/inputenc.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2019 +%% Copyright (C) 1993-2020 %% The LaTeX3 Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. diff --git a/macros/latex-dev/base/inputenc.pdf b/macros/latex-dev/base/inputenc.pdf index 2bfc9177d5..23f26939d5 100644 Binary files a/macros/latex-dev/base/inputenc.pdf and b/macros/latex-dev/base/inputenc.pdf differ diff --git a/macros/latex-dev/base/lablst.tex b/macros/latex-dev/base/lablst.tex index fd65579713..2b588cb1ae 100644 --- a/macros/latex-dev/base/lablst.tex +++ b/macros/latex-dev/base/lablst.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/latex209.dtx b/macros/latex-dev/base/latex209.dtx index 10de2958ba..6523e65286 100644 --- a/macros/latex-dev/base/latex209.dtx +++ b/macros/latex-dev/base/latex209.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/latex209.ins b/macros/latex-dev/base/latex209.ins index 7bd0eed06a..7e51808ae0 100644 --- a/macros/latex-dev/base/latex209.ins +++ b/macros/latex-dev/base/latex209.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2019 +%% Copyright (C) 1993-2020 %% The LaTeX3 Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. diff --git a/macros/latex-dev/base/latexchanges.pdf b/macros/latex-dev/base/latexchanges.pdf index 7be0efc653..ecaba431fe 100644 Binary files a/macros/latex-dev/base/latexchanges.pdf and b/macros/latex-dev/base/latexchanges.pdf differ diff --git a/macros/latex-dev/base/latexchanges.tex b/macros/latex-dev/base/latexchanges.tex index 3c04b9362e..54ceb498fc 100644 --- a/macros/latex-dev/base/latexchanges.tex +++ b/macros/latex-dev/base/latexchanges.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2015-2019 +% Copyright (C) 2015-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/latexrelease.dtx b/macros/latex-dev/base/latexrelease.dtx index cfb1bff8aa..4a59e76e30 100644 --- a/macros/latex-dev/base/latexrelease.dtx +++ b/macros/latex-dev/base/latexrelease.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/latexrelease.ins b/macros/latex-dev/base/latexrelease.ins index e515143740..2f6d4cdb40 100644 --- a/macros/latex-dev/base/latexrelease.ins +++ b/macros/latex-dev/base/latexrelease.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2019 +%% Copyright (C) 1993-2020 %% The LaTeX3 Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. @@ -115,8 +115,10 @@ extension .ins) which are part of the distribution. \from{ltfssini.dtx} {latexrelease}% \from{fontdef.dtx} {latexrelease}% (covering fontmath and fonttext) \from{ltfntcmd.dtx} {latexrelease}% empty + \from{lttextcomp.dtx} {latexrelease}% \from{ltfssbas.dtx} {latexrelease}% - \from{ltfsstrc.dtx} {latexrelease}% empty + \from{ltfssaxes.dtx} {latexrelease}% + \from{ltfsstrc.dtx} {latexrelease}% \from{ltfsscmp.dtx} {latexrelease}% \from{ltpageno.dtx} {latexrelease}% empty \from{ltxref.dtx} {latexrelease}% empty diff --git a/macros/latex-dev/base/latexrelease.pdf b/macros/latex-dev/base/latexrelease.pdf index 3ce4c2981a..7861985f57 100644 Binary files a/macros/latex-dev/base/latexrelease.pdf and b/macros/latex-dev/base/latexrelease.pdf differ diff --git a/macros/latex-dev/base/latexsym.dtx b/macros/latex-dev/base/latexsym.dtx index 52b12e0c36..36a3346f3e 100644 --- a/macros/latex-dev/base/latexsym.dtx +++ b/macros/latex-dev/base/latexsym.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/latexsym.ins b/macros/latex-dev/base/latexsym.ins index 7b42cf9132..f354e188b7 100644 --- a/macros/latex-dev/base/latexsym.ins +++ b/macros/latex-dev/base/latexsym.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2019 +%% Copyright (C) 1993-2020 %% The LaTeX3 Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. @@ -87,7 +87,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. diff --git a/macros/latex-dev/base/latexsym.pdf b/macros/latex-dev/base/latexsym.pdf index 25e4db36ac..0de636570d 100644 Binary files a/macros/latex-dev/base/latexsym.pdf and b/macros/latex-dev/base/latexsym.pdf differ diff --git a/macros/latex-dev/base/lb2.pdf b/macros/latex-dev/base/lb2.pdf index 5f5bd10430..a8636e9213 100644 Binary files a/macros/latex-dev/base/lb2.pdf and b/macros/latex-dev/base/lb2.pdf differ diff --git a/macros/latex-dev/base/letter.dtx b/macros/latex-dev/base/letter.dtx index b8a8f0a257..ee9a87cf84 100644 --- a/macros/latex-dev/base/letter.dtx +++ b/macros/latex-dev/base/letter.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/letter.ins b/macros/latex-dev/base/letter.ins index b71c06b95a..9143e88c13 100644 --- a/macros/latex-dev/base/letter.ins +++ b/macros/latex-dev/base/letter.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2019 +%% Copyright (C) 1993-2020 %% The LaTeX3 Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. diff --git a/macros/latex-dev/base/letter.pdf b/macros/latex-dev/base/letter.pdf index 347fa214b0..dfca14c9f9 100644 Binary files a/macros/latex-dev/base/letter.pdf and b/macros/latex-dev/base/letter.pdf differ diff --git a/macros/latex-dev/base/lgc2.pdf b/macros/latex-dev/base/lgc2.pdf index 7ee5ba62fd..9af35fe4e4 100644 Binary files a/macros/latex-dev/base/lgc2.pdf and b/macros/latex-dev/base/lgc2.pdf differ diff --git a/macros/latex-dev/base/ltalloc.dtx b/macros/latex-dev/base/ltalloc.dtx index 4932dc707b..d18df9ad89 100644 --- a/macros/latex-dev/base/ltalloc.dtx +++ b/macros/latex-dev/base/ltalloc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltbibl.dtx b/macros/latex-dev/base/ltbibl.dtx index 0823620f99..a3a25308fe 100644 --- a/macros/latex-dev/base/ltbibl.dtx +++ b/macros/latex-dev/base/ltbibl.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltboxes.dtx b/macros/latex-dev/base/ltboxes.dtx index 7e1c2c38b0..61ea87235a 100644 --- a/macros/latex-dev/base/ltboxes.dtx +++ b/macros/latex-dev/base/ltboxes.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltclass.dtx b/macros/latex-dev/base/ltclass.dtx index 9dc65d2bb9..e14fb1ef40 100644 --- a/macros/latex-dev/base/ltclass.dtx +++ b/macros/latex-dev/base/ltclass.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltclass.dtx} - [2019/10/18 v1.3d LaTeX Kernel (Class & Package Interface)] + [2020/01/05 v1.3f LaTeX Kernel (Class & Package Interface)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltclass.dtx} @@ -791,19 +791,69 @@ \@ifnextchar[\@pr@videpackage{\@pr@videpackage[]}}%] \@onlypreamble\ProvidesPackage % \end{macrocode} +% \end{macro} +% +% % +% \begin{macro}{\@pr@videpackage} +% This is the helper command for \cs{ProvidesPackage}. It tries to +% be cautious when handling the identification string in case it +% contains UTF-8 characters. +% \changes{v1.3e}{2019/11/29}{Protect package info text (gh/52)} % \begin{macrocode} +% +%<*2ekernel|latexrelease> +%\IncludeInRelease{2020/02/02}% +% {\@pr@videpackage}{Protection for package info}% \def\@pr@videpackage[#1]{% - \expandafter\xdef\csname ver@\@currname.\@currext\endcsname{#1}% + \expandafter\protected@xdef % <-- protected... + \csname ver@\@currname.\@currext\endcsname{#1}% \ifx\@currext\@clsextension \typeout{Document Class: \@gtempa\space#1}% \else - \wlog{Package: \@gtempa\space#1}% + \protected@wlog{Package: \@gtempa\space#1}% <--- protected \fi} -\@onlypreamble\@pr@videpackage % \end{macrocode} % \end{macro} % +% +% +% \begin{macro}{\protected@wlog} +% This is like plain \TeX's \cs{wlog} but gracefully handles +% protected commands. +% \begin{macrocode} +\long\def\protected@wlog#1{\begingroup + \set@display@protect + \immediate \write \m@ne {#1}\endgroup } +% \end{macrocode} +% \end{macro} +% +% +% \begin{macrocode} +% +%\EndIncludeInRelease +%\IncludeInRelease{0000/00/00}% +% {\@pr@videpackage}{Protection for package info}% +% +%\def\@pr@videpackage[#1]{% +% \expandafter\xdef\csname ver@\@currname.\@currext\endcsname{#1}% +% \ifx\@currext\@clsextension +% \typeout{Document Class: \@gtempa\space#1}% +% \else +% \wlog{Package: \@gtempa\space#1}% +% \fi} +%\let\protected@wlog\@undefined +% +%\EndIncludeInRelease +%<*2ekernel> +% \end{macrocode} +% +% \begin{macrocode} +\@onlypreamble\@pr@videpackage +% \end{macrocode} +% +% +% % \begin{macro}{\ProvidesClass} % Like |\ProvidesPackage|, but for classes. % \begin{macrocode} @@ -1731,6 +1781,7 @@ % filecontents environment file name} % \changes{v1.3b}{2019/08/27}{Make various commands robust} % \changes{v1.3c}{2019/09/11}{Support optional argument for filecontents} +% \changes{v1.3f}{2020/01/05}{Support more write streams in LuaTeX gh/238} % % %<*2ekernel|latexrelease> @@ -1805,6 +1856,11 @@ \gdef\filec@ntents#1{% \set@curr@file{\filec@ntents@checkdir#1}% \edef\q@curr@file{\expandafter\quote@name\expandafter{\@curr@file}}% +% \end{macrocode} +% +% Lua\TeX\ has more writes (and 18 is safe here). +% \begin{macrocode} + \chardef\reserved@c\ifx\directlua\@undefined 15 \else 127 \fi% \openin\@inputcheck\q@curr@file \space % \ifeof\@inputcheck% \@latex@warning@no@line% @@ -1814,8 +1870,7 @@ % \changes{v1.0y}{1997/10/10} % {\cs{reserved@c} not \cs{verbatim@out} to save a csname} % \begin{macrocode} - \chardef\reserved@c15 % - \ch@ck7\reserved@c\write% + \ch@ck7\reserved@c\write\relax% \immediate\openout\reserved@c\q@curr@file\relax% \else% % \end{macrocode} @@ -1853,8 +1908,7 @@ % (hopefully) safe. If not opened that means we are going to write % on the terminal. % \begin{macrocode} - \chardef\reserved@c15 % - \ch@ck7\reserved@c\write% + \ch@ck7\reserved@c\write\relax% \if@filesw% % Foul ... trying to overwrite \jobname! \@latex@error{Trying to overwrite `\jobname.tex'}{You can't % write to the file you a reading from!\MessageBreak% diff --git a/macros/latex-dev/base/ltcntrl.dtx b/macros/latex-dev/base/ltcntrl.dtx index eb1b931957..b779d27fb6 100644 --- a/macros/latex-dev/base/ltcntrl.dtx +++ b/macros/latex-dev/base/ltcntrl.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltcounts.dtx b/macros/latex-dev/base/ltcounts.dtx index 8217b3f91b..4759fdfee6 100644 --- a/macros/latex-dev/base/ltcounts.dtx +++ b/macros/latex-dev/base/ltcounts.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltdefns.dtx b/macros/latex-dev/base/ltdefns.dtx index 44d7bfde64..0cc925bb74 100644 --- a/macros/latex-dev/base/ltdefns.dtx +++ b/macros/latex-dev/base/ltdefns.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltdirchk.dtx b/macros/latex-dev/base/ltdirchk.dtx index 744759f317..8cc21eca90 100644 --- a/macros/latex-dev/base/ltdirchk.dtx +++ b/macros/latex-dev/base/ltdirchk.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/lterror.dtx b/macros/latex-dev/base/lterror.dtx index 3f6c436970..2583b1f348 100644 --- a/macros/latex-dev/base/lterror.dtx +++ b/macros/latex-dev/base/lterror.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltexpl.dtx b/macros/latex-dev/base/ltexpl.dtx index 92676a1298..c3f64306ad 100644 --- a/macros/latex-dev/base/ltexpl.dtx +++ b/macros/latex-dev/base/ltexpl.dtx @@ -66,7 +66,7 @@ % \begin{macrocode} % %<*2ekernel|latexrelease> -%\IncludeInRelease{2020/02/01}% +%\IncludeInRelease{2020/02/02}% % {expl3}{Pre-load expl3}% \IfFileExists{expl3.ltx} {% diff --git a/macros/latex-dev/base/ltfiles.dtx b/macros/latex-dev/base/ltfiles.dtx index 7c43abc079..65995c292f 100644 --- a/macros/latex-dev/base/ltfiles.dtx +++ b/macros/latex-dev/base/ltfiles.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltfinal.dtx b/macros/latex-dev/base/ltfinal.dtx index f4f97ba020..a6468178fd 100644 --- a/macros/latex-dev/base/ltfinal.dtx +++ b/macros/latex-dev/base/ltfinal.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -1124,6 +1124,24 @@ % \end{macro} % \end{macro} % +% \subsection{Some last minute initializations \ldots} +% +% This initializes the 2020/02/02 extensions to NFSS after any changes +% in the preamble. +% \begin{macrocode} +\AtBeginDocument{\reinstall@nfss@defs\init@series@setup} +% \end{macrocode} +% +% +% +% \subsection{Do some temporary work for pre-release} +% +% This is a good place to load code that hasn't yet been +% integrated into the other files \ldots +% \begin{macrocode} +%\input ... +% \end{macrocode} +% % \subsection{Dumping the format} % Finally we make |@| into a letter, ensure the format will % be in the `normal' error mode, and dump everything into the diff --git a/macros/latex-dev/base/ltfloat.dtx b/macros/latex-dev/base/ltfloat.dtx index 7e0c35df22..23c3f464d3 100644 --- a/macros/latex-dev/base/ltfloat.dtx +++ b/macros/latex-dev/base/ltfloat.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltfntcmd.dtx b/macros/latex-dev/base/ltfntcmd.dtx index e214057bc4..0869be20d5 100644 --- a/macros/latex-dev/base/ltfntcmd.dtx +++ b/macros/latex-dev/base/ltfntcmd.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -32,7 +32,7 @@ %<*driver> % \fi \ProvidesFile{ltfntcmd.dtx} - [2019/01/27 v3.4b LaTeX Kernel (Font commands)] + [2019/12/17 v3.4c LaTeX Kernel (Font commands)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltfntcmd.dtx} @@ -391,6 +391,35 @@ % \end{macro} % \end{macro} % \end{macro} + + +% \begin{macro}{textulc} +% \begin{macro}{textsw} +% \begin{macro}{textssc} +% +% \changes{v3.4c}{2019/12/17}{Macro added} +% \begin{macrocode} +% +%<*2ekernel|latexrelease> +%\IncludeInRelease{2020/02/02}% +% {\textulc}{Additional text commands}% +\DeclareTextFontCommand{\textulc}{\ulcshape} +\DeclareTextFontCommand{\textsw}{\swshape} +\DeclareTextFontCommand{\textssc}{\sscshape} +% +%\EndIncludeInRelease +%\IncludeInRelease{0000/00/00}% +% {\textulc}{Additional text commands}% +% +%\let\textulc\@undefined +%\let\textsw\@undefined +%\let\textssc\@undefined +%\EndIncludeInRelease +%<*2ekernel> +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} % % \begin{macro}{\emph} % \changes{v3.0a}{1993/12/11}{Macro changed} diff --git a/macros/latex-dev/base/ltfssaxes.dtx b/macros/latex-dev/base/ltfssaxes.dtx new file mode 100644 index 0000000000..62c97f389d --- /dev/null +++ b/macros/latex-dev/base/ltfssaxes.dtx @@ -0,0 +1,1231 @@ +% \iffalse meta-comment +% +% Copyright (C) 2019 +% The LaTeX3 Project and any individual authors listed elsewhere +% in this file. +% +% This file is part of the LaTeX base system. +% ------------------------------------------- +% +% It may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3c +% of this license or (at your option) any later version. +% The latest version of this license is in +% https://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2008 or later. +% +% This file has the LPPL maintenance status "maintained". +% +% The list of all files belonging to the LaTeX base distribution is +% given in the file `manifest.txt'. See also `legal.txt' for additional +% information. +% +% The list of derived (unpacked) files belonging to the distribution +% and covered by LPPL is defined by the unpacking scripts (with +% extension .ins) which are part of the distribution. +% +% \fi +% \iffalse +%%% From File: ltfssbas.dtx +%% Copyright (C) 1989-2002 Frank Mittelbach and Rainer Sch\"opf +% +%<*driver> +% \fi +% +% +\ProvidesFile{ltfssaxes.dtx} + [2019/12/16 v1.0a LaTeX Kernel (NFSS Axes handing)] +% \iffalse +\documentclass{ltxdoc} +\begin{document} +\DocInput{ltfssaxes.dtx} +\end{document} +% +% \fi +% +% +% +% +% \GetFileInfo{ltfssaxes.dtx} +% \title{A new font selection scheme for \TeX{} macro packages\\ +% (Axes Handling)\thanks +% {This file has version number +% \fileversion\ dated \filedate}} +% +% \author{Frank Mittelbach} +% +% \MaintainedByLaTeXTeam{latex} +% \maketitle +% +% This file contains the implementation for handling extra axes +% splitting the series and the values into sub-categories. selection +% commands. See other parts of the \LaTeX\ distribution, or \emph{The +% \LaTeX\ Companion} for higher level documentation of the +% \LaTeX\ Font Selection Scheme. +% +% +% +% \StopEventually{} +% +% Everything in the this file got introduced 2020/02/02, so we do a +% single rollback (for now). +% \begin{macrocode} +%<*2ekernel> +% +%<*2ekernel|latexrelease> +%\IncludeInRelease{2020/02/02}% +% {\DeclareFontSeriesChangeRule}{Series change rules}% +% \end{macrocode} +% +% +% +% \section{Changing the font series} +% +% In the original NFSS implementation the series was a single +% attribute stored in \cs{f@series} and so one always had to specify +% both weight and width together. This means it was impossible to +% typeset, a paragraph in a condensed font and inside have a few words +% in bold weight (but still condensed) without doing this manually by +% requesting \verb=\fontseries{bc}\selectfont=. +% +% The new implementation now works differently by looking both at the +% current value of \cs{f@series} and the requested new series and out +% of that combination selects a resulting series value. Thus, if the +% current series is \texttt{c} and we ask for \texttt{b} we now get +% \texttt{bc}. +% +% This is done by consulting a simple lookup table. This table is +% configurable (though most likely that flexibility will seldom of +% ever be needed) Adding or changing entries in this table are done +% with \cs{DeclareFontSeriesChangeRule}. +% +% \subsection{The series lookup table} +% +% +% \begin{macro}{\DeclareFontSeriesChangeRule} +% The \cs{DeclareFontSeriesChangeRule} defines entries in a simple +% database (implemented as a set of commands) that define mappings +% between from an existing series and requested new series and maps +% that to a result series (and additionally offers an alternative +% if the desired one is not existing): +% \begin{itemize} +% \item[\texttt{\#1}] current \cs{f@series} +% \item[\texttt{\#2}] requested new series +% \item[\texttt{\#3}] result (if that exist for the given font family +% \item[\texttt{\#4}] alternative result (if \texttt{\#3} does not exist) +% \end{itemize} +% If an \texttt{.fd} file has its own substitution rules then +% \texttt{\#3} exist and thus \texttt{\#4} is not applied. +% +% If there is no matching database entry or if neither the result +% nor the alternate result exist in the font family the requested +% new series is used (which then may trigger substitutions later on. +% \begin{macrocode} +\def\DeclareFontSeriesChangeRule#1#2#3#4{% + \@namedef{series@#1@#2}{{#3}{#4}}} +% \end{macrocode} +% \end{macro} +% +% \subsection{Mapping rules for series changes} +% +% The rules set up use explicit series values not \cs{..default} +% indirections; my current feeling is that this is in fact better. +% +% With 9 weights and 9 width classes this table is getting a bit large +% in the end (324 entries) but on the other hand it doesn't change and +% accessing speed and it is fast this way. +% +% We could alternatively split the axis and maintain weight and width +% separately, but that would take more processing time and would not +% allow for setting up explicit exceptions nicely (not sure that that +% would ever get used though). +% +% Design considerations for mapping entries: +% \begin{itemize} +% \item +% +% We make \texttt{m} to reset both weight and width (as this is +% how it always worked). To reset just the width \texttt{?m} is +% provided and to reset just the weight \texttt{m?}. +% +% \item +% +% We do support ``\texttt{m}\textit{width}'' and +% ``\textit{weight}\texttt{m}'', e.g., \texttt{mec} to mean ``go to +% medium weight and extra-condensed width''. At the end of the +% process we automatically drop any leftover \texttt{m} in the +% series name (unless it is just a single \texttt{m}). +% +% +% \item +% +% If there is no table entry then the target series is used +% unconditionally. This means that any request to set both weight +% and width (e.g. \texttt{bx} or \texttt{ulc}) needs no table +% entries. +% For that reason there are no entries which have a weight+width as +% request (i.e., second argument). +% +% In particular this is also true for cases involving \texttt{m}, +% e.g., \texttt{bm} (bold medium width) which automatially gets +% reduced result in \texttt{b} or \texttt{mc} (medium weight +% condensed) which becomes \texttt{c} as a result. +% +% \item +% +% Only a few entries have ``alterative'' values and perhaps most of +% them should get dropped. Or maybe not \ldots{} needs some thought +% perhaps. +% +% The idea is that you don't want the normal substitution to kick +% in because that would reset the shape first and it may be better +% to stay with \texttt{b} when a change to \texttt{c} is requested +% and \texttt{bc} doesn't exist, than to go to first change the +% shape to \texttt{n} and then find that \texttt{bc/n} doesn't +% exist either and thus ending up wth \texttt{m/n}. +% +% \item +% +% Also: while I did set up all nine standard weight values from +% \texttt{ul} to \texttt{ub} I only bothered to provide entries for +% \texttt{ec}, \texttt{sc}, \texttt{c} and \texttt{x}, because other levels of +% compression/expansion are not in any real fonts that I know. +% +% Could and perhaps should be eventually extended to cover the +% whole set. +% +% \end{itemize} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {bc}{b}{bc}{} +\DeclareFontSeriesChangeRule {bc}{c}{bc}{} +\DeclareFontSeriesChangeRule {bc}{eb}{ebc}{} +\DeclareFontSeriesChangeRule {bc}{ec}{bec} {bc} +\DeclareFontSeriesChangeRule {bc}{el}{elc}{} +\DeclareFontSeriesChangeRule {bc}{l}{lc}{} +\DeclareFontSeriesChangeRule {bc}{sb}{sbc}{} +\DeclareFontSeriesChangeRule {bc}{sc}{bsc} {bc} +\DeclareFontSeriesChangeRule {bc}{sl}{slc}{} +\DeclareFontSeriesChangeRule {bc}{ub}{ubc}{} +\DeclareFontSeriesChangeRule {bc}{ul}{ulc}{} +\DeclareFontSeriesChangeRule {bc}{x}{bx}{} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {bx}{b}{bx}{} +\DeclareFontSeriesChangeRule {bx}{c} {bc} {bx} %<----- +\DeclareFontSeriesChangeRule {bx}{eb}{ebx}{} +\DeclareFontSeriesChangeRule {bx}{ec} {bec} {bx} %<----- +\DeclareFontSeriesChangeRule {bx}{el}{elx}{} +\DeclareFontSeriesChangeRule {bx}{l}{lx}{} +\DeclareFontSeriesChangeRule {bx}{sb} {sbx} {} +\DeclareFontSeriesChangeRule {bx}{sc} {bsc} {bx} %<----- +\DeclareFontSeriesChangeRule {bx}{sl}{slx} {} +\DeclareFontSeriesChangeRule {bx}{ub}{ubx}{} +\DeclareFontSeriesChangeRule {bx}{ul}{ulx}{} +\DeclareFontSeriesChangeRule {bx}{x}{bx}{} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {b}{bx} {bx} {b} %<----- +\DeclareFontSeriesChangeRule {b}{c} {bc} {b} %<----- +\DeclareFontSeriesChangeRule {b}{ec} {bec} {b} %<----- +\DeclareFontSeriesChangeRule {b}{sb} {sb} {b} %<----- +\DeclareFontSeriesChangeRule {b}{sc} {bsc} {b} %<----- +\DeclareFontSeriesChangeRule {b}{x} {bx} {b} %<----- +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {c}{bx} {bx} {b} %<----- +\DeclareFontSeriesChangeRule {c}{b}{bc}{} +\DeclareFontSeriesChangeRule {c}{eb}{ebc}{} +\DeclareFontSeriesChangeRule {c}{el}{elc}{} +\DeclareFontSeriesChangeRule {c}{l}{lc}{} +\DeclareFontSeriesChangeRule {c}{sb}{sbc}{} +\DeclareFontSeriesChangeRule {c}{sl}{slc}{} +\DeclareFontSeriesChangeRule {c}{ub}{ubc}{} +\DeclareFontSeriesChangeRule {c}{ul}{ulc}{} +\DeclareFontSeriesChangeRule {c}{x}{x}{m} %<----- +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ebc}{b}{bc}{} +\DeclareFontSeriesChangeRule {ebc}{c}{ebc}{} +\DeclareFontSeriesChangeRule {ebc}{eb}{ebc}{} +\DeclareFontSeriesChangeRule {ebc}{ec}{ebec}{ebc} +\DeclareFontSeriesChangeRule {ebc}{el}{elc}{} +\DeclareFontSeriesChangeRule {ebc}{l}{lc}{} +\DeclareFontSeriesChangeRule {ebc}{sb}{sbc}{} +\DeclareFontSeriesChangeRule {ebc}{sc}{ebsc}{ebc} +\DeclareFontSeriesChangeRule {ebc}{sl}{slc}{} +\DeclareFontSeriesChangeRule {ebc}{ub}{ubc}{} +\DeclareFontSeriesChangeRule {ebc}{ul}{ulc}{} +\DeclareFontSeriesChangeRule {ebc}{x}{ebx}{} +% \end{macrocode} +% +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ec}{bx} {bx} {b} %<----- +\DeclareFontSeriesChangeRule {ec}{b}{bec}{} +\DeclareFontSeriesChangeRule {ec}{eb}{ebec}{} +\DeclareFontSeriesChangeRule {ec}{el}{elec}{} +\DeclareFontSeriesChangeRule {ec}{l}{lec}{} +\DeclareFontSeriesChangeRule {ec}{sb}{sbec}{} +\DeclareFontSeriesChangeRule {ec}{sl}{slec}{} +\DeclareFontSeriesChangeRule {ec}{ub}{ubec}{} +\DeclareFontSeriesChangeRule {ec}{ul}{ulec}{} +\DeclareFontSeriesChangeRule {ec}{x}{x}{m} %<----- +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {sc}{bx} {bx} {b} %<----- +\DeclareFontSeriesChangeRule {sc}{b}{bsc}{} +\DeclareFontSeriesChangeRule {sc}{eb}{ebsc}{} +\DeclareFontSeriesChangeRule {sc}{el}{elsc}{} +\DeclareFontSeriesChangeRule {sc}{l}{lsc}{} +\DeclareFontSeriesChangeRule {sc}{sb}{sbsc}{} +\DeclareFontSeriesChangeRule {sc}{sl}{slsc}{} +\DeclareFontSeriesChangeRule {sc}{ub}{ubsc}{} +\DeclareFontSeriesChangeRule {sc}{ul}{ulsc}{} +\DeclareFontSeriesChangeRule {sc}{x}{x}{m} %<----- +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ebx}{b}{bx}{} +\DeclareFontSeriesChangeRule {ebx}{c}{ebc}{} +\DeclareFontSeriesChangeRule {ebx}{eb}{ebx}{} +\DeclareFontSeriesChangeRule {ebx}{ec}{ebec}{} +\DeclareFontSeriesChangeRule {ebx}{el}{elx}{} +\DeclareFontSeriesChangeRule {ebx}{l}{lx}{} +\DeclareFontSeriesChangeRule {ebx}{sb}{sbx}{} +\DeclareFontSeriesChangeRule {ebx}{sc}{ebsc}{} +\DeclareFontSeriesChangeRule {ebx}{sl}{slx}{} +\DeclareFontSeriesChangeRule {ebx}{ub}{ubx}{} +\DeclareFontSeriesChangeRule {ebx}{ul}{ulx}{} +\DeclareFontSeriesChangeRule {ebx}{x}{ebx}{} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {eb}{c}{ebc}{} +\DeclareFontSeriesChangeRule {eb}{ec}{ebec}{} +\DeclareFontSeriesChangeRule {eb}{sc}{ebsc}{} +\DeclareFontSeriesChangeRule {eb}{x}{ebx}{} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {elc}{b}{bc}{} +\DeclareFontSeriesChangeRule {elc}{c}{elc}{} +\DeclareFontSeriesChangeRule {elc}{eb}{ebc}{} +\DeclareFontSeriesChangeRule {elc}{ec}{elec}{} +\DeclareFontSeriesChangeRule {elc}{el}{elc}{} +\DeclareFontSeriesChangeRule {elc}{l}{lc}{} +\DeclareFontSeriesChangeRule {elc}{sb}{sbc}{} +\DeclareFontSeriesChangeRule {elc}{sc}{elsc}{} +\DeclareFontSeriesChangeRule {elc}{sl}{slc}{} +\DeclareFontSeriesChangeRule {elc}{ub}{ubc}{} +\DeclareFontSeriesChangeRule {elc}{ul}{ulc}{} +\DeclareFontSeriesChangeRule {elc}{x}{elx}{} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {elx}{b}{bx}{} +\DeclareFontSeriesChangeRule {elx}{c}{elc}{} +\DeclareFontSeriesChangeRule {elx}{eb}{ebx}{} +\DeclareFontSeriesChangeRule {elx}{ec}{elec}{} +\DeclareFontSeriesChangeRule {elx}{el}{elx}{} +\DeclareFontSeriesChangeRule {elx}{l}{lx}{} +\DeclareFontSeriesChangeRule {elx}{sb}{sbx}{} +\DeclareFontSeriesChangeRule {elx}{sc}{elsc}{} +\DeclareFontSeriesChangeRule {elx}{sl}{slx}{} +\DeclareFontSeriesChangeRule {elx}{ub}{ubx}{} +\DeclareFontSeriesChangeRule {elx}{ul}{ulx}{} +\DeclareFontSeriesChangeRule {elx}{x}{elx}{} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {el}{c}{elc}{} +\DeclareFontSeriesChangeRule {el}{ec}{elec}{} +\DeclareFontSeriesChangeRule {el}{sc}{elsc}{} +\DeclareFontSeriesChangeRule {el}{x}{elx}{} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {lc}{b}{bc}{} +\DeclareFontSeriesChangeRule {lc}{c}{lc}{} +\DeclareFontSeriesChangeRule {lc}{eb}{ebc}{} +\DeclareFontSeriesChangeRule {lc}{ec}{lec}{} +\DeclareFontSeriesChangeRule {lc}{el}{elc}{} +\DeclareFontSeriesChangeRule {lc}{l}{lc}{} +\DeclareFontSeriesChangeRule {lc}{sb}{sbc}{} +\DeclareFontSeriesChangeRule {lc}{sc}{lsc}{} +\DeclareFontSeriesChangeRule {lc}{sl}{slc}{} +\DeclareFontSeriesChangeRule {lc}{ub}{ubc}{} +\DeclareFontSeriesChangeRule {lc}{ul}{ulc}{} +\DeclareFontSeriesChangeRule {lc}{x}{lx}{} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {lx}{b}{bx}{} +\DeclareFontSeriesChangeRule {lx}{c}{lc}{} +\DeclareFontSeriesChangeRule {lx}{eb}{ebx}{} +\DeclareFontSeriesChangeRule {lx}{ec}{lec}{} +\DeclareFontSeriesChangeRule {lx}{el}{elx}{} +\DeclareFontSeriesChangeRule {lx}{l}{lx}{} +\DeclareFontSeriesChangeRule {lx}{sb}{sbx}{} +\DeclareFontSeriesChangeRule {lx}{sc}{lsc}{} +\DeclareFontSeriesChangeRule {lx}{sl}{slx}{} +\DeclareFontSeriesChangeRule {lx}{ub}{ubx}{} +\DeclareFontSeriesChangeRule {lx}{ul}{ulx}{} +\DeclareFontSeriesChangeRule {lx}{x}{lx}{} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {l}{bx} {bx} {b} %<----- +\DeclareFontSeriesChangeRule {l}{b} {b} {bx} %<----- +\DeclareFontSeriesChangeRule {l}{c} {lc} {l} % ? %<----- +\DeclareFontSeriesChangeRule {l}{ec} {lec} {l} % ? %<----- +\DeclareFontSeriesChangeRule {l}{sb} {sb} {b} % ? %<----- +\DeclareFontSeriesChangeRule {l}{sc} {lsc} {l} % ? %<----- +\DeclareFontSeriesChangeRule {l}{x} {lx} {l} % ? %<----- +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {m}{bx} {bx} {b} %<----- +\DeclareFontSeriesChangeRule {m}{b} {b} {bx} %<----- +\DeclareFontSeriesChangeRule {m}{c} {c} {m} %<----- +\DeclareFontSeriesChangeRule {m}{ec} {ec} {m} %<----- +\DeclareFontSeriesChangeRule {m}{l} {l} {m} %<----- +\DeclareFontSeriesChangeRule {m}{sb} {sb} {b} %<----- +\DeclareFontSeriesChangeRule {m}{sc} {sc} {m} %<----- +\DeclareFontSeriesChangeRule {m}{x} {x} {m} %<----- +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {sbc}{b}{bc}{} +\DeclareFontSeriesChangeRule {sbc}{c}{sbc}{} +\DeclareFontSeriesChangeRule {sbc}{eb}{ebc}{} +\DeclareFontSeriesChangeRule {sbc}{ec}{sbec}{sbc} +\DeclareFontSeriesChangeRule {sbc}{el}{elc}{} +\DeclareFontSeriesChangeRule {sbc}{l}{lc}{} +\DeclareFontSeriesChangeRule {sbc}{sb}{sbc}{} +\DeclareFontSeriesChangeRule {sbc}{sc}{sbsc}{sbc} +\DeclareFontSeriesChangeRule {sbc}{sl}{slc}{} +\DeclareFontSeriesChangeRule {sbc}{ub}{ubc}{} +\DeclareFontSeriesChangeRule {sbc}{ul}{ulc}{} +\DeclareFontSeriesChangeRule {sbc}{x}{sbx}{} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {sbx}{b}{bx}{} +\DeclareFontSeriesChangeRule {sbx}{c}{sbc}{} +\DeclareFontSeriesChangeRule {sbx}{eb}{ebx}{} +\DeclareFontSeriesChangeRule {sbx}{ec}{sbec}{} +\DeclareFontSeriesChangeRule {sbx}{el}{elx}{} +\DeclareFontSeriesChangeRule {sbx}{l}{lx}{} +\DeclareFontSeriesChangeRule {sbx}{sb}{sbx}{} +\DeclareFontSeriesChangeRule {sbx}{sc}{sbsc}{} +\DeclareFontSeriesChangeRule {sbx}{sl}{slx}{} +\DeclareFontSeriesChangeRule {sbx}{ub}{ubx}{} +\DeclareFontSeriesChangeRule {sbx}{ul}{ulx}{} +\DeclareFontSeriesChangeRule {sbx}{x}{sbx}{} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {sb}{c} {sbc} {bc} %? %<----- +\DeclareFontSeriesChangeRule {sb}{ec} {sbec} {sbc} %? %<----- +\DeclareFontSeriesChangeRule {sb}{sc} {sbsc} {sbc} %? %<----- +\DeclareFontSeriesChangeRule {sb}{x} {sbx} {bx} %? %<----- +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {slc}{b}{bc}{} +\DeclareFontSeriesChangeRule {slc}{c}{slc}{} +\DeclareFontSeriesChangeRule {slc}{eb}{ebc}{} +\DeclareFontSeriesChangeRule {slc}{ec}{slec}{} +\DeclareFontSeriesChangeRule {slc}{el}{elc}{} +\DeclareFontSeriesChangeRule {slc}{l}{lc}{} +\DeclareFontSeriesChangeRule {slc}{sb}{sbc}{} +\DeclareFontSeriesChangeRule {slc}{sc}{slsc}{} +\DeclareFontSeriesChangeRule {slc}{sl}{slc}{} +\DeclareFontSeriesChangeRule {slc}{ub}{ubc}{} +\DeclareFontSeriesChangeRule {slc}{ul}{ulc}{} +\DeclareFontSeriesChangeRule {slc}{x}{slx}{} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {slx}{b}{bx}{} +\DeclareFontSeriesChangeRule {slx}{c}{slc}{} +\DeclareFontSeriesChangeRule {slx}{eb}{ebx}{} +\DeclareFontSeriesChangeRule {slx}{ec}{slec}{} +\DeclareFontSeriesChangeRule {slx}{el}{elx}{} +\DeclareFontSeriesChangeRule {slx}{l}{lx}{} +\DeclareFontSeriesChangeRule {slx}{sb}{sbx}{} +\DeclareFontSeriesChangeRule {slx}{sc}{slsc}{} +\DeclareFontSeriesChangeRule {slx}{sl}{slx}{} +\DeclareFontSeriesChangeRule {slx}{ub}{ubx}{} +\DeclareFontSeriesChangeRule {slx}{ul}{ulx}{} +\DeclareFontSeriesChangeRule {slx}{x}{slx}{} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {sl}{c}{slc}{} +\DeclareFontSeriesChangeRule {sl}{ec}{slec}{} +\DeclareFontSeriesChangeRule {sl}{sc}{slsc}{} +\DeclareFontSeriesChangeRule {sl}{x}{slx}{} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ubc}{b}{bc}{} +\DeclareFontSeriesChangeRule {ubc}{c}{ubc}{} +\DeclareFontSeriesChangeRule {ubc}{eb}{ebc}{} +\DeclareFontSeriesChangeRule {ubc}{ec}{ubec}{} +\DeclareFontSeriesChangeRule {ubc}{el}{elc}{} +\DeclareFontSeriesChangeRule {ubc}{l}{lc}{} +\DeclareFontSeriesChangeRule {ubc}{sb}{sbc}{} +\DeclareFontSeriesChangeRule {ubc}{sc}{ubsc}{} +\DeclareFontSeriesChangeRule {ubc}{sl}{slc}{} +\DeclareFontSeriesChangeRule {ubc}{ub}{ubc}{} +\DeclareFontSeriesChangeRule {ubc}{ul}{ulc}{} +\DeclareFontSeriesChangeRule {ubc}{x}{ubx}{} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ubx}{b}{bx}{} +\DeclareFontSeriesChangeRule {ubx}{c}{ubc}{} +\DeclareFontSeriesChangeRule {ubx}{eb}{ebx}{} +\DeclareFontSeriesChangeRule {ubx}{ec}{ubec}{} +\DeclareFontSeriesChangeRule {ubx}{el}{elx}{} +\DeclareFontSeriesChangeRule {ubx}{l}{lx}{} +\DeclareFontSeriesChangeRule {ubx}{sb}{sbx}{} +\DeclareFontSeriesChangeRule {ubx}{sc}{ubsc}{} +\DeclareFontSeriesChangeRule {ubx}{sl}{slx}{} +\DeclareFontSeriesChangeRule {ubx}{ub}{ubx}{} +\DeclareFontSeriesChangeRule {ubx}{ul}{ulx}{} +\DeclareFontSeriesChangeRule {ubx}{x}{ubx}{} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ub}{c}{ubc}{} +\DeclareFontSeriesChangeRule {ub}{ec}{ubec}{} +\DeclareFontSeriesChangeRule {ub}{sc}{ubsc}{} +\DeclareFontSeriesChangeRule {ub}{x}{ubx}{} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ulc}{b}{bc}{} +\DeclareFontSeriesChangeRule {ulc}{c}{ulc}{} +\DeclareFontSeriesChangeRule {ulc}{eb}{ebc}{} +\DeclareFontSeriesChangeRule {ulc}{ec}{ulec}{ulc} +\DeclareFontSeriesChangeRule {ulc}{el}{elc}{} +\DeclareFontSeriesChangeRule {ulc}{l}{lc}{} +\DeclareFontSeriesChangeRule {ulc}{sb}{sbc}{} +\DeclareFontSeriesChangeRule {ulc}{sc}{ulsc}{ulc} +\DeclareFontSeriesChangeRule {ulc}{sl}{slc}{} +\DeclareFontSeriesChangeRule {ulc}{ub}{ubc}{} +\DeclareFontSeriesChangeRule {ulc}{ul}{ulc}{} +\DeclareFontSeriesChangeRule {ulc}{x}{ulx}{} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ulx}{b}{bx}{} +\DeclareFontSeriesChangeRule {ulx}{c}{ulc}{} +\DeclareFontSeriesChangeRule {ulx}{eb}{ebx}{} +\DeclareFontSeriesChangeRule {ulx}{ec}{ulec}{} +\DeclareFontSeriesChangeRule {ulx}{el}{elx}{} +\DeclareFontSeriesChangeRule {ulx}{l}{lx}{} +\DeclareFontSeriesChangeRule {ulx}{sb}{sbx}{} +\DeclareFontSeriesChangeRule {ulx}{sc}{ulsc}{} +\DeclareFontSeriesChangeRule {ulx}{sl}{slx}{} +\DeclareFontSeriesChangeRule {ulx}{ub}{ubx}{} +\DeclareFontSeriesChangeRule {ulx}{ul}{ulx}{} +\DeclareFontSeriesChangeRule {ulx}{x}{ulx}{} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {ul}{c}{ulc}{} +\DeclareFontSeriesChangeRule {ul}{ec}{ulec}{} +\DeclareFontSeriesChangeRule {ul}{sc}{ulsc}{} +\DeclareFontSeriesChangeRule {ul}{x}{ulx}{} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareFontSeriesChangeRule {x}{b}{bx}{} +\DeclareFontSeriesChangeRule {x}{c}{c}{} +\DeclareFontSeriesChangeRule {x}{eb}{ebx}{} +\DeclareFontSeriesChangeRule {x}{ec}{ec}{} +\DeclareFontSeriesChangeRule {x}{el}{elx}{} +\DeclareFontSeriesChangeRule {x}{l}{lx}{} +\DeclareFontSeriesChangeRule {x}{sb}{sbx}{} +\DeclareFontSeriesChangeRule {x}{sc}{sc}{} +\DeclareFontSeriesChangeRule {x}{sl}{slx}{} +\DeclareFontSeriesChangeRule {x}{ub}{ubx}{} +\DeclareFontSeriesChangeRule {x}{ul}{ulx}{} +% \end{macrocode} +% +% +% Special rules for \texttt{lm} etc.\ aren't needed because if the +% target \texttt{lm} is request it will used if there is no rule +% and that id then reduced to \texttt{l} +% automatically. Same for \texttt{mc} and friends. Only \texttt{?m} +% and \texttt{m?} need rules. +% +% So here are the special rules for \texttt{m?}: +% \begin{macrocode} +\DeclareFontSeriesChangeRule {bc}{m?}{c}{} +\DeclareFontSeriesChangeRule {bec}{m?}{ec}{} +\DeclareFontSeriesChangeRule {bsc}{m?}{sc}{} +\DeclareFontSeriesChangeRule {bx}{m?}{x}{} +\DeclareFontSeriesChangeRule {b}{m?}{m}{} +\DeclareFontSeriesChangeRule {c}{m?}{c}{} +\DeclareFontSeriesChangeRule {ebc}{m?}{c}{} +\DeclareFontSeriesChangeRule {ebec}{m?}{ec}{} +\DeclareFontSeriesChangeRule {ebsc}{m?}{sc}{} +\DeclareFontSeriesChangeRule {ebx}{m?}{x}{} +\DeclareFontSeriesChangeRule {eb}{m?}{m}{} +\DeclareFontSeriesChangeRule {ec}{m?}{ec}{} +\DeclareFontSeriesChangeRule {elc}{m?}{c}{} +\DeclareFontSeriesChangeRule {elec}{m?}{ec}{} +\DeclareFontSeriesChangeRule {elsc}{m?}{sc}{} +\DeclareFontSeriesChangeRule {elx}{m?}{x}{} +\DeclareFontSeriesChangeRule {el}{m?}{m}{} +\DeclareFontSeriesChangeRule {lc}{m?}{c}{} +\DeclareFontSeriesChangeRule {lec}{m?}{ec}{} +\DeclareFontSeriesChangeRule {lsc}{m?}{sc}{} +\DeclareFontSeriesChangeRule {lx}{m?}{x}{} +\DeclareFontSeriesChangeRule {l}{m?}{m}{} +\DeclareFontSeriesChangeRule {m}{m?}{m}{} +\DeclareFontSeriesChangeRule {sbc}{m?}{c}{} +\DeclareFontSeriesChangeRule {sbec}{m?}{ec}{} +\DeclareFontSeriesChangeRule {sbsc}{m?}{sc}{} +\DeclareFontSeriesChangeRule {sbx}{m?}{x}{} +\DeclareFontSeriesChangeRule {sb}{m?}{m}{} +\DeclareFontSeriesChangeRule {sc}{m?}{sc}{} +\DeclareFontSeriesChangeRule {slc}{m?}{c}{} +\DeclareFontSeriesChangeRule {slec}{m?}{ec}{} +\DeclareFontSeriesChangeRule {slsc}{m?}{sc}{} +\DeclareFontSeriesChangeRule {slx}{m?}{x}{} +\DeclareFontSeriesChangeRule {sl}{m?}{m}{} +\DeclareFontSeriesChangeRule {ubc}{m?}{c}{} +\DeclareFontSeriesChangeRule {ubec}{m?}{ec}{} +\DeclareFontSeriesChangeRule {ubsc}{m?}{sc}{} +\DeclareFontSeriesChangeRule {ubx}{m?}{x}{} +\DeclareFontSeriesChangeRule {ub}{m?}{ub}{} +\DeclareFontSeriesChangeRule {ulc}{m?}{c}{} +\DeclareFontSeriesChangeRule {ulec}{m?}{ec}{} +\DeclareFontSeriesChangeRule {ulsc}{m?}{sc}{} +\DeclareFontSeriesChangeRule {ulx}{m?}{x}{} +\DeclareFontSeriesChangeRule {ul}{m?}{m}{} +\DeclareFontSeriesChangeRule {x}{m?}{x}{} +% \end{macrocode} +% +% And there the special rules for \texttt{?m}: +% \begin{macrocode} +\DeclareFontSeriesChangeRule {bc}{?m}{b}{} +\DeclareFontSeriesChangeRule {bec}{?m}{b}{} +\DeclareFontSeriesChangeRule {bsc}{?m}{b}{} +\DeclareFontSeriesChangeRule {bsc}{?m}{b}{} +\DeclareFontSeriesChangeRule {bx}{?m}{b}{} +\DeclareFontSeriesChangeRule {b}{?m}{b}{} +\DeclareFontSeriesChangeRule {c}{?m}{m}{} +\DeclareFontSeriesChangeRule {ebc}{?m}{eb}{} +\DeclareFontSeriesChangeRule {ebec}{?m}{eb}{} +\DeclareFontSeriesChangeRule {ebsc}{?m}{eb}{} +\DeclareFontSeriesChangeRule {ebsc}{?m}{eb}{} +\DeclareFontSeriesChangeRule {ebx}{?m}{eb}{} +\DeclareFontSeriesChangeRule {eb}{?m}{eb}{} +\DeclareFontSeriesChangeRule {ec}{?m}{m}{} +\DeclareFontSeriesChangeRule {elc}{?m}{el}{} +\DeclareFontSeriesChangeRule {elec}{?m}{el}{} +\DeclareFontSeriesChangeRule {elsc}{?m}{el}{} +\DeclareFontSeriesChangeRule {elsc}{?m}{el}{} +\DeclareFontSeriesChangeRule {elx}{?m}{el}{} +\DeclareFontSeriesChangeRule {el}{?m}{el}{} +\DeclareFontSeriesChangeRule {lc}{?m}{l}{} +\DeclareFontSeriesChangeRule {lec}{?m}{l}{} +\DeclareFontSeriesChangeRule {lsc}{?m}{l}{} +\DeclareFontSeriesChangeRule {lsc}{?m}{l}{} +\DeclareFontSeriesChangeRule {lx}{?m}{l}{} +\DeclareFontSeriesChangeRule {l}{?m}{l}{} +\DeclareFontSeriesChangeRule {m}{?m}{m}{} +\DeclareFontSeriesChangeRule {sbc}{?m}{sb}{} +\DeclareFontSeriesChangeRule {sbec}{?m}{sb}{} +\DeclareFontSeriesChangeRule {sbsc}{?m}{sb}{} +\DeclareFontSeriesChangeRule {sbsc}{?m}{sb}{} +\DeclareFontSeriesChangeRule {sbx}{?m}{sb}{} +\DeclareFontSeriesChangeRule {sb}{?m}{sb}{} +\DeclareFontSeriesChangeRule {sc}{?m}{m}{} +\DeclareFontSeriesChangeRule {sc}{?m}{m}{} +\DeclareFontSeriesChangeRule {slc}{?m}{sl}{} +\DeclareFontSeriesChangeRule {slec}{?m}{sl}{} +\DeclareFontSeriesChangeRule {slsc}{?m}{sl}{} +\DeclareFontSeriesChangeRule {slsc}{?m}{sl}{} +\DeclareFontSeriesChangeRule {slx}{?m}{sl}{} +\DeclareFontSeriesChangeRule {sl}{?m}{sl}{} +\DeclareFontSeriesChangeRule {ubc}{?m}{ub}{} +\DeclareFontSeriesChangeRule {ubec}{?m}{ub}{} +\DeclareFontSeriesChangeRule {ubsc}{?m}{ub}{} +\DeclareFontSeriesChangeRule {ubsc}{?m}{ub}{} +\DeclareFontSeriesChangeRule {ubx}{?m}{ub}{} +\DeclareFontSeriesChangeRule {ub}{?m}{m}{} +\DeclareFontSeriesChangeRule {ulc}{?m}{ul}{} +\DeclareFontSeriesChangeRule {ulec}{?m}{ul}{} +\DeclareFontSeriesChangeRule {ulsc}{?m}{ul}{} +\DeclareFontSeriesChangeRule {ulsc}{?m}{ul}{} +\DeclareFontSeriesChangeRule {ulx}{?m}{ul}{} +\DeclareFontSeriesChangeRule {ul}{?m}{ul}{} +\DeclareFontSeriesChangeRule {x}{?m}{m}{} +% \end{macrocode} +% +% + + +% \subsection{Changing to a new series} +% + +% \begin{macro}{\fontseriesforce} +% To change unconditionally to a new series you can use +% \cs{fontseriesforce}. If course, if the series doesn't exist for +% the current family substitution still happens, but there is not +% dependency on the current series. +% \begin{macrocode} +\DeclareRobustCommand\fontseriesforce[1]{\edef\f@series{#1}} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\fontseries} +% The \cs{fontseries} command takes one argument which is the requested new +% font series. In the orginal implementation it simply saved the +% expanded value in \cs{f@series}. Now we do a bit more processing +% and look up the final value in the font series data base. This is +% done by \cs{merge@font@series}. +% \begin{macrocode} +\DeclareRobustCommand\fontseries[1]{\merge@font@series{#1}} +% \end{macrocode} +% \end{macro} + + +% \begin{macro}{\merge@font@series} +% We look up the data base value by expanding the right command +% twice. If no such value exist then the result will be \cs{relax} +% otherwise it will be the two brace groups: the desired result and +% the alternate result. The first case means that the third +% argument to \cs{merge@font@series} will be empty. +% \begin{macrocode} +\def\merge@font@series#1{% + \expandafter\expandafter\expandafter + \merge@font@series@ + \csname series@\f@series @#1\endcsname + {#1}% + \@nil +} +% \end{macrocode} +% \end{macro} + + + +% \begin{macro}{\merge@font@series@} +% This now defines the new \cs{f@series}: +% \begin{macrocode} +\def\merge@font@series@#1#2#3\@nil{% +% \end{macrocode} +% If the third argument is empty there is no database entry for the +% combination and the second argument holds the new series so we +% return that. +% +% Originally the test was simply \verb=\ifx!#3!= but that actually +% dies if \texttt{\#3} starts with a conditional and in the +% definition of \cs{AmSfont} that is actually the case. +% \begin{macrocode} +%\ifcat\expandafter X\detokenize{#1}X% + \def\@reserveda{#3}% + \ifx\@reserveda\@empty + \set@target@series{#2}% + \else +% \end{macrocode} +% Otherwise we check if the desired result for the series +% (\texttt{\#1}) exists for the font family and the current shape. +% As the \texttt{.fd} is perhaps not loaded yet, we first +% have to do that, otherwise the test would fail even if the face +% is actually available. +% \begin{macrocode} + \maybe@load@fontshape + \edef\@reserveda{\f@encoding /\f@family /#1/\f@shape}% + \ifcsname \@reserveda \endcsname +% \end{macrocode} +% If the desired result is available then we use that. However, we +% do need some post-processing because we need to drop surplus +% \texttt{m}s due to the way naming convention was designed in the +% '90s (sigh). +% \begin{macrocode} + \set@target@series{#1}% +% \end{macrocode} +% If not, then we try the alternate result (\texttt{\#2}). +% \begin{macrocode} + \else + \ifcsname \f@encoding /\f@family /#2/\f@shape \endcsname +% \end{macrocode} +% If the alternate result exist we use that and also issue a +% warning (or rather a log entry) that we didn't managed to change +% to the desired font. +% \begin{macrocode} + \set@target@series{#2}% + \@font@shape@subst@warning +% \end{macrocode} +% If that doesn't exist either, then we use the requested series unmodified +% (again with a warning). +% \begin{macrocode} + \else + \set@target@series{#3}% + \@font@shape@subst@warning + \fi + \fi + \fi +} +% \end{macrocode} +% It is possible that the previous font and the new one are +% actually identical (and the font was not found because it still +% needs loading) in which case a warning would look rather odd. So +% we make a quick check for that (which is the reason why we defined +% \cs{@reserveda} above. +% \begin{macrocode} +\def\@font@shape@subst@warning{% + \edef\@reservedb{\curr@fontshape}% + \ifx\@reserveda\@reservedb \else + \@font@warning{Font shape `\@reserveda' undefined\MessageBreak + using `\@reservedb' instead}% + \fi +} +% \end{macrocode} +% \end{macro} +% +% +% +% +% \begin{macro}{\maybe@load@fontshape} +% A small helper that we use a couple of times: try loading a +% fontshape (in a group because \cs{try@load@fontshape} normalizes +% catcodes). +% \begin{macrocode} +\def\maybe@load@fontshape{\begingroup\try@load@fontshape\endgroup} +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macro}{\set@target@series} +% \begin{macro}{\series@drop@one@m} +% +% Finally the code for normalizing the \cs{f@series} value. +% +% The combined series value determined by the mapping may still +% contain an \texttt{m} that we have to remove (as the \texttt{.fd} +% files use \texttt{c} not \texttt{mc} to denote a medium weight +% condensed series, etc.). We do this in all branches above because a user +% might have written +%\begin{verbatim} +\DeclareFontSeriesChangeRule {m}{sc}{msc}{mc} +%\end{verbatim} +% instead of of using \texttt{sc} and \texttt{c} as needed in the +% \texttt{.fd} file. +% \begin{macrocode} +\def\set@target@series#1{% +% \end{macrocode} +% We need to \cs{edef} the argument first in case it starts with a +% conditional. +% \begin{macrocode} + \edef\f@series{#1}% + \edef\f@series{\expandafter\series@drop@one@m\f@series mm\series@drop@one@m}% +} +% \end{macrocode} +% Drop up to two \texttt{m}s but keep one if that makes the series +% value empty. +% \begin{macrocode} +\def\series@drop@one@m#1m#2m#3\series@drop@one@m{% + \ifx\relax#1#2\relax m\else#1#2\fi +} +% \end{macrocode} +% \end{macro} +% \end{macro} + + + +% \section{Changing the shape} +% +% Shapes are also split in two axes (though it could be more if +% that is desirable), essentially building in an ``sc'' +% axis). +% +% +% +% \begin{macro}{\DeclareFontShapeChangeRule} +% The database for shapes is done in exactly the same way, only +% that it is much smaller and we usually have no alternative shape +% (or rather it is empty thus not used). +% \begin{macrocode} +\def\DeclareFontShapeChangeRule #1#2#3#4{% + \@namedef{shape@#1@#2}{{#3}{#4}}} +% \end{macrocode} +% \end{macro} +% +% +% There is kind of the same problem with returning back from +% \texttt{sc} to normal. It sort of needs its own letter. In +% \texttt{fontspec} this was solved by the first time \cs{upshape} changes +% \texttt{it} or \texttt{sl} back (so only \texttt{sc} remains) and +% second time it changes then \texttt{sc} back to normal. Maybe +% that's not a bad way to handle it, but decided for a slightly +% different approach: \texttt{n} always returns to ``normal'', ie +% resets everything and \texttt{up} changes italic or slanted to +% upright and \texttt{ulc} undoes small caps. +% +% So we now offer \cs{normalshape} (using \cs{shapedefault} which is normally the same as +% calling both \cs{ulcshape} and \cs{upshape}, only more efficient. +% +% +% \begin{macro}{\ulcshape} +% \begin{macro}{\textulc} +% \begin{macro}{\ulcdefault} +% To request going back to upper/lowercase we need a new +% command. It uses \texttt{ulc} as shape name but this shape is +% virtual, i.e., it doesn't exist as a real shape, it is only used +% as part of the database table entries and thus only appears in +% the second argument there (but not in the first). +% \begin{macrocode} +\DeclareRobustCommand\ulcshape + {\not@math@alphabet\ulcshape\relax + \fontshape\ulcdefault\selectfont} +\newcommand\ulcdefault{ulc} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\swshape} +% \begin{macro}{\textsw} +% \begin{macro}{\swdefault} +% New command to select a swash shape. The standard rules put this +% in the same category as italics or slanted, i.e., if you ask for +% it then italics are undone. One could provide more complicated +% rules so that \texttt{it} + \texttt{sw} becomes \texttt{swit} but +% given that there are only very few fonts that have swash letters +% that level of flexibility (these days) would be just resulting in +% a lot of combinations that do not exist. +% \begin{macrocode} +\DeclareRobustCommand\swshape + {\not@math@alphabet\swshape\relax + \fontshape\swdefault\selectfont} +\newcommand\swdefault{sw} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% +% \begin{macro}{\sscshape} +% \begin{macro}{\textssc} +% \begin{macro}{\sscdefault} +% New command to select spaced small capitals. This is only here +% because \texttt{fontaxes} offered it. There isn't a single free +% font that supports it. However, some commercial ones do, so we +% offer it so that at some point \texttt{fontaxes} could be +% retired. +% +% So far there aren't any rules for it---probably there should be +% some putting it in the same category as \texttt{sc}. +% \begin{macrocode} +\DeclareRobustCommand\sscshape + {\not@math@alphabet\sscshape\relax + \fontshape\sscdefault\selectfont} +\newcommand\sscdefault{ssc} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% +% \subsection{Mapping rules for shape combinations} +% +% Many of the entries are commented out as we will get that result +% without any entry. +% \begin{macrocode} +%\DeclareFontShapeChangeRule {n}{n} {n} {} +\DeclareFontShapeChangeRule {n}{it} {it} {sl} +\DeclareFontShapeChangeRule {n}{sl} {sl} {it} +%\DeclareFontShapeChangeRule {n}{sw} {sw} {} +%\DeclareFontShapeChangeRule {n}{sc} {sc} {} +\DeclareFontShapeChangeRule {n}{ulc} {n} {} +\DeclareFontShapeChangeRule {n}{up} {n} {} +% \end{macrocode} +% +% \begin{macrocode} +%\DeclareFontShapeChangeRule {it}{n} {n} {} +%\DeclareFontShapeChangeRule {it}{it} {it} {} +\DeclareFontShapeChangeRule {it}{sl} {sl} {it} +%\DeclareFontShapeChangeRule {it}{sw} {sw} {} +% \end{macrocode} +% If neither \texttt{scit} nor \texttt{scsl} exist then \texttt{sc} +% will be used as a fallback albeit with a log entry, so except for +% the latter there will be no change for CM or Latin Modern fonts. +% \begin{macrocode} +\DeclareFontShapeChangeRule {it}{sc} {scit} {scsl} +\DeclareFontShapeChangeRule {it}{ulc} {it} {} +\DeclareFontShapeChangeRule {it}{up} {n} {} +% \end{macrocode} +% +% \begin{macrocode} +%\DeclareFontShapeChangeRule {sl}{n} {n} {} +\DeclareFontShapeChangeRule {sl}{it} {it} {sl} +%\DeclareFontShapeChangeRule {sl}{sl} {sl} {} +%\DeclareFontShapeChangeRule {sl}{sw} {sw} {} +\DeclareFontShapeChangeRule {sl}{sc} {scsl} {scit} +\DeclareFontShapeChangeRule {sl}{ulc} {sl} {} +\DeclareFontShapeChangeRule {sl}{up} {n} {} +% \end{macrocode} +% +% \begin{macrocode} +%\DeclareFontShapeChangeRule {sc}{n} {n} {} +\DeclareFontShapeChangeRule {sc}{it} {scit} {scsl} +\DeclareFontShapeChangeRule {sc}{sl} {scsl} {scit} +\DeclareFontShapeChangeRule {sc}{sw} {scsw} {sw} +%\DeclareFontShapeChangeRule {sc}{sc} {sc} {} +\DeclareFontShapeChangeRule {sc}{ulc} {n} {} +% \end{macrocode} +% +% The next rule might be a bit surprising and rightly so. Correct +% would be that \texttt{sc} is not affected by \texttt{up}, i.e., +% remains \texttt{sc} as showed in the commented out rule. However, +% for nearly three decades commands such as \upshape{sc} or +% \cs{textup} changed small caps back to the ``normal'' shape. So +% for backward compatibility we keep hat behavior. +% +% As a result you are currently typesetting in \texttt{scit} or +% \texttt{scsl} using \cs{upshape} twice will return you to the +% normal shape too, the first will change to \texttt{sc} and the +% second (because of the rule below) change that to +% \texttt{n}. This is the way \texttt{fontspec} implemented its +% version on this interface, so this rule means we are also +% compatible with the way \texttt{fontspec} behaved. Still it +% remains an odditywhic I would rather liked to have avoided. +% \begin{macrocode} +%\DeclareFontShapeChangeRule {sc}{up} {sc} {} +\DeclareFontShapeChangeRule {sc}{up} {n} {} +% \end{macrocode} +% +% \begin{macrocode} +%\DeclareFontShapeChangeRule {scit}{n} {n} {} +\DeclareFontShapeChangeRule {scit}{it} {scit} {} +\DeclareFontShapeChangeRule {scit}{sl} {scsl} {scit} +\DeclareFontShapeChangeRule {scit}{sw} {scsw} {sc} % or scit? +\DeclareFontShapeChangeRule {scit}{sc} {scit} {} +\DeclareFontShapeChangeRule {scit}{ulc} {it} {} +\DeclareFontShapeChangeRule {scit}{up} {sc} {} +% \end{macrocode} +% The previous rule assumes that if \texttt{scit} exists then +% \texttt{it} exists as well. If not, the mechanism will save +% \texttt{ulc} in \cs{f@series} which most certainly doesn't +% exist. So when a font is later selected that would result in a +% substitution (so no harm done really). Alternatively, we could in +% this case use \texttt{n} as aternative, which may be a bit +% faster, but such a setup would be so weird in the first place +% that this isn't worth the effort. +% +% \begin{macrocode} +%\DeclareFontShapeChangeRule {scsl}{n} {n} {} +\DeclareFontShapeChangeRule {scsl}{it} {scit} {scsl} +\DeclareFontShapeChangeRule {scsl}{sl} {scsl} {} +\DeclareFontShapeChangeRule {scsl}{sw} {scsw} {sc} % or scsl? +\DeclareFontShapeChangeRule {scsl}{sc} {scsl} {} +\DeclareFontShapeChangeRule {scsl}{ulc} {sl} {} +\DeclareFontShapeChangeRule {scsl}{up} {sc} {} +% \end{macrocode} +% +% \begin{macrocode} +%\DeclareFontShapeChangeRule {scsw}{n} {n} {} +\DeclareFontShapeChangeRule {scsw}{it} {scit} {scsw} +\DeclareFontShapeChangeRule {scsw}{sl} {scsl} {} +\DeclareFontShapeChangeRule {scsw}{sw} {scsw} {} +\DeclareFontShapeChangeRule {scsw}{sc} {scsw} {} +\DeclareFontShapeChangeRule {scsw}{ulc} {sw} {} +\DeclareFontShapeChangeRule {scsw}{up} {sc} {} +% \end{macrocode} +% +% \begin{macrocode} +%\DeclareFontShapeChangeRule {sw}{n} {n} {} +%\DeclareFontShapeChangeRule {sw}{it} {it} {} +%\DeclareFontShapeChangeRule {sw}{sl} {sl} {} +%\DeclareFontShapeChangeRule {sw}{sw} {sw} {} +\DeclareFontShapeChangeRule {sw}{sc} {scsw} {} +\DeclareFontShapeChangeRule {sw}{ulc} {sw} {} +\DeclareFontShapeChangeRule {sw}{up} {n} {} +% \end{macrocode} +% +% +% \subsection{Changing to a new shape} +% +% \begin{macro}{\fontshape} +% Again the \cs{fontshape} now has to do a lookup to get to its new +% value in \cs{f@shape}. The method is exactly the same as in +% \cs{fontseries}. +% \begin{macrocode} +\DeclareRobustCommand\fontshape[1]{\merge@font@shape{#1}} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\fontshapeforce} +% The unconditional version: +% \begin{macrocode} +\DeclareRobustCommand\fontshapeforce[1]{\edef\f@shape{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\merge@font@shape} +% Look up the database entry (if existing) and act accordingly. +% \begin{macrocode} +\def\merge@font@shape#1{% + \expandafter\expandafter\expandafter + \merge@font@shape@ + \csname shape@\f@shape @#1\endcsname + {#1}% + \@nil +} +% \end{macrocode} +% \end{macro} +% + +% \begin{macro}{\merge@font@shape@} +% Same game now, except that we look at shapes not series values +% and we can set the shape without the complication of dropping +% ``m''s from the name as we had to for the series. +% \begin{macrocode} +\def\merge@font@shape@#1#2#3\@nil{% + \def\@reserveda{#3}% + \ifx\@reserveda\@empty + \edef\f@shape{#2}% + \else + \maybe@load@fontshape + \edef\@reserveda{\f@encoding /\f@family /\f@series/#1}% + \ifcsname \@reserveda\endcsname + \edef\f@shape{#1}% + \else + \ifcsname \f@encoding /\f@family /\f@series/#2\endcsname + \edef\f@shape{#2}% + \@font@shape@subst@warning + \else + \edef\f@shape{#3}% + \@font@shape@subst@warning + \fi + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macro}{\normalshape} +% +% \cs{normalshape} resets both sub-axes if the default rules are used. +% \begin{macrocode} +\protected\def\normalshape + {\not@math@alphabet\normalshape\relax + \fontshape\shapedefault\selectfont}% +% \end{macrocode} +% \end{macro} +% +% +% +% +% \section{Make sure we win \ldots} +% +% This code implements one aspect of what the package \textsf{fontaxes} +% provide. So its redefinitions for the various shape commands, +% such as \cs{itshape} should no longer happen. We therefore force +% the standard definitions at \cs{AtBeginDocument} (later when this +% is defined. Once +% \texttt{fontaxes} is no longer doing such redefinitions that could +% be taken out again. +% +% We use a separate macro so that we can easily disable this (in +% case of rollback). +% +% \begin{macro}{\reinstall@nfss@defs} +% +% I use \cs{protected} here not \cs{DeclareRobustCommand} to avoid +% extra status lines. +% \begin{macrocode} +\def\reinstall@nfss@defs{% + \protected\def\upshape + {\not@math@alphabet\upshape\relax + \fontshape\updefault\selectfont}% + \protected\def\slshape + {\not@math@alphabet\slshape\relax + \fontshape\sldefault\selectfont}% + \protected\def\scshape + {\not@math@alphabet\scshape\relax + \fontshape\scdefault\selectfont}% + \protected\def\itshape + {\not@math@alphabet\itshape\mathit + \fontshape\itdefault\selectfont}% + \protected\def\ulcshape + {\not@math@alphabet\ulcshape\relax + \fontshape{ulc}\selectfont}% + \protected\def\swshape + {\not@math@alphabet\swshape\relax + \fontshape\swdefault\selectfont}% + \protected\def\sscshape + {\not@math@alphabet\sscshape\relax + \fontshape\sscdefault\selectfont}% +} +% \end{macrocode} +% \end{macro} +% +% +% Supporting rollback \ldots +% \begin{macrocode} +% +%\EndIncludeInRelease +%\IncludeInRelease{0000/00/00}% +% {\DeclareFontSeriesChangeRule}{Series change rules}% +% +%\DeclareRobustCommand\fontseries[1]{\edef\f@series{#1}} +%\DeclareRobustCommand\fontshape [1]{\edef\f@shape{#1}} +%\let\fontseriesforce\@undefined +%\let\fontshapeforce\@undefined +% +%\let\DeclareFontSeriesChangeRule\@undefined +%\let\merge@font@series\@undefined +%\let\merge@font@series@\@undefined +%\let\@font@shape@subst@warning\@undefined +%\let\maybe@load@fontshape\@undefined +%\let\set@target@series\@undefined +%\let\series@drop@one@m\@undefined +%\let\DeclareFontShapeChangeRule\@undefined +%\let\merge@font@shape\@undefined +%\let\merge@font@shape@\@undefined +%\let\normalshape\@undefined +%\let\ulcshape\@undefined +%\let\ulcdefault\@undefined +%\let\swshape\@undefined +%\let\swdefault\@undefined +%\let\sscshape\@undefined +%\let\sscdefault\@undefined +%\let\normalshape\@undefined +% \end{macrocode} +% This is always called in \cs{document} so don't make it undefined. +% \begin{macrocode} +% +%\let\reinstall@nfss@defs\relax +%\EndIncludeInRelease +%<*2ekernel> +% +% \end{macrocode} +% +% \Finale +% + + diff --git a/macros/latex-dev/base/ltfssbas.dtx b/macros/latex-dev/base/ltfssbas.dtx index da9dab5d38..e87f154b3d 100644 --- a/macros/latex-dev/base/ltfssbas.dtx +++ b/macros/latex-dev/base/ltfssbas.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -35,7 +35,7 @@ % % \ProvidesFile{ltfssbas.dtx} - [2019/08/27 v3.2d LaTeX Kernel (NFSS Basic Macros)] + [2019/12/17 v3.2e LaTeX Kernel (NFSS Basic Macros)] % \iffalse \documentclass{ltxdoc} \begin{document} @@ -800,16 +800,11 @@ % \begin{macro}{\f@shape} % \begin{macrocode} \DeclareRobustCommand\fontfamily[1]{\edef\f@family{#1}} -\DeclareRobustCommand\fontseries[1]{\edef\f@series{#1}} -\DeclareRobustCommand\fontshape [1]{\edef\f@shape{#1}} % \end{macrocode} -% Some handy abbreviation if you want to get some particular font -% in the current size. If also the size should change one has to -% issue a |\fontsize| command first. +% There are now defined later (and differently). % \begin{macrocode} -\DeclareRobustCommand\usefont[4]{\fontencoding{#1}\fontfamily{#2}% - \fontseries{#3}\fontshape{#4}\selectfont - \ignorespaces} +%\DeclareRobustCommand\fontseries[1]{\edef\f@series{#1}} +%\DeclareRobustCommand\fontshape [1]{\edef\f@shape{#1}} % \end{macrocode} % \end{macro} % \end{macro} @@ -819,6 +814,31 @@ % \end{macro} % % +% +% \begin{macro}{\usefont} +% Some handy abbreviation if you want to get some particular font +% in the current size. If also the size should change one has to +% issue a |\fontsize| command first. +% +% \cs{fontencoding} needs to do some setup work so we call that, +% but instead of calling \cs{fontfamily}, \cs{fontseries} and +% \cs{fontshape} it earlier versions of this code did, we now set +% \cs{f@family}, etc.\ directly. If we would call \cs{fontseries} +% or \cs{fontshape} as it +% was done in the past, they would now interact with the existing +% series and shape which is not desired if we intend to use an +% explicit font shape! +% \changes{v3.2e}{2019/12/17}{Don't call \cs{fontseries} or \cs{fontshape}} +% \begin{macrocode} +\DeclareRobustCommand\usefont[4]{\fontencoding{#1}% + \edef\f@family{#2}% + \edef\f@series{#3}% + \edef\f@shape{#4}\selectfont + \ignorespaces} +% \end{macrocode} +% \end{macro} +% +% % \begin{macro}{\linespread} % \changes{v2.1j}{1994/05/12}{New macro} % \changes{v2.1p}{1994/05/16}{Remove surplus braces} @@ -1269,6 +1289,122 @@ % \end{macro} % % +% +% \begin{macro}{\LoadFontDefinitionFile} +% Load and \texttt{.fd} files for some encoding and family (if it exists). +% \begin{macrocode} +% +%<*2ekernel|latexrelease> +%\IncludeInRelease{2020/02/02}% +% {\LoadFontDefinitionFile}{Loading .fd files}% +\def\LoadFontDefinitionFile#1#2{% + \begingroup + \edef\f@encoding{#1}% + \edef\f@family{#2}% + \try@load@fontshape + \endgroup +} +% +%\EndIncludeInRelease +%\IncludeInRelease{0000/00/00}% +% {\LoadFontDefinitionFile}{Loading .fd files}% +% +%\let\LoadFontDefinitionFile\@undefined +%\EndIncludeInRelease +%<*2ekernel> +% \end{macrocode} +% \end{macro} +% +% +% + +% \begin{macro}{\DeclareFontFamilySubstitution} +% The idea for this macro is stolen from the \texttt{substitutefont} +% package by Günter Milde, with some modifications and a new name. +% +% Its purpose is to provide characters in a special encoding tht +% are not available in the current font family to be taken from a +% different family that is visually compatible (or not if you +% choose badly). For example, you can match the GFS Didot Greek +% characters with \TeX{} Gyre Pagella (Palatino) by specifying +%\begin{verbatim} +% \DeclareFontFamilySubstitution{LGR}{qpl}{udidot} +%\end{verbatim} +% This way if you ask for the \texttt{LGR} encoding in for the +% \texttt{qpl} family you get the characters from the +% \texttt{udidot} family substituted. +% +% We need to ensure that the macro is defined with +% \cs{nfss@catcodes} in force (not quite sure why at the moment to +% be honest). +% \begin{macrocode} +% +%<*2ekernel|latexrelease> +%\IncludeInRelease{2020/02/02}% +% {\DeclareFontFamilySubstitution}{Provide family substituation}% +\begingroup +\nfss@catcodes +\gdef\DeclareFontFamilySubstitution#1#2#3{% +% \end{macrocode} +% We only provide a set of silent substitutions. The package also +% (re)declared the family, but this is incorrect in my eyes and it +% is better to handle that differently. +% +% Of course the families may still need loading at +% this point and so we arange for this. Otherwise we might run into +% trouble because the necessary \cs{DeclareFontFamily} has not been +% seen. +% \begin{macrocode} + \LoadFontDefinitionFile{#1}{#2}% + \LoadFontDefinitionFile{#1}{#3}% +% \end{macrocode} +% +% \begin{macrocode} + \DeclareFontShape{#1}{#2}{m}{it}{<->ssub * #3/m/it}{}% + \DeclareFontShape{#1}{#2}{m}{n}{<->ssub * #3/m/n}{}% + \DeclareFontShape{#1}{#2}{m}{sc}{<->ssub * #3/m/sc}{}% + \DeclareFontShape{#1}{#2}{m}{sl}{<->ssub * #3/m/sl}{}% +% \end{macrocode} +% These days a few more shapes might be around, so we declare those +% too. If they don't exist then after the first substitution normal +% fallbacks will happen. +% \begin{macrocode} + \DeclareFontShape{#1}{#2}{m}{sw}{<->ssub * #3/m/sw}{}% + \DeclareFontShape{#1}{#2}{m}{scit}{<->ssub * #3/m/scit}{}% + \DeclareFontShape{#1}{#2}{m}{scsl}{<->ssub * #3/m/scsl}{}% +% \end{macrocode} +% Same game with \texttt{b} and \texttt{bx}, for other weights you +% are on your own: +% \begin{macrocode} + \DeclareFontShape{#1}{#2}{b}{it}{<->ssub * #3/b/it}{}% + \DeclareFontShape{#1}{#2}{b}{n}{<->ssub * #3/b/n}{}% + \DeclareFontShape{#1}{#2}{b}{scit}{<->ssub * #3/b/scit}{}% + \DeclareFontShape{#1}{#2}{b}{scsl}{<->ssub * #3/b/scsl}{}% + \DeclareFontShape{#1}{#2}{b}{sc}{<->ssub * #3/b/sc}{}% + \DeclareFontShape{#1}{#2}{b}{sl}{<->ssub * #3/b/sl}{}% + \DeclareFontShape{#1}{#2}{b}{sw}{<->ssub * #3/b/sw}{}% + \DeclareFontShape{#1}{#2}{bx}{it}{<->ssub * #3/bx/it}{}% + \DeclareFontShape{#1}{#2}{bx}{n}{<->ssub * #3/bx/n}{}% + \DeclareFontShape{#1}{#2}{bx}{scit}{<->ssub * #3/bx/scit}{}% + \DeclareFontShape{#1}{#2}{bx}{scsl}{<->ssub * #3/bx/scsl}{}% + \DeclareFontShape{#1}{#2}{bx}{sc}{<->ssub * #3/bx/sc}{}% + \DeclareFontShape{#1}{#2}{bx}{sl}{<->ssub * #3/bx/sl}{}% + \DeclareFontShape{#1}{#2}{bx}{sw}{<->ssub * #3/bx/sw}{}% +} +\endgroup +% +%\EndIncludeInRelease +%\IncludeInRelease{0000/00/00}% +% {\DeclareFontFamilySubstitution}{Provide family substituation}% +% +%\let\DeclareFontFamilySubstitution\@undefined +%\EndIncludeInRelease +%<*2ekernel> +% \end{macrocode} +% \end{macro} +% +% +% % \begin{macro}{\DeclareErrorFont} % Declare the last resort shape! We assume that in this fontshape % there is a 10pt font but it doesn't really matter. We only loose diff --git a/macros/latex-dev/base/ltfsscmp.dtx b/macros/latex-dev/base/ltfsscmp.dtx index d62eeb6f47..8583fb1a9b 100644 --- a/macros/latex-dev/base/ltfsscmp.dtx +++ b/macros/latex-dev/base/ltfsscmp.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltfssdcl.dtx b/macros/latex-dev/base/ltfssdcl.dtx index d1284a08e8..1c546e921c 100644 --- a/macros/latex-dev/base/ltfssdcl.dtx +++ b/macros/latex-dev/base/ltfssdcl.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltfssini.dtx b/macros/latex-dev/base/ltfssini.dtx index b073a5cc37..e948aa4809 100644 --- a/macros/latex-dev/base/ltfssini.dtx +++ b/macros/latex-dev/base/ltfssini.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -36,7 +36,7 @@ % % \ProvidesFile{ltfssini.dtx} - [2019/08/27 v3.1d LaTeX Kernel (NFSS Initialisation)] + [2020/01/11 v3.1f LaTeX Kernel (NFSS Initialisation)] % \iffalse \documentclass{ltxdoc} \begin{document} @@ -157,26 +157,28 @@ % Now we define the standard font change commands. % We don't allow the use of |\rmfamily| etc.\ in math mode. % +% (Actually most are now defined further down in the file.) +% % First the changes to another \emph{family}: % \begin{macrocode} -\DeclareRobustCommand\rmfamily - {\not@math@alphabet\rmfamily\mathrm - \fontfamily\rmdefault\selectfont} -\DeclareRobustCommand\sffamily - {\not@math@alphabet\sffamily\mathsf - \fontfamily\sfdefault\selectfont} -\DeclareRobustCommand\ttfamily - {\not@math@alphabet\ttfamily\mathtt - \fontfamily\ttdefault\selectfont} +%\DeclareRobustCommand\rmfamily +% {\not@math@alphabet\rmfamily\mathrm +% \fontfamily\rmdefault\selectfont} +%\DeclareRobustCommand\sffamily +% {\not@math@alphabet\sffamily\mathsf +% \fontfamily\sfdefault\selectfont} +%\DeclareRobustCommand\ttfamily +% {\not@math@alphabet\ttfamily\mathtt +% \fontfamily\ttdefault\selectfont} % \end{macrocode} % Then the commands changing the \emph{series}: % \begin{macrocode} -\DeclareRobustCommand\bfseries - {\not@math@alphabet\bfseries\mathbf - \fontseries\bfdefault\selectfont} -\DeclareRobustCommand\mdseries - {\not@math@alphabet\mdseries\relax - \fontseries\mddefault\selectfont} +%\DeclareRobustCommand\bfseries +% {\not@math@alphabet\bfseries\mathbf +% \fontseries\bfdefault\selectfont} +%\DeclareRobustCommand\mdseries +% {\not@math@alphabet\mdseries\relax +% \fontseries\mddefault\selectfont} \DeclareRobustCommand\upshape {\not@math@alphabet\upshape\relax \fontshape\updefault\selectfont} @@ -195,30 +197,874 @@ % \end{macrocode} % % +% +% +% \section{Custom series settings for main document families} +% +% This section was introduced 2020/02/02 and for now we support a +% full rollback (may need splitting later). +% \changes{v3.1e}{2019/12/17}{Provide custom series settings a la mweights} +% \begin{macrocode} +% +%<*2ekernel|latexrelease> +%\IncludeInRelease{2020/02/02}% +% {\DeclareFontSeriesDefault}{Custom series}% +% \end{macrocode} +% +% One problem with the NFSS approach of handling the series axis +% turned out to be that (especially with respect to ``boldness'') +% different font families implemented different strategies. For +% example, with Computer Modern fonts you normally only have +% \texttt{bx} whereas most PostScript fonts offered only \texttt{b} +% but not \texttt{bx}. As a result \LaTeX's standard setting for +% \cs{bfdefault} didn't work with such fonts, but if it got changed +% to produce \texttt{b}, then that didn't work with Computer Modern +% if the fonts got combined (e.g., using Computer Modern Typewriter +% with such fonts). +% +% The solution back then was to provide substitution rules in the +% font \texttt{.fd} such that if a \texttt{bx} series got requested +% the \texttt{b} series got used. While this works in that +% particular case, it isn't a very +% general solution. For example, if you happen to have a font family that +% has several weights you may want to typeset the whole document +% in a somewhat lighter or darker font but if you then modify +% \cs{mddefault} to allow for this, then of course your change only +% works with that particular family but not with the typewriter +% or sans serif family you also want to use. +% +% A better solution was provided by the \texttt{mweights} package by +% Bob Tennent that offers defaults on the level of the three main +% font families in the document: for ``rm'', ``sf'' and ``tt'' so +% that font packages could define defaults for the sans serif +% document font by providing \cs{bfseries@sf} which then was used +% when \cs{bfseries} got executed and the current family was the +% \cs{sffamily}. +% +% \DescribeMacro\DeclareFontSeriesDefault +% We now support this concept directly from within \LaTeX{} and for +% use in font packages (or the document preamble) we offer +% \cs{DeclareSeriesDefault}. This declaration takes three +% arguments: +% \begin{description} +% \item[document family interface:] Can either be \texttt{rm}, +% \texttt{sf} or \texttt{tt}. This is optional and if not given the +% overall default. +% \item[document series interface:] Can be \texttt{md} or +% \texttt{bf}. +% \item[series value:] This is the value that is going to be used +% with the combination is requested. +% \end{description} +% +% For example, \verb=\DeclareFontSeriesDefault[rm]{bf}{sb}= would +% use \texttt{sb} (semi-bold) when \cs{rmfamily} \cs{bfseries} is +% asked for. +% +% If used without the optional argument, e.g., +% \verb=\DeclareFontSeriesDefault{bf}{b}= then this is like +% redefining \cs{bfdefault} or \cs{mddefault}. +% +% If some family specify defaults aren't given, e.g. if there are +% no declarations for, say, \texttt{tt} then the format defaults +% of \cs{mddefault} and \cs{bfdefault} are assumed. If those are +% later changed this is \emph{not} reflected!\footnote{I see no +% easy way to achieve this without compromising compatibility with +% existing packages that currently use \textsf{mweights} and directly +% define (some) of the \cs{mdseries@..} commands but not others.} +% +% +% +% \begin{macro}{\DeclareFontSeriesDefault} +% The command to declare font series defaults for the ``rm'', ``sf'' or +% ``tt'' family. +% \begin{macrocode} +\newcommand\DeclareFontSeriesDefault[3][]{% + \def\@reserveda{#1}% +% \end{macrocode} +% No optional argument: set up general default. +% \begin{macrocode} + \ifx\@resereda\@empty + \ifcsname #2series\endcsname % supported are + % \[md/bf]default + \expandafter\def + \csname #2default\endcsname{#3}% + \else + \@latex@error{Wrong syntax for \string\DeclareFontSeriesDefault}% + {Mandatory first argument must be 'md' or 'bf'.} + \fi +% \end{macrocode} +% Optional argument given, set up specific default. +% \begin{macrocode} + \else + \ifcsname #2series@#1\endcsname % supported are + % \[md/bf]series@[rm/sf/tt] + \expandafter\edef + \csname #2series@#1\endcsname{#3}% +% \end{macrocode} +% +% If the interface is used we remove the frozen kernel +% default. This way, we know that something was explicitly set up +% (even if the setup has the same value as the default). +% \begin{macrocode} + \expandafter\let + \csname #2series@#1@kernel\endcsname\@undefined + \else + \@latex@error{Wrong syntax for \string\DeclareFontSeriesDefault}% + {Optional first argument must be 'rm', 'sf', or 'tt'. \MessageBreak + Second argument must be 'md' or 'bf'.} + \fi + \fi +} +% \end{macrocode} +% \end{macro} + + + + +% \begin{macro}{\mdseries@rm} +% \begin{macro}{\mdseries@sf} +% \begin{macro}{\mdseries@tt} +% \begin{macro}{\bfseries@rm} +% \begin{macro}{\bfseries@sf} +% \begin{macro}{\bfseries@tt} +% We initialize the family specific default at the end of the +% format generation. Later on they may get overwritten in the +% preamble or a package via \cs{DeclareFontSeriesDefault} (or +% possibly directly). +% +% Conceptual change: The \cs{bfdefault} will be \texttt{b} not +% \texttt{bx} because that is what it should be really for nearly +% every font except Computer/Latin Modern. +% +% To account for the fact that by default we typeset in CM or LM we +% set up the \cs{bfseries@..} defaults to use \texttt{bx} instead. +% +% This means that it behaves like before because if the default +% fonts are used then \cs{bfseries@rm} etc kick in and make +% \cs{textbf} use \texttt{bx}. However, if the font gets changed +% then \cs{bfdefault} will get used. +% +% \begin{macrocode} +\def\bfseries@rm{bx} +\def\bfseries@sf{bx} +\def\bfseries@tt{bx} +% \end{macrocode} +% +% Frozen version of the kernel defaults so we can see if they have changed. +% \begin{macrocode} +\let\bfseries@rm@kernel\bfseries@rm +\let\bfseries@sf@kernel\bfseries@sf +\let\bfseries@tt@kernel\bfseries@tt +% \end{macrocode} +% +% The default for the medium series is \texttt{m} and this will be +% interpreted as resetting both weight and width. To reset only one +% of them the virtual value \texttt{?m} and \texttt{m?} are available. +% \begin{macrocode} +\def\mdseries@rm{m} +\def\mdseries@sf{m} +\def\mdseries@tt{m} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} + + + +% \begin{macro}{\expand@font@defaults} +% +% The family specific defaults are fully expanded, i.e., they are +% defined via \cs{edef} inside \cs{DeclareFontSeriesDefault}. +% However, the overall defaults, e.g., \cs{bfdefault} may have been +% redefined by the user and thus may not be fully expanded. So to +% enable reliable comparison we make expanded versions of +% them. That we rerun each time. The alternative would be to only +% allow for changes before begin document. +% \begin{macrocode} +\def\expand@font@defaults{% + \edef\rmdef@ult{\rmdefault}% + \edef\sfdef@ult{\sfdefault}% + \edef\ttdef@ult{\ttdefault}% + \edef\bfdef@ult{\bfdefault}% + \edef\mddef@ult{\mddefault}% + \edef\famdef@ult{\familydefault}% +} +% \end{macrocode} +% +% \end{macro} + + + +% \begin{macro}{\bfseries} +% This document command switches to the bold series. +% \begin{macrocode} +\DeclareRobustCommand\bfseries{% + \not@math@alphabet\bfseries\mathbf +% \end{macrocode} +% In the original NFSS definition it then called \cs{fontseries} +% with the value \cs{bfdefault}. In the new scheme we have more +% alternatives and therefore check if the current family +% (\cs{f@family}) is the current \cs{rmdef@ult}, \cs{sfdef@ult} or +% \cs{ttdef@ult} and the select the correct family default in that case. +% \begin{macrocode} + \expand@font@defaults + \fontseries{% + \ifx\f@family\rmdef@ult \bfseries@rm + \else\ifx\f@family\sfdef@ult \bfseries@sf + \else\ifx\f@family\ttdef@ult \bfseries@tt +% \end{macrocode} +% If not \cs{bfdefault} is used. +% \begin{macrocode} + \else \bfdefault + \fi\fi\fi + }% + \selectfont +} +% \end{macrocode} +% \end{macro} + + + +% \begin{macro}{\mdseries} +% This document command switches to the medium series. +% \begin{macrocode} +\DeclareRobustCommand\mdseries{% + \not@math@alphabet\mdseries\relax + \expand@font@defaults + \fontseries{% + \ifx\f@family\rmdef@ult \mdseries@rm + \else\ifx\f@family\sfdef@ult \mdseries@sf + \else\ifx\f@family\ttdef@ult \mdseries@tt + \else \mddefault + \fi\fi\fi + }% + \selectfont +} +% \end{macrocode} +% \end{macro} + + +% \begin{macro}{\rmfamily} +% Here are the document level commands for changing the main font +% families, or rather, here is a documented outline of the code, +% the actual code is then streamlined and somewhat generalized. +%\begin{verbatim} +%\DeclareRobustCommand\rmfamily{% +% \not@math@alphabet\rmfamily\mathrm +%\end{verbatim} +% If families are changed then we have to do a bit more work. +% In the original NFSS implementation +% a family change kept encoding, series shape and size unchanged +% but now we can't any +% longer simply reuse the current series value. Instead we may have +% to change it from one family default to the next. +%\begin{verbatim} +% \expand@font@defaults +%\end{verbatim} +% We have to do the testing while while the current family is still +% unchanged but we have to do the adjustment of the series after it +% got changed (because the new family might has different sets +% ofshapes available and we certainly don't want to see +% substituation going on. So we use \cs{target@series@value} to +% hold the target series (if any). +%\begin{verbatim} +% \let\target@series@value\@empty +%\end{verbatim} +% Thus, if the current family is the sans family +%\begin{verbatim} +% \ifx\f@family\sfdef@ult +%\end{verbatim} +% and if we using the medium series of the sans family +%\begin{verbatim} +% \ifx\f@series\mdseries@sf +%\end{verbatim} +% then lets switch to the medium series for the serif family +%\begin{verbatim} +% \let\target@series@value\mdseries@rm +%\end{verbatim} +% and if we use the bold series of the sans family switch to the +% bold default of the serif family: +%\begin{verbatim} +% \else\ifx\f@series\bfseries@sf \let\target@series@value\bfseries@rm +%\end{verbatim} +% However, the sans family may not have any specific defaults set, +% so we also compare with the overall defaults. +%\begin{verbatim} +% \else\ifx\f@series\mddef@ult \let\target@series@value\mdseries@rm +% \else\ifx\f@series\bfdef@ult \let\target@series@value\bfseries@rm +%\end{verbatim} +% If neither test was true we leave the series alone. This way a +% special manual setting such as \verb=\fontseries{lc}= is not +% undone if the family changes (of course there may not be any +% support for it in the new family but then the NFSS +% substitution kicks in and sorts it out). +%\begin{verbatim} +% \fi\fi\fi\fi +% +%\end{verbatim} +% We need to do the same if the current family is the typewriter family: +%\begin{verbatim} +% \else\ifx\f@family\ttdef@ult +% \ifx\f@series\mdseries@tt \let\target@series@value\mdseries@rm +% \else\ifx\f@series\bfseries@tt \let\target@series@value\bfseries@rm +% \else\ifx\f@series\mddef@ult \let\target@series@value\mdseries@rm +% \else\ifx\f@series\bfdef@ult \let\target@series@value\bfseries@rm +% \fi\fi\fi\fi +% \fi\fi +%\end{verbatim} +% With these preparations for series out of the way we can now +% change the font family to \cs{rmdefault}. +%\begin{verbatim} +% \fontfamily\rmdefault +%\end{verbatim} +% +% If \cs{target@series@value} is still empty there is nothing more +% to do other than selecting the new family. However, if not then +% we should update the font series now as well. But there is one +% further subtle issue. We may not have loaded an \texttt{.fd} file +% for our target font family yet. In the past that was done in +% \cs{selectfont} if necessary but since we are now doing all the +% comparisons in \cs{fontseries} we need to make sure that the font +% family specifications are already loaded prior to calling +% \cs{fontseries}. +%\begin{verbatim} +% \ifx\target@series@value\@empty \else +% \maybe@load@fontshape +%\end{verbatim} +% Updating the series in this case means directly changing +% \cs{f@series} to the target value. We don't want to go through +% \cs{fontseries} because that would apply the mappings and then +% \texttt{bx + b} would keep \texttt{bx} instead of changing to +% \texttt{b} as desired. +% as +%\begin{verbatim} +% \let\f@series\target@series@value +% \fi +% \selectfont} +%\end{verbatim} +% +% So now for the real definition: most of the code above gets +% delegated to a helper command \cs{prepare@family@series@update} +% so that the definition becomes again fairly short. In addition we +% add a hook, mainly for our Japanese friends so that the code can +% be extended prior to the call to \cs{selectfont}. +% +% \changes{v3.1f}{2020/01/11}{Streamlined implementation with hook} +% \begin{macrocode} +\DeclareRobustCommand\rmfamily{% + \not@math@alphabet\rmfamily\mathrm +% \end{macrocode} +% This holds all the code discussed above, first argument is the +% meta family, i.e., \texttt{rm} in this case, and second argument +% is the default family name, e.g., \texttt{cmr} indirectly +% accessed via \cs{rmdefault}. This is calling \cs{fontfamily} and +% if necessary \cs{fontseries} as outline above. +% \begin{macrocode} + \prepare@family@series@update{rm}\rmdefault +% \end{macrocode} +% The comes the hook code (by default a no-op) and finally the call +% to \cs{selectfont}. +% \begin{macrocode} + \@rmfamilyhook + \selectfont} +% \end{macrocode} +% +% \begin{macro}{\sffamily} +% \begin{macro}{\ttfamily} +% The definitions for \cs{sffamily} and \cs{ttfamily} are similar, +% the differences are only in what font families get checked. +% \changes{v3.1f}{2020/01/11}{Streamlined implementation with hook} +% \begin{macrocode} +\DeclareRobustCommand\sffamily{% + \not@math@alphabet\sffamily\mathsf + \prepare@family@series@update{sf}\sfdefault + \@sffamilyhook + \selectfont} +% \end{macrocode} +% +% \changes{v3.1f}{2020/01/11}{Streamlined implementation with hook} +% \begin{macrocode} +\DeclareRobustCommand\ttfamily{% + \not@math@alphabet\ttfamily\mathtt + \prepare@family@series@update{tt}\ttdefault + \@ttfamilyhook + \selectfont} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% \begin{macro}{\@rmfamilyhook} +% \begin{macro}{\@sffamilyhook} +% \begin{macro}{\@ttfamilyhook} +% By default the hooks do nothing. +% \begin{macrocode} +\let\@rmfamilyhook\@empty +\let\@sffamilyhook\@empty +\let\@ttfamilyhook\@empty +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} + + + +% \begin{macro}{\prepare@family@series@update} +% This is core command that prepares for the family update. The big +% difference to the documented code above is that the nested +% \cs{ifx} statements seem to be missing. Instead we loop through +% an internal list that holds the names of the three meta +% families. This approach allows us to extend the mechanism at a +% later stage to allow for additional named meta families. +% +% \begin{macro}{\@meta@family@list} +% Here is the current definition of that list: +% \begin{macrocode} +\def\@meta@family@list{\@elt{rm}\@elt{sf}\@elt{tt}} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\def\prepare@family@series@update#1#2{% + \expand@font@defaults +% \end{macrocode} +% We prepare for changing the current series. We have to find it +% before changing the family as discussed above. +% \begin{macrocode} + \let\target@series@value\@empty + \def\target@meta@family@value{#1}% +% \end{macrocode} +% To find it we loop over the meta family list with a suitable +% definition of \cs{@elt}. +% \begin{macrocode} + \let\@elt\update@series@target@value + \@meta@family@list + \let\@elt\relax +% \end{macrocode} +% That will figure out the correct series value to use without updating +% it. Now we can change the family. +% \begin{macrocode} + \fontfamily#2% +% \end{macrocode} +% After that we update the series. That code is again like the one +% above. +% \begin{macrocode} + \ifx\target@series@value\@empty + \else + \maybe@load@fontshape + \let\f@series\target@series@value + \fi +} +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macro}{\update@series@target@value} +% In this macro used in the look you basically find the nested +% \cs{ifx}s from the outline above. The only difference is that is +% it is parameterized instead of being written out and only for one +% block of tests because the code is called reatedly when looping +% over the meta family list. From the list we get each meta family +% name in turn. +% \begin{macrocode} +\def\update@series@target@value#1{% +% \end{macrocode} +% There is one additional test at the beginning, because the list +% contains all meta families and we need to ignore the case where +% current one from the list and target one are identical. +% \begin{macrocode} + \def\@reserveda{#1}% + \ifx\target@meta@family@value\@reserveda % rm -> rm do nothing + \else +% \end{macrocode} +% We only ``do'' something if the current font family matches the +% current meta family. +% \begin{macrocode} + \expandafter\ifx\csname#1def@ult\endcsname\f@family +% \end{macrocode} +% If that's the case we know that this is the block that applies +% (only one meta family can match). So to speed things up we +% change \cs{@elt} so that the rest of the loop gets gobbled. +% \begin{macrocode} + \let\@elt\@gobble +% \end{macrocode} +% Then we try to find the right new value for the series (as +% explained above). The two macros defined first are only there +% because we now need to use \cs{csname} and this way the code will +% be a little faster. +% \begin{macrocode} + \expandafter\let\expandafter\@reservedb + \csname mdseries@\target@meta@family@value\endcsname + \expandafter\let\expandafter\@reservedc + \csname bfseries@\target@meta@family@value\endcsname +% \end{macrocode} +% This here is now identical to the nested \cs{ifx} block from the +% outline, except that it there appeared twice in +% \cs{rmfamily}. This is now covered by looping and stopping the +% loop when a match was found. +% \begin{macrocode} + \expandafter\ifx\csname mdseries@#1\endcsname\f@series + \let\target@series@value\@reservedb + \else\expandafter\ifx\csname bfseries@#1\endcsname\f@series + \let\target@series@value\@reservedc + \else\ifx\f@series\mddef@ult \let\target@series@value\@reservedb + \else\ifx\f@series\bfdef@ult \let\target@series@value\@reservedc + \fi\fi\fi\fi + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% +% +% +% +% +% +% +% +% +% \begin{macro}{\init@series@setup} +% This is code to be run at begin document \ldots +% \begin{macrocode} +\def\init@series@setup{% +% \end{macrocode} +% +% We only want \texttt{bx} in \cs{bfseries@rm} if the roman font is +% Computer Modern or Latin Modern, otherwise it should be +% \texttt{b}. It was set to \texttt{bx} in the kernel so that any +% font use with the default families in the preamble get this +% value. Now at the real document start we check if the fonts have +% been changed. If there was a \cs{DeclareFontSeriesDefault} +% declaration or \cs{bfseries@rm} was directly altered then it +% differs from \cs{bfseries@rm@kernel} and we do nothing. +% Otherwise we check if \cs{rmdefault} is one of the CM/LM font +% families and if so we keep \texttt{bx} otherwise we change it to +% \texttt{b}. +% +% This approach doesn't cover one case: CM/LM got changed to a +% different family that supports \texttt{bx}, but the support +% package for that family used \verb=\def\bfseries@rm{bx}= instead +% of using \cs{DeclareFontSeriesDefault}. In that case the code +% here changes it to \texttt{b}. Solution: use the +% \cs{DeclareFontSeriesDefault} interface. +% \begin{macrocode} + \ifx\bfseries@rm@kernel\bfseries@rm + \expandafter\in@\expandafter{\rmdefault}{cmr,cmss,cmtt,lcmss,lcmtt,lmr,lmss,lmtt}% + \ifin@ \else \def\bfseries@rm{b}\fi\fi +% \end{macrocode} +% Same approach for \cs{bfseries@sf} and \cs{bfseries@tt}: +% \begin{macrocode} + \ifx\bfseries@sf@kernel\bfseries@sf + \expandafter\in@\expandafter{\sfdefault}{cmr,cmss,cmtt,lcmss,lcmtt,lmr,lmss,lmtt}% + \ifin@ \else \def\bfseries@sf{b}\fi\fi + \ifx\bfseries@tt@kernel\bfseries@tt + \expandafter\in@\expandafter{\ttdefault}{cmr,cmss,cmtt,lcmss,lcmtt,lmr,lmss,lmtt}% + \ifin@ \else \def\bfseries@tt{b}\fi\fi +% \end{macrocode} +% +% If the document preamble has changed the \cs{familydefault} or if +% the if the \cs{rmdefault} contains a new font family, we have to +% adjust the series defaults accordingly, before starting +% typesetting. +% +% On the other hand if we still typeset in CM or LM then +% \cs{bfdefault} is wrong since it is now saying \texttt{b} and not +% \texttt{bx}. + +% To fix this we run \cs{rmfamily}, \cs{sffamily} or +% \cs{ttfamily} depending on the situation and this will correct +% the setup for us. +% \begin{macrocode} + \expand@font@defaults + \ifx\famdef@ult\rmdef@ult \rmfamily + \else\ifx\famdef@ult\sfdef@ult \sffamily + \else\ifx\famdef@ult\ttdef@ult \ttfamily + \fi\fi\fi +}% +% \end{macrocode} +% \end{macro} +% +% +% +% As the kernel code now implements the same functionality as +% \textsf{mweights}, albeit internally coded slightly differently, +% that package shouldn't be loaded any more. We therefore pretend +% that it already got loaded. Thus, a font package that tries to +% load it and then sets \cs{mdseries@..}, etc.\ will continue to +% work but will now use the kernel code. +% +% Of course, mid-term such package should probably use +% \cs{DeclareFontSeriesDefault} instead of making using low-level +% definitions. +% +% \begin{macrocode} +\expandafter\let\csname ver@mweights.sty\endcsname\fmtversion +% \end{macrocode} +% +% +% +% \begin{macrocode} +% +%\EndIncludeInRelease +%\IncludeInRelease{0000/00/00}% +% {\DeclareFontSeriesDefault}{Custom series}% +% +%\let\DeclareFontSeriesDefault\@undefined +%\let\bfseries@rm\@undefined +%\let\bfseries@sf\@undefined +%\let\bfseries@tt\@undefined +%\let\bfseries@rm@kernel\@undefined +%\let\bfseries@sf@kernel\@undefined +%\let\bfseries@tt@kernel\@undefined +%\let\mdseries@rm\@undefined +%\let\mdseries@sf\@undefined +%\let\mdseries@tt\@undefined +%\let\expand@font@defaults\@undefined +%\expandafter\let\csname ver@mweights.sty\endcsname\@undefined +% +%\DeclareRobustCommand\bfseries +% {\not@math@alphabet\bfseries\mathbf +% \fontseries\bfdefault\selectfont} +%\DeclareRobustCommand\mdseries +% {\not@math@alphabet\mdseries\relax +% \fontseries\mddefault\selectfont} +%\DeclareRobustCommand\rmfamily +% {\not@math@alphabet\rmfamily\mathrm +% \fontfamily\rmdefault\selectfont} +%\DeclareRobustCommand\sffamily +% {\not@math@alphabet\sffamily\mathsf +% \fontfamily\sfdefault\selectfont} +%\DeclareRobustCommand\ttfamily +% {\not@math@alphabet\ttfamily\mathtt +% \fontfamily\ttdefault\selectfont} +% +%\let\@rmfamilyhook\@undefined +%\let\@sffamilyhook\@undefined +%\let\@ttfamilyhook\@undefined +%\let\@meta@family@list\@undefined +%\let\prepare@family@series@update\@undefined +%\let\update@series@target@value\@undefined +% +% \end{macrocode} +% This is always called in \cs{document} so don't make it undefined. +% \begin{macrocode} +%\let\init@series@setup\relax +% +%\EndIncludeInRelease +%<*2ekernel> +% \end{macrocode} + +% +% +% +% \section{Supporting nested emphasis} +% +% By default \LaTeXe{} supports two levels of nested emphasis: if +% the current font has an upright shape then it switches to +% \cs{itshape} otherwise to \cs{eminnershape} (which defaults to +% \cs{upshape}). This means nested emphasis will ocssilate between +% italic and upright shapes. +% +% Sometimes it would be nice to allow for a more lengthly sequence, +% but instead of providing a fixed one \LaTeX{} now offers a +% general mechanism that allows to define arbitrary sequences. +% +% \DescribeMacro\DeclareEmphSequence +% \DescribeMacro\emforce +% +% This declaration expects a comma separated list of (font) change +% declarations corresponding to increasing levels of emphasis. +% The mechanism tries to be ``smart'' and verifies that the +% declarations actually alter the font. If not it will ignore this +% level and tries the next one---the assumption being that +% there was a manual font change in the document to the font that +% is now supposed to be used for emphasis. Of course, this only +% works if the declarations in the list actually change the font +% and not, say, just the color. +% In such a case one has to use \cs{emforce} to which directs the +% mechanism to use the level even if the font attributes haven't changed. +% +% \DescribeMacro\emreset +% If the nesting is so deep, that the specified levels are +% exhausted then \cs{emreset} is used as a final set of +% declarations (which by default returns +% back to the upright shape). Any additional nesting levels will +% then reuse the list from its beginning. +% +% +% +% \begin{macro}{\DeclareEmphSequence} +% +% \cs{DeclareEmphSequence} expects a clist of declaration. Spaces in the +% argument are dropped to avoid surious spaces in the output. The +% declarations are additive. At the very end the shape is reset +% using |\emreset| and |\emforce| so that this case is never +% skipped.\footnote{Maybe we should not add \cs{emforce} but allow +% that case to be skipped as well. Of course, that might result in +% an endless loop if somebody defines a sequence without any font +% change and without \cs{emforce} but \ldots} +% Further nested calls restart at the beginning. +% \changes{v3.1e}{2019/12/17}{Provide \cs{emph} sequences} +% \begin{macrocode} +% +%<*2ekernel|latexrelease> +%\IncludeInRelease{2020/02/02}% +% {\DeclareEmphSequence}{Nested emph}% +\def\DeclareEmphSequence#1{% + \protected@edef\emfontdeclare@clist{\zap@space#1, \@empty\emforce\emreset}% +} +% \end{macrocode} +% By default the it is empty, in which case \cs{eminnershape} is +% used by \LaTeX. +% \begin{macrocode} +\let\emfontdeclare@clist\@empty +% \end{macrocode} +% \end{macro} + + + +% \begin{macro}{\emrest} +% Reset the font to upright and upper/lower case. With the default rules +% using \cs{shapedefault} does that for us but to be on the safe side we +% do it like this: +% \begin{macrocode} +\DeclareRobustCommand\emreset{\upshape\ulcshape} +% \end{macrocode} +% \end{macro} + + + +% \begin{macro}{\em} +% The new definition for \cs{em} (and implicitly \cs{emph} is like +% it was before if \cs{emfontdeclare@clist} is empty. +% \begin{macrocode} +\DeclareRobustCommand\em{% + \@nomath\em + \ifx\emfontdeclare@clist\@empty + \ifdim \fontdimen\@ne\font >\z@ + \eminnershape \else \itshape \fi + \else +% \end{macrocode} +% But if not we use the list to decide how to do emphasis. +% +% We use the current font to check if the declarations have any +% effect, so even a size change is allowed and identified as a +% modification (but a color change, for example, isn't). So first +% we save the current status. +% \begin{macrocode} + \edef\em@currfont{\csname\curr@fontshape/\f@size\endcsname}% +% \end{macrocode} +% Then we grab the next element from the list and check if it can +% be used. +% \begin{macrocode} + \expandafter\do@emfont@update\emfontdeclare@clist\do@emfont@update + \fi +} +% \end{macrocode} +% +% \begin{macrocode} +\def\eminnershape{\upshape} +% \end{macrocode} +% \end{macro} +% +% +% +% \begin{macro}{\do@emfont@update} +% We know that the list (if not empty) has at least 2 elements +% separated by a comma, so we pick up the first in \texttt{\#1} and +% the rest in \texttt{\#2}. +% \begin{macrocode} +\def\do@emfont@update#1,#2\do@emfont@update{% +% \end{macrocode} +% First action is to alter the list and move the first entry to the end +% \begin{macrocode} + \def\emfontdeclare@clist{#2,#1}% +% \end{macrocode} +% Then we execute current declaration. Appending |\selectfont| means one +% can write just |\fontshape{it}}| and that works then too. +% \begin{macrocode} +% \typeout{Use: \detokenize{#1}}% + #1\selectfont +% \end{macrocode} +% We then compare the current font with our saved version, but with +% a slight twist: we add \cs{em@force} at the end of the +% name. Normally this is empty so has no effect but if there was an +% \cs{emforce} as part of \texttt{\#1} it will append a |/| to the +% font name (making it invalid) thus this will then always fail the +% test. +% +% If the test fails we are done and the declarations will be used. +% Otherwise we will try the next declaration in the sequence. +% \begin{macrocode} + \expandafter\ifx\csname \curr@fontshape/\f@size\em@force +% \end{macrocode} +% For the comparison with \cs{ifx} we have to exand +% \cs{em@currfont} once as the relevant info is inside. +% \begin{macrocode} + \expandafter\endcsname + \em@currfont + \expandafter\do@emfont@update\emfontdeclare@clist\do@emfont@update +% \end{macrocode} +% If \cs{emforce} was used, we have to undo its effect: +% \begin{macrocode} + \else + \let\em@force\@empty + \fi +} +% \end{macrocode} +% \end{macro} + + + +% \begin{macro}{\emforce} +% \begin{macro}{\em@force} +% The definition of \cs{emforce} is simple: change \cs{em@force} to +% make the above test always invalid. +% \begin{macrocode} +\protected\def\emforce{\def\em@force{/}} +\let\em@force\@empty +% +%\EndIncludeInRelease +% \end{macrocode} +% \end{macro} +% \end{macro} + + + % % \begin{macro}{\em} % \changes{v1.2b}{1990/01/28}{Call to \cs{@nomath} added.} % \changes{v3.1a}{2015/01/09}{Allow \cs{emph} to produce small caps (latexrelease)} % \begin{macro}{\eminnershape} % \changes{v3.1a}{2015/01/09}{macro added (latexrelease)} +% +% These are the older definitions for \cs{em}, prior to 2020. +% % We also have to define the {\em emphasize\/} font change command % (i.e.\ |\em|). This command will look is the current font is % sloped (i.e.\ has a positive |\fontdimen1|) and will then % select either |\upshape| or |\itshape|. % \begin{macrocode} -% -%\IncludeInRelease{2015/01/01}{\eminnershape}{\eminnershape}% -%<*2ekernel|latexrelease> -\DeclareRobustCommand\em - {\@nomath\em \ifdim \fontdimen\@ne\font >\z@ - \eminnershape \else \itshape \fi}% -% \end{macrocode} -% -% \begin{macrocode} -\def\eminnershape{\upshape}% -% +%\IncludeInRelease{2015/01/01}{\DeclareEmphSequence}{Nested emph}% +%\let\DeclareEmphSequence\@undefined +%\let\emfontdeclare@clist\@undefined +%\let\emreset\@undefined +%\let\do@emfont@update\@undefined +%\let\emforce\@undefined +%\let\em@force\@undefined +% +%\DeclareRobustCommand\em +% {\@nomath\em \ifdim \fontdimen\@ne\font >\z@ +% \eminnershape \else \itshape \fi}% %\EndIncludeInRelease -%\IncludeInRelease{0000/00/00}{\eminnershape}{\eminnershape}% +% +%\IncludeInRelease{0000/00/00}{\DeclareEmphSequence}{Nested emph}% %\DeclareRobustCommand\em % {\@nomath\em \ifdim \fontdimen\@ne\font >\z@ % \upshape \else \itshape \fi}% @@ -230,6 +1076,12 @@ % \end{macro} % % + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% % \begin{macro}{\not@math@alphabet} % This function generates an error message when it is called in % math mode. The same function should be defined in @@ -331,35 +1183,6 @@ % \end{macro} % % -% \begin{macro}{\oldstylenums} -% This macro implements old style numerals but only works if we -% assume that the standard math fonts are used. Thus it needs -% changing in case other math encodings are used. -% \begin{macrocode} -\DeclareRobustCommand\oldstylenums[1]{% - \begingroup -% \end{macrocode} -% Provide spacing using the interword space of the current font. -% \begin{macrocode} - \spaceskip\fontdimen\tw@\font -% \end{macrocode} -% Then switch to the math italic font. We don't change the current -% value of |\f@series| which means that you can use bold numerals -% if |\bfseries| is in force. As family we use |\rmdefault| which -% means that this only works if there exist an |OML| encoded -% version of that font or rather a corresponding |.fd| file (which -% is the case for standard \LaTeX{} fonts even though they only -% contain substitutions). -% \changes{v3.0j}{1999/02/12}{Use \cs{rmdefault} instead of \texttt{cmm} -% (pr/2954)} -% \begin{macrocode} - \usefont{OML}{\rmdefault}{\f@series}{it}% - \mathgroup\symletters #1% - \endgroup -} -% \end{macrocode} -% \end{macro} -% % \begin{macro}{\hexnumber@} % To set up \LaTeX's special math character % definitions we first provide a macro to generate hexadecimal @@ -528,6 +1351,7 @@ \let\@addtofilelist\@gobble % \end{macrocode} % +% % Ditto for math although I don't think that we will get a lot of % customisation :-) % \begin{macrocode} diff --git a/macros/latex-dev/base/ltfsstrc.dtx b/macros/latex-dev/base/ltfsstrc.dtx index 05dafa20c6..bb82627de1 100644 --- a/macros/latex-dev/base/ltfsstrc.dtx +++ b/macros/latex-dev/base/ltfsstrc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -34,10 +34,10 @@ % %\NeedsTeXFormat{LaTeX2e}[1995/05/16] %\ProvidesPackage{tracefnt} -% [2015/02/21 v3.0k Standard LaTeX package (font tracing)] +% [2019/10/11 v3.0l Standard LaTeX package (font tracing)] % \fi % \ProvidesFile{ltfsstrc.dtx} -% [2015/02/21 v3.0k LaTeX Kernel (NFSS tracing)] +% [2019/10/11 v3.0l LaTeX Kernel (NFSS tracing)] % % \iffalse %<+checkmem>\CHECKMEM @@ -1731,7 +1731,7 @@ % the optional argument (if present) is ignored. The font encoding % scheme cannot be changed. Therefore, the first thing we do is to % prepend the encoding scheme. -% \changes{v2.0b}{1992/07/26}{} +% {documentation fixes} % \begin{macrocode} \DeclareSizeFunction{sub}{\sub@sfcnt\@font@warning} \DeclareSizeFunction{ssub}{\sub@sfcnt\@font@info} @@ -1787,6 +1787,40 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\@font@aliasinfo} +% \changes{v3.0l}{2019/10/11}{Added 'alias' size function} +% Sometimes a substitution is only done to map a long font name to +% a standard shape or series, e.g., +%\begin{verbatim} +%\DeclareFontShape{T1}{Roboto-LF}{b}{it}{<-> alias * Roboto-LF/bold/it}{} +%\end{verbatim} +% Using the \texttt{ssub} function in that case will give a strange +% (and incorrect) warning. As an alternative we therefore offer the +% size function \texttt{alias}. It will still add some info into +% the \texttt{.log} file, but no longer complains that the font +% shape is not available. It is implemented by grabbing the default +% warning text and replacing it with a new one. +% \begin{macrocode} +% +%<*2ekernel|latexrelease> +%\IncludeInRelease{2020/02/01}% +% {\@font@aliasinfo}{alias size function}% +\DeclareSizeFunction{alias}{\sub@sfcnt\@font@aliasinfo} +\def\@font@aliasinfo#1{% + \@font@info{Font\space shape\space `\curr@fontshape'\space + aliased\space to\MessageBreak `\mandatory@arg'}% +} +% +%\EndIncludeInRelease +%\IncludeInRelease{0000/00/00}% +% {\@font@aliasinfo}{alias size function}% +%\let\s@fct@alias\@undefined +%\let\@font@aliasinfo\@undefined +% +%\EndIncludeInRelease +%<*2ekernel> +% \end{macrocode} +% \end{macro} % % \begin{macro}{\s@fct@subf} % The |subf| size function allows substitution of another font. The diff --git a/macros/latex-dev/base/lthyphen.dtx b/macros/latex-dev/base/lthyphen.dtx index ba4b018dce..71ab081c66 100644 --- a/macros/latex-dev/base/lthyphen.dtx +++ b/macros/latex-dev/base/lthyphen.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltidxglo.dtx b/macros/latex-dev/base/ltidxglo.dtx index 19349c17dc..dcb88e83e9 100644 --- a/macros/latex-dev/base/ltidxglo.dtx +++ b/macros/latex-dev/base/ltidxglo.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltlength.dtx b/macros/latex-dev/base/ltlength.dtx index 7b72946d6e..f5b63ed35e 100644 --- a/macros/latex-dev/base/ltlength.dtx +++ b/macros/latex-dev/base/ltlength.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltlists.dtx b/macros/latex-dev/base/ltlists.dtx index 4dcbb8b56a..d1cafa6cd0 100644 --- a/macros/latex-dev/base/ltlists.dtx +++ b/macros/latex-dev/base/ltlists.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -772,13 +772,13 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\item} % \changes{LaTeX2.09}{1992/09/18} % {(RmS) Added warning if \cs{item} is used in math mode} % \changes{v1.0c}{1994/04/28} % {Replaced \cs{@ltxnomath} by \cs{@inmatherr}} % \changes{v1.0d}{1994/05/03} % {Removed superfluous braces} -% \begin{macro}{\item} % \begin{macrocode} \def\item{% \@inmatherr\item diff --git a/macros/latex-dev/base/ltlogos.dtx b/macros/latex-dev/base/ltlogos.dtx index ab20b60c59..6784cb41c0 100644 --- a/macros/latex-dev/base/ltlogos.dtx +++ b/macros/latex-dev/base/ltlogos.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltluatex.dtx b/macros/latex-dev/base/ltluatex.dtx index 41f2344a37..51fa46f695 100644 --- a/macros/latex-dev/base/ltluatex.dtx +++ b/macros/latex-dev/base/ltluatex.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2015-2019 +% Copyright (C) 2015-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltluatex.pdf b/macros/latex-dev/base/ltluatex.pdf index 216eb085ca..1b9dde398c 100644 Binary files a/macros/latex-dev/base/ltluatex.pdf and b/macros/latex-dev/base/ltluatex.pdf differ diff --git a/macros/latex-dev/base/ltmath.dtx b/macros/latex-dev/base/ltmath.dtx index c38f42b4f9..379dbf1afd 100644 --- a/macros/latex-dev/base/ltmath.dtx +++ b/macros/latex-dev/base/ltmath.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltmiscen.dtx b/macros/latex-dev/base/ltmiscen.dtx index f60a4090b6..1c05a08ec5 100644 --- a/macros/latex-dev/base/ltmiscen.dtx +++ b/macros/latex-dev/base/ltmiscen.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -710,7 +710,7 @@ % \begin{macrocode} % %<*2ekernel|latexrelease> -%\IncludeInRelease{2020/02/01}% +%\IncludeInRelease{2020/02/02}% % {\@centercr}{Make robust}% \protected\def\@centercr{\ifhmode \unskip\else \@nolnerr\fi \par\@ifstar{\nobreak\@xcentercr}\@xcentercr} diff --git a/macros/latex-dev/base/ltnews.pdf b/macros/latex-dev/base/ltnews.pdf index a23406531a..4629bf3c6b 100644 Binary files a/macros/latex-dev/base/ltnews.pdf and b/macros/latex-dev/base/ltnews.pdf differ diff --git a/macros/latex-dev/base/ltnews.tex b/macros/latex-dev/base/ltnews.tex index 9f8a1a715b..a771dc3763 100644 --- a/macros/latex-dev/base/ltnews.tex +++ b/macros/latex-dev/base/ltnews.tex @@ -1,7 +1,7 @@ % \iffalse meta-comment % % Copyright 2006, 2009, 2011, 2014 Heiko Oberdiek -% Copyright (C) 2014-2019 The LaTeX3 Project +% Copyright (C) 2014-2020 The LaTeX3 Project % % This file is part of the LaTeX base system. % ------------------------------------------- @@ -32,7 +32,7 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesFile{ltnews.tex}% - [2015/02/16 v1.4b Master file for ltnews*.tex (LaTeX Project)] + [2020/01/09 v1.4c Master file for ltnews*.tex (LaTeX Project)] \providecommand*{\lastissue}{31} @@ -83,6 +83,7 @@ \RequirePackage{hyperref} \hypersetup{colorlinks} \RequirePackage{bookmark} +\RequirePackage{multicol} \makeatletter @@ -189,7 +190,11 @@ \def\y{|graphicx}% \ifx\x\y \else - \@latex@error{ltnews.tex: \string\usepackage[#1]{#2} found}\@ehc + \def\y{|multicol}% + \ifx\x\y + \else + \@latex@error{ltnews.tex: \string\usepackage[#1]{#2} found}\@ehc + \fi \fi \fi \fi diff --git a/macros/latex-dev/base/ltnews01.pdf b/macros/latex-dev/base/ltnews01.pdf index 5406ef38b5..53568f1ab9 100644 Binary files a/macros/latex-dev/base/ltnews01.pdf and b/macros/latex-dev/base/ltnews01.pdf differ diff --git a/macros/latex-dev/base/ltnews01.tex b/macros/latex-dev/base/ltnews01.tex index 9df213931f..9f0639b6db 100644 --- a/macros/latex-dev/base/ltnews01.tex +++ b/macros/latex-dev/base/ltnews01.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltnews02.pdf b/macros/latex-dev/base/ltnews02.pdf index cbe548dd31..2dd68c1783 100644 Binary files a/macros/latex-dev/base/ltnews02.pdf and b/macros/latex-dev/base/ltnews02.pdf differ diff --git a/macros/latex-dev/base/ltnews02.tex b/macros/latex-dev/base/ltnews02.tex index ee386cb2e0..5b1c665282 100644 --- a/macros/latex-dev/base/ltnews02.tex +++ b/macros/latex-dev/base/ltnews02.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltnews03.pdf b/macros/latex-dev/base/ltnews03.pdf index 362cb19388..c13742cc6f 100644 Binary files a/macros/latex-dev/base/ltnews03.pdf and b/macros/latex-dev/base/ltnews03.pdf differ diff --git a/macros/latex-dev/base/ltnews03.tex b/macros/latex-dev/base/ltnews03.tex index 8784c3b8e0..46d1bdc52c 100644 --- a/macros/latex-dev/base/ltnews03.tex +++ b/macros/latex-dev/base/ltnews03.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltnews04.pdf b/macros/latex-dev/base/ltnews04.pdf index 4523c88d1b..e29a80e424 100644 Binary files a/macros/latex-dev/base/ltnews04.pdf and b/macros/latex-dev/base/ltnews04.pdf differ diff --git a/macros/latex-dev/base/ltnews04.tex b/macros/latex-dev/base/ltnews04.tex index b42e10da57..fe9cb35a9c 100644 --- a/macros/latex-dev/base/ltnews04.tex +++ b/macros/latex-dev/base/ltnews04.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltnews05.pdf b/macros/latex-dev/base/ltnews05.pdf index d2ef5b415c..5ac5daefe5 100644 Binary files a/macros/latex-dev/base/ltnews05.pdf and b/macros/latex-dev/base/ltnews05.pdf differ diff --git a/macros/latex-dev/base/ltnews05.tex b/macros/latex-dev/base/ltnews05.tex index dfa9e23d78..4b31845f35 100644 --- a/macros/latex-dev/base/ltnews05.tex +++ b/macros/latex-dev/base/ltnews05.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltnews06.pdf b/macros/latex-dev/base/ltnews06.pdf index f49ba834d4..483d8d8234 100644 Binary files a/macros/latex-dev/base/ltnews06.pdf and b/macros/latex-dev/base/ltnews06.pdf differ diff --git a/macros/latex-dev/base/ltnews06.tex b/macros/latex-dev/base/ltnews06.tex index 250675ea2e..a5134441f9 100644 --- a/macros/latex-dev/base/ltnews06.tex +++ b/macros/latex-dev/base/ltnews06.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltnews07.pdf b/macros/latex-dev/base/ltnews07.pdf index 9e60136533..32bd59914c 100644 Binary files a/macros/latex-dev/base/ltnews07.pdf and b/macros/latex-dev/base/ltnews07.pdf differ diff --git a/macros/latex-dev/base/ltnews07.tex b/macros/latex-dev/base/ltnews07.tex index 6c08629d67..0f0e1fa385 100644 --- a/macros/latex-dev/base/ltnews07.tex +++ b/macros/latex-dev/base/ltnews07.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltnews08.pdf b/macros/latex-dev/base/ltnews08.pdf index bde46974f0..31206f3f0a 100644 Binary files a/macros/latex-dev/base/ltnews08.pdf and b/macros/latex-dev/base/ltnews08.pdf differ diff --git a/macros/latex-dev/base/ltnews08.tex b/macros/latex-dev/base/ltnews08.tex index 891d13b302..ce84df9125 100644 --- a/macros/latex-dev/base/ltnews08.tex +++ b/macros/latex-dev/base/ltnews08.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltnews09.pdf b/macros/latex-dev/base/ltnews09.pdf index d3617ff94f..29f6bd8e06 100644 Binary files a/macros/latex-dev/base/ltnews09.pdf and b/macros/latex-dev/base/ltnews09.pdf differ diff --git a/macros/latex-dev/base/ltnews09.tex b/macros/latex-dev/base/ltnews09.tex index 61cb8ced9c..975a69302c 100644 --- a/macros/latex-dev/base/ltnews09.tex +++ b/macros/latex-dev/base/ltnews09.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltnews10.pdf b/macros/latex-dev/base/ltnews10.pdf index 9d477c4a64..8ddcc903a9 100644 Binary files a/macros/latex-dev/base/ltnews10.pdf and b/macros/latex-dev/base/ltnews10.pdf differ diff --git a/macros/latex-dev/base/ltnews10.tex b/macros/latex-dev/base/ltnews10.tex index 3214260a6a..49129ad71d 100644 --- a/macros/latex-dev/base/ltnews10.tex +++ b/macros/latex-dev/base/ltnews10.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltnews11.pdf b/macros/latex-dev/base/ltnews11.pdf index d2f9f12f5a..a0cd85920e 100644 Binary files a/macros/latex-dev/base/ltnews11.pdf and b/macros/latex-dev/base/ltnews11.pdf differ diff --git a/macros/latex-dev/base/ltnews11.tex b/macros/latex-dev/base/ltnews11.tex index e39ff4cc86..64715a0c26 100644 --- a/macros/latex-dev/base/ltnews11.tex +++ b/macros/latex-dev/base/ltnews11.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltnews12.pdf b/macros/latex-dev/base/ltnews12.pdf index 1eb1f713a5..786c3fb845 100644 Binary files a/macros/latex-dev/base/ltnews12.pdf and b/macros/latex-dev/base/ltnews12.pdf differ diff --git a/macros/latex-dev/base/ltnews12.tex b/macros/latex-dev/base/ltnews12.tex index ede8bb5362..360ed35de4 100644 --- a/macros/latex-dev/base/ltnews12.tex +++ b/macros/latex-dev/base/ltnews12.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltnews13.pdf b/macros/latex-dev/base/ltnews13.pdf index f4d8242ec8..1d86f2a1d9 100644 Binary files a/macros/latex-dev/base/ltnews13.pdf and b/macros/latex-dev/base/ltnews13.pdf differ diff --git a/macros/latex-dev/base/ltnews13.tex b/macros/latex-dev/base/ltnews13.tex index 65e09b9871..d84bd7824f 100644 --- a/macros/latex-dev/base/ltnews13.tex +++ b/macros/latex-dev/base/ltnews13.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltnews14.pdf b/macros/latex-dev/base/ltnews14.pdf index 2bd1505521..2710da0d0a 100644 Binary files a/macros/latex-dev/base/ltnews14.pdf and b/macros/latex-dev/base/ltnews14.pdf differ diff --git a/macros/latex-dev/base/ltnews14.tex b/macros/latex-dev/base/ltnews14.tex index 0444d75689..f374800768 100644 --- a/macros/latex-dev/base/ltnews14.tex +++ b/macros/latex-dev/base/ltnews14.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltnews15.pdf b/macros/latex-dev/base/ltnews15.pdf index d6be28c34f..c59315e7a6 100644 Binary files a/macros/latex-dev/base/ltnews15.pdf and b/macros/latex-dev/base/ltnews15.pdf differ diff --git a/macros/latex-dev/base/ltnews15.tex b/macros/latex-dev/base/ltnews15.tex index 9c2d393c6b..487b399613 100644 --- a/macros/latex-dev/base/ltnews15.tex +++ b/macros/latex-dev/base/ltnews15.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltnews16.pdf b/macros/latex-dev/base/ltnews16.pdf index a958c52952..a00f7fc058 100644 Binary files a/macros/latex-dev/base/ltnews16.pdf and b/macros/latex-dev/base/ltnews16.pdf differ diff --git a/macros/latex-dev/base/ltnews16.tex b/macros/latex-dev/base/ltnews16.tex index 96ca1ddf68..49bddf84a2 100644 --- a/macros/latex-dev/base/ltnews16.tex +++ b/macros/latex-dev/base/ltnews16.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltnews17.pdf b/macros/latex-dev/base/ltnews17.pdf index f515036706..bb44c48413 100644 Binary files a/macros/latex-dev/base/ltnews17.pdf and b/macros/latex-dev/base/ltnews17.pdf differ diff --git a/macros/latex-dev/base/ltnews17.tex b/macros/latex-dev/base/ltnews17.tex index f55300f447..42c4d8401b 100644 --- a/macros/latex-dev/base/ltnews17.tex +++ b/macros/latex-dev/base/ltnews17.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltnews18.pdf b/macros/latex-dev/base/ltnews18.pdf index fca9a36a20..13a4e7cc33 100644 Binary files a/macros/latex-dev/base/ltnews18.pdf and b/macros/latex-dev/base/ltnews18.pdf differ diff --git a/macros/latex-dev/base/ltnews18.tex b/macros/latex-dev/base/ltnews18.tex index 33f0d7310d..bf41992fe5 100644 --- a/macros/latex-dev/base/ltnews18.tex +++ b/macros/latex-dev/base/ltnews18.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltnews19.pdf b/macros/latex-dev/base/ltnews19.pdf index a42783165a..21961f0012 100644 Binary files a/macros/latex-dev/base/ltnews19.pdf and b/macros/latex-dev/base/ltnews19.pdf differ diff --git a/macros/latex-dev/base/ltnews19.tex b/macros/latex-dev/base/ltnews19.tex index af99d329dd..a6f1fa9512 100644 --- a/macros/latex-dev/base/ltnews19.tex +++ b/macros/latex-dev/base/ltnews19.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltnews20.pdf b/macros/latex-dev/base/ltnews20.pdf index c810b80103..a2d03ead66 100644 Binary files a/macros/latex-dev/base/ltnews20.pdf and b/macros/latex-dev/base/ltnews20.pdf differ diff --git a/macros/latex-dev/base/ltnews21.pdf b/macros/latex-dev/base/ltnews21.pdf index f0a66f5964..8b01fdf485 100644 Binary files a/macros/latex-dev/base/ltnews21.pdf and b/macros/latex-dev/base/ltnews21.pdf differ diff --git a/macros/latex-dev/base/ltnews22.pdf b/macros/latex-dev/base/ltnews22.pdf index 702dd58e0f..1bbc82c1fd 100644 Binary files a/macros/latex-dev/base/ltnews22.pdf and b/macros/latex-dev/base/ltnews22.pdf differ diff --git a/macros/latex-dev/base/ltnews22.tex b/macros/latex-dev/base/ltnews22.tex index 65d7db900a..cef9497a19 100644 --- a/macros/latex-dev/base/ltnews22.tex +++ b/macros/latex-dev/base/ltnews22.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2015-2019 +% Copyright (C) 2015-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltnews23.pdf b/macros/latex-dev/base/ltnews23.pdf index eb38d64694..4b84e393a4 100644 Binary files a/macros/latex-dev/base/ltnews23.pdf and b/macros/latex-dev/base/ltnews23.pdf differ diff --git a/macros/latex-dev/base/ltnews23.tex b/macros/latex-dev/base/ltnews23.tex index 693e22de83..38a500531c 100644 --- a/macros/latex-dev/base/ltnews23.tex +++ b/macros/latex-dev/base/ltnews23.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2015-2019 +% Copyright (C) 2015-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltnews24.pdf b/macros/latex-dev/base/ltnews24.pdf index b6a7d8fb38..aae89aa0a3 100644 Binary files a/macros/latex-dev/base/ltnews24.pdf and b/macros/latex-dev/base/ltnews24.pdf differ diff --git a/macros/latex-dev/base/ltnews24.tex b/macros/latex-dev/base/ltnews24.tex index 6cba173b60..a3893ad409 100644 --- a/macros/latex-dev/base/ltnews24.tex +++ b/macros/latex-dev/base/ltnews24.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2015-2019 +% Copyright (C) 2015-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltnews25.pdf b/macros/latex-dev/base/ltnews25.pdf index a1139c9692..f78b08eaf7 100644 Binary files a/macros/latex-dev/base/ltnews25.pdf and b/macros/latex-dev/base/ltnews25.pdf differ diff --git a/macros/latex-dev/base/ltnews25.tex b/macros/latex-dev/base/ltnews25.tex index 9d675015c3..5d4450b430 100644 --- a/macros/latex-dev/base/ltnews25.tex +++ b/macros/latex-dev/base/ltnews25.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2016-2019 +% Copyright (C) 2016-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltnews26.pdf b/macros/latex-dev/base/ltnews26.pdf index 0141fd4f68..52bdd00dc3 100644 Binary files a/macros/latex-dev/base/ltnews26.pdf and b/macros/latex-dev/base/ltnews26.pdf differ diff --git a/macros/latex-dev/base/ltnews26.tex b/macros/latex-dev/base/ltnews26.tex index a1362b3475..3147bcf1a7 100644 --- a/macros/latex-dev/base/ltnews26.tex +++ b/macros/latex-dev/base/ltnews26.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2017-2019 +% Copyright (C) 2017-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltnews27.pdf b/macros/latex-dev/base/ltnews27.pdf index 761da8a88b..64721b96d7 100644 Binary files a/macros/latex-dev/base/ltnews27.pdf and b/macros/latex-dev/base/ltnews27.pdf differ diff --git a/macros/latex-dev/base/ltnews27.tex b/macros/latex-dev/base/ltnews27.tex index 37b2fcf89e..14c4e4adac 100644 --- a/macros/latex-dev/base/ltnews27.tex +++ b/macros/latex-dev/base/ltnews27.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2017-2019 +% Copyright (C) 2017-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltnews28.pdf b/macros/latex-dev/base/ltnews28.pdf index 607b871600..0645fc5471 100644 Binary files a/macros/latex-dev/base/ltnews28.pdf and b/macros/latex-dev/base/ltnews28.pdf differ diff --git a/macros/latex-dev/base/ltnews28.tex b/macros/latex-dev/base/ltnews28.tex index c8af784081..09a8da8874 100644 --- a/macros/latex-dev/base/ltnews28.tex +++ b/macros/latex-dev/base/ltnews28.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2017-2019 +% Copyright (C) 2017-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltnews29.pdf b/macros/latex-dev/base/ltnews29.pdf index 33ee86a199..269a64dcde 100644 Binary files a/macros/latex-dev/base/ltnews29.pdf and b/macros/latex-dev/base/ltnews29.pdf differ diff --git a/macros/latex-dev/base/ltnews29.tex b/macros/latex-dev/base/ltnews29.tex index 78a1b2e60f..045a692c22 100644 --- a/macros/latex-dev/base/ltnews29.tex +++ b/macros/latex-dev/base/ltnews29.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2018-2019 +% Copyright (C) 2018-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltnews30.pdf b/macros/latex-dev/base/ltnews30.pdf index 29982202d7..0704a96666 100644 Binary files a/macros/latex-dev/base/ltnews30.pdf and b/macros/latex-dev/base/ltnews30.pdf differ diff --git a/macros/latex-dev/base/ltnews31.pdf b/macros/latex-dev/base/ltnews31.pdf index 25b62b88e1..bdd68335cc 100644 Binary files a/macros/latex-dev/base/ltnews31.pdf and b/macros/latex-dev/base/ltnews31.pdf differ diff --git a/macros/latex-dev/base/ltnews31.tex b/macros/latex-dev/base/ltnews31.tex index 69f8dd3cd1..c365e527c0 100644 --- a/macros/latex-dev/base/ltnews31.tex +++ b/macros/latex-dev/base/ltnews31.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright 2019 +% Copyright 2019-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -36,6 +36,7 @@ \usepackage{lmodern,url,hologo} \usepackage{csquotes} +\usepackage{multicol} \providecommand\acro[1]{\textsc{#1}} \providecommand\meta[1]{$\langle$\textit{#1}$\rangle$} @@ -136,72 +137,41 @@ This document is under construction \ldots -\section{Primitive requirements} +\section{Experiences with the \LaTeX\texttt{-dev} formats} -Since the finalisation of \eTeX{} in 1999, a number of additional `utility' -primitives have been added to \pdfTeX{}. Several of these are broadly useful -and have been requirements for \pkg{expl3} for some time, most notably -\cs{pdfstrcmp}. Over time, a common set of these `post-\eTeX{}' primitives have -been incorporated into \XeTeX{} and (u)p-\TeX{}; they were available in -\LuaTeX{} already. +As reported in the previous \emph{\LaTeX{} News}, we have made a pre-release +version of the \LaTeX{} kernel available as \LaTeX\texttt{-dev}. Overall, the +approach of having an explicit testing release has been positive: it is now +readily-available in \TeX{} systems and is getting real use beyond the team. -A number of the additional primitives are needed to support new or improved -functionality in \LaTeX{}. This is seen for example in improved UTF-8 handling, -which uses \cs{ifincsname}. The following primitive functionality (which in -\LuaTeX{} may be achieved using Lua code) will therefore be \emph{required} by -the \LaTeX{} kernel after [INSERT DATE HERE]: -\begin{itemize} - \item \cs{expanded} - \item \cs{ifincsname} - \item \cs{ifpdfprimitive} - \item \cs{pdfcreationdate} - \item \cs{pdfelapsedtime} - \item \cs{pdffiledump} - \item \cs{pdffilemoddate} - \item \cs{pdffilesize} - \item \cs{pdflastxpos} - \item \cs{pdflastypos} - \item \cs{pdfmdfivesum} - \item \cs{pdfnormaldeviate} - \item \cs{pdfpageheight} - \item \cs{pdfpagewidth} - \item \cs{pdfprimitive} - \item \cs{pdfrandomseed} - \item \cs{pdfresettimer} - \item \cs{pdfsavepos} - \item \cs{pdfsetrandomseed} - \item \cs{pdfshellescape} - \item \cs{pdfstrcmp} - \item \cs{pdfuniformdeviate} -\end{itemize} -For ease of reference, these primitives will be referred to as the -`\pdfTeX{} utilities'. +The current +release has been tested by a number of users, and we have had useful feedback +on a range of new ideas. This has allowed us to fix issues in several of the +new features described below. We thank the dedicated users who have been +trying out the development formats, and encourage others to do so. Pre-testing +in this way does mean that for the vast majority of users, problems are solved +before they even appear! -Engines which are fully Unicode-capable must all provide the following -primitives -\begin{itemize} - \item \cs{Uchar} - \item \cs{Ucharcat} - \item \cs{Umathcode} -\end{itemize} -In particular, note that \cs{Umathcode} is used as a marker primitive for -this capability. +\section{Concerning this pre-release \ldots} -\section{Experiences with the \LaTeX\texttt{-dev} formats} +In \TeX{}Live 2020 the Lua\LaTeX{} format will use the new LuaHB\TeX{} +engine, which is Lua\TeX{} with an embedded HarfBuzz library. +HarfBuzz can be used by setting a suitable renderer in the font +declaration. A basic interface for that is provided by \pkg{fontspec}. +This additional font renderer will greatly improve the shaping of +various scripts, which are currently handled correctly only by +\XeTeX{}. To simplify the testing of the new engine, binaries have +been already added to MiK\TeX{} and \TeX{}Live 2019 and both have changed +the Lua\LaTeX-dev format to use it. -\emph{write} -In TeXLive 2020 the Lua\LaTeX{} format will use the new LuaHB\TeX{} engine, which is Lua\TeX{} with an embedded HarfBuzz library. -HarfBuzz can be used by setting a suitable renderer in the font declaration. An interface for that is provided by \pkg{fontspec}. -This additional font renderer will greatly improve the shaping of various scripts, which are currently handled correctly only by \XeTeX{}. -To simplify the testing of the new engine, binaries have been added to MiKTeX and TeXLive 2019 and both have changed the Lua\LaTeX-dev format to use it. \section{Improved load-times for \pkg{expl3}} The \LaTeX3 programming layer, \pkg{expl3}, has over the past decade moved from being largely experimental to broadly stable. It is now used in a significant number of third-party packages, most notably \pkg{xparse} for defining -interfaces in cases where no \pkg{expl3} code is \enquote{visible}. Most +interfaces in cases where no \pkg{expl3} code is \enquote{visible}. In addition, most \LaTeX{} documents compiled using \XeTeX{} or \LuaTeX{} load \pkg{fontspec}, which is written using \pkg{expl3}. @@ -221,28 +191,482 @@ eventually, it will be possible to omit \end{verbatim} entirely, but to support older formats, this is still recommended at present. + + + + + +\section[Improvements to \LaTeX{}'s font selection\\ mechanism (NFSS)] + {Improvements to \LaTeX{}'s font selection\\ mechanism (NFSS)} + + +\subsection{Extending the shape management of NFSS} + +Over time more and more fonts have become available for use with +\LaTeX{}. Many such font families offer additional shapes, e.g., small +caps italics (\texttt{scit}), small caps slanted (\texttt{scsl} or +swash letters (\texttt{sw}). By using \cs{fontshape} those shapes can +be explicitly selected and for the swash letter shapes there is also +\cs{swshape} and \cs{textsw} available. + +In the original font selection implementation a request to select a new shape +always overrode the current shape. With the 2020 release of \LaTeX{} +this has changed and \cs{fontshape} can now be used to combine small +capitals with italics, slanted or swash letters, either by explicitly +asking for \texttt{scit}, etc., or by asking for italics when typesetting +already in small caps and so forth. + +Using \cs{upshape} will still change italics or slanted back to an +upright shape but will not any longer alter the small caps setting. To +change small capitals back to upper/lower case you can now use +\cs{ulcshape} (or \cs{textulc}) which in turn will not change the font +with respect to italics, slanted or swash. +% +There is one exception: for compatibility reasons \cs{upshape} will +change small capitals back to upright (\texttt{n} shape), if the +current shape is \texttt{sc}. This is done so that something like +\cs{scshape}\allowbreak\texttt{...}\allowbreak\cs{upshape} continues +to work, but we suggest that you don't use that deprecated method in +new documents. + +Finally, if you want to +reset the shape back to normal you can use \cs{normalshape} which is a +shorthand for \cs{upshape}\cs{ulcshape}. + +The way that shapes combine with each other is not hardwired but is +customizable and extensible if there is ever a need for it. The +mappings are defined through \cs{DeclareFontShapeChangeRule} and the +details for developers are documented in \texttt{source2e.pdf}. + +The ideas for this interface extension have been pioneered in +\pkg{fontspec} by Will Robertson for Unicode engines and in +\pkg{fontaxes} by Andreas Bühmann and Michael Ummels for \pdfTeX{} and +used in many font support packages. + + + +\subsection{Extending the series management of NFSS} + +Many of the the newer font families also come provided with additional +weights (thin, semi-bold, ultra-bold, etc.\@) or several running lengths +such a condensed or extra-condensed. In some cases the number of +different series values is really impressive, for example, Noto Sans +offers 36 fonts from ultra-light extra condensed to ultra-bold medium width. + +Already in its original design, NFSS supported 9 weight levels from +ultra-light (\texttt{ul}) to ultra-bold (\texttt{ub}) and also 9 width +levels from ultra-condensed (\texttt{uc}) to ultra-expanded +(\texttt{ux}) so more than enough even for a font family like Noto +Sans. Unfortunately, some font support packages nevertheless invented +their own names so in recent years you could find all kinds of +non-standard series names like \texttt{k}, \texttt{i}, \texttt{j} and +others making it impossible to combine different fonts successfully +using the standard NFSS mechanisms. + +Over the course of the last year a small number of individuals, +notably, Bob Tennent, Michael Sharpe and Marc Penninga worked hard to +bring this unsatisfying situation back under control and today we are +happy to report that the internal font support files for more than a +hundred font families are back to following the standard NFSS conventions +so that combining them is now again rather nice and easy (of course, +there is still the task of choosing combinations that visually work +well together, but from a technical perspective they can now easily +matched). + + +In the original font selection implementation, a request to select a new series +always overrode the current one. This was reasonable because there +were nearly no fonts available that offered anything other than a +medium or a bold series. Now that this has changed and families such +as Noto Sans are available, combining weight and width into a single +attribute is no longer appropriate. With the 2020 release of \LaTeX{} +the series management therefore changed to allow for independently +setting the weight and the width attribute of the series. + +For most users this change will be largely transparent as \LaTeX{} +offers only \cs{textbf} or \cs{bfseries} to select a bolder face (and +\cs{textmd} and \cs{mdseries} to return to a medium series) but no +high-level command for selecting a condensed face, etc. However, with +the NFSS low-level interface, it is now possible to ask for, say, +\verb=\fontseries{c}\selectfont= in a marginal note to get a condensed +face and that would still allow using \cs{textbf} inside. This then would +select a bold condensed face and not a rather odd-looking +bold-extended face in the middle of condensed type. + +The expectation is that this functionality is largely used by class and package +designers, but given that the low-level NFSS commands are usable on +the document level and not really difficult to apply, there are +probably also a number of users who will enjoy using the new +possibilities that bring \LaTeX{} back into the front league when it +comes to font usage. + +The way different series values combine with each other is not +hardwired but is again customizable and extensible. The mappings are +defined through \cs{DeclareFontSeriesChangeRule} and the details for +developers are documented in \texttt{source2e.pdf}. + + + +\subsection{Font series defaults per document family} + +With additional weights and widths available in many font families it +becomes more likely that somebody wants to match, say, a medium weight +serif family with a semi-light sans serif family or that with one +family one wants to use the bold-extend face when \cs{textbf} is used +while with another it should be bold (not extended) or semibold, etc. + +In the past this kind of extension was made available with the +\pkg{mweights} package by Bob Tennent which has been used in many font +support packages. + +With the 2020 release of \LaTeX{} this feature is now available out +of the box. In addition we also offer a document-level interface to adjust the +behavior of the high-level series commands \cs{textbf}, \cs{textmd} and their +declaration forms \cs{bfseries} and \cs{mdseries} so that they can +have different effects for the serif, sans serif and typewriter +families used in a document. + +For example, specifying +\begin{verbatim} + \DeclareFontSeriesDefault[rm]{bf}{sb} + \DeclareFontSeriesDefault[tt]{md}{lc} +\end{verbatim} +in the document preamble would result in \cs{textbf} producing +semi-bold (\texttt{sb}) when typesetting in roman typeface and +that typewriter is by default (medium series \texttt{md}) using +a light-condensed face. The optional argument here can be either +\texttt{rm}, \texttt{sf} or \texttt{tt} to indicate one of the three +main font families in a document; if omitted you will change the +overall document default instead. In the first mandatory argument you +specify either \texttt{md} or \texttt{bf} and the second mandatory +argument then gives the desired series value in NFSS nomenclature. + + +\subsection{Emphasis handling generalized} + +With previous releases of \LaTeX{} nested \cs{emph} commands +automatically alternated between italics and upright. This mechanism +has now been generalized and you can now specify for arbitrary nesting +levels how emphasis should be handled. + +The declaration \cs{DeclareEmphSequence} expects a comma separated +list of font declarations corresponding to increasing levels of +emphasis. For example, +\begin{verbatim} + \DeclareEmphSequence{\itshape,% + \upshape\scshape,\itshape} +\end{verbatim} +uses italics for the first, small capitals for the second, and italic +small capitals for the third level (provided you use a font that +supports these shapes). If there are a more nesting levels than +provided, \LaTeX{} uses the declarations stored in \cs{emreset} (by +default \cs{ulcshape}\cs{upshape}) for the next level and then +restarts the list. + +The mechanism tries to be \enquote{smart} and verifies that the given +declarations actually alter the current font. If not it continues and +tries the next level---the assumption being that there was already a +manual font change in the document to the font that is now supposed to +be used for emphasis. +% +Of course, this only works if the declarations in the list entries +actually change the font and not, for example, just the color. In such +a scenario one has to add \cs{emforce} to the entry which directs the +mechanism to use the level, even if the font attributes appear to be +unchanged. + + + +\subsection{Providing font family substitutions} + +Given that \pdfTeX{} can only handle fonts with up to 256 glyphs a +single font encoding can only support a few languages. The \texttt{T1} +encoding, for example, does support many of the Latin based scripts, +but if you want to write in Greek or Russian you need to switch +encodings to \texttt{LGR} or \texttt{T2A}. Given that not every font +family offers glyphs in such encodings, you may end up with some +default family (e.g., Computer Modern) that doesn’t blend in well +chosen document font. For such cases NFSS now offers +\cs{DeclareFontFamilySubstitution}, for example: +\begin{verbatim} + \DeclareFontFamilySubstitution{LGR} + {Montserrat-LF}{IBMPlexSans-TLF} +\end{verbatim} +tells \LaTeX{} that if you are typesetting in the sans serif font +\texttt{Montserrat-LF} and the Greek encoding \texttt{LGR} is asked +for, then \LaTeX{} should use \texttt{IBMPlexSans-TLF} to fulfill the +encoding request. + +The code is based on ideas from the \pkg{substitutefont} +package by Günter Milde, but implemented differently. + + +\subsection{Providing all text companion symbols by default} + +The text companion encoding \texttt{TS1} was originally not available +by default, but only when the \pkg{textcomp} package was loaded. The +main reason for this was limited availability in fonts other than +Computer Modern and memory restrictions back in the nineties. These +days neither limitation exists any more so with the 2020 release all +the symbols provided with the \pkg{textcomp} package are available out +of the box. + +Furthermore, an intelligent substitution mechanism has been +implemented so that missing glyphs are automatically substituted with +defaults that are sans serif if you typeset in \cs{textsf} and +monospaced if you typeset using \cs{texttt} and not always serifed. + + +\textsf{This is most noticeable with \cs{oldstylenums} which are now + taken from \texttt{TS1} so that you no longer get + \textrm{\oldstylenums{123}} but \oldstylenums{123} when typesetting + in sans serif fonts}\texttt{ and \oldstylenums{123} when using + typewriter fonts.} + +If there ever is a need to use the original (inferior) definition, +then that remains available as \cs{legacyoldstylenums} and to fully +revert to the old behavior there is also +\cs{UseLegacyTextSymbols}. That declaration reverts \cs{oldstylenums} +and also changes the footnote symbols, such as \cs{textdagger}, +\cs{textparagraph}, etc.\ pick up their glyphs again from the math +fonts instead of the current text font (this means they always keep +the same shape and do not nicely blend in with the text font). + +With the text companion symbols as part of the kernel it is normally +no longer necessary to load the \pkg{textcomp} package, but for +backwards compatibility this package will remain available. There is, +however, one use case where it remains useful: if you load the package +with the option \texttt{error} or \texttt{warn} then substitutions +will change their behavior and result in a \LaTeX{} error or a +\LaTeX{} warning (on the terminal), respectively. Without the package +the substitution information only appears in the \texttt{.log} +file. If you use the option \texttt{quit}, then even the information in +the transcript is suppressed (which is not really recommended). + \section{Other changes to the \LaTeX{} kernel} -\emph{fixed gh198} +\subsection{New \texttt{alias} size function for use in \texttt{.fd} files} +Most of the newer fonts supported in \TeX{} have been set up with the +\texttt{autoinst} tool by Marc Penninga. In the past this program did +set up the font faces using the face names chosen by its designer, +e.g., \enquote{\texttt{regular}}, \enquote{\texttt{bold}}, etc., and +then mapped those via substitution to the standard NFSS shape names, +i.e., \enquote{\texttt{m}} or \enquote{\texttt{b}}. As a result one +got unnecessary substitution warnings such as \enquote{\texttt{Font + T1/abc/bold/n not found using T1/abc/b/n instead}}. -\section{Changes to packages in the \pkg{tools} category} +We now provide a new NFSS \texttt{alias} size function that can and will be +used by \texttt{autoinst} in the future. It provides the same +functionality as the \texttt{subst} function but is less vocal about +its actions, such that only relevant font substitutions show up as +warnings. + + + + + +\subsection{UTF-8 characters in package descriptions} + +In 2018 we made UTF-8 the default input encoding for \LaTeX{} but we +overlooked the case of package descriptions in declarations such as +\cs{ProvidesPackage} which worked (sometimes) before but now died +always. This has been corrected. +\githubissue{52} + + +\subsection{Suppress unnecessary font substitution warnings} -\emph{fixed gh190} +Many sans serif fonts do not have real italics but usually only +oblique/slanted shapes, so the substitution of slanted for italics is +natural and in fact many designers talk about italic sans serif faces +even if in reality they are oblique. With nearly all sans serif font +family the \LaTeX{} support files therefore silently substitute +slanted if you ask for \cs{itshape} or \cs{textit}. This is also true +for Computer Modern in \texttt{T1} encoding but in \texttt{OT1} you +got a warning on the terminal even though there is nothing you can do +about it. This has now been changed to an information message only +written to the \texttt{.log} file. +% +\githubissue{172} + + +\subsection{Fix inconsistent hook setting when loading packages} + +When a package is loaded +\texttt{\textbackslash}\textit{package}\texttt{.sty-h@@k} is set, but +it was loaded several times it was unset again. Relevant only to +package developers. +% +\githubissue{198} +\subsection{Avoid spurious warning if \texttt{LY1} is made the default encoding} + +Making \texttt{LY1} the default encoding as done by some font support +packages gave a spurious warning even if \cs{rmdefault} was changed +first. This was corrected. +% +\githubissue{199} -\section{Changes to packages in the \pkg{amsmath} category} +\subsection{Ensure that \cs{\textbackslash} remains robust} +In the last release we made most document-level commands robust, but +\cs{\textbackslash} became fragile again if \cs{raggedright} +typesetting was used. +% +\githubissue{203} -\section{Documentation updates} +\subsection{Allow more write streams with \texttt{filecontents} in \LuaTeX} + +Most \TeX{} engines only support a maximum of sixteen concurrently +open write streams and if those have been used up, then +\texttt{filecontents} or any other code trying to open another one +will fail. In \LuaTeX{} more write streams are available and those can +now be utilized as well. +% +\githubissue{238} +\section{Changes to packages in the \pkg{graphics} category} + +\subsection[Make \pkg{color}/\pkg{graphics} user-level commands robust] + {Make \pkg{color} \& \pkg{graphics} user-level commands robust} + +Some of the user-level commands of \pkg{color}, \pkg{graphics} and +\pkg{graphicx} such as \cs{textcolor} or \cs{includegraphics} were +still fragile, so didn't work in moving arguments without extra +protection. All of them have now been made robust. +% +\githubissue{208} + + + + +\section{Changes to packages in the \pkg{tools} category} + +\subsection{Fixed column depth in boxed \texttt{multicols}} + +The \texttt{multicols} environment was setting \cs{maxdepth} when +splitting boxes but the way the internal interfaces of \LaTeX{} are +designed it should have used \cs{@maxdepth} instead. As a result +balanced boxed multicols sometimes ended up having different height +even if they had exactly the same content. +% +\githubissue{190} + + +\subsection{Ensure that \texttt{multicols} is not losing text} + +The \texttt{multicols} environment needs a set of consecutive boxes to +collect column material. The way those got allocated could result in +disaster if other packages allocated most boxes below box 255 (which +\TeX{} always uses for the output page). In the original +implementation that problem was identified because one could only +allocate boxes below 255, but nowadays the \LaTeX{} allocation routine +allows allocating boxes below and above 255. So the assumption that +asking for, say 20 boxes you get a consecutive sequence of box +registers was no longer true and so some of the column material could +end in box 255 and be overwritten. This has now been corrected by +allocating all necessary boxes above 255 if there aren't enough +registers available. +% +\githubissue{237} + +\subsection{Allow spaces in \cs{hhline} arguments} + +The verb \verb|\hhline| command which allows +specification of rule segments in \texttt{tabular} environments now +allows (and ignores) spaces between its tokens so +\verb|\hhline{: = : =}| is now allowed and equivalent to +\verb|\hhline{:=:=}|. This matches similar token arguments in \LaTeX{} +such as the \verb|[h t p]| argument on floats. A similar change has +been made to the extended \verb|\hhline| command in the +\texttt{colortbl} package. +% +\githubissue{242} + + + +\section{Primitive requirements} + +Since the finalization of \eTeX{} in 1999, a number of additional `utility' +primitives have been added to \pdfTeX{}. Several of these are broadly useful +and have been requirements for \pkg{expl3} for some time, most notably +\cs{pdfstrcmp}. Over time, a common set of these `post-\eTeX{}' primitives have +been incorporated into \XeTeX{} and (u)p-\TeX{}; they were available in +\LuaTeX{} already. + +A number of the additional primitives are needed to support new or improved +functionality in \LaTeX{}. This is seen for example in improved UTF-8 handling, +which uses \cs{ifincsname}. The following primitive functionality (which in +\LuaTeX{} may be achieved using Lua code) will therefore be \emph{required} by +the \LaTeX{} kernel from the start of 2021: +% +\begingroup\setlength\columnsep{0pt} +\begin{multicols}{2} +\begin{itemize} + \item \cs{expanded} + \item \cs{ifincsname} + \item \cs{ifpdfprimitive} + \item \cs{pdfcreationdate} + \item \cs{pdfelapsedtime} + \item \cs{pdffiledump} + \item \cs{pdffilemoddate} + \item \cs{pdffilesize} + \item \cs{pdflastxpos} + \item \cs{pdflastypos} + \item \cs{pdfmdfivesum} + \item \cs{pdfnormaldeviate} + \item \cs{pdfpageheight} + \item \cs{pdfpagewidth} + \item \cs{pdfprimitive} + \item \cs{pdfrandomseed} + \item \cs{pdfresettimer} + \item \cs{pdfsavepos} + \item \cs{pdfsetrandomseed} + \item \cs{pdfshellescape} + \item \cs{pdfstrcmp} + \item \cs{pdfuniformdeviate} +\end{itemize} +\end{multicols} +\endgroup +% +For ease of reference, these primitives will be referred to +as the `\pdfTeX{} utilities'. With the exception of \cs{expanded}, +these have been present in \pdfTeX{} since the release of version +1.40.0 in 2007; \cs{expanded} was added for \TeX{}~Live +2019. Similarly, the full set of utility primitives have been +available in \XeTeX{} from the 2019 \TeX{}~Live release, and have +always been available in \LuaTeX{} (some by Lua emulation). p\TeX{} +and up\TeX{} gained all of the above bar \cs{ifincsname} for +\TeX{}~Live 2019, and will have that primitive from the 2020 release. + +At the same time, engines which are fully Unicode-capable must all +provide the following primitives +% +\begingroup\setlength\columnsep{0pt} +\begin{multicols}{2} +\begin{itemize} + \item \cs{Uchar} + \item \cs{Ucharcat} + \item \cs{Umathcode} +\end{itemize} +\end{multicols} +\endgroup +% +Note that it has become standard practice to check for Unicode-aware +engines with the existence of the \cs{Umathcode} primitive. As such, +this is already a requirement: engines lacking these primitives cannot +access Unicode features of the \LaTeXe{} kernel or of +\pkg{expl3}. Note that up\TeX{} has facilities for handling Unicode +but is not classed as a Unicode engine by the base LaTeX code. + \begin{thebibliography}{9} %\fontsize{9.3}{11.3}\selectfont @@ -261,10 +685,6 @@ entirely, but to support older formats, this is still recommended at present. \emph{\LaTeX{} documentation on the \LaTeX{} Project Website}.\\ \url{https://latex-project.org/documentation/} -%\bibitem{31:site-pub} -% \emph{\LaTeX{} Project publications on the \LaTeX{} Project Website}.\\ -% \url{https://latex-project.org/publications/} - \end{thebibliography} \end{document} diff --git a/macros/latex-dev/base/ltoutenc.dtx b/macros/latex-dev/base/ltoutenc.dtx index b16af5c8c6..fb437d4ad2 100644 --- a/macros/latex-dev/base/ltoutenc.dtx +++ b/macros/latex-dev/base/ltoutenc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -37,15 +37,14 @@ %\ProvidesFile{ts1enc.def}[2001/06/05 v3.0e (jk/car/fm) %\ProvidesFile{tuenc.def} %\ProvidesPackage{fontenc} -%\ProvidesPackage{textcomp} -% [2018/08/11 v2.0j -% Standard LaTeX file] -% Standard LaTeX package] +% [2019/11/22 v2.0l +% Standard LaTeX file] +% Standard LaTeX package] % %<*driver> % \fi \ProvidesFile{ltoutenc.dtx} - [2018/11/18 v2.0k LaTeX Kernel (font encodings)] + [2019/12/18 v2.0m LaTeX Kernel (font encodings)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltoutenc.dtx} @@ -834,8 +833,23 @@ % {Explicitly set \cs{spacefactor} after \cs{accent} (pr/2877)} % \begin{macrocode} \global\mathchardef\accent@spacefactor\spacefactor}% +% \end{macrocode} +% The accent primitive doesn't allow things \cs{begingroup} to +% interfere between accent and base character. Therefore we need to +% avoid that (they are some hidden inside \cs{maybe@load@fontshape}). +% As we don't have to load the fontshape in this case +% (as that happened in the box above if necessary, we simply +% disable that part of the code temporaily. +% We also ignore \cs{ignorespaces} which has the same issue and may +% show up as part of \cs{normalfont} if that is used. +% \changes{v2.0m}{2019/12/18}{Avoid code that breaks \cs{accent}} +% \begin{macrocode} + \let\maybe@load@fontshape\relax + \let\ignorespaces\relax \accent#1 #2\egroup\spacefactor\accent@spacefactor} % \end{macrocode} +% +% % Default definition for |\accent@spacefactor| prevents a horrible % death of the above macro inside an unprotected |\edef|. % \changes{v1.9w}{1999/10/28}{Give \cs{accent@spacefactor} a default @@ -1107,7 +1121,8 @@ %<*2ekernel> % \end{macrocode} % -% +% Switch to a different text encoding without any grouping for use in +% \cs{UseTextAccent} or \cs{UseTextSymbol} (and for \cs{oldstylenums}). % \begin{macrocode} \def\@use@text@encoding#1{% \edef\f@encoding{#1}% @@ -1445,11 +1460,18 @@ % \begin{macrocode} \DeclareTextCommandDefault{\textasciicircum}{\^{}} \DeclareTextCommandDefault{\textasciitilde}{\~{}} -\DeclareTextCommandDefault{\textcompwordmark}{\leavevmode\kern\z@} \DeclareTextCommandDefault{\textunderscore}{% \leavevmode \kern.06em\vbox{\hrule\@width.3em}} % \end{macrocode} % +% There is no good reason anymore to fake \cs{textcompwordmark}. +% \changes{v2.0m}{2019/12/18}{Don't fake \cs{textcompwordmark}; take +% default from T1 instead} +% \begin{macrocode} +%\DeclareTextCommandDefault{\textcompwordmark}{\leavevmode\kern\z@} +\DeclareTextSymbolDefault{\textcompwordmark}{T1} +% \end{macrocode} +% % \begin{macrocode} \DeclareTextCommandDefault{\textvisiblespace}{% \mbox{\kern.06em\vrule \@height.3ex}% @@ -3508,8 +3530,21 @@ \ProcessOptions* % \end{macrocode} % +% We select the new font encoding default (i.e., the last encoding +% specified in the option list. But this encoding may not work with +% the current |\f@shape|, e.g., \texttt{LY1} is not defined for +% \texttt{cmr} and therefore packages switching to \texttt{LY1} +% usually also change \cs{rmdefault}. But that only applies at +% |\begin{document}| so we get a spurious warning if we use what +% \LaTeX{} previously used: +% \changes{v2.0l}{2019/11/22}{Avoid spurious if fontenc selects LY1 as +% default encoding (gh/199)} +% \begin{macrocode} +%\fontencoding\encodingdefault\selectfont +% \end{macrocode} +% So instead we do this here: % \begin{macrocode} -\fontencoding\encodingdefault\selectfont +\usefont\encodingdefault\familydefault\seriesdefault\shapedefault % \end{macrocode} % % To save some space we get rid of the macro extending the @@ -3538,728 +3573,6 @@ % \end{macrocode} % % -% \subsection{The textcomp package} -% -% This one is for the |TS1| encoding which contains text symbols -% for use with the |T1|-encoded text fonts. It therefore first -% inputs the file |TS1enc.def| and then sets (or resets) the -% defaults for the symbols it contains. The result of this is that -% when one of these symbols is accessed and the current encoding -% does not provide it, the symbol will be supplied by a silent, -% local change to this encoding. -% -% \begin{macrocode} -%<*TS1sty> -% \end{macrocode} -% Since many PostScript fonts only implement a subset of |TS1| many -% commands only produce black blobs of ink. To resolve the -% resulting problems a number of options have been introduced and -% some code has been developed to distinguish sub-encodings. -% -% The sub-encodings have a numerical id and are defined as follows -% for \texttt{TS1}: -% \begin{description} -% -% \item[\#5] those \texttt{TS1} symbols that are also in the ISO-Adobe -% character set; without \verb=textcurrency=, which is often -% misused for the Euro. Older Type1 fonts from the non-\TeX{} -% world provide only this subset. -% -% \item[\#4] = \#5 + \verb=\texteuro=. Most newer fonts provide this. -% -% \item[\#3] = \#4 + \verb=\textomega=. Can also be described as -% $\texttt{TS1} \cap (\texttt{ISO-Adobe} \cup -% \texttt{MacRoman})$. (Except for the missing "currency".) - -% -% \item[\#2] = \#3 + \verb=\textestimated= + \verb=\textcurrency=. Can -% also be described as $\texttt{TS1} \cap -% \texttt{Adobe-Western-2}$. This may be relevant for OpenType -% fonts, which usually show the Adobe-Western-2 character set. -% -% \item[\#1] = \texttt{TS1} without \verb=\textcircled= and \verb=\t=. -% These two glyphs are often not implemented and if their kernel -% defaults are changed commands like \verb=\copyright= -% unnecessarily fail. -% -% \item[\#0] = full \texttt{TS1} -% \end{description} -% -% And here a summary to go in the transcript file: -% \begin{macrocode} -\PackageInfo{textcomp}{Sub-encoding information:\MessageBreak - \space\space 5 = only ISO-Adobe without - \string\textcurrency\MessageBreak - \space\space 4 = 5 + \string\texteuro\MessageBreak - \space\space 3 = 4 + \string\textohm\MessageBreak - \space\space 2 = 3 + \noexpand\textestimated+ - \string\textcurrency\MessageBreak - \space\space 1 = TS1 - \noexpand\textcircled- - \string\t\MessageBreak - \space\space 0 = TS1 (full)\MessageBreak - Font families with sub-encoding setting implement\MessageBreak - only a restricted character set as indicated.\MessageBreak - Family '?' is the default used for unknown fonts.\MessageBreak - See the documentation for details\@gobble} -% \end{macrocode} -% -% \begin{macro}{\DeclareEncodingSubset} -% An encoding subset to which a font family belongs is declared by -% the command |\DeclareEncodingSubset| that takes the major encoding as the -% first argument (e.g., |TS1|), the family name as the second -% argument (e.g., |cmr|), and the subset encoding id as a third, -% (e.g., |0| for |cmr|). -% -% The default encoding subset to use when nothing is known about -% the current font family is named |?|. -% \begin{macrocode} -\def\DeclareEncodingSubset#1#2#3{% - \@ifundefined{#1:#2}% - {\PackageInfo{textcomp}{Setting #2 sub-encoding to #1/#3}}% - {\PackageInfo{textcomp}{Changing #2 sub-encoding to #1/#3}}% - \@namedef{#1:#2}{#3}} -\@onlypreamble\DeclareEncodingSubset -% \end{macrocode} -% \end{macro} -% -% -% The options for the package are the following: -% \begin{description} -% \item[safe] -% for unknown font families enables only symbols that are also -% in the ISO-Adobe character set; without "currency", which is -% often misused for the Euro. Older Type1 fonts from the -% non-TeX world provide only this subset. -% -% \item[euro] -% enables the ``safe'' symbols plus the |\texteuro| -% command. Most newer fonts provide this. -% -% \item[full] enables all |TS1| commands; useful only with fonts -% like EC or CM bright. -% -% \item[almostfull] -% same as ``full'', except that |\textcircled| -% and |\t| are \emph{not} redefined from their defaults to avoid -% that commands like |\copyright| suddenly no longer work. -% -% \item[force] -% ignore all subset encoding definitions stored in the package -% itself or in the configuration file and always use the default -% subset as specified by one of the other options (seldom useful, -% only dangerous). -% \end{description} - -% \begin{macro}{\iftc@forced} -% Switch used to implement the \texttt{force} option -% \begin{macrocode} -\newif\iftc@forced \tc@forcedfalse -% \end{macrocode} -% \end{macro} - -% This is implemented by defining the default subset: -% \begin{macrocode} -\DeclareOption{full}{\DeclareEncodingSubset{TS1}{?}{0}} -\DeclareOption{almostfull}{\DeclareEncodingSubset{TS1}{?}{1}} -\DeclareOption{euro}{\DeclareEncodingSubset{TS1}{?}{4}} -\DeclareOption{safe}{\DeclareEncodingSubset{TS1}{?}{5}} -% \end{macrocode} -% The default is ``almostfull'' which means that old documents will -% work except that |\textcircled| and |\t| will use the kernel -% defaults (with the advantage that this also works if the current -% font (as often the case) doesn't implement these glyphs. -% -% The ``force'' option simply sets the switch to true. -% \begin{macrocode} -\DeclareOption{force}{\tc@forcedtrue} -% \end{macrocode} -% -% The suggestions to user is to use the ``safe'' option always -% unless that balks in which case they could switch to -% ``almostfull'' but then better check their output manually. -% -% \begin{macrocode} -\def\tc@errorwarn{\PackageError} -\DeclareOption{warn}{\gdef\tc@errorwarn#1#2#3{\PackageWarning{#1}{#2}}} -% \end{macrocode} -% -% \begin{macrocode} -\ExecuteOptions{almostfull} -\ProcessOptions\relax -% \end{macrocode} -% -% \begin{macro}{\CheckEncodingSubset} -% The command |\CheckEncodingSubset| will check if the current font -% family has the right encoding subset to typeset a certain -% command. It takes five arguments as follows: -% first argument is either |\UseTextSymbol|, |\UseTextAccent| -% depending on whether or not the symbol is a text symbol or a text -% accent. - -% The second argument is the encoding from which this symbol should -% be fetched. -% -% The third argument is either a fake accessor command or an error -% message. the code in that argument (if ever executed) receives -% two arguments: |#2| and |#5| of |\CheckEncodingSubset|. -% -% Argument four is the subset encoding id to test against: if this -% value is higher than the subset id of the current font family -% then we typeset the symbol, i.e., execute |#1{#2}#5| otherwise -% it runs |#3#5|, e.g., to produce an error message or fake the -% glyph somehow. -% -% Argument five is the symbol or accent command that is being -% checked. -% -% For usage examples see definitions below. -% \begin{macrocode} -\iftc@forced -% \end{macrocode} -% If the ``force'' option was given we always use the default for -% testing against. -% \begin{macrocode} -\def\CheckEncodingSubset#1#2#3#4#5{% - \ifnum #4>% - 0\csname #2:?\endcsname - \relax - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {#1{#2}}{#3}% - #5% -} -% \end{macrocode} -% In normal circumstances the test is a bit more complicated: first -% check if there exists a macro -% |\|\meta{arg2}|:|\meta{current-family} and if so use that value -% to test against, otherwise use the default to test against. -% \begin{macrocode} -\else -\def\CheckEncodingSubset#1#2#3#4#5{% - \ifnum #4>% - \expandafter\ifx\csname #2:\f@family\endcsname\relax - 0\csname #2:?\endcsname - \else - \csname #2:\f@family\endcsname - \fi - \relax - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {#1{#2}}{#3}% - #5% -} -\fi -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\tc@subst} -% \begin{macrocode} -\def\tc@subst#1{% - \tc@errorwarn{textcomp}% % should be latex error if general - {Symbol \string#1 not provided by\MessageBreak - font family \f@family\space - in TS1 encoding.\MessageBreak Default family used instead}\@eha - \bgroup\fontfamily\textcompsubstdefault\selectfont#1\egroup -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\textcompsubstdefault} -% \begin{macrocode} -\def\textcompsubstdefault{cmr} -% \end{macrocode} -% \end{macro} - -% \begin{macro}{\tc@error} -% |\tc@error| is going to be used in arg |#3| of -% |\CheckEncodingSubset| when a symbol is not available in a -% certain font family. It gets pass the encoding it normally lives -% in (arg one) and the name of the symbol or accent that has a -% problem. -% -% \begin{macrocode} -% error commands take argument: -% #1 symbol to be used -\def\tc@error#1{% - \PackageError{textcomp}% % should be latex error if general - {Accent \string#1 not provided by\MessageBreak - font family \f@family\space - in TS1 encoding}\@eha -} -% \end{macrocode} -% \end{macro} -% -% -% \begin{macro}{\tc@fake@euro} -% |\tc@fake@euro| is an example of a ``fake'' definition to use in arg |#3| of -% |\CheckEncodingSubset| when a symbol is not available in a -% certain font family. Here we produce an Euro symbol by combining -% a ``C'' with a ``=''. -% \begin{macrocode} -\def\tc@fake@euro#1{% - \leavevmode - \PackageInfo{textcomp}{Faking \noexpand#1for font family - \f@family\MessageBreak in TS1 encoding}% - \valign{##\cr - \vfil\hbox to 0.07em{\dimen@\f@size\p@ - \math@fontsfalse - \fontsize{.7\dimen@}\z@\selectfont=\hss}% - \vfil\cr% - \hbox{C}\crcr - }% -} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\tc@check@symbol} -% \begin{macro}{\tc@check@accent} -% These are two abbreviations that we use below to check symbols -% and accents in TS1. Only there to save some space, e.g., we can -% then write -%\begin{verbatim} -%\DeclareTextCommandDefault{\textcurrency}{\tc@check@symbol3\textcurrency} -%\end{verbatim} -% to ensure that |\textcurrency| is only typeset if the current -% font has a \texttt{TS1} subset id of less than 3. Otherwise -% |\tc@error| is called telling the user that for this font family -% |\textcurreny| is not available. -% \begin{macrocode} -\def\tc@check@symbol{\CheckEncodingSubset\UseTextSymbol{TS1}\tc@subst} -\def\tc@check@accent{\CheckEncodingSubset\UseTextAccent{TS1}\tc@error} -% \end{macrocode} -% \end{macro} -% \end{macro} -% -% We start with the commands that are ``safe'' and which can be -% unconditionally set up, first the accents\ldots -% \begin{macrocode} -\DeclareTextAccentDefault{\capitalcedilla}{TS1} -\DeclareTextAccentDefault{\capitalogonek}{TS1} -\DeclareTextAccentDefault{\capitalgrave}{TS1} -\DeclareTextAccentDefault{\capitalacute}{TS1} -\DeclareTextAccentDefault{\capitalcircumflex}{TS1} -\DeclareTextAccentDefault{\capitaltilde}{TS1} -\DeclareTextAccentDefault{\capitaldieresis}{TS1} -\DeclareTextAccentDefault{\capitalhungarumlaut}{TS1} -\DeclareTextAccentDefault{\capitalring}{TS1} -\DeclareTextAccentDefault{\capitalcaron}{TS1} -\DeclareTextAccentDefault{\capitalbreve}{TS1} -\DeclareTextAccentDefault{\capitalmacron}{TS1} -\DeclareTextAccentDefault{\capitaldotaccent}{TS1} -% \end{macrocode} -% \ldots and then the other glyphs. -% \changes{v1.9p}{1998/06/12}{Renamed \cs{textmacron} pr/2840} -% \begin{macrocode} -\DeclareTextSymbolDefault{\textcapitalcompwordmark}{TS1} -\DeclareTextSymbolDefault{\textascendercompwordmark}{TS1} -\DeclareTextSymbolDefault{\textquotestraightbase}{TS1} -\DeclareTextSymbolDefault{\textquotestraightdblbase}{TS1} -\DeclareTextSymbolDefault{\texttwelveudash}{TS1} -\DeclareTextSymbolDefault{\textthreequartersemdash}{TS1} -\DeclareTextSymbolDefault{\textdollar}{TS1} -\DeclareTextSymbolDefault{\textquotesingle}{TS1} -\DeclareTextSymbolDefault{\textasteriskcentered}{TS1} -\DeclareTextSymbolDefault{\textfractionsolidus}{TS1} -\DeclareTextSymbolDefault{\textminus}{TS1} -\DeclareTextSymbolDefault{\textlbrackdbl}{TS1} -\DeclareTextSymbolDefault{\textrbrackdbl}{TS1} -\DeclareTextSymbolDefault{\textasciigrave}{TS1} -\DeclareTextSymbolDefault{\texttildelow}{TS1} -\DeclareTextSymbolDefault{\textasciibreve}{TS1} -\DeclareTextSymbolDefault{\textasciicaron}{TS1} -\DeclareTextSymbolDefault{\textgravedbl}{TS1} -\DeclareTextSymbolDefault{\textacutedbl}{TS1} -\DeclareTextSymbolDefault{\textdagger}{TS1} -\DeclareTextSymbolDefault{\textdaggerdbl}{TS1} -\DeclareTextSymbolDefault{\textbardbl}{TS1} -\DeclareTextSymbolDefault{\textperthousand}{TS1} -\DeclareTextSymbolDefault{\textbullet}{TS1} -\DeclareTextSymbolDefault{\textcelsius}{TS1} -\DeclareTextSymbolDefault{\textflorin}{TS1} -\DeclareTextSymbolDefault{\texttrademark}{TS1} -\DeclareTextSymbolDefault{\textcent}{TS1} -\DeclareTextSymbolDefault{\textsterling}{TS1} -\DeclareTextSymbolDefault{\textyen}{TS1} -\DeclareTextSymbolDefault{\textbrokenbar}{TS1} -\DeclareTextSymbolDefault{\textsection}{TS1} -\DeclareTextSymbolDefault{\textasciidieresis}{TS1} -\DeclareTextSymbolDefault{\textcopyright}{TS1} -\DeclareTextSymbolDefault{\textordfeminine}{TS1} -\DeclareTextSymbolDefault{\textlnot}{TS1} -\DeclareTextSymbolDefault{\textregistered}{TS1} -\DeclareTextSymbolDefault{\textasciimacron}{TS1} -\DeclareTextSymbolDefault{\textdegree}{TS1} -\DeclareTextSymbolDefault{\textpm}{TS1} -\DeclareTextSymbolDefault{\texttwosuperior}{TS1} -\DeclareTextSymbolDefault{\textthreesuperior}{TS1} -\DeclareTextSymbolDefault{\textasciiacute}{TS1} -\DeclareTextSymbolDefault{\textmu}{TS1} -\DeclareTextSymbolDefault{\textparagraph}{TS1} -\DeclareTextSymbolDefault{\textperiodcentered}{TS1} -\DeclareTextSymbolDefault{\textonesuperior}{TS1} -\DeclareTextSymbolDefault{\textordmasculine}{TS1} -\DeclareTextSymbolDefault{\textonequarter}{TS1} -\DeclareTextSymbolDefault{\textonehalf}{TS1} -\DeclareTextSymbolDefault{\textthreequarters}{TS1} -\DeclareTextSymbolDefault{\texttimes}{TS1} -\DeclareTextSymbolDefault{\textdiv}{TS1} -% \end{macrocode} -% -% The |\texteuro| is only available for subsets with id 4 or -% less. Otherwise we fake the glyph using |\tc@fake@euro| -% \begin{macrocode} -\DeclareTextCommandDefault{\texteuro} - {\CheckEncodingSubset\UseTextSymbol{TS1}\tc@fake@euro5\texteuro} -% \end{macrocode} -% -% The |\textohm| is only available for subsets with id 3 or -% less. Otherwise we produce an error. -% \begin{macrocode} -\DeclareTextCommandDefault{\textohm}{\tc@check@symbol4\textohm} -% \end{macrocode} -% The |\textestimated| and |\textcurrency| are only provided for -% fonts with subset encoding with id 2 or less. -% \begin{macrocode} -\DeclareTextCommandDefault{\textestimated}% - {\tc@check@symbol3\textestimated} -\DeclareTextCommandDefault{\textcurrency}% - {\tc@check@symbol3\textcurrency} -% \end{macrocode} -% Nearly all of the remaining glyphs are provided only with fonts -% with id 1 or 0, i.e., are essentially complete. -% \begin{macrocode} -\DeclareTextCommandDefault{\capitaltie}% - {\tc@check@accent2\capitaltie} -\DeclareTextCommandDefault{\newtie}% - {\tc@check@accent2\newtie} -\DeclareTextCommandDefault{\capitalnewtie}% - {\tc@check@accent2\capitalnewtie} -\DeclareTextCommandDefault{\textleftarrow}% - {\tc@check@symbol2\textleftarrow} -\DeclareTextCommandDefault{\textrightarrow}% - {\tc@check@symbol2\textrightarrow} -\DeclareTextCommandDefault{\textblank}% - {\tc@check@symbol2\textblank} -\DeclareTextCommandDefault{\textdblhyphen}% - {\tc@check@symbol2\textdblhyphen} -\DeclareTextCommandDefault{\textzerooldstyle}% - {\tc@check@symbol2\textzerooldstyle} -\DeclareTextCommandDefault{\textoneoldstyle}% - {\tc@check@symbol2\textoneoldstyle} -\DeclareTextCommandDefault{\texttwooldstyle}% - {\tc@check@symbol2\texttwooldstyle} -\DeclareTextCommandDefault{\textthreeoldstyle}% - {\tc@check@symbol2\textthreeoldstyle} -\DeclareTextCommandDefault{\textfouroldstyle}% - {\tc@check@symbol2\textfouroldstyle} -\DeclareTextCommandDefault{\textfiveoldstyle}% - {\tc@check@symbol2\textfiveoldstyle} -\DeclareTextCommandDefault{\textsixoldstyle}% - {\tc@check@symbol2\textsixoldstyle} -\DeclareTextCommandDefault{\textsevenoldstyle}% - {\tc@check@symbol2\textsevenoldstyle} -\DeclareTextCommandDefault{\texteightoldstyle}% - {\tc@check@symbol2\texteightoldstyle} -\DeclareTextCommandDefault{\textnineoldstyle}% - {\tc@check@symbol2\textnineoldstyle} -\DeclareTextCommandDefault{\textlangle}% - {\tc@check@symbol2\textlangle} -\DeclareTextCommandDefault{\textrangle}% - {\tc@check@symbol2\textrangle} -\DeclareTextCommandDefault{\textmho}% - {\tc@check@symbol2\textmho} -\DeclareTextCommandDefault{\textbigcircle}% - {\tc@check@symbol2\textbigcircle} -\DeclareTextCommandDefault{\textuparrow}% - {\tc@check@symbol2\textuparrow} -\DeclareTextCommandDefault{\textdownarrow}% - {\tc@check@symbol2\textdownarrow} -\DeclareTextCommandDefault{\textborn}% - {\tc@check@symbol2\textborn} -\DeclareTextCommandDefault{\textdivorced}% - {\tc@check@symbol2\textdivorced} -\DeclareTextCommandDefault{\textdied}% - {\tc@check@symbol2\textdied} -\DeclareTextCommandDefault{\textleaf}% - {\tc@check@symbol2\textleaf} -\DeclareTextCommandDefault{\textmarried}% - {\tc@check@symbol2\textmarried} -\DeclareTextCommandDefault{\textmusicalnote}% - {\tc@check@symbol2\textmusicalnote} -\DeclareTextCommandDefault{\textdblhyphenchar}% - {\tc@check@symbol2\textdblhyphenchar} -\DeclareTextCommandDefault{\textdollaroldstyle}% - {\tc@check@symbol2\textdollaroldstyle} -\DeclareTextCommandDefault{\textcentoldstyle}% - {\tc@check@symbol2\textcentoldstyle} -\DeclareTextCommandDefault{\textcolonmonetary}% - {\tc@check@symbol2\textcolonmonetary} -\DeclareTextCommandDefault{\textwon}% - {\tc@check@symbol2\textwon} -\DeclareTextCommandDefault{\textnaira}% - {\tc@check@symbol2\textnaira} -\DeclareTextCommandDefault{\textguarani}% - {\tc@check@symbol2\textguarani} -\DeclareTextCommandDefault{\textpeso}% - {\tc@check@symbol2\textpeso} -\DeclareTextCommandDefault{\textlira}% - {\tc@check@symbol2\textlira} -\DeclareTextCommandDefault{\textrecipe}% - {\tc@check@symbol2\textrecipe} -\DeclareTextCommandDefault{\textinterrobang}% - {\tc@check@symbol2\textinterrobang} -\DeclareTextCommandDefault{\textinterrobangdown}% - {\tc@check@symbol2\textinterrobangdown} -\DeclareTextCommandDefault{\textdong}% - {\tc@check@symbol2\textdong} -\DeclareTextCommandDefault{\textpertenthousand}% - {\tc@check@symbol2\textpertenthousand} -\DeclareTextCommandDefault{\textpilcrow}% - {\tc@check@symbol2\textpilcrow} -\DeclareTextCommandDefault{\textbaht}% - {\tc@check@symbol2\textbaht} -\DeclareTextCommandDefault{\textnumero}% - {\tc@check@symbol2\textnumero} -\DeclareTextCommandDefault{\textdiscount}% - {\tc@check@symbol2\textdiscount} -\DeclareTextCommandDefault{\textopenbullet}% - {\tc@check@symbol2\textopenbullet} -\DeclareTextCommandDefault{\textservicemark}% - {\tc@check@symbol2\textservicemark} -\DeclareTextCommandDefault{\textlquill}% - {\tc@check@symbol2\textlquill} -\DeclareTextCommandDefault{\textrquill}% - {\tc@check@symbol2\textrquill} -\DeclareTextCommandDefault{\textcopyleft}% - {\tc@check@symbol2\textcopyleft} -\DeclareTextCommandDefault{\textcircledP}% - {\tc@check@symbol2\textcircledP} -\DeclareTextCommandDefault{\textreferencemark}% - {\tc@check@symbol2\textreferencemark} -\DeclareTextCommandDefault{\textsurd}% - {\tc@check@symbol2\textsurd} -% \end{macrocode} -% The |\textcircled| and |\t| are handled specially, unless the -% current font has a subset id of 0 (i.e. full \texttt{TS1}) we -% pick the symbols up from the the math font encodings, i.e., the -% third argument to |\CheckEncodingSubset| uses |\UseTextAccent| to -% get them from there. -% \begin{macrocode} -\DeclareTextCommandDefault{\textcircled} - {\CheckEncodingSubset\UseTextAccent{TS1}% - {\UseTextAccent{OMS}}1\textcircled} -\DeclareTextCommandDefault{\t} - {\CheckEncodingSubset\UseTextAccent{TS1}% - {\UseTextAccent{OML}}1\t} -% \end{macrocode} - - -% -% Finally input the encoding-specific definitions for -% \texttt{TS1} thus making the top-level definitions -% optimised for this encoding (and not for the default -% encoding, see section~\ref{sec:orderofdecls}). -% \changes{v1.9o}{1998/03/20}{Load decls after defaults for speed.} -% \begin{macrocode} -\input{ts1enc.def} -% \end{macrocode} -% Now having the new glyphs available we also want to make sure -% that they are used. For most cases this will automatically happen -% but for some glyphs there are inferior definitions already known -% to \LaTeX{} which will prevent the usage of the \texttt{TS1} -% versions (see section~\ref{sec:removeencspec} above). So we better -% get rid of them: -% \changes{v1.9o}{1998/03/20}{Added various \cs{UndeclareTextCommand} -% declarations for pr/2783} -% \begin{macrocode} -\UndeclareTextCommand{\textsterling}{OT1} -\UndeclareTextCommand{\textdollar} {OT1} -% \end{macrocode} -% Similar declarations should probably be made for other encodings -% like \texttt{OT4} if they are in use. -% \begin{macrocode} -%\UndeclareTextCommand{\textsterling}{OT4} -%\UndeclareTextCommand{\textdollar} {OT4} -% \end{macrocode} -% From the \texttt{T1} encoding there are two candidates for removal: -% \textperthousand{} and \textpertenthousand{} since these are both -% constructed from \% followed by a tiny -% `{\fontencoding{T1}\selectfont \char 24}' -% rather than being a single glyph. The problem with this -% approach is that in PostScript fonts this small zero is usually not -% available resulting in \%\rule{3pt}{3pt} rather than -% \textperthousand{} while the real glyph (at least for -% |\textperthousand|) is available in the PostScript version of -% \texttt{TS1}. So for the moment we compromise by removing the -% \texttt{T1} declaration for |\textperthousand| but keeping the one -% for |\textpertenthousand|. This will have the effect that with -% Computer Modern fonts everything will come out (although -% \textperthousand{} and \textpertenthousand{} are not taken from the -% same physical font) and with PostScript fonts \textperthousand{} -% will come out correctly while \textpertenthousand{} will most -% likely look like \%\rule{6pt}{3pt} --- which is probably an -% improvement over just getting a single `\rule{3pt}{3pt}' to -% indicate a completely missing glyph, which would happen if we -% also `undeclared' |\textpertenthousand|. -% \begin{macrocode} -\UndeclareTextCommand{\textperthousand}{T1} -%\UndeclareTextCommand{\textpertenthousand}{T1} -% \end{macrocode} -% -% -% \subsubsection{Supporting oldstyle digits} -% -% \begin{macrocode} -\DeclareRobustCommand\oldstylenums[1]{% - \begingroup - \ifmmode - \mathgroup\symletters #1% - \else - \CheckEncodingSubset\@use@text@encoding{TS1}% - {\PackageWarning{textcomp}% - {Oldstyle digits unavailable for - family \f@family.\MessageBreak - Lining digits used instead}}% - \tw@{#1}% - \fi - \endgroup -} -% \end{macrocode} -% -% \subsubsection{Subset encoding defaults} -% -% For many font families commonly used in the \TeX{} world we -% provide the subset encoding data here. Users can add additional -% font families in the file \texttt{textcomp.cfg} if they own other -% fonts. -% -% However, if the option ``forced'' was given then all subset -% encoding specifications are ignored, so there is no point in -% setting any of them up: -% \begin{macrocode} -\iftc@forced \else -% \end{macrocode} -% -% Computer modern based fonts (e.g., CM, CM-Bright, Concrete): -% \begin{macrocode} -\DeclareEncodingSubset{TS1}{cmr} {0} -\DeclareEncodingSubset{TS1}{cmss} {0} -\DeclareEncodingSubset{TS1}{cmtt} {0} -\DeclareEncodingSubset{TS1}{cmvtt} {0} -\DeclareEncodingSubset{TS1}{cmbr} {0} -\DeclareEncodingSubset{TS1}{cmtl} {0} -\DeclareEncodingSubset{TS1}{ccr} {0} -% \end{macrocode} -% -% PSNFSS fonts: -% \begin{macrocode} -\DeclareEncodingSubset{TS1}{ptm} {4} -\DeclareEncodingSubset{TS1}{pcr} {4} -\DeclareEncodingSubset{TS1}{phv} {4} -\DeclareEncodingSubset{TS1}{ppl} {3} -\DeclareEncodingSubset{TS1}{pag} {4} -\DeclareEncodingSubset{TS1}{pbk} {4} -\DeclareEncodingSubset{TS1}{pnc} {4} -\DeclareEncodingSubset{TS1}{pzc} {4} -\DeclareEncodingSubset{TS1}{bch} {4} -\DeclareEncodingSubset{TS1}{put} {5} -% \end{macrocode} -% -% Other CTAN fonts (probably not complete): -% \begin{macrocode} -\DeclareEncodingSubset{TS1}{uag} {5} -\DeclareEncodingSubset{TS1}{ugq} {5} -\DeclareEncodingSubset{TS1}{ul8} {4} -\DeclareEncodingSubset{TS1}{ul9} {4} % (LuxiSans, one day) -\DeclareEncodingSubset{TS1}{augie} {5} -\DeclareEncodingSubset{TS1}{dayrom} {3} -\DeclareEncodingSubset{TS1}{dayroms} {3} -\DeclareEncodingSubset{TS1}{pxr} {0} -\DeclareEncodingSubset{TS1}{pxss} {0} -\DeclareEncodingSubset{TS1}{pxtt} {0} -\DeclareEncodingSubset{TS1}{txr} {0} -\DeclareEncodingSubset{TS1}{txss} {0} -\DeclareEncodingSubset{TS1}{txtt} {0} -% \end{macrocode} -% -% Latin Modern and TeX Gyre: -% \changes{v1.99k}{2009/10/28}{Added Latin Modern and TeX Gyre subsets} -% \changes{v1.99l}{2009/11/04}{Added more Latin Modern and TeX Gyre subsets} -% \changes{v1.99m}{2015/02/16}{Added lmtt (Heiko Oberdiek) latex/4415} -% \begin{macrocode} -\DeclareEncodingSubset{TS1}{lmr} {0} -\DeclareEncodingSubset{TS1}{lmdh} {0} -\DeclareEncodingSubset{TS1}{lmss} {0} -\DeclareEncodingSubset{TS1}{lmssq} {0} -\DeclareEncodingSubset{TS1}{lmvtt} {0} -\DeclareEncodingSubset{TS1}{lmtt} {0} -% \end{macrocode} -% -% \begin{macrocode} -\DeclareEncodingSubset{TS1}{qhv} {0} -\DeclareEncodingSubset{TS1}{qag} {0} -\DeclareEncodingSubset{TS1}{qbk} {0} -\DeclareEncodingSubset{TS1}{qcr} {0} -\DeclareEncodingSubset{TS1}{qcs} {0} -\DeclareEncodingSubset{TS1}{qpl} {0} -\DeclareEncodingSubset{TS1}{qtm} {0} -\DeclareEncodingSubset{TS1}{qzc} {0} -\DeclareEncodingSubset{TS1}{qhvc} {0} -% \end{macrocode} -% -% Fourier-GUTenberg: -% \begin{macrocode} -\DeclareEncodingSubset{TS1}{futs} {4} -\DeclareEncodingSubset{TS1}{futx} {4} -\DeclareEncodingSubset{TS1}{futj} {4} -% \end{macrocode} -% -% Y\&Y's Lucida Bright -% \begin{macrocode} -\DeclareEncodingSubset{TS1}{hlh} {3} -\DeclareEncodingSubset{TS1}{hls} {3} -\DeclareEncodingSubset{TS1}{hlst} {3} -% \end{macrocode} -% The remaining settings for Lucida are conservative: the following -% fonts contain the |\textohm| character but not the |\texteuro|, -% i.e., belong to neither subset~4 nor subset~3. If you want to -% use the |\textohm| with these fonts copy these definition to -% \texttt{textcomp.cfg} and change the subset to~3. However in that -% case make sure that you do not use the |\texteuro|. -% \begin{macrocode} -\DeclareEncodingSubset{TS1}{hlct} {5} -\DeclareEncodingSubset{TS1}{hlx} {5} -\DeclareEncodingSubset{TS1}{hlce} {5} -\DeclareEncodingSubset{TS1}{hlcn} {5} -\DeclareEncodingSubset{TS1}{hlcw} {5} -\DeclareEncodingSubset{TS1}{hlcf} {5} -% \end{macrocode} -% -% Other commercial families\ldots -% \begin{macrocode} -\DeclareEncodingSubset{TS1}{pplx} {3} -\DeclareEncodingSubset{TS1}{pplj} {3} -\DeclareEncodingSubset{TS1}{ptmx} {4} -\DeclareEncodingSubset{TS1}{ptmj} {4} -% \end{macrocode} -% -% If the file \texttt{textcomp.cfg} exists it will be loaded at -% this point. This allows to define further subset encodings for -% font families not covered by default. -% -% \begin{macrocode} -\InputIfFileExists{textcomp.cfg} - {\PackageInfo{textcomp}{Local configuration file used}}{} -% \end{macrocode} -% -% \begin{macrocode} -\fi -% -% \end{macrocode} % % \Finale % diff --git a/macros/latex-dev/base/ltoutenc.ins b/macros/latex-dev/base/ltoutenc.ins index e3f436fbc1..71bee61f57 100644 --- a/macros/latex-dev/base/ltoutenc.ins +++ b/macros/latex-dev/base/ltoutenc.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2019 +%% Copyright (C) 1993-2020 %% The LaTeX3 Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. @@ -96,8 +96,9 @@ extension .ins) which are part of the distribution. \from{ltoutenc.dtx}{TS1}} \file{tuenc.def}{ \from{ltoutenc.dtx}{TU}} - \file{textcomp.sty}{ - \from{ltoutenc.dtx}{TS1sty}} +% no longer in this file since 2020/02 release +% \file{textcomp.sty}{ +% \from{ltoutenc.dtx}{TS1sty}} \file{fontenc.sty}{ \from{ltoutenc.dtx}{package}} } diff --git a/macros/latex-dev/base/ltoutput.dtx b/macros/latex-dev/base/ltoutput.dtx index 138bc85ba3..131560b22e 100644 --- a/macros/latex-dev/base/ltoutput.dtx +++ b/macros/latex-dev/base/ltoutput.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltpage.dtx b/macros/latex-dev/base/ltpage.dtx index c5ce52b1c6..bf203fb9c9 100644 --- a/macros/latex-dev/base/ltpage.dtx +++ b/macros/latex-dev/base/ltpage.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltpageno.dtx b/macros/latex-dev/base/ltpageno.dtx index f6b10985b8..6374f58b89 100644 --- a/macros/latex-dev/base/ltpageno.dtx +++ b/macros/latex-dev/base/ltpageno.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltpar.dtx b/macros/latex-dev/base/ltpar.dtx index 75b4894eb1..ed1b439e9d 100644 --- a/macros/latex-dev/base/ltpar.dtx +++ b/macros/latex-dev/base/ltpar.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltpictur.dtx b/macros/latex-dev/base/ltpictur.dtx index ad82cd477f..da3cdf897d 100644 --- a/macros/latex-dev/base/ltpictur.dtx +++ b/macros/latex-dev/base/ltpictur.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltplain.dtx b/macros/latex-dev/base/ltplain.dtx index 2337133f2f..2e5a345ecb 100644 --- a/macros/latex-dev/base/ltplain.dtx +++ b/macros/latex-dev/base/ltplain.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltsect.dtx b/macros/latex-dev/base/ltsect.dtx index b4851f28e2..c658c23818 100644 --- a/macros/latex-dev/base/ltsect.dtx +++ b/macros/latex-dev/base/ltsect.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltspace.dtx b/macros/latex-dev/base/ltspace.dtx index 2abc1a4f23..078da324d2 100644 --- a/macros/latex-dev/base/ltspace.dtx +++ b/macros/latex-dev/base/ltspace.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -397,7 +397,7 @@ % \begin{macrocode} % %<*2ekernel|latexrelease> -%\IncludeInRelease{2020/02/01}% +%\IncludeInRelease{2020/02/02}% % {\@normalcr}{Make robust}% \protected\def\@normalcr{% \let \reserved@e \relax diff --git a/macros/latex-dev/base/lttab.dtx b/macros/latex-dev/base/lttab.dtx index aa2a00390f..dcb82dece7 100644 --- a/macros/latex-dev/base/lttab.dtx +++ b/macros/latex-dev/base/lttab.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/lttextcomp.dtx b/macros/latex-dev/base/lttextcomp.dtx new file mode 100644 index 0000000000..fc208c2e74 --- /dev/null +++ b/macros/latex-dev/base/lttextcomp.dtx @@ -0,0 +1,2215 @@ +% \iffalse meta-comment +% +% Copyright (C) 2019 +% The LaTeX3 Project and any individual authors listed elsewhere +% in this file. +% +% This file is part of the LaTeX base system. +% ------------------------------------------- +% +% It may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3c +% of this license or (at your option) any later version. +% The latest version of this license is in +% https://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2008 or later. +% +% This file has the LPPL maintenance status "maintained". +% +% The list of all files belonging to the LaTeX base distribution is +% given in the file `manifest.txt'. See also `legal.txt' for additional +% information. +% +% The list of derived (unpacked) files belonging to the distribution +% and covered by LPPL is defined by the unpacking scripts (with +% extension .ins) which are part of the distribution. +% +% \fi +% \iffalse +% +%<*driver> +% \fi +% +% +\ProvidesFile{lttextcomp.dtx} + [2019/12/24 v1.0a LaTeX Kernel (text companion symbols)] +% \iffalse +\documentclass{ltxdoc} +\begin{document} +\DocInput{lttextcomp.dtx} +\end{document} +% +% \fi +% +% +% +% +% \GetFileInfo{lttextcomp.dtx} +% \title{Providing addtional text symbols\\ +% (previously available through the \texttt{textcomp} package)\thanks +% {This file has version number +% \fileversion\ dated \filedate}} +% +% \author{Frank Mittelbach} +% +% \MaintainedByLaTeXTeam{latex} +% \maketitle +% +% This file contains the implementation for accessing the glyphs +% provided by the \texttt{TS1} encoding (Text Companion +% Encoding). This is now offered as part of the kernel and so the +% \texttt{textcomp} package which used to provide the definitions is +% now mainly needed for compatibility reasons (and doesn't do much any +% more). +% +% +% +% \StopEventually{} +% +% +% \begin{macro}{\oldstylenums} +% \begin{macro}{\legacyoldstylenums} +% +% +% Preserve the old definition of \cs{oldstylenums} under a different name. +% +% This macro implements old style numerals but only works if we +% assume that the standard math fonts are used. Thus it needs +% changing in case other math encodings are used. +% \begin{macrocode} +%<*2ekernel|latexrelease> +%\IncludeInRelease{2020/02/02}% +% {\oldstylenums}{Old style numerals}% +\DeclareRobustCommand\legacyoldstylenums[1]{% + \begingroup +% \end{macrocode} +% Provide spacing using the interword space of the current font. +% \begin{macrocode} + \spaceskip\fontdimen\tw@\font +% \end{macrocode} +% Then switch to the math italic font. We don't change the current +% value of |\f@series| which means that you can use bold numerals +% if |\bfseries| is in force. As family we use |\rmdefault| which +% means that this only works if there exist an |OML| encoded +% version of that font or rather a corresponding |.fd| file (which +% is the case for standard \LaTeX{} fonts even though they only +% contain substitutions). +% \changes{v3.0j}{1999/02/12}{Use \cs{rmdefault} instead of \texttt{cmm} +% (pr/2954)} +% \begin{macrocode} + \usefont{OML}{\rmdefault}{\f@series}{it}% + \mathgroup\symletters #1% + \endgroup +} +% \end{macrocode} +% +% And here is the improved one that adjusts depending on surroundings. +% \begin{macrocode} +\DeclareRobustCommand\oldstylenums[1]{% + \begingroup + \ifmmode + \mathgroup\symletters #1% + \else +% \end{macrocode} +% The \cs{CheckEncodingSubset} is discused below. +% \begin{macrocode} + \CheckEncodingSubset\@use@text@encoding{TS1}\tc@oldstylesubst2{{#1}}% + \fi + \endgroup +} +% \end{macrocode} +% The helper to select the substitution if needed. +% \begin{macrocode} +\def\tc@oldstylesubst#1{% + \tc@errorwarn + {Oldstyle digits unavailable for + family \f@family.\MessageBreak + Default oldstyle digits used instead}\@eha + \bgroup + \expand@font@defaults +% \end{macrocode} +% The substitution defaults are provided in the file \texttt{fonttext.ltx}. +% \begin{macrocode} + \ifx\f@family\rmdef@ult + \fontfamily\rmsubstdefault + \else\ifx\f@family\sfdef@ult + \fontfamily\sfsubstdefault + \else\ifx\f@family\ttdef@ult + \fontfamily\ttsubstdefault + \else + \fontfamily\textcompsubstdefault + \fi\fi\fi + \fontencoding{TS1}\selectfont#1% + \egroup +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\textcompsubstdefault} +% Here is the default for the ``unknown'' case: +% \begin{macrocode} +\def\textcompsubstdefault{\rmsubstdefault} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macrocode} +% +%\EndIncludeInRelease +%\IncludeInRelease{0000/00/00}% +% {\oldstylenums}{Old style numerals}% +% +%\DeclareRobustCommand\oldstylenums[1]{% +% \begingroup +% \spaceskip\fontdimen\tw@\font +% \usefont{OML}{\rmdefault}{\f@series}{it}% +% \mathgroup\symletters #1% +% \endgroup +%} +%\let\legacyoldstylenums\@undefined +%\def\textcompsubstdefault{cmr} +% +%\EndIncludeInRelease +% \end{macrocode} +% +% + + + + + +% Everything else in the this file got introduced 2020/02/02, so we do a +% single rollback (for now). +% \begin{macrocode} +%<*2ekernel> +% +%<*2ekernel|latexrelease> +%\IncludeInRelease{2020/02/02}% +% {\DeclareEncodingSubset}{Text companion symbols}% +% \end{macrocode} +% +% +% +% \begin{macro}{\DeclareEncodingSubset} +% +% The declaration takes 3 mandatory arguments: an \emph{encoding} +% for which a subsetting is wanted (currently always \texttt{TS1}, +% and most likely forever), the \emph{font family} for which we +% declare the subset and finally the \emph{subset} number (between \texttt{0} (all +% of the encoding is supported) and \texttt{9} many glyphs are missing. +% +% For \texttt{TS1} the numbers have been choosen in a way that most +% fonts can be fairly correctly categorized, but the default +% settings are always conservative, that is they may claim that +% less glyphs are supported than there actually are. +% +% As these days many font families are set up to end in \texttt{-LF} +% (lining figures), \texttt{-OsF} (oldstyle figures), etc.\ the +% declaration supports a shortcut: if the \emph{font family} name +% ends in \texttt{-*} then the star gets replaced by these common +% ending, e.g., +%\begin{verbatim} +% \DeclareEncodingSubeset{TS1}{Alegreya-*}{2} +%\end{verbatim} +% is the same as writing +%\begin{verbatim} +% \DeclareEncodingSubeset{TS1}{Alegreya-LF}{2} +% \DeclareEncodingSubeset{TS1}{Alegreya-OsF}{2} +% \DeclareEncodingSubeset{TS1}{Alegreya-TLF}{2} +% \DeclareEncodingSubeset{TS1}{Alegreya-TOsF}{2} +%\end{verbatim} +% If only some are needed then one can define them individually but +% in many cases all four are wanted, hence the shortcut. +% +% +% The coding of the declaration has no error checking as it is +% mostly for internal use. +% \begin{macrocode} +\def\DeclareEncodingSubset#1#2{% + \DeclareEncodingSubset@aux{#1}#2*\DeclareEncodingSubset@aux +} +% \end{macrocode} +% +% \begin{macrocode} +\def\DeclareEncodingSubset@aux#1#2*#3\DeclareEncodingSubset@aux#4{% +% \end{macrocode} +% if \verb=#3= is empty then there was no star, otherwise we we +% define all four variants. +% \begin{macrocode} + \expandafter\ifx\expandafter X\detokenize{#3}X% + \@DeclareEncodingSubset{#1}{#2}{#4}% + \else + \@DeclareEncodingSubset{#1}{#2LF}{#4}% + \@DeclareEncodingSubset{#1}{#2TLF}{#4}% + \@DeclareEncodingSubset{#1}{#2OsF}{#4}% + \@DeclareEncodingSubset{#1}{#2TOsF}{#4}% + \fi +} +% \end{macrocode} +% +% The subset info is stored in a command with the name +% \texttt{\bslash}\emph{family}\texttt{:}\emph{subset} so if that +% already exists we change otherwise declare a subset. +% \begin{macrocode} +\def\@DeclareEncodingSubset#1#2#3{% + \@ifundefined{#1:#2}% + {\@font@info{Setting #2 sub-encoding to #1/#3}}% + {\@font@info{Changing #2 sub-encoding to #1/#3}}% + \@namedef{#1:#2}{#3}} +% \end{macrocode} +% +% Any reason to allow those in the middle of documents? +% \begin{macrocode} +\@onlypreamble\DeclareEncodingSubset +\@onlypreamble\DeclareEncodingSubset@aux +\@onlypreamble\@DeclareEncodingSubset +% \end{macrocode} +% \end{macro} + + +% \begin{macro}{\CheckEncodingSubset} +% The command |\CheckEncodingSubset| will check if the current font +% family has the right encoding subset to typeset a certain +% command. It takes five arguments as follows: +% first argument is either |\UseTextSymbol|, |\UseTextAccent| +% depending on whether or not the symbol is a text symbol or a text +% accent. + +% The second argument is the encoding from which this symbol should +% be fetched. +% +% The third argument is either a fake accessor command or an error +% message. the code in that argument (if ever executed) receives +% two arguments: |#2| and |#5| of |\CheckEncodingSubset|. +% +% Argument four is the subset encoding id to test against: if this +% value is higher than the subset id of the current font family +% then we typeset the symbol, i.e., execute |#1{#2}#5| otherwise +% it runs |#3#5|, e.g., to produce an error message or fake the +% glyph somehow. +% +% Argument five is the symbol or accent command that is being +% checked. +% +% For usage examples see definitions below. +% +% \begin{macrocode} +\def\CheckEncodingSubset#1#2#3#4#5{% + \ifnum #4>% + \expandafter\ifx\csname #2:\f@family\endcsname\relax + 0\csname #2:?\endcsname + \else + \csname #2:\f@family\endcsname + \fi + \relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {#1{#2}}{#3}% + #5% +} +% \end{macrocode} +% \end{macro} + + + + + +% To set up the glyphs for the subsets we need a number helpers. +% +% \begin{macro}{\tc@errorwarn} +% To we produce errors, warnings, or only info in the transcripts +% if glyphs require substitutions? By default it is ``info'' +% only. With the \texttt{textcomp} package that can be changed. +% \begin{macrocode} +\def\tc@errorwarn#1#2{\@latex@info{#1}} +% \end{macrocode} +% \end{macro} + + +% \begin{macro}{\tc@subst} +% +% \begin{macrocode} +\def\tc@subst#1{% + \tc@errorwarn + {Symbol \string#1 not provided by\MessageBreak + font family \f@family\space + in TS1 encoding.\MessageBreak Default family used instead}\@eha + \bgroup + \expand@font@defaults + \ifx\f@family\rmdef@ult + \fontfamily\rmsubstdefault + \else\ifx\f@family\sfdef@ult + \fontfamily\sfsubstdefault + \else\ifx\f@family\ttdef@ult + \fontfamily\ttsubstdefault + \else + \fontfamily\substdefault + \fi\fi\fi +% \end{macrocode} +% Whatever default was chosen, we claim now (locally hopefully) +% that it can handle all slots (even if not true) to avoid looping +% in certain situations, e.g., when something was set up incorrectly. +% \begin{macrocode} + \@namedef{TS1:\f@family}{0}% + \selectfont#1% + \egroup +} +% \end{macrocode} +% \end{macro} + + + + +% \begin{macro}{\tc@fake@euro} +% |\tc@fake@euro| is an example of a ``fake'' definition to use in arg |#3| of +% |\CheckEncodingSubset| when a symbol is not available in a +% certain font family. Here we produce a poor man's Euro symbol by combining +% a ``C'' with a ``=''. +% \begin{macrocode} +\def\tc@fake@euro#1{% + \leavevmode + \@font@info{Faking \noexpand#1for font family + \f@family\MessageBreak in TS1 encoding}% + \valign{##\cr + \vfil\hbox to 0.07em{\dimen@\f@size\p@ + \math@fontsfalse + \fontsize{.7\dimen@}\z@\selectfont=\hss}% + \vfil\cr% + \hbox{C}\crcr + }% +} +% \end{macrocode} +% \end{macro} + + + + +% \begin{macro}{\tc@check@symbol} +% \begin{macro}{\tc@check@accent} +% These are two abbreviations that we use below to check symbols +% and accents in TS1. Only there to save some space, e.g., we can +% then write +%\begin{verbatim} +%\DeclareTextCommandDefault{\textcurrency}{\tc@check@symbol3\textcurrency} +%\end{verbatim} +% to ensure that |\textcurrency| is only typeset if the current +% font has a \texttt{TS1} subset id of less than 3. Otherwise +% |\tc@error| is called telling the user that for this font family +% |\textcurreny| is not available. +% \begin{macrocode} +\def\tc@check@symbol{\CheckEncodingSubset\UseTextSymbol{TS1}\tc@subst} +% \end{macrocode} +% +% Accents and been mad an error in the \texttt{textcomp} package when +% not available. Now that we provide the functionality in the +% kernel we avoid the eror by swapping in a \texttt{T1} accent if +% the \texttt{TS1} accent is not available. +% \begin{macrocode} +%\def\tc@check@accent{\CheckEncodingSubset\UseTextAccent{TS1}\tc@error} +% \end{macrocode} +% +% \begin{macrocode} +\def\tc@check@accent#1{\CheckEncodingSubset\UseTextAccent{TS1}{\tc@swap@accent#1}} +\def\tc@swap@accent#1#2{\UseTextAccent{T1}#1} +% \end{macrocode} +% \end{macro} +% \end{macro} +% + +% \section{Sub-encodings} +% +% Here are the default definitions for the \texttt{TS1} symbols. +% First those that we assume are always available if a font +% implements \texttt{TS1}. +% +% \begin{macrocode} +\DeclareTextSymbolDefault{\textdollar}{TS1} +\UndeclareTextCommand{\textdollar} {OT1} % don't use the OT1 def any longer +% \end{macrocode} +% +% \begin{macrocode} +\DeclareTextSymbolDefault{\textsterling}{TS1} +\UndeclareTextCommand{\textsterling}{OT1} % don't use the OT1 def any longer +% \end{macrocode} +% +% \begin{macrocode} +\DeclareTextSymbolDefault{\textperthousand}{TS1} +\UndeclareTextCommand{\textperthousand}{T1} % don't use the T1 def + % should actually not be declaed + % in the t1enc.def file instead + % otherwise fontenc would overwrite + % it again (legacy tests!) +% \end{macrocode} +% +% These are the standard \texttt{itemize} and footnote symbols +% originally taken from \texttt{OMS} and now from \texttt{TS1}: +% \begin{macrocode} +\DeclareTextSymbolDefault{\textasteriskcentered}{TS1} +\DeclareTextSymbolDefault{\textbullet}{TS1} +\DeclareTextSymbolDefault{\textdaggerdbl}{TS1} +\DeclareTextSymbolDefault{\textdagger}{TS1} +\DeclareTextSymbolDefault{\textparagraph}{TS1} +\DeclareTextSymbolDefault{\textperiodcentered}{TS1} +\DeclareTextSymbolDefault{\textsection}{TS1} +% \end{macrocode} +% +% And here are the other \texttt{TS1} glyphs that are implemented +% by every font (or nearly everyone---a few are commented out and +% moved to sub-encoding 9, +% because they aren't around in one or two fonts. +% \begin{macrocode} +%%\DeclareTextSymbolDefault{\textbardbl}{TS1} % subst in sub-enc 9 above +\DeclareTextSymbolDefault{\textbrokenbar}{TS1} +%%\DeclareTextSymbolDefault{\textcelsius}{TS1} % subst in sub-enc 9 above +\DeclareTextSymbolDefault{\textcent}{TS1} +\DeclareTextSymbolDefault{\textcopyright}{TS1} +\DeclareTextSymbolDefault{\textdegree}{TS1} +\DeclareTextSymbolDefault{\textdiv}{TS1} +\DeclareTextSymbolDefault{\textlnot}{TS1} +\DeclareTextSymbolDefault{\textonehalf}{TS1} +\DeclareTextSymbolDefault{\textonequarter}{TS1} +%%\DeclareTextSymbolDefault{\textonesuperior}{TS1} % subst in sub-enc 9 above +\DeclareTextSymbolDefault{\textordfeminine}{TS1} +\DeclareTextSymbolDefault{\textordmasculine}{TS1} +\DeclareTextSymbolDefault{\textpm}{TS1} +\DeclareTextSymbolDefault{\textquotesingle}{TS1} +\DeclareTextSymbolDefault{\textquotestraightbase}{TS1} +\DeclareTextSymbolDefault{\textquotestraightdblbase}{TS1} +\DeclareTextSymbolDefault{\textregistered}{TS1} +%%\DeclareTextSymbolDefault{\textthreequartersemdash}{TS1} % subst in sub-enc 9 above +\DeclareTextSymbolDefault{\textthreequarters}{TS1} +%%\DeclareTextSymbolDefault{\textthreesuperior}{TS1} % subst in sub-enc 9 above +\DeclareTextSymbolDefault{\texttimes}{TS1} +\DeclareTextSymbolDefault{\texttrademark}{TS1} +%%\DeclareTextSymbolDefault{\texttwelveudash}{TS1} % subst in sub-enc 9 above +%%\DeclareTextSymbolDefault{\texttwosuperior}{TS1} % subst in sub-enc 9 above +\DeclareTextSymbolDefault{\textyen}{TS1} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareTextSymbolDefault{\textcapitalcompwordmark}{TS1} +\DeclareTextSymbolDefault{\textascendercompwordmark}{TS1} +% \end{macrocode} +% +% +% In the following sections the remaining default definitions are ordered by +% sub-encoding in which they are become unavailable (i.e., they are +% not provided in the sub-encoding with that number and all +% sub-encodings with higher numbers. +% +% Thus the symbols that are available in sub-encoding $x$ are the +% symbols above (always available) and the symbols list in the +% sections for sub-encodings $x+1$ and higher. +% +% \subsection{Sub-encoding \texttt{1} (drop symbols not working in +% Latin Modern)} +% +% The \cs{textcircled} is available but the glyph is simply too +% small so we keep using the \texttt{OMS} glyph. +% \begin{macrocode} +\DeclareTextCommandDefault{\textcircled} + {\CheckEncodingSubset\UseTextAccent{TS1}{\UseTextAccent{OMS}}1\textcircled} +% \end{macrocode} +% +% +% +% +% +% \subsection{Sub-encoding \texttt{2} (majority of new OTF fonts via autoinst)} +% +% \begin{macrocode} +\DeclareTextCommandDefault{\t} + {\CheckEncodingSubset\UseTextAccent{TS1}{\UseTextAccent{OML}}2\t} +% \end{macrocode} +% +% Capital accents are really only very seldom implemented, so from +% sub-encoding \texttt{2} onwards we use the normal \texttt{T1} +% accents if they are asked for in the document. +% +% In Unicode engines we don't implement them at all but always use +% the basic accents instead. whether that works or not really +% depends on the font, something like \verb=\"X= usually comes out +% wrong in Unicode engines. +% +% \begin{macrocode} +\ifx\Umathcode\@undefined + \DeclareTextCommandDefault{\capitalacute} {\tc@check@accent{\'}2\capitalacute} + \DeclareTextCommandDefault{\capitalbreve} {\tc@check@accent{\u}2\capitalbreve} + \DeclareTextCommandDefault{\capitalcaron} {\tc@check@accent{\v}2\capitalcaron} + \DeclareTextCommandDefault{\capitalcedilla} {\tc@check@accent{\c}2\capitalcedilla} + \DeclareTextCommandDefault{\capitalcircumflex} {\tc@check@accent{\^}2\capitalcircumflex} + \DeclareTextCommandDefault{\capitaldieresis} {\tc@check@accent{\"}2\capitaldieresis} + \DeclareTextCommandDefault{\capitaldotaccent} {\tc@check@accent{\.}2\capitaldotaccent} + \DeclareTextCommandDefault{\capitalgrave} {\tc@check@accent{\`}2\capitalgrave} + \DeclareTextCommandDefault{\capitalhungarumlaut}{\tc@check@accent{\H}2\capitalhungarumlaut} + \DeclareTextCommandDefault{\capitalmacron} {\tc@check@accent{\=}2\capitalmacron} + \DeclareTextCommandDefault{\capitalogonek} {\tc@check@accent{\k}2\capitalogonek} + \DeclareTextCommandDefault{\capitalring} {\tc@check@accent{\r}2\capitalring} + \DeclareTextCommandDefault{\capitaltie} {\tc@check@accent{\t}2\capitaltie} + \DeclareTextCommandDefault{\capitaltilde} {\tc@check@accent{\~}2\capitaltilde} +% \end{macrocode} +% For \cs{newtie} and \cs{capitalnewtie} this is actually wrong, they should pick up +% the accent from the substitution font (not done yet). +% \begin{macrocode} + \DeclareTextCommandDefault{\newtie} {\tc@check@accent{\t}2\newtie} + \DeclareTextCommandDefault{\capitalnewtie} {\tc@check@accent{\t}2\capitalnewtie} +% \end{macrocode} +% +% In Unicode engines we just execute the simple accents: +% \begin{macrocode} +\else + \def\capitalacute{\'} + \def\capitalbreve{\u} + \def\capitalcaron{\v} + \def\capitalcedilla{\c} + \def\capitalcircumflex{\^} + \def\capitaldieresis{\"} + \def\capitaldotaccent{\.} + \def\capitalgrave{\`} + \def\capitalhungarumlaut{\H} + \def\capitalmacron{\=} + \def\capitalnewtie{\t} + \def\capitalogonek{\k} + \def\capitalring{\r} + \def\capitaltie{\t} + \def\capitaltilde{\~} + \def\newtie{\t} +\fi +% \end{macrocode} +% +% +% +% +% The next two symbols exist in some fonts (faked?), but we ignore +% that to keep the subsets reasonable compact and most important linear. +% \begin{macrocode} +\DeclareTextCommandDefault{\textlbrackdbl} {\tc@check@symbol2\textlbrackdbl} +\DeclareTextCommandDefault{\textrbrackdbl} {\tc@check@symbol2\textrbrackdbl} +% \end{macrocode} +% +% +% Old style numerals are again in some fonts but using +% \texttt{-OsF}, etc.\ is the better approach to get them, so we +% claim they aren't in sub-encoding 2 as that's true for most +% fonts. +% \begin{macrocode} +\DeclareTextCommandDefault{\texteightoldstyle} {\tc@check@symbol2\texteightoldstyle} +\DeclareTextCommandDefault{\textfiveoldstyle} {\tc@check@symbol2\textfiveoldstyle} +\DeclareTextCommandDefault{\textfouroldstyle} {\tc@check@symbol2\textfouroldstyle} +\DeclareTextCommandDefault{\textnineoldstyle} {\tc@check@symbol2\textnineoldstyle} +\DeclareTextCommandDefault{\textoneoldstyle} {\tc@check@symbol2\textoneoldstyle} +\DeclareTextCommandDefault{\textsevenoldstyle} {\tc@check@symbol2\textsevenoldstyle} +\DeclareTextCommandDefault{\textsixoldstyle} {\tc@check@symbol2\textsixoldstyle} +\DeclareTextCommandDefault{\textthreeoldstyle} {\tc@check@symbol2\textthreeoldstyle} +\DeclareTextCommandDefault{\texttwooldstyle} {\tc@check@symbol2\texttwooldstyle} +\DeclareTextCommandDefault{\textzerooldstyle} {\tc@check@symbol2\textzerooldstyle} +% \end{macrocode} +% +% +% +% The next set of glyphs is special to TeX fonts (and available +% with a few older PS fonts supported in the virtual fonts), but +% not any longer in the majority of fonts provided through +% autoinst, so we pretend there aren't available in sub-encoding 2 +% and below. +% \begin{macrocode} +\DeclareTextCommandDefault{\textacutedbl} {\tc@check@symbol2\textacutedbl} +\DeclareTextCommandDefault{\textasciiacute} {\tc@check@symbol2\textasciiacute} +\DeclareTextCommandDefault{\textasciibreve} {\tc@check@symbol2\textasciibreve} +\DeclareTextCommandDefault{\textasciicaron} {\tc@check@symbol2\textasciicaron} +\DeclareTextCommandDefault{\textasciidieresis} {\tc@check@symbol2\textasciidieresis} +\DeclareTextCommandDefault{\textasciigrave} {\tc@check@symbol2\textasciigrave} +\DeclareTextCommandDefault{\textasciimacron} {\tc@check@symbol2\textasciimacron} +\DeclareTextCommandDefault{\textgravedbl} {\tc@check@symbol2\textgravedbl} +\DeclareTextCommandDefault{\texttildelow} {\tc@check@symbol2\texttildelow} +% \end{macrocode} +% +% +% Finally those below are only available in CM-based fonts but in +% no font that has its origin outside of the \TeX{} world. +% \begin{macrocode} +\DeclareTextCommandDefault{\textbaht} {\tc@check@symbol2\textbaht} +\DeclareTextCommandDefault{\textbigcircle} {\tc@check@symbol2\textbigcircle} +\DeclareTextCommandDefault{\textborn} {\tc@check@symbol2\textborn} +\DeclareTextCommandDefault{\textcentoldstyle} {\tc@check@symbol2\textcentoldstyle} +\DeclareTextCommandDefault{\textcircledP} {\tc@check@symbol2\textcircledP} +\DeclareTextCommandDefault{\textcopyleft} {\tc@check@symbol2\textcopyleft} +\DeclareTextCommandDefault{\textdblhyphenchar} {\tc@check@symbol2\textdblhyphenchar} +\DeclareTextCommandDefault{\textdblhyphen} {\tc@check@symbol2\textdblhyphen} +\DeclareTextCommandDefault{\textdied} {\tc@check@symbol2\textdied} +\DeclareTextCommandDefault{\textdiscount} {\tc@check@symbol2\textdiscount} +\DeclareTextCommandDefault{\textdivorced} {\tc@check@symbol2\textdivorced} +\DeclareTextCommandDefault{\textdollaroldstyle} {\tc@check@symbol2\textdollaroldstyle} +\DeclareTextCommandDefault{\textguarani} {\tc@check@symbol2\textguarani} +\DeclareTextCommandDefault{\textleaf} {\tc@check@symbol2\textleaf} +\DeclareTextCommandDefault{\textlquill} {\tc@check@symbol2\textlquill} +\DeclareTextCommandDefault{\textmarried} {\tc@check@symbol2\textmarried} +\DeclareTextCommandDefault{\textmho} {\tc@check@symbol2\textmho} +\DeclareTextCommandDefault{\textmusicalnote} {\tc@check@symbol2\textmusicalnote} +\DeclareTextCommandDefault{\textnaira} {\tc@check@symbol2\textnaira} +\DeclareTextCommandDefault{\textopenbullet} {\tc@check@symbol2\textopenbullet} +\DeclareTextCommandDefault{\textpeso} {\tc@check@symbol2\textpeso} +\DeclareTextCommandDefault{\textpilcrow} {\tc@check@symbol2\textpilcrow} +\DeclareTextCommandDefault{\textrecipe} {\tc@check@symbol2\textrecipe} +\DeclareTextCommandDefault{\textreferencemark} {\tc@check@symbol2\textreferencemark} +\DeclareTextCommandDefault{\textrquill} {\tc@check@symbol2\textrquill} +\DeclareTextCommandDefault{\textservicemark} {\tc@check@symbol2\textservicemark} +\DeclareTextCommandDefault{\textsurd} {\tc@check@symbol2\textsurd} +% \end{macrocode} +% +% The \cs{textpertenthousand} also belongs in this group but here +% we have a choice: in T1 there is definition for +% \cs{textpertenthousand} making the symbol up from \% and +% \verb=\char 24= (twice) but in many fonts that char doesn't exist +% and the slot is reused for random ligatures. So better not use it +% because often it is wrong. But pointing to TS1 is also not great +% as only a few fonts have it as a real symbol, so we get a +% substitution to CM or LM. +% +% Alternatively we could just state that the symbol is unavailable in +% those fonts. For now I substitute. +% \begin{macrocode} +\DeclareTextCommandDefault{\textpertenthousand} {\tc@check@symbol2\textpertenthousand} +\UndeclareTextCommand{\textpertenthousand}{T1} +% \end{macrocode} +% +% +% +% \subsection{Sub-encoding \texttt{3}} +% +% Sub-encoding \texttt{2} is the one where we loose many +% symbols. In the higher-numbered sub-encodings we see only a few +% dropped additionally. +% \begin{macrocode} +\DeclareTextCommandDefault{\textlangle} {\tc@check@symbol3\textlangle} +\DeclareTextCommandDefault{\textrangle} {\tc@check@symbol3\textrangle} +% \end{macrocode} +% +% +% +% +% +% \subsection{Sub-encoding \texttt{4}} +% +% \begin{macrocode} +\DeclareTextCommandDefault{\textcolonmonetary} {\tc@check@symbol4\textcolonmonetary} +\DeclareTextCommandDefault{\textdong} {\tc@check@symbol4\textdong} +\DeclareTextCommandDefault{\textdownarrow} {\tc@check@symbol4\textdownarrow} +\DeclareTextCommandDefault{\textleftarrow} {\tc@check@symbol4\textleftarrow} +\DeclareTextCommandDefault{\textlira} {\tc@check@symbol4\textlira} +\DeclareTextCommandDefault{\textrightarrow} {\tc@check@symbol4\textrightarrow} +\DeclareTextCommandDefault{\textuparrow} {\tc@check@symbol4\textuparrow} +\DeclareTextCommandDefault{\textwon} {\tc@check@symbol4\textwon} +% \end{macrocode} +% +% +% +% +% +% \subsection{Sub-encoding \texttt{5} (most older PS fonts)} +% +% Most older PS fonts (supported in \TeX{} since the early nineties +% when virtual fonts became available) are sorted under this +% sub-encoding. But in reality, many of them don't have all glpyhs +% that should be available in sub-encoding \texttt{5}. Instead they +% show little squares, i.e., they produce ``tofu'' if you are +% unlucky. +% +% But the coverage is so random that it is impossible to sort them +% properly and if we tried to ensure that they only typeset those +% glyphs that are really always available wouput put them all into +% sub-encoding \texttt{9} so that's a compromise really. +% +% Modern fonts that don't typeset a tofu character if a glyph is +% missing are only cataloged as sub-encoding \texttt{5} if they +% really support of its glyph set. +% \begin{macrocode} +\DeclareTextCommandDefault{\textestimated} {\tc@check@symbol5\textestimated} +\DeclareTextCommandDefault{\textnumero} {\tc@check@symbol5\textnumero} +% \end{macrocode} +% +% +% +% +% \subsection{Sub-encoding \texttt{6}} +% +% \begin{macrocode} +\DeclareTextCommandDefault{\textflorin} {\tc@check@symbol6\textflorin} +\DeclareTextCommandDefault{\textcurrency} {\tc@check@symbol6\textcurrency} +% \end{macrocode} +% +% +% +% \subsection{Sub-encoding \texttt{7}} +% +% \begin{macrocode} +\DeclareTextCommandDefault{\textfractionsolidus}{\tc@check@symbol7\textfractionsolidus} +\DeclareTextCommandDefault{\textohm} {\tc@check@symbol7\textohm} +\DeclareTextCommandDefault{\textmu} {\tc@check@symbol7\textmu} +\DeclareTextCommandDefault{\textminus} {\tc@check@symbol7\textminus} +% \end{macrocode} +% +% +% +% \subsection{Sub-encoding \texttt{8}} +% +% \begin{macrocode} +\DeclareTextCommandDefault{\textblank} {\tc@check@symbol{8}\textblank} +\DeclareTextCommandDefault{\textinterrobangdown}{\tc@check@symbol{8}\textinterrobangdown} +\DeclareTextCommandDefault{\textinterrobang} {\tc@check@symbol{8}\textinterrobang} +% \end{macrocode} +% +% Fonts with this sub-encoding don't have a Euro symbol, but +% instead of substituting we fake it. +% \begin{macrocode} +\DeclareTextCommandDefault{\texteuro} + {\CheckEncodingSubset\UseTextSymbol{TS1}\tc@fake@euro{8}\texteuro} +% \end{macrocode} +% +% +% +% +% \subsection{Sub-encoding \texttt{9} (most missing)} +% +% \begin{macrocode} +\DeclareTextCommandDefault{\textcelsius}{\tc@check@symbol{9}\textcelsius} +\DeclareTextCommandDefault{\textonesuperior}{\tc@check@symbol{9}\textonesuperior} +\DeclareTextCommandDefault{\textthreequartersemdash}{\tc@check@symbol{9}\textthreequartersemdash} +\DeclareTextCommandDefault{\textthreesuperior}{\tc@check@symbol{9}\textthreesuperior} +\DeclareTextCommandDefault{\texttwelveudash}{\tc@check@symbol{9}\texttwelveudash} +\DeclareTextCommandDefault{\texttwosuperior}{\tc@check@symbol{9}\texttwosuperior} +\DeclareTextCommandDefault{\textbardbl}{\tc@check@symbol{9}\textbardbl} +% \end{macrocode} +% +% +% +% +% \section{Unicode engine specials} +% +% If we are using a unicode engine we handle some glyphs differently, +% so this here are the definitions for the Unicode encoding +% (overwriting the defaults above). + +% \begin{macrocode} +\ifx \Umathcode\@undefined \else +% \end{macrocode} +% +% This set should be taken from \texttt{TS1} encoding even if it +% means you get it from the default font for that encoding. +% \begin{macrocode} +%\DeclareTextSymbol{\textcopyleft}{TS1}{171} +%\DeclareTextSymbol{\textdblhyphen}{TS1}{45} +%\DeclareTextSymbol{\textdblhyphenchar}{TS1}{127} +%\DeclareTextSymbol{\textquotestraightbase}{TS1}{13} +%\DeclareTextSymbol{\textquotestraightdblbase}{TS1}{18} +%\DeclareTextSymbol{\textleaf}{TS1}{108} +%\DeclareTextSymbol{\texttwelveudash}{TS1}{21} +%\DeclareTextSymbol{\textthreequartersemdash}{TS1}{22} +% \end{macrocode} +% +% If oldstyle numerals are asked for we just use \cs{oldstylenums}. +% \begin{macrocode} +\DeclareTextCommand{\textzerooldstyle} \UnicodeEncodingName{\oldstylenums{0}} +\DeclareTextCommand{\textoneoldstyle} \UnicodeEncodingName{\oldstylenums{1}} +\DeclareTextCommand{\texttwooldstyle} \UnicodeEncodingName{\oldstylenums{2}} +\DeclareTextCommand{\textthreeoldstyle}\UnicodeEncodingName{\oldstylenums{3}} +\DeclareTextCommand{\textfouroldstyle} \UnicodeEncodingName{\oldstylenums{4}} +\DeclareTextCommand{\textfiveoldstyle} \UnicodeEncodingName{\oldstylenums{5}} +\DeclareTextCommand{\textsixoldstyle} \UnicodeEncodingName{\oldstylenums{6}} +\DeclareTextCommand{\textsevenoldstyle}\UnicodeEncodingName{\oldstylenums{7}} +\DeclareTextCommand{\texteightoldstyle}\UnicodeEncodingName{\oldstylenums{8}} +\DeclareTextCommand{\textnineoldstyle} \UnicodeEncodingName{\oldstylenums{9}} +% \end{macrocode} +% These have Unicode slots so this should be integrated into TU explictly +% \begin{macrocode} +\DeclareTextSymbol{\textpilcrow} \UnicodeEncodingName{"00B6} +\DeclareTextSymbol{\textborn} \UnicodeEncodingName{"002A} +\DeclareTextSymbol{\textdied} \UnicodeEncodingName{"2020} +\DeclareTextSymbol{\textlbrackdbl} \UnicodeEncodingName{"27E6} +\DeclareTextSymbol{\textrbrackdbl} \UnicodeEncodingName{"27E7} +\DeclareTextSymbol{\textguarani} \UnicodeEncodingName{"20B2} +% \end{macrocode} +% We could make \cs{textcentoldstyle} and \cs{textdollaroldstyle} +% point to dollar and cent in the Unicode encoding +% \begin{macrocode} +%\DeclareTextSymbol{\textcentoldstyle} \UnicodeEncodingName{"00A2} +%\DeclareTextSymbol{\textdollaroldstyle} \UnicodeEncodingName{"0024} +% \end{macrocode} +% but I think it is better to pick them up from TS1 even if that +% usually means LMR fonts +% \begin{macrocode} +\DeclareTextSymbol{\textdollaroldstyle}{TS1}{138} +\DeclareTextSymbol{\textcentoldstyle} {TS1}{139} +% \end{macrocode} +% +% +% \begin{macrocode} +\fi % --- END of Unicode engines specials +% \end{macrocode} +% +% \section{Font family sub-encodings setup} +% +% We declare the subsets for a good number of fonts in the kernel +% \ldots +% +% But first the default for anything that is not declared. We use +% \texttt{9} which is most like much too conservative but with the +% advantage that we aren't getting missing glyphs (or at least that +% this very very unlikely). +% For nearly all font in the \TeX{} Live distribution of 2019 +% ``correct'' classifications are given below, so that this default +% is only used for new font families, and over time the right +% classifications can be added here too. +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{?}{9} +% \end{macrocode} +% +% This first block contains the fonts that have been already +% supported by the \texttt{textcomp} package way back, i.e., the +% font families that have \TeX{} support since the mid-nineties. +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{ccr} {0} +\DeclareEncodingSubset{TS1}{cmbr} {0} +\DeclareEncodingSubset{TS1}{cmr} {0} +\DeclareEncodingSubset{TS1}{cmss} {0} +\DeclareEncodingSubset{TS1}{cmtl} {0} +\DeclareEncodingSubset{TS1}{cmtt} {0} +\DeclareEncodingSubset{TS1}{cmvtt} {0} +\DeclareEncodingSubset{TS1}{pxr} {0} +\DeclareEncodingSubset{TS1}{pxss} {0} +\DeclareEncodingSubset{TS1}{pxtt} {0} +\DeclareEncodingSubset{TS1}{qag} {0} +\DeclareEncodingSubset{TS1}{qbk} {0} +\DeclareEncodingSubset{TS1}{qcr} {0} +\DeclareEncodingSubset{TS1}{qcs} {0} +\DeclareEncodingSubset{TS1}{qhvc} {0} +\DeclareEncodingSubset{TS1}{qhv} {0} +\DeclareEncodingSubset{TS1}{qpl} {0} +\DeclareEncodingSubset{TS1}{qtm} {0} +\DeclareEncodingSubset{TS1}{qzc} {0} +\DeclareEncodingSubset{TS1}{txr} {0} +\DeclareEncodingSubset{TS1}{txss} {0} +\DeclareEncodingSubset{TS1}{txtt} {0} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{lmr} {1} +\DeclareEncodingSubset{TS1}{lmdh} {1} +\DeclareEncodingSubset{TS1}{lmss} {1} +\DeclareEncodingSubset{TS1}{lmssq} {1} +\DeclareEncodingSubset{TS1}{lmvtt} {1} +\DeclareEncodingSubset{TS1}{lmtt} {1} % missing TM, SM, pertenthousand for some reason +% \end{macrocode} +% +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{ptmx} {2} +\DeclareEncodingSubset{TS1}{ptmj} {2} +\DeclareEncodingSubset{TS1}{ul8} {2} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{bch} {5} % tofu for blank, ohm +\DeclareEncodingSubset{TS1}{futj} {5} % tofu for blank, interrobang/down, ohm +\DeclareEncodingSubset{TS1}{futs} {5} % tofu for blank, ohm +\DeclareEncodingSubset{TS1}{futx} {5} % probably (currently broken distrib) +\DeclareEncodingSubset{TS1}{pag} {5} % tofu for blank, interrobang/down, ohm +\DeclareEncodingSubset{TS1}{pbk} {5} % tofu for blank, interrobang/down, ohm +\DeclareEncodingSubset{TS1}{pcr} {5} % tofu for blank, interrobang/down, ohm +\DeclareEncodingSubset{TS1}{phv} {5} % tofu for blank, interrobang/down, ohm +\DeclareEncodingSubset{TS1}{pnc} {5} % tofu for blank, interrobang/down, ohm +\DeclareEncodingSubset{TS1}{pplj} {5} % tofu for blank +\DeclareEncodingSubset{TS1}{pplx} {5} % tofu for blank +\DeclareEncodingSubset{TS1}{ppl} {5} % tofu for blank interrobang/down +\DeclareEncodingSubset{TS1}{ptm} {5} % tofu for blank, interrobang/down, ohm +\DeclareEncodingSubset{TS1}{pzc} {5} % tofu for blank, interrobang/down, ohm +\DeclareEncodingSubset{TS1}{ul9} {5} % tofu for blank, interrobang/down, ohm +% \end{macrocode} +% +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{dayroms} {6} % tofu for blank, interrobang/down, ohm +\DeclareEncodingSubset{TS1}{dayrom} {6} % tofu for blank, interrobang/down, ohm +% \end{macrocode} +% +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{augie} {8} % really only missing euro +\DeclareEncodingSubset{TS1}{put} {8} +\DeclareEncodingSubset{TS1}{uag} {8} % probably (currently broken distrib) +\DeclareEncodingSubset{TS1}{ugq} {8} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{zi4} {9} +% \end{macrocode} +% LucidaBright (sold through TUG) probably not quite correct, I +% guess as I have the older fonts \ldots +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{hls} {5} +\DeclareEncodingSubset{TS1}{hlst} {5} +\DeclareEncodingSubset{TS1}{hlct} {5} +\DeclareEncodingSubset{TS1}{hlh} {5} +\DeclareEncodingSubset{TS1}{hlx} {8} +\DeclareEncodingSubset{TS1}{hlce} {8} +\DeclareEncodingSubset{TS1}{hlcn} {8} +\DeclareEncodingSubset{TS1}{hlcw} {8} +\DeclareEncodingSubset{TS1}{hlcf} {8} +% \end{macrocode} +% +% Below are the newer fonts that have support files for +% \LaTeX{}. With very few exceptions the classifications are done +% so that that all characters are correctly produced (either being +% available in the font or substituted. +% +% There are a few fonts that contain ``tofu'' squares in places +% (instead of a real glyph) and in a few cases some really seldom +% needed chars are unavailable, i.e., produce missing glyphs (to +% avoid that a large number of available chars are unnecessarily +% substituted. +% +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{lato-*} {0} % with a bunch of tofu inside +\DeclareEncodingSubset{TS1}{opensans-*} {0} % with a bunch of tofu inside +\DeclareEncodingSubset{TS1}{cantarell-*} {0} % with a bunch of tofu inside +\DeclareEncodingSubset{TS1}{fbb-*} {0} % missing centoldstyle +% \end{macrocode} +% +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{tli} {1} % with lots of tofu inside +% \end{macrocode} +% +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{Alegreya-*} {2} +\DeclareEncodingSubset{TS1}{AlegreyaSans-*} {2} +\DeclareEncodingSubset{TS1}{DejaVuSans-TLF} {2} +\DeclareEncodingSubset{TS1}{DejaVuSansCondensed-TLF} {2} +\DeclareEncodingSubset{TS1}{DejaVuSansMono-TLF} {2} +\DeclareEncodingSubset{TS1}{EBGaramond-*} {2} +\DeclareEncodingSubset{TS1}{Tempora-TLF} {2} +\DeclareEncodingSubset{TS1}{Tempora-TOsF} {2} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{Arimo-TLF} {3} +\DeclareEncodingSubset{TS1}{Carlito-*} {3} +\DeclareEncodingSubset{TS1}{FiraSans-*} {3} +\DeclareEncodingSubset{TS1}{IBMPlexSans-TLF} {3} +\DeclareEncodingSubset{TS1}{Merriweather-OsF} {3} +\DeclareEncodingSubset{TS1}{Montserrat-*} {3} +\DeclareEncodingSubset{TS1}{MontserratAlternates-*} {3} +\DeclareEncodingSubset{TS1}{SourceCodePro-TLF} {3} +\DeclareEncodingSubset{TS1}{SourceCodePro-TOsF} {3} +\DeclareEncodingSubset{TS1}{SourceSansPro-*} {3} +\DeclareEncodingSubset{TS1}{SourceSerifPro-*} {3} +\DeclareEncodingSubset{TS1}{Tinos-TLF} {3} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{AccanthisADFStdNoThree-LF}{4} +\DeclareEncodingSubset{TS1}{Cabin-TLF} {4} +\DeclareEncodingSubset{TS1}{Caladea-TLF} {4} +\DeclareEncodingSubset{TS1}{Chivo-*} {4} +\DeclareEncodingSubset{TS1}{ClearSans-TLF} {4} +\DeclareEncodingSubset{TS1}{Coelacanth-LF} {4} +\DeclareEncodingSubset{TS1}{CrimsonPro-*} {4} +\DeclareEncodingSubset{TS1}{FiraMono-TLF} {4} +\DeclareEncodingSubset{TS1}{FiraMono-TOsF} {4} +\DeclareEncodingSubset{TS1}{Go-TLF} {4} +\DeclareEncodingSubset{TS1}{GoMono-TLF} {4} +\DeclareEncodingSubset{TS1}{InriaSans-*} {4} +\DeclareEncodingSubset{TS1}{InriaSerif-*} {4} +\DeclareEncodingSubset{TS1}{LibertinusSans-*} {4} +\DeclareEncodingSubset{TS1}{LibertinusSerif-*} {4} +\DeclareEncodingSubset{TS1}{LibreBodoni-TLF} {4} +\DeclareEncodingSubset{TS1}{LibreFranklin-TLF} {4} +\DeclareEncodingSubset{TS1}{LinguisticsPro-LF} {4} +\DeclareEncodingSubset{TS1}{LinguisticsPro-OsF} {4} +\DeclareEncodingSubset{TS1}{LinuxBiolinumT-*} {4} +\DeclareEncodingSubset{TS1}{LinuxLibertineT-*} {4} +\DeclareEncodingSubset{TS1}{MerriweatherSans-OsF} {4} +\DeclareEncodingSubset{TS1}{MintSpirit-*} {4} +\DeclareEncodingSubset{TS1}{MintSpiritNoTwo-*} {4} +\DeclareEncodingSubset{TS1}{PTMono-TLF} {4} +\DeclareEncodingSubset{TS1}{PTSans-TLF} {4} +\DeclareEncodingSubset{TS1}{PTSansCaption-TLF} {4} +\DeclareEncodingSubset{TS1}{PTSansNarrow-TLF} {4} +\DeclareEncodingSubset{TS1}{PTSerif-TLF} {4} +\DeclareEncodingSubset{TS1}{PTSerifCaption-TLF} {4} +\DeclareEncodingSubset{TS1}{Raleway-TLF} {4} +\DeclareEncodingSubset{TS1}{Raleway-TOsF} {4} +\DeclareEncodingSubset{TS1}{Roboto-*} {4} +\DeclareEncodingSubset{TS1}{RobotoMono-TLF} {4} +\DeclareEncodingSubset{TS1}{RobotoSlab-TLF} {4} +\DeclareEncodingSubset{TS1}{Rosario-*} {4} +\DeclareEncodingSubset{TS1}{SticksTooText-*} {4} +\DeclareEncodingSubset{TS1}{UniversalisADFStd-LF} {4} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{Almendra-OsF} {5} +\DeclareEncodingSubset{TS1}{Baskervaldx-*} {5} +\DeclareEncodingSubset{TS1}{BaskervilleF-*} {5} +\DeclareEncodingSubset{TS1}{Bitter-TLF} {5} +\DeclareEncodingSubset{TS1}{Cinzel-LF} {5} +\DeclareEncodingSubset{TS1}{CinzelDecorative-LF} {5} +\DeclareEncodingSubset{TS1}{DejaVuSerif-TLF} {5} +\DeclareEncodingSubset{TS1}{DejaVuSerifCondensed-TLF} {5} +\DeclareEncodingSubset{TS1}{GilliusADF-LF} {5} +\DeclareEncodingSubset{TS1}{GilliusADFCond-LF} {5} +\DeclareEncodingSubset{TS1}{GilliusADFNoTwo-LF} {5} +\DeclareEncodingSubset{TS1}{GilliusADFNoTwoCond-LF} {5} +\DeclareEncodingSubset{TS1}{LobsterTwo-LF} {5} +\DeclareEncodingSubset{TS1}{OldStandard-TLF} {5} +\DeclareEncodingSubset{TS1}{PlayfairDisplay-TLF} {5} +\DeclareEncodingSubset{TS1}{PlayfairDisplay-TOsF} {5} +\DeclareEncodingSubset{TS1}{TheanoDidot-TLF} {5} +\DeclareEncodingSubset{TS1}{TheanoDidot-TOsF} {5} +\DeclareEncodingSubset{TS1}{TheanoModern-TLF} {5} +\DeclareEncodingSubset{TS1}{TheanoModern-TOsF} {5} +\DeclareEncodingSubset{TS1}{TheanoOldStyle-TLF} {5} +\DeclareEncodingSubset{TS1}{TheanoOldStyle-TOsF} {5} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{Crimson-TLF} {6} +\DeclareEncodingSubset{TS1}{IBMPlexMono-TLF} {6} +\DeclareEncodingSubset{TS1}{IBMPlexSerif-TLF} {6} +\DeclareEncodingSubset{TS1}{LibertinusMono-TLF} {6} +\DeclareEncodingSubset{TS1}{LibertinusSerifDisplay-LF}{6} +\DeclareEncodingSubset{TS1}{LinuxLibertineDisplayT-*} {6} +\DeclareEncodingSubset{TS1}{LinuxLibertineMonoT-LF} {6} +\DeclareEncodingSubset{TS1}{LinuxLibertineMonoT-TLF} {6} +\DeclareEncodingSubset{TS1}{Overlock-LF} {6} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{CormorantGaramond-*} {7} +\DeclareEncodingSubset{TS1}{Heuristica-TLF} {7} +\DeclareEncodingSubset{TS1}{Heuristica-TOsF} {7} +\DeclareEncodingSubset{TS1}{IMFELLEnglish-TLF} {7} +\DeclareEncodingSubset{TS1}{LibreBaskerville-TLF} {7} +\DeclareEncodingSubset{TS1}{LibreCaslon-*} {7} +\DeclareEncodingSubset{TS1}{Marcellus-LF} {7} +\DeclareEncodingSubset{TS1}{NotoSans-*} {7} +\DeclareEncodingSubset{TS1}{NotoSansMono-TLF} {7} +\DeclareEncodingSubset{TS1}{NotoSansMono-TOsF} {7} +\DeclareEncodingSubset{TS1}{NotoSerif-*} {7} +\DeclareEncodingSubset{TS1}{Quattrocento-TLF} {7} +\DeclareEncodingSubset{TS1}{QuattrocentoSans-TLF} {7} +\DeclareEncodingSubset{TS1}{XCharter-TLF} {7} +\DeclareEncodingSubset{TS1}{XCharter-TOsF} {7} +\DeclareEncodingSubset{TS1}{erewhon-*} {7} +\DeclareEncodingSubset{TS1}{ComicNeue-TLF} {7} +\DeclareEncodingSubset{TS1}{ComicNeueAngular-TLF} {7} +\DeclareEncodingSubset{TS1}{Forum-LF} {7} % the superiors are missing +% \end{macrocode} +% +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{Cochineal-*} {8} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{AlgolRevived-TLF} {9} +% \end{macrocode} +% +% +% +% +% \section{Legacy symbol support for lists and footnote symbols} +% +% \begin{macro}{\UseLegacyTextSymbols} +% +% \begin{macrocode} +\def\UseLegacyTextSymbols{% + \DeclareTextSymbolDefault{\textasteriskcentered}{OMS}% + \DeclareTextSymbolDefault{\textbardbl}{OMS}% + \DeclareTextSymbolDefault{\textbullet}{OMS}% + \DeclareTextSymbolDefault{\textdaggerdbl}{OMS}% + \DeclareTextSymbolDefault{\textdagger}{OMS}% + \DeclareTextSymbolDefault{\textparagraph}{OMS}% + \DeclareTextSymbolDefault{\textperiodcentered}{OMS}% + \DeclareTextSymbolDefault{\textsection}{OMS}% + \UndeclareTextCommand{\textsection}{T1}% + \expandafter\let\csname oldstylenums \expandafter\endcsname + \csname legacyoldstylenums \endcsname +} +% \end{macrocode} +% \end{macro} + + + +% \begin{macro}{\textlegacyasteriskcentered} +% \begin{macro}{\textlegacybardbl} +% \begin{macro}{\textlegacybullet} +% \begin{macro}{\textlegacydaggerdbl} +% \begin{macro}{\textlegacydagger} +% \begin{macro}{\textlegacyparagraph} +% \begin{macro}{\textlegacyperiodcentered} +% \begin{macro}{\textlegacysection} +% +% Here are new names for the legacy symbols that \LaTeX{} used to +% pick up from the \texttt{OMS} encoded fonts (and used dor itemize +% lists or footnote symbols. +% +% We go the roundabout way via separate OMS declarations so that +%\begin{verbatim} +% \renewcommand\textbullet{\textlegacybullet} +%\end{verbatim} +% doesn't produce an endless loop. +% \begin{macrocode} +\DeclareTextSymbol{\textlegacyasteriskcentered}{OMS}{3} % "03 +\DeclareTextSymbol{\textlegacybardbl}{OMS}{107} % "6B +\DeclareTextSymbol{\textlegacybullet}{OMS}{15} % "0F +\DeclareTextSymbol{\textlegacydaggerdbl}{OMS}{122} % "7A +\DeclareTextSymbol{\textlegacydagger}{OMS}{121} % "79 +\DeclareTextSymbol{\textlegacyparagraph}{OMS}{123} % "7B +\DeclareTextSymbol{\textlegacyperiodcentered}{OMS}{1} % "01 +\DeclareTextSymbol{\textlegacysection}{OMS}{120} % "78 +% \end{macrocode} +% +% \begin{macrocode} +\DeclareTextSymbolDefault{\textlegacyasteriskcentered}{OMS} +\DeclareTextSymbolDefault{\textlegacybardbl}{OMS} +\DeclareTextSymbolDefault{\textlegacybullet}{OMS} +\DeclareTextSymbolDefault{\textlegacydaggerdbl}{OMS} +\DeclareTextSymbolDefault{\textlegacydagger}{OMS} +\DeclareTextSymbolDefault{\textlegacyparagraph}{OMS} +\DeclareTextSymbolDefault{\textlegacyperiodcentered}{OMS} +\DeclareTextSymbolDefault{\textlegacysection}{OMS} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} + +% +% +% Supporting rollback \ldots +% \begin{macrocode} +% +%\EndIncludeInRelease +%\IncludeInRelease{0000/00/00}% +% {\DeclareEncodingSubset}{Text companion symbols}% +% +%\let\DeclareEncodingSubset\@undefined +%\let\CheckEncodingSubset\@undefined +% +%\DeclareTextSymbolDefault{\textdollar}{OT1} +%\DeclareTextSymbolDefault{\textsterling}{OT1} +%\DeclareTextCommand{\textdollar}{OT1}{\hmode@bgroup +% \ifdim \fontdimen\@ne\font >\z@ +% \slshape +% \else +% \upshape +% \fi +% \char`\$\egroup} +%\DeclareTextCommand{\textsterling}{OT1}{\hmode@bgroup +% \ifdim \fontdimen\@ne\font >\z@ +% \itshape +% \else +% \fontshape{ui}\selectfont +% \fi +% \char`\$\egroup} +%\DeclareTextCommand{\textperthousand}{T1} +% {\%\char 24 } +% +%\DeclareTextSymbolDefault{\textasteriskcentered}{OMS} +%\DeclareTextSymbolDefault{\textbullet}{OMS} +%\DeclareTextSymbolDefault{\textdaggerdbl}{OMS} +%\DeclareTextSymbolDefault{\textdagger}{OMS} +%\DeclareTextSymbolDefault{\textparagraph}{OMS} +%\DeclareTextSymbolDefault{\textperiodcentered}{OMS} +%\DeclareTextSymbolDefault{\textsection}{OMS} +% +%\DeclareTextSymbolDefault{\textbardbl}{OMS} +%\let\textbrokenbar\@undefined +%\let\textcelsius\@undefined +%\let\textcent\@undefined +%\DeclareTextCommandDefault{\textcopyright}{\textcircled{c}} +%\let\textdegree\@undefined +%\let\textdiv\@undefined +%\let\textlnot\@undefined +%\let\textonehalf\@undefined +%\let\textonequarter\@undefined +%\let\textonesuperior\@undefined +%\DeclareTextCommandDefault{\textordfeminine}{\textsuperscript{a}} +%\DeclareTextCommandDefault{\textordmasculine}{\textsuperscript{o}} +%\let\textpm\@undefined +%\let\textquotesingle\@undefined +%\let\textquotestraightbase\@undefined +%\let\textquotestraightdblbase\@undefined +%\DeclareTextCommandDefault{\textregistered}{\textcircled{% +% \check@mathfonts\fontsize\sf@size\z@\math@fontsfalse\selectfont R}} +%\let\textthreequartersemdash\@undefined +%\let\textthreequarters\@undefined +%\let\textthreesuperior\@undefined +%\let\texttimes\@undefined +%\DeclareTextCommandDefault{\texttrademark}{\textsuperscript{TM}} +%\let\texttwelveudash\@undefined +%\let\texttwosuperior\@undefined +%\let\textyen\@undefined +% +%\let\textcapitalcompwordmark\@undefined +%\let\textascendercompwordmark\@undefined +% +%\DeclareTextAccentDefault{\textcircled}{OMS} +%\DeclareTextAccentDefault{\t}{OML} +% +%\let\capitalacute\@undefined +%\let\capitalbreve\@undefined +%\let\capitalcaron\@undefined +%\let\capitalcedilla\@undefined +%\let\capitalcircumflex\@undefined +%\let\capitaldieresis\@undefined +%\let\capitaldotaccent\@undefined +%\let\capitalgrave\@undefined +%\let\capitalhungarumlaut\@undefined +%\let\capitalmacron\@undefined +%\let\capitalnewtie\@undefined +%\let\capitalogonek\@undefined +%\let\capitalring\@undefined +%\let\capitaltie\@undefined +%\let\capitaltilde\@undefined +%\let\newtie\@undefined +% +%\let\textlbrackdbl\@undefined +%\let\textrbrackdbl\@undefined +% +%\let\texteightoldstyle\@undefined +%\let\textfiveoldstyle\@undefined +%\let\textfouroldstyle\@undefined +%\let\textnineoldstyle\@undefined +%\let\textoneoldstyle\@undefined +%\let\textsevenoldstyle\@undefined +%\let\textsixoldstyle\@undefined +%\let\textthreeoldstyle\@undefined +%\let\texttwooldstyle\@undefined +%\let\textzerooldstyle\@undefined +% +%\let\textacutedbl\@undefined +%\let\textasciiacute\@undefined +%\let\textasciibreve\@undefined +%\let\textasciicaron\@undefined +%\let\textasciidieresis\@undefined +%\let\textasciigrave\@undefined +%\let\textasciimacron\@undefined +%\let\textgravedbl\@undefined +%\let\texttildelow\@undefined +% +%\let\textbaht\@undefined +%\let\textbigcircle\@undefined +%\let\textborn\@undefined +%\let\textcentoldstyle\@undefined +%\let\textcircledP\@undefined +%\let\textcopyleft\@undefined +%\let\textdblhyphenchar\@undefined +%\let\textdblhyphen\@undefined +%\let\textdied\@undefined +%\let\textdiscount\@undefined +%\let\textdivorced\@undefined +%\let\textdollaroldstyle\@undefined +%\let\textguarani\@undefined +%\let\textleaf\@undefined +%\let\textlquill\@undefined +%\let\textmarried\@undefined +%\let\textmho\@undefined +%\let\textmusicalnote\@undefined +%\let\textnaira\@undefined +%\let\textopenbullet\@undefined +%\let\textpeso\@undefined +%\let\textpilcrow\@undefined +%\let\textrecipe\@undefined +%\let\textreferencemark\@undefined +%\let\textrquill\@undefined +%\let\textservicemark\@undefined +%\let\textsurd\@undefined +% +%\DeclareTextCommand{\textpertenthousand}{T1} +% {\%\char 24\char 24 } +% +%\let\textlangle\@undefined +%\let\textrangle\@undefined +% +%\let\textcolonmonetary\@undefined +%\let\textdong\@undefined +%\let\textdownarrow\@undefined +%\let\textleftarrow\@undefined +%\let\textlira\@undefined +%\let\textrightarrow\@undefined +%\let\textuparrow\@undefined +%\let\textwon\@undefined +% +%\let\textestimated\@undefined +%\let\textnumero\@undefined +% +%\let\textflorin\@undefined +%\let\textcurrency\@undefined +% +%\let\textfractionsolidus\@undefined +%\let\textohm\@undefined +%\let\textmu\@undefined +%\let\textminus\@undefined +% +%\let\textblank\@undefined +%\let\textinterrobangdown\@undefined +%\let\textinterrobang\@undefined +% +%\let\texteuro\@undefined +% +%\let\textcelsius\@undefined +%\let\textonesuperior\@undefined +%\let\textthreequartersemdash\@undefined +%\let\textthreesuperior\@undefined +%\let\texttwelveudash\@undefined +%\let\texttwosuperior\@undefined +%\let\textbardbl\@undefined +% +%\let\UseLegacyTextSymbols\@undefined +%\let\textlegacyasteriskcentered\@undefined +%\let\textlegacybardbl\@undefined +%\let\textlegacybullet\@undefined +%\let\textlegacydaggerdbl\@undefined +%\let\textlegacydagger\@undefined +%\let\textlegacyparagraph\@undefined +%\let\textlegacyperiodcentered\@undefined +%\let\textlegacysection\@undefined +% +%\EndIncludeInRelease +%<*2ekernel> +% +% \end{macrocode} +% +% +% +% +% \section{The \texttt{textcomp} package} +% +% +% \begin{macrocode} +%<*TS1sty> +\NeedsTeXFormat{LaTeX2e}[1995/06/01] +\providecommand\DeclareRelease[3]{} +\providecommand\DeclareCurrentRelease[2]{} + +\DeclareRelease{}{2018-08-11}{textcomp-2018-08-11.sty} +\DeclareCurrentRelease{}{2020-02-02} + +\ProvidesPackage{textcomp} + [2020/02/02 v2.0m Standard LaTeX package] +% \end{macrocode} +% +% This is implemented by defining the default subset: +% \begin{macrocode} +\DeclareOption{full}{\DeclareEncodingSubset{TS1}{?}{0}} +\DeclareOption{almostfull}{\DeclareEncodingSubset{TS1}{?}{1}} +\DeclareOption{euro}{\DeclareEncodingSubset{TS1}{?}{8}} +\DeclareOption{safe}{\DeclareEncodingSubset{TS1}{?}{9}} +% \end{macrocode} +% The default is set up in the kernel is ``safe'' these days for +% unknown fonts but LaTeX has definitions for most families so it +% seldom applies. +% +% If a different default is used then one needs to check the +% results to ensure that there aren't ``missing glyphs''. +% +% The next set of options define the warning level (default in the +% kernel is info only). If you load the package then the default +% changes to produce an error message if any substitution happens. +% \begin{macrocode} +\def\tc@errorwarn{\PackageError{textcomp}} +\DeclareOption{error}{\gdef\tc@errorwarn{\PackageError{textcomp}}} +\DeclareOption{warn}{\gdef\tc@errorwarn#1#2{\PackageWarning{textcomp}{#1}}} +\DeclareOption{quiet}{\gdef\tc@errorwarn#1#2{}} +% \end{macrocode} +% +% The ``force'' option basically changes the sub-encoding to that +% of the default (which, unless changes, is 9 these days), i.e., it +% no longer depends on the font in use. This is mainly there +% because it might have been used in older documents, but not +% somehting that is recommended. +% \begin{macrocode} +\DeclareOption{force}{% + \def\CheckEncodingSubset#1#2#3#4#5{% + \ifnum #4>% + 0\csname #2:?\endcsname + \relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {#1{#2}}{#3}% + #5}% +} +% \end{macrocode} +% +% \begin{macrocode} +\ExecuteOptions{} +\ProcessOptions\relax +% \end{macrocode} +% +% There is not much else to do nowadays, because everything is +% already set up in the \LaTeX{} kernel. +% +% \begin{macrocode} +\InputIfFileExists{textcomp.cfg} + {\PackageInfo{textcomp}{Local configuration file used}}{} +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% +% +% \subsection{The old textcomp package code} +% +% This section contains the old code for the textcomp package and +% its documentation. It is only used if we roll back prior to 2020. +% Thus all the rest is mainly for historians. Note that the old +% code categorised in the sub-encodings only into 6 classes not 10. +% +% \begin{macrocode} +%<*TS1oldsty> +\ProvidesPackage{textcomp} + [2018/08/11 v2.0j Standard LaTeX package] +% \end{macrocode} +% +% This one is for the |TS1| encoding which contains text symbols +% for use with the |T1|-encoded text fonts. It therefore first +% inputs the file |TS1enc.def| and then sets (or resets) the +% defaults for the symbols it contains. The result of this is that +% when one of these symbols is accessed and the current encoding +% does not provide it, the symbol will be supplied by a silent, +% local change to this encoding. +% +% Since many PostScript fonts only implement a subset of |TS1| many +% commands only produce black blobs of ink. To resolve the +% resulting problems a number of options have been introduced and +% some code has been developed to distinguish sub-encodings. +% +% The sub-encodings have a numerical id and are defined as follows +% for \texttt{TS1}: +% \begin{description} +% +% \item[\#5] those \texttt{TS1} symbols that are also in the ISO-Adobe +% character set; without \verb=textcurrency=, which is often +% misused for the Euro. Older Type1 fonts from the non-\TeX{} +% world provide only this subset. +% +% \item[\#4] = \#5 + \verb=\texteuro=. Most newer fonts provide this. +% +% \item[\#3] = \#4 + \verb=\textomega=. Can also be described as +% $\texttt{TS1} \cap (\texttt{ISO-Adobe} \cup +% \texttt{MacRoman})$. (Except for the missing "currency".) + +% +% \item[\#2] = \#3 + \verb=\textestimated= + \verb=\textcurrency=. Can +% also be described as $\texttt{TS1} \cap +% \texttt{Adobe-Western-2}$. This may be relevant for OpenType +% fonts, which usually show the Adobe-Western-2 character set. +% +% \item[\#1] = \texttt{TS1} without \verb=\textcircled= and \verb=\t=. +% These two glyphs are often not implemented and if their kernel +% defaults are changed commands like \verb=\copyright= +% unnecessarily fail. +% +% \item[\#0] = full \texttt{TS1} +% \end{description} +% +% And here a summary to go in the transcript file: +% \begin{macrocode} +\PackageInfo{textcomp}{Sub-encoding information:\MessageBreak + \space\space 5 = only ISO-Adobe without + \string\textcurrency\MessageBreak + \space\space 4 = 5 + \string\texteuro\MessageBreak + \space\space 3 = 4 + \string\textohm\MessageBreak + \space\space 2 = 3 + \noexpand\textestimated+ + \string\textcurrency\MessageBreak + \space\space 1 = TS1 - \noexpand\textcircled- + \string\t\MessageBreak + \space\space 0 = TS1 (full)\MessageBreak + Font families with sub-encoding setting implement\MessageBreak + only a restricted character set as indicated.\MessageBreak + Family '?' is the default used for unknown fonts.\MessageBreak + See the documentation for details\@gobble} +% \end{macrocode} +% +% \begin{macro}{\DeclareEncodingSubset} +% An encoding subset to which a font family belongs is declared by +% the command |\DeclareEncodingSubset| that takes the major encoding as the +% first argument (e.g., |TS1|), the family name as the second +% argument (e.g., |cmr|), and the subset encoding id as a third, +% (e.g., |0| for |cmr|). +% +% The default encoding subset to use when nothing is known about +% the current font family is named |?|. +% \begin{macrocode} +\def\DeclareEncodingSubset#1#2#3{% + \@ifundefined{#1:#2}% + {\PackageInfo{textcomp}{Setting #2 sub-encoding to #1/#3}}% + {\PackageInfo{textcomp}{Changing #2 sub-encoding to #1/#3}}% + \@namedef{#1:#2}{#3}} +\@onlypreamble\DeclareEncodingSubset +% \end{macrocode} +% \end{macro} +% +% +% The options for the package are the following: +% \begin{description} +% \item[safe] +% for unknown font families enables only symbols that are also +% in the ISO-Adobe character set; without "currency", which is +% often misused for the Euro. Older Type1 fonts from the +% non-TeX world provide only this subset. +% +% \item[euro] +% enables the ``safe'' symbols plus the |\texteuro| +% command. Most newer fonts provide this. +% +% \item[full] enables all |TS1| commands; useful only with fonts +% like EC or CM bright. +% +% \item[almostfull] +% same as ``full'', except that |\textcircled| +% and |\t| are \emph{not} redefined from their defaults to avoid +% that commands like |\copyright| suddenly no longer work. +% +% \item[force] +% ignore all subset encoding definitions stored in the package +% itself or in the configuration file and always use the default +% subset as specified by one of the other options (seldom useful, +% only dangerous). +% \end{description} +% +% \begin{macro}{\iftc@forced} +% Switch used to implement the \texttt{force} option +% \begin{macrocode} +\newif\iftc@forced \tc@forcedfalse +% \end{macrocode} +% \end{macro} + +% This is implemented by defining the default subset: +% \begin{macrocode} +\DeclareOption{full}{\DeclareEncodingSubset{TS1}{?}{0}} +\DeclareOption{almostfull}{\DeclareEncodingSubset{TS1}{?}{1}} +\DeclareOption{euro}{\DeclareEncodingSubset{TS1}{?}{4}} +\DeclareOption{safe}{\DeclareEncodingSubset{TS1}{?}{5}} +% \end{macrocode} +% The default is ``almostfull'' which means that old documents will +% work except that |\textcircled| and |\t| will use the kernel +% defaults (with the advantage that this also works if the current +% font (as often the case) doesn't implement these glyphs. +% +% The ``force'' option simply sets the switch to true. +% \begin{macrocode} +\DeclareOption{force}{\tc@forcedtrue} +% \end{macrocode} +% +% The suggestions to user is to use the ``safe'' option always +% unless that balks in which case they could switch to +% ``almostfull'' but then better check their output manually. +% +% \begin{macrocode} +\def\tc@errorwarn{\PackageError} +\DeclareOption{warn}{\gdef\tc@errorwarn#1#2#3{\PackageWarning{#1}{#2}}} +\DeclareOption{quiet}{\gdef\tc@errorwarn#1#2#3{}} +% \end{macrocode} +% +% \begin{macrocode} +\ExecuteOptions{almostfull} +\ProcessOptions\relax +% \end{macrocode} +% +% +% +% +% \begin{macro}{\CheckEncodingSubset} +% The command |\CheckEncodingSubset| will check if the current font +% family has the right encoding subset to typeset a certain +% command. It takes five arguments as follows: +% first argument is either |\UseTextSymbol|, |\UseTextAccent| +% depending on whether or not the symbol is a text symbol or a text +% accent. + +% The second argument is the encoding from which this symbol should +% be fetched. +% +% The third argument is either a fake accessor command or an error +% message. the code in that argument (if ever executed) receives +% two arguments: |#2| and |#5| of |\CheckEncodingSubset|. +% +% Argument four is the subset encoding id to test against: if this +% value is higher than the subset id of the current font family +% then we typeset the symbol, i.e., execute |#1{#2}#5| otherwise +% it runs |#3#5|, e.g., to produce an error message or fake the +% glyph somehow. +% +% Argument five is the symbol or accent command that is being +% checked. +% +% For usage examples see definitions below. +% \begin{macrocode} +\iftc@forced +% \end{macrocode} +% If the ``force'' option was given we always use the default for +% testing against. +% \begin{macrocode} +\def\CheckEncodingSubset#1#2#3#4#5{% + \ifnum #4>% + 0\csname #2:?\endcsname + \relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {#1{#2}}{#3}% + #5% +} +% \end{macrocode} +% +% In normal circumstances the test is a bit more complicated: first +% check if there exists a macro +% |\|\meta{arg2}|:|\meta{current-family} and if so use that value +% to test against, otherwise use the default to test against. +% \begin{macrocode} +\else +\def\CheckEncodingSubset#1#2#3#4#5{% + \ifnum #4>% + \expandafter\ifx\csname #2:\f@family\endcsname\relax + 0\csname #2:?\endcsname + \else + \csname #2:\f@family\endcsname + \fi + \relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {#1{#2}}{#3}% + #5% +} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\tc@subst} +% \begin{macrocode} +\def\tc@subst#1{% + \tc@errorwarn{textcomp}% + {Symbol \string#1 not provided by\MessageBreak + font family \f@family\space + in TS1 encoding.\MessageBreak Default family used instead}\@eha + \bgroup\fontfamily\textcompsubstdefault\selectfont#1\egroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\tc@error} +% |\tc@error| is going to be used in arg |#3| of +% |\CheckEncodingSubset| when a symbol is not available in a +% certain font family. It gets pass the encoding it normally lives +% in (arg one) and the name of the symbol or accent that has a +% problem. +% +% \begin{macrocode} +% error commands take argument: +% #1 symbol to be used +\def\tc@error#1{% + \PackageError{textcomp}% % should be latex error if general + {Accent \string#1 not provided by\MessageBreak + font family \f@family\space + in TS1 encoding}\@eha +} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\tc@fake@euro} +% |\tc@fake@euro| is an example of a ``fake'' definition to use in arg |#3| of +% |\CheckEncodingSubset| when a symbol is not available in a +% certain font family. Here we produce an Euro symbol by combining +% a ``C'' with a ``=''. +% \begin{macrocode} +\def\tc@fake@euro#1{% + \leavevmode + \PackageInfo{textcomp}{Faking \noexpand#1for font family + \f@family\MessageBreak in TS1 encoding}% + \valign{##\cr + \vfil\hbox to 0.07em{\dimen@\f@size\p@ + \math@fontsfalse + \fontsize{.7\dimen@}\z@\selectfont=\hss}% + \vfil\cr% + \hbox{C}\crcr + }% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\tc@check@symbol} +% \begin{macro}{\tc@check@accent} +% These are two abbreviations that we use below to check symbols +% and accents in TS1. Only there to save some space, e.g., we can +% then write +%\begin{verbatim} +%\DeclareTextCommandDefault{\textcurrency}{\tc@check@symbol3\textcurrency} +%\end{verbatim} +% to ensure that |\textcurrency| is only typeset if the current +% font has a \texttt{TS1} subset id of less than 3. Otherwise +% |\tc@error| is called telling the user that for this font family +% |\textcurreny| is not available. +% \begin{macrocode} +\def\tc@check@symbol{\CheckEncodingSubset\UseTextSymbol{TS1}\tc@subst} +\def\tc@check@accent{\CheckEncodingSubset\UseTextAccent{TS1}\tc@error} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% We start with the commands that are ``safe'' and which can be +% unconditionally set up, first the accents\ldots +% \begin{macrocode} +\DeclareTextAccentDefault{\capitalcedilla}{TS1} +\DeclareTextAccentDefault{\capitalogonek}{TS1} +\DeclareTextAccentDefault{\capitalgrave}{TS1} +\DeclareTextAccentDefault{\capitalacute}{TS1} +\DeclareTextAccentDefault{\capitalcircumflex}{TS1} +\DeclareTextAccentDefault{\capitaltilde}{TS1} +\DeclareTextAccentDefault{\capitaldieresis}{TS1} +\DeclareTextAccentDefault{\capitalhungarumlaut}{TS1} +\DeclareTextAccentDefault{\capitalring}{TS1} +\DeclareTextAccentDefault{\capitalcaron}{TS1} +\DeclareTextAccentDefault{\capitalbreve}{TS1} +\DeclareTextAccentDefault{\capitalmacron}{TS1} +\DeclareTextAccentDefault{\capitaldotaccent}{TS1} +% \end{macrocode} +% \ldots and then the other glyphs. +% \changes{v1.9p}{1998/06/12}{Renamed \cs{textmacron} pr/2840} +% \begin{macrocode} +\DeclareTextSymbolDefault{\textcapitalcompwordmark}{TS1} +\DeclareTextSymbolDefault{\textascendercompwordmark}{TS1} +\DeclareTextSymbolDefault{\textquotestraightbase}{TS1} +\DeclareTextSymbolDefault{\textquotestraightdblbase}{TS1} +\DeclareTextSymbolDefault{\texttwelveudash}{TS1} +\DeclareTextSymbolDefault{\textthreequartersemdash}{TS1} +\DeclareTextSymbolDefault{\textdollar}{TS1} +\DeclareTextSymbolDefault{\textquotesingle}{TS1} +\DeclareTextSymbolDefault{\textasteriskcentered}{TS1} +\DeclareTextSymbolDefault{\textfractionsolidus}{TS1} +\DeclareTextSymbolDefault{\textminus}{TS1} +\DeclareTextSymbolDefault{\textlbrackdbl}{TS1} +\DeclareTextSymbolDefault{\textrbrackdbl}{TS1} +\DeclareTextSymbolDefault{\textasciigrave}{TS1} +\DeclareTextSymbolDefault{\texttildelow}{TS1} +\DeclareTextSymbolDefault{\textasciibreve}{TS1} +\DeclareTextSymbolDefault{\textasciicaron}{TS1} +\DeclareTextSymbolDefault{\textgravedbl}{TS1} +\DeclareTextSymbolDefault{\textacutedbl}{TS1} +\DeclareTextSymbolDefault{\textdagger}{TS1} +\DeclareTextSymbolDefault{\textdaggerdbl}{TS1} +\DeclareTextSymbolDefault{\textbardbl}{TS1} +\DeclareTextSymbolDefault{\textperthousand}{TS1} +\DeclareTextSymbolDefault{\textbullet}{TS1} +\DeclareTextSymbolDefault{\textcelsius}{TS1} +\DeclareTextSymbolDefault{\textflorin}{TS1} +\DeclareTextSymbolDefault{\texttrademark}{TS1} +\DeclareTextSymbolDefault{\textcent}{TS1} +\DeclareTextSymbolDefault{\textsterling}{TS1} +\DeclareTextSymbolDefault{\textyen}{TS1} +\DeclareTextSymbolDefault{\textbrokenbar}{TS1} +\DeclareTextSymbolDefault{\textsection}{TS1} +\DeclareTextSymbolDefault{\textasciidieresis}{TS1} +\DeclareTextSymbolDefault{\textcopyright}{TS1} +\DeclareTextSymbolDefault{\textordfeminine}{TS1} +\DeclareTextSymbolDefault{\textlnot}{TS1} +\DeclareTextSymbolDefault{\textregistered}{TS1} +\DeclareTextSymbolDefault{\textasciimacron}{TS1} +\DeclareTextSymbolDefault{\textdegree}{TS1} +\DeclareTextSymbolDefault{\textpm}{TS1} +\DeclareTextSymbolDefault{\texttwosuperior}{TS1} +\DeclareTextSymbolDefault{\textthreesuperior}{TS1} +\DeclareTextSymbolDefault{\textasciiacute}{TS1} +\DeclareTextSymbolDefault{\textmu}{TS1} +\DeclareTextSymbolDefault{\textparagraph}{TS1} +\DeclareTextSymbolDefault{\textperiodcentered}{TS1} +\DeclareTextSymbolDefault{\textonesuperior}{TS1} +\DeclareTextSymbolDefault{\textordmasculine}{TS1} +\DeclareTextSymbolDefault{\textonequarter}{TS1} +\DeclareTextSymbolDefault{\textonehalf}{TS1} +\DeclareTextSymbolDefault{\textthreequarters}{TS1} +\DeclareTextSymbolDefault{\texttimes}{TS1} +\DeclareTextSymbolDefault{\textdiv}{TS1} +% \end{macrocode} +% +% The |\texteuro| is only available for subsets with id 4 or +% less. Otherwise we fake the glyph using |\tc@fake@euro| +% \begin{macrocode} +\DeclareTextCommandDefault{\texteuro} + {\CheckEncodingSubset\UseTextSymbol{TS1}\tc@fake@euro5\texteuro} +% \end{macrocode} +% +% The |\textohm| is only available for subsets with id 3 or +% less. Otherwise we produce an error. +% \begin{macrocode} +\DeclareTextCommandDefault{\textohm}{\tc@check@symbol4\textohm} +% \end{macrocode} +% The |\textestimated| and |\textcurrency| are only provided for +% fonts with subset encoding with id 2 or less. +% \begin{macrocode} +\DeclareTextCommandDefault{\textestimated}% + {\tc@check@symbol3\textestimated} +\DeclareTextCommandDefault{\textcurrency}% + {\tc@check@symbol3\textcurrency} +% \end{macrocode} +% Nearly all of the remaining glyphs are provided only with fonts +% with id 1 or 0, i.e., are essentially complete. +% \begin{macrocode} +\DeclareTextCommandDefault{\capitaltie}% + {\tc@check@accent2\capitaltie} +\DeclareTextCommandDefault{\newtie}% + {\tc@check@accent2\newtie} +\DeclareTextCommandDefault{\capitalnewtie}% + {\tc@check@accent2\capitalnewtie} +\DeclareTextCommandDefault{\textleftarrow}% + {\tc@check@symbol2\textleftarrow} +\DeclareTextCommandDefault{\textrightarrow}% + {\tc@check@symbol2\textrightarrow} +\DeclareTextCommandDefault{\textblank}% + {\tc@check@symbol2\textblank} +\DeclareTextCommandDefault{\textdblhyphen}% + {\tc@check@symbol2\textdblhyphen} +\DeclareTextCommandDefault{\textzerooldstyle}% + {\tc@check@symbol2\textzerooldstyle} +\DeclareTextCommandDefault{\textoneoldstyle}% + {\tc@check@symbol2\textoneoldstyle} +\DeclareTextCommandDefault{\texttwooldstyle}% + {\tc@check@symbol2\texttwooldstyle} +\DeclareTextCommandDefault{\textthreeoldstyle}% + {\tc@check@symbol2\textthreeoldstyle} +\DeclareTextCommandDefault{\textfouroldstyle}% + {\tc@check@symbol2\textfouroldstyle} +\DeclareTextCommandDefault{\textfiveoldstyle}% + {\tc@check@symbol2\textfiveoldstyle} +\DeclareTextCommandDefault{\textsixoldstyle}% + {\tc@check@symbol2\textsixoldstyle} +\DeclareTextCommandDefault{\textsevenoldstyle}% + {\tc@check@symbol2\textsevenoldstyle} +\DeclareTextCommandDefault{\texteightoldstyle}% + {\tc@check@symbol2\texteightoldstyle} +\DeclareTextCommandDefault{\textnineoldstyle}% + {\tc@check@symbol2\textnineoldstyle} +\DeclareTextCommandDefault{\textlangle}% + {\tc@check@symbol2\textlangle} +\DeclareTextCommandDefault{\textrangle}% + {\tc@check@symbol2\textrangle} +\DeclareTextCommandDefault{\textmho}% + {\tc@check@symbol2\textmho} +\DeclareTextCommandDefault{\textbigcircle}% + {\tc@check@symbol2\textbigcircle} +\DeclareTextCommandDefault{\textuparrow}% + {\tc@check@symbol2\textuparrow} +\DeclareTextCommandDefault{\textdownarrow}% + {\tc@check@symbol2\textdownarrow} +\DeclareTextCommandDefault{\textborn}% + {\tc@check@symbol2\textborn} +\DeclareTextCommandDefault{\textdivorced}% + {\tc@check@symbol2\textdivorced} +\DeclareTextCommandDefault{\textdied}% + {\tc@check@symbol2\textdied} +\DeclareTextCommandDefault{\textleaf}% + {\tc@check@symbol2\textleaf} +\DeclareTextCommandDefault{\textmarried}% + {\tc@check@symbol2\textmarried} +\DeclareTextCommandDefault{\textmusicalnote}% + {\tc@check@symbol2\textmusicalnote} +\DeclareTextCommandDefault{\textdblhyphenchar}% + {\tc@check@symbol2\textdblhyphenchar} +\DeclareTextCommandDefault{\textdollaroldstyle}% + {\tc@check@symbol2\textdollaroldstyle} +\DeclareTextCommandDefault{\textcentoldstyle}% + {\tc@check@symbol2\textcentoldstyle} +\DeclareTextCommandDefault{\textcolonmonetary}% + {\tc@check@symbol2\textcolonmonetary} +\DeclareTextCommandDefault{\textwon}% + {\tc@check@symbol2\textwon} +\DeclareTextCommandDefault{\textnaira}% + {\tc@check@symbol2\textnaira} +\DeclareTextCommandDefault{\textguarani}% + {\tc@check@symbol2\textguarani} +\DeclareTextCommandDefault{\textpeso}% + {\tc@check@symbol2\textpeso} +\DeclareTextCommandDefault{\textlira}% + {\tc@check@symbol2\textlira} +\DeclareTextCommandDefault{\textrecipe}% + {\tc@check@symbol2\textrecipe} +\DeclareTextCommandDefault{\textinterrobang}% + {\tc@check@symbol2\textinterrobang} +\DeclareTextCommandDefault{\textinterrobangdown}% + {\tc@check@symbol2\textinterrobangdown} +\DeclareTextCommandDefault{\textdong}% + {\tc@check@symbol2\textdong} +\DeclareTextCommandDefault{\textpertenthousand}% + {\tc@check@symbol2\textpertenthousand} +\DeclareTextCommandDefault{\textpilcrow}% + {\tc@check@symbol2\textpilcrow} +\DeclareTextCommandDefault{\textbaht}% + {\tc@check@symbol2\textbaht} +\DeclareTextCommandDefault{\textnumero}% + {\tc@check@symbol2\textnumero} +\DeclareTextCommandDefault{\textdiscount}% + {\tc@check@symbol2\textdiscount} +\DeclareTextCommandDefault{\textopenbullet}% + {\tc@check@symbol2\textopenbullet} +\DeclareTextCommandDefault{\textservicemark}% + {\tc@check@symbol2\textservicemark} +\DeclareTextCommandDefault{\textlquill}% + {\tc@check@symbol2\textlquill} +\DeclareTextCommandDefault{\textrquill}% + {\tc@check@symbol2\textrquill} +\DeclareTextCommandDefault{\textcopyleft}% + {\tc@check@symbol2\textcopyleft} +\DeclareTextCommandDefault{\textcircledP}% + {\tc@check@symbol2\textcircledP} +\DeclareTextCommandDefault{\textreferencemark}% + {\tc@check@symbol2\textreferencemark} +\DeclareTextCommandDefault{\textsurd}% + {\tc@check@symbol2\textsurd} +% \end{macrocode} +% The |\textcircled| and |\t| are handled specially, unless the +% current font has a subset id of 0 (i.e. full \texttt{TS1}) we +% pick the symbols up from the the math font encodings, i.e., the +% third argument to |\CheckEncodingSubset| uses |\UseTextAccent| to +% get them from there. +% \begin{macrocode} +\DeclareTextCommandDefault{\textcircled} + {\CheckEncodingSubset\UseTextAccent{TS1}% + {\UseTextAccent{OMS}}1\textcircled} +\DeclareTextCommandDefault{\t} + {\CheckEncodingSubset\UseTextAccent{TS1}% + {\UseTextAccent{OML}}1\t} +% \end{macrocode} + + +% +% Finally input the encoding-specific definitions for +% \texttt{TS1} thus making the top-level definitions +% optimised for this encoding (and not for the default +% encoding). +% \changes{v1.9o}{1998/03/20}{Load decls after defaults for speed.} +% \begin{macrocode} +\input{ts1enc.def} +% \end{macrocode} +% Now having the new glyphs available we also want to make sure +% that they are used. For most cases this will automatically happen +% but for some glyphs there are inferior definitions already known +% to \LaTeX{} which will prevent the usage of the \texttt{TS1} +% versions. So we better +% get rid of them: +% \changes{v1.9o}{1998/03/20}{Added various \cs{UndeclareTextCommand} +% declarations for pr/2783} +% \begin{macrocode} +\UndeclareTextCommand{\textsterling}{OT1} +\UndeclareTextCommand{\textdollar} {OT1} +% \end{macrocode} +% Similar declarations should probably be made for other encodings +% like \texttt{OT4} if they are in use. +% \begin{macrocode} +%\UndeclareTextCommand{\textsterling}{OT4} +%\UndeclareTextCommand{\textdollar} {OT4} +% \end{macrocode} +% From the \texttt{T1} encoding there are two candidates for removal: +% \textperthousand{} and \textpertenthousand{} since these are both +% constructed from \% followed by a tiny +% `{\fontencoding{T1}\selectfont \char 24}' +% rather than being a single glyph. The problem with this +% approach is that in PostScript fonts this small zero is usually not +% available resulting in \%\rule{3pt}{3pt} rather than +% \textperthousand{} while the real glyph (at least for +% |\textperthousand|) is available in the PostScript version of +% \texttt{TS1}. So for the moment we compromise by removing the +% \texttt{T1} declaration for |\textperthousand| but keeping the one +% for |\textpertenthousand|. This will have the effect that with +% Computer Modern fonts everything will come out (although +% \textperthousand{} and \textpertenthousand{} are not taken from the +% same physical font) and with PostScript fonts \textperthousand{} +% will come out correctly while \textpertenthousand{} will most +% likely look like \%\rule{6pt}{3pt} --- which is probably an +% improvement over just getting a single `\rule{3pt}{3pt}' to +% indicate a completely missing glyph, which would happen if we +% also `undeclared' |\textpertenthousand|. +% \begin{macrocode} +\UndeclareTextCommand{\textperthousand}{T1} +%\UndeclareTextCommand{\textpertenthousand}{T1} +% \end{macrocode} +% +% +% \subsubsection{Supporting oldstyle digits} +% +% \begin{macrocode} +\DeclareRobustCommand\oldstylenums[1]{% + \begingroup + \ifmmode + \mathgroup\symletters #1% + \else + \CheckEncodingSubset\@use@text@encoding{TS1}% + {\PackageWarning{textcomp}% + {Oldstyle digits unavailable for + family \f@family.\MessageBreak + Lining digits used instead}}% + \tw@{#1}% + \fi + \endgroup +} +% \end{macrocode} +% +% \subsubsection{Subset encoding defaults} +% +% For many font families commonly used in the \TeX{} world we +% provide the subset encoding data here. Users can add additional +% font families in the file \texttt{textcomp.cfg} if they own other +% fonts. +% +% However, if the option ``forced'' was given then all subset +% encoding specifications are ignored, so there is no point in +% setting any of them up: +% \begin{macrocode} +\iftc@forced \else +% \end{macrocode} +% +% Computer modern based fonts (e.g., CM, CM-Bright, Concrete): +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{cmr} {0} +\DeclareEncodingSubset{TS1}{cmss} {0} +\DeclareEncodingSubset{TS1}{cmtt} {0} +\DeclareEncodingSubset{TS1}{cmvtt} {0} +\DeclareEncodingSubset{TS1}{cmbr} {0} +\DeclareEncodingSubset{TS1}{cmtl} {0} +\DeclareEncodingSubset{TS1}{ccr} {0} +% \end{macrocode} +% +% PSNFSS fonts: +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{ptm} {4} +\DeclareEncodingSubset{TS1}{pcr} {4} +\DeclareEncodingSubset{TS1}{phv} {4} +\DeclareEncodingSubset{TS1}{ppl} {3} +\DeclareEncodingSubset{TS1}{pag} {4} +\DeclareEncodingSubset{TS1}{pbk} {4} +\DeclareEncodingSubset{TS1}{pnc} {4} +\DeclareEncodingSubset{TS1}{pzc} {4} +\DeclareEncodingSubset{TS1}{bch} {4} +\DeclareEncodingSubset{TS1}{put} {5} +% \end{macrocode} +% +% Other CTAN fonts (probably not complete): +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{uag} {5} +\DeclareEncodingSubset{TS1}{ugq} {5} +\DeclareEncodingSubset{TS1}{ul8} {4} +\DeclareEncodingSubset{TS1}{ul9} {4} % (LuxiSans, one day) +\DeclareEncodingSubset{TS1}{augie} {5} +\DeclareEncodingSubset{TS1}{dayrom} {3} +\DeclareEncodingSubset{TS1}{dayroms} {3} +\DeclareEncodingSubset{TS1}{pxr} {0} +\DeclareEncodingSubset{TS1}{pxss} {0} +\DeclareEncodingSubset{TS1}{pxtt} {0} +\DeclareEncodingSubset{TS1}{txr} {0} +\DeclareEncodingSubset{TS1}{txss} {0} +\DeclareEncodingSubset{TS1}{txtt} {0} +% \end{macrocode} +% +% Latin Modern and TeX Gyre: +% \changes{v1.99k}{2009/10/28}{Added Latin Modern and TeX Gyre subsets} +% \changes{v1.99l}{2009/11/04}{Added more Latin Modern and TeX Gyre subsets} +% \changes{v1.99m}{2015/02/16}{Added lmtt (Heiko Oberdiek) latex/4415} +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{lmr} {0} +\DeclareEncodingSubset{TS1}{lmdh} {0} +\DeclareEncodingSubset{TS1}{lmss} {0} +\DeclareEncodingSubset{TS1}{lmssq} {0} +\DeclareEncodingSubset{TS1}{lmvtt} {0} +\DeclareEncodingSubset{TS1}{lmtt} {0} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{qhv} {0} +\DeclareEncodingSubset{TS1}{qag} {0} +\DeclareEncodingSubset{TS1}{qbk} {0} +\DeclareEncodingSubset{TS1}{qcr} {0} +\DeclareEncodingSubset{TS1}{qcs} {0} +\DeclareEncodingSubset{TS1}{qpl} {0} +\DeclareEncodingSubset{TS1}{qtm} {0} +\DeclareEncodingSubset{TS1}{qzc} {0} +\DeclareEncodingSubset{TS1}{qhvc} {0} +% \end{macrocode} +% +% Fourier-GUTenberg: +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{futs} {4} +\DeclareEncodingSubset{TS1}{futx} {4} +\DeclareEncodingSubset{TS1}{futj} {4} +% \end{macrocode} +% +% Y\&Y's Lucida Bright +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{hlh} {3} +\DeclareEncodingSubset{TS1}{hls} {3} +\DeclareEncodingSubset{TS1}{hlst} {3} +% \end{macrocode} +% The remaining settings for Lucida are conservative: the following +% fonts contain the |\textohm| character but not the |\texteuro|, +% i.e., belong to neither subset~4 nor subset~3. If you want to +% use the |\textohm| with these fonts copy these definition to +% \texttt{textcomp.cfg} and change the subset to~3. However in that +% case make sure that you do not use the |\texteuro|. +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{hlct} {5} +\DeclareEncodingSubset{TS1}{hlx} {5} +\DeclareEncodingSubset{TS1}{hlce} {5} +\DeclareEncodingSubset{TS1}{hlcn} {5} +\DeclareEncodingSubset{TS1}{hlcw} {5} +\DeclareEncodingSubset{TS1}{hlcf} {5} +% \end{macrocode} +% +% Other commercial families\ldots +% \begin{macrocode} +\DeclareEncodingSubset{TS1}{pplx} {3} +\DeclareEncodingSubset{TS1}{pplj} {3} +\DeclareEncodingSubset{TS1}{ptmx} {4} +\DeclareEncodingSubset{TS1}{ptmj} {4} +% \end{macrocode} +% +% If the file \texttt{textcomp.cfg} exists it will be loaded at +% this point. This allows to define further subset encodings for +% font families not covered by default. +% +% \begin{macrocode} +\InputIfFileExists{textcomp.cfg} + {\PackageInfo{textcomp}{Local configuration file used}}{} +% \end{macrocode} +% +% \begin{macrocode} +\fi +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} + + +% \Finale +% + + + + +\endinput + + + + + diff --git a/macros/latex-dev/base/ltthm.dtx b/macros/latex-dev/base/ltthm.dtx index ee1b51ac5d..4e3c51ab77 100644 --- a/macros/latex-dev/base/ltthm.dtx +++ b/macros/latex-dev/base/ltthm.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltvers.dtx b/macros/latex-dev/base/ltvers.dtx index 4782d77fa4..1a149f788d 100644 --- a/macros/latex-dev/base/ltvers.dtx +++ b/macros/latex-dev/base/ltvers.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -115,7 +115,7 @@ {2020-02-01} % %<*2ekernel> -\def\patch@level{-2} +\def\patch@level{-3} % \end{macrocode} % % \begin{macro}{\development@branch@name} @@ -125,7 +125,7 @@ % intended to help help us internally when we locally install a % format out of some development branch. % \begin{macrocode} -\edef\development@branch@name{development \the\year-\the\month-\the\day} +\edef\development@branch@name{develop \the\year-\the\month-\the\day} % \end{macrocode} % \end{macro} % \end{macro} diff --git a/macros/latex-dev/base/ltx3info.pdf b/macros/latex-dev/base/ltx3info.pdf index d96568eb4c..6ee7ae0509 100644 Binary files a/macros/latex-dev/base/ltx3info.pdf and b/macros/latex-dev/base/ltx3info.pdf differ diff --git a/macros/latex-dev/base/ltx3info.tex b/macros/latex-dev/base/ltx3info.tex index d3a7542cfd..00ad96401b 100644 --- a/macros/latex-dev/base/ltx3info.tex +++ b/macros/latex-dev/base/ltx3info.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltxcheck.tex b/macros/latex-dev/base/ltxcheck.tex index 7446c06cea..a635602cd0 100644 --- a/macros/latex-dev/base/ltxcheck.tex +++ b/macros/latex-dev/base/ltxcheck.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltxdoc.dtx b/macros/latex-dev/base/ltxdoc.dtx index 2d3e5aad2a..f250b2cb19 100644 --- a/macros/latex-dev/base/ltxdoc.dtx +++ b/macros/latex-dev/base/ltxdoc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/ltxdoc.pdf b/macros/latex-dev/base/ltxdoc.pdf index dc234911bb..4bd469ec33 100644 Binary files a/macros/latex-dev/base/ltxdoc.pdf and b/macros/latex-dev/base/ltxdoc.pdf differ diff --git a/macros/latex-dev/base/ltxref.dtx b/macros/latex-dev/base/ltxref.dtx index 27d3250413..ae7d4ef589 100644 --- a/macros/latex-dev/base/ltxref.dtx +++ b/macros/latex-dev/base/ltxref.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/makeindx.dtx b/macros/latex-dev/base/makeindx.dtx index aa998bf3ca..a149bcf86c 100644 --- a/macros/latex-dev/base/makeindx.dtx +++ b/macros/latex-dev/base/makeindx.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/makeindx.ins b/macros/latex-dev/base/makeindx.ins index b31b967c41..2f70c39493 100644 --- a/macros/latex-dev/base/makeindx.ins +++ b/macros/latex-dev/base/makeindx.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2019 +%% Copyright (C) 1993-2020 %% The LaTeX3 Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. diff --git a/macros/latex-dev/base/makeindx.pdf b/macros/latex-dev/base/makeindx.pdf index 098a633051..e8efa6e3d3 100644 Binary files a/macros/latex-dev/base/makeindx.pdf and b/macros/latex-dev/base/makeindx.pdf differ diff --git a/macros/latex-dev/base/manual.pdf b/macros/latex-dev/base/manual.pdf index 6d11064c8e..b86b5408b8 100644 Binary files a/macros/latex-dev/base/manual.pdf and b/macros/latex-dev/base/manual.pdf differ diff --git a/macros/latex-dev/base/modguide.pdf b/macros/latex-dev/base/modguide.pdf index e8f251f026..aa8f4b5c57 100644 Binary files a/macros/latex-dev/base/modguide.pdf and b/macros/latex-dev/base/modguide.pdf differ diff --git a/macros/latex-dev/base/modguide.tex b/macros/latex-dev/base/modguide.tex index ff796c7687..ac03564470 100644 --- a/macros/latex-dev/base/modguide.tex +++ b/macros/latex-dev/base/modguide.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/newdc.ins b/macros/latex-dev/base/newdc.ins index 5786282a87..3a4cd9341e 100644 --- a/macros/latex-dev/base/newdc.ins +++ b/macros/latex-dev/base/newdc.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2019 +%% Copyright (C) 1993-2020 %% The LaTeX3 Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. diff --git a/macros/latex-dev/base/newlfont.dtx b/macros/latex-dev/base/newlfont.dtx index 5bba5441dd..91a19196a7 100644 --- a/macros/latex-dev/base/newlfont.dtx +++ b/macros/latex-dev/base/newlfont.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/nfssfont.dtx b/macros/latex-dev/base/nfssfont.dtx index fc92f83451..ce47cb8554 100644 --- a/macros/latex-dev/base/nfssfont.dtx +++ b/macros/latex-dev/base/nfssfont.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/nfssfont.ins b/macros/latex-dev/base/nfssfont.ins index c1ac663471..ba890603ab 100644 --- a/macros/latex-dev/base/nfssfont.ins +++ b/macros/latex-dev/base/nfssfont.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2019 +%% Copyright (C) 1993-2020 %% The LaTeX3 Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. diff --git a/macros/latex-dev/base/nfssfont.pdf b/macros/latex-dev/base/nfssfont.pdf index f884e20d76..0bddd16d05 100644 Binary files a/macros/latex-dev/base/nfssfont.pdf and b/macros/latex-dev/base/nfssfont.pdf differ diff --git a/macros/latex-dev/base/olddc.ins b/macros/latex-dev/base/olddc.ins index b512ab2e3e..9ebc62468d 100644 --- a/macros/latex-dev/base/olddc.ins +++ b/macros/latex-dev/base/olddc.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2019 +%% Copyright (C) 1993-2020 %% The LaTeX3 Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. diff --git a/macros/latex-dev/base/oldlfont.dtx b/macros/latex-dev/base/oldlfont.dtx index bf39341488..c0c14f2aa2 100644 --- a/macros/latex-dev/base/oldlfont.dtx +++ b/macros/latex-dev/base/oldlfont.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/preload.dtx b/macros/latex-dev/base/preload.dtx index a6d7903299..fd9e03ac44 100644 --- a/macros/latex-dev/base/preload.dtx +++ b/macros/latex-dev/base/preload.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/proc.dtx b/macros/latex-dev/base/proc.dtx index a74dfa36e4..8db8fef7f1 100644 --- a/macros/latex-dev/base/proc.dtx +++ b/macros/latex-dev/base/proc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/proc.ins b/macros/latex-dev/base/proc.ins index 15161a4960..0b44705752 100644 --- a/macros/latex-dev/base/proc.ins +++ b/macros/latex-dev/base/proc.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2019 +%% Copyright (C) 1993-2020 %% The LaTeX3 Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. diff --git a/macros/latex-dev/base/proc.pdf b/macros/latex-dev/base/proc.pdf index 097fe26681..7b57b7168d 100644 Binary files a/macros/latex-dev/base/proc.pdf and b/macros/latex-dev/base/proc.pdf differ diff --git a/macros/latex-dev/base/slides.dtx b/macros/latex-dev/base/slides.dtx index 54cfaa20fd..d96773c590 100644 --- a/macros/latex-dev/base/slides.dtx +++ b/macros/latex-dev/base/slides.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -53,7 +53,7 @@ %<*driver> \ProvidesFile{slides.drv} % - [2016/03/29 v2.4a + [2019/11/04 v2.4b %<+class> Standard LaTeX document class] %<+cmd> SLiTeX definitions] % \end{macrocode} @@ -419,6 +419,12 @@ \def\sldefault{sl} \def\bfdefault{bx} % \end{macrocode} +% As |\fontshape| gets redefined we need to make sure that the default +% for |\upshape| is no longer \texttt{up} but again \texttt{n}. +% \changes{v2.4b}{2019/11/04}{Explicitly set \cs{updefault}} +% \begin{macrocode} +\def\updefault{n} +% \end{macrocode} % % % Since the number of parameters to set are very large it seems diff --git a/macros/latex-dev/base/slides.ins b/macros/latex-dev/base/slides.ins index a25c3f8fe2..aed69c54c9 100644 --- a/macros/latex-dev/base/slides.ins +++ b/macros/latex-dev/base/slides.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2019 +%% Copyright (C) 1993-2020 %% The LaTeX3 Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. @@ -96,7 +96,7 @@ extension .ins) which are part of the distribution. This is a generated file. -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. @@ -138,7 +138,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. diff --git a/macros/latex-dev/base/slides.pdf b/macros/latex-dev/base/slides.pdf index 377030d909..759248c815 100644 Binary files a/macros/latex-dev/base/slides.pdf and b/macros/latex-dev/base/slides.pdf differ diff --git a/macros/latex-dev/base/slifonts.pdf b/macros/latex-dev/base/slifonts.pdf index 185ee5607f..cd581e14d3 100644 Binary files a/macros/latex-dev/base/slifonts.pdf and b/macros/latex-dev/base/slifonts.pdf differ diff --git a/macros/latex-dev/base/source2e.pdf b/macros/latex-dev/base/source2e.pdf index b37b468743..8933047b64 100644 Binary files a/macros/latex-dev/base/source2e.pdf and b/macros/latex-dev/base/source2e.pdf differ diff --git a/macros/latex-dev/base/source2e.tex b/macros/latex-dev/base/source2e.tex index d34dabfa47..e9bacbfc45 100644 --- a/macros/latex-dev/base/source2e.tex +++ b/macros/latex-dev/base/source2e.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % @@ -156,7 +156,7 @@ page_precedence "rnaA" \setcounter{IndexColumns}{2} % Needed for documentation in ltoutenc.dtx -\usepackage{textcomp} +% \usepackage{textcomp} \begin{document} \title{The \LaTeXe\ Sources} @@ -266,6 +266,8 @@ page_precedence "rnaA" \DocInclude{ltfssbas} % NFSS Base macros + \DocInclude{ltfssbas} % NFSS Axes handling (new in 2020) + \DocInclude{ltfsstrc} % NFSS Tracing (and tracefnt.sty) \DocInclude{ltfsscmp} % NFSS1 Compatibility @@ -280,6 +282,8 @@ page_precedence "rnaA" \DocInclude{ltfntcmd} % \textrm etc + \DocInclude{lttextcomp} % companion symbols (new 2020) + \DocInclude{ltpageno} % Page numbering \DocInclude{ltxref} % Cross referencing diff --git a/macros/latex-dev/base/syntonly.dtx b/macros/latex-dev/base/syntonly.dtx index 6d4c710d0d..1f7c5b651d 100644 --- a/macros/latex-dev/base/syntonly.dtx +++ b/macros/latex-dev/base/syntonly.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/syntonly.ins b/macros/latex-dev/base/syntonly.ins index 2adf6c3d78..018a1b2ebc 100644 --- a/macros/latex-dev/base/syntonly.ins +++ b/macros/latex-dev/base/syntonly.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2019 +%% Copyright (C) 1993-2020 %% The LaTeX3 Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 1993-2019 +Copyright (C) 1993-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. diff --git a/macros/latex-dev/base/syntonly.pdf b/macros/latex-dev/base/syntonly.pdf index a21c9f2ab7..5b34a7bab0 100644 Binary files a/macros/latex-dev/base/syntonly.pdf and b/macros/latex-dev/base/syntonly.pdf differ diff --git a/macros/latex-dev/base/testpage.tex b/macros/latex-dev/base/testpage.tex index d2b3919f93..75d81ec8d6 100644 --- a/macros/latex-dev/base/testpage.tex +++ b/macros/latex-dev/base/testpage.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/tlc2.pdf b/macros/latex-dev/base/tlc2.pdf index a62bf4292d..a45edcc423 100644 Binary files a/macros/latex-dev/base/tlc2.pdf and b/macros/latex-dev/base/tlc2.pdf differ diff --git a/macros/latex-dev/base/tulm.ins b/macros/latex-dev/base/tulm.ins index d307956830..5192ab474a 100644 --- a/macros/latex-dev/base/tulm.ins +++ b/macros/latex-dev/base/tulm.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 2016-2019 +%% Copyright (C) 2016-2020 %% The LaTeX3 Project and any individual authors listed elsewhere %% in this file. %% @@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html (but please observe conditions on bug reports sent to that address!) -Copyright (C) 2016-2019 +Copyright (C) 2016-2020 The LaTeX3 Project and any individual authors listed elsewhere in this file. diff --git a/macros/latex-dev/base/tulm.pdf b/macros/latex-dev/base/tulm.pdf index 6237acf9dd..eda06d2e44 100644 Binary files a/macros/latex-dev/base/tulm.pdf and b/macros/latex-dev/base/tulm.pdf differ diff --git a/macros/latex-dev/base/unpack.ins b/macros/latex-dev/base/unpack.ins index 5e6f36ca9d..cca77e20cb 100644 --- a/macros/latex-dev/base/unpack.ins +++ b/macros/latex-dev/base/unpack.ins @@ -3,7 +3,7 @@ %% driver files from the doc files in this package when run through %% LaTeX or TeX. %% -%% Copyright (C) 1993-2019 +%% Copyright (C) 1993-2020 %% The LaTeX3 Project and any individual authors listed elsewhere %% in this file. %% diff --git a/macros/latex-dev/base/usrguide.pdf b/macros/latex-dev/base/usrguide.pdf index 9056877662..6be6a0cc96 100644 Binary files a/macros/latex-dev/base/usrguide.pdf and b/macros/latex-dev/base/usrguide.pdf differ diff --git a/macros/latex-dev/base/usrguide.tex b/macros/latex-dev/base/usrguide.tex index 0805416837..d3fc8daff2 100644 --- a/macros/latex-dev/base/usrguide.tex +++ b/macros/latex-dev/base/usrguide.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/utf8ienc.dtx b/macros/latex-dev/base/utf8ienc.dtx index d8c41255b2..525e461a67 100644 --- a/macros/latex-dev/base/utf8ienc.dtx +++ b/macros/latex-dev/base/utf8ienc.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % The LaTeX3 Project and any individual authors listed elsewhere % in this file. % diff --git a/macros/latex-dev/base/utf8ienc.pdf b/macros/latex-dev/base/utf8ienc.pdf index 79a8aa8098..223dba41f5 100644 Binary files a/macros/latex-dev/base/utf8ienc.pdf and b/macros/latex-dev/base/utf8ienc.pdf differ diff --git a/macros/latex-dev/base/webcomp.pdf b/macros/latex-dev/base/webcomp.pdf index 773dba3d41..dff7854aa9 100644 Binary files a/macros/latex-dev/base/webcomp.pdf and b/macros/latex-dev/base/webcomp.pdf differ diff --git a/macros/latex-dev/required/tools/afterpage.pdf b/macros/latex-dev/required/tools/afterpage.pdf index 5b85c9cf80..415be4a5c3 100644 Binary files a/macros/latex-dev/required/tools/afterpage.pdf and b/macros/latex-dev/required/tools/afterpage.pdf differ diff --git a/macros/latex-dev/required/tools/array.pdf b/macros/latex-dev/required/tools/array.pdf index 1c22fd50db..19dcfe2c3e 100644 Binary files a/macros/latex-dev/required/tools/array.pdf and b/macros/latex-dev/required/tools/array.pdf differ diff --git a/macros/latex-dev/required/tools/bm.pdf b/macros/latex-dev/required/tools/bm.pdf index ca74d1aa65..ac2816a7ed 100644 Binary files a/macros/latex-dev/required/tools/bm.pdf and b/macros/latex-dev/required/tools/bm.pdf differ diff --git a/macros/latex-dev/required/tools/calc.pdf b/macros/latex-dev/required/tools/calc.pdf index 7400c60fde..ab4529968c 100644 Binary files a/macros/latex-dev/required/tools/calc.pdf and b/macros/latex-dev/required/tools/calc.pdf differ diff --git a/macros/latex-dev/required/tools/changes.txt b/macros/latex-dev/required/tools/changes.txt index fa501f839f..b99d32aa9b 100644 --- a/macros/latex-dev/required/tools/changes.txt +++ b/macros/latex-dev/required/tools/changes.txt @@ -5,6 +5,16 @@ completeness or accuracy and it contains some references to files that are not part of the distribution. ======================================================================= +2019-12-09 Frank Mittelbach + + * multicol.dtx: + Support up to 20 columns instead of 10; also ensure that + the insert boxes are not clobbered (gh/237) + +2019-10-15 Frank Mittelbach + + * multicol.dtx: Use \@maxdepth not \maxdepth (gh/190) + ######################### # 2019-11-10 PL 3 Release ######################### diff --git a/macros/latex-dev/required/tools/dcolumn.pdf b/macros/latex-dev/required/tools/dcolumn.pdf index c2d3dfadee..64fc97daec 100644 Binary files a/macros/latex-dev/required/tools/dcolumn.pdf and b/macros/latex-dev/required/tools/dcolumn.pdf differ diff --git a/macros/latex-dev/required/tools/delarray.pdf b/macros/latex-dev/required/tools/delarray.pdf index 75cd28e31e..e9f2ed0285 100644 Binary files a/macros/latex-dev/required/tools/delarray.pdf and b/macros/latex-dev/required/tools/delarray.pdf differ diff --git a/macros/latex-dev/required/tools/enumerate.pdf b/macros/latex-dev/required/tools/enumerate.pdf index e9bbf5e7cb..24df77450c 100644 Binary files a/macros/latex-dev/required/tools/enumerate.pdf and b/macros/latex-dev/required/tools/enumerate.pdf differ diff --git a/macros/latex-dev/required/tools/fileerr.pdf b/macros/latex-dev/required/tools/fileerr.pdf index 2f800749cb..ba3c48bb07 100644 Binary files a/macros/latex-dev/required/tools/fileerr.pdf and b/macros/latex-dev/required/tools/fileerr.pdf differ diff --git a/macros/latex-dev/required/tools/fontsmpl.pdf b/macros/latex-dev/required/tools/fontsmpl.pdf index efae6d5f87..0e040192b3 100644 Binary files a/macros/latex-dev/required/tools/fontsmpl.pdf and b/macros/latex-dev/required/tools/fontsmpl.pdf differ diff --git a/macros/latex-dev/required/tools/ftnright.pdf b/macros/latex-dev/required/tools/ftnright.pdf index ae46d2bc0d..f6fcdc5364 100644 Binary files a/macros/latex-dev/required/tools/ftnright.pdf and b/macros/latex-dev/required/tools/ftnright.pdf differ diff --git a/macros/latex-dev/required/tools/hhline.dtx b/macros/latex-dev/required/tools/hhline.dtx index 1da01d757b..b9234b5aa2 100644 --- a/macros/latex-dev/required/tools/hhline.dtx +++ b/macros/latex-dev/required/tools/hhline.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 1993-2019 +% Copyright (C) 1993-2020 % % The LaTeX3 Project and any individual authors listed elsewhere % in this file. @@ -25,7 +25,7 @@ % %\NeedsTeXFormat{LaTeX2e} %\ProvidesPackage{hhline} -% [2014/10/28 v2.03 Table rule package (DPC)] +% [2020/01/04 v2.04 Table rule package (DPC)] % %<*driver> \documentclass{ltxdoc} @@ -55,6 +55,8 @@ % {Update for LaTeX2e.} % \changes{v2.03}{1994/05/23} % {New style warning.} +% \changes{v2.04}{2020/01/04} +% {Ignore spaces.} % % % @@ -301,12 +303,16 @@ % \begin{macrocode} \ifx\@tempb b\HH@add{\rlap{\HH@box\z@\doublerulesep}}\else % \end{macrocode} +% "space", Gobble the space and loop again. +% \begin{macrocode} + \ifx\@tempb\@sptoken\let\next\HH@spacelet\else +% \end{macrocode} % Otherwise ignore the token, with a warning. % \begin{macrocode} \PackageWarning{hhline}% {\meaning\@tempb\space ignored in \noexpand\hhline argument% \MessageBreak}% - \fi\fi\fi\fi\fi\fi\fi\fi\fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi % \end{macrocode} % Go around the loop again. % \begin{macrocode} @@ -314,6 +320,13 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\HH@spacelet} +% Helper macro to gobble a space token and continue the loop. +% \begin{macrocode} +\lowercase{\def\HH@spacelet} {\futurelet\@tempb \HH@loop} +% \end{macrocode} +% \end{macro} +% % \begin{macrocode} % % \end{macrocode} diff --git a/macros/latex-dev/required/tools/hhline.pdf b/macros/latex-dev/required/tools/hhline.pdf index 6e73e19734..655efda07c 100644 Binary files a/macros/latex-dev/required/tools/hhline.pdf and b/macros/latex-dev/required/tools/hhline.pdf differ diff --git a/macros/latex-dev/required/tools/indentfirst.pdf b/macros/latex-dev/required/tools/indentfirst.pdf index eb3909475d..298852f781 100644 Binary files a/macros/latex-dev/required/tools/indentfirst.pdf and b/macros/latex-dev/required/tools/indentfirst.pdf differ diff --git a/macros/latex-dev/required/tools/layout.pdf b/macros/latex-dev/required/tools/layout.pdf index 16b14c5eff..72dae3a60b 100644 Binary files a/macros/latex-dev/required/tools/layout.pdf and b/macros/latex-dev/required/tools/layout.pdf differ diff --git a/macros/latex-dev/required/tools/longtable.pdf b/macros/latex-dev/required/tools/longtable.pdf index 006b13acde..2b9970d1a2 100644 Binary files a/macros/latex-dev/required/tools/longtable.pdf and b/macros/latex-dev/required/tools/longtable.pdf differ diff --git a/macros/latex-dev/required/tools/multicol.dtx b/macros/latex-dev/required/tools/multicol.dtx index 3a9f14927a..5adc4db0da 100644 --- a/macros/latex-dev/required/tools/multicol.dtx +++ b/macros/latex-dev/required/tools/multicol.dtx @@ -98,7 +98,7 @@ % \ProvidesFile{multicol.drv} % \fi % \ProvidesFile{multicol.dtx} - [2019/10/15 v1.8x multicolumn formatting (FMi)] + [2019/12/09 v1.8y multicolumn formatting (FMi)] % % %% @@ -1034,19 +1034,20 @@ I therefore use two columns instead}% \col@number\tw@ \fi % \end{macrocode} -% We have only enough box registers for ten columns, so we need to +% We have only enough box registers for twenty columns, so we need to % check that the user hasn't asked for more. % \changes{v1.4k}{1992/06/27}{Maximum of 5 columns (temp)} % \changes{v1.5a}{1992/11/04}{Allow 10 columns again} +% \changes{v1.8y}{2019/12/09}{Allow for 20 columns (gh/237)} % \begin{macrocode} - \ifnum\col@number>10 + \ifnum\col@number>20 \PackageError{multicol}% {Too many columns}% {Current implementation doesn't - support more than 10 columns.% + support more than 20 columns.% \MessageBreak - I therefore use 10 columns instead}% - \col@number10 \fi + I therefore use 20 columns instead}% + \col@number20 \fi % \end{macrocode} % Within the environment we need a special version of the % kernel |\@footnotetext| command since the original sets the @@ -3451,7 +3452,25 @@ % of this setup in the documentation, sigh.) This produced a problem % at the moment we had more than 5 columns because then officially % allocated boxes were overwritten by the algorithm. -% The new release now uses private box registers +% The new release now uses private box registers. +% +% There was in fact a bug in the new implementation because at one +% point \LaTeX{} started to use the the extended registers and so +% jumped from below 255 to above omitting the boxes allocated for +% inserts and the output page box. +% +% So nowadays we really have to check if we get the full sequence +% of boxes allocated without holes (i.e., $2\times\textit{max +% cols}+1$) and if not alter the allocation registers to start +% allocating after 255. This is all done quite low-level by looking +% directly at the values of the allocation counters. +% \changes{v1.8y}{2019/12/09}{Allow for 20 columns (gh/237)} +% \begin{macrocode} +\ifnum\numexpr \count20-\count14-1<41 % = 2 * 20 + 1 + \count14=\@cclv +\fi +% \end{macrocode} +% % \begin{macrocode} \newbox\mult@rightbox \newbox\mult@grightbox @@ -3465,6 +3484,16 @@ \newbox\@tempa\newbox\@tempa \newbox\@tempa\newbox\@tempa \newbox\@tempa\newbox\@tempa +\newbox\@tempa\newbox\@tempa +\newbox\@tempa\newbox\@tempa +\newbox\@tempa\newbox\@tempa +\newbox\@tempa\newbox\@tempa +\newbox\@tempa\newbox\@tempa +\newbox\@tempa\newbox\@tempa +\newbox\@tempa\newbox\@tempa +\newbox\@tempa\newbox\@tempa +\newbox\@tempa\newbox\@tempa +\newbox\@tempa\newbox\@tempa \newbox\@tempa \let\@tempa\relax % \end{macrocode} diff --git a/macros/latex-dev/required/tools/multicol.pdf b/macros/latex-dev/required/tools/multicol.pdf index 2b8c98fa83..91f6d12b14 100644 Binary files a/macros/latex-dev/required/tools/multicol.pdf and b/macros/latex-dev/required/tools/multicol.pdf differ diff --git a/macros/latex-dev/required/tools/rawfonts.pdf b/macros/latex-dev/required/tools/rawfonts.pdf index f9f39493b6..a0f45cc61b 100644 Binary files a/macros/latex-dev/required/tools/rawfonts.pdf and b/macros/latex-dev/required/tools/rawfonts.pdf differ diff --git a/macros/latex-dev/required/tools/shellesc.pdf b/macros/latex-dev/required/tools/shellesc.pdf index d678bf4c53..cfe2bbf739 100644 Binary files a/macros/latex-dev/required/tools/shellesc.pdf and b/macros/latex-dev/required/tools/shellesc.pdf differ diff --git a/macros/latex-dev/required/tools/showkeys.pdf b/macros/latex-dev/required/tools/showkeys.pdf index 86846be266..8eec87b9ae 100644 Binary files a/macros/latex-dev/required/tools/showkeys.pdf and b/macros/latex-dev/required/tools/showkeys.pdf differ diff --git a/macros/latex-dev/required/tools/somedefs.pdf b/macros/latex-dev/required/tools/somedefs.pdf index 8c452a9872..d4cad493d0 100644 Binary files a/macros/latex-dev/required/tools/somedefs.pdf and b/macros/latex-dev/required/tools/somedefs.pdf differ diff --git a/macros/latex-dev/required/tools/tabularx.pdf b/macros/latex-dev/required/tools/tabularx.pdf index a78cb2a0bf..1e7a707f6a 100644 Binary files a/macros/latex-dev/required/tools/tabularx.pdf and b/macros/latex-dev/required/tools/tabularx.pdf differ diff --git a/macros/latex-dev/required/tools/theorem.pdf b/macros/latex-dev/required/tools/theorem.pdf index 9133236754..3544b73971 100644 Binary files a/macros/latex-dev/required/tools/theorem.pdf and b/macros/latex-dev/required/tools/theorem.pdf differ diff --git a/macros/latex-dev/required/tools/tools-overview.pdf b/macros/latex-dev/required/tools/tools-overview.pdf index 09d96549b2..82aa1e1ec2 100644 Binary files a/macros/latex-dev/required/tools/tools-overview.pdf and b/macros/latex-dev/required/tools/tools-overview.pdf differ diff --git a/macros/latex-dev/required/tools/trace.pdf b/macros/latex-dev/required/tools/trace.pdf index d25d5c34e3..96fbbab805 100644 Binary files a/macros/latex-dev/required/tools/trace.pdf and b/macros/latex-dev/required/tools/trace.pdf differ diff --git a/macros/latex-dev/required/tools/varioref.pdf b/macros/latex-dev/required/tools/varioref.pdf index 138645c12a..5972e65a8a 100644 Binary files a/macros/latex-dev/required/tools/varioref.pdf and b/macros/latex-dev/required/tools/varioref.pdf differ diff --git a/macros/latex-dev/required/tools/verbatim.pdf b/macros/latex-dev/required/tools/verbatim.pdf index 39e9200cfa..417ba04bbc 100644 Binary files a/macros/latex-dev/required/tools/verbatim.pdf and b/macros/latex-dev/required/tools/verbatim.pdf differ diff --git a/macros/latex-dev/required/tools/xr.pdf b/macros/latex-dev/required/tools/xr.pdf index 760fc5e04b..09335836af 100644 Binary files a/macros/latex-dev/required/tools/xr.pdf and b/macros/latex-dev/required/tools/xr.pdf differ diff --git a/macros/latex-dev/required/tools/xspace.pdf b/macros/latex-dev/required/tools/xspace.pdf index 7281d6b21a..51f99611fa 100644 Binary files a/macros/latex-dev/required/tools/xspace.pdf and b/macros/latex-dev/required/tools/xspace.pdf differ -- cgit v1.2.3