From 2c0c7988beae1efa245bfb9fec0a25d41d88047d Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Wed, 16 Jun 2021 03:01:15 +0000
Subject: CTAN sync 202106160301

---
 .../latex2e-first-aid-for-external-files.dtx       | 73 +++++++++++++++++++++-
 1 file changed, 70 insertions(+), 3 deletions(-)

(limited to 'macros/latex/required/firstaid/latex2e-first-aid-for-external-files.dtx')

diff --git a/macros/latex/required/firstaid/latex2e-first-aid-for-external-files.dtx b/macros/latex/required/firstaid/latex2e-first-aid-for-external-files.dtx
index 7eb108418c..84ddacb269 100644
--- a/macros/latex/required/firstaid/latex2e-first-aid-for-external-files.dtx
+++ b/macros/latex/required/firstaid/latex2e-first-aid-for-external-files.dtx
@@ -111,8 +111,8 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\def\LaTeXFirstAidDate{2021/03/15}
-\def\LaTeXFirstAidVersion{v1.0l}
+\def\LaTeXFirstAidDate{2021/06/08}
+\def\LaTeXFirstAidVersion{v1.0m}
 %    \end{macrocode}
 %
 %    \begin{macrocode}
@@ -134,7 +134,9 @@
 %    \begin{macrocode}
 \ExplSyntaxOn             
 \cs_new:Npn\FirstAidNeededT#1#2#3{
-  \exp_args:Nc\str_if_eq:onT{ver@#1.#2}{#3}
+  \exp_args:Ncx\str_if_eq:onF{ver@#1.#2}{#3}
+      { \typeout{==>~ First~ Aid~ for~ #1.#2~ no~ longer~ applied!} }
+  \exp_args:Ncx\str_if_eq:onT{ver@#1.#2}{#3}
 }
 \ExplSyntaxOff
 %    \end{macrocode}
@@ -546,6 +548,71 @@
 %
 %
 %
+% \subsection{\cs{ulem} first aid}
+%
+%    In 2020 we fixed various kernel commands to accept \pkg{calc}
+%    syntax. The \pkg{ulem} package redefines some internals and that
+%    now conflicts with the new definitions as they involve an extra
+%    group. So we alter the definition of \cs{@hspace} if \pkg{ulem}
+%    was loaded. This is not perfect, obviously, so it will go out the
+%    moment \pkg{ulem} gets adjusted.
+%
+%    \begin{macrocode}
+\AddToHook{file/after/ulem.sty}[firstaid]{%
+   \def\@hspace#1{\begingroup\setlength\skip@{#1}%
+                  \edef\x{\endgroup\hskip\the\skip@\relax}\x}%
+   }
+%    \end{macrocode}
+%
+%
+% \subsection{\cs{varwidth} first aid}
+%
+%    The \pkg{varwidth} package does a lot of low-level paragraph
+%    manipulation assuming traditional \TeX{} paragraphs. However, with
+%    the paragraph hooks we end up with one extra glue 0pt item on the
+%    vertical list and if that isn't removed then the package doesn't
+%    find its penalties.
+%
+%    So this needs to be removed as well by adding an additional
+%    \cs{unskip}.
+%     
+%    \begin{macrocode}
+\AddToHook{file/after/varwidth.sty}[firstaid]{%
+  \FirstAidNeededT{varwidth}{sty}%
+       {2009/03/30 ver 0.92; \space Variable-width minipages}%
+     {%
+\def\@vwid@sift{%
+  \skip@\lastskip\unskip
+  \unskip                         % <---- the first aid here
+  \dimen@\lastkern\unkern
+  \count@\lastpenalty\unpenalty
+  \setbox\z@\lastbox
+  \ifvoid\z@ \advance\sift@deathcycles\@ne \else \sift@deathcycles\z@ \fi
+  \ifnum\sift@deathcycles>33 
+    \let\@vwid@sift\relax
+    \PackageWarning{varwidth}{Failed to reprocess entire contents}%
+  \fi
+  \ifnum\count@=\@vwid@preeqp \@vwid@eqmodefalse\fi
+  \ifnum\count@=\@vwid@posteqp \@vwid@eqmodetrue\fi
+  \ifnum\count@=\@vwid@toppen % finished
+    \let\@vwid@sift\relax
+  \else\ifnum\count@=\@vwid@offsets
+    \@vwid@setoffsets
+  \else
+    \ifnum\count@=\@vwid@postw
+    \else
+      \@vwid@resetb % reset box \z@ or measure it
+    \fi
+    \@vwid@append
+  \fi\fi
+  \@vwid@sift}%
+     }%
+   }
+%    \end{macrocode}
+%
+%
+%
+%
 % \subsection[Temporary fixes for the kernel (until the next
 %             patch-level release)]
 %    {Temporary fixes for the kernel \\
-- 
cgit v1.2.3

