diff options
Diffstat (limited to 'macros/latex-dev/base/ltnews39.tex')
-rw-r--r-- | macros/latex-dev/base/ltnews39.tex | 536 |
1 files changed, 368 insertions, 168 deletions
diff --git a/macros/latex-dev/base/ltnews39.tex b/macros/latex-dev/base/ltnews39.tex index 92c835926f..ab62f12ad4 100644 --- a/macros/latex-dev/base/ltnews39.tex +++ b/macros/latex-dev/base/ltnews39.tex @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright 2023 +% Copyright 2024 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -34,12 +34,12 @@ \documentclass{ltnews} -%% Maybe needed only for Chris' inadequate system: +%% Maybe needed only for Chris' inadequate system: \providecommand\Dash {\unskip \textemdash} -%% NOTE: Chris' preferred hyphens! -%%\showhyphens{parameters} -%% \hyphenation{because parameters parameter} +%% NOTE: Chris' preferred hyphens! +%% \showhyphens{parameters} +%% \hyphenation{because} \usepackage[T1]{fontenc} @@ -64,6 +64,8 @@ \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(% @@ -72,7 +74,7 @@ )}% \par\smallskip} %% But Chris has to mostly disable \href for his TEXPAD app: -%% \def\href #1{} % Only For Chris' deficient TeX engine +%% \def\href #1#2{#2} % 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} @@ -102,31 +104,31 @@ \let\finalpagebreak\pagebreak % for TUB (if they use it) +\let\finalvspace\vspace % for document layout fixes \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}% + \@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 +\def\verbatim@font{\normalsize\ttfamily} +\makeatother + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \providecommand\tubcommand[1]{} \tubcommand{\input{tubltmac}} \publicationmonth{June} -\publicationyear{2024 --- DRAFT version for upcoming release} -%\publicationyear{2024} +%\publicationyear{2024 --- DRAFT version for upcoming release} +\publicationyear{2024} \publicationissue{39} @@ -144,28 +146,46 @@ \section{Introduction} -\emph{to write} +The \LaTeX{} Project team remains strongly focused on producing +automatically tagged PDF output for accessibility and reuse. At the +beginning of 2024 the ISO PDF/UA-2 and the WTPDF (well-tagged PDF) +standards were released and we are glad to be able to report that it +is now possible to use \LaTeX{} to automatically produce documents +that conform to these new standards.\footnote{At the present time we +are still in a trial/prototype phase in which only a limited set of +document classes and packages are supported. Over the next releases +we expect to gradually lift these restrictions and eventually provide +the full functionality as part of the core distribution, rather than +through \texttt{latex-lab} modules.} A sample collection of such +documents ranging from classical texts, such as the Bible, to recent +technical papers submitted to arXiv.org can be found at +\url{https://github.com/latex3/tagging-project/discussions/72}. + +In February Ulrike and Frank presented the current project status +during the 5th International Workshop on \enquote{Digitization and + E-Inclusion in Mathematics and Science 2024} (DEIMS 2024) at Nihon +University, Tokyo, Japan; see~\cite{39:deims}. \section{News from the \enquote{\LaTeX{} Tagged PDF} project} -In the previous \LaTeX{} News~\cite{39:ltnews38} we announced a first prototype -support for tagged tabulars. Some of the necessary support code has +In the previous \LaTeX{} News~\cite{39:ltnews38} we announced some prototype +support for tagged tabulars. Some of the necessary code has now been moved from \texttt{latex-lab} to the corresponding packages (using sockets and plugs) and to the \LaTeX{} kernel (for those parts that are also necessary for other aspects of tagging). The kernel code specific to tagging is implemented in the file -\texttt{lttagging.dtx}. For now it contains \cs{UseTaggingSocket}, a +\texttt{lttagging.dtx}. For now it contains \cs{UseTaggingSocket}, a special invocation command for sockets that are specific to tagging. This enables us to also provide \cs{SuspendTagging} and \cs{ResumeTagging}, i.e., a very efficient way to temporarily disable -the whole tagging process. This is, for example, necessary, if some +the whole tagging process. This is, for example, necessary if some code is doing trial typesetting. In that case the trials should not -generate tagging structures\Dash only the finally chosen version +generate tagging structures\Dash only the finally-chosen version should. Thus, \pkg{tabularx}, for example, stops the tagging while doing its trials to figure out the correct column widths to use, and -then renables tagging when the table is finally typeset. +then re-enables tagging when the table is finally typeset. Over time, \texttt{lttagging.dtx} will hold more general tagging code as appropriate. For now it is only documented as part of @@ -173,35 +193,35 @@ as appropriate. For now it is only documented as part of for tagging, which will then also include the information currently found in various other places, e.g., \texttt{tagpdf.pdf}. -We also added support for a few missing commands +We also added support for a few missing commands described in Leslie Lamport's \emph{\LaTeX{} -Manual}~\cite{38:Lamport}: If \texttt{phase-III} is used +Manual}~\cite{39:Lamport}: If \texttt{phase-III} is used the \cs{marginpar} command will be properly tagged (depending on the PDF version) as an \texttt{Aside} or a \texttt{Note} structure. In the standard classes \cs{maketitle} will be tagged if the additional testphase module \texttt{title} is used. The \texttt{math} module has been extended and now includes -options to attach MathML files to the structures. +options to attach MathML files to the structures. First tests with a PDF reader and screen reader that support -associated files looks very promising. Examples of PDF files tagged with the -new method can be found at -\url{https://github.com/latex3/tagging-project/discussions/56}. +associated files look very promising. Examples of PDF files tagged with the +new method can be found at +\url{https://github.com/latex3/tagging-project/discussions/72}. -At last various small bugs and problems reported at +At last various small bugs and problems reported at \url{https://github.com/latex3/tagging-project} -has been fixed. Such a feedback is very valuable, +have been fixed. +Such feedback is very valuable, so we hope to see you there and thank you for any contribution, whether it is an issue or a post on a discussion thread. - + \section{Enhancements to the new mark mechanism} -In June 2022 we introduced a new mark mechanism in -\LaTeX{}~\cite[p.~76]{39:ltnews} that allows keeping track of multiple -independent marks. It also properly supports top marks, something that wasn't +In June 2022 we introduced a new mark mechanism~\cite[p.~76]{39:ltnews} that allows keeping track of multiple +independent marks. It also properly supports top marks, something that wasn't reliably possible with \LaTeX{} before. There was, however, one limitation: to retrieve the marks from the @@ -210,7 +230,7 @@ that \TeX{} would produce split marks that the mechanism could then use. Unfortunately, \TeX{} gets very upset if it finds infinite negative glue (e.g., from \cs{vss}) within this data. This is not totally surprising because such glue would allow splitting off any -amount of material as such glue would hide the size of it. \TeX{} +amount of material as such glue would hide its size. \TeX{} therefore responds with an error message if it find such glue while doing a \cs{vsplit} operation (and it does so even if a later glue item cancels the infinite glue). @@ -228,11 +248,11 @@ that make use of its testing capabilities: the new mechanism temporarily changes \cs{interactionmode} and, for implementation reasons in \TeX{}, that results in extra newlines in the \texttt{.log} file, so instead of seeing \texttt{[1] [2]} you will see each on -separate lines. This means that test files might show difference of +separate lines. This means that test files might show differences of that nature, once the code is active, and must therefore be -regenerated as necessary.} With the new code \TeX{} will neither stop -nor show anything on the terminal. What we can't do, though, is to -avoid that an error is written to the log file, but to make it clear +regenerated as necessary.} With the new code \TeX{} will neither stop +nor show anything on the terminal. What we can't do, though, is +avoid an error being written to the log file, but to make it clear that this error is harmless and should be ignored we have arranged the code so that the error message, if it is issued, takes the following format: @@ -240,60 +260,29 @@ format: \makeatletter \def\verbatim@font{% \small\ttfamily} -\makeatletter +\makeatother \begin{verbatim} ! Infinite glue shrinkage found in box being split. -<argument> Infinite shrink error above ignored ! -l. ... } +<argument> Infinite shrink error above ignored ! +l. ... } \end{verbatim} Not perfect (especially the somewhat unmotivated \texttt{<argument>}), -but you can only do so much if error messages and their texts are +but you can only do so much when error messages and their texts are hard-wired in the engine. \endgroup So why all this? There are two reasons: we do not lose marks in edge -cases any longer and perhaps more importantly we are now also reliably +cases any more, and perhaps more importantly we are now also reliably able to extract marks from arbitrarily boxed data, something that -wasn't possible at all before. This is, for example, necessary to +wasn't possible at all before. This is necessary, for example, to support extended marks in \env{multicols} environments or extract them -from floats, marginpars, etc. +from floats, marginpars, etc.\tubcommand{\looseness-1} Details about the implementation can be found in \texttt{texdoc ltmarks-code} or in the shorter \texttt{texdoc ltmarks-doc} (which only describes the general concepts and the command interfaces). -\section{New or improved commands} - -\subsection{\pkg{doc}: provide \cs{ProvideDocElement}} - -Beside \cs{NewDocElement} and \cs{RenewDocElement} we now also offer a -\cs{ProvideDocElement} declaration that does nothing unless the doc -element could be declared with \cs{NewDocElement}. This can be useful -if documentation files are processed both individually as well as -combined. - - -\subsection{\pkg{doc}: better support for \pkg{upquote}} - -In \LaTeX{} News~37~\cite{39:ltnews37} we wrote that support for the -\pkg{upquote} package was added to the \pkg{doc} package, but back -then this was only done for \cs{verb}, and the \env{verbatim} -environments. However, the bulk of code in a typical \texttt{.dtx} file is -within \env{macrocode} or \env{macrocode*} environments which were not -affected by adding \pkg{upquote}. We have now updated those, such that -\pkg{upquote} alters the quote characters in these environments as -well. -% -\githubissue{1230} - -\subsection{\pkg{ifthen}: guard against active characters in comparisons} -The \cs{ifthenelse} command now ensures that \verb|<|, \verb|=| and -\verb|>| are safe -in numeric tests, even if they have been made active -(typically by \pkg{babel} language shorthands.) -% -\githubissue{756} \section{Providing \pkg{xtemplate} in the format} @@ -302,26 +291,32 @@ into the kernel: the package \pkg{xparse}, which was integrated as \pkg{ltcmd}. With this edition, we move another long-term development idea to stable status: \emph{templates}. -In this context, templates are a mechanism to abstract out various elements of a -document (such as \enquote{sectioning}) in such a way that different -implementations can be interchanged, and design decisions are set up efficiently -and controllably. +In this context, templates are a mechanism to abstract out various elements +of a document (such as \enquote{sectioning}) in such a way that different +implementations can be interchanged, +%% CAR added text: --- FMi: but it is wrong +%% variations of the document markup can be accommodated, +and design decisions can be implemented efficiently and controllably. In contrast to \pkg{ltcmd}, which provides a mechanism that many document authors will exploit routinely, templates are a more specialised tool. We anticipate that they will be used by a small number of programmers, providing generic ideas that will then be used within document classes. Most document -authors will therefore likely encounter templates directly only rarely. +authors will therefore likely directly encounter templates only rarely. We anticipate though that they will be \emph{using} templates provided by the team or others. +%% CAR added this paragraph: FMi: doesn't belong in ltnews +%We shall continue to develop these generic ideas and interfaces in various ways: for example, to support the varied document markup possibilities +%provided in \pkg{ltcmd} and elsewhere. + The template system requires three separate ideas \begin{itemize} \item Template \emph{type}: the \enquote{thing} we are using templates for, such as \enquote{sectioning} or \enquote{enumerated-list} \item A template: a combination of code and keys that can be used to implement a type. Here for example we might have - \enquote{standard-\LaTeX{}-sectioning} as a template for + \enquote{standard-\LaTeX{}-sectioning} as a template for \enquote{sectioning} \item One or more \emph{instances}: a specific use case of a template where (some) keys are set to known values. We might for example see @@ -331,16 +326,17 @@ The template system requires three separate ideas As part of the move from the experimental \pkg{xtemplate} to kernel integration, the team have revisited the commands provided. The stable set now comprises \begin{itemize} - \item \cs{NewTemplateType} - \item \cs{DeclareTemplateInterface} - \item \cs{DeclareTemplateCode} - \item \cs{DeclareTemplateCopy} - \item \cs{EditTemplateDefault} - \item \cs{UseTemplate} - \item \cs{DeclareInstance} - \item \cs{DeclareInstanceCopy} - \item \cs{EditInstance} - \item \cs{UseInstance} +\item \cs{NewTemplateType} +\item \cs{DeclareTemplateInterface} +\item \cs{DeclareTemplateCode} +\item \cs{DeclareTemplateCopy} +\item \cs{EditTemplateDefault} +\item \cs{UseTemplate} +\item \cs{DeclareInstance} +\item \cs{DeclareInstanceCopy} +\item \cs{EditInstance} +\item \cs{UseInstance} +\item \cs{IfInstanceExistsTF} and variants \end{itemize} To support existing package authors, we have released an updated version of @@ -348,14 +344,89 @@ To support existing package authors, we have released an updated version of existing commands provided in \pkg{xtemplate} will continue to work, but we encourage programmers to move to the set above. + +\section{New or improved commands} + +\subsection{\pkg{doc}:\ Provide \cs{ProvideDocElement}} + +In addition to +\cs{NewDocElement} and \cs{RenewDocElement} we now also offer a +\cs{ProvideDocElement} declaration that does nothing unless the doc +element could be declared with \cs{NewDocElement}. This can be useful +if documentation files are processed both individually and +combined. + + +\subsection{\pkg{doc}:\ Better support for \pkg{upquote}} + +In \LaTeX{} News~37~\cite{39:ltnews37} we wrote that support for the +\pkg{upquote} package was added to the \pkg{doc} package, but back +then this was added only for \cs{verb} and the \env{verbatim} +environments. However, +in a typical \texttt{.dtx} file, most of the code will be in the body +of some \env{macrocode} or \env{macrocode*} environments, and neither +of these was affected by adding \pkg{upquote}. +We have now updated \pkg{doc} so that +\pkg{upquote} alters the quote characters in these environments as +well. +% +\githubissue{1230} + +\subsection[\pkg{ifthen}:\ Allow active characters in comparisons] + {\pkg{ifthen}:\ Guard against active characters in comparisons} +The \cs{ifthenelse} command now ensures that \verb|<|, \verb|=| and +\verb|>| are safe +in numeric tests, even if they have been made active +(typically by \pkg{babel} language shorthands). +% +\githubissue{756} + +\subsection%[New conditionals: \cs{IfClassAtLeastT}, etc.] + {New conditionals:\ \cs{IfClassAtLeastT} and friends} + +Around 2020 we added a number of conditionals with CamelCase names, i.e., +% +\cs{IfClassAtLeastTF}, +\cs{IfClassLoadedTF}, +\cs{IfClassLoadedWithOptionsTF}, +\cs{IfFormatAtLeastTF}, +\cs{IfPackageAtLeastTF}, +\cs{IfPackageLoadedTF}, and +\cs{IfPackageLoadedWithOptionsTF} +% +to help arranging conditional code that depends on the release of a +particular class, package or format. However, we only provided the +\texttt{TF} commands and not also the \texttt{T} and \texttt{F} +variants. This has now been changed. + +In 2023 we introduced \cs{IfFileAtLeastTF} but we did not also provide +\cs{IfFileLoadedTF} at the same time. This conditional and its +\texttt{T} and \texttt{F} variants have now also been added. Remember +that one can only test for files that contain a \cs{ProvidesFile} +line. +% +We did the same for the conditionals \cs{IfLabelExistsTF} and +\cs{IfPropertyExistsTF}, also introduced in 2023.\footnote{By mistake they +were initially introduced under the names \cs{IfLabelExistTF} and +\cs{IfPropertyExistTF}; we corrected that at the same time. This is a +breaking change, but the commands have been used so far only in +kernel code.} +% +\githubissue[s]{1222 1262} + + \section{Code improvements} -\subsection{Loading packages at the top level} -Classes and packages should only be loaded with \cs{documentclass}, \cs{usepackage}, -or class interface commands such as \cs{LoadClass} or \cs{RequirePackageWithOptions} -at the top level, not inside a group. Previously \LaTeX\ did not check this, +\subsection{Load packages only at the top level} + +Classes and packages must be loaded only by using the commands +\cs{documentclass} and \cs{usepackage} or the class interface commands +such as \cs{LoadClass} or \cs{RequirePackageWithOptions}; moreover, +all of these must always be used at the top level, and not inside a +group of any type (for example, within an environment). +Previously \LaTeX\ did not check this, which would often lead to low level errors later on if package declarations -were reverted as a group ended. +were reverted when a group ended. \LaTeX\ now checks the group level and an error is thrown if the class or package is loaded in a group. % @@ -374,8 +445,8 @@ corrected. \subsection{Improve \pkg{fontenc} error message} -If the \pkg{fontenc} is asked to load a font encoding for which it -doesn't find a suitable \texttt{.def} file it generates an error +If the \pkg{fontenc} package is asked to load a font encoding for which it +doesn't find a suitable \texttt{.def} file then it generates an error message indicating that the encoding name might be misspelled. That is, of course, one of the possible causes, but another one is that the installation is missing a necessary support package, e.g., that no @@ -403,8 +474,8 @@ The \cs{listfiles} command provides useful information when finding issues related to variation in package versions. However, this has to date relied on the information in the \cs{ProvidesPackage} line, or similar: that can be misleading if for example a file has been edited locally. We have now extended -\cs{listfiles} to take an optional argument which will then include the MD5 -hash of each file (and the size of each file) in the \texttt{.log}. Thus for +\cs{listfiles} to take an optional argument which can include the MD5 +hash and size of each file in the \texttt{.log}. Thus for example you can use \begin{verbatim} \listfiles[hashes,sizes] @@ -416,7 +487,7 @@ the standard release information. \subsection{Optimize creation of simple document commands} -Creating document commands using \cs{NewDocumentCommand}, etc., provides a very +Creating document commands using declarations such as \cs{NewDocumentCommand}, etc., provides a very flexible way of grabbing arguments. When the document command only takes simple mandatory arguments, this has to-date added an overhead that could be avoided. We have now refined the internal code path such that \enquote{simple} document @@ -427,16 +498,17 @@ the direct equivalent to \cs{newcommand} is \cs{NewExpandableDocumentCommand}. % \githubissue{1189} -\subsection{Handling of end-of-lines in \cs{NewDocumentCommand} \texttt{+v} arguments} +\subsection{\texorpdfstring{\raggedright}{}Handling of end-of-lines in \texttt{+v} arguments of \cs{NewDocumentCommand} and friends} -The \texttt{+v} argument type provided by \cs{NewDocumentCommand}, etc., allows +The \texttt{+v} argument type provided by declarations such as \cs{NewDocumentCommand}, etc., allows grabbing of multiple lines of text in a verbatim-like argument. Almost always, the result of this grabbing will be used in a typesetting context. Previously, the end-of-line characters were stored literally as category code~12 (\enquote{other}) \verb|^^M| tokens. However, these are difficult to work with in general. We have now revised this behavior, such that end-of-line characters are converted to the \cs{obeyedline} command when parsed by \texttt{+v}-type -arguments. This may require adjustment in the source of some documents, but the +arguments. +This change may require adjustments to the source of some documents, but the enhanced ability of users and programmers to exploit the \texttt{+v}-type argument means we believe it is necessary. @@ -448,26 +520,31 @@ directly into the kernel and in this way removed the need to load the \cs{texteuro} available. There is, however, a big problem with this \texttt{TS1} symbol -encoding: only very few fonts can provide every glyph that is supposed +encoding: only very few fonts provide every glyph that is supposed to be part of \texttt{TS1}. This means that changing font families might result in certain symbols becoming unavailable. This can be a -major disaster if, for example, the \cs{texteuro} (\texteuro) or the -\cs{textohm} (\textohm) are no longer printed in your document, just -because you altered your text font family. +major disaster if, for example, +the symbol \cs{texteuro} (\texteuro) or \cs{textohm} (\textohm) +no longer gets printed in your document, just because you altered the +text font family. -To mitigate this problem, we also introduced in 2020 the declaration +To mitigate this problem, in 2020 we also introduced the declaration \cs{DeclareEncodingSubset}. This declaration is supposed to be used in font definition files for the \texttt{TS1} encoding to specify which subset (we have defined 10 common ones) a specific font implements. If such a declaration is used then missing symbols are automatically -taking from a fallback font. While this is not perfect, it is the best -you can do other than painstrickenly checking that your document only -uses glyphs that the font supports and if necessary switch to a -different font or avoid the missing symbols. See also the discussion -in \cite{39:ltnews33}. +taken from a fallback font. + +%% CAR -- this paragraph maybe needs more substantial rewording ?? +While this is not perfect, it is the best +you can do other than painstakingly checking that your document +%% CAR: was "painstrickenly" -- should be a word, but!! +uses only glyphs that the font supports +and, if necessary, switching to a different font or avoiding the +missing symbols. See also the discussion in \cite{39:ltnews33}. To jumpstart the process we also added declarations to the \LaTeX{} -kernel for most of the fonts found in \TeX{}Live at the time\Dash with +kernel for most of the fonts found in \TL{} at the time\Dash with the assumption that such declarations would over time be superseded by declarations in the \texttt{.fd} files. Unfortunately, this hasn't happened yet (or not often) and so many of the initial declarations @@ -475,16 +552,16 @@ went stale: several fonts got new glyphs added to them (so their sub-encoding should have been changed but didn't); others (mainly due to license issues) changed the family name and thus our declarations became useless and the renamed fonts (now without a declaration) ended -up in the default sub-encoding which offers only few glyphs; yet -others such as CharisSIL (which triggered the GitHub issue) were +up in the default sub-encoding that offers only a few glyphs; +yet others such as CharisSIL (which triggered the GitHub issue) were simply not around at the time. -We have therefore, again attempted to provide the (currently) correct +We have, therefore, again attempted to provide the (currently) correct declarations, but it is obvious that this is not a workable process. As we do not maintain the fonts we do not have the information that something has changed, and to regularly check the ever growing font support bundles is simply not possible. It is -therefore very important that maintainers of font packages do not only +therefore very important that maintainers of font packages not only provide \texttt{.fd} files but also add such a declaration to every \texttt{TS1...fd} font definition file that they distribute. @@ -492,6 +569,7 @@ To simplify this process, we now provide a simple \LaTeX{} file (\texttt{checkencodingsubset.tex}) for determining the correct (safe) sub-encoding. If run, it asks for a font family and then outputs its findings, for example, for \texttt{AlgolRevived-TLF} you will get: +\tubcommand{\begin{small}} \begin{verbatim} ----------------------------------------- Testing font family AlgolRevived-TLF @@ -520,6 +598,7 @@ TS1 encoding subset for AlgolRevived-TLF (ok) Use sub-encoding 9 ----------------------------------------- \end{verbatim} +\tubcommand{\end{small}\noindent}% This output is meant for human consumption, e.g., you see which glyphs are missing and why a certain sub-encoding is suggested, but it is not that hard to use it in a script and extract the suggested sub-encoding @@ -536,47 +615,142 @@ TS1 encoding subset for ppl (bad) Use sub-encoding 0 (not 5) ----------------------------------------- \end{verbatim} -i.e., all glyphs are provided, while in reality more than twenty are -missing and sub-encoding 5 as declared in the kernel is correct. +thus it claims that +all glyphs are provided, while in reality more than twenty are missing +and sub-encoding 5, as declared in the kernel, is in fact correct. % \githubissue{1257} + +\subsection{Behavior when loading \pkg{textcomp} without options} + +When incorporating the \pkg{textcomp} package into the \LaTeX{} kernel, in +the February 2020 release~\cite{39:ltnews31}, the default type of its package messages was changed from package info (\texttt{Package textcomp Info}) +to \LaTeX{} kernel info (\texttt{LaTeX Info}). But if \pkg{textcomp} +was loaded without options, the message type got restored to package info. +This restoration has now been canceled. + +Note that loading \pkg{textcomp} with one of the options \option{error}, +\option{warn}, or \option{info} still changes the message +type to an error, warning, or info message from the \pkg{textcomp} package. +% +\githubissue{1333} + + +\subsection{Rollback improvements} + +When requesting a rollback of the \LaTeX{} kernel and/or packages, +several packages produced the error \enquote{Suspicious rollback date} +because their rollback section contained only data about recent +releases even if the package, such as \pkg{array}, was available since +the first release of \LaTeXe{} in 1994. We now suppress this error and +load the first release that is still part of the distribution (and +hope for the best). This change was implemented for the packages +\pkg{amsmath}, +\pkg{array}, +\pkg{doc}, +\pkg{graphics}, +\pkg{longtable}, +\pkg{multicol}, +\pkg{showkeys}, +\pkg{textcomp}, and +\pkg{varioref}. +% +\githubissue{1333} + + + \section{Documentation improvements} \subsection{Further updates to the guides} We reported about the updated versions of \texttt{usrguide} and -\texttt{clsguide} in \LaTeX{} News~37~\cite{39:ltnews37}. We have now +\texttt{clsguide} in \LaTeX{} News~37~\cite{39:ltnews37}. We have now revised \texttt{fntguide} as well to reflect the changes and macros -added to the kernel over the last years of development. Note that the +added to the kernel over the last years of development. Note that the file name hasn't changed and there is no \texttt{fntguide-historic}. \section{Bug fixes} -\subsection{Fix inconsistent expansion on package option list} +\subsection{Fix inconsistent expansion of the package option list} -\LaTeX{} applies one-step expansion to raw option list of packages and -classes so constructions like +\LaTeX{} applies one-step expansion to the raw option list of packages +and classes, so that constructions such as \begin{verbatim} \def\myoptions{opt1,opt2} \usepackage[\myoptions]{foo} \end{verbatim} -are supported. But when a package declares its options with the new -key/value approach~\cite{39:ltnews35} and was loaded a second time, -its raw option list was not expanded and an error might be raised. +are supported. +%% CAR Rewritten sentence: +But if a package declares its options using the new +key/value approach~\cite{39:ltnews35} and it gets loaded a second time, +then its raw option list will not be expanded and so an error might be raised. This has now been corrected. % \githubissue{1298} +\subsection{Fix logic for first mark (page region)} + +In the new mark mechanism introduced in June 2022~\cite{39:ltnews35} the result of +\cs{FirstMark} on a two-column page was incorrect if the first column +contained no marks. In that case it should have returned the first +mark of the second column but didn't. +This has now been corrected. + +Documents using \cs{leftmark} are not affected, because that command is still +using the old mechanism for now. +% +\githubissue{1359} + + +\subsection{Struts at the end of footnotes or \texttt{p} columns} + +To produce consistent spacing in footnotes and tabular +\texttt{p}-cells \LaTeX{} adds a strut at the beginning and end of +the content. +%% CAR Rewritten sentences: +%% It assumed, however, that the footnote or tabular cell ended in +%% horizontal mode and until now added the struts unconditionally. As a +%% result, with vertical material at the end of the material this strut +%% started a new paragraph consisting of a single line with just the +%% strut inside. +This assumed, however, that the content of the footnote or tabular cell ended in +horizontal mode and so, until now, these struts were unconditionally added; +as a result, if this content ended with vertical material then this strut +started a new paragraph consisting of a single line with just the +strut in it. This has finally been corrected and now the placement +logic for the strut changes when vertical mode is detected. + +\emph{(First seen in a bug report for \pkg{footmisc} in combination with +\pkg{bigfoot})} + + +\subsection{Fix a ``missing \cs{item}'' rollback error} + +If \LaTeX{} is rolled back to a date between 2023/06/01 (inclusive) and +2024/06/01 (exclusive), any list-based environment would raise an +error: +%(shown on two lines for \textsl{TUGboat}): +\begin{verbatim} +! LaTeX Error: Something's wrong--perhaps +a missing \item. +\end{verbatim} +This has now been corrected as a hotfix in patch level 2, by enhancing +the 2023/06/01 version rollback code of the new paragraph mechanism. +% +\githubissue{1386} + + + \section{Changes to packages in the \pkg{amsmath} category} -\subsection{\pkg{amsmath}: correct equation tag placement} +\subsection{\pkg{amsmath}:\ Correct equation tag placement} If there is not enough space to place an equation tag on the same line -as the equation \pkg{amsmath} calculates a suitable offset and then +as the equation then \pkg{amsmath} calculates a suitable offset and it places the tag above (or below) the equation. In the case of the \env{gather} environment this offset was not reset at the end, with -the result that it applied to a following environment as well +the result that it also got applied to any following environment, resulting in incorrect spacing in certain situations. This has now been corrected. % @@ -586,43 +760,52 @@ been corrected. %\section{Changes to packages in the \pkg{graphics} category} - - \section{Changes to packages in the \pkg{tools} category} +\subsection{\pkg{array}, \pkg{longtable}, \pkg{tabularx}:\ Support tagging} -\subsection{\pkg{array}, \pkg{longtable}, \pkg{tabularx}: support tagging} +%% CAR Rewritten sentences +These three packages have been extended so they can now, on request, +produce tagged tabular. This is done by adding a number of sockets (see +\cite{39:ltnews38}) that, by default, do nothing; but when tagged PDF +is requested they get equipped with appropriate plugs. -The three packages are now extended to enable producing tagged tabulars upon -request. This is done by adding a number of sockets (see -\cite{39:ltnews38}) that, by default, do nothing, but are equipped -with appropriate plugs if tagged PDF is requested. +In the previous \LaTeX{} release this was handled in \texttt{latex-lab}, by +patching the packages when tagging was requested. -In the previous \LaTeX{} release this was handled in -\texttt{latex-lab} patching the packages when tagging was requested. +\subsection{\pkg{array}:\ No \cs{unskip} in math cells} +Math cells in the standard \env{array} environment of the kernel are +not subject to space removal at the right end of the cell, i.e., explicit +spaces from \cs{hspace} or \verb*|\ |, etc.\ are honored +(normal spaces are automatically ignored in math). In the \pkg{array} +package all spaces got removed by calling \cs{unskip} unconditionally, +regardless of the type of cell. +This difference in behavior has now been removed by correcting the processing of +math cells in \pkg{array}. +% +\githubissue{1323} -\subsection{\pkg{verbatim}: \cs{verb} showed visible spaces} +\subsection{\pkg{verbatim}:\ \cs{verb} showed visible spaces} A recent change in the kernel was not reflected in the \pkg{verbatim} -package with the result that \cs{verb} showed visible spaces +package, with the result that \cs{verb} showed visible spaces (\verb*/ /) after the package was loaded. This has already been corrected -in a hotfix for release 2023-11. +in a hotfix for the November 2023 release. % \githubissue{1160} -\subsection{\pkg{verbatim}: Support tabs in \cs{verbatiminput*}} +\subsection{\pkg{verbatim}:\ Support tabs in \cs{verbatiminput*}} -Mimicking the kernel update (November, 2023) that allowed \cs{verb*} -to mark tabs as spaces, the \pkg{verbatim} package has been updated -such that \cs{verbatiminput*} marks tabs as spaces as well. -% +Mimicking the November 2023 kernel update that allowed \cs{verb*} +to mark tabs as spaces, the \pkg{verbatim} package +has now been updated so that \cs{verbatiminput*} also marks tabs as spaces. \githubissue{1245} -\subsection{\pkg{multicol}: \cs{columnbreak} interferes with mark mechanism} +\subsection{\pkg{multicol}:\ \cs{columnbreak} interferes with mark mechanism} The \pkg{multicol} package has to keep track of marks (from \cs{markright} or \cs{markboth}) as part of its output routine code @@ -638,20 +821,34 @@ mechanism\Dash see the discussion at the beginning of the newsletter. % \githubissue{1130} -\subsection{\pkg{showkeys}: Allow \cs{newline} in \pkg{amsthm} to work} +\subsection{\pkg{showkeys}:\ Allow \cs{newline} in \pkg{amsthm} to work} % Previously \pkg{showkeys} added an extra box layer which disabled the \cs{newline} of \pkg{amsthm} theorem styles. This extra box has now been avoided. % \githubissue{1123} - +\tubcommand{\newpage} +\subsection{\pkg{xr}:\ Support links and properties} +% +The \pkg{xr} package implements a system for eXternal References. +The \pkg{xr-hyper} package (in the \pkg{hyperref} bundle) +extended this to also support links to external documents. +%% CAR: Rewritten sentences: +Using last year's extension of the \cs{label} command, which unified +the label syntax of \LaTeX{} and \pkg{hyperref}, +it became possible to merge the two packages and thus make +\pkg{xr-hyper} obsolete. +With this change it is also possible to refer to properties +that are stored in external documents using \cs{RecordProperties}. +% +\githubissue{1180} \section{Changes to files in the \pkg{cyrillic} category} \subsection{Correct definition of \cs{k}} -Ages ago, the encoding specific definitions for various accent +Ages ago, the encoding-specific definitions for various accent commands were changed to guard against altering some parameter values non-locally by mistake. For some reason the definition for \cs{k} in the Cyrillic encodings \texttt{T2A}, \texttt{T2B}, and \texttt{T2C} @@ -660,26 +857,23 @@ didn't get this treatment. This oversight has now been corrected. \githubissue{1148} - -\begin{thebibliography}{9} +\begin{thebibliography}{9}\frenchspacing %\fontsize{9.3}{11.3}\selectfont -%\bibitem{39:Lamport} -%Leslie Lamport. -%\newblock \emph{{\LaTeX}: {A} Document Preparation System: User's Guide and Reference -% Manual}. -%\newblock \mbox{Addison}-Wesley, Reading, MA, USA, 2nd edition, 1994. -%\newblock ISBN 0-201-52983-1. -%\newblock Reprinted with corrections in 1996. -% +\bibitem{39:Lamport} +Leslie Lamport. +\newblock \emph{{\LaTeX}: {A} Document Preparation System: User's Guide and Reference + Manual}. +\newblock \mbox{Addison}-Wesley, Reading, MA, USA, 2nd edition, 1994. +\newblock ISBN 0-201-52983-1. +\newblock Reprinted with corrections in 1996. \bibitem{39:ltnews} \LaTeX{} Project Team. \emph{\LaTeXe{} news 1--39}. June, 2024. \url{https://latex-project.org/news/latex2e-news/ltnews.pdf} -% -% + \bibitem{39:ltnews31} \LaTeX{} Project Team. \emph{\LaTeXe{} news 31}. February, 2020. \url{https://latex-project.org/news/latex2e-news/ltnews31.pdf} @@ -697,13 +891,19 @@ didn't get this treatment. This oversight has now been corrected. \url{https://latex-project.org/news/latex2e-news/ltnews37.pdf} \bibitem{39:ltnews38} \LaTeX{} Project Team. - \emph{\LaTeXe{} news 38}. November 2023.\\ + \emph{\LaTeXe{} news 38}. November 2023. \url{https://latex-project.org/news/latex2e-news/ltnews38.pdf} -%\bibitem{39:blueprint} Frank Mittelbach and Chris Rowley. +\bibitem{39:deims} Frank Mittelbach and Ulrike Fischer. + \emph{Enhancing \LaTeX{} to automatically produce + tagged and accessible PDF}. \textsl{TUGboat} 45:1, 2024. + \url{https://latex-project.org/publications/indexbyyear/2024/} + + %\bibitem{39: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/} \end{thebibliography} \end{document} + |