diff options
Diffstat (limited to 'macros/latex-dev/base')
105 files changed, 614 insertions, 232 deletions
diff --git a/macros/latex-dev/base/README.md b/macros/latex-dev/base/README.md index 769562d502..c020d51d21 100644 --- a/macros/latex-dev/base/README.md +++ b/macros/latex-dev/base/README.md @@ -1,7 +1,7 @@ The LaTeX kernel ================ -Release 2022-11-01 pre-release 0 +Release 2022-11-01 pre-release 1 Overview -------- @@ -9,7 +9,7 @@ Overview This bundle provides the core LaTeX kernel. In addition to this bundle, a minimal LaTeX system also needs the files contained in the -- LaTeX team documentation (`doc`) + - L3 programming layer (`l3kernel`) - L3 backend interfaces (`l3backend`) - L3 unicode support (`unicode-data`) @@ -55,18 +55,12 @@ The following files contain further information: - `ltx3info.tex` gives you some historical information about the LaTeX3 project -- `manual.err` lists errata in _LaTeX: A Document Preparation System_ (Lamport) +- `lamport-manual.err` lists errata in _LaTeX: A Document Preparation System_ (Lamport) - `tlc2.err` lists errata in _The LaTeX Companion_ (Mittelbach et al.) The files `ltnews*.tex` (part of the `doc` bundle) contain the LaTeX newsletters, the highest number being the most recent. -For historical reasons, the base distribution and the core documentation -are bundled separately. Documentation is found in the `doc` bundle. In an -installed TeX system, `base` and `doc` should be placed within the same -location; the distinction is therefore primarily of importance when looking -at the development code. - Installation ------------ @@ -80,10 +74,9 @@ Requirements ------------ The LaTeX kernel requires the e-TeX extensions to TeX, which were finalised -in the late 1990s and are available in modern TeX-derived engines. Some new -features require `\ifincsname`, which is currently available in release -versions of pdfTeX, XeTeX and LuaTeX, and is being introduced shortly in -e-pTeX and e-upTeX. +in the late 1990s and are available in modern TeX-derived engines. It also +requires a set of common post-e-TeX extensions, generally known as the +pdfTeX additions. These are available in all modern TeX engines. License ------- diff --git a/macros/latex-dev/base/alltt.pdf b/macros/latex-dev/base/alltt.pdf Binary files differindex 22d164744b..cf5ccb38f8 100644 --- a/macros/latex-dev/base/alltt.pdf +++ b/macros/latex-dev/base/alltt.pdf diff --git a/macros/latex-dev/base/cfgguide.pdf b/macros/latex-dev/base/cfgguide.pdf Binary files differindex b1b3d28e57..0f5d6bb7b0 100644 --- a/macros/latex-dev/base/cfgguide.pdf +++ b/macros/latex-dev/base/cfgguide.pdf diff --git a/macros/latex-dev/base/changes.txt b/macros/latex-dev/base/changes.txt index ce72312d3d..0c9fbba1c2 100644 --- a/macros/latex-dev/base/changes.txt +++ b/macros/latex-dev/base/changes.txt @@ -6,11 +6,94 @@ completeness or accuracy and it contains some references to files that are not part of the distribution. ================================================================================ +2022-07-10 David Carlisle <David.Carlisle@latex-project.org> + + * cmfonts.fdd: avoid EC sans serif fonts at small design sizes. + The medium weight is bolder and wider than the bold extended. + Scale the 8pt font for sizes 5,6,7. gh/879 + +2022-06-22 David Carlisle <David.Carlisle@latex-project.org> + + * ltkeys.dtx: + add .ifnot property (.legacy_if_set_inverse:n) + + * doc.dtx + recast Package Option declarations using \DeclareKeys + +2022-06-10 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + + * cmfonts.fdd + Add font definitions for slanted small caps (gh/782) + +2022-06-10 Ulrike Fischer <Ulrike.Fischer@latex-project.org> + + * cmfonts.fdd + Add font definitions for slanted small caps (gh/782) + ================================================================================ All changes above are only part of the development branch for the next release. -================================================================================ +================================================================================ + +######################### +# 2022-06-01 PL5 Release +######################### + +2022-07-05 Joseph Wright <Joseph.Wright@latex-project.org> + + * ltkeys.dtx (subsection{Main mechanism}) + Correct name of store for raw class options list + Support \CurrentOption in unknown keys + +2022-07-04 Frank Mittelbach <Frank.Mittelbach@latex-project.org> + + * ltfssbas.dtx, ltfssdcl.dtx: + Ignore spaces if necessary, i.e., after display math done with $$ (gh/886) + +2022-07-04 Joseph Wright <Joseph.Wright@latex-project.org> + + * ltfinal.dtx + Introduce \MakeTitlecase, \CaseSwitch and \DeclareCaseChangeEquivalent + as LaTeX2e names for expl3 case changing hooks, needed to support + some customisation requirements (e.g. biblatex) + +######################### +# 2022-06-01 PL4 Release +######################### + +2022-06-30 David Carlisle <David.Carlisle@latex-project.org> + + * ltfinal.dtx: update MakeUppercase and \MakeLowercase for gh/881 + \protectd@edef no longer needed with latest l3 code. + added \AddToNoCaseChangeList + +######################### +# 2022-06-01 PL3 Release +######################### + +2022-06-23 Frank Mittelbach <Frank.Mittelbach@latex-project.org> + + * ltxdoc.dtx (section{Useful abbreviations}): + Update \cmd definition to work with new \cs (gh/874) + +######################### +# 2022-06-01 PL2 Release +######################### + +2022-06-20 Joseph Wright <Joseph.Wright@latex-project.org> + + * ltkeys.dtx (subsection{Main mechanism}) + Use raw options data for keyval handling + +2022-06-19 Joseph Wright <Joseph.Wright@latex-proejct.org> + + * ltkeys.dtx (subsection{Main mechanism}) + Correct approach to removing keys from \@unusedoptionlist + +######################### +# 2022-06-01 PL1 Release +######################### -2022-06-16 Joseph Wright <Joseph.Wright@latex-proejct.org> +2022-06-16 Joseph Wright <Joseph.Wright@latex-project.org> * ltkeys.dtx (subsection{Main mechanism}) Remove key name but avoid touching key value in \@unusedoptionlist @@ -215,7 +298,7 @@ All changes above are only part of the development branch for the next release. * ltplain.dtx (section{Plain \TeX}): Alter \obeyspaces and \obeylines to use a redirection for special - use cases (gh/367)} + use cases (gh/367) 2022-01-20 Frank Mittelbach <Frank.Mittelbach@latex-project.org> diff --git a/macros/latex-dev/base/classes.dtx b/macros/latex-dev/base/classes.dtx index 857cfc799e..188679d4d9 100644 --- a/macros/latex-dev/base/classes.dtx +++ b/macros/latex-dev/base/classes.dtx @@ -53,7 +53,7 @@ %<*driver> \ProvidesFile{classes.drv} %</driver> - [2021/10/04 v1.4n + [2022/07/02 v1.4n %<article|report|book> Standard LaTeX document class] %<10pt|11pt|12pt> Standard LaTeX file (size option)] % \end{macrocode} @@ -2538,7 +2538,7 @@ % The macro above uses |\@makechapterhead|\meta{text} to format the % heading of the chapter. % -% We begin by leaving some white space. The we open a group in +% We begin by leaving some white space. Then we open a group in % which we have a paragraph indent of 0pt, and in which we have the % text set ragged right. We also reset the font. % \changes{v1.3c}{1995/05/25}{replace \cs{reset@font} with diff --git a/macros/latex-dev/base/classes.pdf b/macros/latex-dev/base/classes.pdf Binary files differindex a782718ef0..8744196266 100644 --- a/macros/latex-dev/base/classes.pdf +++ b/macros/latex-dev/base/classes.pdf diff --git a/macros/latex-dev/base/clsguide.pdf b/macros/latex-dev/base/clsguide.pdf Binary files differindex e39b67d6f1..bcdb0c99bd 100644 --- a/macros/latex-dev/base/clsguide.pdf +++ b/macros/latex-dev/base/clsguide.pdf diff --git a/macros/latex-dev/base/cmfonts.fdd b/macros/latex-dev/base/cmfonts.fdd index f991ee564e..477085eaef 100644 --- a/macros/latex-dev/base/cmfonts.fdd +++ b/macros/latex-dev/base/cmfonts.fdd @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright 1993-2019 +% Copyright 1993-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -67,7 +67,7 @@ %<*driver, > \ProvidesFile{cmfonts.drv} %</driver, > - [2019/12/16 v2.5j Standard LaTeX font definitions] + [2022/07/10 v2.5l Standard LaTeX font definitions] % %<*driver> \documentclass{ltxdoc} @@ -261,13 +261,13 @@ % (thanks to Christian Cornelssen)} % \begin{macrocode} %<*new|ec> -%<*!tt> +%<*!tt&!T1cmss> \providecommand{\EC@family}[5]{% \DeclareFontShape{#1}{#2}{#3}{#4}% {<5><6><7><8><9><10><10.95><12><14.4>% %<ec> <17.28><20.74><24.88><29.86><35.83>genb*#5}{}} %<!ec> <17.28><20.74><24.88>genb*#5}{}} -%</!tt> +%</!tt&!T1cmss> % \end{macrocode} % For monospaced fonts, the normal interpolation breaks down below % 8pt, so scale the 8pt fonts instead. @@ -282,6 +282,21 @@ %<ec> <35.83>genb*#5}{}} %<!ec> <9><10><10.95><12><14.4><17.28><20.74><24.88>genb*#5}{}} %</tt> +% \end{macrocode} +% \changes{v2.5l}{2022/07/10}% +% {Avoid ec ss fonts at design size 5, 6, 7. gh/879} +% For ec cmss fonts avoid the small design sizes which have incorrect +% definitions. +% (Medium weight bolder and wider than bold extended for 5pt and 6pt, +% 7pt does not have expected contrast. Scale 8pt, matching |fix-cm|). +% gh/879 +% \begin{macrocode} +%<*T1cmss> +\providecommand{\EC@ssfamily}[5]{% + \DeclareFontShape{#1}{#2}{#3}{#4}% + {<5><6><7><8>#50800% + <9><10><10.95><12><14.4><17.28><20.74><24.88><29.86><35.83>genb*#5}{}} +%</T1cmss> %</new|ec> % \end{macrocode} % @@ -375,6 +390,8 @@ % \changes{v2.5a}{1997/01/14} % {EC fonts} % \changes{v2.5d}{1997/06/02}{bold sc fonts latex/2497} +% \changes{v2.5k}{2022/06/10}{add support for slanted small caps github/782} +% % \begin{macrocode} %<*ec> \EC@family{T1}{cmr}{m}{n}{ecrm} @@ -387,6 +404,9 @@ \EC@family{T1}{cmr}{bx}{sl}{ecbl} \EC@family{T1}{cmr}{bx}{sc}{ecxc} \EC@family{T1}{cmr}{m}{ui}{ecui} +\EC@family{T1}{cmr}{m}{scsl}{ecsc} +\EC@family{T1}{cmr}{bx}{scsl}{ecoc} +\EC@family{T1}{cmr}{b}{scsl}{ecoc} %</ec> %</T1cmr> % \end{macrocode} @@ -489,12 +509,12 @@ % {EC fonts} % \begin{macrocode} %<*ec> -\EC@family{T1}{cmss}{m}{n}{ecss} -\EC@family{T1}{cmss}{m}{sl}{ecsi} -\EC@family{T1}{cmss}{m}{it}{ecsi} -\EC@family{T1}{cmss}{bx}{n}{ecsx} -\EC@family{T1}{cmss}{bx}{it}{ecso} -\EC@family{T1}{cmss}{bx}{sl}{ecso} +\EC@ssfamily{T1}{cmss}{m}{n}{ecss} +\EC@ssfamily{T1}{cmss}{m}{sl}{ecsi} +\EC@ssfamily{T1}{cmss}{m}{it}{ecsi} +\EC@ssfamily{T1}{cmss}{bx}{n}{ecsx} +\EC@ssfamily{T1}{cmss}{bx}{it}{ecso} +\EC@ssfamily{T1}{cmss}{bx}{sl}{ecso} %</ec> % \end{macrocode} % The next substitution is very questionable. diff --git a/macros/latex-dev/base/cmfonts.pdf b/macros/latex-dev/base/cmfonts.pdf Binary files differindex 16babe34e8..3802d6b12a 100644 --- a/macros/latex-dev/base/cmfonts.pdf +++ b/macros/latex-dev/base/cmfonts.pdf diff --git a/macros/latex-dev/base/cyrguide.pdf b/macros/latex-dev/base/cyrguide.pdf Binary files differindex 8f10c4a5b3..5057e54a02 100644 --- a/macros/latex-dev/base/cyrguide.pdf +++ b/macros/latex-dev/base/cyrguide.pdf diff --git a/macros/latex-dev/base/doc-code.pdf b/macros/latex-dev/base/doc-code.pdf Binary files differindex 01ee8fae11..2f8a0c8df2 100644 --- a/macros/latex-dev/base/doc-code.pdf +++ b/macros/latex-dev/base/doc-code.pdf diff --git a/macros/latex-dev/base/doc.dtx b/macros/latex-dev/base/doc.dtx index d6b21744df..d137038d63 100644 --- a/macros/latex-dev/base/doc.dtx +++ b/macros/latex-dev/base/doc.dtx @@ -45,7 +45,7 @@ %<+package> %<+package>\ProvidesPackage{doc} %<+shortvrb>\ProvidesPackage{shortvrb} -%<+package|shortvrb> [2022/06/08 v3.0j +%<+package|shortvrb> [2022/07/03 v3.0k %<+package|shortvrb> Standard LaTeX documentation package V3 (FMi)] %\catcode`\<=12 % @@ -260,8 +260,8 @@ % \begin{abstract} % Roughly 30 years ago (version 1.0 was dated 1988/05/05) I wrote % the first version of the \DOC package, a package to provide code -% documentation for \TeX{} code. Since then it has be used all over -% the place to document the \LaTeX{} kernel and most of the +% documentation for \TeX{} code. Since then it has been used all +% over the place to document the \LaTeX{} kernel and most of the % packages that are nowadays available. The core code of version 2 % (which is the current version) exists since 1998, i.e., for 20 % years. @@ -1909,112 +1909,38 @@ % should be altered further. % \fmi{cleanup replacement of kvoptions} % -% \begin{macrocode} -\ExplSyntaxOn -% \end{macrocode} % Some keys are available as options for use in \cs{usepackage} some are % for the generated item \api's: -% \fmi{cleanup documentation (and code once the new key interface is there)} -% \begin{macrocode} -\newif \ifdoc@noprint -\newif \ifdoc@noindex -\newif \ifdoc@hyperref \doc@hyperreftrue -\newif \ifdoc@multicol \doc@multicoltrue -\newif \ifdoc@debugshow -\newif \ifdoc@reportchangedates -\keys_define:nn {doc} - { - noprint .choice:, - noprint / true .code:n = { \legacy_if_set_true:n { doc@noprint } }, - noprint / false .code:n = { \legacy_if_set_false:n { doc@noprint } }, - noprint .default:n = { true }, - noindex .choice:, - noindex / true .code:n = { \legacy_if_set_true:n { doc@noindex } }, - noindex / false .code:n = { \legacy_if_set_false:n { doc@noindex } }, - noindex .default:n = { true }, - hyperref .choice:, - hyperref / true .code:n = { \legacy_if_set_true:n { doc@hyperref } }, - hyperref / false .code:n = { \legacy_if_set_false:n { doc@hyperref } }, - hyperref .default:n = { true }, -% \end{macrocode} +% \changes{v3.0k}{2022/06/22}{Use \cs{DeclareKeys}} % \changes{v3.0h}{2022/06/01}{fix choice key name (gh/750)} -% \begin{macrocode} - nohyperref .choice:, - nohyperref / true .code:n = { \legacy_if_set_false:n { doc@hyperref } }, - nohyperref / false .code:n = { \legacy_if_set_true:n { doc@hyperref } }, - nohyperref .default:n = { true }, - multicol .choice:, - multicol / true .code:n = { \legacy_if_set_true:n { doc@multicol } }, - multicol / false .code:n = { \legacy_if_set_false:n { doc@multicol } }, - multicol .default:n = { true }, - nomulticol .choice:, - nomulticol / true .code:n = { \legacy_if_set_false:n { doc@multicol } }, - nomulticol / false .code:n = { \legacy_if_set_true:n { doc@multicol } }, -% \end{macrocode} % \changes{v3.0h}{2022/06/01}{fix default key name (gh/750)} % \begin{macrocode} - nomulticol .default:n = { true }, - debugshow .choice:, - debugshow / true .code:n = { \legacy_if_set_true:n { doc@debugshow } }, - debugshow / false .code:n = { \legacy_if_set_false:n { doc@debugshow } }, - debugshow .default:n = { true }, - reportchangedates .choice:, - reportchangedates / true .code:n = { \legacy_if_set_true:n { doc@reportchangedates } }, - reportchangedates / false .code:n = { \legacy_if_set_false:n { doc@reportchangedates } }, - reportchangedates .default:n = { true }, - } -% \end{macrocode} -% This one is for \cs{usepackage} and \cs{NewDocElement}: -% \begin{macrocode} -\newif \ifdoc@toplevel \doc@topleveltrue -\keys_define:nn {doc} +\DeclareKeys { - toplevel .choice:, - toplevel / true .code:n = { \legacy_if_set_true:n { doc@toplevel } }, - toplevel / false .code:n = { \legacy_if_set_false:n { doc@toplevel } }, - toplevel .default:n = { true }, - notoplevel .choice:, - notoplevel / true .code:n = { \legacy_if_set_false:n { doc@toplevel } }, - notoplevel / false .code:n = { \legacy_if_set_true:n { doc@toplevel } }, - notoplevel .default:n = { true } + noprint .if = {doc@noprint}, + noindex .if = {doc@noindex}, + hyperref .if = {doc@hyperref}, + nohyperref .ifnot = {doc@hyperref}, + multicol .if = {doc@multicol}, + nomulticol .ifnot = {doc@multicol}, + debugshow .if = {doc@debugshow}, + reportchangedates .if = {doc@reportchangedates}, + toplevel .if = {doc@toplevel}, + notoplevel .ifnot = {doc@toplevel}, + macrolike .if = {doc@macrolike}, + envlike .ifnot = {doc@macrolike}, + idxtype .store = \doc@idxtype, + idxgroup .store = \doc@idxgroup, + printtype .store = \doc@printtype, + outer .if = {doc@outer}, } % \end{macrocode} -% These are for \cs{NewDocElement}: -% \begin{macrocode} -\newif \ifdoc@macrolike -\keys_define:nn {doc} - { - macrolike .choice:, - macrolike / true .code:n = { \legacy_if_set_true:n { doc@macrolike } }, - macrolike / false .code:n = { \legacy_if_set_false:n { doc@macrolike } }, - macrolike .default:n = { true }, - envlike .choice:, - envlike / true .code:n = { \legacy_if_set_false:n { doc@macrolike } }, - envlike / false .code:n = { \legacy_if_set_true:n { doc@macrolike } }, - envlike .default:n = { true } - } - -\keys_define:nn { doc } - { - idxtype .tl_set:N = \doc@idxtype, - idxgroup .tl_set:N = \doc@idxgroup, - printtype .tl_set:N = \doc@printtype - } -% \end{macrocode} -% And this one only for instances of doc elements in the document, it -% covers the case where you want to document a macro which is -% declared to be \cs{outer}. This is not a concept officially -% supported by \LaTeX{} but there are cases when it gets used. +% +% Setting these options to true initially. % \begin{macrocode} -\newif\ifdoc@outer -\keys_define:nn {doc} - { - outer .choice:, - outer / true .code:n = { \legacy_if_set_true:n { doc@outer } }, - outer / false .code:n = { \legacy_if_set_false:n { doc@outer } }, - outer .default:n = { true }, - } -\ExplSyntaxOff +\doc@hyperreftrue +\doc@multicoltrue +\doc@topleveltrue % \end{macrocode} % % \subsection{Processing the package keys} diff --git a/macros/latex-dev/base/doc.pdf b/macros/latex-dev/base/doc.pdf Binary files differindex b7f2d52ba1..aba11266ef 100644 --- a/macros/latex-dev/base/doc.pdf +++ b/macros/latex-dev/base/doc.pdf diff --git a/macros/latex-dev/base/docstrip.pdf b/macros/latex-dev/base/docstrip.pdf Binary files differindex 5891ba52e5..612a48bd44 100644 --- a/macros/latex-dev/base/docstrip.pdf +++ b/macros/latex-dev/base/docstrip.pdf diff --git a/macros/latex-dev/base/encguide.pdf b/macros/latex-dev/base/encguide.pdf Binary files differindex 55a843b9b2..becc70520b 100644 --- a/macros/latex-dev/base/encguide.pdf +++ b/macros/latex-dev/base/encguide.pdf diff --git a/macros/latex-dev/base/exscale.pdf b/macros/latex-dev/base/exscale.pdf Binary files differindex cb8356298f..b380e777d0 100644 --- a/macros/latex-dev/base/exscale.pdf +++ b/macros/latex-dev/base/exscale.pdf diff --git a/macros/latex-dev/base/fix-cm.pdf b/macros/latex-dev/base/fix-cm.pdf Binary files differindex eee7e7d9c3..cc88987966 100644 --- a/macros/latex-dev/base/fix-cm.pdf +++ b/macros/latex-dev/base/fix-cm.pdf diff --git a/macros/latex-dev/base/fntguide.pdf b/macros/latex-dev/base/fntguide.pdf Binary files differindex c155ce98b2..a2b0345845 100644 --- a/macros/latex-dev/base/fntguide.pdf +++ b/macros/latex-dev/base/fntguide.pdf diff --git a/macros/latex-dev/base/graphpap.pdf b/macros/latex-dev/base/graphpap.pdf Binary files differindex 8168a99044..81a23d161e 100644 --- a/macros/latex-dev/base/graphpap.pdf +++ b/macros/latex-dev/base/graphpap.pdf diff --git a/macros/latex-dev/base/ifthen.pdf b/macros/latex-dev/base/ifthen.pdf Binary files differindex 73fe175dc8..e1c5d222ec 100644 --- a/macros/latex-dev/base/ifthen.pdf +++ b/macros/latex-dev/base/ifthen.pdf diff --git a/macros/latex-dev/base/inputenc.pdf b/macros/latex-dev/base/inputenc.pdf Binary files differindex 406e3d6fa4..4445df126a 100644 --- a/macros/latex-dev/base/inputenc.pdf +++ b/macros/latex-dev/base/inputenc.pdf diff --git a/macros/latex-dev/base/lamport-manual.pdf b/macros/latex-dev/base/lamport-manual.pdf Binary files differindex 4383556908..f6c1e635a7 100644 --- a/macros/latex-dev/base/lamport-manual.pdf +++ b/macros/latex-dev/base/lamport-manual.pdf diff --git a/macros/latex-dev/base/latexrelease.pdf b/macros/latex-dev/base/latexrelease.pdf Binary files differindex 732bfb26f8..2cad49e144 100644 --- a/macros/latex-dev/base/latexrelease.pdf +++ b/macros/latex-dev/base/latexrelease.pdf diff --git a/macros/latex-dev/base/latexsym.pdf b/macros/latex-dev/base/latexsym.pdf Binary files differindex 2dc448b292..5af483ac78 100644 --- a/macros/latex-dev/base/latexsym.pdf +++ b/macros/latex-dev/base/latexsym.pdf diff --git a/macros/latex-dev/base/lb2.pdf b/macros/latex-dev/base/lb2.pdf Binary files differindex ba5f34dd12..43e435c3ae 100644 --- a/macros/latex-dev/base/lb2.pdf +++ b/macros/latex-dev/base/lb2.pdf diff --git a/macros/latex-dev/base/letter.pdf b/macros/latex-dev/base/letter.pdf Binary files differindex ff3ce8c44d..7c1dcd5581 100644 --- a/macros/latex-dev/base/letter.pdf +++ b/macros/latex-dev/base/letter.pdf diff --git a/macros/latex-dev/base/lgc2.pdf b/macros/latex-dev/base/lgc2.pdf Binary files differindex e2882d2b05..9560b062fd 100644 --- a/macros/latex-dev/base/lgc2.pdf +++ b/macros/latex-dev/base/lgc2.pdf diff --git a/macros/latex-dev/base/lppl.pdf b/macros/latex-dev/base/lppl.pdf Binary files differindex 9649fdb741..94c82b58bb 100644 --- a/macros/latex-dev/base/lppl.pdf +++ b/macros/latex-dev/base/lppl.pdf diff --git a/macros/latex-dev/base/ltclass.dtx b/macros/latex-dev/base/ltclass.dtx index 20e59353ec..35c4251fce 100644 --- a/macros/latex-dev/base/ltclass.dtx +++ b/macros/latex-dev/base/ltclass.dtx @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltclass.dtx} - [2022/04/16 v1.5b LaTeX Kernel (Class & Package Interface)] + [2022/06/20 v1.5c LaTeX Kernel (Class & Package Interface)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltclass.dtx} @@ -2150,7 +2150,7 @@ % actions prepend \cs{@currpath} to \cs{@currname} (namely loading, % as we have to respect the given path). % -% A file substituiton isn't followed just yet because at this point +% A file substitution isn't followed just yet because at this point % we are parsing user input, so the file is still what the user % asked for, and not the file actually loaded. % \begin{macrocode} @@ -2176,6 +2176,7 @@ \@ifl@aded\@currext\@currname % \end{macrocode} % \changes{v1.5b}{2022/03/18}{Switch to \cs{ProcessKeyOptions}} +% \changes{v1.5c}{2022/06/20}{Pass raw options to \cs{ProcessKeyOptions}} % In the current preferred approach, a key family name will exist for % processing using \pkg{ltkeys}. In that case, we replace the previous % package options with the new ones, then call the key handler. @@ -2185,7 +2186,9 @@ \@ifundefined{opt@fam@\@currname.\@currext} {\@onefilewithoptions@clashchk{#2}} {% - \@namedef{opt@\@currname.\@currext}{#2}% + \expandafter\edef\csname opt@\@currname.\@currext\endcsname + {\zap@space#2 \@empty}% + \@namedef{@raw@opt@\@currname.\@currext}{#2}% \expandafter\expandafter\expandafter\ProcessKeyOptions \expandafter\expandafter\expandafter [\csname opt@fam@\@currname.\@currext\endcsname]% diff --git a/macros/latex-dev/base/ltcmdhooks-code.pdf b/macros/latex-dev/base/ltcmdhooks-code.pdf Binary files differindex f14ffecd0a..56416966d6 100644 --- a/macros/latex-dev/base/ltcmdhooks-code.pdf +++ b/macros/latex-dev/base/ltcmdhooks-code.pdf diff --git a/macros/latex-dev/base/ltcmdhooks-doc.pdf b/macros/latex-dev/base/ltcmdhooks-doc.pdf Binary files differindex 4c53d8ec8c..40b7f4ecb5 100644 --- a/macros/latex-dev/base/ltcmdhooks-doc.pdf +++ b/macros/latex-dev/base/ltcmdhooks-doc.pdf diff --git a/macros/latex-dev/base/ltfilehook-code.pdf b/macros/latex-dev/base/ltfilehook-code.pdf Binary files differindex 4b061d2a0a..7b59fe3a02 100644 --- a/macros/latex-dev/base/ltfilehook-code.pdf +++ b/macros/latex-dev/base/ltfilehook-code.pdf diff --git a/macros/latex-dev/base/ltfilehook-doc.pdf b/macros/latex-dev/base/ltfilehook-doc.pdf Binary files differindex 046c4c96ab..8a60d59829 100644 --- a/macros/latex-dev/base/ltfilehook-doc.pdf +++ b/macros/latex-dev/base/ltfilehook-doc.pdf diff --git a/macros/latex-dev/base/ltfinal.dtx b/macros/latex-dev/base/ltfinal.dtx index b1b8ff953b..fafd0c6912 100644 --- a/macros/latex-dev/base/ltfinal.dtx +++ b/macros/latex-dev/base/ltfinal.dtx @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltfinal.dtx} - [2022/06/02 v2.2u LaTeX Kernel (Final Settings)] + [2022/07/05 v2.2w LaTeX Kernel (Final Settings)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltfinal.dtx} @@ -1063,11 +1063,12 @@ % \end{macrocode} % % \begin{macro}{\MakeUppercase} -% \begin{macro}{\MakeUppercase} +% \begin{macro}{\MakeLowercase} +% \begin{macro}{\MakeTitlecase} % \begin{macro}{\NoCaseChange} -% \begin{macro}{\@uclclist} -% \begin{macro}{\@expl@text@lowercase@@n} -% \begin{macro}{\@expl@text@uppercase@@n} +% \begin{macro}{\AddToNoCaseChangeList} +% \begin{macro}{\CaseSwitch} +% \begin{macro}{\DeclareCaseChangeEquivalent} % \begin{macro}{\@uclclist} % % @@ -1077,82 +1078,71 @@ % And whilst we're doing things with uc/lc tables, here are two % commands to upper- and lower-case a string. % -% \emph{Note} that this implementation is subject to change! At -% the moment we're not providing any way to extend the list of -% uc/lc commands, since finding a good interface is difficult. -% These commands have some nasty features, such as uppercasing -% mathematics, environment names, labels, etc. A much better -% long-term solution is to use all-caps fonts, but these aren't -% generally available. % -% Two wrappers around the L3 case changing functions. +% \changes{v2.1h}{2019/09/14}{Expand UTF8 chars when case changing (github/177)} +% \changes{v2.2r}{2022/02/20} +% {Use \cs{@expl@text@uppercase@@n}, removing local redefinition of \cs{UTF@two@octets@noexpand}}% +% \changes{v2.2t}{2022/04/21}{Support \cs{noexpand} in argument of \cs{@expl@text@uppercase@@n}} +% \changes{v2.2v}{2022/06/30}{Just use \cs{text_lowercase:n} without \cs{protectd@edf} gh/881x}% +% \changes{v2.2w}{2022/07/04}{Introduced \cs{CaseSwitch}, \cs{DeclareCaseChangeEquivalent} and \cs{MakeTitlecase} to support hooking into case changing gh/889}% +% Wrappers around the L3 case changing functions. % |\protected| to make them mostly safe as replacements for |uppercase| % and |\lowercase|. +% +% In +%\begin{verbatim} +% \markboth{\MakeUppercase\contentsname} +% {\MakeUppercase\contentsname} +%\end{verbatim} +% then the uppercasing is only done to the first letter of the +% contents name, since the mark expands out to: +%\begin{verbatim} +% \mark{\MakeUppercase Table of Contents} +% {\MakeUppercase Table of Contents} +%\end{verbatim} +% In order to get round this, we redefine |\MakeUppercase| and +% |\MakeLowercase| to grab their argument and brace it. +% +% Earlier versions needed to procsss |\@uclclist| in an |\edef| +% to handle legacy input encodings, but recent (2022) expl3 versions +% handle non-UTF8 text natively so we simply call the |\text_...case:n| +% functions. % \begin{macrocode} \ExplSyntaxOn -\protected\def\@expl@text@lowercase@@n{\text_lowercase:n} -\protected\def\@expl@text@uppercase@@n{\text_uppercase:n} +\cs_new_protected_nopar:cpn{MakeUppercase~}{\text_uppercase:n} +\cs_set_nopar:Npx\MakeUppercase#1{\use:c{MakeUppercase~}{#1}} +\cs_new_protected_nopar:cpn{MakeLowercase~}{\text_lowercase:n} +\cs_set_nopar:Npx\MakeLowercase#1{\use:c{MakeLowercase~}{#1}} +\cs_new_protected_nopar:cpn{MakeTitlecase~}{\text_titlecase:n} +\cs_set_nopar:Npx\MakeTitlecase#1{\use:c{MakeTitlecase~}{#1}} % \end{macrocode} % % \changes{v2.2u}{2022/06/02}{Add \cs{NoCaseChange}} +% \changes{v2.2u}{2022/06/30}{Add \cs{AddToNoCaseChangeList}} % |\NoCaseChange| protects its argument from the case change functions. +% +% |\AddToNoCaseChangeList| Allows new commands to protect their arguments, eg +% |AddToNoCaseChangeList{\eqref}| would protect the argument of |\eqref| +% in the same way as the argument of |\ref|. % \begin{macrocode} -\tl_put_right:Nn \l_text_case_exclude_arg_tl { \NoCaseChange } +\cs_new_protected_nopar:Npn\AddToNoCaseChangeList + {\tl_put_right:Nn \l_text_case_exclude_arg_tl} +\AddToNoCaseChangeList{ \NoCaseChange } \cs_new_protected:Npn \NoCaseChange #1 {#1} +\cs_new_eq:NN \CaseSwitch \text_case_switch:nnnn +\cs_new_eq:NN \DeclareCaseChangeEquivalent + \text_declare_case_equivalent:Nn \ExplSyntaxOff % \end{macrocode} % -% \begin{macrocode} -\DeclareRobustCommand{\MakeUppercase}[1]{{% - \def\i{I}\def\j{J}% - \def\reserved@a##1##2{\let##1##2\reserved@a}% - \expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}% -% \end{macrocode} -% Tell UTF-8 processing to process chars even though we are in an \cs{protected@edef}. -% \changes{v2.1h}{2019/09/14}{Expand UTF8 chars when case changing (github/177)} -% \changes{v2.2r}{2022/02/20} -% {Use \cs{@expl@text@uppercase@@n}, removing local redefinition of \cs{UTF@two@octets@noexpand}}% -% \changes{v2.2t}{2022/04/21}{Support \cs{noexpand} in argument of \cs{@expl@text@uppercase@@n}} -% \begin{macrocode} - \protected@edef\reserved@a{\@expl@text@uppercase@@n{\noexpand\unexpanded{#1}}}% - \reserved@a - }} -\DeclareRobustCommand{\MakeLowercase}[1]{{% - \def\reserved@a##1##2{\let##2##1\reserved@a}% - \expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}% - \protected@edef\reserved@a{\@expl@text@lowercase@@n{\noexpand\unexpanded{#1}}}% - \reserved@a - }} -% \end{macrocode} -% % \changes{v2.2q}{2021/09/06}{Correctly upper and lowercase % \cs{ij} and \cs{IJ} (gh/658)} % \begin{macrocode} \def\@uclclist{\oe\OE\o\O\ae\AE \dh\DH\dj\DJ\l\L\ng\NG\ss\SS\ij\IJ\th\TH} % \end{macrocode} -% The above code works, but has the nasty side-effect that if you -% say something like: -%\begin{verbatim} -% \markboth{\MakeUppercase\contentsname} -% {\MakeUppercase\contentsname} -%\end{verbatim} -% then the uppercasing is only done to the first letter of the -% contents name, since the mark expands out to: -%\begin{verbatim} -% \mark{\protect\MakeUppercase Table of Contents} -% {\protect\MakeUppercase Table of Contents} -%\end{verbatim} -% In order to get round this, we redefine |\MakeUppercase| and -% |\MakeLowercase| to grab their argument and brace it. This is a -% very low-level hack, and is \emph{not} recommended practice! -% This is an instance of a general problem that makes it unsafe to -% grab arguments unbraced, and probably needs a more general -% solution. For the moment though, this hack will do: -% \begin{macrocode} -\protected@edef\MakeUppercase#1{\MakeUppercase{#1}} -\protected@edef\MakeLowercase#1{\MakeLowercase{#1}} -% \end{macrocode} +% +% \end{macro} % \end{macro} % \end{macro} % \end{macro} diff --git a/macros/latex-dev/base/ltfssbas.dtx b/macros/latex-dev/base/ltfssbas.dtx index d013ec0ecb..cc43622a4b 100644 --- a/macros/latex-dev/base/ltfssbas.dtx +++ b/macros/latex-dev/base/ltfssbas.dtx @@ -35,7 +35,7 @@ % % \ProvidesFile{ltfssbas.dtx} - [2021/06/09 v3.2j LaTeX Kernel (NFSS Basic Macros)] + [2022/07/04 v3.2k LaTeX Kernel (NFSS Basic Macros)] % \iffalse \documentclass{ltxdoc} \begin{document} @@ -1127,26 +1127,72 @@ % \end{macro} % % -% \begin{macro}{\frozen@everymath} +% + +% +% \begin{macro}{\frozen@everydisplay} % \changes{v2.1a}{1994/01/17}{New math font setup} % Now we define the behaviour of the frozen hooks: first % check the math setup then call the user hook. +% +% The check code may push tokens after the math formula with +% \cs{aftergroup} and they would prevent a \verb=$$= from dropping +% following spaces. We therefore use a switch to be set as the +% first thing after the group so that following code can determine +% if there was a display or some inline math (in the latter case +% we better not drop spaces). +% After setting the switch we also have to place \cs{ignorespaces} +% because setting the switch may be the only thing that happens +% after the display. +% \changes{v3.2k}{2022/07/04}{Ignore spaces if necessary (gh/886)} +% The issue with handling of spaces was found in 2022, but it is +% really a bug fix for the code added in 2021/11. % \begin{macrocode} -\frozen@everymath = {\check@mathfonts - \the\everymath} +%</2ekernel> +%<latexrelease>\IncludeInRelease{2021/11/15} +%<latexrelease> {\frozen@everydisplay}{Handle spaces after math}% +%<*2ekernel|latexrelease> +\frozen@everydisplay = {% + \aftergroup\@ignoretrue \aftergroup\ignorespaces + \check@mathfonts + \the\everydisplay} % \end{macrocode} % \end{macro} -% -% -% \begin{macro}{\frozen@everydisplay} + + +% \begin{macro}{\frozen@everymath} % \changes{v2.1a}{1994/01/17}{New math font setup} -% Ditto for the display hook. +% \changes{v3.2k}{2022/07/04}{Ignore spaces if necessary (gh/886)} +% The frozen code for inline math is similar, except that here we +% do not want to drop following spaces. % \begin{macrocode} -\frozen@everydisplay = {\check@mathfonts - \the\everydisplay} +\frozen@everymath = {% + \aftergroup\@ignorefalse + \check@mathfonts + \the\everymath} % \end{macrocode} % \end{macro} % +% \begin{macrocode} +%</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +%<latexrelease>\IncludeInRelease{2020/10/01} +%<latexrelease> {\frozen@everydisplay}{Handle spaces after math}% +%<latexrelease> +%<latexrelease>\frozen@everydisplay = {\check@mathfonts +%<latexrelease> \the\everydisplay} +%<latexrelease>\frozen@everymath = {\check@mathfonts +%<latexrelease> \the\everymath} +%<latexrelease> +%<latexrelease>\EndIncludeInRelease +%<*2ekernel> +% \end{macrocode} +% +% +% +% +% +% % \changes{v3.0q}{1996/07/27}{\cs{if@inmath} switch removed} % % \begin{macro}{\curr@math@size} diff --git a/macros/latex-dev/base/ltfssdcl.dtx b/macros/latex-dev/base/ltfssdcl.dtx index 65bc40803e..dd9f12f802 100644 --- a/macros/latex-dev/base/ltfssdcl.dtx +++ b/macros/latex-dev/base/ltfssdcl.dtx @@ -36,7 +36,7 @@ % % \ProvidesFile{ltfssdcl.dtx} - [2021/10/15 v3.0y LaTeX Kernel (NFSS Declarative Interface)] + [2022/07/04 v3.0z LaTeX Kernel (NFSS Declarative Interface)] % \iffalse \documentclass{ltxdoc} \begin{document} @@ -602,8 +602,8 @@ % math mode, so we use some recursive \cs{group_insert_after:N} for this % before we execute \cs{mv@\meta{version}@reset}. % \begin{macrocode} - \group_insert_after:N \__nfss_init_mv_freeze:N \exp_after:wN - \group_insert_after:N \cs:w mv@#1@reset \cs_end: + \group_insert_after:N \__nfss_init_mv_freeze:N + \exp_after:wN \group_insert_after:N \cs:w mv@#1@reset \cs_end: % \end{macrocode} % The \cs{check@mathfonts} is called at the very beginning of each % math formula, so it is a good way to hook in the resetting. @@ -650,6 +650,17 @@ % \begin{macrocode} \@font@info{No~ math~ alphabet~ change~ to~ frozen~ version~ #1} } +% \end{macrocode} +% If this is executed after a math display, we may have to arrange +% for ignoring spaces, because they are now hidden if +% the tokens from above intervene. This is signaled by the 2e +% switch \texttt{@ignore} which is set in \cs{frozen@everymath} and +% \cs{frozen@everydisplay}. +% +% This is all 2e code so we use that syntax. +% \changes{v3.0z}{2022/07/04}{Ignore spaces if necessary (gh/886)} +% \begin{macrocode} + \if@ignore \ignorespaces \fi } } % \end{macrocode} diff --git a/macros/latex-dev/base/lthooks-code.pdf b/macros/latex-dev/base/lthooks-code.pdf Binary files differindex ce35e01745..0c0c9f29a4 100644 --- a/macros/latex-dev/base/lthooks-code.pdf +++ b/macros/latex-dev/base/lthooks-code.pdf diff --git a/macros/latex-dev/base/lthooks-doc.pdf b/macros/latex-dev/base/lthooks-doc.pdf Binary files differindex 2fcdd13703..094e4f76c7 100644 --- a/macros/latex-dev/base/lthooks-doc.pdf +++ b/macros/latex-dev/base/lthooks-doc.pdf diff --git a/macros/latex-dev/base/ltkeys.dtx b/macros/latex-dev/base/ltkeys.dtx index c6dfa5f6dd..df671d4259 100644 --- a/macros/latex-dev/base/ltkeys.dtx +++ b/macros/latex-dev/base/ltkeys.dtx @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltkeys.dtx} - [2022/06/16 v1.0g LaTeX Kernel (Kevyal options)] + [2022/07/05 v1.0i LaTeX Kernel (Kevyal options)] % \iffalse \documentclass{l3doc} \GetFileInfo{ltkeys.dtx} @@ -72,6 +72,7 @@ % \begin{itemize} % \item \texttt{.code} --- execute arbitrary code % \item \texttt{.if} --- sets a \TeX{} \cs{if...} switch +% \item \texttt{.ifnot} --- sets an inverted \TeX{} \cs{if...} switch % \item \texttt{.store} --- stores a value in a macro % \item \texttt{.usage} -- defines whether the option can be given only % when loading (\texttt{load}), in the preamble (\texttt{preamble}) or @@ -152,11 +153,13 @@ % % \subsection{Key properties} % -% \begin{macro}{.code, .if, .store, .usage} +% \begin{macro}{.code, .if, .ifnot, .store, .usage} % \changes{v1.0b}{2022/02/05} % {Create properties in \texttt{ltlkeys}} % \changes{v1.0c}{2022/02/07} % {Correct \texttt.{.code} property} +% \changes{v1.0i}{2022/06/22} +% {Add \texttt.{.notif} property} % \begin{macrocode} \group_begin: \cs_set_protected:Npn \@@_tmp:nn #1#2 @@ -170,6 +173,7 @@ \@@_tmp:nn { code:n } { code } { legacy_if_set:n } { if } + { legacy_if_set_inverse:n } { ifnot } { tl_set:N } { store } { usage:n } { usage } { \q_recursion_tail } { } @@ -205,6 +209,7 @@ % \begin{macro}{\@@_options_aux:n} % \changes{v1.0b}{2022/01/15} % {Clear option list in end-of-package hook} +% \changes{v1.0i}{2022/07/05}{Support \cs{CurrentOption}} % \begin{macro}{\@@_options_end:} % The main function calls functions to collect up the global and local % options into \cs{l_@@_options_clist} before calling the @@ -239,7 +244,8 @@ { \keys_define:nn {#1} { unknown .undefine: } } } \bool_set_true:N \l_@@_options_loading_bool - \keys_set:nV {#1} \l_@@_options_clist + \clist_map_variable:NNn \l_@@_options_clist \CurrentOption + { \keys_set:nV {#1} \CurrentOption } \bool_set_false:N \l_@@_options_loading_bool \AtEndOfPackage { \cs_set_eq:NN \@unprocessedoptions \scan_stop: } \@@_option_end: @@ -258,6 +264,7 @@ % % \begin{macro}{\@@_options_global:n} % \changes{v1.0f}{2022/03/18}{Simplify to always cover global options} +% \changes{v1.0h}{2022/06/20}{Use raw options data} % Global (class) options are handled differently for \LaTeXe{} packages % and classes. Hence this function is essentially a check on the current % file type. The initial test is needed as \LaTeXe{} allows variables to @@ -266,7 +273,7 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_options_global:n #1 { - \cs_if_eq:NNF \@classoptionslist \scan_stop: + \cs_if_eq:NNF \@raw@classoptionslist \scan_stop: { \cs_if_eq:NNTF \@currext \@clsextension { \@@_options_class:n {#1} } @@ -278,8 +285,11 @@ % % \begin{macro}{\@@_options_class:n} % \changes{v1.0g}{2022/06/16}{Better handling of option removal} -% \begin{macro}{\@@_options_remove:nnn} -% \changes{v1.0g}{2022/06/16}{New function} +% \changes{v1.0h}{2022/06/19}{Further work on handling of option removal} +% \changes{v1.0h}{2022/06/20}{Use raw options data} +% \begin{macro}{\@@_options_class:nnn} +% \changes{v1.0h}{2022/06/20}{New function} +% \changes{v1.0i}{2022/07/05}{Correct naming of raw class options storage} % For classes, each option (stripped of any content after |=|) % is checked for existence as a key. If found, the option is added to % the combined list for processing. On the other hand, unused options @@ -289,36 +299,44 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_options_class:n #1 { - \cs_if_free:cF { opt@ \@currname . \@currext } + \cs_if_free:cF { @raw@opt@ \@currname . \@currext } { \keys_if_exist:nnTF {#1} { unknown } { \clist_put_right:Nv \l_@@_options_clist - { opt@ \@currname . \@currext } + { @raw@opt@ \@currname . \@currext } } { - \clist_map_inline:cn { opt@ \@currname . \@currext } + \clist_map_inline:cn { @raw@opt@ \@currname . \@currext } { - \@@_options_remove:enn + \exp_args:Ne \@@_options_class:nnn { \@@_remove_equals:n {##1} } {##1} {#1} } } } } -\cs_new_protected:Npn \@@_options_remove:nnn #1#2#3 +\cs_new_protected:Npn \@@_options_class:nnn #1#2#3 { \keys_if_exist:nnTF {#3} {#1} { \clist_put_right:Nn \l_@@_options_clist {#2} } - { \clist_put_right:Nn \@unusedoptionlist {#1} } + { + \str_if_eq:eeF + { \exp_not:v { @raw@opt@ \@currname . \@currext } } + { \exp_not:V \@raw@classoptionslist } + { \clist_put_right:Nn \@unusedoptionlist {#1} } + } } -\cs_generate_variant:Nn \@@_options_remove:nnn { e } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\@@_options_package:n} % \changes{v1.0g}{2022/06/16}{Better handling of option removal} +% \changes{v1.0h}{2022/06/19}{Further work on handling of option removal} +% \changes{v1.0h}{2022/06/20}{Use raw options data} +% \begin{macro}{\@@_options_package:nnn} +% \changes{v1.0h}{2022/06/19}{New function} % For global options when processing a package, the tasks are slightly % different from those for a class. The check is the same, but here % there is nothing to do if the option is not applicable. Each valid @@ -326,18 +344,28 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_options_package:n #1 { - \clist_map_inline:Nn \@classoptionslist + \clist_map_inline:Nn \@raw@classoptionslist { - \@@_options_remove:enn + \exp_args:Ne \@@_options_package:nnn { \@@_remove_equals:n {##1} } {##1} {#1} } } +\cs_new_protected:Npn \@@_options_package:nnn #1#2#3 + { + \keys_if_exist:nnT {#3} {#1} + { + \clist_put_right:Nn \l_@@_options_clist {#2} + \clist_remove_all:Nn \@unusedoptionlist {#1} + } + } % \end{macrocode} % \end{macro} +% \end{macro} % % \begin{macro}{\@@_options_local:} -% If local options are found, the are added to the processing list. +% \changes{v1.0h}{2022/06/20}{Use raw options data} +% If local options are found, they are added to the processing list. % \LaTeXe{} stores options for each file in a macro which may or may not % exist, hence the need to use \cs{cs_if_exist:c}. % \begin{macrocode} @@ -345,10 +373,10 @@ { \cs_if_eq:NNF \@currext \@clsextension { - \cs_if_exist:cT { opt@ \@currname . \@currext } + \cs_if_exist:cT { @raw@opt@ \@currname . \@currext } { \clist_put_right:Nv \l_@@_options_clist - { opt@ \@currname . \@currext } + { @raw@opt@ \@currname . \@currext } } } } diff --git a/macros/latex-dev/base/ltluatex.pdf b/macros/latex-dev/base/ltluatex.pdf Binary files differindex ca6e145aba..bae6dabc74 100644 --- a/macros/latex-dev/base/ltluatex.pdf +++ b/macros/latex-dev/base/ltluatex.pdf diff --git a/macros/latex-dev/base/ltmarks-code.pdf b/macros/latex-dev/base/ltmarks-code.pdf Binary files differindex 8073a3346f..7fd6df326f 100644 --- a/macros/latex-dev/base/ltmarks-code.pdf +++ b/macros/latex-dev/base/ltmarks-code.pdf diff --git a/macros/latex-dev/base/ltmarks-doc.pdf b/macros/latex-dev/base/ltmarks-doc.pdf Binary files differindex 478db2f574..bebd49d906 100644 --- a/macros/latex-dev/base/ltmarks-doc.pdf +++ b/macros/latex-dev/base/ltmarks-doc.pdf diff --git a/macros/latex-dev/base/ltnews.pdf b/macros/latex-dev/base/ltnews.pdf Binary files differindex 01eff648b0..7546e0aed8 100644 --- a/macros/latex-dev/base/ltnews.pdf +++ b/macros/latex-dev/base/ltnews.pdf diff --git a/macros/latex-dev/base/ltnews.tex b/macros/latex-dev/base/ltnews.tex index cba11c3ce3..8d45f77cda 100644 --- a/macros/latex-dev/base/ltnews.tex +++ b/macros/latex-dev/base/ltnews.tex @@ -1,7 +1,7 @@ % \iffalse meta-comment % % Copyright (C) 2006, 2009, 2011, 2014 Heiko Oberdiek -% Copyright (C) 2014-2021 +% Copyright (C) 2014-2022 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -38,9 +38,9 @@ \NeedsTeXFormat{LaTeX2e} \ProvidesFile{ltnews.tex}% - [2021/11/12 v1.4d Master file for ltnews*.tex (LaTeX Project)] + [2022/06/10 v1.4e Master file for ltnews*.tex (LaTeX Project)] -\providecommand*{\lastissue}{35} +\providecommand*{\lastissue}{36} \InputIfFileExists{ltnews-lastissue.cfg}{}{} diff --git a/macros/latex-dev/base/ltnews01.pdf b/macros/latex-dev/base/ltnews01.pdf Binary files differindex e7edf21b38..3aec482def 100644 --- a/macros/latex-dev/base/ltnews01.pdf +++ b/macros/latex-dev/base/ltnews01.pdf diff --git a/macros/latex-dev/base/ltnews02.pdf b/macros/latex-dev/base/ltnews02.pdf Binary files differindex 160186c4e1..e9bfcc62b0 100644 --- a/macros/latex-dev/base/ltnews02.pdf +++ b/macros/latex-dev/base/ltnews02.pdf diff --git a/macros/latex-dev/base/ltnews03.pdf b/macros/latex-dev/base/ltnews03.pdf Binary files differindex 979e833d5e..aa3494706f 100644 --- a/macros/latex-dev/base/ltnews03.pdf +++ b/macros/latex-dev/base/ltnews03.pdf diff --git a/macros/latex-dev/base/ltnews04.pdf b/macros/latex-dev/base/ltnews04.pdf Binary files differindex f2cfc633fd..a3983345e6 100644 --- a/macros/latex-dev/base/ltnews04.pdf +++ b/macros/latex-dev/base/ltnews04.pdf diff --git a/macros/latex-dev/base/ltnews05.pdf b/macros/latex-dev/base/ltnews05.pdf Binary files differindex a57fa4a6b4..9d896763b8 100644 --- a/macros/latex-dev/base/ltnews05.pdf +++ b/macros/latex-dev/base/ltnews05.pdf diff --git a/macros/latex-dev/base/ltnews06.pdf b/macros/latex-dev/base/ltnews06.pdf Binary files differindex 657592f310..92f3e0ef3f 100644 --- a/macros/latex-dev/base/ltnews06.pdf +++ b/macros/latex-dev/base/ltnews06.pdf diff --git a/macros/latex-dev/base/ltnews07.pdf b/macros/latex-dev/base/ltnews07.pdf Binary files differindex 7213bf9294..b130226049 100644 --- a/macros/latex-dev/base/ltnews07.pdf +++ b/macros/latex-dev/base/ltnews07.pdf diff --git a/macros/latex-dev/base/ltnews08.pdf b/macros/latex-dev/base/ltnews08.pdf Binary files differindex 4a5dfba987..84e87f2af8 100644 --- a/macros/latex-dev/base/ltnews08.pdf +++ b/macros/latex-dev/base/ltnews08.pdf diff --git a/macros/latex-dev/base/ltnews09.pdf b/macros/latex-dev/base/ltnews09.pdf Binary files differindex e82d020e2e..372f6eae3e 100644 --- a/macros/latex-dev/base/ltnews09.pdf +++ b/macros/latex-dev/base/ltnews09.pdf diff --git a/macros/latex-dev/base/ltnews10.pdf b/macros/latex-dev/base/ltnews10.pdf Binary files differindex f30a263d10..2759d890b6 100644 --- a/macros/latex-dev/base/ltnews10.pdf +++ b/macros/latex-dev/base/ltnews10.pdf diff --git a/macros/latex-dev/base/ltnews11.pdf b/macros/latex-dev/base/ltnews11.pdf Binary files differindex e4502abab1..ef59d439fa 100644 --- a/macros/latex-dev/base/ltnews11.pdf +++ b/macros/latex-dev/base/ltnews11.pdf diff --git a/macros/latex-dev/base/ltnews12.pdf b/macros/latex-dev/base/ltnews12.pdf Binary files differindex 7332c60ea9..e4c78b5eb0 100644 --- a/macros/latex-dev/base/ltnews12.pdf +++ b/macros/latex-dev/base/ltnews12.pdf diff --git a/macros/latex-dev/base/ltnews13.pdf b/macros/latex-dev/base/ltnews13.pdf Binary files differindex 705c2bba3e..373e26adae 100644 --- a/macros/latex-dev/base/ltnews13.pdf +++ b/macros/latex-dev/base/ltnews13.pdf diff --git a/macros/latex-dev/base/ltnews14.pdf b/macros/latex-dev/base/ltnews14.pdf Binary files differindex e54e2af71f..622e0bf074 100644 --- a/macros/latex-dev/base/ltnews14.pdf +++ b/macros/latex-dev/base/ltnews14.pdf diff --git a/macros/latex-dev/base/ltnews15.pdf b/macros/latex-dev/base/ltnews15.pdf Binary files differindex 3402da5d62..007ac69cf3 100644 --- a/macros/latex-dev/base/ltnews15.pdf +++ b/macros/latex-dev/base/ltnews15.pdf diff --git a/macros/latex-dev/base/ltnews16.pdf b/macros/latex-dev/base/ltnews16.pdf Binary files differindex 10c2ed8725..7dc3976ba0 100644 --- a/macros/latex-dev/base/ltnews16.pdf +++ b/macros/latex-dev/base/ltnews16.pdf diff --git a/macros/latex-dev/base/ltnews17.pdf b/macros/latex-dev/base/ltnews17.pdf Binary files differindex d8dc264387..2dbc414d6f 100644 --- a/macros/latex-dev/base/ltnews17.pdf +++ b/macros/latex-dev/base/ltnews17.pdf diff --git a/macros/latex-dev/base/ltnews18.pdf b/macros/latex-dev/base/ltnews18.pdf Binary files differindex 62051b98de..40756259d4 100644 --- a/macros/latex-dev/base/ltnews18.pdf +++ b/macros/latex-dev/base/ltnews18.pdf diff --git a/macros/latex-dev/base/ltnews19.pdf b/macros/latex-dev/base/ltnews19.pdf Binary files differindex 607c5e9362..fc49ae3311 100644 --- a/macros/latex-dev/base/ltnews19.pdf +++ b/macros/latex-dev/base/ltnews19.pdf diff --git a/macros/latex-dev/base/ltnews20.pdf b/macros/latex-dev/base/ltnews20.pdf Binary files differindex c8a813b359..d9c123003a 100644 --- a/macros/latex-dev/base/ltnews20.pdf +++ b/macros/latex-dev/base/ltnews20.pdf diff --git a/macros/latex-dev/base/ltnews21.pdf b/macros/latex-dev/base/ltnews21.pdf Binary files differindex 28d1f4b390..fde160c811 100644 --- a/macros/latex-dev/base/ltnews21.pdf +++ b/macros/latex-dev/base/ltnews21.pdf diff --git a/macros/latex-dev/base/ltnews22.pdf b/macros/latex-dev/base/ltnews22.pdf Binary files differindex 67fa8c18a5..e7e19e4480 100644 --- a/macros/latex-dev/base/ltnews22.pdf +++ b/macros/latex-dev/base/ltnews22.pdf diff --git a/macros/latex-dev/base/ltnews23.pdf b/macros/latex-dev/base/ltnews23.pdf Binary files differindex 82d4c1b150..28ecc021b3 100644 --- a/macros/latex-dev/base/ltnews23.pdf +++ b/macros/latex-dev/base/ltnews23.pdf diff --git a/macros/latex-dev/base/ltnews24.pdf b/macros/latex-dev/base/ltnews24.pdf Binary files differindex cb6118e113..4498ad50c1 100644 --- a/macros/latex-dev/base/ltnews24.pdf +++ b/macros/latex-dev/base/ltnews24.pdf diff --git a/macros/latex-dev/base/ltnews25.pdf b/macros/latex-dev/base/ltnews25.pdf Binary files differindex c637eea5f0..57b8a9b29f 100644 --- a/macros/latex-dev/base/ltnews25.pdf +++ b/macros/latex-dev/base/ltnews25.pdf diff --git a/macros/latex-dev/base/ltnews26.pdf b/macros/latex-dev/base/ltnews26.pdf Binary files differindex 88a9f99bb7..0db59d5095 100644 --- a/macros/latex-dev/base/ltnews26.pdf +++ b/macros/latex-dev/base/ltnews26.pdf diff --git a/macros/latex-dev/base/ltnews27.pdf b/macros/latex-dev/base/ltnews27.pdf Binary files differindex 296c8d3bea..bde51913b1 100644 --- a/macros/latex-dev/base/ltnews27.pdf +++ b/macros/latex-dev/base/ltnews27.pdf diff --git a/macros/latex-dev/base/ltnews28.pdf b/macros/latex-dev/base/ltnews28.pdf Binary files differindex aecbb27797..a47920f8e0 100644 --- a/macros/latex-dev/base/ltnews28.pdf +++ b/macros/latex-dev/base/ltnews28.pdf diff --git a/macros/latex-dev/base/ltnews29.pdf b/macros/latex-dev/base/ltnews29.pdf Binary files differindex 07f98d4992..1696257c15 100644 --- a/macros/latex-dev/base/ltnews29.pdf +++ b/macros/latex-dev/base/ltnews29.pdf diff --git a/macros/latex-dev/base/ltnews30.pdf b/macros/latex-dev/base/ltnews30.pdf Binary files differindex 4288ec154d..aed2058cef 100644 --- a/macros/latex-dev/base/ltnews30.pdf +++ b/macros/latex-dev/base/ltnews30.pdf diff --git a/macros/latex-dev/base/ltnews31.pdf b/macros/latex-dev/base/ltnews31.pdf Binary files differindex 1ae3e8c407..fd4d604bde 100644 --- a/macros/latex-dev/base/ltnews31.pdf +++ b/macros/latex-dev/base/ltnews31.pdf diff --git a/macros/latex-dev/base/ltnews32.pdf b/macros/latex-dev/base/ltnews32.pdf Binary files differindex 901165053f..e4d4b6254c 100644 --- a/macros/latex-dev/base/ltnews32.pdf +++ b/macros/latex-dev/base/ltnews32.pdf diff --git a/macros/latex-dev/base/ltnews33.pdf b/macros/latex-dev/base/ltnews33.pdf Binary files differindex f77d04b714..8557cfc783 100644 --- a/macros/latex-dev/base/ltnews33.pdf +++ b/macros/latex-dev/base/ltnews33.pdf diff --git a/macros/latex-dev/base/ltnews34.pdf b/macros/latex-dev/base/ltnews34.pdf Binary files differindex 667790ca60..9232aadfe9 100644 --- a/macros/latex-dev/base/ltnews34.pdf +++ b/macros/latex-dev/base/ltnews34.pdf diff --git a/macros/latex-dev/base/ltnews35.pdf b/macros/latex-dev/base/ltnews35.pdf Binary files differindex 62476fffbb..67b75a4d50 100644 --- a/macros/latex-dev/base/ltnews35.pdf +++ b/macros/latex-dev/base/ltnews35.pdf diff --git a/macros/latex-dev/base/ltnews35.tex b/macros/latex-dev/base/ltnews35.tex index 0e0cda79b1..a035e4d5c7 100644 --- a/macros/latex-dev/base/ltnews35.tex +++ b/macros/latex-dev/base/ltnews35.tex @@ -208,7 +208,7 @@ means that existing documents are in no way affected by the work that is carried out and is in a wider alpha or beta test phase. Documentation about the new command and -already existing keys are in \file{l3meta.pdf} and \file{documentmetadata-support.pdf} +already existing keys are in \file{ltmeta} (part of \file{source2e.pdf}) and \file{documentmetadata-support.pdf} and also in the documentation of the \pkg{pdfmanagement-testphase} package. Package and class authors can test if a user has used \cs{DocumentMetadata} diff --git a/macros/latex-dev/base/ltnews36.pdf b/macros/latex-dev/base/ltnews36.pdf Binary files differnew file mode 100644 index 0000000000..dc8c3d21ed --- /dev/null +++ b/macros/latex-dev/base/ltnews36.pdf diff --git a/macros/latex-dev/base/ltnews36.tex b/macros/latex-dev/base/ltnews36.tex new file mode 100644 index 0000000000..df72bc1d64 --- /dev/null +++ b/macros/latex-dev/base/ltnews36.tex @@ -0,0 +1,225 @@ +% \iffalse meta-comment +% +% Copyright 2021-2022 +% The LaTeX 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 +% Filename: ltnews36.tex +% +% This is issue 36 of LaTeX News. + +\NeedsTeXFormat{LaTeX2e}[2020-02-02] + +\documentclass{ltnews} + +%% Maybe needed only for Chris' inadequate system: +\providecommand\Dash {\unskip \textemdash} + +%% NOTE: Chris' preferred hyphens! +%%\showhyphens{parameters} +%% \hyphenation{because parameters parameter} + +\usepackage[T1]{fontenc} + +\usepackage{lmodern,url,hologo} + +\usepackage{csquotes} +\usepackage{multicol} +\usepackage{color} + +\providecommand\hook[1]{\texttt{#1}} + +\providecommand\meta[1]{$\langle$\textrm{\itshape#1}$\rangle$} +\providecommand\option[1]{\texttt{#1}} +\providecommand\env[1]{\texttt{#1}} +\providecommand\Arg[1]{\texttt\{\meta{#1}\texttt\}} + + +\providecommand\eTeX{\hologo{eTeX}} +\providecommand\XeTeX{\hologo{XeTeX}} +\providecommand\LuaTeX{\hologo{LuaTeX}} +\providecommand\pdfTeX{\hologo{pdfTeX}} +\providecommand\MiKTeX{\hologo{MiKTeX}} +\providecommand\CTAN{\textsc{ctan}} +\providecommand\TL{\TeX\,Live} +\providecommand\githubissue[2][]{\ifhmode\unskip\fi + \quad\penalty500\strut\nobreak\hfill + \mbox{\small\slshape(% + \href{https://github.com/latex3/latex2e/issues/\getfirstgithubissue#2 \relax}% + {github issue#1 #2}% + )}% + \par\smallskip} +%% But Chris has to mostly disable \href for his TEXPAD app: +%% \def\href #1{} % Only For Chris' deficient TeX engine + +% simple solution right now (just link to the first issue if there are more) +\def\getfirstgithubissue#1 #2\relax{#1} + +\providecommand\sxissue[1]{\ifhmode\unskip + \else + % githubissue preceding + \vskip-\smallskipamount + \vskip-\parskip + \fi + \quad\penalty500\strut\nobreak\hfill + \mbox{\small\slshape(\url{https://tex.stackexchange.com/#1})}\par} + +\providecommand\gnatsissue[2]{\ifhmode\unskip\fi + \quad\penalty500\strut\nobreak\hfill + \mbox{\small\slshape(% + \href{https://www.latex-project.org/cgi-bin/ltxbugs2html?pr=#1\%2F\getfirstgithubissue#2 \relax}% + {gnats issue #1/#2}% + )}% + \par} + +\let\cls\pkg +\providecommand\env[1]{\texttt{#1}} +\providecommand\acro[1]{\textsc{#1}} + +\vbadness=1400 % accept slightly empty columns + + +\makeatletter +% maybe not the greatest design but normally we wouldn't have subsubsections +\renewcommand{\subsubsection}{% + \@startsection {subsubsection}{2}{0pt}{1.5ex \@plus 1ex \@minus .2ex}% + {-1em}{\@subheadingfont\colonize}% +} +\providecommand\colonize[1]{#1:} +\makeatother + +\let\finalvspace\vspace % for document layout fixes + +% Undo ltnews's \verbatim@font with active < and > +\makeatletter +\def\verbatim@font{% + \normalsize\ttfamily} +\makeatletter + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\providecommand\tubcommand[1]{} +\tubcommand{\input{tubltmac}} + +\publicationmonth{November} +\publicationyear{2022 --- DRAFT version for upcoming release} + +\publicationissue{36} + +\begin{document} + +\tubcommand{\addtolength\textheight{4.2pc}} % only for TUB + +\maketitle +{\hyphenpenalty=10000 \exhyphenpenalty=10000 \spaceskip=3.33pt \hbadness=10000 +\tableofcontents} + +\setlength\rightskip{0pt plus 3em} + + +\medskip + + +\section{Introduction} + +\section{New or improved commands} + +\section{Code improvements} + +\subsection{Support for slanted small caps in the EC-fonts } +Since some time \LaTeX{} supports the combination of the shapes +small caps and italic/slanted. The EC-fonts contain slanted small caps fonts +but using them required the loading of an external package. Suitable font definitions +have now been added to \pkg{t1cmd.fd} and so from now on +\begin{verbatim} + \textsc{\textsl{slanted small}} + \textsc{\textit{italic small caps}} + \bfseries + \textsc{\textsl{bold slanted small caps}} + \textsc{\textit{bold italic small caps}} +\end{verbatim} +will give the expected result: {\fontfamily{cmr} +\textsc{\textsl{slanted small}} \textsc{\textit{italic small caps}} +\bfseries +\textsc{\textsl{bold slanted small caps}} \textsc{\textit{bold italic small caps}}} +% +\githubissue{782} + + +\subsection{EC sans serif at small sizes} +The EC (T1 encoded Computer Modern) sans serif fonts have errors at +small sizes. (The medium weight is bolder and wider than the bold +extended) The default \texttt{.fd} file has been adjusted to use a +scaled 8pt font. +% +\githubissue{879} + + +\section{Bug fixes} + +\section{Changes to packages in the \pkg{amsmath} category} + +\section{Changes to packages in the \pkg{graphics} category} + +\section{Changes to packages in the \pkg{tools} category} + + +\medskip + +\begin{thebibliography}{9} + +\fontsize{9.3}{11.3}\selectfont + +%\bibitem{36:blueprint} Frank Mittelbach and Chris Rowley: +% \emph{\LaTeX{} Tagged PDF \Dash A blueprint for a large project}.\\ +% \url{https://latex-project.org/publications/indexbyyear/2020/} + +%\bibitem{36:source2e} +% \emph{\LaTeX{} documentation on the \LaTeX{} Project Website}.\\ +% \url{https://latex-project.org/help/documentation/} + +%\bibitem{36:ltnews31} \LaTeX{} Project Team: +% \emph{\LaTeXe{} news 31}.\\ +% \url{https://latex-project.org/news/latex2e-news/ltnews31.pdf} + +%\bibitem{36:ltnews32} \LaTeX{} Project Team: +% \emph{\LaTeXe{} news 32}.\\ +% \url{https://latex-project.org/news/latex2e-news/ltnews32.pdf} + +%\bibitem{36:ltnews33} \LaTeX{} Project Team: +% \emph{\LaTeXe{} news 33}.\\ +% \url{https://latex-project.org/news/latex2e-news/ltnews33.pdf} + +%\bibitem{36:ltnews34} \LaTeX{} Project Team: +% \emph{\LaTeXe{} news 34}.\\ +% \url{https://latex-project.org/news/latex2e-news/ltnews34.pdf} +% +%\bibitem{36:ltfilehook-doc} Frank Mittelbach, Phelype Oleinik, \LaTeX{}~Project~Team: +% \emph{The \texttt{\upshape ltfilehook} documentation}.\\ +% Run \texttt{texdoc} \texttt{ltfilehook-doc} to view. +\end{thebibliography} + + + +\end{document} diff --git a/macros/latex-dev/base/ltpara-code.pdf b/macros/latex-dev/base/ltpara-code.pdf Binary files differindex fa5199e171..d58f89f994 100644 --- a/macros/latex-dev/base/ltpara-code.pdf +++ b/macros/latex-dev/base/ltpara-code.pdf diff --git a/macros/latex-dev/base/ltpara-doc.pdf b/macros/latex-dev/base/ltpara-doc.pdf Binary files differindex d0e7ee73e8..eff75892bc 100644 --- a/macros/latex-dev/base/ltpara-doc.pdf +++ b/macros/latex-dev/base/ltpara-doc.pdf diff --git a/macros/latex-dev/base/ltshipout-code.pdf b/macros/latex-dev/base/ltshipout-code.pdf Binary files differindex a475b7424e..4c88747682 100644 --- a/macros/latex-dev/base/ltshipout-code.pdf +++ b/macros/latex-dev/base/ltshipout-code.pdf diff --git a/macros/latex-dev/base/ltshipout-doc.pdf b/macros/latex-dev/base/ltshipout-doc.pdf Binary files differindex 99c24eb7c0..76578851f9 100644 --- a/macros/latex-dev/base/ltshipout-doc.pdf +++ b/macros/latex-dev/base/ltshipout-doc.pdf diff --git a/macros/latex-dev/base/ltvers.dtx b/macros/latex-dev/base/ltvers.dtx index cd228e62b4..024d107840 100644 --- a/macros/latex-dev/base/ltvers.dtx +++ b/macros/latex-dev/base/ltvers.dtx @@ -115,7 +115,7 @@ {2022-06-01} %</2ekernel|latexrelease> %<*2ekernel> -\def\patch@level{-0} +\def\patch@level{-1} % \end{macrocode} % % \begin{macro}{\development@branch@name} diff --git a/macros/latex-dev/base/ltx3info.pdf b/macros/latex-dev/base/ltx3info.pdf Binary files differindex 07563692ff..753b3308a2 100644 --- a/macros/latex-dev/base/ltx3info.pdf +++ b/macros/latex-dev/base/ltx3info.pdf diff --git a/macros/latex-dev/base/ltxdoc.dtx b/macros/latex-dev/base/ltxdoc.dtx index f68c45ee36..46c324c590 100644 --- a/macros/latex-dev/base/ltxdoc.dtx +++ b/macros/latex-dev/base/ltxdoc.dtx @@ -30,7 +30,7 @@ % %<class>\NeedsTeXFormat{LaTeX2e} %<class>\ProvidesClass{ltxdoc} -%<class> [2022/06/14 v2.1g Standard LaTeX documentation class] +%<class> [2022/06/22 v2.1h Standard LaTeX documentation class] % %<*driver> \documentclass{ltxdoc} @@ -294,10 +294,12 @@ % \changes{v2.0k}{1994/05/21}{New definition, so \cmd\{ works.} % \begin{macro}{\cs} % \changes{v2.0d}{1994/03/17}{Add \cs{cs}} +% \changes{v2.1h}{2022/06/22}{Update \cs{cmd} definition to work with new \cs{cs}} % \begin{macrocode} -\def\cmd#1{\cs{\expandafter\cmd@to@cs\string#1}} +%\DeclareRobustCommand\cs[1]... % defined later +%\def\cmd#1{\cs{\expandafter\cmd@to@cs\string#1}} % can't use with new \cs +\def\cmd#1{\texttt{\char`\\\expandafter\cmd@to@cs\string#1}} \def\cmd@to@cs#1#2{\char\number`#2\relax} -%\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}} % already part of doc.sty % \end{macrocode} % \end{macro} % \end{macro} diff --git a/macros/latex-dev/base/ltxdoc.pdf b/macros/latex-dev/base/ltxdoc.pdf Binary files differindex 6d1b06cc5b..3be77146eb 100644 --- a/macros/latex-dev/base/ltxdoc.pdf +++ b/macros/latex-dev/base/ltxdoc.pdf diff --git a/macros/latex-dev/base/makeindx.pdf b/macros/latex-dev/base/makeindx.pdf Binary files differindex da0fa7cab9..552a8675cf 100644 --- a/macros/latex-dev/base/makeindx.pdf +++ b/macros/latex-dev/base/makeindx.pdf diff --git a/macros/latex-dev/base/modguide.pdf b/macros/latex-dev/base/modguide.pdf Binary files differindex e085c32c5e..5898f65989 100644 --- a/macros/latex-dev/base/modguide.pdf +++ b/macros/latex-dev/base/modguide.pdf diff --git a/macros/latex-dev/base/nfssfont.pdf b/macros/latex-dev/base/nfssfont.pdf Binary files differindex e0c44536aa..97fa122ce9 100644 --- a/macros/latex-dev/base/nfssfont.pdf +++ b/macros/latex-dev/base/nfssfont.pdf diff --git a/macros/latex-dev/base/proc.pdf b/macros/latex-dev/base/proc.pdf Binary files differindex 93cd6b8c44..eeeed89124 100644 --- a/macros/latex-dev/base/proc.pdf +++ b/macros/latex-dev/base/proc.pdf diff --git a/macros/latex-dev/base/slides.pdf b/macros/latex-dev/base/slides.pdf Binary files differindex cbbbfe0132..f89b9f64ff 100644 --- a/macros/latex-dev/base/slides.pdf +++ b/macros/latex-dev/base/slides.pdf diff --git a/macros/latex-dev/base/slifonts.pdf b/macros/latex-dev/base/slifonts.pdf Binary files differindex 609139b741..5a92ec1246 100644 --- a/macros/latex-dev/base/slifonts.pdf +++ b/macros/latex-dev/base/slifonts.pdf diff --git a/macros/latex-dev/base/source2e.pdf b/macros/latex-dev/base/source2e.pdf Binary files differindex 0a4fe0f023..b6bca6034f 100644 --- a/macros/latex-dev/base/source2e.pdf +++ b/macros/latex-dev/base/source2e.pdf diff --git a/macros/latex-dev/base/syntonly.pdf b/macros/latex-dev/base/syntonly.pdf Binary files differindex d880fd08ab..5a2d5eae9b 100644 --- a/macros/latex-dev/base/syntonly.pdf +++ b/macros/latex-dev/base/syntonly.pdf diff --git a/macros/latex-dev/base/tlc2.pdf b/macros/latex-dev/base/tlc2.pdf Binary files differindex 12b609b372..d3630181bd 100644 --- a/macros/latex-dev/base/tlc2.pdf +++ b/macros/latex-dev/base/tlc2.pdf diff --git a/macros/latex-dev/base/tulm.pdf b/macros/latex-dev/base/tulm.pdf Binary files differindex e7f39c7338..513aadc918 100644 --- a/macros/latex-dev/base/tulm.pdf +++ b/macros/latex-dev/base/tulm.pdf diff --git a/macros/latex-dev/base/usrguide.pdf b/macros/latex-dev/base/usrguide.pdf Binary files differindex a2e85401fd..f2a32eb6ea 100644 --- a/macros/latex-dev/base/usrguide.pdf +++ b/macros/latex-dev/base/usrguide.pdf diff --git a/macros/latex-dev/base/usrguide3.pdf b/macros/latex-dev/base/usrguide3.pdf Binary files differindex 5cb860dab4..40a7c85f38 100644 --- a/macros/latex-dev/base/usrguide3.pdf +++ b/macros/latex-dev/base/usrguide3.pdf diff --git a/macros/latex-dev/base/usrguide3.tex b/macros/latex-dev/base/usrguide3.tex index efec9ad2a2..a148c77ed5 100644 --- a/macros/latex-dev/base/usrguide3.tex +++ b/macros/latex-dev/base/usrguide3.tex @@ -37,7 +37,7 @@ \author{\copyright~Copyright 2020-2022, \LaTeX\ Project Team.\\ All rights reserved.} -\date{2022-02-19} +\date{2022-07-05} \NewDocumentCommand\cs{m}{\texttt{\textbackslash\detokenize{#1}}} \NewDocumentCommand\marg{m}{\arg{#1}} @@ -1054,4 +1054,59 @@ it is set to \dimeval{\topskip+\baselineskip*\inteval{40-1}}, given the values \cs{topskip} (\dimeval{\topskip}) and \cs{baselineskip} (\dimeval{\baselineskip}) in the current document. +\section{Case changing} + +\TeX{} provides two primitives \cs{uppercase} and \cs{lowercase} for changing +the case of text. However, these have a range of limitations: they only change +the case of explicit characters, do not account for the surrounding context, do +not support UTF-8 input with 8-bit engines, etc. To overcome this problem, +\LaTeX{} provides the commands \cs{MakeUppercase}, \cs{MakeLowercase} and +\cs{MakeTitlecase}: these offer significant enhancement over the \TeX{} +primitives. These commands are engine-robust (\cs{protected}), and so +can be used in moving arguments. + +Upper- and lower-casing are well-understood in general conversation. +Titlecasing here follows the definition given by the Unicode Consortium: the +first character of the input will be converted to (broadly) uppercase, and the +rest of the input to lowercase. The full range of Unicode UTF-8 input can be +supported, with the proviso that at present the characters set up with 8-bit +engines match those available in standard input encodings (|T1|, |T2|, |LGR|). +\begin{quotation} + \begin{tabular}{rl} + |\MakeUppercase{hello WORLD ßüé}| & \MakeUppercase{hello WORLD ßüé} \\ + |\MakeLowercase{hello WORLD ßüé}| & \MakeLowercase{hello WORLD ßüé} \\ + |\MakeTitlecase{hello WORLD ßüé}| & \MakeTitlecase{hello WORLD ßüé} \\ + \end{tabular} +\end{quotation} + +The input given to these commands is `expanded' before case changing is +applied. This means that any commands within the input that convert to pure +text will be case changed. Mathematical content is automatically excluded, as +are the arguments to the commands \cs{label}, \cs{ref}, \cs{cite}, \cs{begin} +and \cs{end}. Additional exclusions can be added using the command +\cs{AddToNoCaseChangeList}. Input can be excluded from case changing using the +command \cs{NoCaseChange}. +\begin{quotation} + \begin{tabular}{rl} + |\MakeUppercase{Some text $y = mx + c$}| + & \MakeUppercase{Some text $y = mx + c$} \\ + |\MakeUppercase{\NoCaseChange{iPhone}}| + & \MakeLowercase{\NoCaseChange{iPhone}} \\ + \end{tabular} +\end{quotation} + +To allow robust commands to be used within case changing \emph{and} to produce +the expected output, two additional control commands are available. +\cs{CaseSwitch} allows the user to specify the result for the four possible +cases +\begin{itemize} + \item No case changing + \item Uppercasing + \item Lowercasing + \item Titlecasing (only applies for the start of the input) +\end{itemize} +The command \cs{DeclareCaseChangeEquivalent} provides a way to substitute a +command by an alternative version when it is found inside a case changing +situation. + \end{document} diff --git a/macros/latex-dev/base/utf8ienc.pdf b/macros/latex-dev/base/utf8ienc.pdf Binary files differindex a2bf91d2e5..ff3d528a12 100644 --- a/macros/latex-dev/base/utf8ienc.pdf +++ b/macros/latex-dev/base/utf8ienc.pdf diff --git a/macros/latex-dev/base/webcomp.pdf b/macros/latex-dev/base/webcomp.pdf Binary files differindex 9d88470900..2d1f29c35b 100644 --- a/macros/latex-dev/base/webcomp.pdf +++ b/macros/latex-dev/base/webcomp.pdf |