summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex-dev/base/ltnews33.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/latex-dev/base/ltnews33.tex')
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews33.tex333
1 files changed, 269 insertions, 64 deletions
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews33.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews33.tex
index 922740a7edf..7f23e9d8532 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews33.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews33.tex
@@ -40,6 +40,8 @@
\usepackage{csquotes}
\usepackage{multicol}
+\providecommand\hook[1]{\texttt{#1}}
+
\providecommand\meta[1]{$\langle$\textrm{\itshape#1}$\rangle$}
\providecommand\option[1]{\texttt{#1}}
\providecommand\env[1]{\texttt{#1}}
@@ -71,7 +73,7 @@
\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#2}%
+ \href{https://www.latex-project.org/cgi-bin/ltxbugs2html?pr=#1\%2F\getfirstgithubissue#2 \relax}%
{gnats issue #1/#2}%
)}%
\par}
@@ -87,8 +89,8 @@
\providecommand\tubcommand[1]{}
\tubcommand{\input{tubltmac}}
-\publicationmonth{May}
-\publicationyear{2021}
+\publicationmonth{June}
+\publicationyear{2021 --- Draft Version}
\publicationissue{33}
@@ -107,7 +109,14 @@
\section{Introduction}
-\emph{to be written}
+The focus of the June 2020 release is to provide further important
+building blocks for producing reliable tagged PDF output in the future
+(see \cite{33:blueprint}), they are discussed in the next two
+sections. In addition we included a number of smaller enhancement and
+fixes that are outlined on the next pages. As usual, more detail can
+on individual changes can be found in the \texttt{changes.txt} files
+in the distribution and, of course, in the documented
+sources~\cite{33:source2e}.
@@ -115,11 +124,11 @@
\section{Extending the hook concept to paragraphs}
Largely triggered by the need for better control of paragraph text
-processing, in particular when producing tagged PDF output (see
-\cite{33:blueprint}), we have extended the paragraph processing of
-\LaTeX{} so that the kernel gains control both at the start and the
-end of each paragraph. This is done in a manner that is (or should
-be) transparent to packages and user documents.
+processing, in particular when producing tagged PDF output, we have
+extended the paragraph processing of \LaTeX{} so that the kernel gains
+control both at the start and the end of each paragraph. This is done
+in a manner that is (or should be) transparent to packages and user
+documents.
Beside the internal control points for exclusive use of the \LaTeX{}
kernel we also implemented four public hooks that can be used by
@@ -131,9 +140,38 @@ packages.
The documentation of the hooks together with a few examples is
provided in \file{ltpara-doc.pdf} and for those who want to study the
-(quite interesting) code is found in \file{ltpara-code.pdf}. At
-some point in the future it will get fully merged into the \LaTeX{}
-kernel and will then appear in \file{source2e.pdf}.
+(quite interesting) code is found in
+\file{ltpara-code.pdf}. Additionally it is included as part of the
+full kernel documentation in \file{source2e.pdf}.
+
+
+
+\section{Extending the hook concept to commands}
+
+Up to now the hook management covered hooks for a few core areas, such
+as hooks for the \cs{shipout} process or those in the \env{document}
+environment, as well as generic hooks for file loading (helpful for
+patching) and for arbitrary environments (executed by \cs{begin} and
+\cs{end}).
+
+This has now been extended to add \hook{/before} and \hook{/after}
+hooks to any (document-level) command---in theory at that is. In
+practice the new generic \hook{cmd} hooks, especially the
+\hook{cmd/.../after} hooks may fail with commands that are too complex
+to be automatically patched and break them if the hook is filled with
+code. The restrictions are documented in \texttt{ltcmdhooks-doc.pdf}.
+
+However, given that these hooks are mainly meant for package
+developers to provide a better interoperability between different
+packages and between packages and the \LaTeX{} kernel, these
+restrictions are of minor importance: for commands where the mechanism
+can't be applied, one is in the same situation as before and for all
+others there will be a noticeable improvement. This is especially
+important for our big project providing accessible and tagged PDF
+output~\cite{33:blueprint}, because for this we will eventually have
+to patch many third-party packages and this is only feasible, if it can
+be done in controlled and standardized ways.
+
@@ -145,7 +183,7 @@ The command \cs{labelitemfont} was in fact already introduced with the
\LaTeX\ release 2020-02-02, but back then we forgot to describe it, so
we do this now. Its purpose is to resolve some bad formatting issues
with the \env{itemize} environment and at the same time make it easier
-to adjust its layout if necessary. What could happen in the past was the the
+to adjust its layout if necessary. What could happen in the past was the
\env{itemize} labels, e.g., the \textbullet{}, would sometimes react to
surrounding font changes and could suddenly change shape, for example
to \textit{\textbullet}.
@@ -174,7 +212,7 @@ you the buggy old behavior back.
\subsection{A note on file names with spaces, dots or UTF-8 characters}
-In one of the the recent \LaTeX{} releases we improved the interface
+In one of the recent \LaTeX{} releases we improved the interface
for specifying file names so that they can now safely contain spaces
(as is common on Windows but also elsewhere), UTF-8 characters
outside the \acro{ascii} range as well as names with several dots in
@@ -228,7 +266,7 @@ it always starts out in vertical mode.
\subsection{Allow extra space between name and address in \pkg{letter} class}
-The \cs{opening} command in the the \pkg{letter} class expects the
+The \cs{opening} command in the \pkg{letter} class expects the
name and address to be separated by \verb=\\= but it didn't allow to
use an optional argument at this point to add some extra space after
the name. The coding has now been slightly altered to allow for this.
@@ -236,8 +274,11 @@ the name. The coding has now been slightly altered to allow for this.
\githubissue{427}
-\subsection{Add a Lua callback to \pkg{ltshipout} to provide
- a uniform location for applying custom attributes}
+\subsection[Add a Lua callback to \pkg{ltshipout} to provide
+ a uniform location for applying custom attributes]
+ {Add a Lua callback to \pkg{ltshipout} to provide
+ a uniform
+ \mbox\quad location for applying custom attributes}
Just before shipping out a page, a new \LuaTeX{} callback
\texttt{pre\_shipout\_filter} is now called to allow final
@@ -248,7 +289,8 @@ elements at shipout. An example for this is the \pkg{luacolor}
package which could insert the color commands using this callback.
-\subsection{Improved copy\&paste support for \pdfTeX{} documents}
+
+\subsection{Improved copy\,\&\,paste support for \pdfTeX{} documents}
When compiling with \pdfTeX{}, additional information is added to the
PDF file to improve copying from and searching in text. This especially
@@ -274,7 +316,7 @@ slightly different and uses the standard hook management.
\subsection{Delay change of font series and shape to \cs{selectfont} call}
With the NFSS extensions introduced in 2020 the font series and shape
-settings be be influenced by changes to the font family. The setting
+settings can be influenced by changes to the font family. The setting
is therefore delayed until \cs{selectfont} is executed to avoid
unnecessary or incorrect substitutions that may otherwise happen due
to the order of declarations.
@@ -314,8 +356,10 @@ With the new behavior it accesses \verb|sqrt {2}.tex|.
\githubissue{481}
-\subsection{Additional support for Unicode characters from the
- Latin Extended Additional block}
+\subsection[Additional support for Unicode characters from the
+ Latin Extended Additional block]
+ {Additional support for Unicode characters from the Latin\\
+ \mbox\quad Extended Additional block}
\LaTeX\ is quite capable of typesetting characters such as
\enquote{\d{m}}, but until now it lacked the Unicode mappings for some
@@ -327,6 +371,7 @@ entered directly instead of resorting to \verb=\d{m}= and so forth.
\githubissue{484}
+
\subsection{Always have color groups set up}
To use color in \LaTeX{} certain constructs, especially boxes, need an
@@ -350,6 +395,10 @@ each. At the end of a paragraph this is done inside the \cs{par}
command, but the way \cs{marginpar} was coded, \LaTeX{} ended the
marginal note without ever explicitly calling \cs{par}. This has now
been changed.
+
+Another case where this issue caused problems was the \pkg{lineno}
+package where the last line was not numbered if the \cs{marginpar}
+ended without a \cs{par} in the document.
%
\githubissue{489}
@@ -361,7 +410,7 @@ It is sometimes necessary to reference the same footnote several
times, i.e., produce several footnote marks with the same number or
symbol. This is now always possible by placing a \cs{label} into the
\cs{footnote} and reference it with the command \cs{footref}
-elsewhere. This way marks refering to footnotes anywhere on the page
+elsewhere. This way marks referring to footnotes anywhere on the page
(including those in \texttt{minipage}s) can be generated. In the past
this command was only available with certain classes or when loading
the \pkg{footmisc} package.
@@ -370,7 +419,10 @@ the \pkg{footmisc} package.
-\subsection{Providing the raw option list of packages or documentclass to key/value handlers}
+\subsection[Providing the raw option list of packages or documentclass
+ to key/value handlers]
+ {Providing the raw option list of packages or documentclass\\
+ \mbox\quad to key/value handlers}
\LaTeXe{} has always normalized space in option lists so\\
\verb|\documentclass[ a4paper , 12pt ]{article}|\\
@@ -379,25 +431,25 @@ processed the intended options \texttt{a4paper} and \texttt{12pt}.
Unfortunately the mechanism used was designed for the simple option
names of the standard option processing. Many classes and packages
now use extended \emph{keyval} processing, however this white space
-normalisation makes this difficult:
+normalization makes this difficult:
\verb|[bb=1 2 3 4]|
which might be expected to pass a bounding box of four numbers is
-normalised to \texttt{bb=1234} and
+normalized to \texttt{bb=1234} and
\verb|[bb={1 2 3 4}]|\\
which might be expected to quote the spaces results in low level \TeX{}
parsing errors.
For compatibility reasons, the standard option processing has not been
-changed however the original un-normalised package and class option lists
+changed however the original un-normalized package and class option lists
are now saved. They are not used in the standard processing, however
extended package option systems may use these \enquote{raw} option list
macros if they are defined.
The one change affecting the standard processing is that the low level
error mentioned above is now avoided as values (any tokens to the
-right of an = sign) are removed from consideration from the \enquote{unused
-option list}. In this release \texttt{clip=true} and
+right of an = sign) are removed from consideration from the
+\enquote{unused option list}. In this release \texttt{clip=true} and
\texttt{clip=false} both contribute \texttt{clip} to the list of
options that have been used.
%
@@ -425,9 +477,11 @@ up.
-\subsection{Provide more ``dashes'' in encodings \texttt{OT1}, \texttt{T1} and \texttt{TU}}
+\subsection{Provide more ``dashes'' in encodings \texttt{OT1},
+ \texttt{T1} and \texttt{TU}}
-When pasting in text from external sources one sometimes encounters the Unicode characters
+When pasting in text from external sources one sometimes encounters
+the Unicode characters
%
\texttt{"2011} (non-breaking hyphen),
\texttt{"2012} (figure dash) and
@@ -451,31 +505,165 @@ and \cs{texthorizontalbar}, respectively.
-\subsection{\ldots}
+\subsection{\env{filecontents} with \acro{utf-8} characters in file name}
+
+Since a few releases back, the \env{filecontents} environment allows writing a
+file with \acro{utf-8} characters in its name. However there was a bug that
+would not allow \emph{over}writing a file with \acro{utf-8} characters in the
+name. This has been fixed and now \env{filecontents} allows any characters in
+the file name.
+%
+\githubissue{415}
+
+
+
+\subsection{Extending \pkg{latexrelease} to declare an entire module}
+
+In the 2020-10-01 release, \LaTeX's new hook management system was added to the
+kernel (see \cite{33:ltnews32}) and, as with all changes to the kernel, it was
+added to \pkg{latexrelease}, so that it is possible to roll back to a date where
+such module didn't exist yet, or roll forward from an older release and have the
+hook management system by loading the \pkg{latexrelease} package.
-\emph{to be written}
+However rolling back from a later release to the 2020-10-01 release didn't quite
+work because it would try to define all the commands from \pkg{lthooks} again,
+and that would result in errors, as usual with commands defined with
+\cs{newcommand} or in the case of \pkg{lthooks}, \cs{cs\_new:Npn}.
+
+To solve this issue, now completely new modules can be defined in
+\pkg{latexrelease} using \cs{NewModuleRelease}
+and then when rolling back or forward it will know if the code
+of the module has to be read or completely ignored. More details can be
+found in the \pkg{latexrelease} documentation (\verb|texdoc latexrelease|).
%
-\githubissue{xxx}
+\githubissue{479}
+
+
+
+\subsection{Small fix for rolling back prior to 2020-02-02}
+
+Whereas the \pkg{latexrelease} package can usually emulate an older \LaTeX{}
+kernel without much problem, rolling back to before the 2020-02-02 release
+didn't work properly because the management of the \cs{ExplSyntaxOn/Off} status
+for packages cannot be removed by the rollback without messing up catcodes after
+an \pkg{expl3}-based package is loaded. This has been fixed and now rollback is
+more careful not to leave \pkg{ExplSyntaxOn} after a package ends.
+%
+\githubissue{504}
+
+
+
+\subsection[Add \cs{tracingstacklevels}
+ and \cs{tracinglostchars}\texttt{=3} to \cs{tracingall}]
+ {Add \cs{tracingstacklevels}
+ and \cs{tracinglostchars}\texttt{=3}\\
+ \mbox\quad to \cs{tracingall}}
+
+In July 2020 David Jones suggested an extension to \TeX{} engines, that
+added the possibility to set \cs{tracinglostchars}\texttt{=3} to have an
+error in case some character is missing from a font. In previous years,
+the warning for a missing character would be silently printed to the
+\texttt{.log} file (if $\cs{tracinglostchars}>0$) and to the terminal
+(if ${}>1$). This extension was added for \TL{} and \MiKTeX{} (except
+in Knuth's \TeX, of course) and now with $\cs{tracinglostchars}>2$ you
+get an error on a missing glyph.
+
+Later, in January 2021, Petr Olšák suggested yet another extension, a
+new primitive parameter \cs{tracingstacklevels} that, when positive (and
+when \cs{tracingmacros} is also positive), will print a visual
+indication of the macro nesting level in \TeX's tracing information.
+
+Both these changes were incorporated to \LaTeX's debugging macros
+\cs{tracingall} and \cs{tracingnone}, so when you use them, the new
+extensions are automatically activated/deactivated if your \TeX{}
+distributions has a recent enough engine. An example document
+demonstrating these parameters is available in the linked GitHub issue.
+%
+\githubissue{524}
+
+
+\subsection{Make \cs{\textbackslash} generally robust}
+
+In 2018 most \LaTeX{} user-level commands were made robust including
+\cs{\textbackslash}. However, \cs{\textbackslash} is redefined in
+various environments and not all cases were caught, in particular its use as row
+delimiter in \env{tablular} structures. This has now been corrected and
+\cs{\textbackslash} should be robust in all standard
+circumstances. Doing that also fixed one anomaly present in the past:
+in a tabular preamble of the form
+\begin{quote}
+ \verb={l=\texttt{\string>}\verb={raggedright}p{10cm}r}= % stupid class
+\end{quote}
+a \cs{\textbackslash} in the second column would have the definition
+used by \cs{raggedright} and would not indicate the (premature) end of
+the \env{tabular}, e.g.,
+\begin{quote}
+ \verb=a & b1 \\ b2 & c \\=
+\end{quote}
+would be a single row in that \env{tabular}. However, writing
+\begin{quote}
+ \verb=a & \\ b2 & c \\=
+\end{quote}
+would give you two rows: due to the scanning process the
+\cs{\textbackslash} directly following the \verb=&= still had
+the \enquote{end the row} meaning and not the \enquote{start a new
+ line in the second column} meaning.
+
+With \cs{\textbackslash} now robust, the scanning after \verb=&= ends
+when the command is seen and the second column is started and so now
+both lines above consistently produce a single \env{tabular} row.
+
+As before, you can use \cs{raggedright} \cs{arraybackslash} in the
+\env{tabular} preamble to ensure that \cs{\textbackslash} is always
+interpreted as a row separator when used in the column or you could
+use \cs{tabularnewline} to explicitly ask for a new row even when
+\cs{\textbackslash} has a different meaning in the current column.
+%
+\githubissue{548}
\section{Changes to packages in the \pkg{graphics} category}
-\subsection{\ldots}
+\subsection{Removed spurious warning for generic graphics rules}
+
+A previous release mistakenly caused a warning to appear when loading a graphics
+file with an unknown extension through a generic graphics rule. The warning
+would incorrectly say that the file was not found, whereas the file would be
+included correctly. The warning now doesn't show up in that case.
%
-\githubissue{xxx}
+\githubissue{516}
+
+
+\subsection{Fixed loading \texttt{gzip}ped PostScript graphics files}
+
+A previous release mistakenly changed the file searching mechanism and
+compressed graphics files would raise an error when being loaded with
+\cs{includegraphics}. This has been fixed and now \texttt{gzip}ped graphics
+load correctly.
+%
+\githubissue{519}
+
+
\section{Changes to packages in the \pkg{tools} category}
-\subsection{\pkg{layout}: Support Japanese as a language option}
-The package now recognizes \texttt{japanese} as a language option.
+\subsection{\pkg{layout}: Support extra language options}
+The package now recognizes \texttt{japanese} and \texttt{romanian} as
+language options.
%
-\githubissue{353}
+\githubissue[s]{353 and 529}
+\subsection{\pkg{array} and \pkg{longtable}: Make \cs{\textbackslash} generally robust}
+
+The fix for this issue was also applied to these packages, see above.
+%
+\githubissue{548}
+
\subsection{\pkg{longtable}: General bug fix update}
Minor update to \pkg{longtable} to fix bugs reported. Notably the
@@ -484,21 +672,53 @@ that a \env{longtable} starts. As this may affect page breaking in
existing documents, a rollback to \pkg{longtable 4.13}
(\file{longtable-2020-01-07.sty}) is supported.
%
-\gnatsissue{tools}{3512}
+\gnatsissue{tools}{2914 3396 3512}
+\githubissue{133 183 464}
+
+
+\subsection[\pkg{trace}: Add \cs{tracingstacklevels}
+ and \cs{tracinglostchars}\texttt{=3} to \cs{traceon}]
+ {\pkg{trace}: Add \cs{tracingstacklevels} and\\
+ \mbox\quad \cs{tracinglostchars}\texttt{=3} to \cs{traceon}}
+
+The enhancement mentioned earlier was also added to the \pkg{trace} package.
+%
+\iffalse
+The \cs{tracingstacklevels} and \cs{tracinglostchars} extensions
+mentioned earlier for \cs{tracingall} were also added for
+\cs{traceon} in the \pkg{trace} package, so if you're using that you
+can also benefit from these new debugging tools.
+\fi
+%
+%
+\githubissue{524}
+\subsection{\pkg{bm}: Better support for commands with optional arguments}
+Some uses of optional arguments that were supported by \cs{bm} stopped
+being supported (in 2004) when \cs{kernel@ifnextchar} was used
+internally by the format instead of \cs{@ifnextchar}. This update
+handles both versions of this command and restores the original
+behaviour.
+
+In addition package options for guiding the use of \enquote{poor man's
+ bold} in fallback situations were added.
+%
+\githubissue{554}
\section{Changes to packages in the \pkg{amsmath} category}
-\subsection{\ldots}
+%\subsection{\pkg{amsmath}: Make \cs{\textbackslash} generally robust}
+The fix for issue 548 was also applied in \pkg{amsmath}, see above.
%
-\githubissue{xxx}
+\githubissue{548}
-\medskip
+%\medskip
+
\begin{thebibliography}{9}
\fontsize{9.3}{11.3}\selectfont
@@ -507,31 +727,16 @@ existing documents, a rollback to \pkg{longtable 4.13}
\emph{\LaTeX{} Tagged PDF — A blueprint for a large project}.\\
\url{https://latex-project.org/publications/indexbyyear/2020/}
-\end{thebibliography}
-
-
-
-\end{document}
-
-
-\endinput % needed for ltnews processing
-
-\bibitem{32:ltnews31} \LaTeX{} Project Team:
- \emph{\LaTeXe{} news 31}.\\
- \url{https://latex-project.org/news/latex2e-news/ltnews31.pdf}
-
-\bibitem{32:site-doc}
+\bibitem{33:source2e}
\emph{\LaTeX{} documentation on the \LaTeX{} Project Website}.\\
\url{https://latex-project.org/help/documentation/}
-\bibitem{32:issue-tracker}
- \emph{\LaTeX{} issue tracker}.
- \url{https://github.com/latex3/latex2e/issues/}
+\bibitem{33:ltnews32} \LaTeX{} Project Team:
+ \emph{\LaTeXe{} news 32}.\\
+ \url{https://latex-project.org/news/latex2e-news/ltnews32.pdf}
+
+\end{thebibliography}
-\bibitem{32:babel}
- Javier Bezos and Johannes Braams.
- \emph{Babel---Localization and internationalization}.\\
- \url{https://www.ctan.org/pkg/babel}
-
+\end{document}