summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2024-10-31 03:03:15 +0000
committerNorbert Preining <norbert@preining.info>2024-10-31 03:03:15 +0000
commit55972afbe03e8a6a517c3f08142ebfc734cb10b7 (patch)
tree1db2af3fde95adee3655a0cb406da65b2dfc0778 /macros/latex
parent829031960f69b0f96ae694916a3b48325a2fc809 (diff)
CTAN sync 202410310303
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/moloch/CHANGELOG.md16
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/moloch/beamercolorthememoloch.dtx11
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/moloch/beamerfontthememoloch.dtx2
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/moloch/beamerinnerthememoloch.dtx20
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/moloch/beamerouterthememoloch.dtx6
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/moloch/beamerthememoloch.dtx2
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/moloch/moloch.pdfbin295500 -> 289284 bytes
-rw-r--r--macros/latex/contrib/beamer-contrib/themes/moloch/moloch.tex4
-rw-r--r--macros/latex/contrib/fvextra/CHANGELOG.md7
-rw-r--r--macros/latex/contrib/fvextra/fvextra.dtx80
-rw-r--r--macros/latex/contrib/fvextra/fvextra.pdfbin916979 -> 917058 bytes
-rw-r--r--macros/latex/contrib/hyperref/ChangeLog.txt11
-rw-r--r--macros/latex/contrib/hyperref/README.md4
-rw-r--r--macros/latex/contrib/hyperref/doc/backref.pdfbin206469 -> 206469 bytes
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref-doc.css2
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref-doc.html46
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref-doc.pdfbin318416 -> 318394 bytes
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref-doc.tex22
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref-linktarget.pdfbin438491 -> 175430 bytes
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref-patches.pdfbin0 -> 170928 bytes
-rw-r--r--macros/latex/contrib/hyperref/doc/hyperref.pdfbin2341312 -> 2346858 bytes
-rw-r--r--macros/latex/contrib/hyperref/doc/nameref.pdfbin172475 -> 172475 bytes
-rw-r--r--macros/latex/contrib/hyperref/doc/xr-hyper.pdfbin303974 -> 94987 bytes
-rw-r--r--macros/latex/contrib/hyperref/hluatex.dtx4
-rw-r--r--macros/latex/contrib/hyperref/hyperref-linktarget.dtx9
-rw-r--r--macros/latex/contrib/hyperref/hyperref-patches.dtx14
-rw-r--r--macros/latex/contrib/hyperref/hyperref.dtx141
-rw-r--r--macros/latex/contrib/hyperref/xr-hyper.dtx2
-rw-r--r--macros/latex/contrib/latex2pydata/CHANGELOG.md8
-rw-r--r--macros/latex/contrib/latex2pydata/latex2pydata.dtx81
-rw-r--r--macros/latex/contrib/latex2pydata/latex2pydata.pdfbin296929 -> 296848 bytes
-rw-r--r--macros/latex/contrib/minted/CHANGELOG_LATEXMINTED_PYTHON_PACKAGE.md20
-rw-r--r--macros/latex/contrib/minted/CHANGELOG_MINTED_LATEX_PACKAGE.md37
-rw-r--r--macros/latex/contrib/minted/README6
-rw-r--r--macros/latex/contrib/minted/latexminted-0.2.0-py3-none-any.whlbin32796 -> 0 bytes
-rw-r--r--macros/latex/contrib/minted/latexminted-0.3.0-py3-none-any.whlbin0 -> 33744 bytes
-rw-r--r--macros/latex/contrib/minted/latexminted.py158
-rw-r--r--macros/latex/contrib/minted/latexrestricted-0.4.0-py3-none-any.whlbin26755 -> 0 bytes
-rw-r--r--macros/latex/contrib/minted/latexrestricted-0.6.0-py3-none-any.whlbin0 -> 27081 bytes
-rw-r--r--macros/latex/contrib/minted/minted.dtx187
-rw-r--r--macros/latex/contrib/minted/minted.pdfbin505746 -> 508855 bytes
-rw-r--r--macros/latex/contrib/spbmark/README.md2
-rw-r--r--macros/latex/contrib/spbmark/spbmark.pdfbin94823 -> 95493 bytes
-rw-r--r--macros/latex/contrib/spbmark/spbmark.sty65
-rw-r--r--macros/latex/contrib/spbmark/spbmark.tex18
-rw-r--r--macros/latex/contrib/tugboat/NEWS10
-rw-r--r--macros/latex/contrib/tugboat/ltubguid.pdfbin328708 -> 331358 bytes
-rw-r--r--macros/latex/contrib/tugboat/tugboat-code.pdfbin523113 -> 523190 bytes
-rw-r--r--macros/latex/contrib/tugboat/tugboat.dtx16
-rw-r--r--macros/latex/contrib/xltabular/Changes1
-rw-r--r--macros/latex/contrib/xltabular/xltabular-doc.pdfbin71248 -> 77174 bytes
-rw-r--r--macros/latex/contrib/xltabular/xltabular-doc.tex119
-rw-r--r--macros/latex/contrib/xltabular/xltabular.sty22
53 files changed, 767 insertions, 386 deletions
diff --git a/macros/latex/contrib/beamer-contrib/themes/moloch/CHANGELOG.md b/macros/latex/contrib/beamer-contrib/themes/moloch/CHANGELOG.md
index d1e8bc4d60..bedfb2e75b 100644
--- a/macros/latex/contrib/beamer-contrib/themes/moloch/CHANGELOG.md
+++ b/macros/latex/contrib/beamer-contrib/themes/moloch/CHANGELOG.md
@@ -1,5 +1,21 @@
# Changelog
+## [0.5.0](https://github.com/jolars/moloch/compare/v0.4.0...v0.5.0) (2024-10-30)
+
+
+### Features
+
+* replace `\vfill` with `\vfil` in title frame ([8f2a59e](https://github.com/jolars/moloch/commit/8f2a59e239cf0ae32f1a5c8fbf6ad739fa1cd328))
+* switch from fill to fil ([#21](https://github.com/jolars/moloch/issues/21)) ([873ae15](https://github.com/jolars/moloch/commit/873ae154824ed10d45f05c6efe4c4cc73eca1a22))
+
+
+### Bug Fixes
+
+* remove duplicated footnote color specifications ([#26](https://github.com/jolars/moloch/issues/26)) ([1306af5](https://github.com/jolars/moloch/commit/1306af5a73e0a030ece2ad9825496cc28507ad54))
+* remove extra space below progressbar section pages ([#27](https://github.com/jolars/moloch/issues/27)) ([e5be480](https://github.com/jolars/moloch/commit/e5be4806ab9b975be8e8f67434c80fd2155e30b2))
+* set use=block title in block body for fill ([e8921a6](https://github.com/jolars/moloch/commit/e8921a69642166ef22b9b27cd3633a735c22f153)), closes [#28](https://github.com/jolars/moloch/issues/28)
+* tag files with date ([28003e7](https://github.com/jolars/moloch/commit/28003e7502ce420a0e24b96e27ba3d30b9b0ecbc))
+
## [0.4.0](https://github.com/jolars/moloch/compare/v0.3.0...v0.4.0) (2024-07-09)
diff --git a/macros/latex/contrib/beamer-contrib/themes/moloch/beamercolorthememoloch.dtx b/macros/latex/contrib/beamer-contrib/themes/moloch/beamercolorthememoloch.dtx
index f0f644acbd..fc062ff453 100644
--- a/macros/latex/contrib/beamer-contrib/themes/moloch/beamercolorthememoloch.dtx
+++ b/macros/latex/contrib/beamer-contrib/themes/moloch/beamercolorthememoloch.dtx
@@ -14,7 +14,7 @@
% \iffalse
%<*package>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamercolorthememoloch}[2024-07-09 v0.4.0 Moloch color theme] % x-release-please-version
+\ProvidesPackage{beamercolorthememoloch}[2024-10-30 v0.5.0 Moloch color theme] % x-release-please-version
%</package>
% \fi
% \CheckSum{0}
@@ -191,6 +191,7 @@
bg=normal text.bg!80!fg
}
\setbeamercolor{block body}{%
+ use=block title,
bg=block title.bg!50!normal text.bg
}
\setbeamercolor{block title alerted}{%
@@ -223,14 +224,6 @@
\setbeamercolor{footnote mark}{fg=.}
% \end{macrocode}
%
-%
-% Footnotes
-%
-% \begin{macrocode}
-\setbeamercolor{footnote}{fg=normal text.fg!90}
-\setbeamercolor{footnote mark}{fg=.}
-% \end{macrocode}
-%
% We also reset the bibliography colors in order to pick up the surrounding
% colors at the time of use. This prevents us having to set the correct color in
% normal and standout mode.
diff --git a/macros/latex/contrib/beamer-contrib/themes/moloch/beamerfontthememoloch.dtx b/macros/latex/contrib/beamer-contrib/themes/moloch/beamerfontthememoloch.dtx
index cc3396fe47..d2ca10a973 100644
--- a/macros/latex/contrib/beamer-contrib/themes/moloch/beamerfontthememoloch.dtx
+++ b/macros/latex/contrib/beamer-contrib/themes/moloch/beamerfontthememoloch.dtx
@@ -14,7 +14,7 @@
% \iffalse
%<*package>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerfontthememoloch}[2024-07-09 v0.4.0 Moloch font theme] % x-release-please-version
+\ProvidesPackage{beamerfontthememoloch}[2024-10-30 v0.5.0 Moloch font theme] % x-release-please-version
%</package>
% \fi
% \CheckSum{0}
diff --git a/macros/latex/contrib/beamer-contrib/themes/moloch/beamerinnerthememoloch.dtx b/macros/latex/contrib/beamer-contrib/themes/moloch/beamerinnerthememoloch.dtx
index 9815a0995f..384da28ac1 100644
--- a/macros/latex/contrib/beamer-contrib/themes/moloch/beamerinnerthememoloch.dtx
+++ b/macros/latex/contrib/beamer-contrib/themes/moloch/beamerinnerthememoloch.dtx
@@ -14,7 +14,7 @@
% \iffalse
%<*package>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerinnerthememoloch}[2024-07-09 v0.4.0 Moloch inner theme] % x-release-please-version
+\ProvidesPackage{beamerinnerthememoloch}[2024-10-30 v0.5.0 Moloch inner theme] % x-release-please-version
%</package>
% \fi
% \CheckSum{0}
@@ -113,7 +113,7 @@
\setbeamertemplate{title page}{
\begin{minipage}[b][\paperheight]{\textwidth}
\null%
- \vfill%
+ \vfil%
\ifx\inserttitlegraphic\@empty\else\usebeamertemplate*{title graphic}\fi
\ifx\inserttitle\@empty\else\usebeamertemplate*{title}\fi
\ifx\insertsubtitle\@empty\else\usebeamertemplate*{subtitle}\fi
@@ -123,7 +123,7 @@
}
\ifx\insertinstitute\@empty\else\usebeamertemplate*{institute}\fi
\ifx\insertdate\@empty\else\usebeamertemplate*{date}\fi
- \vfill
+ \vfil%
\null
\end{minipage}%
}
@@ -352,7 +352,7 @@
(0,0)
rectangle
(\moloch@progressonsectionpage, \moloch@progressonsectionpage@linewidth);
- \end{tikzpicture}
+ \end{tikzpicture}%
\tikzexternalenable%
}
% \end{macrocode}
@@ -387,11 +387,9 @@
% \subsubsection{Footnotes}
% \begin{macrocode}
\setbeamertemplate{footnote}{%
- \parindent 0em\noindent%
- \raggedright
- \usebeamercolor{footnote}%
- \hbox to 0.8em{\hfil\insertfootnotemark}%
- \insertfootnotetext\par%
+ \parindent 0em\noindent\raggedright \usebeamercolor{footnote}\hbox to
+ 0.8em{\hfil\insertfootnotemark}\insertfootnotetext%%%
+ \par%
}
% \end{macrocode}
%
@@ -409,8 +407,8 @@
%
% \begin{macrocode}
\define@key{beamerframe}{c}[true]{% centered
- \beamer@frametopskip=0pt plus 1fill\relax%
- \beamer@framebottomskip=0pt plus 1fill\relax%
+ \beamer@frametopskip=0pt plus 1fil\relax%
+ \beamer@framebottomskip=0pt plus 1fil\relax%
\beamer@frametopskipautobreak=0pt plus .4\paperheight\relax%
\beamer@framebottomskipautobreak=0pt plus .6\paperheight\relax%
\def\beamer@initfirstlineunskip{}%
diff --git a/macros/latex/contrib/beamer-contrib/themes/moloch/beamerouterthememoloch.dtx b/macros/latex/contrib/beamer-contrib/themes/moloch/beamerouterthememoloch.dtx
index a0ce0af580..b981d4ca89 100644
--- a/macros/latex/contrib/beamer-contrib/themes/moloch/beamerouterthememoloch.dtx
+++ b/macros/latex/contrib/beamer-contrib/themes/moloch/beamerouterthememoloch.dtx
@@ -14,7 +14,7 @@
% \iffalse
%<*package>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerouterthememoloch}[2024-07-09 v0.4.0 Moloch outer theme] % x-release-please-version
+\ProvidesPackage{beamerouterthememoloch}[2024-10-30 v0.5.0 Moloch outer theme] % x-release-please-version
%</package>
% \fi
% \CheckSum{0}
@@ -167,7 +167,7 @@
\totalheightof{%
\ifcsdef{moloch@frametitleformat}{\moloch@frametitleformat X}{X}%
}%
-}%
+ }%
}
\newcommand{\moloch@frametitlestrut@end}{%
@@ -178,7 +178,7 @@
\begin{beamercolorbox}[%
wd=\paperwidth,%
leftskip=1.6ex,%
- rightskip=\the\glueexpr 1.6ex plus 1fill\relax,%
+ rightskip=\the\glueexpr 1.6ex plus 1fil\relax,%
]{frametitle}%
\usebeamerfont{frametitle}%
\moloch@frametitlestrut@start%
diff --git a/macros/latex/contrib/beamer-contrib/themes/moloch/beamerthememoloch.dtx b/macros/latex/contrib/beamer-contrib/themes/moloch/beamerthememoloch.dtx
index e6447ec791..d4d38fa126 100644
--- a/macros/latex/contrib/beamer-contrib/themes/moloch/beamerthememoloch.dtx
+++ b/macros/latex/contrib/beamer-contrib/themes/moloch/beamerthememoloch.dtx
@@ -12,7 +12,7 @@
% \iffalse
%<*package>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerthememoloch}[2024-07-09 v0.4.0 Moloch Beamer theme] % x-release-please-version
+\ProvidesPackage{beamerthememoloch}[2024-10-30 v0.5.0 Moloch Beamer theme] % x-release-please-version
%</package>
% \fi
% \CheckSum{0}
diff --git a/macros/latex/contrib/beamer-contrib/themes/moloch/moloch.pdf b/macros/latex/contrib/beamer-contrib/themes/moloch/moloch.pdf
index 15f0652a6a..c9e34d1475 100644
--- a/macros/latex/contrib/beamer-contrib/themes/moloch/moloch.pdf
+++ b/macros/latex/contrib/beamer-contrib/themes/moloch/moloch.pdf
Binary files differ
diff --git a/macros/latex/contrib/beamer-contrib/themes/moloch/moloch.tex b/macros/latex/contrib/beamer-contrib/themes/moloch/moloch.tex
index c8300607be..2951df5927 100644
--- a/macros/latex/contrib/beamer-contrib/themes/moloch/moloch.tex
+++ b/macros/latex/contrib/beamer-contrib/themes/moloch/moloch.tex
@@ -82,7 +82,7 @@
\newcommand{\themename}{\textsf{moloch}\xspace}
-\def\molochversion{0.4.0} % x-release-please-version
+\def\molochversion{0.5.0} % x-release-please-version
\usepackage{readprov}
% \ReadPackageInfos{beamerthememoloch}
@@ -114,7 +114,7 @@ slide or to the section slides.
If you have any issues, find mistakes in the manual or want to help make
the theme even better, please get in touch there.
-\themename is a fork of the popular Metroplis theme by Matthias Vogelgesang.
+\themename is a fork of the popular Metropolis theme by Matthias Vogelgesang.
The motivation for the fork was to fix some longstanding bugs in Metropolis
and also simplify the codebase to make it easier to maintain and less
fragile to changes in the underlying Beamer code.
diff --git a/macros/latex/contrib/fvextra/CHANGELOG.md b/macros/latex/contrib/fvextra/CHANGELOG.md
index 1ed8da0390..6a0e674eba 100644
--- a/macros/latex/contrib/fvextra/CHANGELOG.md
+++ b/macros/latex/contrib/fvextra/CHANGELOG.md
@@ -1,6 +1,13 @@
# Changelog
+## v1.9.0 (2024/10/16)
+
+* Replaced buffer length counters with macros to prevent issues with
+ `\includeonly` resetting counters.
+
+
+
## v1.8.0 (2024/09/14)
* Added new option `backgroundcolor` (alias `bgcolor`). This provides a
diff --git a/macros/latex/contrib/fvextra/fvextra.dtx b/macros/latex/contrib/fvextra/fvextra.dtx
index ae05d4e6a9..f5b8aca429 100644
--- a/macros/latex/contrib/fvextra/fvextra.dtx
+++ b/macros/latex/contrib/fvextra/fvextra.dtx
@@ -26,7 +26,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{fvextra}
%<*package>
- [2024/09/14 v1.8.0 fvextra - extensions and patches for fancyvrb]
+ [2024/10/16 v1.9.0 fvextra - extensions and patches for fancyvrb]
%</package>
%
%<*driver>
@@ -819,7 +819,7 @@
%
% Below is an extended example that demonstrates what is possible with |VerbatimBuffer| combined with |\VerbatimInsertBuffer|. This uses |\ifdefstring| from the \pkg{etoolbox} package.
% \begin{itemize}
-% \item |\setformatter| defines an empty |\formatter| macro. Then it loops over the lines in a buffer looking for a line containing only the text ``red''. If this is found, it redefines |\formatter| to |\color{red}|. |FancyVerbBufferIndex| is a counter that is always available for buffer looping. |FancyVerbBufferLength| is the default counter containing the buffer length (number of lines). |\FancyVerbBufferLineName| contains the base name for buffer line macros (default |FancyVerbBufferLine|).
+% \item |\setformatter| defines an empty |\formatter| macro. Then it loops over the lines in a buffer looking for a line containing only the text ``red''. If this is found, it redefines |\formatter| to |\color{red}|. |FancyVerbBufferIndex| is a counter that is always available for buffer looping. |\FancyVerbBufferLength| is the default macro containing the buffer length (number of lines). |\FancyVerbBufferLineName| contains the base name for buffer line macros (default |FancyVerbBufferLine|).
% \item |afterbuffer| involves two steps: (1) |\setformatter| loops through the buffer and defines |\formatter| based on the buffer contents, and (2) |\VerbatimInsertBuffer| typesets the buffer, using |formatcom=\formatter| to format the text based on whether any line contains only the text ``red''.
% \end{itemize}
%
@@ -827,7 +827,7 @@
%\def\setformatter{%
% \def\formatter{}%
% \setcounter{FancyVerbBufferIndex}{1}%
-% \loop\unless\ifnum\value{FancyVerbBufferIndex}>\value{FancyVerbBufferLength}\relax
+% \loop\unless\ifnum\value{FancyVerbBufferIndex}>\FancyVerbBufferLength\relax
% \expandafter\let\expandafter\bufferline
% \csname\FancyVerbBufferLineName\arabic{FancyVerbBufferIndex}\endcsname
% \ifdefstring{\bufferline}{red}{\def\formatter{\color{red}}}{}%
@@ -846,7 +846,7 @@
% Here is the same example, but rewritten to use a global buffer with custom buffer names instead.
%
%\begin{tcblisting}{oversize=5em}
-%\begin{VerbatimBuffer}[globalbuffer, bufferlinename=exbuff, bufferlengthname=exbuff]
+%\begin{VerbatimBuffer}[globalbuffer, bufferlinename=exbuff, bufferlengthname=exbufflen]
%first
%second
%red
@@ -854,7 +854,7 @@
%
%\def\formatter{}
%\setcounter{FancyVerbBufferIndex}{1}
-%\loop\unless\ifnum\value{FancyVerbBufferIndex}>\value{exbuff}\relax
+%\loop\unless\ifnum\value{FancyVerbBufferIndex}>\exbufflen\relax
% \expandafter\let\expandafter\bufferline
% \csname exbuff\arabic{FancyVerbBufferIndex}\endcsname
% \ifdefstring{\bufferline}{red}{\def\formatter{\color{red}}}{}
@@ -864,7 +864,7 @@
%\VerbatimInsertBuffer[
% formatcom=\formatter,
% bufferlinename=exbuff,
-% bufferlengthname=exbuff
+% bufferlengthname=exbufflen
%]
%\end{tcblisting}
%
@@ -874,7 +874,7 @@
%
% \begin{optionlist}
% \item[afterbuffer (macro) (\meta{none})]
-% Macro or macros invoked at the end of the environment, after all lines of the environment have been buffered. This is outside the |\begingroup...\endgroup| that wraps verbatim processing, so \fancyvrb\ settings are no longer active. However, the buffer line macros and the buffer length counter are still accessible.
+% Macro or macros invoked at the end of the environment, after all lines of the environment have been buffered. This is outside the |\begingroup...\endgroup| that wraps verbatim processing, so \fancyvrb\ settings are no longer active. However, the buffer line macros and the buffer length macro are still accessible.
%
% \item[bufferer (macro) (\Verb{\FancyVerbDefaultBufferer})]
% This is the macro that adds lines to the buffer. The default is designed to create a truly verbatim buffer via |\detokenize|. This can be customized if you wish to use \fancyvrb\ options related to catcodes to create a buffer that is only partially verbatim (that contains macros).
@@ -890,7 +890,7 @@
% This macro must be defined globally, so |\xdef| or |\gdef| is necessary (this does not interfere with scoping from |globalbuffer|). Otherwise, there are no restrictions. The |\xdef| and |\detokenize| in the default definition guarantee that the buffer consists only of the literal text from the environment, but this is not required for a custom |bufferer|.
%
% \item[bufferlengthname (string) (FancyVerbBufferLength)]
-% Name of the counter (|\newcounter|) storing the length of the buffer. This is the number of lines stored.
+% Name of the macro storing the length of the buffer. This is the number of lines stored.
%
% \item[bufferlinename (string) (FancyVerbBufferLine)]
% The base name of the buffer line macros. The default is |FancyVerbBufferLine|, which will result in buffer macros |\FancyVerbBufferLine<n>| with integer |n| greater than or equal to one and less than or equal to the number of lines (one-based indexing). Since buffer macro names contain a number, they must be accessed differently than typical macros:
@@ -904,11 +904,11 @@
% Shortcut for setting |bufferlengthname| and |bufferlinename| simultaneously, using the same root name. This sets |bufferlengthname| to |<buffername>length| and |bufferlinename| to |<buffername>line|.
%
% \item[globalbuffer (bool) (false)]
-% This determines whether buffer line macros are defined globally, that is, whether they are accessible after the end of the |VerbatimBuffer| environment. If the line macros are defined globally, then the buffer length counter is also increased appropriately outside the environment. |globalbuffer| does not affect any |afterbuffer| macro, since that is invoked inside the environment.
+% This determines whether buffer line macros are defined globally, that is, whether they are accessible after the end of the |VerbatimBuffer| environment. If the line macros are defined globally, then the buffer length macro is also increased appropriately outside the environment. |globalbuffer| does not affect any |afterbuffer| macro, since that is invoked inside the environment.
%
% When buffered lines are used immediately, consider using |afterbuffer| instead of |globalbuffer|. When buffered lines must be used later in a document, consider using |globalbuffer| with custom (and perhaps unique) |bufferlinename| and |bufferlengthname|.
%
-% When |globalbuffer=true|, |VerbatimBuffer| environments with the same buffer name will append to a single buffer, so that it ultimately contains the concatenated contents of all environments. A |VerbatimBuffer| environment with |globalbuffer=false| will append to the buffer created by any previous |VerbatimBuffer| that had |globalbuffer=true| and shared the same buffer name. Any |afterbuffer| macro will have access to a buffer containing the concatenated data. At the very end of the environment with |globalbuffer=false|, after any |afterbuffer|, this appended content will be removed. All buffer line macros (from |bufferlinename|) that were created by that environment are ``deleted'' (|\let| to an undefined macro), and the buffer length counter (from |bufferlengthname|) is reduced proportionally.
+% When |globalbuffer=true|, |VerbatimBuffer| environments with the same buffer name will append to a single buffer, so that it ultimately contains the concatenated contents of all environments. A |VerbatimBuffer| environment with |globalbuffer=false| will append to the buffer created by any previous |VerbatimBuffer| that had |globalbuffer=true| and shared the same buffer name. Any |afterbuffer| macro will have access to a buffer containing the concatenated data. At the very end of the environment with |globalbuffer=false|, after any |afterbuffer|, this appended content will be removed. All buffer line macros (from |bufferlinename|) that were created by that environment are ``deleted'' (|\let| to an undefined macro), and the buffer length macro (from |bufferlengthname|) is reduced proportionally.
% \end{optionlist}
%
%
@@ -933,7 +933,7 @@
% \subsection{\cmd{\VerbatimClearBuffer}}
% \DescribeMacro{\VerbatimClearBuffer\oarg{options}}
%
-% Clear an existing buffer created with \cmd{VerbatimBuffer}. |\global\let| all buffer line macros to an undefined macro and set the buffer length counter to zero.
+% Clear an existing buffer created with \cmd{VerbatimBuffer}. |\global\let| all buffer line macros to an undefined macro and set the buffer length macro to zero.
%
%
%
@@ -4043,7 +4043,7 @@
% \end{macro}
%
% \begin{macro}{FancyVerbBufferIndex}
-% Current index in buffer during buffering. This is given a |\FancyVerb*| macro name since it may be accessed by the user in defining custom |bufferer|.
+% Current index in buffer during buffering. This is given a |FancyVerb*| macro name since it may be accessed by the user in defining custom |bufferer|.
% \begin{macrocode}
\newcounter{FancyVerbBufferIndex}
% \end{macrocode}
@@ -4062,14 +4062,16 @@
% \end{macro}
%
% \begin{macro}{bufferlengthname, \FV@bufferlengthname}
-% Name of counter storing the length of the buffer.
+% Name of macro storing the length of the buffer.
% \begin{macrocode}
\define@key{FV}{bufferlengthname}{%
- \ifcsname c@#1\endcsname
+ \ifcsname#1\endcsname
\else
- \newcounter{#1}%
+ \expandafter\xdef\csname#1\endcsname{0}%
\fi
- \def\FV@bufferlengthname{#1}}
+ \def\FV@bufferlengthname{#1}%
+ \expandafter\def\expandafter\FV@bufferlengthmacro\expandafter{%
+ \csname#1\endcsname}}
\fvset{bufferlengthname=FancyVerbBufferLength}
% \end{macrocode}
% \end{macro}
@@ -4092,7 +4094,7 @@
% \end{macro}
%
% \begin{macro}{globalbuffer, FV@globalbuffer}
-% Whether buffer macros and the buffer length counter are defined globally.
+% Whether buffer line macros and the buffer length macro are defined globally.
% \begin{macrocode}
\newbool{FV@globalbuffer}
\define@booleankey{FV}{globalbuffer}%
@@ -4109,9 +4111,9 @@
% A special buffer counter is used to track line numbers while avoiding incrementing the regular counter that is used for typeset code. Some macros do nothing with the default |bufferer|, but are needed to enable \fancyvrb\ options when a custom |bufferer| is used in conjunction with optional environment arguments. These include |\FancyVerbDefineActive| and |\FancyVerbFormatCom|. Since counters are global, the exact location of the |\setcounter| commands at the end of the environment relative to |\begingroup...\endgroup| is not important.
% \begin{macrocode}
\newcounter{FancyVerbBufferLine}
-\newcounter{FV@oldbufferlength}
\newbool{FV@globalbuffer@tmp}
-\let\FV@bufferlengthname@tmp\relax
+\let\FV@oldbufferlength\relax
+\let\FV@bufferlengthmacro@tmp\relax
\let\FancyVerbBufferLineName@tmp\relax
\let\FV@afterbuffer@tmp\relax
\def\VerbatimBuffer{%
@@ -4123,17 +4125,14 @@
\@bsphack
\begingroup
\FV@UseKeyValues
- \setcounter{FancyVerbBufferLine}%
- {\expandafter\value\expandafter{\FV@bufferlengthname}}%
+ \setcounter{FancyVerbBufferLine}{\FV@bufferlengthmacro}%
\let\c@FancyVerbLine\c@FancyVerbBufferLine
- \setcounter{FancyVerbBufferIndex}%
- {\expandafter\value\expandafter{\FV@bufferlengthname}}%
+ \setcounter{FancyVerbBufferIndex}{\FV@bufferlengthmacro}%
\ifbool{FV@globalbuffer}%
{\global\booltrue{FV@globalbuffer@tmp}}%
{\global\boolfalse{FV@globalbuffer@tmp}%
- \setcounter{FV@oldbufferlength}%
- {\expandafter\value\expandafter{\FV@bufferlengthname}}%
- \global\let\FV@bufferlengthname@tmp\FV@bufferlengthname
+ \expandafter\global\expandafter\let\expandafter\FV@oldbufferlength\FV@bufferlengthmacro
+ \global\let\FV@bufferlengthmacro@tmp\FV@bufferlengthmacro
\global\let\FancyVerbBufferLineName@tmp\FancyVerbBufferLineName}%
\global\let\FV@afterbuffer@tmp\FV@afterbuffer
\FV@DefineWhiteSpace
@@ -4144,8 +4143,7 @@
\FancyVerbFormatCom
\FV@Scan}
\def\FVE@VerbatimBuffer{%
- \expandafter\setcounter\expandafter{\FV@bufferlengthname}%
- {\value{FancyVerbBufferIndex}}%
+ \expandafter\xdef\FV@bufferlengthmacro{\theFancyVerbBufferIndex}%
\setcounter{FancyVerbBufferIndex}{0}%
\endgroup
\@esphack
@@ -4155,16 +4153,16 @@
\endgroup
\ifbool{FV@globalbuffer@tmp}%
{}%
- {\loop\unless\ifnum\expandafter\value\expandafter{\FV@bufferlengthname@tmp}=
- \value{FV@oldbufferlength}\relax
+ {\loop\unless\ifnum\FV@bufferlengthmacro@tmp=\FV@oldbufferlength\relax
\expandafter\global\expandafter\let\csname
- \FancyVerbBufferLineName@tmp
- \expandafter\arabic\expandafter{\FV@bufferlengthname@tmp}%
+ \FancyVerbBufferLineName@tmp\FV@bufferlengthmacro@tmp
\endcsname\FV@Undefined
- \expandafter\addtocounter\expandafter{\FV@bufferlengthname@tmp}{-1}%
+ \expandafter\xdef\FV@bufferlengthmacro@tmp{%
+ \the\numexpr\FV@bufferlengthmacro@tmp-1\relax}%
\repeat
- \global\let\FV@bufferlengthname@tmp\relax
- \global\let\FancyVerbBufferLineName@tmp\relax}}
+ \global\let\FV@bufferlengthmacro@tmp\relax
+ \global\let\FancyVerbBufferLineName@tmp\relax}%
+ \global\let\FV@oldbufferlength\relax}
\def\endVerbatimBuffer{\FVE@VerbatimBuffer}
% \end{macrocode}
% \end{macro}
@@ -4190,9 +4188,9 @@
\def\FV@Scan@InsertBuffer{%
\FV@CatCodes
\xdef\FV@EnvironName{\FV@VerbatimInsertEnvName}%
- \ifnum\expandafter\value\expandafter{\FV@bufferlengthname}=\z@\relax
+ \ifnum\FV@bufferlengthmacro=\z@\relax
\PackageError{fvextra}%
- {Buffer length counter \FV@bufferlengthname\space is invalid or zero}%
+ {Buffer length macro \expandafter\string\FV@bufferlengthmacro\space is invalid or zero}%
{}%
\let\FV@GetLine\relax
\fi
@@ -4200,8 +4198,7 @@
\def\VerbatimInsertBuffer@def@FV@Line#1{%
\FVExtraRetokenizeVArg{\def\FV@Line}{}{#1}}
\def\FancyVerbGetLine@VerbatimInsertBuffer{%
- \ifnum\value{FancyVerbBufferIndex}>%
- \expandafter\value\expandafter{\FV@bufferlengthname}\relax
+ \ifnum\value{FancyVerbBufferIndex}>\FV@bufferlengthmacro\relax
\global\let\FV@EnvironName\relax
\let\next\relax
\else
@@ -4255,9 +4252,8 @@
\begingroup
\def\FV@KeyValues{#1}%
\FV@UseKeyValues
- \setcounter{FancyVerbBufferIndex}%
- {\expandafter\value\expandafter{\FV@bufferlengthname}}%
- \expandafter\setcounter\expandafter{\FV@bufferlengthname}{0}%
+ \setcounter{FancyVerbBufferIndex}{\FV@bufferlengthmacro}%
+ \expandafter\xdef\FV@bufferlengthmacro{0}%
\loop\unless\ifnum\value{FancyVerbBufferIndex}<1\relax
\expandafter\global\expandafter\let
\csname\FancyVerbBufferLineName\arabic{FancyVerbBufferIndex}\endcsname
diff --git a/macros/latex/contrib/fvextra/fvextra.pdf b/macros/latex/contrib/fvextra/fvextra.pdf
index 4d1e204c52..3145e95809 100644
--- a/macros/latex/contrib/fvextra/fvextra.pdf
+++ b/macros/latex/contrib/fvextra/fvextra.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperref/ChangeLog.txt b/macros/latex/contrib/hyperref/ChangeLog.txt
index 0ff7510869..c2833e5c27 100644
--- a/macros/latex/contrib/hyperref/ChangeLog.txt
+++ b/macros/latex/contrib/hyperref/ChangeLog.txt
@@ -1,3 +1,14 @@
+Version: 2024-10-30 v7.01k
+
+2024-10-14 Ulrike Fischer
+ * hyperref.dtx: adapt to new format (predefined \theHcounter, sockets)
+
+2024-10-12 Ulrike Fischer
+ * hyperref.dtx: avoid warning if theHfootnote is predefined.
+
+2024-08-31 Ulrike Fischer
+ * hyperref-linktarget.dtx: correct a test, see test missing-theH
+
Version: 2024-07-10 v7.01j
2024-07-10 Ulrike Fischer
* hyperref.dtx: define \HyOrg@addtoreset always for cleveref
diff --git a/macros/latex/contrib/hyperref/README.md b/macros/latex/contrib/hyperref/README.md
index 335fb1f62b..01a75681ed 100644
--- a/macros/latex/contrib/hyperref/README.md
+++ b/macros/latex/contrib/hyperref/README.md
@@ -1,6 +1,6 @@
# README for hyperref bundle
-Version 2024-07-10 v7.01j
+Version 2024-10-30 v7.01k
## INTRODUCTION
@@ -137,5 +137,3 @@ Responsible for the additions to PU encoding for Arabi is
\endgroup
```
* ...
-
-
diff --git a/macros/latex/contrib/hyperref/doc/backref.pdf b/macros/latex/contrib/hyperref/doc/backref.pdf
index 5ec3d8b07f..234c63b51b 100644
--- a/macros/latex/contrib/hyperref/doc/backref.pdf
+++ b/macros/latex/contrib/hyperref/doc/backref.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperref/doc/hyperref-doc.css b/macros/latex/contrib/hyperref/doc/hyperref-doc.css
index 71d181adf7..913a445f4a 100644
--- a/macros/latex/contrib/hyperref/doc/hyperref-doc.css
+++ b/macros/latex/contrib/hyperref/doc/hyperref-doc.css
@@ -236,7 +236,6 @@ table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
.hline hr, .cline hr{border:none;border-top:1px solid black;}
.hline {border-top: 1px solid black;}
.hline + .vspace:last-child{display:none;}
-.hline:first-child{border-bottom:1px solid black;border-top:none;}
.tabbing-right {text-align:right;}
div.float, div.figure {margin-left: auto; margin-right: auto;}
div.float img {text-align:center;}
@@ -304,7 +303,6 @@ table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
.hline hr, .cline hr{border:none;border-top:1px solid black;}
.hline {border-top: 1px solid black;}
.hline + .vspace:last-child{display:none;}
-.hline:first-child{border-bottom:1px solid black;border-top:none;}
div.array {text-align:center;}
table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
table.longtable{border-collapse: collapse; border-spacing: 0;}
diff --git a/macros/latex/contrib/hyperref/doc/hyperref-doc.html b/macros/latex/contrib/hyperref/doc/hyperref-doc.html
index 0b918b602d..8b915a7d46 100644
--- a/macros/latex/contrib/hyperref/doc/hyperref-doc.html
+++ b/macros/latex/contrib/hyperref/doc/hyperref-doc.html
@@ -25,7 +25,7 @@ href="https://github.com/latex3/hyperref/issues" class="url" ><span
class="ec-lmvtt-10x-x-120">https://github.com/latex3/hyperref/issues</span></a><span
class="ec-lmr-12">)</span></div><br />
<div class="date" ><span
-class="ec-lmr-12">2024-07-10 v7.01j</span></div>
+class="ec-lmr-12">2024-10-30 v7.01k</span></div>
</div>
<h3 class="likesectionHead"><a
id="x1-1000"></a>Contents</h3>
@@ -1040,7 +1040,7 @@ class="td11"> <!--l. 601--><p class="noindent" >no-op
standard
in
<span
-class="ec-lmvtt-10">\DeclareDocumentMetadata</span>. </td>
+class="ec-lmvtt-10">\DocumentMetadata</span>. </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-2-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-5-1"
class="td11"> <span
@@ -1063,7 +1063,7 @@ class="td11"> <!--l. 603--><p class="noindent" >no-op
version
in
<span
-class="ec-lmvtt-10">\DeclareDocumentMetadata</span>. </td>
+class="ec-lmvtt-10">\DocumentMetadata</span>. </td>
</tr><tr
style="vertical-align:baseline;" id="TBL-2-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-2-7-1"
class="td11"> <span
@@ -2188,7 +2188,7 @@ id="TBL-9-4"></colgroup>
style="vertical-align:baseline;" id="TBL-9-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-1-1"
class="td01"><span
class="ec-lmvtt-10">bookmarks </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-1-2"
-class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-1-3"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-1-3"
class="td11"> <span
class="ec-lmri-10">true </span></td><td style="white-space:normal; text-align:left;" id="TBL-9-1-4"
class="td10">
@@ -2207,7 +2207,7 @@ class="ec-lmvtt-10">.out </span>file is not rewritten
style="vertical-align:baseline;" id="TBL-9-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-2-1"
class="td01"><span
class="ec-lmvtt-10">bookmarksopen </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-2-2"
-class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-2-3"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-2-3"
class="td11"> <span
class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-9-2-4"
class="td10">
@@ -2228,7 +2228,7 @@ class="ec-lmvtt-10">\maxdimen</span>) to which bookmarks are open</td>
style="vertical-align:baseline;" id="TBL-9-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-4-1"
class="td01"><span
class="ec-lmvtt-10">bookmarksnumbered </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-4-2"
-class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-4-3"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-4-3"
class="td11"> <span
class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-9-4-4"
class="td10">
@@ -2247,7 +2247,7 @@ class="td10">
style="vertical-align:baseline;" id="TBL-9-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-6-1"
class="td01"><span
class="ec-lmvtt-10">CJKbookmarks </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-6-2"
-class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-6-3"
+class="td11"> boolean </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-6-3"
class="td11"> <span
class="ec-lmri-10">false </span></td><td style="white-space:normal; text-align:left;" id="TBL-9-6-4"
class="td10">
@@ -2275,7 +2275,7 @@ class="ec-lmss-10">hyperref </span>you get PDF files which
style="vertical-align:baseline;" id="TBL-9-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-7-1"
class="td01"><span
class="ec-lmvtt-10">pdfhighlight </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-7-2"
-class="td11"> name </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-7-3"
+class="td11"> name </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-7-3"
class="td11"> <span
class="ec-lmri-10">/I </span></td><td style="white-space:normal; text-align:left;" id="TBL-9-7-4"
class="td10">
@@ -2287,7 +2287,7 @@ class="td10">
style="vertical-align:baseline;" id="TBL-9-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-8-1"
class="td01"><span
class="ec-lmvtt-10">citebordercolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-8-2"
-class="td11"> RGB color </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-8-3"
+class="td11"> rgb color </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-8-3"
class="td11"> <span
class="ec-lmri-10">0 1 0 </span></td><td style="white-space:normal; text-align:left;" id="TBL-9-8-4"
class="td10">
@@ -2296,7 +2296,7 @@ class="td10">
style="vertical-align:baseline;" id="TBL-9-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-9-1"
class="td01"><span
class="ec-lmvtt-10">filebordercolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-9-2"
-class="td11"> RGB color </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-9-3"
+class="td11"> rgb color </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-9-3"
class="td11"> <span
class="ec-lmri-10">0 .5 .5 </span></td><td style="white-space:normal; text-align:left;" id="TBL-9-9-4"
class="td10">
@@ -2305,7 +2305,7 @@ class="td10">
style="vertical-align:baseline;" id="TBL-9-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-10-1"
class="td01"><span
class="ec-lmvtt-10">linkbordercolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-10-2"
-class="td11"> RGB color </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-10-3"
+class="td11"> rgb color </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-10-3"
class="td11"> <span
class="ec-lmri-10">1 0 0 </span></td><td style="white-space:normal; text-align:left;" id="TBL-9-10-4"
class="td10">
@@ -2314,7 +2314,7 @@ class="td10">
style="vertical-align:baseline;" id="TBL-9-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-11-1"
class="td01"><span
class="ec-lmvtt-10">menubordercolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-11-2"
-class="td11"> RGB color </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-11-3"
+class="td11"> rgb color </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-11-3"
class="td11"> <span
class="ec-lmri-10">1 0 0 </span></td><td style="white-space:normal; text-align:left;" id="TBL-9-11-4"
class="td10">
@@ -2323,7 +2323,7 @@ class="td10">
style="vertical-align:baseline;" id="TBL-9-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-12-1"
class="td01"><span
class="ec-lmvtt-10">urlbordercolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-12-2"
-class="td11"> RGB color </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-12-3"
+class="td11"> rgb color </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-12-3"
class="td11"> <span
class="ec-lmri-10">0 1 1 </span></td><td style="white-space:normal; text-align:left;" id="TBL-9-12-4"
class="td10">
@@ -2332,7 +2332,7 @@ class="td10">
style="vertical-align:baseline;" id="TBL-9-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-13-1"
class="td01"><span
class="ec-lmvtt-10">runbordercolor </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-13-2"
-class="td11"> RGB color </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-13-3"
+class="td11"> rgb color </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-13-3"
class="td11"> <span
class="ec-lmri-10">0 .7 .7 </span></td><td style="white-space:normal; text-align:left;" id="TBL-9-13-4"
class="td10">
@@ -2341,7 +2341,7 @@ class="td10">
style="vertical-align:baseline;" id="TBL-9-14-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-14-1"
class="td01"><span
class="ec-lmvtt-10">allbordercolors </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-14-2"
-class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-14-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-14-3"
class="td11"> </td><td style="white-space:normal; text-align:left;" id="TBL-9-14-4"
class="td10">
<!--l. 1015--><p class="noindent" >Set all border color options </td>
@@ -2349,7 +2349,7 @@ class="td10">
style="vertical-align:baseline;" id="TBL-9-15-"><td style="white-space:nowrap; text-align:left;" id="TBL-9-15-1"
class="td01"><span
class="ec-lmvtt-10">pdfborder </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-9-15-2"
-class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-15-3"
+class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-9-15-3"
class="td11"> <span
class="ec-lmri-10">0 0 1 </span></td><td style="white-space:normal; text-align:left;" id="TBL-9-15-4"
class="td10">
@@ -2373,7 +2373,7 @@ class="td11"> </td><td style="white-space:normal; text-align:left;" id="
class="td10"></td></tr>
</table></div>
<!--l. 1020--><p class="noindent" >The color of link borders used to be specified <span
-class="ec-lmri-10">only </span>as 3 numbers in the range 0..1, giving an RGB color.
+class="ec-lmri-10">only </span>as 3 numbers in the range 0..1, giving an rgb color.
Since version 6.76a, the usual color specifications of package <span
class="ec-lmss-10">(x)color </span>can be used if <span
class="ec-lmss-10">xcolor </span>has been
@@ -6269,10 +6269,8 @@ class="td10"></td></tr>
<!--l. 2753--><p class="noindent" >
<h4 class="subsectionHead"><span class="titlemark">9.2 </span> <a
id="x1-620009.2"></a>Forms optional parameters</h4>
-<!--l. 2754--><p class="noindent" >Note that all colors must be expressed as RGB triples, in the range 0..1 (i.e.&#x00A0;<span
-class="ec-lmvtt-10">color=0 0</span>
-<span
-class="ec-lmvtt-10">0.5</span>)
+<!--l. 2754--><p class="noindent" >Note that all colors must be expressed as rgb triples, in the range 0..1 (i.e.&#x00A0;<span
+class="ec-lmvtt-10">color=0 0 0.5</span>)
<!--l. 2758--><p class="indent" >
<a
id="x1-62001r15"></a> <!--l. 2759--><div class="longtable"> <table id="TBL-61" class="longtable"
@@ -6345,13 +6343,13 @@ class="td11"> char </td><td style="white-space:nowrap; text-align:left;"
class="td11"> <span
class="ec-lmri-10">S </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-61-9-4"
class="td10"> box border style; S (Solid) is default, B is Beveled,</td>
-
</tr><tr
style="vertical-align:baseline;" id="TBL-61-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-61-10-1"
class="td01"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-61-10-2"
class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-61-10-3"
class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-61-10-4"
class="td10"> D is Dashed, I is Inset and U is Underline </td>
+
</tr><tr
style="vertical-align:baseline;" id="TBL-61-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-61-11-1"
class="td01"><span
@@ -6740,9 +6738,9 @@ class="ec-lmss-10">hyperref </span>driver has to provide definitions for eight m
<!--l. 2826--><p class="noindent" >2. <span class="obeylines-h"><code class="verb">\hyper@link</code></span>
<!--l. 2828--><p class="noindent" >3. <span class="obeylines-h"><code class="verb">\hyper@linkfile</code></span>
<!--l. 2830--><p class="noindent" >4. <span class="obeylines-h"><code class="verb">\hyper@linkurl</code></span>
-<!--l. 2832--><p class="noindent" >5. <span class="obeylines-h"><code class="verb">\hyper@anchorstart</code></span>
+<!--l. 2832--><p class="noindent" >5. <span class="obeylines-h"><code class="verb">\hyper@anchorstart</code></span>
+<!--l. 2834--><p class="noindent" >6. <span class="obeylines-h"><code class="verb">\hyper@anchorend</code></span>
-<!--l. 2834--><p class="noindent" >6. <span class="obeylines-h"><code class="verb">\hyper@anchorend</code></span>
<!--l. 2836--><p class="noindent" >7. <span class="obeylines-h"><code class="verb">\hyper@linkstart</code></span>
<!--l. 2838--><p class="noindent" >8. <span class="obeylines-h"><code class="verb">\hyper@linkend</code></span>
<!--l. 2841--><p class="indent" > The draft option defines the macros as follows
diff --git a/macros/latex/contrib/hyperref/doc/hyperref-doc.pdf b/macros/latex/contrib/hyperref/doc/hyperref-doc.pdf
index 1637285c01..857da1f3b6 100644
--- a/macros/latex/contrib/hyperref/doc/hyperref-doc.pdf
+++ b/macros/latex/contrib/hyperref/doc/hyperref-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperref/doc/hyperref-doc.tex b/macros/latex/contrib/hyperref/doc/hyperref-doc.tex
index 2f4ff93f80..f61f87362d 100644
--- a/macros/latex/contrib/hyperref/doc/hyperref-doc.tex
+++ b/macros/latex/contrib/hyperref/doc/hyperref-doc.tex
@@ -166,7 +166,7 @@
}
\makeatother
\title{Hypertext marks in \hologo{LaTeX}: a manual for \xpackage{hyperref}}
-\date{2024-07-10 v7.01j}
+\date{2024-10-30 v7.01k}
\begin{document}
@@ -598,9 +598,9 @@ changed behaviour if the new pdfmanagement and so the new generic \xpackage{hype
option & remark \\\hline
all driver options, e.g. \texttt{pdftex} & often not needed, as detected automatically\\
implicit \\
-pdfa & no-op with new pdfmanagement, set the standard in \cs{DeclareDocumentMetadata}.\\
+pdfa & no-op with new pdfmanagement, set the standard in \cs{DocumentMetadata}.\\
unicode & is the default now anyway\\
-pdfversion & no-op with new pdfmanagement, set the version in \cs{DeclareDocumentMetadata}.\\
+pdfversion & no-op with new pdfmanagement, set the version in \cs{DocumentMetadata}.\\
bookmarks & this will probably change at some time. \\
backref &\\
pagebackref & \\
@@ -1006,19 +1006,19 @@ CJKbookmarks & boolean & false &
pdfhighlight & name & /I & How link buttons behave when selected; /I is for inverse (the default);
the other possibilities are /N (no effect), /O (outline), and /P (inset
highlighting). \\
-citebordercolor & RGB color & 0 1 0 & The color of the box around citations \\
-filebordercolor & RGB color & 0 .5 .5 & The color of the box around links to files \\
-linkbordercolor & RGB color & 1 0 0 & The color of the box around normal links \\
-menubordercolor & RGB color & 1 0 0 & The color of the box around Acrobat menu links \\
-urlbordercolor & RGB color & 0 1 1 & The color of the box around links to URLs \\
-runbordercolor & RGB color & 0 .7 .7 & Color of border around `run' links \\
+citebordercolor & rgb color & 0 1 0 & The color of the box around citations \\
+filebordercolor & rgb color & 0 .5 .5 & The color of the box around links to files \\
+linkbordercolor & rgb color & 1 0 0 & The color of the box around normal links \\
+menubordercolor & rgb color & 1 0 0 & The color of the box around Acrobat menu links \\
+urlbordercolor & rgb color & 0 1 1 & The color of the box around links to URLs \\
+runbordercolor & rgb color & 0 .7 .7 & Color of border around `run' links \\
allbordercolors & & & Set all border color options \\
pdfborder & & 0 0 1 & The style of box around links; defaults to a box with lines of 1pt thickness,
but the colorlinks option resets it to produce no border.
\end{longtable}
The color of link borders used to be specified \emph{only} as 3
-numbers in the range 0..1, giving an RGB color. Since version 6.76a, the usual
+numbers in the range 0..1, giving an rgb color. Since version 6.76a, the usual
color specifications of package \xpackage{(x)color} can be used if \xpackage{xcolor}
has been loaded.
For further information see description of package \xpackage{hycolor}.
@@ -2751,7 +2751,7 @@ method & name & Used only when generating HTML; values can be \texttt{post} or
\end{longtable}
\subsection{Forms optional parameters}
-Note that all colors must be expressed as RGB triples, in the range 0..1 (i.e.\ \texttt{color=0 0
+Note that all colors must be expressed as rgb triples, in the range 0..1 (i.e.\ \texttt{color=0 0
0.5})
\smallskip
diff --git a/macros/latex/contrib/hyperref/doc/hyperref-linktarget.pdf b/macros/latex/contrib/hyperref/doc/hyperref-linktarget.pdf
index 3e29950cf1..fa4c168ca2 100644
--- a/macros/latex/contrib/hyperref/doc/hyperref-linktarget.pdf
+++ b/macros/latex/contrib/hyperref/doc/hyperref-linktarget.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperref/doc/hyperref-patches.pdf b/macros/latex/contrib/hyperref/doc/hyperref-patches.pdf
new file mode 100644
index 0000000000..a41b53d3c4
--- /dev/null
+++ b/macros/latex/contrib/hyperref/doc/hyperref-patches.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperref/doc/hyperref.pdf b/macros/latex/contrib/hyperref/doc/hyperref.pdf
index bb0f2a46aa..5699563a3a 100644
--- a/macros/latex/contrib/hyperref/doc/hyperref.pdf
+++ b/macros/latex/contrib/hyperref/doc/hyperref.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperref/doc/nameref.pdf b/macros/latex/contrib/hyperref/doc/nameref.pdf
index 4c4ea6606b..301feec274 100644
--- a/macros/latex/contrib/hyperref/doc/nameref.pdf
+++ b/macros/latex/contrib/hyperref/doc/nameref.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperref/doc/xr-hyper.pdf b/macros/latex/contrib/hyperref/doc/xr-hyper.pdf
index a5d0e690fc..f3d297ae8d 100644
--- a/macros/latex/contrib/hyperref/doc/xr-hyper.pdf
+++ b/macros/latex/contrib/hyperref/doc/xr-hyper.pdf
Binary files differ
diff --git a/macros/latex/contrib/hyperref/hluatex.dtx b/macros/latex/contrib/hyperref/hluatex.dtx
index 20a2f3a4a3..5569871dbf 100644
--- a/macros/latex/contrib/hyperref/hluatex.dtx
+++ b/macros/latex/contrib/hyperref/hluatex.dtx
@@ -1,6 +1,6 @@
% \iffalse
% Source File: hluatex.dtx
-% 2024-07-10 v7.01j
+% 2024-10-30 v7.01k
%
% Copyright
% 2016-2019 Oberdiek Package Support Group
@@ -31,7 +31,7 @@
%
% \begin{macrocode}
%<*luatex>
-%% 2024-07-10 v7.01j
+%% 2024-10-30 v7.01k
%% force unicode encoding, see issue #101
%% code mostly copied from hxetex.def
\HyPsd@LoadUnicode
diff --git a/macros/latex/contrib/hyperref/hyperref-linktarget.dtx b/macros/latex/contrib/hyperref/hyperref-linktarget.dtx
index 874a492736..46b45c2428 100644
--- a/macros/latex/contrib/hyperref/hyperref-linktarget.dtx
+++ b/macros/latex/contrib/hyperref/hyperref-linktarget.dtx
@@ -23,10 +23,9 @@
% for those people who are interested.
%
%<*driver>
-\RequirePackage{pdfmanagement-testphase}
\DocumentMetadata{pdfstandard=A-2b}
\documentclass[full]{l3doc}
-\usepackage{array,booktabs,hyperxmp}
+\usepackage{array,booktabs}
\hypersetup{pdfauthor=The LaTeX Project,
pdftitle=Make link targets (hyperref bundle)}
\usepackage[skins]{tcolorbox}
@@ -53,7 +52,7 @@
% }^^A
% }
%
-% \date{Version 2024-07-10 v7.01j}
+% \date{Version 2024-10-30 v7.01k}
%
% \maketitle
% \begin{documentation}
@@ -217,7 +216,7 @@
% \texttt{\cs{MakeLinkTarget}*\{destname\}} is roughly equivalent to
% \texttt{\cs{hypertarget}\{destname\}\{\}} but unlike the
% latter it also raises the destination in a PDF, there is no text argument,
-% and---most importantly--it updates \cs{@currentHref}, that means the target
+% and---most importantly---it updates \cs{@currentHref}, that means the target
% name is stored by the next \cs{label}, something that \cs{hypertarget} doesn't do).
% The target name is expanded, see the remarks about prefixes above regarding
% the allowed chars.
@@ -535,7 +534,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_target_counter_doc:nn #1 #2
{
- \bool_lazy_and:nnTF { \cs_if_free_p:c {c@#2} } { \cs_if_free_p:c {theH#2} }
+ \bool_lazy_or:nnTF { \cs_if_free_p:c {c@#2} } { \cs_if_free_p:c {theH#2} }
{
\PackageWarning {hyperref}{Counter~'#2'~or~the~representation~'\string\theH#2`\MessageBreak
don't~exist.~No~target~created.}{}
diff --git a/macros/latex/contrib/hyperref/hyperref-patches.dtx b/macros/latex/contrib/hyperref/hyperref-patches.dtx
index ac4bac4f8c..2fe0e4cda1 100644
--- a/macros/latex/contrib/hyperref/hyperref-patches.dtx
+++ b/macros/latex/contrib/hyperref/hyperref-patches.dtx
@@ -1,5 +1,4 @@
% \iffalse meta-comment
-% \iffalse
%% File: hyperref-patches.dtx
%% Copyright
%% 1995-2001 Sebastian Rahtz, with portions written by David Carlisle and Heiko Oberdiek,
@@ -27,13 +26,9 @@
%% given in the file `manifest.txt'.
%
%<*driver>
-\RequirePackage{pdfmanagement-testphase}
-\DeclareDocumentMetadata{pdfstandard=A-2b}
-\makeatletter
-\declare@file@substitution{doc.sty}{doc-v3beta.sty}
-\makeatother
+\DocumentMetadata{pdfstandard=A-2b}
\documentclass[full]{l3doc}
-\usepackage{array,booktabs,hyperxmp}
+\usepackage{array,booktabs}
\hypersetup{pdfauthor=The LaTeX Project,pdftitle=hyperref patches}
\usepackage{caption}
\begin{document}
@@ -55,7 +50,7 @@
% }^^A
% }
%
-% \date{Version 2024-07-10 v7.01j}
+% \date{Version 2024-10-30 v7.01k}
%
% \maketitle
% \begin{documentation}
@@ -79,7 +74,7 @@
% \texttt{nofoiltex}, \texttt{nolisting}, \texttt{nolistings}, \texttt{norevtex}.
%
% \end{documentation}
-
+%
% \begin{implementation}
%
% \section{\pkg{hyperref-patches} documentation}
@@ -141,6 +136,7 @@
}{}
\fi
% \end{macrocode}
+%
% \section{listings}
% --Moved 2021-06-30--
%
diff --git a/macros/latex/contrib/hyperref/hyperref.dtx b/macros/latex/contrib/hyperref/hyperref.dtx
index 80cef9b890..d9e99cda73 100644
--- a/macros/latex/contrib/hyperref/hyperref.dtx
+++ b/macros/latex/contrib/hyperref/hyperref.dtx
@@ -51,7 +51,7 @@
%<puvnenc>\ProvidesFile{puvnenc.def}
%<puarenc>\ProvidesFile{puarenc.def}
%<psdextra>\ProvidesFile{psdextra.def}
-%<!none&!packageEnd> [2024-07-10 v7.01j %
+%<!none&!packageEnd> [2024-10-30 v7.01k %
%<package> Hypertext links for LaTeX]
%<nohyperref> Dummy hyperref (SR)]
%<driver> Hyperref documentation driver file]
@@ -10293,29 +10293,35 @@
\fi
\fi
}
-\Hy@CounterExists{section}{%
- \providecommand\theHequation{\theHsection.\arabic{equation}}%
-}
-\providecommand\theHequation{\arabic{equation}}%
-\Hy@CounterExists{part}{%
- \providecommand\theHpart{\arabic{part}}%
-}
-\@ifundefined{thechapter}{%
- \providecommand\theHsection {\arabic{section}}%
- \providecommand\theHfigure {\arabic{figure}}%
- \providecommand\theHtable {\arabic{table}}%
-}{%
- \providecommand\theHchapter {\arabic{chapter}}%
- \providecommand\theHfigure {\theHchapter.\arabic{figure}}%
- \providecommand\theHtable {\theHchapter.\arabic{table}}%
- \providecommand\theHsection {\theHchapter.\arabic{section}}%
-}
-\providecommand\theHsubsection {\theHsection.\arabic{subsection}}
-\providecommand\theHsubsubsection{\theHsubsection.\arabic{subsubsection}}
-\providecommand\theHparagraph {\theHsubsubsection.\arabic{paragraph}}
-\providecommand\theHsubparagraph {\theHparagraph.\arabic{subparagraph}}
-\providecommand\theHtheorem {\theHsection.\arabic{theorem}}
-\providecommand\theHthm {\theHsection.\arabic{thm}}
+% \end{macrocode}
+% change 2024-10-13: do not define if format is new enough.
+% \begin{macrocode}
+\IfFormatAtLeastTF{2024-11-01}{}
+ {
+ \Hy@CounterExists{section}{%
+ \providecommand\theHequation{\theHsection.\arabic{equation}}%
+ }
+ \providecommand\theHequation{\arabic{equation}}%
+ \Hy@CounterExists{part}{%
+ \providecommand\theHpart{\arabic{part}}%
+ }
+ \@ifundefined{thechapter}{%
+ \providecommand\theHsection {\arabic{section}}%
+ \providecommand\theHfigure {\arabic{figure}}%
+ \providecommand\theHtable {\arabic{table}}%
+ }{%
+ \providecommand\theHchapter {\arabic{chapter}}%
+ \providecommand\theHfigure {\theHchapter.\arabic{figure}}%
+ \providecommand\theHtable {\theHchapter.\arabic{table}}%
+ \providecommand\theHsection {\theHchapter.\arabic{section}}%
+ }
+ \providecommand\theHsubsection {\theHsection.\arabic{subsection}}
+ \providecommand\theHsubsubsection{\theHsubsection.\arabic{subsubsection}}
+ \providecommand\theHparagraph {\theHsubsubsection.\arabic{paragraph}}
+ \providecommand\theHsubparagraph {\theHparagraph.\arabic{subparagraph}}
+ \providecommand\theHtheorem {\theHsection.\arabic{theorem}}
+ \providecommand\theHthm {\theHsection.\arabic{thm}}
+ }
% \end{macrocode}
% Thanks to Greta Meyer (gbd@pop.cwru.edu) for making me realize
% that enumeration starts at 0 for every list! But |\item|
@@ -10324,7 +10330,8 @@
% \begin{macrocode}
\let\H@item\item
\newcounter{Item}
-\def\theHItem{\arabic{Item}}
+\IfFormatAtLeastTF{2024-11-01}{}
+ {\def\theHItem{\arabic{Item}}}
\def\item{%
\@hyper@itemfalse
\if@nmbrlist\@hyper@itemtrue\fi
@@ -10333,15 +10340,15 @@
% \end{macrocode}
%
% \begin{macrocode}
-\providecommand\theHenumi {\theHItem}
-\providecommand\theHenumii {\theHItem}
-\providecommand\theHenumiii {\theHItem}
-\providecommand\theHenumiv {\theHItem}
-\providecommand\theHHfootnote {\arabic{Hfootnote}}
-\providecommand\theHmpfootnote{\arabic{mpfootnote}}
-\@ifundefined{theHHmpfootnote}{%
- \let\theHHmpfootnote\theHHfootnote
-}{}
+\IfFormatAtLeastTF{2024-11-01}{}
+ {
+ \providecommand\theHenumi {\theHItem}
+ \providecommand\theHenumii {\theHItem}
+ \providecommand\theHenumiii {\theHItem}
+ \providecommand\theHenumiv {\theHItem}
+ \providecommand\theHHfootnote {\arabic{Hfootnote}}
+ \providecommand\theHmpfootnote{\arabic{mpfootnote}}
+ }
% \end{macrocode}
% Tanmoy asked for this default handling of undefined |\theH<name>|
% situations. It really isn't clear what would be ideal, whether to
@@ -10349,7 +10356,7 @@
% definition of the counter, or to default it to something like
% |\arabic{name}|. We take the latter course, slightly worriedly.
% \begin{macrocode}
-\let\H@refstepcounter\refstepcounter
+\let\H@refstepcounter\@kernel@refstepcounter
\edef\name@of@eq{equation}%
% \end{macrocode}
% We do not want the handler for |\refstepcounter| to cut in
@@ -10366,11 +10373,13 @@
\@hyper@itemfalse
\@skiphyperreffalse
\ExplSyntaxOn
-\def\refstepcounter#1{%
- \legacy_if:nF {Hy@pdfstring}
- {
- \H@refstepcounter{#1}%
- \bool_lazy_and:nnT
+\IfFormatAtLeastTF{2024-11-01}
+ {
+ \NewSocketPlug{refstepcounter}{hyperref}{\ifHy@pdfstring\else#1\fi}
+ \AssignSocketPlug{refstepcounter}{hyperref}
+ \NewSocketPlug{refstepcounter/target}{hyperref}
+ {
+ \bool_lazy_and:nnT
{ \l__hyp_target_create_bool }
{ ! \legacy_if_p:n{@skiphyperref} }
{
@@ -10381,11 +10390,34 @@
\@hyper@itemfalse
}
{
- \hyper@refstepcounter{#1}%
+ \hyper@refstepcounter{\@currentcounter}%
}
- }
- }
-}
+ }
+ }
+ \AssignSocketPlug{refstepcounter/target}{hyperref}
+ }
+ {
+ \def\refstepcounter#1{%
+ \legacy_if:nF {Hy@pdfstring}
+ {
+ \H@refstepcounter{#1}%
+ \bool_lazy_and:nnT
+ { \l__hyp_target_create_bool }
+ { ! \legacy_if_p:n{@skiphyperref} }
+ {
+ \legacy_if:nTF {@hyper@item}
+ {
+ \stepcounter{Item}%
+ \hyper@refstepcounter{Item}%
+ \@hyper@itemfalse
+ }
+ {
+ \hyper@refstepcounter{#1}%
+ }
+ }
+ }
+ }
+ }
\ExplSyntaxOff
\let\Hy@saved@refstepcounter\refstepcounter
% \end{macrocode}
@@ -11031,7 +11063,19 @@
% \begin{macrocode}
\@ifundefined{hyper@nopatch@footnote}{%
\ifHy@hyperfootnotes
- \newcounter{Hfootnote}%
+ \@ifundefined{theHfootnote}
+ {\newcounter{Hfootnote}}
+ {\let\H@@theHfootnote\theHfootnote
+ \let\theHfootnote\undefined
+ \newcounter{Hfootnote}
+ \let\theHfootnote\H@@theHfootnote
+ }%
+% \end{macrocode}
+% where is this used?
+% \begin{macrocode}
+ \@ifundefined{theHHmpfootnote}{%
+ \let\theHHmpfootnote\theHHfootnote
+ }{}
\let\H@@footnotetext\@footnotetext
\let\H@@footnotemark\@footnotemark
\def\@xfootnotenext[#1]{%
@@ -11383,6 +11427,11 @@
}%
#3%
\fi
+% \end{macrocode}
+% as the anchor are set manually here, we have to update the tagging info.
+% For now we test for the format but this should go again in 2025.
+% \begin{macrocode}
+ \IfFormatAtLeastTF{2024-11-01}{\UseTaggingSocket{recordtarget}}{}%
}%
\fi
\par
@@ -12017,7 +12066,9 @@
% new counters are defined.
% change 2024-02-14: use a csname to handle counter names with commands,
% see issue \#330
+% change 2024-10-13: disable patches in new format 2024-11-01.
% \begin{macrocode}
+\IfFormatAtLeastTF{2024-11-01}{\def\hyper@nopatch@counter{}}{}
\@ifundefined{hyper@nopatch@counter}
{
\let\H@definecounter\@definecounter
diff --git a/macros/latex/contrib/hyperref/xr-hyper.dtx b/macros/latex/contrib/hyperref/xr-hyper.dtx
index f7b39072f5..bfb06783f4 100644
--- a/macros/latex/contrib/hyperref/xr-hyper.dtx
+++ b/macros/latex/contrib/hyperref/xr-hyper.dtx
@@ -26,7 +26,7 @@
%
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{xr-hyper}
-%<package> [2024-07-10 v7.01j eXternal References (DPC)]
+%<package> [2024-10-30 v7.01k eXternal References (DPC)]
%
%<*driver>
\documentclass{l3doc}
diff --git a/macros/latex/contrib/latex2pydata/CHANGELOG.md b/macros/latex/contrib/latex2pydata/CHANGELOG.md
index f079e3c167..65f9c3bfd9 100644
--- a/macros/latex/contrib/latex2pydata/CHANGELOG.md
+++ b/macros/latex/contrib/latex2pydata/CHANGELOG.md
@@ -1,6 +1,13 @@
# Changelog — latex2pydata LaTeX package
+## v0.3.0 (2024/10/16)
+
+* Replaced buffer length counters with macros to prevent issues with
+ `\includeonly` resetting counters.
+
+
+
## v0.2.0 (2024-05-16)
* Operations on file handles, file names, and buffers are now global.
@@ -34,6 +41,7 @@
`tcolorbox`.
+
## v0.1.0 (2023-11-19)
* Initial release.
diff --git a/macros/latex/contrib/latex2pydata/latex2pydata.dtx b/macros/latex/contrib/latex2pydata/latex2pydata.dtx
index a9d1751557..43cacc7674 100644
--- a/macros/latex/contrib/latex2pydata/latex2pydata.dtx
+++ b/macros/latex/contrib/latex2pydata/latex2pydata.dtx
@@ -26,7 +26,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{latex2pydata}
%<*package>
- [2024/05/16 v0.2.0 latex2pydata - write data to file in Python literal format]
+ [2024/10/16 v0.3.0 latex2pydata - write data to file in Python literal format]
%</package>
%
%<*driver>
@@ -482,7 +482,7 @@
%
% Key-value data can be written to file once a dict is opened with |\pydatawritedictopen|. It is also possible to accumulate key-value data in a ``buffer.'' This is convenient when the data serves as input to an external program that generates cached content. Buffered data can be hashed in memory without being written to file, so the existence of cached content can be checked efficiently.
%
-% A buffer consists of a sequence of macros of the form |\|\meta{buffername}|line|\meta{n}, where each line of data corresponds to a macro and \meta{n} is an integer greater than or equal to one (one-based indexing). The length of the buffer is stored in the counter \meta{buffername}|length|. Buffers are limited to containing comma-separated key-value data, without any opening or closing dict delimiters |{}|.
+% A buffer consists of a sequence of macros of the form |\|\meta{buffername}|line|\meta{n}, where each line of data corresponds to a macro and \meta{n} is an integer greater than or equal to one (one-based indexing). The length of the buffer is stored in the macro |\|\meta{buffername}|length|. Buffers are limited to containing comma-separated key-value data, without any opening or closing dict delimiters |{}|.
%
% All buffer commands that set the buffer or modify the buffer operate globally (|\global|, |\gdef|, etc.).
%
@@ -492,10 +492,10 @@
% \DescMacro{\pydatasetbuffername\marg{buffername}}
% Initialize a new buffer if \meta{buffername} has not been used previously, and configure all buffer operations to use \meta{buffername}.
%
-% \meta{buffername} is used as a base name for creating the buffer line macros of the form |\|\meta{buffername}|line|\meta{n} and the buffer length counter \meta{buffername}|length|.
+% \meta{buffername} is used as a base name for creating the buffer line macros of the form |\|\meta{buffername}|line|\meta{n} and the buffer length macro |\|\meta{buffername}|length|.
%
% \DescMacro{\pydataclearbuffername\marg{buffername}}
-% Delete the specified buffer. |\let| all line macros |\|\meta{buffername}|line|\meta{n} to an undefined macro, and set the length counter \meta{buffername}|length| to zero.
+% Delete the specified buffer. |\let| all line macros |\|\meta{buffername}|line|\meta{n} to an undefined macro, and set the length macro |\|\meta{buffername}|length| to zero.
%
%
% \subsubsection{Special buffer operations}
@@ -814,7 +814,7 @@
%
% Key-value data can be written directly to file once a dict is opened. It is also possible to accumulate key-value data in a ``buffer.'' This is convenient when the data serves as input to an external program that generates cached content. Buffered data can be hashed in memory without being written to file, so the existence of cached content can be checked efficiently.
%
-% The buffer consists of a sequence of macros of the form |\<buffer_name>line<n>|, where each line of data corresponds to a macro and |<n>| is an integer greater than or equal to one. The length of the buffer is stored in the counter |<buffer_name>length|. The buffer includes comma-separated key-value data, without any opening or closing dict delimiters |{}|.
+% The buffer consists of a sequence of macros of the form |\<buffer_name>line<n>|, where each line of data corresponds to a macro and |<n>| is an integer greater than or equal to one. The length of the buffer is stored in the macro |\<buffer_name>length|. The buffer includes comma-separated key-value data, without any opening or closing dict delimiters |{}|.
%
% \begin{macro}{pydata@bufferindex}
% Counter for looping through buffers.
@@ -824,8 +824,8 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\pydatasetbuffername, \pydata@buffername, \pydata@bufferlinename, \pydata@bufferlengthname}
-% Set the buffer base name and create a corresponding length counter if it does not exist.
+% \begin{macro}{\pydatasetbuffername, \pydata@buffername, \pydata@bufferlinename, \pydata@bufferlengthname, \pydata@bufferlengthmacro}
+% Set the buffer base name and create a corresponding length macro if it does not exist.
% \begin{macrocode}
\def\pydatasetbuffername#1{%
\ifbool{pydata@bufferhaskey}%
@@ -834,10 +834,12 @@
\gdef\pydata@buffername{#1}%
\gdef\pydata@bufferlinename{#1line}%
\gdef\pydata@bufferlengthname{#1length}%
- \ifcsname c@\pydata@bufferlengthname\endcsname
+ \ifcsname\pydata@bufferlengthname\endcsname
\else
- \expandafter\newcounter\expandafter{\pydata@bufferlengthname}%
- \fi}
+ \expandafter\gdef\csname\pydata@bufferlengthname\endcsname{0}%
+ \fi
+ \expandafter\gdef\expandafter\pydata@bufferlengthmacro\expandafter{%
+ \csname\pydata@bufferlengthname\endcsname}}
\pydatasetbuffername{pydata@defaultbuffer}
% \end{macrocode}
% \end{macro}
@@ -846,7 +848,7 @@
% Write existing buffer macros to file handle.
% \begin{macrocode}
\def\pydatawritebuffer{%
- \ifnum\expandafter\value\expandafter{\pydata@bufferlengthname}<1\relax
+ \ifnum\pydata@bufferlengthmacro<1\relax
\pydata@error{Cannot write empty buffer}%
\fi
\pydata@checkfilehandle
@@ -856,8 +858,7 @@
\ifbool{pydata@bufferhaskey}%
{\pydata@error{Cannot write buffer when a buffered key is waiting for a value}}{}%
\setcounter{pydata@bufferindex}{1}%
- \loop\unless\ifnum\value{pydata@bufferindex}>%
- \expandafter\value\expandafter{\pydata@bufferlengthname}\relax
+ \loop\unless\ifnum\value{pydata@bufferindex}>\pydata@bufferlengthmacro\relax
\immediate\write\pydata@filehandle{%
\csname\pydata@bufferlinename\arabic{pydata@bufferindex}\endcsname}%
\stepcounter{pydata@bufferindex}%
@@ -872,17 +873,17 @@
% \begin{macrocode}
\def\pydataclearbuffername#1{%
\def\pydata@clearbuffername{#1}%
- \ifcsname c@#1length\endcsname
+ \ifcsname#1length\endcsname
\else
\pydata@error{Buffer #1 does not exist}%
\fi
\setcounter{pydata@bufferindex}{1}%
- \loop\unless\ifnum\value{pydata@bufferindex}>\value{#1length}\relax
+ \loop\unless\ifnum\value{pydata@bufferindex}>\csname#1length\endcsname\relax
\expandafter\global\expandafter\let
\csname#1line\arabic{pydata@bufferindex}\endcsname\pydata@undefined
\stepcounter{pydata@bufferindex}%
\repeat
- \setcounter{#1length}{0}%
+ \expandafter\gdef\csname#1length\endcsname{0}%
\setcounter{pydata@bufferindex}{0}%
\ifx\pydata@clearbuffername\pydata@buffername
\boolfalse{pydata@bufferhaskey}%
@@ -896,7 +897,7 @@
% \begin{macrocode}
\def\pydatabuffermdfivesum{%
\pdf@mdfivesum{%
- \ifnum\expandafter\value\expandafter{\pydata@bufferlengthname}<1
+ \ifnum\pydata@bufferlengthmacro<1
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
@@ -904,12 +905,12 @@
{}{\pydatabuffermdfivesum@i{1}}}}
\def\pydatabuffermdfivesum@i#1{%
\csname\pydata@bufferlinename#1\endcsname^^J%
- \ifnum\expandafter\value\expandafter{\pydata@bufferlengthname}=#1
+ \ifnum\pydata@bufferlengthmacro=#1
\expandafter\@gobble
\else
\expandafter\@firstofone
\fi
- {\expandafter\pydatabuffermdfivesum@i\expandafter{\the\numexpr#1+1 }}}
+ {\expandafter\pydatabuffermdfivesum@i\expandafter{\the\numexpr#1+1\relax}}}
% \end{macrocode}
% \end{macro}
%
@@ -1164,10 +1165,9 @@
\gdef\pydatabufferkey@i#1{%
\ifbool{pydata@bufferhaskey}%
{\pydata@error{Cannot buffer a key when waiting for a value}}{}%
- \expandafter\stepcounter\expandafter{\pydata@bufferlengthname}%
- \expandafter\xdef\csname
- \pydata@bufferlinename\expandafter\arabic\expandafter{\pydata@bufferlengthname}%
- \endcsname{%
+ \expandafter\xdef\pydata@bufferlengthmacro{%
+ \the\numexpr\pydata@bufferlengthmacro+1\relax}%
+ \expandafter\xdef\csname\pydata@bufferlinename\pydata@bufferlengthmacro\endcsname{%
\pydata@quotestr{#1}:%
}%
\booltrue{pydata@bufferhaskey}}
@@ -1193,10 +1193,9 @@
\gdef\pydatabuffervalue@i#1{%
\ifbool{pydata@bufferhaskey}%
{}{\pydata@error{Cannot buffer value when waiting for a key}}%
- \expandafter\stepcounter\expandafter{\pydata@bufferlengthname}%
- \expandafter\xdef\csname
- \pydata@bufferlinename\expandafter\arabic\expandafter{\pydata@bufferlengthname}%
- \endcsname{%
+ \expandafter\xdef\pydata@bufferlengthmacro{%
+ \the\numexpr\pydata@bufferlengthmacro+1\relax}%
+ \expandafter\xdef\csname\pydata@bufferlinename\pydata@bufferlengthmacro\endcsname{%
\pydata@quotestr{#1},%
}%
\boolfalse{pydata@bufferhaskey}}
@@ -1234,10 +1233,9 @@
\gdef\pydatabufferkeyvalue@ii#1#2{%
\ifbool{pydata@bufferhaskey}%
{\pydata@error{Cannot buffer a key when waiting for a value}}{}%
- \expandafter\stepcounter\expandafter{\pydata@bufferlengthname}%
- \expandafter\xdef\csname
- \pydata@bufferlinename\expandafter\arabic\expandafter{\pydata@bufferlengthname}%
- \endcsname{%
+ \expandafter\xdef\pydata@bufferlengthmacro{%
+ \the\numexpr\pydata@bufferlengthmacro+1\relax}%
+ \expandafter\xdef\csname\pydata@bufferlinename\pydata@bufferlengthmacro\endcsname{%
\pydata@quotestr{#1}: \pydata@quotestr{#2},%
}}
\gdef\pydatabufferkeyedefvalue{%
@@ -1276,28 +1274,25 @@
\gdef\pydatabuffermlvaluestart{%
\ifbool{pydata@bufferhaskey}%
{}{\pydata@error{Cannot buffer value when waiting for a key}}%
- \expandafter\stepcounter\expandafter{\pydata@bufferlengthname}%
- \expandafter\xdef\csname
- \pydata@bufferlinename\expandafter\arabic\expandafter{\pydata@bufferlengthname}%
- \endcsname{%
+ \expandafter\xdef\pydata@bufferlengthmacro{%
+ \the\numexpr\pydata@bufferlengthmacro+1\relax}%
+ \expandafter\xdef\csname\pydata@bufferlinename\pydata@bufferlengthmacro\endcsname{%
\pydata@mlstropen
}}
\gdef\pydatabuffermlvalueline#1{%
\ifbool{pydata@bufferhaskey}%
{}{\pydata@error{Cannot buffer value when waiting for a key}}%
- \expandafter\stepcounter\expandafter{\pydata@bufferlengthname}%
- \expandafter\xdef\csname
- \pydata@bufferlinename\expandafter\arabic\expandafter{\pydata@bufferlengthname}%
- \endcsname{%
+ \expandafter\xdef\pydata@bufferlengthmacro{%
+ \the\numexpr\pydata@bufferlengthmacro+1\relax}%
+ \expandafter\xdef\csname\pydata@bufferlinename\pydata@bufferlengthmacro\endcsname{%
\pydata@escstrtext{#1}%
}}
\gdef\pydatabuffermlvalueend{%
\ifbool{pydata@bufferhaskey}%
{}{\pydata@error{Cannot buffer value when waiting for a key}}%
- \expandafter\stepcounter\expandafter{\pydata@bufferlengthname}%
- \expandafter\xdef\csname
- \pydata@bufferlinename\expandafter\arabic\expandafter{\pydata@bufferlengthname}%
- \endcsname{%
+ \expandafter\xdef\pydata@bufferlengthmacro{%
+ \the\numexpr\pydata@bufferlengthmacro+1\relax}%
+ \expandafter\xdef\csname\pydata@bufferlinename\pydata@bufferlengthmacro\endcsname{%
\pydata@mlstrclose,%
}%
\boolfalse{pydata@bufferhaskey}}
diff --git a/macros/latex/contrib/latex2pydata/latex2pydata.pdf b/macros/latex/contrib/latex2pydata/latex2pydata.pdf
index 815d40d7be..21ad974ff9 100644
--- a/macros/latex/contrib/latex2pydata/latex2pydata.pdf
+++ b/macros/latex/contrib/latex2pydata/latex2pydata.pdf
Binary files differ
diff --git a/macros/latex/contrib/minted/CHANGELOG_LATEXMINTED_PYTHON_PACKAGE.md b/macros/latex/contrib/minted/CHANGELOG_LATEXMINTED_PYTHON_PACKAGE.md
index 5f4caab542..d7dc0229c3 100644
--- a/macros/latex/contrib/minted/CHANGELOG_LATEXMINTED_PYTHON_PACKAGE.md
+++ b/macros/latex/contrib/minted/CHANGELOG_LATEXMINTED_PYTHON_PACKAGE.md
@@ -1,6 +1,26 @@
# Changelog: `latexminted` — Python library for LaTeX minted package
+
+## v0.3.0 (2024-10-29)
+
+* Added support for new keywords options (#416): `extrakeywords`,
+ `extrakeywordsconstant`, `extrakeywordsdeclaration`,
+ `extrakeywordsnamespace`, `extrakeywordspseudo`, `extrakeywordsreserved`,
+ `extrakeywordstype`.
+
+* Refactored version handling in `cmdline.py` to avoid unnecessary imports.
+
+* Improved `.errlog.minted` files. Improved layout and added traceback
+ information for the origin in the LaTeX document. Fixed a bug that could
+ cause `.errlog.minted` files to be deleted when they should be kept.
+ `.errlog.minted` files now contain all error data from a compile,
+ regardless of `highlightmode` setting. Previously, only the data from the
+ last error was kept under some circumstances when `highlightmode` was not
+ `immediate`.
+
+
+
## v0.2.0 (2024-10-03)
* All config data passed back to LaTeX is now processed with `\detokenize`
diff --git a/macros/latex/contrib/minted/CHANGELOG_MINTED_LATEX_PACKAGE.md b/macros/latex/contrib/minted/CHANGELOG_MINTED_LATEX_PACKAGE.md
index 88e443ea35..1027d1ae5d 100644
--- a/macros/latex/contrib/minted/CHANGELOG_MINTED_LATEX_PACKAGE.md
+++ b/macros/latex/contrib/minted/CHANGELOG_MINTED_LATEX_PACKAGE.md
@@ -1,6 +1,43 @@
# Changelog — minted LaTeX package
+## v3.2.0 (2024/10/29)
+
+* Fixed compatibility with `\includeonly` by replacing buffer length counters
+ with macros (#414). As part of this, the minimum supported `latex2pydata`
+ LaTeX package is now 0.3.0 and the minimum supported `fvextra` is now
+ 1.9.0.
+
+* Added new options that allow keywords to be added to a lexer (#416):
+ `extrakeywords`, `extrakeywordsconstant`, `extrakeywordsdeclaration`,
+ `extrakeywordsnamespace`, `extrakeywordspseudo`, `extrakeywordsreserved`,
+ `extrakeywordstype`. This covers all keyword tokens supported by Pygments
+ (https://pygments.org/docs/tokens/#keyword-tokens).
+
+* Many performance improvements. When combined with `latexrestricted`
+ v0.6.0, these can give a cumulative speedup of over 40% in the case when no
+ code needs to be highlighted.
+
+ - Temp files and the cache are now only cleaned up when necessary at the
+ end of the document. Previously, this occurred at the end of each
+ compile, unnecessarily increasing compile time.
+
+ - In `latexminted.py`, switched from `platform.system()` to `sys.platform`
+ for better performance in detecting operating system.
+
+ Performance reference: https://github.com/python/cpython/issues/95531.
+
+ - In `latexminted.py` with TeX Live, the value of `TEXMFOUTPUT` is no
+ longer retrieved with `kpsewhich` unless it is actually used. Also fixed
+ a bug in parsing `TEXMFOUTPUT` value (whitespace is now stripped).
+
+* The `debug` package option now records shell escape commands in the log.
+
+* In config detection, error messages now mention `.errlog.minted` file when
+ it exists.
+
+
+
## v3.1.2 (2024/10/07)
* There is now only a single `\read` allocation for reading temporary files
diff --git a/macros/latex/contrib/minted/README b/macros/latex/contrib/minted/README
index c6c1222114..f4e0068b4a 100644
--- a/macros/latex/contrib/minted/README
+++ b/macros/latex/contrib/minted/README
@@ -7,8 +7,10 @@ the highlighted source code output using fancyvrb and fvextra.
See the documentation (minted.pdf) for examples and instructions for
installation and usage.
-This work may be distributed and/or modified under the conditions of the
-LaTeX Project Public License (LPPL), version 1.3c or later.
+This work may be distributed and/or modified under the conditions of the LaTeX
+Project Public License (LPPL), version 1.3c or later. Additionally,
+minted1.sty and minted2.sty may be distributed under the terms of the 3-Clause
+("New") BSD license.
For suggestions, feature requests, and bug reports, please use the project's
GitHub site: https://github.com/gpoore/minted.
diff --git a/macros/latex/contrib/minted/latexminted-0.2.0-py3-none-any.whl b/macros/latex/contrib/minted/latexminted-0.2.0-py3-none-any.whl
deleted file mode 100644
index ba1211e704..0000000000
--- a/macros/latex/contrib/minted/latexminted-0.2.0-py3-none-any.whl
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/minted/latexminted-0.3.0-py3-none-any.whl b/macros/latex/contrib/minted/latexminted-0.3.0-py3-none-any.whl
new file mode 100644
index 0000000000..9d0e2a8b59
--- /dev/null
+++ b/macros/latex/contrib/minted/latexminted-0.3.0-py3-none-any.whl
Binary files differ
diff --git a/macros/latex/contrib/minted/latexminted.py b/macros/latex/contrib/minted/latexminted.py
index 3c1584ea32..3e6e6fe4a4 100644
--- a/macros/latex/contrib/minted/latexminted.py
+++ b/macros/latex/contrib/minted/latexminted.py
@@ -79,12 +79,11 @@ under Windows:
'''
-__version__ = '0.1.0'
+__version__ = '0.3.0'
import os
import pathlib
-import platform
import shutil
import subprocess
import sys
@@ -140,7 +139,12 @@ for env_var in (env_TEXMFOUTPUT, env_TEXMF_OUTPUT_DIRECTORY):
prohibited_path_roots.add(env_var_path)
prohibited_path_roots.add(env_var_path.resolve())
+did_init_prohibited_path_roots = False
def is_permitted_executable_path(executable_path, executable_path_resolved):
+ global did_init_prohibited_path_roots
+ if not did_init_prohibited_path_roots:
+ did_init_prohibited_path_roots = True
+ init_prohibited_path_roots()
if not executable_path_resolved.is_resolved():
raise Exception('Second argument must be resolved path')
if any(e.is_relative_to(p) or p.is_relative_to(e)
@@ -154,76 +158,80 @@ def is_permitted_executable_path(executable_path, executable_path_resolved):
# https://github.com/gpoore/latexrestricted/blob/main/latexrestricted/_latex_config.py
env_SELFAUTOLOC = os.getenv('SELFAUTOLOC')
env_TEXSYSTEM = os.getenv('TEXSYSTEM')
-if not env_TEXMFOUTPUT and env_SELFAUTOLOC and (not env_TEXSYSTEM or env_TEXSYSTEM.lower() != 'miktex'):
- if platform.system() == 'Windows':
- # Under Windows, shell escape executables will often be launched with
- # the TeX Live `runscript.exe` executable wrapper. This overwrites
- # `SELFAUTOLOC` from TeX with the location of the wrapper, so
- # `SELFAUTOLOC` may not be correct.
- which_tlmgr = shutil.which('tlmgr') # No `.exe`; likely `.bat`
- if not which_tlmgr:
- sys.exit('Failed to find TeX Live "tlmgr" executable on PATH')
- which_tlmgr_resolved = Path(which_tlmgr).resolve()
- texlive_bin_path = which_tlmgr_resolved.parent
- # Make sure executable is *.exe, not *.bat or *.cmd:
- # https://docs.python.org/3/library/subprocess.html#security-considerations
- which_kpsewhich = shutil.which('kpsewhich.exe', path=str(texlive_bin_path))
- if not which_kpsewhich:
- sys.exit('Failed to find a TeX Live "tlmgr" executable with accompanying "kpsewhich" executable on PATH')
- which_kpsewhich_path = Path(which_kpsewhich)
- which_kpsewhich_resolved = which_kpsewhich_path.resolve()
- if not texlive_bin_path == which_kpsewhich_resolved.parent:
- sys.exit(' '.join([
- '"tlmgr" executable from PATH resolved to "{}" '.format(which_tlmgr_resolved.as_posix()),
- 'while "kpsewhich" resolved to "{}";'.format(which_kpsewhich_resolved.as_posix()),
- '"tlmgr" and "kpsewhich" should be in the same location',
- ]))
- if not which_kpsewhich_resolved.name.lower().endswith('.exe'):
- sys.exit(' '.join([
- 'Executable "kpsewhich" resolved to "{}",'.format(which_kpsewhich_resolved.as_posix()),
- 'but *.exe is required',
- ]))
- else:
- which_kpsewhich = shutil.which('kpsewhich', path=env_SELFAUTOLOC)
- if not which_kpsewhich:
- sys.exit(' '.join([
- 'Environment variable SELFAUTOLOC has value "{}",'.format(env_SELFAUTOLOC),
- 'but a "kpsewhich" executable was not found at that location',
- ]))
- which_kpsewhich_path = Path(which_kpsewhich)
- which_kpsewhich_resolved = which_kpsewhich_path.resolve()
- if not is_permitted_executable_path(which_kpsewhich_path, which_kpsewhich_resolved):
- # As in the latexrestricted case, this doesn't initially check for the
- # TeX Live scenario where `TEXMFOUTPUT` is set in a `texmf.cnf` config
- # file to a location that includes the `kpsewhich` executable. There
- # isn't a good way to get the value of `TEXMFOUTPUT` without running
- # `kpsewhich` in that case.
- sys.exit(
- 'Executable "kpsewhich" is located under the current directory, TEXMFOUTPUT, or '
- 'TEXMF_OUTPUT_DIRECTORY, or one of these locations is under the same directory as the executable'
- )
- kpsewhich_cmd = [which_kpsewhich_resolved.as_posix(), '--var-value', 'TEXMFOUTPUT']
- try:
- kpsewhich_proc = subprocess.run(kpsewhich_cmd, shell=False, capture_output=True)
- except PermissionError:
- sys.exit('Insufficient permission to run "{}"'.format(which_kpsewhich_resolved.as_posix()))
- kpsewhich_TEXMFOUTPUT = kpsewhich_proc.stdout.decode(sys.stdout.encoding) or None
- if kpsewhich_TEXMFOUTPUT:
- kpsewhich_TEXMFOUTPUT_path = Path(kpsewhich_TEXMFOUTPUT)
- prohibited_path_roots.add(kpsewhich_TEXMFOUTPUT_path)
- prohibited_path_roots.add(kpsewhich_TEXMFOUTPUT_path.resolve())
- if not is_permitted_executable_path(which_kpsewhich_path, which_kpsewhich_resolved):
- # It is now possible to check for the TeX Live scenario where
- # `TEXMFOUTPUT` is set in a `texmf.cnf` config file to a location that
- # includes the `kpsewhich` executable. Giving an error message after
- # already running `kpsewhich` isn't ideal, but there isn't a good
- # alternative. As in the latexrestricted case, the impact on overall
- # security is negligible because an unsafe value of `TEXMFOUTPUT`
- # means that all TeX-related executables are potentially compromised.
- sys.exit(
- 'Executable "kpsewhich" is located under the current directory, TEXMFOUTPUT, or '
- 'TEXMF_OUTPUT_DIRECTORY, or one of these locations is under the same directory as the executable'
- )
+def init_prohibited_path_roots():
+ if not env_TEXMFOUTPUT and env_SELFAUTOLOC and (not env_TEXSYSTEM or env_TEXSYSTEM.lower() != 'miktex'):
+ if sys.platform == 'win32':
+ # Under Windows, shell escape executables will often be launched
+ # with the TeX Live `runscript.exe` executable wrapper. This
+ # overwrites `SELFAUTOLOC` from TeX with the location of the
+ # wrapper, so `SELFAUTOLOC` may not be correct.
+ which_tlmgr = shutil.which('tlmgr') # No `.exe`; likely `.bat`
+ if not which_tlmgr:
+ sys.exit('Failed to find TeX Live "tlmgr" executable on PATH')
+ which_tlmgr_resolved = Path(which_tlmgr).resolve()
+ texlive_bin_path = which_tlmgr_resolved.parent
+ # Make sure executable is *.exe, not *.bat or *.cmd:
+ # https://docs.python.org/3/library/subprocess.html#security-considerations
+ which_kpsewhich = shutil.which('kpsewhich.exe', path=str(texlive_bin_path))
+ if not which_kpsewhich:
+ sys.exit(
+ 'Failed to find a TeX Live "tlmgr" executable with accompanying "kpsewhich" executable on PATH'
+ )
+ which_kpsewhich_path = Path(which_kpsewhich)
+ which_kpsewhich_resolved = which_kpsewhich_path.resolve()
+ if not texlive_bin_path == which_kpsewhich_resolved.parent:
+ sys.exit(' '.join([
+ '"tlmgr" executable from PATH resolved to "{}" '.format(which_tlmgr_resolved.as_posix()),
+ 'while "kpsewhich" resolved to "{}";'.format(which_kpsewhich_resolved.as_posix()),
+ '"tlmgr" and "kpsewhich" should be in the same location',
+ ]))
+ if not which_kpsewhich_resolved.name.lower().endswith('.exe'):
+ sys.exit(' '.join([
+ 'Executable "kpsewhich" resolved to "{}",'.format(which_kpsewhich_resolved.as_posix()),
+ 'but *.exe is required',
+ ]))
+ else:
+ which_kpsewhich = shutil.which('kpsewhich', path=env_SELFAUTOLOC)
+ if not which_kpsewhich:
+ sys.exit(' '.join([
+ 'Environment variable SELFAUTOLOC has value "{}",'.format(env_SELFAUTOLOC),
+ 'but a "kpsewhich" executable was not found at that location',
+ ]))
+ which_kpsewhich_path = Path(which_kpsewhich)
+ which_kpsewhich_resolved = which_kpsewhich_path.resolve()
+ if not is_permitted_executable_path(which_kpsewhich_path, which_kpsewhich_resolved):
+ # As in the latexrestricted case, this doesn't initially check for
+ # the TeX Live scenario where `TEXMFOUTPUT` is set in a
+ # `texmf.cnf` config file to a location that includes the
+ # `kpsewhich` executable. There isn't a good way to get the value
+ # of `TEXMFOUTPUT` without running `kpsewhich` in that case.
+ sys.exit(
+ 'Executable "kpsewhich" is located under the current directory, TEXMFOUTPUT, or '
+ 'TEXMF_OUTPUT_DIRECTORY, or one of these locations is under the same directory as the executable'
+ )
+ kpsewhich_cmd = [which_kpsewhich_resolved.as_posix(), '--var-value', 'TEXMFOUTPUT']
+ try:
+ kpsewhich_proc = subprocess.run(kpsewhich_cmd, shell=False, capture_output=True)
+ except PermissionError:
+ sys.exit('Insufficient permission to run "{}"'.format(which_kpsewhich_resolved.as_posix()))
+ kpsewhich_TEXMFOUTPUT = kpsewhich_proc.stdout.strip().decode(sys.stdout.encoding) or None
+ if kpsewhich_TEXMFOUTPUT:
+ kpsewhich_TEXMFOUTPUT_path = Path(kpsewhich_TEXMFOUTPUT)
+ prohibited_path_roots.add(kpsewhich_TEXMFOUTPUT_path)
+ prohibited_path_roots.add(kpsewhich_TEXMFOUTPUT_path.resolve())
+ if not is_permitted_executable_path(which_kpsewhich_path, which_kpsewhich_resolved):
+ # It is now possible to check for the TeX Live scenario where
+ # `TEXMFOUTPUT` is set in a `texmf.cnf` config file to a location
+ # that includes the `kpsewhich` executable. Giving an error
+ # message after already running `kpsewhich` isn't ideal, but there
+ # isn't a good alternative. As in the latexrestricted case, the
+ # impact on overall security is negligible because an unsafe value
+ # of `TEXMFOUTPUT` means that all TeX-related executables are
+ # potentially compromised.
+ sys.exit(
+ 'Executable "kpsewhich" is located under the current directory, TEXMFOUTPUT, or '
+ 'TEXMF_OUTPUT_DIRECTORY, or one of these locations is under the same directory as the executable'
+ )
@@ -232,7 +240,7 @@ if not env_TEXMFOUTPUT and env_SELFAUTOLOC and (not env_TEXSYSTEM or env_TEXSYST
# relaunch this script with that Python version in a subprocess.
if sys.version_info[:2] < (3, 8):
for minor_version in range(13, 7, -1):
- if platform.system() == 'Windows':
+ if sys.platform == 'win32':
# Batch files must be prohibited:
# https://docs.python.org/3/library/subprocess.html#security-considerations
which_python = shutil.which('python3.{}.exe'.format(minor_version))
@@ -241,7 +249,7 @@ if sys.version_info[:2] < (3, 8):
if which_python:
which_python_path = Path(which_python)
which_python_resolved = which_python_path.resolve()
- if platform.system() == 'Windows' and not which_python_resolved.name.lower().endswith('.exe'):
+ if sys.platform == 'win32' and not which_python_resolved.name.lower().endswith('.exe'):
continue
if is_permitted_executable_path(which_python_path, which_python_resolved):
python_cmd = [which_python_resolved.as_posix(), __file__] + sys.argv[1:]
@@ -282,7 +290,7 @@ for wheel_path in wheel_paths:
# endless recursion of subprocesses in the event that a `latexminted`
# executable *inside* a TeX installation somehow manages to pass the tests for
# an executable *outside* a TeX installation.
-if platform.system() == 'Windows' and not os.getenv('LATEXMINTED_SUBPROCESS'):
+if sys.platform == 'win32' and not os.getenv('LATEXMINTED_SUBPROCESS'):
os.environ['LATEXMINTED_SUBPROCESS'] = '1'
fallback_path_search = True
if env_SELFAUTOLOC:
diff --git a/macros/latex/contrib/minted/latexrestricted-0.4.0-py3-none-any.whl b/macros/latex/contrib/minted/latexrestricted-0.4.0-py3-none-any.whl
deleted file mode 100644
index 79b09d23ee..0000000000
--- a/macros/latex/contrib/minted/latexrestricted-0.4.0-py3-none-any.whl
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/minted/latexrestricted-0.6.0-py3-none-any.whl b/macros/latex/contrib/minted/latexrestricted-0.6.0-py3-none-any.whl
new file mode 100644
index 0000000000..ed50a78eb7
--- /dev/null
+++ b/macros/latex/contrib/minted/latexrestricted-0.6.0-py3-none-any.whl
Binary files differ
diff --git a/macros/latex/contrib/minted/minted.dtx b/macros/latex/contrib/minted/minted.dtx
index a8f9b33952..32091634ed 100644
--- a/macros/latex/contrib/minted/minted.dtx
+++ b/macros/latex/contrib/minted/minted.dtx
@@ -27,7 +27,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{minted}
%<*package>
- [2024/10/07 v3.1.2 Yet another Pygments shim for LaTeX]
+ [2024/10/29 v3.2.0 Yet another Pygments shim for LaTeX]
%</package>
%<*driver>
\documentclass{ltxdoc}
@@ -1192,9 +1192,25 @@
% \endgroup
%
% \textbf{Note that when math is used inside escapes, any active characters beyond those that are normally active in verbatim can cause problems.} Any package that relies on special active characters in math mode (for example, \texpkg{icomma}) will produce errors along the lines of ``\texttt{TeX capacity exceeded}'' and ``\texttt{\string\leavevmode \string\kern \string\z@}''. This may be fixed by modifying \texttt{\string\@noligs}, as described at \url{https://tex.stackexchange.com/questions/223876}.
+%
+%
+% \item[extrakeywords (string) (\meta{none})]\vspace{-1.2\baselineskip}
+% \item[extrakeywordsconstant (string) (\meta{none})]\vspace{-1.2\baselineskip}
+% \item[extrakeywordsdeclaration (string) (\meta{none})]\vspace{-1.2\baselineskip}
+% \item[extrakeywordsnamespace (string) (\meta{none})]\vspace{-1.2\baselineskip}
+% \item[extrakeywordspseudo (string) (\meta{none})]\vspace{-1.2\baselineskip}
+% \item[extrakeywordsreserved (string) (\meta{none})]\vspace{-1.2\baselineskip}
+% \item[extrakeywordstype (string) (\meta{none})]
+% Extra keywords for the current lexer. See the \href{https://pygments.org/docs/tokens/#keyword-tokens}{Pygments documentation} for details about the different keyword classes.
+%
+% Values must be lists of extra keywords, either comma-delimited or space-delimited.
+%
+%
% \item[firstline (integer) (1)]
% The first line to be shown.
% All lines before that line are ignored and do not appear in the output.
+%
+%
% \item[firstnumber (auto \| last \| integer) (auto = 1)]
% Line number of the first line.
%
@@ -1657,8 +1673,8 @@
% \begin{macrocode}
\RequirePackage{catchfile}
\RequirePackage{etoolbox}
-\RequirePackage{fvextra}[2024/09/05]
-\RequirePackage{latex2pydata}[2024/05/16]
+\RequirePackage{fvextra}[2024/10/16]
+\RequirePackage{latex2pydata}[2024/10/16]
\RequirePackage{pdftexcmds}
\RequirePackage{pgfkeys}
\RequirePackage{pgfopts}
@@ -2053,7 +2069,7 @@
%
% |\minted@highlightmode@init| is invoked within |\minted@detectconfig| if the Python executable is available and enabled. For the |fastfirst| case, |\minted@highlightmode@init| requires the |\minted@cachepath| that is set within |\minted@detectconfig|.
%
-% |\minted@fasthighlightmode@checkend| is invoked |\AfterEndDocument| with |\minted@clean|; the |\AtEndDocument| is created with the definition of |\minted@clean| so that everything is in the correct order.
+% |\minted@fasthighlightmode@checkend| is invoked at the end of the document within |\minted@clean|.
% \begin{macrocode}
\newbool{minted@fasthighlightmode}
\newbool{minted@fasthighlightmode@open}
@@ -2356,7 +2372,7 @@
% \begin{macro}{minted@tmpcodebufferlength}
% Length of buffer in which code to be highlighted is stored.
% \begin{macrocode}
-\newcounter{minted@tmpcodebufferlength}
+\def\minted@tmpcodebufferlength{0}
% \end{macrocode}
% \end{macro}
%
@@ -2382,10 +2398,20 @@
% \begin{macro}{\minted@ShellEscapeMaybeMessages,\minted@ShellEscapeNoMessages}
% \begin{macrocode}
\def\minted@ShellEscapeMaybeMessages#1{%
+ \ifbool{minted@debug}%
+ {\immediate\typeout{%
+ minted debug: shell escape at
+ \ifx\CurrentFile\@empty\else\CurrentFile\space\fi line \the\inputlineno: #1}}%
+ {}%
\let\minted@exec@warning\relax
\let\minted@exec@error\relax
\ifbool{minted@canexec}{\ShellEscape{#1}\minted@inputexecmessages}{}}
\def\minted@ShellEscapeNoMessages#1{%
+ \ifbool{minted@debug}%
+ {\immediate\typeout{%
+ minted debug: shell escape at
+ \ifx\CurrentFile\@empty\else\CurrentFile\space\fi line \the\inputlineno: #1}}%
+ {}%
\ifbool{minted@canexec}{\ShellEscape{#1}}{}}
% \end{macrocode}
% \end{macro}
@@ -2536,18 +2562,27 @@
\minted@ensureatletter{%
\InputIfFileExists{\MintedConfigFilename}{}{}}%
\ifx\minted@executable@version\relax
- \expandafter\minted@detectconfig@noexecutable
+ \expandafter\minted@detectconfig@noexecutableorerrlog
\else
\expandafter\minted@detectconfig@ii
\fi}
-\def\minted@detectconfig@noexecutable{%
+\def\minted@detectconfig@noexecutableorerrlog{%
\global\boolfalse{minted@canexec}%
\ifnum\csname c_sys_shell_escape_int\endcsname=1\relax
- \minted@error{minted v3+ executable is not installed or is not added to PATH}%
+ \expandafter\@firstofttwo
\else
- \minted@error{minted v3+ executable is not installed, is not added to PATH,
- or is not permitted with restricted shell escape}%
- \fi}
+ \expandafter\@secondoftwo
+ \fi
+ {\IfFileExists{\MintedErrlogFilename}%
+ {\minted@error{minted v3+ executable is not installed or is not added to PATH,
+ or there was an unexpected error (check "\MintedErrlogFilename")}}%
+ {\minted@error{minted v3+ executable is not installed or is not added to PATH}}}%
+ {\IfFileExists{\MintedErrlogFilename}%
+ {\minted@error{minted v3+ executable is not installed, is not added to PATH,
+ or is not permitted with restricted shell escape;
+ or there was an unexpected error (check "\MintedErrlogFilename")}}%
+ {\minted@error{minted v3+ executable is not installed, is not added to PATH,
+ or is not permitted with restricted shell escape}}}}
\def\minted@detectconfig@ii{%
\ifx\minted@timestamp\minted@config@timestamp
\expandafter\minted@detectconfig@iii
@@ -2562,7 +2597,7 @@
upgrade to TeX distribution that supports \detokenize{TEXMF_OUTPUT_DIRECTORY}
or set environment variable \detokenize{TEXMF_OUTPUT_DIRECTORY} manually)}%
\else
- \expandafter\minted@detectconfig@noexecutable
+ \expandafter\minted@detectconfig@noexecutableorerrlog
\fi}
\def\minted@detectconfig@iii{%
\minted@exec@cleanconfig
@@ -3157,6 +3192,13 @@
\mintedpgfkeyscreate{py}{
autogobble<true>=false,
encoding=utf8,
+ extrakeywords=,
+ extrakeywordsconstant=,
+ extrakeywordsdeclaration=,
+ extrakeywordsnamespace=,
+ extrakeywordspseudo=,
+ extrakeywordsreserved=,
+ extrakeywordstype=,
funcnamehighlighting<true>=true,
gobble=0,
gobblefilter=0,
@@ -3234,19 +3276,63 @@
%
%
%
+% \subsubsection{State}
+%
+% \begin{macro}{minted@didcreatefiles}
+% Track whether any style definitions or highlighted code files were generated, so that file cleanup can be optimized. This is set |true| whenever there is an attempt to create style definitions or highlighted code files; even if the attempt fails, there will typically be leftover temp files.
+% \begin{macrocode}
+\newbool{minted@didcreatefiles}
+% \end{macrocode}
+% \end{macro}
+%
+%
% \subsubsection{Cache management}
%
%
-% \begin{macro}{\minted@addcachefilename,\minted@cachefile<n>}
+% \begin{macro}{\minted@addcachefilename,\minted@numcachefiles,\minted@cachefile<n>,\minted@cachechecksum,\mintedoldcachechecksum}
% Track cache files that are used, so that unused files can be removed.
+%
+% The number of files is stored in a global macro rather than a counter to avoid counter scope issues. For example, |\includeonly| tracks and resets counters.
+%
+% Also track the overall state of the cache using a sum of MD5 hashes of cache file names combined with the number of cache files. When no new cache files are created, this is used in determining whether the cache should be cleaned.
% \begin{macrocode}
-\newcounter{minted@numcachefiles}
+\def\minted@numcachefiles{0}
\def\minted@addcachefilename#1{%
\ifbool{minted@canexec}%
- {\stepcounter{minted@numcachefiles}%
- \expandafter
- \xdef\csname minted@cachefile\arabic{minted@numcachefiles}\endcsname{#1}}%
+ {\xdef\minted@numcachefiles{\the\numexpr\minted@numcachefiles+1\relax}%
+ \expandafter\xdef\csname minted@cachefile\minted@numcachefiles\endcsname{#1}%
+ \edef\minted@tmp{\pdf@mdfivesum{#1}}%
+ \expandafter\minted@cachechecksum@update\expandafter{\minted@tmp}}%
{}}
+\let\minted@cachechecksum\relax
+\ifcsname mintedoldcachechecksum\endcsname
+\else
+ \let\mintedoldcachechecksum\relax
+\fi
+\edef\minted@cachechecksum@files{\pdf@mdfivesum{}}
+\expandafter\let\expandafter\minted@intfromhex\csname int_from_hex:n\endcsname
+\expandafter\let\expandafter\minted@inttoHex\csname int_to_Hex:n\endcsname
+\expandafter\let\expandafter\minted@intmod\csname int_mod:nn\endcsname
+\def\minted@intmodsixteen#1{\minted@intmod{#1}{16}}
+\def\minted@cachechecksum@update#1{%
+ \xdef\minted@cachechecksum@files{%
+ \expandafter\minted@cachechecksum@files@calc
+ \minted@cachechecksum@files\FV@Sentinel#1\FV@Sentinel}%
+ \xdef\minted@cachechecksum{%
+ \detokenize\expandafter{\minted@cachechecksum@files}%
+ \detokenize{:}%
+ \detokenize\expandafter{\minted@numcachefiles}}}
+\def\minted@cachechecksum@files@calc#1#2\FV@Sentinel#3#4\FV@Sentinel{%
+ \minted@inttoHex{%
+ \the\numexpr
+ \minted@intmodsixteen{\minted@intfromhex{#1}+\minted@intfromhex{#3}}%
+ \relax}%
+ \if\relax\detokenize{#2}\relax
+ \expandafter\@gobble
+ \else
+ \expandafter\@firstofone
+ \fi
+ {\minted@cachechecksum@files@calc#2\FV@Sentinel#4\FV@Sentinel}}
% \end{macrocode}
% \end{macro}
%
@@ -3256,26 +3342,35 @@
%
% Only create a |.data.minted| file if there is a cache list to save. Otherwise, no file is needed.
%
-% Runs |\AfterEndDocument| so that all typesetting is complete, and thus the cache list is complete. |\minted@fasthighlightmode@checkend| is placed within the same |\AfterEndDocument| to guarantee correct ordering.
+% Runs within the hook |enddocument/afterlastpage| so that all typesetting is complete, and thus the cache list is complete. |\minted@fasthighlightmode@checkend| is included in the hook to guarantee correct ordering.
%
% \begin{macrocode}
\def\minted@clean{%
\ifbool{minted@canexec}%
- {\ifbool{minted@diddetectconfig}{\minted@clean@i}{}}%
+ {\ifbool{minted@didcreatefiles}%
+ {\minted@clean@i}%
+ {\ifbool{minted@fasthighlightmode}%
+ {\minted@clean@i}%
+ {\ifbool{minted@cache}%
+ {\ifx\minted@cachechecksum\mintedoldcachechecksum
+ \else
+ \expandafter\minted@clean@i
+ \fi}%
+ {}}}%
+ \ifbool{minted@fasthighlightmode}{}{\global\boolfalse{minted@canexec}}}%
{}}
\def\minted@clean@i{%
- \ifnum\value{minted@numcachefiles}>0\relax
+ \ifnum\minted@numcachefiles>0\relax
\expandafter\minted@savecachelist
\fi
\ifbool{minted@fasthighlightmode}%
{}%
- {\ifnum\value{minted@numcachefiles}>0\relax
+ {\ifnum\minted@numcachefiles>0\relax
\expandafter\minted@exec@clean
\else
\expandafter\minted@exec@cleantemp
- \fi
- \global\boolfalse{minted@canexec}}%
- \setcounter{minted@numcachefiles}{0}}
+ \fi}%
+ \gdef\minted@numcachefiles{0}}
\def\minted@savecachelist{%
\pydatasetfilename{\MintedDataFilename}%
\minted@fasthighlightmode@checkstart
@@ -3288,7 +3383,7 @@
\pydatawritemlvaluestart
\pydatawritemlvalueline{[}%
\setcounter{minted@tmpcnt}{1}%
- \loop\unless\ifnum\value{minted@tmpcnt}>\value{minted@numcachefiles}\relax
+ \loop\unless\ifnum\value{minted@tmpcnt}>\minted@numcachefiles\relax
\expandafter\minted@savecachelist@writecachefile\expandafter{%
\csname minted@cachefile\arabic{minted@tmpcnt}\endcsname}%
\expandafter\global\expandafter
@@ -3305,9 +3400,13 @@
\gdef\minted@savecachelist@writecachefile#1{%
\expandafter\pydatawritemlvalueline\expandafter{\expandafter"#1",}}
\endgroup
-\AfterEndDocument{%
+\AddToHook{enddocument/afterlastpage}{%
\minted@clean
- \minted@fasthighlightmode@checkend}
+ \minted@fasthighlightmode@checkend
+ \ifbool{minted@cache}%
+ {\immediate\write\@auxout{%
+ \xdef\string\mintedoldcachechecksum{\string\detokenize{\minted@cachechecksum}}}}%
+ {}}
% \end{macrocode}
% \end{macro}
%
@@ -3483,6 +3582,7 @@
{\pydataclosefilename{\MintedDataFilename}%
\begingroup
\minted@exec@styledef
+ \global\booltrue{minted@didcreatefiles}%
\ifx\minted@exec@warning\relax
\else
\expandafter\minted@exec@warning
@@ -3642,7 +3742,7 @@
\pydatabufferkey{code}%
\pydatabuffermlvaluestart
\setcounter{minted@tmpcnt}{1}%
- \loop\unless\ifnum\value{minted@tmpcnt}>\value{minted@tmpcodebufferlength}\relax
+ \loop\unless\ifnum\value{minted@tmpcnt}>\minted@tmpcodebufferlength\relax
\expandafter\let\expandafter
\minted@tmp\csname minted@tmpcodebufferline\arabic{minted@tmpcnt}\endcsname
\expandafter\pydatabuffermlvalueline\expandafter{\minted@tmp}%
@@ -3728,6 +3828,7 @@
{\pydataclosefilename{\MintedDataFilename}%
\begingroup
\minted@exec@highlight
+ \global\booltrue{minted@didcreatefiles}%
\IfFileExists{\minted@highlightfilepath}%
{\ifx\minted@exec@warning\relax
\else
@@ -3825,25 +3926,23 @@
\endgroup
\def\minted@iffasthighlightmode@buffertempfile@iv{%
\begingroup
- \setcounter{minted@tmpcodebufferlength}{0}%
+ \gdef\minted@tmpcodebufferlength{0}%
\openin\minted@intempfile=\minted@inputfilepath
\endlinechar=-1%
\let\do\@makeother\FVExtraDoSpecials
\loop\unless\ifeof\minted@intempfile
\read\minted@intempfile to\minted@intempfileline
- \stepcounter{minted@tmpcodebufferlength}%
+ \xdef\minted@tmpcodebufferlength{\the\numexpr\minted@tmpcodebufferlength+1\relax}%
\expandafter\global\expandafter\let\csname
- minted@tmpcodebufferline\arabic{minted@tmpcodebufferlength}%
+ minted@tmpcodebufferline\minted@tmpcodebufferlength
\endcsname\minted@intempfileline
\repeat
\closein\minted@intempfile
\expandafter\ifx\csname
- minted@tmpcodebufferline\arabic{minted@tmpcodebufferlength}%
- \endcsname\@empty
+ minted@tmpcodebufferline\minted@tmpcodebufferlength\endcsname\@empty
\expandafter\global\expandafter\let\csname
- minted@tmpcodebufferline\arabic{minted@tmpcodebufferlength}%
- \endcsname\minted@undefined
- \addtocounter{minted@tmpcodebufferlength}{-1}%
+ minted@tmpcodebufferline\minted@tmpcodebufferlength\endcsname\minted@undefined
+ \xdef\minted@tmpcodebufferlength{\the\numexpr\minted@tmpcodebufferlength-1\relax}%
\fi
\endgroup
\edef\minted@inputfilemdfivesum@check{\pdf@filemdfivesum{\minted@inputfilepath}}%
@@ -3853,7 +3952,7 @@
\expandafter\@firstofone
\fi
{\VerbatimClearBuffer[buffername=minted@tmpcodebuffer]}%
- \ifnum\value{minted@tmpcodebufferlength}>0\relax
+ \ifnum\minted@tmpcodebufferlength>0\relax
\expandafter\@firstofone
\else
\expandafter\@gobble
@@ -3863,7 +3962,7 @@
\pydatabufferkey{code}%
\pydatabuffermlvaluestart
\setcounter{minted@tmpcnt}{1}%
- \loop\unless\ifnum\value{minted@tmpcnt}>\value{minted@tmpcodebufferlength}\relax
+ \loop\unless\ifnum\value{minted@tmpcnt}>\minted@tmpcodebufferlength\relax
\expandafter\let\expandafter
\minted@tmp\csname minted@tmpcodebufferline\arabic{minted@tmpcnt}\endcsname
\expandafter\pydatabuffermlvalueline\expandafter{\minted@tmp}%
@@ -3943,10 +4042,10 @@
\FVExtraRetokenizeVArg{\RobustMintInlineProcess@highlight@i}{\FV@CatCodes}}{#3}}
\def\RobustMintInlineProcess@highlight@i#1{%
\expandafter\def\csname minted@tmpcodebufferline1\endcsname{#1}%
- \setcounter{minted@tmpcodebufferlength}{1}%
+ \gdef\minted@tmpcodebufferlength{1}%
\let\minted@highlight@fallback\RobustMintInlineProcess@highlight@fallback
\minted@highlight
- \setcounter{minted@tmpcodebufferlength}{0}%
+ \gdef\minted@tmpcodebufferlength{0}%
\endgroup}
\def\RobustMintInlineProcess@highlight@fallback{%
\minted@useadditionalfvoptsnopy
@@ -4002,10 +4101,10 @@
\FVExtraRetokenizeVArg{\RobustMintProcess@highlight@i}{\FV@CatCodes}}{#3}}
\def\RobustMintProcess@highlight@i#1{%
\expandafter\def\csname minted@tmpcodebufferline1\endcsname{#1}%
- \setcounter{minted@tmpcodebufferlength}{1}%
+ \gdef\minted@tmpcodebufferlength{1}%
\let\minted@highlight@fallback\RobustMintProcess@highlight@fallback
\minted@highlight
- \setcounter{minted@tmpcodebufferlength}{0}%
+ \gdef\minted@tmpcodebufferlength{0}%
\endgroup}
\def\RobustMintProcess@highlight@fallback{%
\minted@useadditionalfvoptsnopy
@@ -4024,10 +4123,10 @@
\FVExtraRetokenizeVArg{\RobustMintProcess@verbatim@i}{\FV@CatCodes}}{#3}}
\def\RobustMintProcess@verbatim@i#1{%
\expandafter\def\csname minted@tmpcodebufferline1\endcsname{#1}%
- \setcounter{minted@tmpcodebufferlength}{1}%
+ \gdef\minted@tmpcodebufferlength{1}%
\minted@codewrapper{%
\VerbatimInsertBuffer[buffername=minted@tmpcodebuffer,insertenvname=\minted@envname]}%
- \setcounter{minted@tmpcodebufferlength}{0}%
+ \gdef\minted@tmpcodebufferlength{0}%
\endgroup}
\ifbool{minted@placeholder}%
{\let\RobustMintProcess\RobustMintProcess@placeholder}%
diff --git a/macros/latex/contrib/minted/minted.pdf b/macros/latex/contrib/minted/minted.pdf
index e620517ae0..0fc12e6135 100644
--- a/macros/latex/contrib/minted/minted.pdf
+++ b/macros/latex/contrib/minted/minted.pdf
Binary files differ
diff --git a/macros/latex/contrib/spbmark/README.md b/macros/latex/contrib/spbmark/README.md
index e951e8dc9c..6155a4f2af 100644
--- a/macros/latex/contrib/spbmark/README.md
+++ b/macros/latex/contrib/spbmark/README.md
@@ -1,5 +1,5 @@
# The `spbmark` package
-Customize superscripts and subscripts (v1.46r)
+Customize superscripts and subscripts (v1.46s)
## Abstract
`spbmark` provides three commands `\super`, `\sub` and `\supersub` to improve the layout of superscripts and subscripts which can be adjusted the relative position and format, and can be used in text and math mode.
diff --git a/macros/latex/contrib/spbmark/spbmark.pdf b/macros/latex/contrib/spbmark/spbmark.pdf
index bf4be18b29..9b5004aecc 100644
--- a/macros/latex/contrib/spbmark/spbmark.pdf
+++ b/macros/latex/contrib/spbmark/spbmark.pdf
Binary files differ
diff --git a/macros/latex/contrib/spbmark/spbmark.sty b/macros/latex/contrib/spbmark/spbmark.sty
index 900449bead..7c29aa7b4a 100644
--- a/macros/latex/contrib/spbmark/spbmark.sty
+++ b/macros/latex/contrib/spbmark/spbmark.sty
@@ -9,7 +9,7 @@
% https://creativecommons.org/licenses/by/4.0/legalcode
\NeedsTeXFormat{LaTeX2e}[2018/12/31]
\RequirePackage{xparse}
-\ProvidesExplPackage{spbmark}{2024/10/29}{1.46r}
+\ProvidesExplPackage{spbmark}{2024/10/30}{1.46s}
{Customize superscripts and subscripts}
\cs_generate_variant:Nn \box_set_ht:Nn { cv }
@@ -339,58 +339,62 @@
\NewHookWithArguments{spb/super/after}{2}
\NewHookWithArguments{spb/sub/before}{2}
\NewHookWithArguments{spb/sub/after}{2}
-\cs_new:Npn \spb_math_print_store_i:nn #1#2
+\NewHookWithArguments{spb/super*/before}{2}
+\NewHookWithArguments{spb/super*/after}{2}
+\NewHookWithArguments{spb/sub*/before}{2}
+\NewHookWithArguments{spb/sub*/after}{2}
+\NewHookWithArguments{cmd+/super/after}{2}
+\NewHookWithArguments{cmd+/sub/after}{2}
+\cs_new:Npn \spb_math_print_store_i:nnnn #1#2#3#4
{
\hbox_gset:cn { g__#1_i_inner_box }
{
- \ensuremath
- {
+ #3{
\UseHookWithArguments{spb/#1/before}{2}{#1}{#2}
- \use:c { spb@math@#1@core }
- { \tl_use:c { l__spb_#1_cmd_i_tl }{#2} }
+ \use:c {#4} { \tl_use:c { l__spb_#1_cmd_i_tl }{#2} }
\UseHookWithArguments{spb/#1/after}{2}{#1}{#2}
}
}
\dim_gset:Nv \rlastwd { l__spb_box_#1_wd_i_tl }
}
+\cs_new:Npn \spb_math_print_store_i:nn #1#2
+ {
+ \spb_math_print_store_i:nnnn
+ {#1} {#2} { \ensuremath } { spb@math@#1@core }
+ }
\cs_new:Npn \spb_text_print_store_i:nn #1#2
{
- \hbox_gset:cn { g__#1_i_inner_box }
- {
- \UseHookWithArguments{spb/#1/before}{2}{#1}{#2}
- \use:c { spb@text#1script@core }
- { \tl_use:c { l__spb_#1_cmd_i_tl }{#2} }
- \UseHookWithArguments{spb/#1/after}{2}{#1}{#2}
- }
- \dim_gset:Nv \rlastwd { l__spb_box_#1_wd_i_tl }
+ \spb_math_print_store_i:nnnn
+ {#1} {#2} { \use:n } { spb@text#1script@core }
}
-\cs_new:Npn \spb_math_print_store_ii:nn #1#2
+\cs_new:Npn \spb_math_print_store_ii:nnnnn #1#2#3#4#5
{
\hbox_gset:Nn \g__super_ii_box
{
- \ensuremath
- {
- \UseHookWithArguments{spb/super/before}{2}{super}{#1}
- \spb@math@super@core{\l__spb_super_cmd_ii_tl{#1}}
- \UseHookWithArguments{spb/super/after}{2}{super}{#1}
+ #3{
+ \UseHookWithArguments{spb/super*/before}{2}{super}{#1}
+ #4{\l__spb_super_cmd_ii_tl{#1}}
+ \UseHookWithArguments{spb/super*/after}{2}{super}{#1}
}
- }
+ }
\hbox_gset:Nn \g__sub_ii_box
{
- \ensuremath
- {
- \UseHookWithArguments{spb/sub/before}{2}{sub}{#2}
- \spb@math@sub@core{\l__spb_sub_cmd_ii_tl{#2}}
- \UseHookWithArguments{spb/sub/after}{2}{sub}{#2}
+ #3{
+ \UseHookWithArguments{spb/sub*/before}{2}{sub}{#2}
+ #5{\l__spb_sub_cmd_ii_tl{#2}}
+ \UseHookWithArguments{spb/sub*/after}{2}{sub}{#2}
}
}
}
+\cs_new:Npn \spb_math_print_store_ii:nn #1#2
+ {
+ \spb_math_print_store_ii:nnnnn {#1} {#2}
+ { \ensuremath } { \spb@math@super@core } { \spb@math@sub@core }
+ }
\cs_new:Npn \spb_text_print_store_ii:nn #1#2
{
- \hbox_gset:Nn \g__super_ii_box
- { \spb@textsuperscript@core{\l__spb_super_cmd_ii_tl{#1}} }
- \hbox_gset:Nn \g__sub_ii_box
- { \spb@textsubscript@core{\l__spb_sub_cmd_ii_tl{#2}} }
+ \spb_math_print_store_ii:nnnnn {#1} {#2}
+ { \use:n } { \spb@textsuperscript@core } { \spb@textsubscript@core }
}
\cs_set_eq:NN \spbifmath \use_ii:nn
\cs_new:Npn \spb@ifmathtrue { \cs_set_eq:NN \spbifmath \use_i:nn }
@@ -494,6 +498,7 @@
\exp_last_unbraced:Nx
\group_end:
{
+ \UseHookWithArguments{cmd+/#1/after}{2}{#1}{##4}
\exp_args:Nv \str_if_eq:nnT
{ l__spb_#1_thiswd_mode_tl } { auto }
{ \spb_clear_thiswd:n {#1} }
diff --git a/macros/latex/contrib/spbmark/spbmark.tex b/macros/latex/contrib/spbmark/spbmark.tex
index d40af1dd20..54e18b842a 100644
--- a/macros/latex/contrib/spbmark/spbmark.tex
+++ b/macros/latex/contrib/spbmark/spbmark.tex
@@ -8,8 +8,8 @@
\setcnltx
{
package = spbmark,
- version = v1.46r,
- date = 2024/10/29,
+ version = v1.46s,
+ date = 2024/10/30,
authors = Qu Yi,
title = \spbmark{} package,
info = Customize superscripts and subscripts,
@@ -259,13 +259,25 @@ The following list of keys control the format of superscripts \emph{and} subscri
\command{AddToHookWithArguments}[\Marg{spb/super/after}\oarg{label}\marg{code}]\nonl
\command{AddToHookWithArguments}[\Marg{spb/sub/before}\oarg{label}\marg{code}]\nonl
\command{AddToHookWithArguments}[\Marg{spb/sub/after}\oarg{label}\marg{code}]\newtag{New\\v1.46r}%
- \pkg*{spbmark} gives hooks to markers with arguments in front and back positions, this feature requires support in the \hologo{LaTeX} kernel after \textbf{2023/06/01}. Argument \code{\#1} in the \meta{code} represents \code{super} or \code{sub}, and argument \code{\#2} represents the marker content itself.
+ \pkg*{spbmark} provides hooks to markers of \cs{super} and \cs{sub} with arguments in front and back positions, this feature requires support in the \hologo{LaTeX} kernel after \textbf{2023/06/01}. Argument \code{\#1} in the \meta{code} represents \code{super} or \code{sub}, and argument \code{\#2} represents the marker content itself.
\begin{demohigh}
\AddToHookWithArguments{spb/super/before}{\spbifmath{(#1-#2)}{[#1-#2]}}
$\super{a}$\super{b}
\RemoveFromHook{spb/super/before}
\end{demohigh}
\end{commands}
+\begin{commands}\setlength{\itemsep}{0pt}
+ \command{AddToHookWithArguments}[\Marg{spb/super*/before}\oarg{label}\marg{code}]\nonl
+ \command{AddToHookWithArguments}[\Marg{spb/super*/after}\oarg{label}\marg{code}]\nonl
+ \command{AddToHookWithArguments}[\Marg{spb/sub*/before}\oarg{label}\marg{code}]\nonl
+ \command{AddToHookWithArguments}[\Marg{spb/sub*/after}\oarg{label}\marg{code}]
+ Hook name with an asterisk indicates that this is the hook for the marker in the \cs{supersub} command.
+\end{commands}
+\begin{commands}\setlength{\itemsep}{0pt}
+ \command{AddToHookWithArguments}[\Marg{cmd+/super/after}\oarg{label}\marg{code}]\nonl
+ \command{AddToHookWithArguments}[\Marg{cmd+/sub/after}\oarg{label}\marg{code}]
+ The above hooks are located in the marker horizontal boxes, and these two hooks are located at the end of the group outside of the \cs{super} and \cs{sub} commands. Due to the addition of the peek command at the end of marker commands, using such as \code{cmd/super/after} hook directly would result in a peek error.
+\end{commands}
\section{Examples of use}
Here is a list of the three commands, please pay attention to the usage of optional parameter. Note when the horizontal move is negative, the starting point is at the right end of the mark.
diff --git a/macros/latex/contrib/tugboat/NEWS b/macros/latex/contrib/tugboat/NEWS
index ffdc57ee9e..773c540090 100644
--- a/macros/latex/contrib/tugboat/NEWS
+++ b/macros/latex/contrib/tugboat/NEWS
@@ -1,7 +1,15 @@
-$Id: NEWS 608 2024-10-26 22:27:11Z karl $
+$Id: NEWS 609 2024-10-29 21:17:26Z karl $
This file records noteworthy changes. This file is public domain.
-----------------
+2.34 (2024-10-29):
+ltugboat.cls:
+- keep the new forced space on toc lines within tagging-aware code,
+ so it doesn't disappear.
+- elide spurious space for nonumber subsubsections.
+(Thanks to Ulrike Fischer for reports and fixes.)
+
+-----------------
2.33 (2024-10-26):
ltugboat.cls:
- use \hfil instead of \hss in toc, to avoid silently overfull entries.
diff --git a/macros/latex/contrib/tugboat/ltubguid.pdf b/macros/latex/contrib/tugboat/ltubguid.pdf
index 0ca5738309..d6c8a9ad01 100644
--- a/macros/latex/contrib/tugboat/ltubguid.pdf
+++ b/macros/latex/contrib/tugboat/ltubguid.pdf
Binary files differ
diff --git a/macros/latex/contrib/tugboat/tugboat-code.pdf b/macros/latex/contrib/tugboat/tugboat-code.pdf
index 6d07a1fa04..713a397a0f 100644
--- a/macros/latex/contrib/tugboat/tugboat-code.pdf
+++ b/macros/latex/contrib/tugboat/tugboat-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/tugboat/tugboat.dtx b/macros/latex/contrib/tugboat/tugboat.dtx
index 833f01adae..9fa06ff0d5 100644
--- a/macros/latex/contrib/tugboat/tugboat.dtx
+++ b/macros/latex/contrib/tugboat/tugboat.dtx
@@ -1,5 +1,5 @@
% \iffalse (this is a meta-comment (so they say))
-% $Id: tugboat.dtx 608 2024-10-26 22:27:11Z karl $
+% $Id: tugboat.dtx 609 2024-10-29 21:17:26Z karl $
% tugboat.dtx - main source for LaTeX TUGboat classes.
%
% Copyright 1994-2024 TeX Users Group.
@@ -28,7 +28,7 @@
%<ltugboatsty>\ProvidesPackage{ltugboat}
%<ltugprocsty>\ProvidesPackage{ltugproc}
%<ltugcomn> \ProvidesPackage{ltugcomn}
- [2024-10-26 v2.33
+ [2024-10-29 v2.34
%<ltugboatcls> TUGboat journal class%
%<ltugproccls> TUG conference proceedings class%
%<ltugboatsty|ltugprocsty> TUG compatibility package%
@@ -2758,7 +2758,7 @@
{\tubruninglue}
{\tubruninsecfmt}}}
%
- \def\subsubsection{\TB@nolimelabel\TB@startsection{
+ \def\subsubsection{\TB@nolimelabel\TB@startsection{%
{subsubsection}%
3%
\parindent
@@ -2864,15 +2864,17 @@
% don't worry if this cs is not defined, hence the \csname.
% If it doesn't exist, we just typeset #1 as text.
\csname contentsline@text@1@format\endcsname
- {#1}% number and title
+ {#1% number and title
+ \unskip % avoid extra space just in case
+ \csname pdffakespace\endcsname % fake space if pdftex
+ ~% ensure at least a word space between text and page number
+ }
%
\ifx\UseHookWithArguments\undefined\else % hook after number and text
\UseHookWithArguments{contentsline/text/after}{4}
{\toclevel@part}{#1}{#2}{\@contentsline@destination}%
\fi
- \nobreak
- \ % ensure there is at least a word space between text and page number
- \hfil
+ \nobreak\hfil
\nobreak
% page number
\hb@xt@\@pnumwidth{\hfil
diff --git a/macros/latex/contrib/xltabular/Changes b/macros/latex/contrib/xltabular/Changes
index 4863998012..7dc4c39726 100644
--- a/macros/latex/contrib/xltabular/Changes
+++ b/macros/latex/contrib/xltabular/Changes
@@ -1,3 +1,4 @@
+2.0g 2024/10/28 - prevent problematic behavior of longtable at page breaks
2.0e 2020/11/04 - insert a \par at the beginning of xltabular
2.0c 2020/03/20 - restore of original longtable more robust
2.0a 2018/12/16 - better hyperref support; example files
diff --git a/macros/latex/contrib/xltabular/xltabular-doc.pdf b/macros/latex/contrib/xltabular/xltabular-doc.pdf
index 31763a2549..395af9e19d 100644
--- a/macros/latex/contrib/xltabular/xltabular-doc.pdf
+++ b/macros/latex/contrib/xltabular/xltabular-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/xltabular/xltabular-doc.tex b/macros/latex/contrib/xltabular/xltabular-doc.tex
index 2ad9695797..f78ffc8e2c 100644
--- a/macros/latex/contrib/xltabular/xltabular-doc.tex
+++ b/macros/latex/contrib/xltabular/xltabular-doc.tex
@@ -1,4 +1,4 @@
-%% $Id: xltabular-doc.tex 598 2017-09-30 19:52:25Z herbert $
+%% $Id: xltabular-doc.tex 635 2017-10-24 18:22:59Z herbert $
%
\listfiles\setcounter{errorcontextlines}{100}
\documentclass[paper=a4,fontsize=11pt,DIV=13,parskip=half-,
@@ -35,6 +35,9 @@
%\nolig{oe}{o|e}
\usepackage{xltabular}
+
+%\specialLTpagebreak
+
\usepackage{fancyvrb}
\usepackage{blindtext}
\usepackage{dtk-logos} % for Wikipedia W
@@ -317,10 +320,122 @@ Klassen-Optionen\\
\end{xltabular}
+\section{Pagebreaks}
+
+\texttt{xltabular} is based on \texttt{longtable} which itself has sometimes a problem with the pagebreak.
+It may be possible, that you'll get a break between a section header and the following \texttt{longtable}/\texttt{xltabular}.
+Here is an example with \texttt{xltabular}:
+
+\section{Title above the tabular}
+
+\begin{xltabular}{\linewidth}{@{} >{\ttfamily}l >{\RaggedRight}X @{}}
+\caption{File endings (only for a demonstration \ldots)}\\
+\hline
+.ext & Beschreibung\\\hline
+\endfirsthead
+\multicolumn{2}{@{}l}{\ldots\ \small Fortsetzung}\\\hline
+.ext & Beschreibung\\\hline
+\endhead
+\hline
+\multicolumn{2}{r@{}}{\small Fortsetzung\ldots}\\
+\endfoot
+\hline
+\endlastfoot
+ aux & (auxiliary) Hilfsdatei, enthält Querverweise usw. \\
+ bbl & (bibliography) Hilfsdatei, enthält die Einträge für die Literatur\\
+ bib & (bibtex) enthält die Literaturdaten\\
+ blg & (bibliography log) enthält die Ausgaben eines Bib\TeX-Laufs\\
+ cfg & (config) Konfigurationsdatei\\
+ clo & (class options) Definitionen für die Dokumentenklasse und die entsprechenden
+ Klassen-Optionen\\
+ aux & (auxiliary) Hilfsdatei, enthält Querverweise usw. \\
+ bbl & (bibliography) Hilfsdatei, enthält die Einträge für die Literatur\\
+ bib & (bibtex) enthält die Literaturdaten\\
+ blg & (bibliography log) enthält die Ausgaben eines Bib\TeX-Laufs\\
+ cfg & (config) Konfigurationsdatei\\
+ clo & (class options) Definitionen für die Dokumentenklasse und die entsprechenden
+ Klassen-Optionen\\
+ aux & (auxiliary) Hilfsdatei, enthält Querverweise usw. \\
+ bbl & (bibliography) Hilfsdatei, enthält die Einträge für die Literatur\\
+ bib & (bibtex) enthält die Literaturdaten\\
+ blg & (bibliography log) enthält die Ausgaben eines Bib\TeX-Laufs\\
+ clo & (class options) Definitionen für die Dokumentenklasse und die entsprechenden
+ Klassen-Optionen\\
+% aux & (auxiliary) Hilfsdatei, enthält Querverweise usw. \\
+% bbl & (bibliography) Hilfsdatei, enthält die Einträge für die Literatur\\
+% bib & (bibtex) enthält die Literaturdaten\\
+ blg & (bibliography log) enthält die Ausgaben eines Bib\TeX-Laufs\\
+ cfg & (config) Konfigurationsdatei\\
+ clo & (class options) Definitionen für die Dokumentenklasse und die entsprechenden
+ Klassen-Optionen\\
+\end{xltabular}
+
+
+Package \texttt{xltabular} defines two macros which can be used to modify the behaviour of
+\texttt{longtable}/ \texttt{xltabular} for pagebreaks.
+
+\begin{verbatim}
+\newcommand*\normalLTpagebreak{...}
+\newcommand*\specialLTpagebreak{...}
+\end{verbatim}
+
+With \verb|\specialLTpagebreak| one can get another beaviour which prevents such unwanted pagebreak.
+With \verb|\normalLTpagebreak| you can set it back to the default behaviour. Here comes an example
+with the special behaviour by using \verb|\specialLTpagebreak|: \specialLTpagebreak
+
+
+
+\section{Title above the tabular}
+
+\begin{xltabular}{\linewidth}{@{} >{\ttfamily}l >{\RaggedRight}X @{}}
+\caption{File endings (only for a demonstration \ldots)}\\
+\hline
+.ext & Beschreibung\\\hline
+\endfirsthead
+\multicolumn{2}{@{}l}{\ldots\ \small Fortsetzung}\\\hline
+.ext & Beschreibung\\\hline
+\endhead
+\hline
+\multicolumn{2}{r@{}}{\small Fortsetzung\ldots}\\
+\endfoot
+\hline
+\endlastfoot
+ aux & (auxiliary) Hilfsdatei, enthält Querverweise usw. \\
+ bbl & (bibliography) Hilfsdatei, enthält die Einträge für die Literatur\\
+ bib & (bibtex) enthält die Literaturdaten\\
+ blg & (bibliography log) enthält die Ausgaben eines Bib\TeX-Laufs\\
+ cfg & (config) Konfigurationsdatei\\
+ clo & (class options) Definitionen für die Dokumentenklasse und die entsprechenden
+ Klassen-Optionen\\
+ aux & (auxiliary) Hilfsdatei, enthält Querverweise usw. \\
+ bbl & (bibliography) Hilfsdatei, enthält die Einträge für die Literatur\\
+ bib & (bibtex) enthält die Literaturdaten\\
+ blg & (bibliography log) enthält die Ausgaben eines Bib\TeX-Laufs\\
+ cfg & (config) Konfigurationsdatei\\
+ clo & (class options) Definitionen für die Dokumentenklasse und die entsprechenden
+ Klassen-Optionen\\
+ aux & (auxiliary) Hilfsdatei, enthält Querverweise usw. \\
+ bbl & (bibliography) Hilfsdatei, enthält die Einträge für die Literatur\\
+ bib & (bibtex) enthält die Literaturdaten\\
+ blg & (bibliography log) enthält die Ausgaben eines Bib\TeX-Laufs\\
+% cfg & (config) Konfigurationsdatei\\
+% clo & (class options) Definitionen für die Dokumentenklasse und die entsprechenden
+% Klassen-Optionen\\
+% aux & (auxiliary) Hilfsdatei, enthält Querverweise usw. \\
+% bbl & (bibliography) Hilfsdatei, enthält die Einträge für die Literatur\\
+% bib & (bibtex) enthält die Literaturdaten\\
+ blg & (bibliography log) enthält die Ausgaben eines Bib\TeX-Laufs\\
+ cfg & (config) Konfigurationsdatei\\
+ clo & (class options) Definitionen für die Dokumentenklasse und die entsprechenden
+ Klassen-Optionen\\
+\end{xltabular}
+
+
+
+\pagebreak
\nocite{*}
\printbibliography
\end{document}
-
diff --git a/macros/latex/contrib/xltabular/xltabular.sty b/macros/latex/contrib/xltabular/xltabular.sty
index 6752047c5e..6a6fc8b764 100644
--- a/macros/latex/contrib/xltabular/xltabular.sty
+++ b/macros/latex/contrib/xltabular/xltabular.sty
@@ -3,11 +3,12 @@
%% License from CTAN archives in directory macros/latex/base/lppl.txt.
%% Either version 1.3 or, at your option, any later version.
%%
-% Copyright 2018-2020 Herbert Voss <hvoss@tug.org>
+% Copyright 2018-2024 Herbert Voss <hvoss@tug.org>
% Rolf Niepraschk <Rolf.Niepraschk@gmx.de>
%%
-\ProvidesPackage{xltabular}[2020/11/04 v0.2e `xltabular' package (hv,RN)]
+\ProvidesPackage{xltabular}[2024/10/28 v2.0g `xltabular' package (hv,RN)]
\RequirePackage{tabularx}
+\RequirePackage{etoolbox}
\let\XLT@i@tabularx=\tabularx
\let\XLT@i@endtabularx=\endtabularx
\let\XLT@i@TX@endtabularx=\TX@endtabularx
@@ -15,9 +16,16 @@
\RequirePackage{ltablex}
\keepXColumns% xltabular behaves like tabularx
%
+\newif\ifXLT@normalPB \XLT@normalPBtrue
+\newcommand*\normalLTpagebreak{\global\XLT@normalPBtrue}
+\newcommand*\specialLTpagebreak{\global\XLT@normalPBfalse}
+%
\let\XLT@ii@tabularx=\tabularx
\let\XLT@ii@TX@endtabularx=\TX@endtabularx
\let\XLT@longtable=\longtable
+% prevents problematic behavior of longtable at page breaks (\XLT@normalPBfalse)
+\patchcmd{\LT@start}{\vfil \break}{\ifXLT@normalPB \vfil \break \fi}{}{}
+\patchcmd{\LT@start}{\penalty \z@}{\ifXLT@normalPB \penalty \z@ \fi}{}{}
\let\XLT@LT@start=\LT@start
\let\XLT@LT@array=\LT@array
\@ifundefined{scr@LT@array}{%
@@ -32,7 +40,7 @@
{\let\TX@endtabularx=\XLT@i@TX@endtabularx\XLT@i@tabularx}
{\XLT@i@endtabularx}
%
-% define a new tabularx like the one from "ltablex"
+% define a new tabularx like the one from "ltablex"
%
\newenvironment{xltabular}[1][x]%
{%
@@ -76,7 +84,7 @@
\hyper@makecurrent{\LTcaptype}%
\global\let\Hy@LT@currentHref\@currentHref
\fi
- % continue with the original definition of \LT@caption
+ % continue with the original definition of \LT@caption
\@ifnextchar[{\egroup\LT@c@ption\@firstofone}\LT@capti@n
}
@@ -113,10 +121,10 @@
\fi
\def\LT@array{%
% make the call of \refstepcounter inside of \XLT@LT@array ineffective
- \renewcommand*\refstepcounter[2][]{%
+% \renewcommand*\refstepcounter[2][]{%
% make next calls effective again
- \let\refstepcounter=\XLT@refstepcounter
- }%
+% \let\refstepcounter=\XLT@refstepcounter
+% }%
\XLT@LT@array
}%
}